Building complex reverbs using ValhallaÜberMod

The original ValhallaÜberMod concept had a fairly sparse Diffusion section, which was intended to smooth out feedback echos and add some density to chorus patches. Somewhere during the development process, the diffusion block was expanded into a much more powerful DIFF section, with each input channel being processed by a dense modulated diffusion block with variable size. The DIFF section proved useful in creating dense nonlinear reverbs, as well as lush ambient reverbs and decent plate simulations. The ÜberMod controls aren’t designed around creating reverbs, so I figured that any reverbs created with ÜberMod were a cool bonus with that plugin.

Flash forward to a few days ago, where I found myself experimenting with ÜberMod, mainly as a way of procrastinating before I get back to work on my next plugin. I started running multiple instances of ValhallaÜberMod in series and parallel, and using the sends of my DAW to control the routing and levels. To my surprise, I found that I was able to create some VERY complex and subtle reverbs using ÜberMod, by allocating different instances of the plugin for different stages of the reverb decay.

EXAMPLE 1: Medium Vocal Reverb, w/early reflections

The first example uses 3 instances of ÜberMod, running on 2 different sends. The first instance is running on its own send, and will cover the early reflections stage of a reverb:

<ValhallaUberMod pluginVersion="1.0.1" presetName="RandomizedEarlyReflections" Mix="1" Depth="1" StereoWidth="0.5" Delay="0.0476999991" Feedback="0" Spread="1" Slope="0.643999994" Skew="0.175999999" Random="1" TapGain="0.5" Diffusion="0.624000013" DiffSize="0.0163265299" DiffModRate="0.0490490496" DiffModDepth="0.5" LowCut="0.0351758786" HighCut="0.232160807" SpatialXover="0.145728648" DetuneRate="0.00900900923" DetuneDepth="0.851999998" VibratoRate="0.298245579" VibratoDepth="0" OverMod="0.0313131325" DriveInGain="0.375" DriveOutGain="0.75" DriveNoiseGain="0.333333343" FeedbackRotate="0.5" SmoothingTime="0.0990990996" ColorMode="1" DelaySync="0" type="0.333333343" DiffEnable="1" Drive="0" DrivePrePost="1" Speed="0" InputPan="0.125"/>

This preset uses the 16Tap mode, in conjunction with the DIFF section, to create a dense early ambience that abruptly cuts off after about 50 to 100 millseconds. The TAP Slope parameter is used to create the perception of a room with a short to medium decay, and the DELAY slider determines the point at which this decay is truncated. Some slow LFO modulation is used in conjunction with the MOD OverMod control to randomize the reflections.

The second instance of ÜberMod is running on a separate send, and provides the input diffusion of the late reverb tail:

<ValhallaUberMod pluginVersion="1.0.1" presetName="InputDiffusion" Mix="1" Depth="0.444000006" StereoWidth="0.5" Delay="0.00999999978" Feedback="0" Spread="0.5" Slope="0.5" Skew="0.5" Random="0" TapGain="0.5" Diffusion="0.703999996" DiffSize="0.0653061196" DiffModRate="0.0130130127" DiffModDepth="0.395999998" LowCut="0" HighCut="0.387939692" SpatialXover="0.145728648" DetuneRate="0.0370370373" DetuneDepth="0.5" VibratoRate="0.298245579" VibratoDepth="0" OverMod="0" DriveInGain="0.375" DriveOutGain="0.75" DriveNoiseGain="0.333333343" FeedbackRotate="1" SmoothingTime="0.0990990996" ColorMode="0" DelaySync="0" type="0.0416666679" DiffEnable="1" Drive="0" DrivePrePost="1" Speed="0" InputPan="0.125"/>

This preset uses the 2TapChorus mode, but most of the work is being done by the DIFF section. A fairly short DIFF size is used, with the idea being to turn impulsive sounds into a “puff” of diffuse energy. This will smooth out any reverb that this preset is placed in front of.

The third instance of ÜberMod is placed in series after the second instance (i.e. on the same send), and generates a reverb tail with a medium decay:

<ValhallaUberMod pluginVersion="1.0.1" presetName="MediumLateReverb" Mix="1" Depth="0.5" StereoWidth="0.5" Delay="0.00999999978" Feedback="0.612999976" Spread="0.5" Slope="0.5" Skew="0.5" Random="0" TapGain="0.5" Diffusion="0.748000026" DiffSize="0.240816325" DiffModRate="0.0290290285" DiffModDepth="0.5" LowCut="0.0954773873" HighCut="0.288442224" SpatialXover="0.145728648" DetuneRate="0.0490490496" DetuneDepth="0.5" VibratoRate="0.298245579" VibratoDepth="0" OverMod="0" DriveInGain="0.375" DriveOutGain="0.75" DriveNoiseGain="0.333333343" FeedbackRotate="1" SmoothingTime="0.0990990996" ColorMode="0" DelaySync="0" type="0.0416666679" DiffEnable="1" Drive="0" DrivePrePost="1" Speed="0" InputPan="0.125"/>

The above late reverb preset also uses the 2TapChorus mode, with most of the work being done by the DIFF section and the FEEDBACK control. The Diffusion is set to a fairly large size. The DIFF Size, in conjunction with the feedback and filtering, determines the length of the reverb decay. The WARP fBMix control is set to 100%, to create a figure-8 (ping-pong) feedback loop, as used in reverbs by Lexicon & Alesis.

