Stereo Reverb

I am sending guitar, guitar - cathedral reverb preset and guitar - concert hall reverb preset .

I am sending guitar - large room (bright) reverb preset, guitar - medium room (bright) reverb preset and guitar - small room (bright) reverb preset.

Huh, adding files is too slow.

That is to be expected. It’s one of the reasons that many home studio artists have an enormous selection of different reverb effects.

I think that’s an excellent approach for at least some of the settings. It would be good to have a selection of distinctly different, but still fairly universal settings.

It would probably also be useful to have one or two more specialised settings. For example, a really good reverb for vocals is worth it’s weight in gold, even if it sounds rubbish if used on other instruments.

Thanks for all your work on this (amela and whbjr). I hope that you’re enjoying it as I’ve got some code changes in the pipeline that will give you more scope to produce (hopefully) better effects.

I’ve not had chance to review everything in this topic yet as it’s the type of thing where I like to be able to sit down in my “listening chair” and dedicate a good lump of time to it.

Now that you’ve both had time to play with the effect, is there anything “missing”?
For example, for a “Grand Canyon” type effect I think the reverb needs to be more “echoey” than is possible with this effect.

I also noticed that whbjr mentioned “many of the reverb parameters are a bit mysterious to me…”
There’s two ways that we could approach this - either I could explain exactly what each of the settings does, or possibly more usefully, you could tell me what settings you would want (that would instinctively make sense to users).

What I’m hoping that we can achieve by the end of this is a really good reverb effect that is easy to use. I think that already we have made some very promising progress.

I was testing this one out in 126 and found it worked with mono tracks.

Must have changed something in Nyquist for easier processing of stereo tracks, as the error posted
by the user probably originated with the snd-srate function on one of the filters. I didn’t notice any
code for splitting tracks for seperate processing, so basicaly one of the filters in 126 is trying to
read a stereo track and failing (snd functions only process one channel at a time).
Easy solution is to process channels seperately.

Good plug-in tho. I’ve always wondered what the difference between reverb and echo was, I guess
its the bass/treb cut filters, I’ll have to look into it a bit more tho. Been studying ragga and dub
lately and they seem to use these types of fx a bunch on the beat portions of their tunes.

The error reported (way back on page one) was due to HIGHPASS2.
The highpass and lowpass filters in Audacity 1.2.6 only support single channel sounds.

With a proper “stereo” reverb there should be “cross-talk” between the left and right channels.
“Reverb” is an effect that simulates a “reverberant room”. If you clap your hands in a tiled bathroom, you don’t get a distinct “echo,echo,echo…” but you do hear a “reverberation” (eccchhhoooo…).
If you have a stereo sound source (two people side by side clapping), then the person on the left is not heard entirely on the left, but sound bounces of both left and right walls - you can still hear that they to the left, but you will hear echoes off both left and right walls - that is the “cross-talk” between the channels.
In order to simulate that type of effect, both left and right channels should appear to “bounce” between both left and right and all over, which means that it cannot really be done by processing two mono channels independently.

highpass and lowpass Nyquist filters can be enabled for stereo tracks in several ways, for example, for HIGHPASS2

;;; mono or stereo highpass2 for Audacity 1.2.6
(defun ms-highpass2 (signal frequency)
  (if (arrayp signal)
        (highpass2 (aref signal 0) frequency)
        (highpass2 (aref signal 1) frequency))
      (highpass2 signal frequency)))

; apply it
(ms-highpass2 s 1000)

or more succinctly:

