Reverb

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

matt42 wrote:I got close to a decent design at one time. The main problem I had was related to density. I could get it sounding great on a vocal, for example, but on drums with super sharp transients the lack of density caused a grainy sound that almost sounded like some kind of distortion (it wasn't distorted). Increasing the density I could get the drums to sound bad ass, but then the vocals would suffer metalic ringing artifacts. I couldn't win. I guess thats why a lot of reverbs add a density control.
In my experience the solution to this problem typically involves adding more delay memory (for higher modal density; this would assume that you've already figured out how to get nearby modes to decay at the same rate, otherwise adding more modes hardly does anything). Unfortunately this tends to lead to (much) more processing cost if you also want to keep the density buildup intact (which implies that you don't just make all your delays longer).

Post

Thanks for the reply, mystran.
mystran wrote:this would assume that you've already figured out how to get nearby modes to decay at the same rate, otherwise adding more modes hardly does anything
That's interesting, I wonder how to go about influencing the modal decay rates?

Post

mystran wrote:
syntonica wrote:
j_e_g wrote:Here's my version of Martin Eastwood's GPL MVerb. In the "Simple" folder is a very basic command-line app showing how to use the code. I modified the MVerb code to also compile for Linux, as well as support both interleaved and noninterleaved buffers, and other datatypes besides float.
Awesome! Thank you! I'll be picking this apart later this weekend to see how it ticks.
This type of all-pass loop (or something very similar) is probably the easiest type of reverb to tune if you want something reasonably decent. It's easy to add more sections and depending on how you set the delay lengths you can get a fairly large palette of different sounds. The parameters are also fairly easy to tune compared (emphasis on compared, because no reverb is really easy to tune, this type is just easier) to many other topologies often suggested (eg. FDN is terrible). Finally, it plays very nicely with modulation if you are into that kind of thing.

That said, don't expect a production quality reverb to come easy (or cheap). Building one that sounds even reasonably competitive takes a ridiculous amount of work, most of which involves trying to tweak the numbers of a terrible sounding algorithm in order to make it sound a little less terrible, iteratively, until you grow a gray beard or give up. ;)

Essentially, having a good structure is important, but the bulk of the "magic" of a reverb is really in how the parameters are setup and tuned. For all practical purposes it's like sound design work, except your "instrument" is complex and non-intuitive and the "sweet spots" are practically non-existent. :D
That is some good advice. I also agree that the Keith Barr 'loop' is the easiest to tune for reasonable results although I did have some tap-sloping issues, and FDNs are a PITA but can have good results too.

There isn't that much math involved(except maybe for FDNs), it's basically just time and labor. I would suggest to put some time in to optimize your prototyping environment so that you can test ideas as fast as possible(you don't want to recompile just to flip the polarity of a tap) or use a prototyping environment like the scripting in Reaper or Max or Reaktor or whatever. I also suggest to try as much typologies as you can find, not necessarily to make your reverb but to train your ears, if something happens that you don't like, you actually can figure out why and try to avoid it in future. Be prepared to fail miserably a number of times, it's part of the experience!

Lastly remember that there is no 'good/perfect' reverb, just a selection of decent reverbs that deliver certain tasks in a certain way. Subjectively if I look at the classics like Yamaha SPX (low echo density, slightly ringy, great localization), TC (good at 'real' rooms, an 'invisible'-type verb), Lexicon (thick and lush, not great localization), Eventide(unreal effected reverbs, great at godzilla-type soundscapes) etc etc. I mainly mix rock/goth/metal which doesn't use a lot of reverb to begin with so my SPX is my go-to, it actually doesn't sound great in isolation but fits great into a mix. I demoed some Lexicons(hardware and software) in the past and just couldn't gel with it, it just takes up too much space in the mix (on recorded instruments), it's great for electronic stuff though. It's highly subjective, as long as the reverb doesn't motorboat and not too resonant, somebody might like it.

Good Luck!

Post

mystran wrote:This type of all-pass loop (or something very similar) is probably the easiest type of reverb to tune if you want something reasonably decent. It's easy to add more sections and depending on how you set the delay lengths you can get a fairly large palette of different sounds. The parameters are also fairly easy to tune compared (emphasis on compared, because no reverb is really easy to tune, this type is just easier) to many other topologies often suggested (eg. FDN is terrible). Finally, it plays very nicely with modulation if you are into that kind of thing.
While I love reverbs based on allpass loops, from my experience few designs sound good, i.e. there seems to be very few sweet spots. In contrast with FDNs I have a rather good experience, i.e. most unitary matrices seem to sound good and do not exhibit strong ringing or metallic sound. Even non-unitary matrices can sound reasonable, they just require more work to prevent them from blowing up. Furthermore controlling the overall reverb time and envelope seems to be a lot easier with FDNs.
mystran wrote:That said, don't expect a production quality reverb to come easy (or cheap). Building one that sounds even reasonably competitive takes a ridiculous amount of work, most of which involves trying to tweak the numbers of a terrible sounding algorithm in order to make it sound a little less terrible, iteratively, until you grow a gray beard or give up. ;)
+1

Richard
Synapse Audio Software - www.synapse-audio.com

Post

Richard_Synapse wrote:Furthermore controlling the overall reverb time and envelope seems to be a lot easier with FDNs.
I don't really understand this. While some legacy designs might have used lumped damping for efficiency, in a modern all-pass loop you can simply replace each delay (inside the all-pass filters) with damped versions and then you have the exact same decay control (calculated in exactly the same way) as found in a text-book FDN.

Post

mystran wrote:I don't really understand this. While some legacy designs might have used lumped damping for efficiency, in a modern all-pass loop you can simply replace each delay (inside the all-pass filters) with damped versions and then you have the exact same decay control (calculated in exactly the same way) as found in a text-book FDN.
I refer to allpass loops strictly as a legacy design with global feedback as in the Dattoro paper (i.e a single feedback control which controls the overall reverberation time, by feeding back the output into the reverb input), popularized by the early high-end reverberators from the late 70s and early 80s. All other topologies with local feedback are FDN to me, with a few exceptions that fit neither kind.

Richard
Synapse Audio Software - www.synapse-audio.com

Post

FWIW there might be something of interest here: https://github.com/ValdemarOrn/CloudSeed

And I'd agree with the sentiment that no reverb in a VSTi is waaay better than a crappy reverb, so please, if you're gonna do it do it properly :) :tu:

Post

Richard_Synapse wrote:I refer to allpass loops strictly as a legacy design with global feedback as in the Dattoro paper (i.e a single feedback control which controls the overall reverberation time, by feeding back the output into the reverb input), popularized by the early high-end reverberators from the late 70s and early 80s. All other topologies with local feedback are FDN to me, with a few exceptions that fit neither kind.
Right, well I generally refer to something more like this:

https://ccrma.stanford.edu/~lukedahl/pd ... fx2000.pdf

If one wanted to read only a single paper on reverbs, I think this would be the one I would recommend, because it's the one that most immediately leads to something that is both easy to tune and sounds good (where as the classic FDN papers will lead you nowhere).

ps. I'd like to make the observation that the "late reverb network" in Figure 4 of the above paper is essentially nothing more than a variation of the good old Datorro-style figure-8 design with a "modern" (ie. predictable) damping strategy.

Post

mystran wrote:
Richard_Synapse wrote:I refer to allpass loops strictly as a legacy design with global feedback as in the Dattoro paper (i.e a single feedback control which controls the overall reverberation time, by feeding back the output into the reverb input), popularized by the early high-end reverberators from the late 70s and early 80s. All other topologies with local feedback are FDN to me, with a few exceptions that fit neither kind.
Right, well I generally refer to something more like this:

https://ccrma.stanford.edu/~lukedahl/pd ... fx2000.pdf

If one wanted to read only a single paper on reverbs, I think this would be the one I would recommend, because it's the one that most immediately leads to something that is both easy to tune and sounds good (where as the classic FDN papers will lead you nowhere).

ps. I'd like to make the observation that the "late reverb network" in Figure 4 of the above paper is essentially nothing more than a variation of the good old Datorro-style figure-8 design with a "modern" (ie. predictable) damping strategy.
I guess this structure is somewhere in between the classic allpass loop and FDN, since it is based on a unitary feedback matrix already (albeit a simple one). The same idea can be used in larger networks, 4x4, 8x8 etc. however, i.e. simply sticking in allpass filters into the delay elements of the FDN. So I view it more as FDN, and yes the calculation then becomes simple, whereas the classic global-feedback loop behaves somewhat quirky with the somewhat large allpass delay lengths (ihmo).

Either way, just about any structure can sound great, though usually 99.9% sound crap :cry:

Richard
Synapse Audio Software - www.synapse-audio.com

Post

Dense pseudo-random reverb tail is easy to get: use many parallel Hadamard matrix FDNs at equal output gain. Each FDN is initalized with a random delayline length. Produces perfect white noise tail. Nothing to look for beyond this, can't get any better reverb tail.
Image

Post

While you may be right, technically, I hardly agree that "white noise" is the most pleasing reverb character.

Post

camsr wrote:While you may be right, technically, I hardly agree that "white noise" is the most pleasing reverb character.
After early reflections the reverb tail is white noise, it's how all rooms "work". Of course, you have to add frequency-dependent dampening, but it is still a white noise. If it's not a white noise you'll surely get a rattling effect on sharp transients which is worse. In other cases it may be a metallic sound.
Image

Post

A small room has such an effect. (Rattling.) The real issue is the poor quality of simple filters to model the interaction of multiple elements with different materials or complex (not flat / nonplanar) surfaces. All very related to attempts at photo-realistic 3d rendering and lighting/shadow techniques.

The vast majority of rooms wont produce nearly the number of reflections needed to approximate gaussian noise as the decay to -40 dB is usually less than approximately ten reflections.

(If you think about it: a ray-tracer with only the peak reflection path will produce awful results as the diffuse reflections and complex behavior of surfaces are far more important.)

The issues in delay-line reverberations are almost entirely due to utilizing completely unrealistic damping (almost mirror-like reflections) to achieve long decay lengths with minimal buffers and processing.

I think it's very unfortunate that the common aim has been to synthesize so many phases that the signal becomes "noise" rather than attempting to re-create genuine spaces.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

Flutter echo can be a powerful effect if it is tuned to the usage. Reverb tails are usually more diffuse than what comes before them, which is simply the result of random incidence over time. I think what reverb simulation lacks might be a symptom of the 1d processing that is audio. In a real space, there is sound traveling at the listener and everywhere else also.

Post

It is possible to utilize modern statistical rendering techniques to generate a delay line + filter net that could approximate a complex 3d space + material properties to the desired accuracy. Might be a fun project to do via CUDA or similar where the network would need to be recomputed every time the signal source, listener or environment changes.

The real fun would be in generating impulse responses to use in convolution reverb though for efficiency reasons as I suspect rendering the IR through such a network would be a hugely intensive process.

Such "realistic" modeled networks would most likely be far more expensive to compute (AKA not real-time) than most of the existing synthetic reverb solutions available today.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post Reply

Return to “DSP and Plugin Development”