Dattorro reverb improvements

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

Well, if you sum it back to 1D (or throw away one of the components) then it's no longer spectrally white.
Yes of course and actually it's not a good idea, I was trying it and it coloured my reverb.
However I'm now feeding either a FDN or the figure 8 loop by this feed forward diffuser (but not mixing the output of the diffuser then) and I get a cool true stereo reverb with a shapable attack, that's super cool ! :)
Now I'm trying to see how I can smartly control the channel cross feeding, if ever it can enhance the stereo.
That sounds like Miller Puckette to me: http://msp.ucsd.edu/techniques/v0.11/bo ... de111.html
Thanks for sharing :tu:
The filters (typically one-poles) should be free on modern CPUs. The CPU cost boils down to the memory accesses and how well you take advantage of the cache. Whatever you do though, anything that has a core of say 6-16 delays (not counting diffusion) should be totally fine, CPU-wise. You could even use a lot more, but I doubt it will help perceptually.

Richard
If the CPU doesn't matter, then the fdn with 32 delaylines would be the late reverb component, better than the figure eight, the fdn produces a really dense noise, totally colorless.

Post

Louis Couka wrote: Wed Apr 21, 2021 3:43 pm If the CPU doesn't matter, then the fdn with 32 delaylines would be the late reverb component, better than the figure eight, the fdn produces a really dense noise, totally colorless.
It's really not that simple, because an FDN doesn't automatically produce a colorless tail. As a closed MIMO loop an FDN is lossless, sure.. but there's coloration at the input, there's coloration at the output and there are no guarantees that the modal distribution is even, so if modes cluster you can also have a ton of ringing. Because the modal clustering in particular is really hard to predict (and I would argue more so than in other types of reverbs), actually tuning an FDN to sound even half-decent is a rather tedious process.

There's also the question of whether "maximally diffuse" is even a good goal, as many interesting acoustic spaces are not "maximally diffuse" at all. A large cathedral sounds like a large cathedral because of all the pillars and balconies and side-passages and what not, that trap part of the sound and recirculate it locally, so that there are typically way more late "discrete" echoes than what a "maximally diffuse" model would produce. If you look at the IRs of many highly acclaimed vintage algoreverbs, you'll also notice that they are not necessarily all that dense, because even though the timedomain IR of a real-space might seem as if it's just noise, it really isn't.

This doesn't necessarily mean that FDNs are automatically bad (they are not), but they are certainly not a silver bullet and the design of a good sounding arficial reverb is a lot more complicated than just a simple matter of throwing enough CPU at the problem. Having more CPU to work with means it's easier to have more delay memory (= more total modal density) while keeping the individual delays shorter (= faster diffusion, typically), but it's really not what makes or breaks a reverb.

Post

There's also the question of whether "maximally diffuse" is even a good goal, as many interesting acoustic spaces are not "maximally diffuse" at all. A large cathedral sounds like a large cathedral because of all the pillars and balconies and side-passages and what not, that trap part of the sound and recirculate it locally, so that there are typically way more late "discrete" echoes than what a "maximally diffuse" model would produce. If you look at the IRs of many highly acclaimed vintage algoreverbs, you'll also notice that they are not necessarily all that dense, because even though the timedomain IR of a real-space might seem as if it's just noise, it really isn't.
For now, I'm seeing the synthesised reverb as a simple noise generator first, before considering getting some parameters as "Modal Density", or "Build Up Time", or whatever that could help to shape the reverb, which are totally legit, but which are in my opinion, too much artistically strong to be imposed. I'm also using my own experience having a little preference for plate algorithms which are in generally fast and dense. :) Which was also confirmed by feedback I got in several papers.
The problem is that the maths are not so much helping, as in fact the "simple neutral noise reverb" needs the heaviest structure. I would have prefer the opposite such you could have complexified the design progressively to add more shaping parameters.
I was also thinking about scalability with other target like surround 5.1, 7.1, thinking it could help to get a more generic view of the problem, but it doesn't help so much right now.

Post