Once you have the basic routing set up, experiment with the send levels being sent to the Early Reflections (instance 1) and the Late Reverb (instances 2 and 3). I have found that it sounds best with the Early Reflections set to a somewhat higher level than the Late Reverb.

EXAMPLE 2: Randomized Hall

ValhallaÜberMod is versatile enough that you can emulate many types of reverb structures, not just the Early Reflection / Late Reverb division of the more “scientific” reverbs. For example, Lexicon’s Random Hall is known for its high echo density, and the soft attack derived from the Shape and Spread controls. To emulate this soft attack using ÜberMod, we’ll use 2 instances of ÜberMod in series. The first is used to approximate the Shape/Spread section of Random Hall:

<ValhallaUberMod pluginVersion="1.0.1" presetName="ShapeSpread" Mix="1" Depth="0.444000006" StereoWidth="0.5" Delay="0.342900008" Feedback="0" Spread="1" Slope="0" Skew="1" Random="1" TapGain="0.5" Diffusion="0.791999996" DiffSize="0.134693876" DiffModRate="0.0130130127" DiffModDepth="0.395999998" LowCut="0" HighCut="0.975879371" SpatialXover="0.145728648" DetuneRate="0.0370370373" DetuneDepth="0.5" VibratoRate="0.298245579" VibratoDepth="0" OverMod="0" DriveInGain="0.375" DriveOutGain="0.75" DriveNoiseGain="0.333333343" FeedbackRotate="1" SmoothingTime="0.0990990996" ColorMode="0" DelaySync="0" type="0.375" DiffEnable="1" Drive="0" DrivePrePost="1" Speed="0" InputPan="0.125"/>

This preset uses the 32Tap mode, with a fair amount of Diffusion, and the TAP Slope set to -100%, to create a nonlinear reverb that fades in gradually over time.  The attack time is determined by the DELAY slider.
The ShapeSpread preset is used in series with a 2nd instance of ÜberMod on the same send, that adds a huge reverb tail to the slow attack:

<ValhallaUberMod pluginVersion="1.0.1" presetName="BigLateReverb" Mix="1" Depth="0.760999978" StereoWidth="0.5" Delay="0.00999999978" Feedback="0.768000007" Spread="0.5" Slope="0.5" Skew="0.5" Random="0" TapGain="0.5" Diffusion="0.843999982" DiffSize="0.448979586" DiffModRate="0.0730730742" DiffModDepth="0.495999992" LowCut="0.0502512567" HighCut="0.340703517" SpatialXover="0.145728648" DetuneRate="0.033033032" DetuneDepth="0.5" VibratoRate="0.298245579" VibratoDepth="0" OverMod="0" DriveInGain="0.375" DriveOutGain="0.75" DriveNoiseGain="0.333333343" FeedbackRotate="1" SmoothingTime="0.0990990996" ColorMode="0" DelaySync="0" type="0.0416666679" DiffEnable="1" Drive="0" DrivePrePost="1" Speed="1" InputPan="0.125"/>

This preset is very similar to the earlier late reverb preset, but with a much greater DIFF size setting. In addition, the WARP Speed is set to 1/2, which doubles the size of the diffusors, to create a HUGE reverb decay.

ROLL YOUR OWN SOUNDS

The above examples are just 2 quick demos of the complex reverb responses that can be generated with multiple instances of ValhallaÜberMod. For example, a longer gated reverb could be used in parallel with a reverb that incorporates DRIVE in the feedback loop, to create a reverb that starts off clean, then turns nasty after a certain amount of time.

ÜberMod is also useful in extending the capabilities of other reverb plugins. For example, the InputDiffusion or ShapeSpread examples from above can be used in series with ValhallaRoom, to create a super lush reverb that has more “standardized” reverb controls. The RandomizedEarlyReflections example can be added in parallel to ValhallaShimmer, to add early reflections to the modulated Shimmer late decay. Or combine ÜberMod with any other reverb plugin, algorithmic or convolution, as you see fit.  The low CPU consumption of ÜberMod makes it easy to use it in conjunction with other plugins.

It is worth noting that the same process can be used in the construction of all sorts of complicated sonic events, not just reverbs. ValhallaÜberMod excels at choruses, ensembles, multitap delays, echos, and so forth. By combining different settings of ÜberMod in series and parallel, all sorts of weird and wonderful sounds can emerge. I encourage people to use ÜberMod as a modular building block for creating all sorts of complex effects.

What is UberMod?

ValhallaÜberMod, at its heart, is a stereo modulated multitap delay line. The signal is written into parallel delay lines (1 for left, 1 for right), and is read out by one or more delay taps. The taps can be moved back and forth in time, by low frequency oscillators or user controls, in order to produce pitch changes via the Doppler effect. The plugin also incorporates diffusion delays, soft saturation, low and high cut filters, and a variety of other controls to shape the delay tap amplitudes, spacing, tone and movement.

