Reverbs creation


#1

Some time ago i tried to recreate this topology by Keith Barr (Alesis, Spin Semiconductor):


But did not succeed or i got something that i didn't expected at all.
verbattempt.axp (34.1 KB)
I guess it's because of difference of Axoloti (with it's execution order) and FV-1 (dsp chip by K. Barr) based system. And also i'm a total noob :grin:

Look for details about K. Barr basic reverb topology here

So i suggest to discuss best practices and strategies to create beautiful sounding reverberators for Axoloti in this topic.


#2

a topic I'm very interested in too...
Im currently digging through a few objects in axoloti seeing how they tick, so I have the foundations to do some work on reverbs. but Ive noticed reverbs are not the easiest thing to implement :smile:


#3

I tried to implement something like it and didn't get what I hoping for either. I think there's a lot of work in tuning the delay times. But it's not just you!

I wonder if Loti is powerful enough for a decent convolution reverb...


#4

Have also tried Many different approaches With No luck yet.

The next thing I'm gonna try is convolution. Acoloti only has a fir filter but some say it doesn't have enough coefficients, only 16. I'll try and serial connect a few of them and see wHat happens. Haven't explored into thus before so it's just going to be an experiment to check if serial connecting fir could be a solution. I did ask if Johannes would consider implementing a new object hit convolution but haven't heard from him on this issue yet. Will see ehat happens?


#5

convolution - Johannes has stated it should be possible for short convolutions (<33ms), see here

this will be cool for certain kinds of things, e.g. cabinets, resonators.

but need something different for longer/lush reverbs... I'm hoping to do this by the delay line methods, and just hoping I can some how control the high frequency content a bit. (perhaps LP in feedback loops), as I'm find current reverbs are a bit metallic for my taste.
(though they are nice in some contexts)

if I can get a nice reverb going, Id leave it permanently on one of my Axolotls :smile:


#6

Yeah, i even found this NM G2 implementation which i liked alot when i had one. Iirc it sounded pretty lush and big compared to G2 stock module.
http://electro-music.com/patchviewer/?URL=/forum/download.php?id=24236
Could be good exercise to port it to axoloti i guess.


#7

Also this one (you should click FX button to see it) seems to be something like Valhalla UberMod i guess. I'm not familiar with this patch.
http://electro-music.com/patchviewer/?URL=/forum/download.php?id=31062

http://electro-music.com/forum/viewtopic.php?p=364638#364638


#8

I think, with emphasis on think, that he actually stated the opposite, that it is not possible. From same thread by Marlow:

Johannes answer to that:

I think JOhannes explained what was possible if we had a convolution object. Or maybe I udnerstand it wrong. Anyway, I stil havent given up on it. I think that chaining up a few FIR objects could be a solution. Since no one answer this question, I interped that like no one has tried and it could be possible :smile: Trying to be optimistic :smile: Going to try it and see how it works out. Still need to do a lot more reading before I know how to grasp this.

Have tried making many different verbs using delay lines and havent really come up with anything that sounds "natural" yet. But havent given up on the idea yet either :smile:

I have also tried making another granular reverb, using tables, not delay lines. First version sucked second version a ittle bit better and third version I hope will be even better and actually sound like a reverb :smile:


#9