Louis Couka wrote: Thu Apr 22, 2021 11:55 am For now, I'm seeing the synthesised reverb as a simple noise generator first, before considering getting some parameters as "Modal Density", or "Build Up Time", or whatever that could help to shape the reverb, which are totally legit, but which are in my opinion, too much artistically strong to be imposed.
I think you didn't quite understand. Modal density (= the number of poles) is simply a linear function of the system and unless you specifically want a ringy tail and/or repeating patterns as the RT60 is increased, higher modal density (ie. more delay in the loop) is more or less universally better (ie. not a user parameter, but rather something to maximize during the design of an algorithm), except as far as it makes it harder (for a fixed number of delays) to get reasonable diffusion and smooth buildup.

Post

Got it ! :tu:

Actually today I did some progress, I can achieve a really dense noise with only one feedforward diffuser and a householder matrix, so it's quite cheap to compute. And I get some cool params I can extract from this scheme, a density (or diffusion) control + some attack shaping controls that I didn't define really well for now.

I'm still wondering how I could extract some cross feedback parameters. My only idea for now is to duplicate 4 times the reverb processor to get each LL, LR, RL, RR individually such I can easily param them. But it's a bit overkill. :)
Surprisingly making a true stereo reverb is cheaper than a "separated channels" reverb as you can benefit from the MIMO structure to plug your multichannel signal directly on it. At the opposite of the convolution where you have to convolve twice if you want to feature the true stereo.

Post

Louis Couka wrote: Wed Apr 21, 2021 3:43 pm If the CPU doesn't matter, then the fdn with 32 delaylines would be the late reverb component, better than the figure eight, the fdn produces a really dense noise, totally colorless.
A FDN is far easier to get right in my opinion. Very robust against parameter changes of any kind, like changing delay lengths, or simply the reverb time. Some FDNs are robust even when changing the matrix size, i.e. the sound does not change much even though the impulse response is totally different.

When dealing with classic allpass loops, changing a delay or two often spoils the reverb completely, and you typically have to adapt many network parameters depending on the reverb time (*).

They can sound fantastic though! :)

Richard
(*) I suppose mystran either uses one of the very rare "magic" settings or has found an automatic way to set up the network properly, which would of course alleviate this issue.
Synapse Audio Software - www.synapse-audio.com

Post

I guess the two tools are complementary as anyway making a diffuser with an FDN is not that easy. :P (It should be possible actually as FDN handles any topology)
I remember in Turbo Verb from Melda Prod they was not liking so much FDN, from what I read from their manual. Saying it was a theorical tool, black box.

Finally I'm making one reverb instance per channel + cross feeding at strategic points, to true stereo. It seems to work great for now + Compatible design with surround, so everything is great. :tu:

Post

Louis Couka wrote: Fri Apr 23, 2021 12:55 pm I guess the two tools are complementary as anyway making a diffuser with an FDN is not that easy. :P (It should be possible actually as FDN handles any topology)
I remember in Turbo Verb from Melda Prod they was not liking so much FDN, from what I read from their manual. Saying it was a theorical tool, black box.

Finally I'm making one reverb instance per channel + cross feeding at strategic points, to true stereo. It seems to work great for now + Compatible design with surround, so everything is great. :tu:
Congrats- reverb is really tough, so making progress is always satisfying! :) :tu:

Quick remark about diffusion and FDN- it is actually very easy, and you can do this pre- or post-FDN, or even inside the FDN. Just make sure whatever you stick into the FDN is spectrally white. So basically the same rule as for allpass loops.

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

Post

mystran wrote: Wed Apr 21, 2021 10:34 pm There's also the question of whether "maximally diffuse" is even a good goal, as many interesting acoustic spaces are not "maximally diffuse" at all. A large cathedral sounds like a large cathedral because of all the pillars and balconies and side-passages and what not, that trap part of the sound and recirculate it locally, so that there are typically way more late "discrete" echoes than what a "maximally diffuse" model would produce. If you look at the IRs of many highly acclaimed vintage algoreverbs, you'll also notice that they are not necessarily all that dense, because even though the timedomain IR of a real-space might seem as if it's just noise, it really isn't.
Yep, this is my main gripes with FDNs, they are too perfect in a sense.

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

Post

