Reverbs creation


#41

ah ok, I found a page with explanation, so I'll give that a look next week (now busy on something else)


#42

When I load that patch it complains I'm missing the pitchshifters, where do I get them?


#43

Perhaps you need to do a library sync? ("File" menu -> "Sync Libraries")


#44

Yeah, looking at that, there's still no sss/ folder, don't see it on Github (axoloti-contrib) either?! Maybe I've misunderstood how this works.

(I'm tracking the master branch of both main Axoloti and the library BTW)


#45

Ah, switched to 1.0.10 branch for -contrib and there they are..


#46

Hm, need to make a quick control surface for this and dedicate a loti to it methinks. It's very nice.


#47

I stumbled across this old thread and, thanks to all the info that was posted here I managed to finally wrap my head around reverb algorithms and create my own from scratch. (wow, that Tom Erbe video was great!)

I added a modulateable Schroeder allpass (that still needs some work to be complete) with configurable position (internal RAM, external RAM) and interpolation (none, 2pt, 3pt).

But most importantly: I added a reverb. Takes 25% CPU with 2pt interpolation, 29% with 3pt interpolation. And it sounds pretty good to my ears. Still not quite "BlueSky" quality, though.

Find it in the community library: TSG/fx/reverb.axs. There is a help file with some sound examples.


#48

just saw this thread and now I will order 2 Axos when they're available again. Those reverbs sound fantastic!


#49

I've seen some modulatable allpasses in jha/filters :slight_smile: .
I didn't tried them yet.

Modulable allpass filters are part of solution to the "metallic ringing" issues. And they are the building blocks of so called "chorusing reverbs"...


#50

@SmashedTransistors

If you want to make reverbs, you should use TSG/filter/allpass m... That is the best one of the ones in community library. All the other allpass filters use Sram... Which is a big issue when making reverbs, cause you need a bunch of them... With the ones form the factory library you will very quickly run out of Sram... I think you can load maybe 8 of them with a delay set to 1000 samples... And then you dont have any sram for anything else... So definatly not recommended

But TSG's all pass can load serious amounts :slight_smile: And sounds super smooth and has got 2 types of interpolation. Its called TSG/filter/allpass m


#51

Yeah TSG's allpass is bee's knees!


#52

Yeah since it is the only one that uses SDRAM it is the only really usable one for making reverbs.

I just want to ad that I have also added a version of the factory allpass that uses SDRAM. So there are now more than one option to use allpasses form SDRAM.


#53

It's really good ! Thanks for the info @jaffasplaffa :yum:


#54

Want to share with you one of the dopest threads about reverbs


#55

Also want to share one of my particular interests in reverb creation. I would like to build something capable of freezing aural state, something in style of Quantec QRS freezing.
There was an example in SYROBONKERS interview where Richard James was interviewed by Dave Noyze

Audio will expire tomorrow


#56
Want to share with you one of the dopest threads about reverbs

Thank you for this link - I just started reading. It's very interesting!


#57

This pdf is also very good imo.

Also just stumbled upon this VST reverb, made in c++. Look awful a lot like "Axoloti code". But I think it is a big project to convert it, if even possible. But I cant say;


#58

I would like to add another really important trick I read only in very few places.

When you work with reverb, which is based on delays most of the time, you can run into problems with the delay lines colliding and creating unwanted artifacts, like ringing and metallic sound.

The trick is..... To use prime numbers for the individual delay lines length.. The reason for that is because prime numbers only add up with themselves and 1. So the risk og the delay lines colliding is reduced significantly when using primes over for example using 2 or 4 or 8, which are not primes. If you have 3 delay lines and they are set to 2 4 and 8 you will have problems.


#59

Just because it fits here very well: There is some info about reverbs in this thread as well.

There is one more thing, that I wanted to share here: Allpasses can sound very metallic even though they have a flat amplitude response which should guarantee no audible coloration. For themselves, allpasses indeed have no coloration. But when used in feedback loops, you can get pronounced metallic ringing. Here's why:

              +-----+        +---------+
Input ------->|  +  |------->| allpass |----------+----------> Output
          +-->|     |        +---------+          |
          |   +-----+                             |
          |             +-----------+             |
          +-------------|  fkbGain  |<------------+
                        +-----------+

With fbkGain==1 we would get an infinite looping "reverb" type of sound. With fbkGain<1 we would get an exponential decay in the "reverb" tail. I'm putting "reverb" in quotation marks because it doesn't really sound like a reverb, but the concept is very similar to one.

With any fbkGain<1 we would notice some more or less pronounced ringing in the decay tail. But all of the blocks that are used have a flat amplitude response, so why do some frequencies stand out and create the ringing?
The problem is that the allpass has a frequency dependent phase shift, meaning that some frequencies are delayed more than others. That's the whole point of the allpass and that's what makes it "blur" the audio which is very useful for reverbs. However, in the feedback loop that means that some frequencies travel through the loop faster than others. Let's say our fbkGain is 0.5 and the allpass has a delay of 100ms for frequency A and a delay of 200ms for frequency B. After one second, frequency A has traveled through the loop 10 times and has passed the fbkGain block each time. That means after one second, its amplitude has dropped to 0.5^10 = 0,00097 of its initial amplitude. Frequency B however has only cycled through the loop 5 times and its amplitude is still 0.5^5 = 0,03125. The result is that frequency A is only barely noticable compared to frequency B. Now we have ringing.

How to avoid this?

To really remove the problem, we would have to make the feedback gain frequency dependent so that it corrects for this. If frequency A is travelling though the loop twice as fast as frequency B, it should be attenuated so that it's amplitude after two passes matches that of frequeny B after one pass. Depending on the type of filter chosen for this task, it will more or less be an approximation. So ringing likely can't be removed entirely but it can be somewhat reduced.

Another option is to add modulation to the allpasses. By modulating the allpass time, we can make the cycle times of different frequencies more random. This works very well but also creates a chorus-y sound. I like it but it might not be for everyone.

The third option is to make the loop "longer", meaning that audio cycles through the loop slower. It can be done by adding normal delays or additional, differently tuned allpasses. This reduces the frequency dependent difference in the "cycle" times drastically and is commonly used in reverb algorithms. The problem is that longer cycles will also create audible echos in the reverb tail. To reduce this effect, the output of the reverb can be a mix of taps from different spots in the loop. Care must be taken to not mix audio in such a way that certain frequencies are always canceled out. This happens when you overlay a signal with a delayed version of itself - which is a comb filter. In theory, adding more taps to the output reduces the "comb" effect to an acceptable level but also increases the computational power required.


#60

Gives that "eventidish" sounds.. I love it :slight_smile:

But I'd like to add it also depends on what modulation you add.