Differences between room, plate, hall algorithms?

Algorithm development and general DSP issues

Moderator: frank

Post Reply
seancostello
Posts: 74
Joined: Mon Sep 11, 2006 10:04 pm

Differences between room, plate, hall algorithms?

Post by seancostello »

Hi all:

I was going through the example code for the FV-1, and trying to figure out why different algorithms have their titles. A few questions:

- Are the Room, Hall, Plate algorithms defined by their sound, or by their algorithm topologies?

- If defined by sound, what are the identifying characteristics for their sounds? Is it based on speed of diffusion buildup, coloration, perceived size?

- If defined by algorithm topology, what are these? Is it based on num of allpasses, allpass coefficients, number of predelay taps, number of ring output taps?

From what I can tell, the plate algorithms in the FV-1 examples tend to use more loop allpasses, and possibly more loop inputs, than the Hall algorithms. The Room algorithms seem closer to the Plate algorithms, with the loop allpass coefficients (maybe) being set to lower values.

Any thoughts on this topic welcome.

Thanks,

Sean Costello
Keith
Posts: 9
Joined: Sun Oct 30, 2005 2:30 pm

reverb descriptions

Post by Keith »

I love your questions, curious are you!

To the best of my knowledge, with the exception of some possible inside jokes that I have not been privy to, reverbs are named according to their sound. -Since the digital methods that approximate the acoustics of physical structures are recent compared to the acoustical impressions spaces have given over the course of human history, and since most folks don't think in terms of reverb algorithms, we don't call a plate a "spacially uncorrelated, extreme reflection density reverberator with distinct ringing and a multiorder high frequency loss"... We call it a plate.

Personally, I think the tendancy to name algorithms after physical structures is unfortunate, because we have the ability to make much nicer acoustic environments with digital hardware than most real world structures allow, with the possible exception of a parking garage I ran into once...

When a manufacturer requests a 'Hall', I try to set up a slow building reverb loop, which means all passes with a coefficients of maybe 0.5, and a spread out initial FIR that gives the impression of distant walls. Sometimes an added reflection, deep in the wash, gives more 'heft' to the sound. I've read about algorithms that duplicate the sound of a hall, but short of a very long and intense convolution from an actual recording, I doubt the accuracy holds beyond the first few initial reflections. Further, just change your listening position, and such an algorithm becomes quite inaccurate.

Truth is, this digital reverb stuff is all a bunch of fakery, relying on our limited ability to perceive actual spaces acoustically. For theatrical productions, a realistic algorithm may be required during looping to match the space in which a scene was shot, but for music we look for pleasing sound that doesn't interfere with the rest of the mix.

So, the answer is do whatever you like, and keep doing it until you like it enough.

Plates do require a comment though: Plates are ringy and have distinct ugly peaks, but they are dense, which makes them nice for drums. To me, the name 'plate' means high density, and I often use it to represent an algorithm that has extended high frequency response. Plates have uncorrelated outputs; that is, you hear the outputs spread wide with little in the middle. This naturally comes from taking your stereo outputs from very different places in a loop of delays and all pass filters.

The architectures I've tried to show on the webpage illustrate several possibilities with the intent to encourage experimentation.

There are no rules except the rule that there are no rules. :wink:

Plate: Immediate build of diffusion, uncorrelated outputs, strong high/mid response (which rings), rapid rolloff of high frequencies, poor bass response.

Room: Fast build, short (~10mS) and multiple initial reflections, ringy in the mid frequencies, high frequencies depend on wall treatment, bass variable.

Hall: Long delays in the initial sound (30~120mS), slow build, poor high end response, moderate diffusion build, moderate bass respopnse.

Digital: (this should be a popular option) Beautifully dense, no ringing, extended response with sparkling highs, deep bass response (when wanted), cascading showers of even tonality.

I suggest you build a few algorithms and give 'em a listen. The FV-1 demo board and a mixer will allow you to make and adjust anything you would like. You will discover what sounds nice and what sounds ugly. Have fun with it, and never take it too seriously. -Leave that to the marketing department!

Keith
Keith
Posts: 9
Joined: Sun Oct 30, 2005 2:30 pm

Post by Keith »

Sean:

Been thinking this over... Maybe you need my short lecture on reverb programming. I hope its short enough...

First of all, if anyone tells you that his algorithm is truly representitive of a real space, he's kidding himself, you, or both. Real spaces are hideously complex compared to a simple digital reverb algorythm. The trick is that digital reverbs don't need complexity to fool the human hearing system.