Richard_Synapse wrote: Fri Apr 23, 2021 10:08 am (*) I suppose mystran either uses one of the very rare "magic" settings or has found an automatic way to set up the network properly, which would of course alleviate this issue.
Damping the all-pass filters directly makes the parameter problem largely go away, but I want to clarify that when I say "figure-8 is easier to tune" I don't necessarily mean the initial process of getting something half-decent going, but rather the fine-tuning part where you're trying to adjust the buildup of the tail and/or clean-up any ugly artifacts out of the tail.

Basically with FDNs as long as you pick some coprime delays (eg. by approximate golden ratio or whatever) and some sensible matrix (eg. fast Hadamard transform) you'll get something half-decent pretty much every time, but I find that turning a "half-decent" reverb into a "great" reverb is where FDN are just about the most annoying structure I can think of. YMMV.

As for magic, lately I've been experimenting with some structures that are a bit different from anything I've seen in the literature, but since I won't go into too much detail as I have no production quality results to show yet.

Post

hey,

I'm the guy who implemented the reverb you linked.
here's my two cents: (and my opinion may be wrong)
we perceive directionality much more via early reflections and direct source. The direct source's directionality can be taken care of by a panner or Haas effect, etc. The early reflection may be the issue here, as the J Dattorro's paper shows that the output taps are in the delays within the loop, and not the diffusers outside, before the loop.
I haven't tried this, but I would imagine if you tap (at "good spots") from those pre-loop delays (and move the mono summer to just before the loop), you may achieve some directionality from the early reflections.

Let me know if you have the chance to try this as I'm quite curious!

At the same time, if you are aiming for some sort of realism, maybe there are HRTFs you could apply in parallel with this reverb. That way, you get the sound to sound like it's in a room with you, but eventually wash out by this plate reverb (which is not "real")

Post

Greetings, colleagues!
I'll throw my twopence into this discussion. When I was developing my Ambient Reverb, the question also arose about creating true stereo reverb.
Since I live in nature, I often listen to sounds in space, and find some patterns. For example, when I let my dogs run around the neighborhood in the morning, I heard their barking and also an echo from it from the forest, so the idea came to my mind that if the sound source is localized in space from a certain side, then the echo will also be located from the same side. Therefore, I do not consider it good form to mix the reverberation received from the left channel into the output signal of the right and vice versa. Although I may be wrong.
I also want to draw attention to some psychoacoustic properties of hearing, which localize an auditory object in 3D space. Reflections can be not only on the right or on the left, but also on top or bottom, front or back. That's why I think it's worth adopting algorithms for sound distribution in 3D space and applying them to reverbs.

Post

vasyan wrote: Wed Oct 09, 2024 11:38 am Since I live in nature, I often listen to sounds in space, and find some patterns. For example, when I let my dogs run around the neighborhood in the morning, I heard their barking and also an echo from it from the forest, so the idea came to my mind that if the sound source is localized in space from a certain side, then the echo will also be located from the same side. Therefore, I do not consider it good form to mix the reverberation received from the left channel into the output signal of the right and vice versa. Although I may be wrong.
Any echo comes from the direction of the reflecting surface that creates the echo.

For simple spaces of simple geometry, you can work out some of the early reflections approximately by raytracing (ie. under the assumption that reflections are specular and diffraction is not a thing) and in an outdoor context you might only hear a few early echoes before most of the energy has spread so wide it might just as well not be there, but in an enclosed space eventually you'll have about the same amount of energy coming from each direction.

Mixing left and right in one way or another in an algorithmic verb is certainly an approximation, but it is a sensible approximation for enclosed spaces.

Post

mystran wrote: Wed Oct 09, 2024 12:31 pm Mixing left and right in one way or another in an algorithmic verb is certainly an approximation, but it is a sensible approximation for enclosed spaces.
I agree, however, in any enclosed space, for example, in a cathedral, the listener hears reflections from all over 3D space, not only from the right or left, but also from front and back, above and below. After all, you will agree that the recording of vocals made in stereo mode inside the cathedral space, when listening, clearly conveys the localization of reflections, and it is unlikely that any artificial reverberation method, which does not take into account the calculation of reflections in 3D space, will be able to convey the acoustics of the room so realistically.
That's where I'm racking my brain to calculate reflections taking into account their localization in 3D space.

Post Reply

Return to “DSP and Plugin Development”