New 'not custom' unit: jotverb v0.0001

Hi Folks,

Alright, I figured it was time for me to throw my hat in the ring.

Yes, yes, this is a reverb but before you get too excited, some HUGE CAVEATS:

  1. This is a chain, NOT a custom unit, and therefore trying to control/tweak is a nightmare;
  2. If you are not familiar with FDN Reverb topology (schroeder, gerzon, jot) it might be worth looking up before trying to understand the architecture. In particular, I wouldn’t recommend changing the gain structure anywhere but the top level.
  3. I fully expect to get my wrists slapped by our senior unit-making folks for the way I built things up. I basically had to do it this way in order to keep my place.

The chain hits about 55-60% on the 48kHz firmware (4.01).

With all of that sombreness out of the way, here are some more fun notes about this thing!

A) It is indeed a 4N Feedback Delay Network Reverb, roughly utilising the Jot 1991 generalised FDN algorithm.
B) I chose a 4x4 Householder Matrix for the FDN part.
C) Instead of trying to make a single pole LPF (Brian, help!!), I just used the eq3 as an LPF ahead of each delay, as well as a ‘shaping’ eq3 at the end of chain in order to provide feedback control and some tone shaping.
D) The delay times are mutually prime, and if you want to change the sound of this thing without getting into the hairiness, I’d recommend pulling up a list of prime numbers and just fooling around for awhile. It’s fun.
E) I can’t remember if I put limiters ahead of the delays, but they should be there, the cubic one is good.
F) ‘Convention’ would typically have us put allpass filters in front of each LPF, but again I chickened out. I have a version sitting on my box that tried to incorporate them, but I’m not sure I built them correctly and I don’t think it sounds better than this one.
G) Oh - it’s only mono-mono. Sorry about that. However, I think the architecture will acommodate mono-stereo, and potentially stereo-stereo but I’m not doing any of that until I can encapsulate it in a custom unit (definitely worth waiting for).

So, for the adventurous - go have a look, and maybe let’s improve the architecture?

For everyone else, the chain still loads up and it’s still fun to mess around in there. Something like this would have been impossible (for me) without the scope mode, so sincere thanks to Brian for keeping his eye on these things.

4x4 jot hh mono mod2.chain (101.9 KB)

Thoughts?? :sweat_smile::sweat_smile::sweat_smile:


I was just reading thesis by Kurtis Halingten today about simulated reverberation and the Jot was mentioned, so neat timing for me that you should create and share this now.

Looking forward to checking it out!

It sounds really nice @Rob! Great work here! :slight_smile:

So first off, if anyone is looking to use this unit, it is hardcoded to use the IN1 jack as the audio signal to be reverberated; don’t think that was mentioned. If you put an internally generated signal in from the left it will pass through but you won’t get any reverb applied. My CPU load is showing 43%, so perhaps you had another chain somewhere?

I’ve only just started reading up on Shroeder, Gerzon, Jot, so this is a lot to wrap my head around, but I get the gist, I think.

e(z) on the top of the chain seems like a wet amount control
in*d seems like a dry amount control
Changing the delay times to other prime numbers (in msec) is akin to adjusting room size/shape characteristics
Changing the characteristics of the EQs preceding the delays (labeled lpX) is roughly akin to changing room material composition

Does that sound about right?

1 Like

Hey Joe, thanks for that! I think with some tweaking (of the delay coefficients, mainly), some better LPFs before the delay lines, and maybe even some allpass filters also before the delay lines, it could be a real contender. And again, the architecture (in a custom unit) should be able to handle the different permutations of mono and stereo I/O.

To answer your questions:

  • Yes, it’s hardcoded to the IN1. If there’s a way to make it more flexible, do let me know!
  • In*D is basically dry level, yes, summed with the reverb signal after…
  • e(z), which in the Jot generalised FDN diagram is a tonal shaping filter intended to smooth bumps from the resulting reverb tail.

Changing the delay times is akin to changing where the walls are - sort of. I’ll do my best to explain as I understand it.

Basically, early reflections can be achieved by a tapped delay line, and when this is built in stereo, it could take into consideration the position of the source content in the stereo field.

What I’ve built so far does not have dedicated early reflections, this is only generating the late reverberation. In order for us to get density of early reflections, we’d need to get those ER taps, as well as a pre-delay control.

Finally, the LPFs ahead of the delay lines are intended to reduce reverb at the higher frequencies, as this is the natural ‘waterfall’ or spectral decay you see in natural spaces. It makes sense - higher frequencies carrier lower energy, so they will dissipate faster. The EQ3 is a fine stand in for now, but we’d ideally want something like a single pole LPF here instead. As a group, you could call them ‘absorption’ and is fine to gang them all together, but also interesting to play with setting them differently and seeing the results on a specrogram when fed a white noise impulse, etc. etc.

Is that useful? :slight_smile:


Yes, very useful!

Custom units are currently being revised in 0.4x, so they don’t work at the moment. But that or a middle layer /bespoke unit (which I might be willing to help with if you aren’t a coder and decide to go that way) would ultimately be the right container.

In the current state, the easiest way to make it more flexible would be to use a global for the input instead of IN1. You could just create a mono global chain and call it “input”, and then reference that everywhere you’re currently referencing IN1. The caveat would be that the user would have to create this global chain prior to loading the chain preset (I don’t think the ER-301 will auto create it if it doesn’t exist). But the upside would be you could easily fill that global chain with an internal chain sound source, or assign any of the input jacks (INx, ABCDx) or even reference the output of another channel chain (OUTx).

Any good articles you’ve found on this that have a word-to-equation ratio greater than 50%? :slight_smile: Definitely interested in learning more about it.

1 Like

Hi Joe,

Great! I thought about keeping the whole thing stumm until I was happy, but I am super-picky and so that means I probably wouldn’t have been able to take it over the line myself. I’d love a hand, and ultimately I’d like this to be a stereo in-stereo out piece if the 301 can handle the load.

Here are the papers that have been the most useful for me:
Studio-Sound-1972-01.pdf (4.1 MB)
Studio-Sound-1971-12.pdf (5.0 MB)

Attached are two parts of a famous Michael Gerzon paper on stereo reverberation that is geared towards the engineer/consumer - perfect for us!

Other links:

I think you can also find some more stuff on a site called DSPRelated. Seems to be a (really good) aggregator of this type of thing.