The size, shape and wall treatment of a space determine how it sounds, obviously. Large spaces will have a longer density buildup, but one with pillars (as with the parking garage) will have a faster buildup than one without pillars. Long distances mean long delays, at about 1100ft/S. Only the most rigid walls (cave) will reflect deep bass, man-made walls will give a bit and lose bass. Tiled walls reflect the highs best, plaster and drywall not so much. Add curtains and the mids and highs go away very quickly and cause a short reverb time.

What's really wonderful about digital algorithms and modern music is that we don't have to duplicate a physical space. In fact, most physical spaces are bad reverbs, and we can make 'em better digitally. -Too bad that manufacturers insist their algorithms have familiar names.

The best resonator topology is delays and all passes in a loop, usually two all passes, 1 delay, 2 allpasses, 1 delay, repeat as required, tie into single loop. Inject inputs at the juncture of delay outputs and the allpass pair input. Take outputs from delays as required.

Drive the resonator with a few series allpasses to initially complicate the signal. Listen for ringing with various program sources (usually percussive) at low RT and adjust the all pass filter lengths for minimum or acceptable ringing. Adjust delay tap outputs to get an acceptable initial sound, and if more distinct intial response is required, try injecting the input signal at the delay inputs, after the loop allpasses.

Finally, move a few of the walls by putting chorus generators in the delay element of a few of the all passes. This smears out any resonances that may arise in the reverb tail. SIN on one and COS on another from a single LFO works well. Listen for a balance between pitch variation and reduction of ringing. If a more distinct initial sound is required, reserve some delay that the input (usually after the input allpasses) can be passed through, and derive some taps from the delay to the output.

A consideration is frequency response. Real rooms usually have extreme response peaks and dips, and yet this may be a problem in music production (or PA use). Remember that whenever multiple signals, delayed by different amounts are summed, some frequencies will be reinforced, others canceled. If you want a very flat reverb, use as much delay as possible in the loop, (distributed between APs and delays), which allows a lower loop gain to achieve the RT you're looking for. Drive the reverb at as few points as possible, and take one channel from one point and the other channel from another point. The drawback is lower initial impulse density, but this is a very nice detail; a rough initial sound with a smooth tail is really neat! -Always take signals from delays, NOT the delays that are internal to an all-pass. The signal within an allpass has a comb response.

Notes:

When banging down ringing tones, try reversing the coefficient signs of a given allpass. The feed-forward and feed-back coefficients need to be of the same magnitude but opposite sign for overall flattness, but it does not matter which is which, and the impulse responses are very different...

A loop of 2AP, 1 delay, 2AP, 1 delay is just fine for a minimal structure. 3 or more APs per delay really builds impulse density quickly, and could be used with no pre-allpasses, definately something to try.

Parallel structures are also interesting. Do two separate but similar loops and see what happens when they are really close in dimension but not exactly the same! (one on the left, one on the right).

Loop filtering is really important. Filter both the highs and the lows, and do it as often within the loop as required. I suggest a shelving LPF and a shelving HPF at each delay output (but of course, not the AP delays). You may be able to get away with one filter section in the loop, but if you have a lot of AP/delay sections, you may hear the response 'stepping down' at each passage when driving the system with an impulse... If so, add more filter blocks around the loop.

Loop filtering really adds character to the sound, and is extremely important. The FV-1 was designed to do a shelving filter with two ticks with reverbs in mind. Especially with short loops, remember that the sound is going around the loop many times as the reverb decays away... A 2 second RT system with a total of 200mS internal delay goes around 10 times to get 60 dB down. -The filters are used over and over on a single impulse. Therefore, use both frequency and shelving to get what you want. A filter with only a dB or so of shelf loss (K = -0.1) can still be effective.

A simple sinX/X filter can be generated by simply summing two adjacent outputs of a delay, and makes for cheap HF loss.

RDAX DEL#,KRT/2
RDAX DEL#-1,KRT/2

should do the trick.

If you build the simplest nice sounding structure, 2AP / 1 delay / 2AP / 1 delay, and drive both sections with mono (complicated by input APs) at the delay output / AP input juncture, and take outputs from the delay inputs to each channel (simplest coding; write delay then write DAC), you may find that the initial sound is not balanced between right and left. This is because the total delay in the first AP pair is not close enough to the total delay in the second AP pair. Make these delays all different, but try to make the total delay of each pair similar.

I hope this helps. Reverb programming is something I have done for so many years now, and I still don't tire of it. I do however wish that requests for reverb algorithms was more toward something neat and different rather than "HALL", or especially "the HALL program from a cheap Yamaha mixer"!

If you get deep into this, you will find some spectacular effects are possible, but they are not "standard", so the little minds just get smaller still.

Please ask whatever whenever. I love this stuff.

Keith
Last edited by Keith on Mon Nov 24, 2008 8:19 am, edited 1 time in total.
seancostello
Posts: 74
Joined: Mon Sep 11, 2006 10:04 pm

