Reverbs creation


#61

Hi there,

I'm using a series of allpasses by @TheSlowGrowth for my verbs. Via this thread I read that samplelengths in prime numbers are suppossed to give less metallic results.

How would I do that with TSG/filter/allpass m?

I calculated the values for time like this:

Does that make sense? Idea is to divide 64 (axolotis frac range) by the buffersize and multiply that by the prime number you wanna have.


#62

@Blindsmyth

If you for example want distribute 4096 samples within 0-64 do this:
64/4096 = 0,015625

So ONE sample out of 4096 on a scale on 0-64 is 0,015625

Then if you want to set the actual length to 4019 samples, do this:
0,015625*4019 = 62,796875

So if you have set the delay size overall size for 4096 and yo want to set the actual delay to 4019 on a scale of 0-64 the result is that you need to set the dial for 62,796875.

Let's do another one, to make it clear:
Delaysize is 2048
And you want to set a value 0f 1867 on a scale of 0-64

First do again:
64/2048 = 0,03125
So ONE sample out of 2048 is on a scale of 0-64 = 0,03125

Then to find out what to set the dial to, to get a value of 1867:
0,03125*1867 = 58,34375
So to set a value of 1867 out of 2048 on a scale of 0-64 set the dial to 58,34375

So yes, I would say you got it right :slight_smile:


#63

The calculations look good to me.

In my own reverb experiments I used a lot of modulation (I have a weak spot for the chorus-y, wide reverbs) so I didn't really care about the exact delay times in my allpasses.


#64

Ok great thx, good to hear that my logic thinking with axoloti improved and is actually usable :slight_smile:

I have very few resources in my patch over for reverb so I try to optimize the sound with the few resources I have.

Unfortunately I don't have enough sram for the dials to set the exact values. But I also have modulation. Does this prime number thing matter at all then when you also modulate the allpasses?


#65

The idea with the prime numbers is that the least common multiple of them is very large, resulting in less audible ringing in the reverb tail.

Ringing basically happens when a signal is overlayed with a delayed copy of itself (comb filter). That happens in the allpasses but also in the feedback loop of the reverb tank. The more often it happens, the more the ringing will be pronounced. Individual allpasses with a very small least common multiple will have a pronounced ringing, because it takes the signal only a few passes through the loop before it gets folded onto itself at the same place where it was folded onto itself before (does that make sense? I'm not finding the right words right now). With allpasses that have a very large least common multiple (e.g. with prime numbered allpass sizes), it takes the signal many passes through the loop before that happens, so the ringing will be less audible.

With modulation applied, you will get also prevent the signal getting repeatedly folded onto itself at the same positions. This reduces the ringing very effectively but also adds a chorus effect (which may be desired or not).

Bottom line: With modulation applied, I don't think the prime number thing really matters. Though I must admit, I don't have any scientific proof for that.


#66

I think it is a good idea to have individual lengths for the all-pass filters. This will prevent the ringing that TSG describes. And for this I think you have to use a dial pr. delay line. Thats is also how I have done it. Since Axoloti has got "fixed" delay line lengths, 1024, 2048, 4096. They are fixed to the power of 2...... So you have to set the actual delay line length using the dials.

I made this object you can try, which uses same input and you se the range for the 4 outputs on the dials:

BLIND.axp (1.8 KB)

If you want to optimize it even more, I dont think you need to use tables of 4096 samples to be honest. I think all the reverbs I have made in Axoloti and Pure Data, the longest delay length in samples I have used is 2048. So you can definitely save som SD-ram there.

If you want specific delay time suggestions, you could look up Schröeder reverb design on google. He give some specific delay lengths in milliseconds. And they are actually not very long, if I remember correctly below 2048 samples.


#67

Ok thanks!

I use different lenghts already. But the 4096 were indeed not needed, so I saved a little bit at this point.


#68

Does anyone have another link for the Erbe video mentioned earlier in the thread? Thanks, adn great to see all these reverb ideas!


#69

Have you shared this object yet?


#70

hey kausto, I just used your reverb as a base to make me a reverb for live perormances, for some reason yours sounded best to my ears from all the ones uploaded in this thread. I'm too much of a DSP noob to code my own verb, so this was pretty handy :slight_smile:
i switched the pitch shifter for a frequency shifter and tinkered a bit with other stuff, sounds cool, a ver y nice mix between delay and reverb!
8ap-loop-plus_myedit.axp (157.0 KB)


Call for patches that push Core to its limits, expose issues
#71

@urklang

A follow up on the reverb talk form the other thread.

This one I heard a port of for Pure Data and it sounds pretty good. Supposedly it is the concert hall from Lexicon 224x reverb:
https://www.convexoptimization.com/wikimization/index.php/Dattorro_Convex_Optimization_of_a_Reverberator

This one is the source code for the pretty famous freeverb, which is used in many devices. It has high quality sound:

I would personally love to hear/see these in Axoloti world.

For the Freeverb, maybe just even the all pass filters, so we have some more options to play around with :slight_smile:


#72

http://doc.sccode.org/Browse.html#UGens%3EReverbs

Some GPL'd verbs from SuperCollider.


#73

I added a few FDN based reverb in menu Help -> Library -> Community -> tiar -> FDN