Norns: what is the reverb algorithm?

This is really not a very important question - just curiosity! I was comparing the reverb in Norns to the one in Clouds (which I love and has been my go-to end of chain eurorack reverb for a while) and they are remarkably alike to my ears. This makes me happy, and one step closer to a plan to downsize my eurorack to a palette case, (which seems to be what all the cool kids are doing these days).

However it also made me idly wonder if norns and clouds use the same algorithm? Or if my ears are just completely worn out and everything sounds equally lovely :slight_smile:

3 Likes

AFAIK it’s generated using Faust based on an algorithm called Zita: https://github.com/monome/norns/blob/master/crone/src/effects/ZitaReverb.h

@catfact may have more details

2 Likes

The FAUST implementation was written by Julius Smith. The algorithm and original implementation (zita-rev1) was written by Fons Adriaensen:

https://ccrma.stanford.edu/~jos/pasp/Zita_Rev1.html

https://faust.grame.fr/doc/libraries/index.html#re.zita_rev1_stereo

For reference, here is the Clouds Reverb algorithm implementation:

From a pure technical and non-perceptual perspective, the algorithms do technically differ quite a bit. Zita is a higher-order FDN system that makes formal use of a feedback matrix. Clouds reverb, from what I’ve seen looks closer to a classic schroeder design with LFO modulation, similar to what was described in that famous dattorro paper (a very popular reverb design). The LFO-controlled modulation makes it sound like a denser higher-order, and it also smooths out some of the ringiness you often get with schroeder-reverb designs.

7 Likes

One of the primary drivers of the reverb implementation in Clouds was the necessity to make it work alongside all the other stuff that was going on, within the limited resources of the Clouds’ Cortex M4 processor.

If it sounds good, it’s testament to @pichenettes skill in optimising for very limited processor resources.

5 Likes

It really does, and her skills are legendary!

1 Like

This is norns related so maybe I should instead post in Norns: what is the reverb algorithm? [SOLVED] but it’s marked as solved (and by implication closed, so I’m here instead).

I’m trying to understand the norns reverb settings.

At the top is the on/off toggle and gain control for crone, softcut, monitor and tape. Ok no problem. Return level from the reverb back into the mix, sure.

But then what are the other ones? From what I understand “pre delay” is the time between a sound, and when it’s reverb kicks in. “lf fc” is, I guess “low-pass filter cutoff”, which splits the audio spectrum into two at the specified frequency, and “low time” is the length of the reverb below “lf fc” frequency, and “mid time” is the length of reverb above it. This would be useful for instance leaving the bass section out of the reverb, only applying reverb to mids or highs. “Hf damping” is, I figure, means high-frequency damping and brings down or even filters out the frequencies coming back from the reverb which are above that frequency.

Is this about right? I have doubts because if I set lf fc to say 350 hz, turn “low time” down and “mid time” up, and push in audio with bass, that bass definitely get reverberated. I am honestly not sure I hear what “lf fc” and “mid time” do?

i’ve just double checked and all the reverb parameters are functioning as expected for me. they are more or less as you describe.

one quirk to be aware of is that the “low frequency decay time” is the decay time at DC. so the actual reverberation time for a given frequency between DC and the low-mid crossover point, will also depend on the mid-freq decay time (sort of limited by it.)

so if you want a super long tail for lows, set the low time super long (say, 10s) and the mid time not too short (say, 1s). if you use those time values you will definitely hear the effect of sweeping the LF cutoff.

conversely, you will still hear pretty long tails at, say, 100hz if the mid decay time is set super long, even if the low decay time is at minimum. (but once again, sweeping the cutoff should be pretty evident: with low time = 0.1s, mid time = 10s, a 100hz signal will have a long tail with lf fc = 200 and a much shorter tail with lf fc = 1000.)

the decay of high frequencies is 1/2 that of mid freqs.

the algo is simply the stereo version of Zita1 from the faust standard libraries. we have done nothing special to customize it (at an earlier point we had a more complex EQ structure in there, but i found it didn’t really add much in practice.)

you can follow the entire DSP chain here:

that is the stereo version we use in norns; the core FDN is defined a little further up.

[mod hat: yes, i’m going to move your post and this reply to the other thread.]

2 Likes

Thanks, that’s helpful.

I need to spend more time simply listening to the norns reverb and playing it! :vibration_mode: