Riviera: Hyper-Room Reverb

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 (parts 1, 2, 3, 4)] 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 dampening resulted in some interesting sounding impulse responses (IRs).



  • Voom designer: Adjustable number of dimensions, size, listener offset from sound-source origin, and material reflection dB loss
  • Time controls: Adjust pre-delay, IR onset/reverser, geometry scale/density sampling, and dimensional attenuation
  • Frequency controls: Low and high frequency dampening, low-cut linear phase filter
  • Stereo controls: Pan, Haas, phase, mix (wet/dry), mid/side (mono to difference), and gain
  • Graphical user interface: Real-time displays to IR and spectrogram
  • High performance: Low-latency & low CPU usage convolution algorithm, variable max FFT block size, multi-threading support for computing IRs in the background


  • 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



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

Price: Free!

32 thoughts on “Riviera: Hyper-Room Reverb

    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. […] A common audio technique for adding depth to a mix is to throw in echos or early reflections following the direct sound-source arrival to a listener. To model such reflections, many reverberation algorithms treat a sound-source and listener as a point emitter and receiver within an imaginary room or box. The reasoning follows that such a configuration is elegant from both theoretical and practical perspectives. In this series of posts, I will investigate why this is so followed by several new results that were recently derived and implemented in Riviera. […]


    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.


  2. 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 )

Google+ photo

You are commenting using your Google+ 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 )

Connecting to %s