I spent quite some time looking up reverb algorithms, and I have to say Sean from valhalladsp has a lot of information (and knowledge, and talent) about reverbs of all kind.
Using axoloti, I tried to do a Schroeder Reverberator using all pass filters and feedback comb filters. The problem was I had no idea on what I was doing (I'm very bad in all sciences), and tuning the filters and delay times was very much hit and miss. But it didn't sound too bad sometimes.

But I'd love to hear some new sounding reverbs in Axoloti.
I wouldn't mind understanding better how the reverb object works actually too.


#10

If anyones is interested in digging into FIR filters and possible creation of reverb/amp modeling, here is what I have found for now:

FIR filter basics:
http://dspguru.com/dsp/faqs/fir/basics

Introduction to FIR filters. Pretty cool video explanation:

FIR and reverb from some university:
http://musicweb.ucsd.edu/~sdubnov/Mu172/Lectures/ReverberationDevicesAndGettingStarted.pdf

Sampling, convolution & FIR filtering:
http://www.diku.dk/~jda/biosignal/lab07.pdf

IIR filter basic(used for longer verbs). We dont have this in Axoloti, though:
http://dspguru.com/dsp/faqs/iir/basics

This is what I have found by now. I wish my math was better. Some of the stuff here i dont understand. But i guess watching them a few times brings some clarity to issue.


#11

@mtyas

Yep. They make some of the best plug ins out there. Do you have a link to Seans info on reverb? would love to read it.


#12

https://valhalladsp.com/blog/


#13

another +1 for vahalladsp reverbs, love them all :smile:

ooh, lots of information to digest in this thread... keep it coming, some good late night reading !

@jaffasplaffa , axoloti allows you to write your own objects, so anyone with the relevant experience could write this today.
(reality is, its probably not C/C++ experience thats the hurdle, but the DSP/maths :smile: )

I hope the object editor/community library will expand the object base outside of what johannes has time to write.


#14

about convolution:

Possible but nowhere going to be close to an efficient solution, this needs a dedicated object. In fact I developed a draft in the meantime that does 1024 sample direct convolution at 68% load, which I'll share when it's ready.
That will not scale up to much larger impulse responses as the load scales linearly with impulse response length (unlike FFT convolution and partitioned FFT convolution, they deal much better with long impulse responses, but those algorithms are much more complex to implement and I'm not sure it is possible, and I have no current plans to develop this). It is a solution for speaker cab modelling or adding "instrument body" resonances, but not for reverb.

In contrary, almost all filters in the object library are IIR.

A good didactic resource on artificial reverb is
https://ccrma.stanford.edu/~jos/Reverb/


#15

Cool thanks guys :smile:

Yeah some good info here :smile:

I wish I had that skill, then I would be all over it. Anyway, Axoloti can do so much al ready, with all the low level objects. In the beginning I asked you guys a lot for new objects, but I know you have enough to do and at the moment are focusing on other things than objects, so I just try to work with what I have, efficient or non efficient :smile:

Anyway, it is also a learning process, figuring out how to create effects in different ways and just working with dsp in general :smile:

Sounds pretty awesome. Cant wait to see what that can be done with it :smile:


#16

I've been intending to build a rough Lexicon reverb clone in Axoloti since I found this talk that Tom Erbe gave on the process of designing the Make Noise Erbe-verb.
It's extremely useful as he goes into pretty great detail about the history of feedback delay network based reverbs & demonstrates various different topologies (including one from a classic Lexicon verb) and talks about the relative advantages of each (& the reasoning for those developments).

http://www.mat.ucsb.edu/595M/?p=1373


#17

Thanks for this reminder about Tom Erbe. I love and use his plugins alot. Found this paper about Erbe-Verb:
http://quod.lib.umich.edu/cgi/p/pod/dod-idx/building-the-erbe-verb-extending-the-feedback-delay-network.pdf?c=icmc;idno=bbp2372.2015.054
which inspired me to build this FDN reverb (Erbe-Verb utilizes cortex m4 too, by the way)
FDN-Demo.axp (97.5 KB)

Feel free to modify it for optimisations and improvements. I wouldn't mind against proper infinite sustain for example

Slightly optimized update (eats 29% CPU)
FDN-DemoUPD.axp (94.5 KB)


March 2016 - Effects Patches (challenge/discussion)
#18

I looked at this FDN reverb and it looks good. Having only four lines in the tank (the part that generates a reverb tail by feeding back the signal on itself) is a bit low, but understandable considering the limitations we’re dealing with here.

The only thing that I would have done differently would be to have a series of allpass filters placed before the main reverb tank; by having five to ten all pass filters (filter/allpass.axo) in series before the main tank, we can smear percussive transients so that they do not rattle in the reverberant tail. Another way to smear the transients is to use a short noise burst in a convolution; even a 10-30ms noise burst convoluted should reduce or eliminate the rattle of a percussive sound before it hits the main reverb tank. I don’t see a convoluter in the objects, but the CMSIS library ARM made and included in the main Axoloti distribution has a few optimized convolution libraries.

I also find it interesting that all four lines in this FDN tank have the same initial delay time, but, of course, since they are modulated differently, they end up having different delay times.

Also: While the Schroeder reverberator is frequently published in the academic community, it’s almost never used commercially. It tends to sound metallic and unpleasant; even the highly optimized “Freeverb” Schroeder reverb (which probably sounds as good as a Schroeder can) doesn’t sound that good to my ears. One good starting point is the Griesinger-based (that means Lexicon) reverb algorithm (the “figure eight” design), which became a matter of public record back in 1997: https://ccrma.stanford.edu/~dattorro/EffectDesignPart1.pdf


#19

Thanks for your feedback and this tutorial, interesting read. I suspect, Jon Dattorro is responsible why my ensoniq dp/2 sounds so good.


#20

Another thing: Reading Erbe’s paper, I observe that his FDN has an allpass before each delay line in the FDN tank, but you design seems instead to have a highpass filter instead of those allpass filters right after the lowpass filters (and before the delay lines). Also, there is a FDN4 object (reverb/fdn4.axo) but it does not appear to have modulated delay lines in its tank, so it should be more static sounding than the tank you made.