(multichan-expand #'highpass2 s 1000)

In current versions of Audacity this is not required as highpass2 already supports multi-channel sounds.

Yeah, just wanted yall to know.

Hey, I did some experiments this morning using a comb filter and found out that
it actually is just an “selective echoer”. It just takes a portion of the start of audio
and then repeats it (the hz value determines how long a selection) and then fades
it (that’s the decay) part. Unfortunately, the portion of audio is always the start
of the audio.
Pretty interesting, but what gives? Why is that called a “filter” instead of
a “selective echoer”?

I think they named it “comb filter” because when they “made it”, it was like…
INVENTOR: “I know, we’ll call it a comb filter because it’s like chopping the
pony tail off a dirty hippie.”
DIRTY HIPPIE: “Hey man, that’s uncool.”

Funny thing is that Dub music uses this filter alot, so I guess what they’re saying
is is that they don’t have dreadlocks, but are in fact wearing wigs (a collection
of pony tails). Ha ha, just a joke.
You guys should make a 1980s “shopping mall” and a 1970s “library” preset…

See here: Comb filter - Wikipedia

I like the idea of a “1970s library preset” - kind of big, open and hollow.
I’m not sure what a “shopping mall” preset would be like - we don’t have shopping malls in the same way in the UK as in the US. Perhaps you could make a preset for that?

Something that I believe that this reverb really needs is a ‘delay time’ setting. Right now, there is about a 20 millisecond delay from the start of the dry signal to the start of the reverb. If I want a shorter delay time, I am forced to put the reverb on a separate track and time shift that track. Is there any way that a ‘delay time’ setting can be added?

Strictly speaking, there isn’t, though I can see (and hear) why you say there is. I’ll try to explain what is happening, and then we can look at what can be done.

Reverb effects are basically modelled on the way that sound bounces around within an environment. It is similar to an echo effect in that it models sound bouncing off walls, but rather than just a few distinct echoes a reverb effect is mad up of hundreds or even thousands of “reflections” of the sound, mixed in with the original sound.

Looking in more detail, imagine if you are standing at one end of an empty room and someone else is stood near the other end. They clap their hands. The first thing that you hear is the direct sound from their hands, travelling across the room to your ears. Sound (obviously) travels in all directions from their hands.

Some sound will come towards you, but rather than a direct path, will travel slightly downward, bounce off the floor, then up to your ears. Because of the finite speed of sound, this reflection will clearly arrive at your ears a little later than the direct sound, but as it is almost a direct path and sound travels very fast, it will only be delayed a tiny amount. Some sound will go the opposite direction, bounce off the far wall, and then to your ears. This sound will obviously arrive at your ears just a little later. Some sound may bounce off the left wall, then the right wall, then the ceiling, then the left wall, then the wall behind you, before finally arriving at your ears and this sound will clearly be delayed much longer before you hear it. The overall effect is that after an abrupt sound (such as a hand clap), the reverberation effect will build up as the echoes arrive, then gradually die away as the sound disperses and is absorbed by materials in the room. The initial “delay” that you hear in this effect is not actually that the effect has been delayed, but is the time it takes for the reflections to “build up”.

For real (natural) reverberation, the Initial direct sound will be delayed by the time it takes for the sound to travel from the sound source to your ears (about 343 m/s). For artificial reverb effects we normally disregard this delay as, typically it will be very short (about 3 ms if the sound is one meter away), and we don’t want to mess up the timing of the sounds in the recording.

The time for the first reflection to arrive will depend on the size of the room, where the sound is coming from, where the listener is, and the path taken by the sound before it arrives at your ears. Lets say, for example that you are in the middle of a room that is about 8 m across and has carpet and a sound absorbent ceiling and you are listening to someone that is 1 meter in front of you. The direct sound will take about 3 ms to arrive, but the first strong reflection will be from one of the walls, 4 m away. The sound has to travel from the sound source, to the wall and then bounce back to your ears before you hear that first reflection. That’s a round trip of around 8 m, which will take around 23 ms to arrive - about 20 ms after the direct sound. What we can say from this is that our reverb effect is modelling an environment in which the closes strongly reflective surface is about 4 m away - a moderately sized room for a musical performance.

In this reverb effect, all the settings are based on adjusting properties of “one room”. The effect as it currently is, is based on one “room model” that was devised by Roger Dannenberg (the creator of the Nyquist programming language). What I think we need rather than an adjustable pre-delay, is more than one room model. There is no reason why this can’t be done - in fact we could model reverbs on any size room that we like. I think this is an excellent idea (based on your observation). Thanks for the feedback - I’ll implement that in one way or another in the next version.

Steve, I have to disagree. Many reverb units have predelay or delay time offset settings. In some rooms, the time between the dry signal and the first echo is almost instantaneous, while in other rooms, there is a noticeable delay. A ‘delay time’ or ‘predelay’ setting would be greatly useful, especially since it appears on hardware reverb units. I’ve done some testing on this stereo reverb plugin, and there is currently about a 20 MS delay before any echos what so ever are heard. If I’m trying to emulate a Led Zeppelin style reverb for drums, for example, I put the reverb on a separate track, then time shift that track -20 MS to get the almost instantaneous echos I want. The predelay setting would be particularly useful for shorter reverb times.

This one doesn’t. There is no “pre-delay” in this plug-in. The delay that you are seeing is the first part of the reverb impulse response.
I can add a “delay” or “time shift” control (or you could), but what I was saying is that currently there is no “added” pre-delay.

Try this:
reverb3c.ny (6.72 KB)

Sorry it’s been a while since I’ve replied. The version with the Predelay setting is exactly what I was looking for. The only problem with it is that when I set the predelay to 0, the first 20 MS of audio doesn’t get reverberated. Is there any way that this can be fixed? Thanks!

No, because it is not broken.
Just make sure that you include at least 20 ms of audio before you want the reverb to start.

When I time shifted my reverb track before I got the updated version of this plugin, I would put the reverb on it’s own track first, then time shift it. Then, all of the audio would have a reverb with a predelay of 0. Is there any way you can add the reverb before time shifting in your plugin, so that all the audio has reverb?

The last 20 ms would be without reverb.
Why can’t you just select from a tiny bit before the start of the sound?

Because sometimes, the sound starts immediately.

Try this version.
I’ve only tested it very briefly, so you are now the chief beta tester for this :wink:
reverb3d.ny (6.75 KB)

You’re right about losing the last 20 MS of reverb. I guess that’s the price if you want the first 20 MS of sound to have reverb.