So, what can you do with a stereo modulated multitap delay line?

  • Chorus. ValhallaÜberMod contains elements inspired by the Roland Dimension choruses, but vastly expanded in order and with fully parametric controls. The classic “Dimension D” sound can be emulated, but ÜberMod can also emulate the multi-voice choruses previously limited to high end rack gear.
  • Ensembles. The modulation section of ÜberMod contains slow and fast LFOs, that can be mixed in together. In addition, some of the Modes are based around the specific modulation schemes of vintage string ensemble units, such as the 3-phase LFOs found in the Solina and Crumar Performer, and the dual triangle LFOs of the Roland VP330/RS505. This allows ÜberMod to dial in a variety of “classic” ensemble effects, as well as more realistic emulations of orchestral sounds.
  • Flanging. By using one of the multitap modes, and keeping the delays short and grouped closely together, ÜberMod can create huge flanging sounds, that incorporate the through-zero effects of tape flanging, while adding random motion and complexity to produce an effect that is remarkably similar to a jet flying overhead.
  • Delays. ÜberMod allows the user to sync the delays to the DAW tempo, as well as dialing in specific delay times in milliseconds.
  • Multitap Delays. With up to 32 taps, ÜberMod can create dense clusters of delays, rhythmic tapped delays, strongly pitched comb filtering effects, and all sorts of multitap sounds. The TAPS controls allow the user to shape the spacing and amplitude of the delay taps via intuitive high-level controls.
  • Ping-Pong Delays. The new WARP InputPan control (introduced in the 1.0.1 ÜberMod release) allows for any of the delay Modes to be turned into a ping pong mode. This goes well beyond the standard ping pong delays, and can produce ping ponging delay clusters, ping pong delays with strange rhythmic divisions, ping ponged multitap clusters, and tons of other effects that bounce back and forth between speakers.
  • Tape and BBD delay emulations. ValhallaÜberMod has a flexible overdrive section, including pre and post gain, as well as noise that can be mixed into the signal. The delay time changes can also be slewed, using the WARP Smoothing control, to produce the slow delay transitions and pitch changes that are typical of analog delays. By dialing in overdrive, noise, and feedback, and adjusting the flexible EQ section, the user can get low-bandwidth BBD emulations, wobbly tape delays, and long echos that degenerate into shrieking oscillation.
  • Diffuse delays. Many of the high-end Lexicon and Eventide rack units combined diffusion delays with longer delay lines, to soften the attacks of echos. ValhallaÜberMod has a flexible diffusion section, to create smeared echos, clusters of delays, and all sorts of diffuse effects.
  • Reverbs. The diffusion section in ÜberMod has variable size and modulation parameters, similar to ValhallaShimmer, but more optimized for generic delay effects. Crank up the diffusion size and turn up the feedback, and all sorts of reverb effects can be produced: short ambiences, large rooms, huge halls.
  • Nonlinear and reverse reverbs. Combine the diffusion section with a Mode that has a larger number of delay taps (8/16/32 taps) to generate short gated reverbs, “reverse” reverbs that fade in slowly over time, room reverbs with a truncated decay, etc.
  • “Glitch Shifting.” The triangle oscillators in ÜberMod were designed to create “detuned” choruses, without an obvious sense of pitch wobble. Crank up the OverMod control, however, and all sorts of unpredictable pitch shifted and reversed sounds can be produced. I call this “glitch shifting,” although I still feel dirty whenever I type that phrase.
  • Oscillations. Turn on the DRIVE, and crank up the feedback, and ÜberMod will start making sounds on its own. By adjusting the delay and modulation settings, all sorts of crazy burbling whirling machine noises can be generated.
  • Stereo Widening. Use short Diffusion settings to widen the stereo image. Add a bit of modulation to create stereo choruses. Crank up the DEPTH control to create super-stereo effects.
  • Chimeras. This is the term I use for sounds that combine aspects of several effects to create sounds that are new, weird, and in many cases defy easy categorization:
    • Reverbs with ensemble modulation
    • Ping-Pong Reverbs
    • Tape Reverbs, where the sound gets more distorted as it decays away
    • Sounds that don’t have names yet

So, why create a single plugin that covers all of these sounds, instead of several plugins where each plugin is tailored to a specific application? I’m not exactly sure. In many ways, I feel that ValhallaÜberMod was a plugin that designed itself, instead of me creating something that did exactly what I wanted it to do. At each stage during the development process, I uncovered new and exciting sounds that defied easy categorization. I decided to create a plugin that allowed for those sounds to be dialed in, as well as sounds that as yet remained undiscovered.

ValhallaÜberMod is “close to the metal.” There are a lot of controls, that have been grouped according to logical function. In some ways, ÜberMod is like a Swiss Army Knife for modulated delays, but this doesn’t really describe the chimera effects that are neither fish nor fowl. The oddball possibilities are what I find most interesting about ÜberMod. It explores the spaces, the shared commonalities, that lie underneath the common modulated delay effects, while making room for other effects that don’t fit within the standardized categories. I nearly went crazy designing ÜberMod, and I think that some of that over-caffeinated energy was captured within the plugin, in the context of a logical structure that allows the user to control the sanity/insanity ratio.

ValhallaUberMod: The Modes

In keeping with the tradition set by ValhallaShimmer and ValhallaRoom, there are several different “modes” in ValhallaÜberMod. These modes are selected by clicking on the name of the currently active mode, to the right of the “MODE:” text. A popup menu will appear, with the names of the available modes:

