Riviera: Fast hybrid reverb plugin for modeling high-dimensional spaces

Riviera is a hybrid algorithmic-convolution reverb plugin for modeling specular acoustic reflections in N-dimensional orthotopes. e.g. string, plate, room, tesseract, and up (vooms or volume+room for short). Normally, direct computation in these spaces is expensive but some clever maths (see tutorial) reduced the asymptotic costs to the point of practical use (e.g. a Reverb plugin). Parameterizing these spaces and then combining them with some fast time-varying frequency decay resulted in some interesting sounding impulse responses (IRs).



  • Low-latency, low CPU usage convolution
  • Multi-threading support for computing IRs in the background
  • Fine-grain controls for parameterizing each voom’s number of dimensions, size, offset from sound-source origin, and material reflection dB loss.
  • Time manipulation controls for delay, stretch, and linearity (RT60 ranges from 1 – 20 seconds!)
  • Fast frequency-dependent time-decay functions
  • Pan / stereo / mix (wet/dry) controls
  • Graphical user interface for displaying IR and spectrogram


  • VST2: Windows 7+ 32/64 bit,  Mac OS X 10.7+ universal  build
  • VST3: Windows 7+ 32/64 bit
  • Audio Unit:  Mac OS X 10.7+ universal  build
  • Minimum SSE2 supported processor with improvements if AVX enabled


  • Dry violin+piano:
  • Exaggerated concert-hall like reverb:
  • Snare drums (dry first, then fun reverbs):
  • Vocals by ABIGAILIA (dry followed by reverbs):


  • Yuancheng [Mike] Luo: DSP, algorithms, GUI
  • WDL-OL: Targeting VST2/VST3 and cross-platforming

Price: Free!

Alternative link

Release notes:
v. 1.2.4d
-Upgraded Windows version to VS2017
-Fixed random crash where changing buffer size or sampling rate while thread is still computing with fast-mode on
-Fixed Mac AU verification (see above)
v. 1.2.4c2
-Hotfix for mac VST2 build for passing Cubase 9’s Sentinel.
v. 1.2.4c
-Do IR update only when param changes values (no more redundant updates)
-Finetune medium room and hall presets
v. 1.2.4b
-Added 26 internal presets for VST2/AU (no VST3) on PC and Mac
v. 1.2.4
-Changed offset param name to “depth”
-Skips update (do a fast update) if depth*roomsize results in same integer distance
-Color change to GUI
v. 1.2.3
-Exposed FFT max-pow block size param for controling peak real-time CPU thread usage load-balancing
v. 1.2.2a
-Added  Mac AudioUnit build
v. 1.2.2
-Launching Mac VST2 build
-Added button for toggling IR normalization
v. 1.2.1a
-Fixed minor bug where in fast mode and freq. decay low and high are set to 0 gives wrong update
-Fixed secondary bug where no truncation occurs in above conditions
v. 1.2.1
-Fast mode button for those who want fast non-voom parameter updates at the expense of more memory usage.
v. 1.2.0
-New features!
-Lowcut Hz and Quality: Remove mud
-T0: Early IR truncation
-Rev.: Mirrors IR and allows for pre-verb
-At.: Attenuation factor in high-dimensional spaces
(see readme for details)

28 thoughts on “Riviera: Fast hybrid reverb plugin for modeling high-dimensional spaces

    1. Didn’t know there was a way in the API to report back latency/delay. In any case, FL studio uses variable # frames upper-bounded by the latency in the user settings; plugin processing is one buffer delay of size equal to that user-setting latency.


    1. Mac VST it is although not before I add several more features 😉

      As for questions:

      *Each of V1-5 buttons specifies a dimension of the the voom so for example, enabling any 3 of them will put you in a 3D room, enabling any 4 of them will put you in a Tessaract or 4D room (the plugin lets us hear a projection of it like the visual analogy in https://en.wikipedia.org/wiki/Tesseract), enabling only 1 of them will put you on an oscillating spring, etc, etc.

      *Freq. decay is how fast different frequencies decay over time which can be viewed in spectrogram. High and low knobs are control points for the decay rates at 0 Hz and sampling_rate/2 Hz; all frequencies between have decay rates bounded between those two limits

      *Delay refers to the time onset of the direct sound-source. It’s only useful if you have the mix set below 1 and want the IR to lag behind with the onset treated as a distinct echo.

      *Stretch in physical terms roughly refers to scaling room-size and listener position from origin before freq. decay kicks in. i.e. make rooms even larger or smaller than what’s possible in the voom settings.

      *Linearity in physical terms roughly refers to how speed of sound changes over distance or time..
      0 => constant 340m/s,
      > 0 => starts slow, then accelerates over time.
      starts fast, then decelerates over time
      Easiest way to test this is to enable only 1 dimension (e.g. v1) and mess around with the linearity.


  1. Jaw-dropping reverb!!

    For some reason I couldn’t get the VST3 version to load (in Renoise) … I’m on Windows 10 64-bit, and neither the 32-bit or 64-bit builds of the VST3 version would load – I even tried renaming the files from “.vst3” to “.dll”, no luck. The VST2 versions work fine.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s