Build guides
Build a reverb, room or cabinet effect
Choose between an algorithmic reverb, an impulse response and a simulated room, then build it from Maru's building blocks: which parts to use, what to ship, and the limits to plan for.
Every space effect answers one question: what happens to a sound after it leaves the source? A plate reverb, a cathedral, a guitar cabinet and a room you can walk around in are all answers to it. Maru has building blocks for three ways of making one. This guide helps you pick the right one for your product and shows how it is put together. Reverb and Depth and space in Learn explain the sound itself.
Choose your approach
| Approach | Sounds like | Good for | Cost |
|---|---|---|---|
| Algorithmic reverb | Smooth, adjustable, "produced" | Halls, plates, springs, ambient washes, anything you want to tweak live | Light on CPU; every control can move while it plays |
| Impulse response (IR) | A specific real or designed space, cabinet or object | Cabinets, real rooms, vintage units, strange resonant bodies | More CPU for long IRs; the character is fixed by the IR |
| Simulated room | A room with dimensions, materials and positions | Spatial mixing, game and film audio, "move the singer back" | Recalculates when the room changes; heavier than both |
Most products combine them: a cabinet IR after an amp, a short room IR for early reflections and an algorithmic tail for length.
Algorithmic reverb
Start here unless you need a specific space. @maruaudio/dsp includes
Schroeder, Dattorro (plate), feedback-delay-network room and hall, and a
dispersive spring reverb. Each is a building block you can drop into a
Processor and wrap with your own controls: predelay, size, decay, damping,
tail filters and width.
Make it yours with what goes around it: a ducked tail that clears for the vocal, a modulated tail, a gate for an eighties drum sound, a shimmer made by pitch-shifting the feedback. MultiFX shows several of these reverbs behind a common set of controls, and Reverb Stage is the smallest example.
Impulse responses
An impulse response is a recording of how a space or device answers a single click. Convolving any sound with it puts that sound "inside" the space.
The building blocks. filters/convolution handles short IRs (up to 256
taps, enough for cabinets and small resonances) with no latency.
filters/partitioned-convolution handles long IRs, rooms and halls of several
seconds, with no added latency by running the start of the IR directly and the
rest in FFT blocks.
Designing IRs in code. You do not need recordings to make an IR. Amp Rig synthesises its five cabinets from short recipes: a direct click, a brief decaying noise body and a chain of filters for the speaker's voice. A mic-position control reshapes the recipe instead of blending recordings. Rendering happens in small steps, so switching cabinets never interrupts the sound, and there is nothing to license.
Shipping recorded IRs. Put factory IR files in the module's package and bind them to a parameter, so a "Cabinet" or "Room" selector swaps the IR. The host decodes the file and loads it into your Processor, the same way Crea Synth's factory takes reach it. Package files are embedded in native plug-in builds and work offline.
Letting people bring their own IR. On the website, a module can let the person pick a sound from their library into a declared slot, which can hold an IR of up to 60 seconds. Granular uses the same mechanism for its source sound. Two limits to plan for: the choice lasts for the session and is not saved in presets, and desktop plug-in builds cannot load a user's file yet. Factory IRs are the reliable path today.
Rights. An IR is a recording, with its own licence. Use IRs you made, IRs licensed for redistribution, or CC0 sets, and keep their provenance with the product. Many free IR packs forbid redistribution inside another product.
Simulated rooms
A simulated room computes its own impulse response from geometry: room size, wall materials, where the source stands and where the microphones are. The early reflections are traced exactly from each wall; the late tail comes from simulated sound rays. Change a position and the room is rebuilt.
The acoustics building blocks cover the whole chain: room geometry and materials, a shoebox image-source model for early reflections, a ray tracer for the tail, air absorption, RT60 decay estimates, assembly of the full response and a long-IR convolver that plays your audio through it. Room Acoustics is the complete product: a room you place a sound and two microphones in.
Heavy work without dropouts
Rebuilding a room response is far too much work for one audio block. Room Acoustics shows the pattern to copy for any expensive calculation:
- Do it in steps. The response is assembled a slice at a time, inside the Processor, within a fixed budget per block, so the audio never misses a deadline.
- Keep playing the old one. The previous room keeps sounding while the new one is built.
- Swap with a crossfade. When the new response is ready, a 50 ms equal-power crossfade moves to it.
Because the work stays inside the Processor, the same module runs in the browser, in native plug-ins and on hardware without a separate worker.
Measure your own space or cabinet
Maru does not yet include a capture tool for impulse responses. The usual method is to play an exponential sine sweep through the space or speaker, record it, and divide the recording by the sweep in the frequency domain to recover the IR. You can do that offline with any measurement tool and ship the result as a factory IR. A built-in capture flow is planned.
Limits to plan for
- CPU grows with IR length. A 3-second stereo room costs far more than a cabinet. Offer shorter variants for live use.
- An IR cannot be adjusted the way an algorithm can. Size and decay controls on an IR effect re-render or reshape it; they are not free.
- No feedback inside an IR. Infinite or frozen tails need an algorithmic stage.
- Rooms are approximations. Simulated rooms are rectangular today, and decay times are estimates, not measurements.
Ask your agent
Read the Maru Help article "Build a reverb, room or cabinet effect". Then read Room Acoustics with `maru module files room-acoustics` and `maru module read room-acoustics src/dsp/processor.ts`, and Amp Rig's cabinet selector with `maru module read amp-rig src/index.ts`. Build a vocal reverb with a selectable short room IR for early reflections, a plate tail from @maruaudio/dsp, a predelay, and a ducker that lowers the tail while the voice is loud.
Developers can find every building block in the DSP library.