ValhallaUberMod: The DIFF Parameters

The initial concept behind ValhallaÜberMod was to create a chorus algorithm that took the “balanced” modulation of the Roland Dimension units, and combined this with the multitap complexity of the choruses found in high end rackmount units, such as the Lexicon 224 & PCM70. Many of the rackmount chorus algorithms used series allpass delays to add echo density to the choruses, in a process commonly referred to as diffusion. I originally had a single Diffusion control in ÜberMod, but a bit of exploration revealed that adding parameters to the diffusion section vastly expanded UberMod’s sonic power. The DIFF parameters are used to control the diffusion section in ÜberMod.

ValhallaUberMod DIFF Controls

The diffusion section in ÜberMod is inside of the feedback loop, so the echo density will build with each repeat when FEEDBACK is greater than 0%. This can be used to create delays that get more “smeared” with each repeat, as well as full-on reverbs. The allpass delays within the Diffusion section are true stereo, and are designed to maintain a balanced yet wide spatial image. Modulation is used to reduce the metallic coloration in the Diffusion section, and can create some pretty stunning chorus effects in and of itself, as well as being useful for lush reverbs.

The DIFF controls:

  • DIFF On/Off turns the diffusion section on and off. When the diffusion section is turned off, the CPU consumption of ÜberMod is lower. This can cause a pop and other strange glitches when audio is running through the signal, so I wouldn’t recommend automating this parameter. Of course, if you like those glitches, go ahead and automate the On/Off control. Who am I to judge?
  • DIFF Diffusion adjusts the echo density and buildup of the Diffusion section.
    • A DIFF Diffusion setting of 0% turns the diffusion section into a stereo delay line, with the delay length determined by DIFF Size.
    • Diffusion settings higher than 0% result in increasing echo density.
    • The echo time/energy profile changes as Diffusion is adjusted, with some settings between 40% and 80% causing the sound to fade in slightly.
    • The highest settings of Diffusion result in a faster fade in, and a more exponential decay. The highest Diffusion settings can also create metallic coloration, depending on the other DIFF settings and the input material. Backing off slightly on the Diffusion control, or increasing DIFF Size, will usually reduce the coloration.
  • DIFF Size controls the overall length of the delays in the DIFF section.
    • With Diffusion at 0%, the DIFF Size setting corresponds to an additional delay added to the feedback loop. Keep this in mind when creating rhythmic delays.
    • At Diffusion settings higher than 0%, the DIFF Size no longer corresponds to an exact delay, but rather is used to scale the duration of the cluster of delays generated by the diffusion section. Higher DIFF Size settings result in longer clusters of delays and a longer decay from the Diffusion section.
  • DIFF ModRate controls the average rate of the modulation in the Diffusion section.
    • The Diffusion modulation is randomized, with each allpass delay having its own independent modulator, so the overall modulation is very complex.
  • DIFF ModDepth controls the depth of the modulation in the Diffusion section.
    • Note that the perceived modulation depth increases with ModRate, so the ModRate and ModDepth controls should be adjusted in tandem.

     

ValhallaUberMod: The MOD Parameters

ValhallaÜberMod allows the user to dial in different chorus, ensemble, and glitch shifting modulations through the use of the MOD controls. By clicking on the MOD button at the upper right of the GUI, the 5 modulation parameters can be viewed and adjusted:

The MOD parameters:

  • MOD SlowRate controls the slower delay modulation LFOs, with the value represented in Hertz. Depending on the Mode being used, this will control the speed of anywhere from 1 to 16 LFOs.
    • In modes with multiple LFOs, the modulation rate varies for each LFO, so the SlowRate value maps to the cycle speed of the slow LFO with the highest frequency – all the other LFOs will be somewhat slower.
  • MOD SlowDepth controls the modulation depth of the slow LFOs. This is more of a scale than an absolute value, and is used to balance the slow and fast LFO depths (which are both scaled by the high level DEPTH control).
    • The MOD SlowDepth also depends on the MOD OverMod setting, which acts as a control to set the slow LFO depth beyond reasonable bounds – see below.
  • MOD VibRate controls the faster delay modulation LFOs, with the value represented in Hertz. Depending on the Mode being used, this will control the speed of anywhere from 1 to 32 LFOs.
    • In modes with multiple LFOs, the modulation rate varies for each LFO, so the VibRate value maps to the cycle speed of the fast/vibrato LFO with the highest frequency – all the other vibrato LFOs will be somewhat slower.
    •  For most applications, the MOD VibRate should be used to add vibrato to a chorus, with the main detuning generated by the MOD SlowRate and MOD SlowDepth controls. However, this is just a suggestion – the fast LFOs can generate cool chorus effects by themselves.
  • MOD VibDepth controls the modulation depth of the faster LFOs. This is more of a scale than an absolute value, and is used to balance the slow and fast LFO depths (which are both scaled by the high level DEPTH control).
    • The MOD VibDepth setting doesn’t get as deep as the SlowDepth control, as LFOs running at faster frequencies cause more pitch change than slower LFOs.
    • In addition, the MOD VibDepth isn’t affected by the setting of MOD OverMod.
  • MOD OverMod. Acts as a scale on MOD SlowDepth. At the default OverMod setting (1X), the slow LFOs are optimized for creating chorusing and detuning effects. For higher settings of OverMod, the detuning gets deeper and deeper, until it moves into the realm of pitch shifting and backwards delays.
    • The modulation depth established by MOD SlowDepth and MOD OverMod is also scaled by the high level DEPTH slider.
    • The pitch shifting is not the controlled type found in ValhallaShimmer. The amount of pitch bend depends on the interconnections between MOD SlowRate, MOD SlowDepth, MOD OverMod, and the DEPTH slider. A better name for this would be “glitch shifting.” I just threw up a little in my mouth as I typed this, but it is the most descriptive phrase I can think of for the OverMod artifacts.

