A room reverb that puts up to 16 mono sources in a virtual room and records them either as a 3rd-order ambisonic stream (Ambix) or as a stereo pair of virtual microphones. Positions of the sources, the listener and the mics can all be moved (and automated) freely, so you can build a moving scene inside a room you set up once.
AmbiRR2 is a new, improved version of BiRR and AmbiRR. Those earlier plugins remain available for projects that already depend on them, but new work should use AmbiRR2.
Full documentation is in the PDF manual (a user guide plus a technical reference). Implementation notes for developers are in doc/implementation.md.
You place a room (width, depth, height), set how absorbent its six walls are, and drop your sources into it. The plugin then reproduces what the room does to those sources:
- the direct sound and the early reflections bouncing off the walls, computed from the actual geometry, so each source has its own precise arrival pattern;
- a diffuse reverberation tail whose length follows the room size and wall absorption.
You choose how the result is captured:
- Ambisonic (1st, 2nd or 3rd order) for a full 3D sound field you can rotate, decode to any speaker layout, or turn into binaural.
- Stereo (2 mics), which places two virtual microphones in the room. Pick each mic's pattern (omni, cardioid, supercardioid, hypercardioid or figure-8) and spacing to get AB, ORTF or XY style recordings.
The window is one big scene view on the left and the controls on the right.
Placing things. Drag the numbered sources, the listener (L) or the two mics (L / R) directly in the Top and Side views. The 3D view below orbits with the mouse so you can check heights. Everything you drag can also be recorded as automation in your DAW.
Aiming. Roll the mouse wheel over a microphone to turn it; over the listener it turns azimuth in the Top view and elevation in the Side view. Link the mic pair (the L toggle) to move and turn both together as a rigid stereo rig.
The room. The Dimensions tab sets width, depth and height. The Damping tab sets how absorbent each wall is (and how much it dulls high frequencies). A Link toggle on a wall lets you set all six at once to give the whole room one material, then unlink to tweak a single surface. In the 2D views you can click a wall to select it and edit just that surface; the matching face lights up in the 3D view.
Sources. The Sources knob sets how many are active; the X/Y/Z knobs edit the one you last selected. Selecting a source in the views never moves it.
Output. Direct, Early and Reverb are the three level controls (dry source, reflections, and diffuse tail). Taps trades reverb detail against CPU. The dropdown at the bottom chooses the output: ambisonic order, or Stereo (2 mics). In stereo an MS toggle mid/side-encodes the pair. Doppler is an optional mode (see below).
By default, when you move a source or the geometry, the sound cross-fades smoothly to the new position, so fast moves stay click-free.
Turn on Doppler and fast movement produces a real pitch shift, the way a passing source rises and falls in pitch. It costs a bit more CPU while things are moving, which is why it is a switch rather than always on.
Turning the listener's head is always smooth and free: the ambisonic field is rotated on the fly, so head rotation never causes a recompute or a click.
For headphone monitoring, run AmbiRR2 in ambisonic mode and follow it with an ambisonic binaural decoder. The IEM Plug-in Suite's BinauralDecoder works very well placed right after AmbiRR2 and turns the 3D field into a convincing binaural scene. The manual describes this workflow in more detail.
JUCE is expected as a sibling of this repo; FxmeTools (which bundles the WDL convolution engine) is an in-tree submodule:
git submodule update --init --recursive
with the layout:
../JUCE/ (juce-framework/JUCE checkout)
lib/FxmeTools/ (submodule, github.com/odoare/FxmeTools)
Then:
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
Targets: AmbiRR2_Standalone, AmbiRR2_VST3, AmbiRR2_AU (macOS).
The reverberation tail uses the fast partitioned-convolution engine of
WDL (WDL_ConvolutionEngine_Div), the same
engine used by REAPER's ReaVerb. WDL is © Cockos Incorporated (2006 and later),
distributed under the permissive zlib license. Thanks to Justin Frankel and the
Cockos team (github.com/justinfrankel/WDL).
(c) 2025-2026 Olivier Doaré, LGPL-3.0-or-later
