History of allpass loop / "ring" reverbs?
Moderator: frank
-
- Posts: 74
- Joined: Mon Sep 11, 2006 10:04 pm
History of allpass loop / "ring" reverbs?
Hi:
I have been studying and implementing digital reverbs since the late 1990's. Most of the articles on digital reverbs have tended to discuss either Schroeder structures, or feedback delay networks (Puckette, Jot). Yet it seems like a large number of commercial reverbs are based around having several allpasses in a comb filter loop, with the reverb time determined by the gains within the loop, and the input signal diffused by series allpasses. In some implementations, the output is taken from the end of the comb loop, while in other instances, the output is taken from a number of weighted delay taps from within the loop (the input to the loop may also be injected at various points).
The example reverbs for the FV-1 appear to be based around this allpass loop topology, and the description at http://www.spinsemi.com/freeform/effect ... erberation is the best I have ever read about this technique.
My question is, when was this structure developed? Was it developed by one person and then passed on / reverse engineered, or was it developed in multiple places independently? I haven't been able to figure this out, as I have very few bits of "secret sauce" when it comes to reverb - most of what I have learned is from the published information, although I have picked up a few tidbits from trade shows.
Any info about the history of this structure would be greatly appreciated.
Regards,
Sean Costello
P.S. Here is a brief history of the allpass loop structure, from an outsider's (nerdy) perspective:
1972 - Michael Gerzon publishes algorithm techniques in Studio Sound, showing how a feedback delay network can be made allpass, and how allpass feedback delay networks can be embedded within larger feedback delay networks. The 2-part article can be viewed as a theoretical basis of the allpass loop designs (as well as feedback delay networks), but doesn't seem to have been read by many people. David Griesinger cites this paper, and I know Christopher Moore read it post-SST design (my scan of the article has "Property of Christopher Moore" stamped on it).
1978? - Lexicon 224 released, with algorithms by David Griesinger. Presumably this uses the allpass loop topology - see Dattorro info.
1992 - Bill Gardner publishes master's thesis, where he describes reverbs based around allpasses within comb loop, with taps taken out from delay line. Gardner alludes to fact that this technique was something he picked up working within industry, possibly Kurzweil.
1995 - Jon Dattorro writes internal documentation for Ensoniq ESP2 chip, describing a plate reverb topology based upon allpass loops. The initial topology was based upon reverse engineering a Lexicon 224, according to another Ensoniq engineer.
1997 - Dattorro publishes work from internal document in Journal of Audio Engineering Society, complete with delay line lengths. Lawsuit commences, which is ultimately settled in Dattorro's favor.
I have been studying and implementing digital reverbs since the late 1990's. Most of the articles on digital reverbs have tended to discuss either Schroeder structures, or feedback delay networks (Puckette, Jot). Yet it seems like a large number of commercial reverbs are based around having several allpasses in a comb filter loop, with the reverb time determined by the gains within the loop, and the input signal diffused by series allpasses. In some implementations, the output is taken from the end of the comb loop, while in other instances, the output is taken from a number of weighted delay taps from within the loop (the input to the loop may also be injected at various points).
The example reverbs for the FV-1 appear to be based around this allpass loop topology, and the description at http://www.spinsemi.com/freeform/effect ... erberation is the best I have ever read about this technique.
My question is, when was this structure developed? Was it developed by one person and then passed on / reverse engineered, or was it developed in multiple places independently? I haven't been able to figure this out, as I have very few bits of "secret sauce" when it comes to reverb - most of what I have learned is from the published information, although I have picked up a few tidbits from trade shows.
Any info about the history of this structure would be greatly appreciated.
Regards,
Sean Costello
P.S. Here is a brief history of the allpass loop structure, from an outsider's (nerdy) perspective:
1972 - Michael Gerzon publishes algorithm techniques in Studio Sound, showing how a feedback delay network can be made allpass, and how allpass feedback delay networks can be embedded within larger feedback delay networks. The 2-part article can be viewed as a theoretical basis of the allpass loop designs (as well as feedback delay networks), but doesn't seem to have been read by many people. David Griesinger cites this paper, and I know Christopher Moore read it post-SST design (my scan of the article has "Property of Christopher Moore" stamped on it).
1978? - Lexicon 224 released, with algorithms by David Griesinger. Presumably this uses the allpass loop topology - see Dattorro info.
1992 - Bill Gardner publishes master's thesis, where he describes reverbs based around allpasses within comb loop, with taps taken out from delay line. Gardner alludes to fact that this technique was something he picked up working within industry, possibly Kurzweil.
1995 - Jon Dattorro writes internal documentation for Ensoniq ESP2 chip, describing a plate reverb topology based upon allpass loops. The initial topology was based upon reverse engineering a Lexicon 224, according to another Ensoniq engineer.
1997 - Dattorro publishes work from internal document in Journal of Audio Engineering Society, complete with delay line lengths. Lawsuit commences, which is ultimately settled in Dattorro's favor.
reverb algorythm development & history
Sean:
Don't know much about the history, but have spent years developing commercial reverbs.
The first reference to all passes I recall was an AES issue that detailed Schroeder's work, a terrible sounding algorythm as described. The tinny sound of the MXR reverb (my work) suffered from this problem. Other early reverbs also suffered from this limited structure (Nichols). Including all pass filters within the comb loops came next (in my work), which definately improved density build, but I was having coding difficulties in the early years with multiple APs in a loop.
It only makes sense though, that the inclusion of multiple APs in a delay loop will improve density, which in my case, was finally worked out with my Midiverb, and other later Alesis products. Finally, the summation of multiple regenerated delays, with APs included, leads to excessive peaking at certain frequencies... Making the reverb a single loop solves the problem.
I've found that once you're in the single loop, multiple AP arena, you can make just about anything that has a good tail, reletively flat response, and as much final density as you like. Everything I write today is single loop, with modifications as to input signal injection and output tap selection.
You makin' a product, or are you just interested in the history? From my point of view, it's the guys that worked at Lexicon that made it all happen, although there were some simultaneous discoveries... It is the all pass though, that takes the credit!
Keith
Don't know much about the history, but have spent years developing commercial reverbs.
The first reference to all passes I recall was an AES issue that detailed Schroeder's work, a terrible sounding algorythm as described. The tinny sound of the MXR reverb (my work) suffered from this problem. Other early reverbs also suffered from this limited structure (Nichols). Including all pass filters within the comb loops came next (in my work), which definately improved density build, but I was having coding difficulties in the early years with multiple APs in a loop.
It only makes sense though, that the inclusion of multiple APs in a delay loop will improve density, which in my case, was finally worked out with my Midiverb, and other later Alesis products. Finally, the summation of multiple regenerated delays, with APs included, leads to excessive peaking at certain frequencies... Making the reverb a single loop solves the problem.
I've found that once you're in the single loop, multiple AP arena, you can make just about anything that has a good tail, reletively flat response, and as much final density as you like. Everything I write today is single loop, with modifications as to input signal injection and output tap selection.
You makin' a product, or are you just interested in the history? From my point of view, it's the guys that worked at Lexicon that made it all happen, although there were some simultaneous discoveries... It is the all pass though, that takes the credit!
Keith
-
- Posts: 74
- Joined: Mon Sep 11, 2006 10:04 pm
Hi Keith,
Thanks for the reply! I am mostly interested in the history of such algorithms. I have developed a lot of different reverb algorithms, but as far as I know, none of them have made it into a product (I work for a DSP manufacturer, that does not have a primary focus on MI audio).
Interesting observation about the multiple parallel loops causing coloration. I had similar results when combining several loops with multiple taps from each loop. My analogy is having several spoked wheels, all of different sizes, speeds, and number of spokes, interlocking. At some point the spokes will jam, which results in unpleasant resonances. Combining loops with a unitary matrix, where each loop only contributes energy from a fixed point, seems to help out a lot, but that is more in the FDN camp.
I am still curious about how much parallel discovery there was, versus reverse engineering, and lore passed from engineer to engineer.
Sean Costello
Thanks for the reply! I am mostly interested in the history of such algorithms. I have developed a lot of different reverb algorithms, but as far as I know, none of them have made it into a product (I work for a DSP manufacturer, that does not have a primary focus on MI audio).
Interesting observation about the multiple parallel loops causing coloration. I had similar results when combining several loops with multiple taps from each loop. My analogy is having several spoked wheels, all of different sizes, speeds, and number of spokes, interlocking. At some point the spokes will jam, which results in unpleasant resonances. Combining loops with a unitary matrix, where each loop only contributes energy from a fixed point, seems to help out a lot, but that is more in the FDN camp.
I am still curious about how much parallel discovery there was, versus reverse engineering, and lore passed from engineer to engineer.
Sean Costello
Sean:
Sorry I can't help more. I wrote the article on the website you cited, and it's the result of my experimentation; be advised, filters (HP and LP) within the loop greatly enhance the 'naturalness', if that's what you're looking for.
It's the all-pass that does it. Everything comes from the flat response and complex impluse response of the all-pass. Tapped delays will cause great difficulty, becuase of their non-flat nature. To be used for an initial response, OK, but with feedback? Yuk!
Sorry I can't help more.
Again, are you coding, or studying history?
Keith
Sorry I can't help more. I wrote the article on the website you cited, and it's the result of my experimentation; be advised, filters (HP and LP) within the loop greatly enhance the 'naturalness', if that's what you're looking for.
It's the all-pass that does it. Everything comes from the flat response and complex impluse response of the all-pass. Tapped delays will cause great difficulty, becuase of their non-flat nature. To be used for an initial response, OK, but with feedback? Yuk!
Sorry I can't help more.
Again, are you coding, or studying history?
Keith
Sean:
Sorry, I just replied to your first message; I'm new to this forum stuff.
As a suggestion, think of two taps on a delay, summed to an output; this will cause certain frequencies to reinforce where the delay between the taps causes the two outputs to be in phase, canceling when the phase relationship is opposite. in the case of two taps, the response will be a comb, and the gain of the peaks will be 2X, or 6dB. now imagine 3 taps, with only certain frequencies reaching the peak gain of 3X... If many taps are taken (all with equal weights), only a few frequencies will show reinforcement from all of the taps simultaneously, but the peak gain at these frequencies will be quite pronounced. In a loop, such a tapped delay will end up only producing those peaked frequencies as an output, since the recirculation will reinforce just those peaks.
As for history, I once watched the impulse response of a 224 on a scope, moved a few sliders and realized what they were doing. Did that influence my choices? Maybe, but I'm still discovering. In particular, lately, my emphasis is on just how little is involved to get a good sounding reverb; it turns out to be near-trivial. The FV-1 can do a decent reverb in maybe 20 instructions. From the algorithms I hear from other products, it appears that the best algorithms are still not widely known.
From my perspective, the nut has been fully cracked; the secret is psychoacoustics; we're simply not equipped to deconvolve the return from an ambient space with any precision!
What's FDN?
KB
Sorry, I just replied to your first message; I'm new to this forum stuff.
As a suggestion, think of two taps on a delay, summed to an output; this will cause certain frequencies to reinforce where the delay between the taps causes the two outputs to be in phase, canceling when the phase relationship is opposite. in the case of two taps, the response will be a comb, and the gain of the peaks will be 2X, or 6dB. now imagine 3 taps, with only certain frequencies reaching the peak gain of 3X... If many taps are taken (all with equal weights), only a few frequencies will show reinforcement from all of the taps simultaneously, but the peak gain at these frequencies will be quite pronounced. In a loop, such a tapped delay will end up only producing those peaked frequencies as an output, since the recirculation will reinforce just those peaks.
As for history, I once watched the impulse response of a 224 on a scope, moved a few sliders and realized what they were doing. Did that influence my choices? Maybe, but I'm still discovering. In particular, lately, my emphasis is on just how little is involved to get a good sounding reverb; it turns out to be near-trivial. The FV-1 can do a decent reverb in maybe 20 instructions. From the algorithms I hear from other products, it appears that the best algorithms are still not widely known.
From my perspective, the nut has been fully cracked; the secret is psychoacoustics; we're simply not equipped to deconvolve the return from an ambient space with any precision!
What's FDN?
KB
-
- Posts: 74
- Joined: Mon Sep 11, 2006 10:04 pm
FDN = Feedback Delay Network.
A feedback delay network is the term usually used to describe a bunch of delay lines in parallel, that are combined via a matrix, and the output of the matrix fed back into the intputs. Miller Puckette and John Stautner have generally been credited with first publishing this type of algorithm in 1982, with Jean-Marc Jot expanding on the concept in the early 1990's.
However, feedback delay networks were first described by Michael Gerzon in 1971 and 1972, but the publication that Gerzon published in (Studio Sound) was not very common in the US at the time, so Puckette/Stautner and Jot tend to get the credit for the discovery. Gerzon's original papers are pretty amazing (feel free to PM me if you want copies).
With the basic feedback delay networks, you can get a very good sound with a minimum of work, provided you know the tricks. 16 parallel delay lines, combined with a Hadamard matrix and sent back into the inputs, creates a nice, dense sound with very little coloration.
The problem with feedback delay networks is the cost of performing the matrix computations, as well as the memory allocations needed to compute the matrix. A 16x16 feedback matrix can take 256 computations if done brute force; by using various tricks, you can get the cost down, but you will need at least 64 MAC operations (N*log2(N)) to create a matrix that is fully diffusive. In addition, you need to keep the outputs of the matrix around in order to work with them, which can eat up memory space. On the FV-1, this would use up at least 16 of the 32 registers. Using an allpass loop, or a feedback delay network with fewer branches but more density in each branch, is a good idea in this case.
Having said this, there is a generalized matrix representation of reverberation structures, where you have separate matrices for the inputs (feedforward), the feedback between the delays, and the outputs. With these 3 matrices (I might be missing one or two matrices, but whatever), you theoretically can express ANY reverberator structure - Schroeder, allpass ring, Ursa Major Space Station, what have you. For an allpass ring, the feedback and feedforward matrices would be rather sparse, with a lot of zeros, and "triagular" sections representing the feedback and feedforward for the allpass sections. This is pretty nifty if you have a lot of math skills and want to have a strong theoretical analysis of your reverb structure. If you have crappy math skills, like I do, you can ignore most of the deep matrix algebra, and just choose a few good unitary systems that you can plug together like Legos.
Thanks for the info about watching the impulse response of the 224 on a scope! That is pretty much what I have done to learn about reverbs - that, and track down every paper I can find. I am also finding that my good sounding algorithms are getting simpler and simpler.
Sean Costello
A feedback delay network is the term usually used to describe a bunch of delay lines in parallel, that are combined via a matrix, and the output of the matrix fed back into the intputs. Miller Puckette and John Stautner have generally been credited with first publishing this type of algorithm in 1982, with Jean-Marc Jot expanding on the concept in the early 1990's.
However, feedback delay networks were first described by Michael Gerzon in 1971 and 1972, but the publication that Gerzon published in (Studio Sound) was not very common in the US at the time, so Puckette/Stautner and Jot tend to get the credit for the discovery. Gerzon's original papers are pretty amazing (feel free to PM me if you want copies).
With the basic feedback delay networks, you can get a very good sound with a minimum of work, provided you know the tricks. 16 parallel delay lines, combined with a Hadamard matrix and sent back into the inputs, creates a nice, dense sound with very little coloration.
The problem with feedback delay networks is the cost of performing the matrix computations, as well as the memory allocations needed to compute the matrix. A 16x16 feedback matrix can take 256 computations if done brute force; by using various tricks, you can get the cost down, but you will need at least 64 MAC operations (N*log2(N)) to create a matrix that is fully diffusive. In addition, you need to keep the outputs of the matrix around in order to work with them, which can eat up memory space. On the FV-1, this would use up at least 16 of the 32 registers. Using an allpass loop, or a feedback delay network with fewer branches but more density in each branch, is a good idea in this case.
Having said this, there is a generalized matrix representation of reverberation structures, where you have separate matrices for the inputs (feedforward), the feedback between the delays, and the outputs. With these 3 matrices (I might be missing one or two matrices, but whatever), you theoretically can express ANY reverberator structure - Schroeder, allpass ring, Ursa Major Space Station, what have you. For an allpass ring, the feedback and feedforward matrices would be rather sparse, with a lot of zeros, and "triagular" sections representing the feedback and feedforward for the allpass sections. This is pretty nifty if you have a lot of math skills and want to have a strong theoretical analysis of your reverb structure. If you have crappy math skills, like I do, you can ignore most of the deep matrix algebra, and just choose a few good unitary systems that you can plug together like Legos.
Thanks for the info about watching the impulse response of the 224 on a scope! That is pretty much what I have done to learn about reverbs - that, and track down every paper I can find. I am also finding that my good sounding algorithms are getting simpler and simpler.
Sean Costello
here`s wondering about how it`d sound,
when the allpass(-es) used in above mentioned designs
weren`t of a FIX nature,
but "MOVING" (modulated) ?
either very slow (V-LFO),
or random...
the other question arises:
what if not an "ordinary" allpass is being inserted in the feedback path,
but "half a DOME"-filter (wideband phase-shifter),
whose output would never be in-phase, nor outphase with the input-signal,
so there wouldn`t be cancellation or reinforcement at certain frequencies?
[ponderings of an analog veteran...
]
when the allpass(-es) used in above mentioned designs
weren`t of a FIX nature,
but "MOVING" (modulated) ?
either very slow (V-LFO),
or random...
the other question arises:
what if not an "ordinary" allpass is being inserted in the feedback path,
but "half a DOME"-filter (wideband phase-shifter),
whose output would never be in-phase, nor outphase with the input-signal,
so there wouldn`t be cancellation or reinforcement at certain frequencies?
[ponderings of an analog veteran...
![Wink :wink:](./images/smilies/icon_wink.gif)
-
- Posts: 74
- Joined: Mon Sep 11, 2006 10:04 pm
Most of the above mentioned designs use modulated delay lines in the allpasses, so you can listen to the results. It can be hard to tell whether the modulation is very slow versus random when listening to a reverb, due to the modulation being further diffused by the allpasses that follow the modulation in the loop. Sometimes you can hear the characteristic sinusoidal modulation in the decay (this is audible in some of the Creative Labs Audigy reverbs).
In general, modulated delay lines within a reverb helps to spread out the perceived resonances (or eigentones). If you look at yer average reverb structure, the resonances are further apart then in a real room or hall, due to the limitations placed on delay memory (the number of resonances directly corresponds to the length of the delay lines). Modulation helps to "blur" these resonances, such that there are less perceived holes between them. Think of the structure as a picket fence; modulation makes the pickets less defined, and blurred around the edges, such that they are closer to touching each other.
Another way of looking at the benefits of modulation would be Keith's above explanation of the cancellation between taps. Modulation can be used to make the effective delay between taps time-varying, such that the cancellation frequency is constantly changing around, and therefore less noticable.
Modulating the allpass coefficient of a delay allpass is not as effective. It reduces the overall diffusion that a given allpass adds to the system, and can result in a sound much like banging a metal pot full of water.
Half a dome filter would just result in some shifting of the resonances, but would not necessarily improve or decrease the sound quality. A bunch of allpasses in series will simply shift the frequencies at which there will be cancellation or reinforcement.
Sean Costello
In general, modulated delay lines within a reverb helps to spread out the perceived resonances (or eigentones). If you look at yer average reverb structure, the resonances are further apart then in a real room or hall, due to the limitations placed on delay memory (the number of resonances directly corresponds to the length of the delay lines). Modulation helps to "blur" these resonances, such that there are less perceived holes between them. Think of the structure as a picket fence; modulation makes the pickets less defined, and blurred around the edges, such that they are closer to touching each other.
Another way of looking at the benefits of modulation would be Keith's above explanation of the cancellation between taps. Modulation can be used to make the effective delay between taps time-varying, such that the cancellation frequency is constantly changing around, and therefore less noticable.
Modulating the allpass coefficient of a delay allpass is not as effective. It reduces the overall diffusion that a given allpass adds to the system, and can result in a sound much like banging a metal pot full of water.
Half a dome filter would just result in some shifting of the resonances, but would not necessarily improve or decrease the sound quality. A bunch of allpasses in series will simply shift the frequencies at which there will be cancellation or reinforcement.
Sean Costello
-
- Posts: 74
- Joined: Mon Sep 11, 2006 10:04 pm
BTW, I do hope to port my Csound Dome filter (phase differencing, or Hilbert network) to the FV-1 once I get the development kit. Keith Barr has the code for a 6th order network in the Informal Notes section. Mine would be 12th order, but it remains to be seen how accurate the network will be, due to the coefficient quantization. I will presumably use the registers for the memory, in order to grab those extra 5 bits of resolution for the multipliers.
Sean Costello
Sean Costello
is this true also for "staggered" allpasses,A bunch of allpasses in series will simply shift the frequencies...
like (in the analog world) so-called "univibed" allpasses?
(which in fact is what I called: "half a Dome"; i.e.: 1 branch...)
thanks a lot, anyway, for your explanation!
(didn`t know, that the allpasses in the dig. reverb were modulated;
I thought only the "pure" delaytime was being moved...).
![Smile :)](./images/smilies/icon_smile.gif)
-
- Posts: 74
- Joined: Mon Sep 11, 2006 10:04 pm
It is hard to say. Allpasses in the feedback loop of a delay will do SOMETHING, but what they do depends not just on the allpasses, but on what follows them in the feedback loop. For these allpass ring reverberators, the delay-based allpasses have such a dramatic effect on the phase of the signal going through them, that a small number of 1st order allpasses in the loop will not have much of a predictable audible effect.puretube wrote:is this true also for "staggered" allpasses,A bunch of allpasses in series will simply shift the frequencies...
like (in the analog world) so-called "univibed" allpasses?
(which in fact is what I called: "half a Dome"; i.e.: 1 branch...)
If you are talking about a single delay line in series with first order allpass filters and feedback around that system, the effects can be far more pronounced. I have done spring reverb simulations in this way (I had to use a few hundred 1st order allpasses, though).
Time varying 1st order allpasses will also have a noticable effect in most systems, depending on where the coefficients are modulated. In addition, a fixed 1st order allpass can be used to obtain a fixed fractional delay length, which might be useful.
Sean Costello
Re: History of allpass loop / "ring" reverbs?
This link is broken; any way to unbroken it?seancostello wrote:The example reverbs for the FV-1 appear to be based around this allpass loop topology, and the description at http://www.spinsemi.com/freeform/effect ... erberation is the best I have ever read about this technique.
Edit: After looking around it looks like lots of info was on a "Freeform" section thats now unavailable. Is theis info somewhere we can see it?
Thanks!
-
- Posts: 131
- Joined: Sun Nov 15, 2009 3:37 pm
- Location: New Orleans, LA US
I believe "freeform" is now the Knowledge Base:
http://www.spinsemi.com/knowledge_base.html
So the reverb section is here:
http://www.spinsemi.com/knowledge_base/ ... erberation
http://www.spinsemi.com/knowledge_base.html
So the reverb section is here:
http://www.spinsemi.com/knowledge_base/ ... erberation
Old thread I realize but
Hope this helps any future readers who happen to wander here.
For anyone interested, here is the full article by Michael Gerzon as it appeared in Studio Sound, its been spliced together, rotated etc for easier reading/printing: Microsoft OneDrive | Mirror (Google Drive)seancostello wrote: 1972 - Michael Gerzon publishes algorithm techniques in Studio Sound, showing how a feedback delay network can be made allpass, and how allpass feedback delay networks can be embedded within larger feedback delay networks. The 2-part article can be viewed as a theoretical basis of the allpass loop designs (as well as feedback delay networks), but doesn't seem to have been read by many people.
Hope this helps any future readers who happen to wander here.
Last edited by giroserex on Tue Jun 18, 2019 3:02 pm, edited 2 times in total.