ValhallaShimmer: a bit of history

ValhallaShimmer has its roots in the earliest digital reverberation algorithms, as described by Mannfred Schroeder in 1961. Schroeder, in his earliest AES paper on the subject, described a “colorless” reverberator, based upon cascaded diffusor (allpass) delays. At the time, the computation power available on the mainframe computers Schroeder was using limited the complexity of his algorithms.

In 2006, I experimented with extending Schroeder’s early reverberator structure to much higher orders. I was expecting that using much larger numbers of cascading diffusors would increase the echo density of the algorithm. It did, but it had a really weird effect: As the number of diffusors increased, the reverb decay started to sound less and less like a “real” acoustic space, and more and more like some weird spooky backwards thing.

It turned out that I had run into an artifact of what is known as the Central Limit Theorem. Without getting into the messy scientific details, the effective result was that, as the number N of cascaded diffusors increased, the attack and decay characteristics of the reverb changed from an exponential decay towards a bell, or Gaussian, curve. In other words, the reverb would slowly fade in, and then slowly fade out.

This wasn’t what I was expecting. More importantly, it sounded cool. Add some randomized modulation to each of the diffusors, and the result was an ethereal, ghostly soundscape.

The pitch shifting Eno trick was one that I had first tried back in 2004. The pitch shifter I used at the time produced decent results. Later on, I conducted research into early pitch shifting techniques (as detailed in earlier blog posts) and developed a simple yet effective algorithm for pitch shifting. The goal was to generate similar artifacts to what a “de-glitched” pitch shifter would produce in a feedback loop with a reverberator, but without performing the costly autocorrelation analysis that the deglitching pitch shifters used. The result was a pitch shifting algorithm that added noise and texture to the feedback loop. It was an attempt to avoid metallic colorations (and emulate what a deglitching pitch shifter sounds like when it is freaking out), but it also sounded like a huge orchestra warming up.

When I started work on ValhallaShimmer in the spring of 2010, I knew that I wanted to combine the results of the cascaded diffusor experiments with the pitch shifted feedback as used by Brian Eno, Daniel Lanois, U2 et al. In order to put these into plugin form, I had to perform extensive optimization on the basic building blocks, as my early experiments used up far too much of the CPU. After a few months of work, I had a framework that brought the CPU consumption down by a factor of 10 to 20 from my 2006 experiments.

The original version of ValhallaShimmer had a single reverb algorithm, the one currently labeled as “mono.” Testing the plugin with material recorded with stereo miking techniques quickly pointed out that true stereo algorithms were necessary. The resulting algorithms (bigStereo, mediumStereo, smallStereo) were designed to get different perceived room “sizes,” although most of the sounds fall in the range between pretty big and huge.

During the optimization process, I found that one of my CPU-reducing tricks resulting in a lot of high frequency loss. Instead of looking at this as a technical shortcoming, I listened to the results. The optimized code sounded “warm,” and much closer to an ancient digital reverb with a low sampling rate and steep anti-aliasing filters. So I left it in as the “color” mode, so the user can choose between the original “bright” mode for modern reverb sounds, and the “dark” mode for that warm vintage sound.

Looking back at the history of ValhallaShimmer, it just struck me that most of what makes this an original algorithm was embracing the weird little artifacts that I came across while experimenting with various digital signal processing techniques. The cascaded diffusors didn’t behave in the manner I was expecting, but they sounded great. The pitch shifting artifacts added some grainy texture to the reverb decay, that sounded like a string orchestra section, even though the original goal was to get rid of metallic coloration. My optimization techniques darkened the overall tone, and helped me to realize that dark is often a good thing for a reverb. Happy accidents.

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.