Each of the ÜberMod Modes selects a specific combination of delay output taps, as well as different modulation options for moving those taps around. I have referred to these as chorus modes or delay modes, but they are really both, so “modes” is probably the best description. A few things that all the Modes have in common:

  • Separate LFOs for slower and faster modulation. The idea is that the slow LFOs are used to create the base “detuning” of the taps, while the fast LFOs are used to add string ensemble vibrato if desired. Of course, the user can use and abuse these controls however they see fit.
  • Each delay tap in a mode is modulated by a unique LFO, or a unique phase from a multiphase LFO. This creates a high degree of aural complexity.
  • The slower LFOs have their overall rate adjusted by MOD SlowRate, and their depth by MOD SlowDepth and MOD OverMod.
  • The faster LFOs have their overall rate adjusted by MOD VibRate, and their depth by MOD VibDepth.
  • True stereo, where left and right inputs feed separate delay buffers.
  • An even number of delay taps, where half the taps are panned to the left, half to the right. The amount of panning is controlled by the DEPTH parameters. The 8Tap mode, for example, has 4 taps panned left, 4 panned right.
  • All modes have a “pay for what you use” approach to CPU usage. The more taps there are, the higher the CPU. ValhallaÜberMod has been programmed using SIMD-optimized vector functions, so it is pretty darned optimized, but the laws of physics dictate that it is cheaper to compute 2 interpolated delay taps than 32 interpolated delay taps.

ValhallaÜberMod Version 1.0.0 ships with nine different delay/modulation modes:

  • 2TapChorus has two modulated delay taps, one for the left input signal, one for the right input signal. The slow tap modulation is derived from a single triangle LFO, with the modulation phase inverted for one of the taps (I call this “antiphase modulation”). The vibrato modulation uses a quadrature oscillator, with the left and right modulations separated by 90 degrees. The 2TapChorus mode is useful for emulating the Roland Dimension C and Dimension D choruses, and also serves as a useful starting point for tape echos, diffusion-based reverbs, and all sorts of other effects.
  • 4TapEnsemble has four modulated delay taps, two for the left input channel, two for the right input channel. There are two slow LFOs, one for the left taps and one for the right taps, using the same antiphase modulation as the 2TapChorus, but with different rates for each channel. Each channel has a single sine vibrato oscillator modulating one of the taps, with different rates for each input/output channel. The 4TapEnsemble can be viewed as 2 mono versions of the 2TapChorus, one panned left, and one panned right. The architecture was derived from the ensemble section of the VP330, and is naturally suited towards creating string ensemble emulations, as well as thick detuned choruses.
  • SuperSix has 6 modulated delay taps (3 left/3 right). There are 3 slow triangle LFOs, using the antiphase modulation technique, with the LFO frequencies staggered to emulate the detuning of the sawtooth oscillators in the JP8000 SuperSaw. Each channel has its own independent 3-phase vibrato LFO (0/120/240 degree outputs), for emulating the vibrato component of classic string ensembles. The vibrato speed is slightly different between left and right channels, for a wider stereo spread. The SuperSix mode is a good starting point for emulating the “unison” control on older analog polyphonic synths, when all of the oscillators were used to create a massive detuned sound. SuperSix is also useful for creating triplet echos, short gated sounds, and other multitap effects.
  • 6TapRandom has 6 modulated delay taps (3 left/3 right), and 3 slow LFOs, each of which has a randomized triangle waveform for the slow LFO. The left and right channels are modulated in antiphase, in a similar manner to the SuperSix mode, but the randomized triangle results in less audible patterns for the detuning. There are 6 independent vibrato LFOs, one for each output tap. The 6TapRandom mode is useful for thick multitap choruses, with less audible patterns than the SuperSix mode.
  • DualEnsemble is a stereo version of the classic string ensemble choruses, as found in the Solina/ARP String Ensemble, Crumar Performer, Moog Opus 3, Korg Polysix, and so on. Each channel has its own dedicated 3-phase slow LFO (0/120/240 degree outputs), with each of the 3 taps per channel being modulated by its own phase. An identical LFO, running at a faster rate, is used for the vibrato modulation of the taps. The 3-phase LFOs for left and right channels are running at slightly different rates, to create the impression of a separate string ensemble for left and right channels. The DualEnsemble mode is the first place to turn for emulating vintage ensembles, but is also useful for creating unique effects that combine ensemble modulation with multitap effects and diffusion. Check out the SolinaVerb preset (in the Reverbs category) for an example that combines ensemble chorusing, diffusion, and feedback, to create a rich modulated reverb that adds complexity to synth pads.
  • 8Tap has 8 modulated delay taps (4 left/4 right). There are 4 slow triangle LFOs, using the antiphase modulation technique, with the frequencies arranged to produce a smooth detuned sound at “sensible” settings, or a cluster of pitches when OverMod is used. There are 8 sine vibrato LFOs, one per each tap, for thick ensemble sounds. The 8Tap mode is useful for creating realistic orchestral choruses, multitap effects, short gated reverbs, ensemble effects that don’t have the distinctive 3-phase modulation patterns, crazy pitched echos (check out the presets in the Pitched folder, which all use the 8Tap mode) and all sorts of cool things.
  • 16Phase is a 16-tap mode (8 taps left, 8 taps right) where all of the taps are modulated by two unique 16-phase sine LFOs, one for the slow modulation, and one for the vibrato. The phases are staggered left-right to get a wider spatial image. This is useful for creating a “super string ensemble” that has the distinctive lushness and artifacts of the old 3-phase string ensembles, only more so. The 16Phase mode is also useful for denser gated and reverse reverbs, nonlinear echos, metallic comb filtering (with the DEPTH set to 0.0), and areas I haven’t had the chance to explore yet.
  • 16Tap is a 16-tap mode (8 taps left, 8 taps right). There are 8 slow triangle LFOs, using the antiphase modulation technique, with the frequencies arranged to produce a smooth distribution of detuned outputs. The triangle LFO phases are inverted between channels, to get a wide spatial image.  There are 16 sine vibrato LFOs, one per each tap, with the frequencies staggered to simulate 16 separate sound sources. The 16Tap mode is useful for lush choruses that have less obvious “string ensemble” artifacts than the 16Phase mode, realistic modeling of large numbers of instruments, gated and reverse reverbs, and strong comb filters.
  • 32Tap is essentially the same as the 16Tap mode, but with double the taps (16 taps left, 16 taps right) . There are 16 slow triangle LFOs, using the antiphase modulation technique, with the frequencies arranged to produce a smooth distribution of detuned outputs. The triangle LFO phases are inverted between channels, to get a wide spatial image.  There are 32 sine vibrato LFOs, one per each tap, with the frequencies staggered to simulate 16 separate sound sources. The main application of the 32Tap mode is for nonlinear, gated and reverse reverbs, where the high tap density can be used in conjunction with the DIFF controls to get dense reverbs without feedback. All sorts of crazy echos and pseudo-reverbs can be made with the 32Tap mode. It is kinda overkill for chorus applications, but turn up the OverMod control and you can get crazy thick pitch shifting for drum reverbs.