Post by seancostello »

Hi Keith:

Thanks for all the info. I never tire of this stuff either. Long lectures are just fine!

A few questions and comments:

- You describe a "digital" reverb, with lots of echo density, no ringing, and good frequency response. I think that this might be called "Chamber" by other manufacturers, in that it emulates the physical reverb chambers found in older recording studios.

- Taking an output tap from the interior of an allpass delay will result in a comb response, but is this always a bad thing? The reverb Jon Dattorro published in his September 1997 JAES article was an allpass loop that took taps from both inside and outside of the allpasses. This was an emulation of a small plate, so maybe the ringiness from the combs was considered OK.

- Have you ever worked with nested allpass filters within an allpass loop? Bill Gardner described such structures, and they have a very fast build of echo density, but setting the delay lengths and allpass coefficients seems to be very touchy.

Thanks,

Sean Costello
Keith
Posts: 9
Joined: Sun Oct 30, 2005 2:30 pm

Post by Keith »

By nesting allpass filters, do you mean inserting an AP in the delay of another? As I recall, there ws no benefit and the code is a bit bigger.

I have built all-AP reverbs though. The first Midiverb had a few as I recall. Very limited RT range, but also very interesting. I find the delays of a typical loop add a 'space' that all-APs cannot deliver, and a certain relief from tweaking AP delay lengths.

Do you have a secret for setting AP delay lenghts?
seancostello
Posts: 74
Joined: Mon Sep 11, 2006 10:04 pm

Post by seancostello »

Keith wrote:By nesting allpass filters, do you mean inserting an AP in the delay of another? As I recall, there ws no benefit and the code is a bit bigger.
The idea is to insert a delay based allpass in series with the delay, inside of a second allpass. For a nice diagram, see:

http://ccrma.stanford.edu/~jos/pasp/Nes ... lters.html

Replace the z^-1 in the delays with z^-n1 and z^n2, and you have your nested allpass delay. The idea is that the innermost allpass adds echos every time the outermost allpass recirculates its input signal, resulting in an exponentially increasing echo density Very powerful, very hard to tweak to sound good.
Keith wrote:I have built all-AP reverbs though. The first Midiverb had a few as I recall. Very limited RT range, but also very interesting. I find the delays of a typical loop add a 'space' that all-APs cannot deliver, and a certain relief from tweaking AP delay lengths.
This makes sense to me, although it is hard to articulate why. Even though the allpasses have a flat frequency response, they still ring out with a certain echo pattern. Placing the allpasses in a loop, and increasing the feedback of the loop, will cause the ringing to be more apparent, as the poles of the allpasses will get closer to the unit circle. Having more delay space between the allpasses adds a bunch of "poles" that start off on the real axis, so they have a lot further to go to get to the unit circle when feedback is added. I should really graph this out in MATLAB.

Sean Costello
seancostello
Posts: 74
Joined: Mon Sep 11, 2006 10:04 pm

Post by seancostello »

seancostello wrote:
Keith wrote:I have built all-AP reverbs though. The first Midiverb had a few as I recall. Very limited RT range, but also very interesting. I find the delays of a typical loop add a 'space' that all-APs cannot deliver, and a certain relief from tweaking AP delay lengths.
This makes sense to me, although it is hard to articulate why. Even though the allpasses have a flat frequency response, they still ring out with a certain echo pattern. Placing the allpasses in a loop, and increasing the feedback of the loop, will cause the ringing to be more apparent, as the poles of the allpasses will get closer to the unit circle. Having more delay space between the allpasses adds a bunch of "poles" that start off on the real axis, so they have a lot further to go to get to the unit circle when feedback is added. I should really graph this out in MATLAB.
I was just revisiting this thread, and I have a better answer to why adding delays add "space" to an allpass loop:

The feedforward path in an allpass filter will bypass the delay line, with a gain determined by the allpass coefficient. Cascade several allpass delays, and you will have some of the input signal passed through without any delays, with the amount determined by the allpass coefficients.

For example, with 4 allpass delays in series, with allpass coefficients of 0.7, you will have an undelayed signal at the output with a gain of 0.7^4 = 0.241.

If you put series allpass delays in a feedback loop, the resulting reverb is no longer allpass, and the feedforward signal can become VERY prominent. In the FV-1, feedback adds a delay of 1 sample, so the above cascade of 4 allpass delays would have the feedforward signal recirculating through the feedback loop, which will probably result in some unintended filtering, resonance, and coloration. By adding a "straight" delay inside the feedback system, the feedforward path will be delayed by the length of the straight delay, and result in less coloration.

Sean Costello
Post Reply