Shimmer: Modulation, auto-correlation, and decorrelation

In my previous post, I discussed the Eno/Lanois shimmer sound, and how it is based around a pitch shifter and a digital reverb placed in a global feedback loop. It is worth exploring what is going on in this signal chain at the micro level, and how a fairly simple signal routing can create such a complex sound.

The AMS pitch shifter used by Eno and Lanois used a de-glitching board in its architecture, to find the ideal points for splicing together the time-scaled waveform chunks. This presumably worked in a similar manner to the H949 de-glitching card, in that autocorrelation was used to find the most similar segments of the waveform, and the delay time of one of the channels was adjusted for an ideal splice. It is also possible that the auto-correlation would trigger a new splice, such that the rate between splices was a function of the periodicity of the input signal.

Auto-correlation works well for determining splicing points, assuming that the input signal has a certain degree of correlation. A single sustained guitar note, for example, can have a high auto-correlation factor after the initial attack. But what happens when the signal to be shifted has a very low auto-correlation factor? Such a signal is said to be decorrelated; that is, the auto-correlation or cross-correlation is said to be greatly reduced compared to the original signal.

In the audio world, decorrelation often refers to randomization of the phases of the signal while preserving the frequencies, or to a time-varying process to slightly shift the frequencies of a signal to prevent feedback. Both of these processes are present, to a large extent, within time varying reverbs such as the Lexicon 224 and EMT250 used by Eno and Lanois.

The Lexicon 224 Concert Hall algorithm is made up of a number of allpass delays, which preserve the input frequencies while completely scrambling the phase response. In addition, the Concert Hall algorithm uses time varying delays inside of the recursive delay network, which increased the perceived modal density of the reverb, and also impart a beautiful chorusing to the reverb decay. This lushness from time-varying delay lines is very prominent in 1980′s Eno/Lanois productions – in addition to the Concert Hall algorithm and EMT250, they made use of the multi-voice chorus algorithms in the Lexicon units, as well as the Symphonic preset in the Yamaha SPX-90.

So, what happens when a pitch shifter that uses auto-correlation to find the ideal splicing points is put into a feedback loop with a reverb that is highly decorrelated and time-varying? The answer: chaos. The pitch shifter will NOT be able to find ideal splicing points, as the phase of the reverb output is continually being scrambled.

The pitch shifter HAS to splice, whether or not it is a perfect situation, so it will pick the best possible match, but this will probably be a fairly random location each time. The result will be random delays for each new splicing point, or random sizing of the grain windows, depending on how the auto-correlation is used within the pitch shifter. This randomization will cause the sidebands of the input signal to be spread out, such that an individual sinusoid would be turned into a band of frequencies centered around the original (that has been shifted up by an octave).

Add in the additional octaves produced by the feedback, the random sideband spread caused by the modulation within the reverb, and harmonics that are created by analog nonlinearities in the feedback path, and the result is a HUGE amount of sonic complexity generated from a simple system. Put a sine wave into this type of feedback system, and the output can approach near orchestral levels of thickness.

In this light, it is interesting to think about Eno’s use of the DX7 around this time. The DX7 can produce chaotic sounds through the use of cascaded FM, but it can also produce gentle, minimalist textures through the use of parallel operators (sine oscillators). A simple DX7 patch with several parallel sine oscillators and a low FM index may produce a fairly boring sound on its own, but would create an enormous yet controllable sound when fed into a complex feedback loop of digital processing.

Coming up: more on the topic of generating complexity through simple systems with feedback applied to them, both from a technical and creative perspective.

More general reverb tips