ValhallaRoom Updated to 1.0.8. Resizable GUI, new reverb modes

We’ve been working hard here at Valhalla DSP towers [i.e. I've been working hard typing in code on my laptop while sitting at the dining room table]. One of the fruits of this labor:

ValhallaRoom has been updated to version 1.0.8. The newest features:

  • Resizable GUI. When ValhallaRoom was first released, I received several complaints that the GUI was too big. Version 1.0.8 has been updated. Now the GUI can get much, much bigger. It can also get smaller, if that is your thing.
  • Two new reverb modes, Nostromo and Narcissus. The new reverb modes both have a sparser initial echo density than most of the ValhallaRoom modes, and take longer to build in echo density. This, combined with the high frequency attenuation, random modulation, and deliberately noisy delay interpolation, can be used to create grainy emulations of vintage reverbs, as well as denser decays that have a wide spatial image.
    • Nostromo is the biggest sounding reverb in ValhallaRoom, with audible echos at the largest size settings that slowly evolve into a rich decay.
    • Narcissus is Nostromo’s little sibling, with an initial denser decay. Narcissus is also the “lightest” reverb mode in ValhallaRoom, with a very low CPU hit.

Simon Stockhausen has some beautiful demos using the new ValhallaRoom reverb modes on his Soundcloud page. The first example uses Stockhausen’s amazing soprano sax playing, processed by Nostromo:

The next example uses Symplant through Narcissus:

The final example utilizes a ring modulated sound from Alchemy, and runs it through Narcissus:

Update links have been sent out to all VRoom customers, and demos of the GUI resizing and new modes can be found on the webpage.

Algorithmic Reverbs, Distortion, and Noise

Over on Gearslutz, AstralPStudios asked an interesting question:

When it comes to reverb, is there close relation to distortion in some ways? I guess when I’m listening to big verbs with high decay times it makes me wonder that because at times a big, wet verb can have some distortion-type characteristics.

The distortion observation is a good one, as this can often be heard with very long decays in algorithmic reverbs. In some cases, this is due to the high signal levels of the output. Increasing the decay time means turning up the internal feedback gains, and this often results in an output sound with a very high RMS level. However, even if the output level is reduced to a level that isn’t clipping within the DAW, sometimes various forms of distortion and noise can be heard. This can be explained as a consequence of the feedback nature of the algorithms, and how feedback causes the characteristics of the loop to be magnified exponentially.

Algorithmic reverbs tend to be made up of short delay lines, with LOTS of feedback applied. A good rule of thumb is that the average delay lines in a reverb are 0.1 seconds or shorter in length. In order to get a 30 second decay out of the reverb, the sound will be going around those loops (30.0/0.1) times…or 300 times. So any little quirk in the feedback path, like interpolation noise or fixed point distortion, will be increased on each pass through the feedback loop.

The earliest “long” electronic reverb sounds were based around tape delays, possibly running into a spring or plate reverb. Listen to “Creation du Monde” by Vangelis for an amazing “reverb” sound that comes from 3 RE-201 Space Echos:

The wow and flutter of the tape units, and the distortion added by tape saturation, results in a sound that is far more ethereal than 3 clean digital delay loops run in series or parallel.

The Lexicon 224 is an early digital reverb that was well known for its spacey, extra long decays (up to 70 seconds). Again, Vangelis was an early pioneer of the extra long decays using this unit, most famously in the Blade Runner soundtrack:

The Lexicon 224 used a fixed point processor, with a 16-bit word size, and a 20-bit saturating accumulator. Translated into English, this means that the 224 had about 24 dB of headroom internally (4X the max input volume) before things started clipping. HARD, digital clipping. The allpass delays used by the 224 also had fairly high internal gains, especially with long reverb times. This results in clipping at various points in the digital reverb network. Strangely enough, adding clipping into the nodes of a Lexicon-style reverb network doesn’t end up producing the classic tape echo runaway feedback at most settings. Instead, it tends to produce a somewhat higher noise floor with broadband audio signals (i.e. music as opposed to test signals).

The modulation in the Lexicon 224 also produced distortion, but of a different sort. The 224 had a quirky multiplier, which resulted in the linear interpolation being quantized to fairly big subsample chunks (I think it was 32 or 64 chunks per sample). This resulted in a “halo” of noise around reverbed signals, where the noise was less signal dependent than the clipping noise described above. The linear interpolation also results in attenuated high frequencies above 1/2 the sampling rate. Since the sampling rate in the 224 was pretty low in the first place, the attenuated high frequencies were quite audible with long decays. The noise and high frequency attenuation will increase every time it passes through the reverb network, and a 70 second decay time results in a few hundred passes through the allpass delays.

EDIT (1/24/2013): Since I wrote the above, I have spent a lot of time studying the Lexicon modulation. I think that the modulation source in the older Lexicons had a lot more to do with the noise performance than I had originally thought. The modulation in my PCM70 is noisy as all get out. The results of my studies can be heard in my latest plugin, ValhallaVintageVerb. In the 1970s and 1980s modes, I make use of this noisy modulation, which can really be heard on long sustained synth notes going through longer reverbs. The Concert Hall and Bright Hall algorithms are the best showcases of these “old school” artifacts.

Today, reverb plugins are usually programmed with floating point math. 32 bit floating point avoids most of the distortion issues found in the older fixed point processors, and 64-bit floating point can be used if absolute precision is desired. Generally speaking, 64-bit math is useful for very low frequency higher order filters, and for precise control of attack/decay times for dynamics processing – otherwise, 32-bit floating point has an amazingly high SNR. In addition, the last 3o+ years have seen a great deal of progress in delay interpolation techniques, so you can have modulated delay lines with lower SNR and less high frequency attenuation. If a DSP engineer wants to throw a bunch of cycles at their algorithms, they can come up with very clean reverbs, even with extremely long decays.

At Valhalla DSP, our philosophy is that a little noise isn’t necessarily a bad thing, and that the artifacts of the older reverbs often added some nice mojo to the signal. The high frequency attenuation of linear interpolation can result in a far less “glassy” high end than modern high fidelity interpolation techniques. ValhallaShimmer makes use of this in the “dark” color mode (the “bright” mode makes use of a more modern interpolation style).

The new Dark Room mode for ValhallaRoom deliberately introduces noise into the linear interpolation, and downsamples the entire reverb algorithm, to produce more audible noisy artifacts. As the noise is very signal dependent, and the algorithm is true stereo, this will result in different noise signals in the left and right channels, which increases the decorrelation of the algorithm, producing a very spacious feel. With short decays, the noise won’t be that audible, as it will only pass through the delays a few times before decaying away. With long decays, the noise floor builds up, resulting in a big, washy block of “spectral plasma,” to borrow a term from Christopher Moore. The other ValhallaRoom algorithms are fairly clean, but I felt it was important that users had the choice between modern clean and vintage dirty.

ValhallaRoom: Early Reflections versus Early Energy

The reverberation algorithms in ValhallaRoom are separated into 2 sections, Early and Late. This is a fairly common division of tasks in algorithmic reverbs. However, while most reverberation algorithms describe the early part of the reverberation as Early Reflections, ValhallaRoom’s early section would be better described as “Early Energy.” The important distinctions:

  • Most reverberators that feature “Early Reflections” use up to a few dozen discrete delay taps, or echos. These delays are often based upon a ray-traced model of a room, but fail to take into account the diffusion found with real acoustic surfaces, and the huge amount of complexity that is found in a real performance space. Things like furniture, seats, columns, and other performers and musical instruments, all combine to create a reflection pattern that is far more complex than what a few dozen delay taps can reproduce.
  • In order to add the complexity that is missing from the tapped delay early echo generation, some manufacturers have resorted to allpass delays in order to increase the echo density. This can work well for many signals, but can result in metallic artifacts on vocals and impulsive signals such as drums. I’ve described this phenomenon extensively in an earlier post. The “Diffusion” control in most reverberators can be seen as a way of dealing with the unpleasant side effects of allpass filters, by allowing the user to control the allpass delay coefficients to suit particular input signals.
  • ValhallaRoom doesn’t attempt to model any particular room geometry. Instead, it takes the approach that the early energy should be as dense, colorless, and spacious as possible, in order to emulate an “impossible” room. The user can dial in the duration of the early energy (using the Early Size control), to emulate smaller or larger spaces. A range of 10 to 50 milliseconds is common for smaller spaces, while larger durations are useful for emulating concert halls and cathedrals, where the initial reverberation tends to take some time to build up intensity.
  • The crossfeed of energy between spatial channels in ValhallaRoom can also be controlled with the Early Cross control, to create reverbs that have a realistic spread of energy between left and right channels, or an unnatural separation of the early energy that can be useful in preserving the initial spatial image of a stereo mix.
  • The Early section of ValhallaRoom has no allpass delays in it, which allows it to avoid the coloration caused by short allpasses. The Early Diffusion control adjusts the overall echo density, but it is mainly there for special effects – you can turn Diffusion all the way up, without getting the “ringing” sounds associated with high diffusion settings in some algorithmic reverberators.

ValhallaRoom was designed from a pyschoacoustic perspective, as opposed to a physical perspective. The goal was to create a sound that produces the impression of an “ideal” room, versus a specific room that exists in the real world.

Reverbs: Diffusion, allpass delays, and metallic artifacts

One of the most common controls found in reverberation algorithms is the Diffusion control. This is usually described as increasing the echo density, either the initial echo density (for Lexicon algorithms) or the rate at which echo density builds over time. The manual for the Lexicon LXP-15 has a somewhat typical description of the Diffusion parameter:

Diffusion: Controls the degree to which initial echo density increases over time. High settings of Diffusion result in high initial buildup of echo density; low settings cause low initial buildup. Echo density is affected by Size — smaller spaces will sound denser. To enhance percussion, use high settings of Diffusion. For clearer and more natural vocals, mixes and piano music, use low or moderate Diffusion settings.

If you read a lot of manuals for reverb products, you will often see similar descriptions of the Diffusion control, as well as the recommendation to use lower settings of Diffusion for clearer vocals. But why is this? A real room or hall tends to start with very high levels of diffusion, due to the objects typically found in the space – chairs, furniture, intricate wall patterns, etc. It would seem that a given echo density should be a characteristic of the space, not of the signal being sent into that space.

The answer lies in the signal processing tricks used to generate the initial high echo density. Manfred Schroeder, in his seminal 1962 AES paper “Natural Sounding Artificial Reverberation,” discusses using very short feedback delay lines in series to increase the echo density. Schroeder developed a very clever feedback/feedforward trick, such that the resulting delay line has a “flat” frequency response. The resulting delay unit is referred to as an allpass delay:

In the late 1970′s, James Moorer published an optimized version of the allpass delay, which used less multiplies, and is more commonly used today:

The earliest commercial digital reverbs, such as the EMT-250 and Lexicon 224, made use of several series allpasses at the inputs of the reverberation algorithms to increase the echo density. Lexicon was the first company to allow the user to directly control the coefficients of the input allpasses, and labeled this the “Diffusion” control.  The practice quickly spread through the audio industry.

EDIT: Chuck Zwicky, in a comment to this post, points out that the Diffusion parameter wasn’t originally present in the Lexicon 224, but was introduced with the Version 4.0 software. He also points out that most of the successful early reverberators up to 1984 did not have adjustable diffusion. The Eventide SP2016 had adjustable diffusion for some of their reverb algorithms, but this would have been around the 1984 to 1985 time frame.

The problem with generating echo density through series allpass delays stems from the definition of “allpass.” An allpass system will pass all frequencies with equal amplitude, over time. There is no guarantee when a given frequency will make its way out of the allpass delay. In practice, allpass delays don’t sound flat. Much like comb filters, a short impulsive sound sent through an allpass delay will result in a “ringing” sound, where only certain frequencies are resonating. Run an impulsive signal through several short allpass delays in series, and the result is a metallic decaying sound.

For percussive instruments, the metallic coloration might be an acceptable tradeoff, versus the “chattering” sound that occurs when the initial echo density is too low. Plus, snare drums have a metallic coloration in their own right, so a bit more coloration is OK. For vocals, the coloration produced by short allpass delays can be very unpleasant. Even though vocals are usually perceived as a “smooth” or continuous signal, the actual waveform produced by the glottis is very pulse-like, and can cause short series allpasses to ring out. This is especially audible on male vocals.

Some of the possible solutions to the issues with series allpasses:

  • Embrace the metallic coloration, use a bunch of series allpasses, and call the resulting algorithm a plate reverb. This is a fairly common approach, with most of the “plate” algorithms having very little to do with a physical plate, so much as having a lot of initial echo density and a somewhat metallic sound.
  • Use fewer series allpasses at the input. This works in eliminating coloration, but can result in a lower initial echo density. Many “hall” algorithms use this trick.
  • Use a larger number of series allpasses, with the idea being that the larger number of resonances will end up smearing out the metallic sound. This works, but a side effect of cascading a larger number of series allpasses is that the attack time can be extended to the point where the sound seems to “fade in.” This is a great sound if you like it, but doesn’t work for small room simulation.
  • Modulate the delay lengths within the allpasses. For longer allpasses, this helps reduce coloration. For the short allpasses used in the input diffusion section, this ends up producing too audible of a chorusing sound, or a sound similar to water sloshing around in a metal pan.
  • Reduce the coefficients of the allpass delays. This will reduce coloration, but will also reduce the echo density.

This is where the Diffusion control comes in. Instead of being a compromise solution that works OK for all signals and not great for any signal, it allows the user to adjust the algorithm to suit the input signal. It places the burden of balancing echo density and coloration on the end user, instead of on the algorithm designer. By knowing how the Diffusion control works, the end user can make their reverbs work better for them.

Is this an ideal solution? Probably not. But in the limited hardware processors of the late 1970′s, or the low-CPU plugins of today, it can be a reasonably effective solution.

EDIT #2: ValhallaRoom uses some clever signal processing tricks to avoid the issues associated with series allpass delays described above. A high level explanation of the Early Reverb section of ValhallaRoom can be found here. Even though ValhallaRoom has a Diffusion control, it is not being used to control allpass coefficients – the Early Reverb has no allpasses in it.

EDIT#3: ValhallaShimmer is built around a large number of cascaded, modulated allpass delays, and the artifacts that are generated by such a structure (see this blog post for more details). In addition, many of the “classic” digital reverbs relied heavily on series allpasses, so it isn’t to say that they produce a sound that is unusable – just that this sound isn’t necessarily reflective of what is found in a “real” acoustic space.

ValhallaShimmer Tips and Tricks: Shimmering

ValhallaShimmer was designed to get a variety of big reverb sounds, with the option of adding pitch shifted feedback to the decay. The “Shimmer” in the title refers to the classic shimmer effect, as used by U2, Brian Eno, Daniel Lanois, Coldplay, etc. There are a few presets that ship with ValhallaShimmer which reproduce this effect, but if you want to dial in your own version, here’s some tips:

  • Use the mediumStereo or bigStereo reverb modes for the smoothest shimmer sounds. The mono reverb mode will have a stronger sense of pitch shifting in the feedback signal, while the other modes have a gentler onset of the pitch shifting.
  • Set the Feedback control for the desired amount of pitch shift in the output signal, and then use the Size control to dial in the decay.
  • The Pitch control should be at +12 semitones.
  • Diffusion works best at around 0.9 for reverberant sounds. If you set Diffusion < 0.5, it will sound closer to a pitch shifted echo, which is another cool sound.
  • The different pitch shift modes have different levels of “smoothness”:
    • The single and dual pitch shift modes have more noisiness in their decay. This is better for emulating the orchestral sounds as heard in “Deep Blue Day.”
    • The singleReverse and dualReverse pitch shift modes are much smoother, and are better for organ-esque sounds.
  • colorMode should be set to dark. This produces a natural roll-off of high frequencies, which eliminates almost all of the aliasing noise in the feedback path of the pitch shifter.
  • Set the modDepth control to a fairly low value at first, as the pitch shifting provides its own random modulation to the signal.

ValhallaShimmer Tips and Tricks: Adjusting the reverb envelope

In order to dial in the desired reverb characteristics while using ValhallaShimmer, it helps to understand how the Feedback, Diffusion, Size, and Reverb Mode parameters work together:

  • The Feedback parameter controls how much of the output signal is fed back into the inputs. If ValhallaShimmer is viewed as a delay line (and it is far more complicated than that, but with Diffusion at zero this is a fair approximation), the Feedback parameter controls the number of repeating echos before the signal decays to inaudibility.
  • The Feedback parameter also directly affects the perceived intensity of the pitch shifted signal when the Pitch Shift mode is not set to bypass. A higher Feedback setting will result in a more intense pitch shifted sound.
  • The Size control changes the overall delay length(s) in ValhallaShimmer. A larger setting of Size will result in longer delay lines, which results in a longer time for the echos generated by the Feedback parameter to decay away.
  • The Diffusion parameter adds echos to the “delay line” at the heart of ValhallaShimmer. The echos increase with each feedback pass through the network, so combining Feedback with Diffusion results in echos building exponentially in density, until the signal is no longer perceived as discrete echos, but as a reverberant decay. Higher settings of Diffusion result in the echo density building up more quickly with a given Feedback setting.
  • The Diffusion parameter can also add its own reverb decay, even without any Feedback being used. If Diffusion is set around 0.9, the result will be a reverb sound that is considerably longer than the delay length would be without any Diffusion. Applying Feedback to this network will result in a much longer reverb than the same Feedback setting with a lower Diffusion setting.
  • The Reverb Mode parameter has a global effect on the lengths of the delay lines, as well as the density of the echos produced by the Diffusion parameter. The larger the Reverb Mode, the longer the delay lines, and the higher the density for a given setting of Diffusion.

Given that the controls have a fair amount of interaction with each other, there is no one method to get a reverb decay of a given length. The user can decide if it is best to use a larger Size in conjunction with a smaller Feedback setting, or to rely on high Diffusion settings and less Feedback, and so on. ValhallaShimmer is meant to encourage exploration on the part of the user!

An example approach:

  • Start with the Reverb Mode parameter. mediumStereo is best for halls and other “kinda” large spaces. bigStereo and mono are huge, and are a good starting point for very long ambiences. smallStereo is best for short ambiences, spring reverbs, and other sounds that are more metallic.
  • Next, set the Diffusion parameter for the desired attack. Low values will start off as echos that slowly build to reverbs, values around 0.5 to 0.618 will cause the reverb to slowly fade in, and values between 0.8 and 0.91 will have a relatively quick attack.
  • The Size parameter can be used to adjust the precise attack time of the reverb, as well as the amount of “color.”
  • Once the attack time is dialed in with Diffusion and Size, use Feedback to get the desired decay time.
  • After this, adjust the tone controls and modulation controls to taste.

ValhallaShimmer released for OSX AU, VST, RTAS. $50. Demo versions online.

After far too much work, ValhallaShimmer is finally available for sale and demoing:

ValhallaShimmer

OSX users, grab yerself a demo copy and see how you like it. Windows folks, I estimate another week of work and beta testing until the Windows VST/RTAS release.

Some thanks are in order:

  • Beta testers. You’ve dealt with far too many revisions, and your input has been invaluable.
  • The Audio Damage guys. You gave me credit for my work on Eos, at a time when I had never received any public credit for my consulting gigs.
  • My old co-workers at Staccato Systems / Analog Devices. It was like going to school, just getting paid.
  • My teachers at University of Washington and CCRMA. It was exactly like going to school, except I was learning really cool stuff. You helped me start off on this crazy journey.
  • Bram Wessel and David Hopper, for encouraging me to keep going on Shimmer even when I was ready to walk away from the project.
  • All of you who have been following this blog and the forums, and giving me words of encouragement.
  • Last and by no means least, my lovely wife Kristin has given me emotional and financial support, time, and has been an awesome web designer. Plus, you’ve heard me rant about allpass filters and modulated delays for the past 13 years, which makes you a freaking hero.