As a followup to my Eos tips and tricks post, I thought I’d share some more reverb tips. All of these have been tested with Eos, but should also work with a wide variety of hardware and software reverbs.

  • Set the high cut filters to a fairly low frequency. Older hardware reverbs, such as the EMT250 and Lexicon 224, had a hard cutoff at 8 KHz to 10 KHz, due to the low sampling rate of the machines. The high cut filters in many reverbs have a much more gentle slope than the high order filters used at the inputs of these old boxes. To emulate these old boxes, try setting your high cut filters to a fairly low frequency, such as 2 to 4 KHz. This also corresponds more closely to the absorbtion of high frequencies by air in a large space, such as a concert hall.
  • Use the low cut controls to make the reverb sound less “tubby.” Many concert halls actually have a much longer decay for low frequencies than mid range frequencies. This is useful for classical music, but for most popular music forms, the amount of bass energy that is present will sound flubby when reverberated. Set the low cut controls at 200 to 400 Hz, or even higher, for a clearer reverb sound.
  • If you don’t have low or high cut controls, put the reverb in a send bus, and put the EQ of your choice before or after the reverb.
  • Try compressing the input or output of the reverb, for some neat sounds. A limiter before the reverb will keep spikey transients from dominating the response, and will better emulate the transformer-coupled inputs of the old high-end hardware units. Compressing the output of the reverb will change the exponential decay response to something much weirder, depending on your settings.
  • Plate reverbs have a lot of high frequencies in the decay, so make sure that the high frequency decay multiplier (or the high frequency decay filter cutoff) is set fairly high. These controls are usually separate from the high cut controls, that shape the sound at the input (or output) of the reverb.
  • Adjust your modulation depth based on the decay. For long decays, you may wish to back off on the modulation depth, as the sound will travel through the modulators many more times compared to a short decay. Each pass through the modulators causes more detuning. A modulation depth that works for short decays may sound seasick for long decays. Of course, if that’s your thing, then go for it.
  • Use the Size control for the desired echo density, but be mindful of how it affects the modal density. For example, if you want a small drum room, then set Size to a smaller setting, as it will make the echos closer together. However, a smaller Size setting will sound more metallic for longer decays, as the modal density goes down as the Size decreases. Longer delay lengths = higher modal density = less metallic = lower echo density. For short decays, the low modal density may not matter.
  • The Size control is often given in meters. This has nothing to do with any real physical world metrics, in most cases. A real acoustic space with a 30 meter maximum dimension will have a few orders of magnitude higher modal density than your typical digital reverb with a 30 meter Size setting. Just tune it by ear to where you like it.
  • Shorter Size settings may also result in deeper modulation for the same decay setting, so be sure to retune this for your tastes.

Hope these are useful to people. If you have any more tips, feel free to add them in the comments.

Eos tips and tricks

Eos has been out for a month and a half now, and the reception seems pretty positive. I thought I would share some tricks that came up during the development of the algorithms, as well as some more recent ideas.

  • Gated reverb. The Attack control in Superhall allows you to approximate a gated reverb sounds Set Attack to around 50, Decay to a low value (<1 second), Diffusion to 100, and play around with Size to get the gate time. If the sound is too grainy, turn up Decay a little higher.
  • Reverse reverb. Same settings as above, but set Attack closer to zero.
  • “Shape.” The late 80′s Lexicon reverbs had “Shape” and “Spread” controls to control the initial onset of reverb energy, with high Shape settings resulting in a reverb that fades in slowly. The Superhall Attack control has a similar function, in that the first few hundred milliseconds can have an exponential decay (for high settings of Attack), a relatively flat response (Attack=50) or fade in slowly (Attack=0).
  • Using an external chorus to simulate the EMT-250. I recently heard sound examples of the EMT-250, and that thing had TONS of modulation. In Eos, the Superhall algorithm can get similar levels of modulation right out of the box, but the plate algorithms have a somewhat drier sound for the first few hundred milliseconds. By running a decent chorus or ensemble plugin in front of Eos, and using the Plate 1 or Plate 2 algorithms, you can get a sound that is closer to the EMT-250 (the Plate algorithms are closer in concept to the EMT-250 than Superhall). Set the Low Crossover and High Crossover frequencies at 1000 Hz, set the Size to 30 meters, Mod Freq to 0.5 Hz or so, and Mod Depth at max, and then tweak your chorus until the initial sound is as “wet” as you like. Obviously, this works better on a bus send. The internal modulation of Eos will give you spreading sidebands as the sound decays, that you just can’t get out of a convolution reverb.
  • Ethereal vocals. Use Plate 1 or Plate 2, set the Low Cut frequency to a fairly high value (800 Hz to 1200+ Hz), and the High Cut frequency to a similarly high value (8000 Hz or higher). Set the mix to a fairly subtle level. The fundamental frequencies of the vocals will not be reverberated to a great extent, but the syllabants and consonants will have a fair amount of reverb. This type of sound can be heard all over Simon and Garfunkel albums – I’m not sure if this was due to the 7-story staircase reverb chamber at Columbia studios, or over enunciation of consonants, but it is definitely a good sound for those choirboy things.
  • Emulating older reverbs by backing off on the diffusion. The Superhall algorithm took some of its sonic inspiration from the Lexicon Concert Hall algorithms, but Superhall can have a much higher initial echo density. By turning the Diffusion parameter down to 50% or so, the more “spacious” or “grainy” sound of the older algorithms can be achieved.
  • Longer reverb time. In your host’s default parameter view, move the Low Crossover to a high frequency (>8000 Hz), and set the Low Multiplier to 2.0. This should increase your maximum Decay time to 20 seconds.

If you have any Eos tricks that you would like to share, feel free to post them in the comments.