Analyzing the Spin "Mini Reverb" part 3
Sep 22, 2022 at 10:59 AM
Last updated
Sep 22, 2022 at 10:59 AM
Last updated
Reviewing the structure of this very simple reverb in detail, along with some possible insights which I didn't previously have as a result of digging deeper on Julius O. Smith III's CCRMA site, I'm going to document some relationships in the code, then as we look at other reverb examples in the future, do the same thing to see what we can discover about general guidelines for FV-1 reverb design.
To be clear, I'm not 100% certain that what I'm describing is important, but up to now I have treated all of these items as "magic numbers" whose reason for being were only known to the original designers, now lost on the winds of time (sigh)...
The first thing that came to mind was the length, spread and number of all-pass filters in the input chain.
Let's compare JOS' Schroeder example with the FV-1 minimum reverb.
Schroeder
To start with, the Schroeder AP chain has only 3 stages. The longest comes in at 1051 samples (I couldn't find any reference to the sampling rate in the source article). The length ratio between adjacent APs as well as the ratio of the longest AP to the shortest one are shown. I've also factored the lengths with Wolfram Alpha to see whether they are mutually prime (don't share any common factors other than 1). And in this case, not only are the factors mutually prime, they are also absolutely prime, so they are also mutually prime.
Spin Min
The main thing I notice is that none of the AP delay line lengths are absolutely prime. AP1 and AP4 are both divisible by 2 so they are not even mutually prime. For laughs, I decided to factor 923 and came up with (1, 13, 71, 923). So, by changing the longest AP delay line length by just one sample, I've now made all of the AP lengths mutually if not absolutely prime. Do you think it would make a big difference to the sound?
Thoughts for experimentation
Just isolating the input all-pass stage for now, I think it would be interesting to try the following:
Make all AP lengths half/twice as long
Hold the shortest AP in place, compress the other lengths down until the longest is at 50% of current.
Hold the longest AP in place, make all the other ones longer until the shortest one is 200% of its current value.
Make the AP lengths follow a geometric progression, that is, make the ratio between adjacent lengths the same. You get this ratio by getting the ratio of the longest and shortest values and taking the third root (for 4 stages). Is this good? Bad? Maybe we'll find out.
Try making a set of all-passes where there is some clear non-prime relationship between all of them (like 1, 2, 3, 4 times the length of the shortest AP) and see what the impact is of that. After doing that, adjust the lengths to the nearest prime values and check the difference.
Try adjusting the AP lengths, maybe to (125, 300, 550, 925) in order to give a common factor of 25. That's very small change to the numbers to create a fairly large common factor. Is the "prime directive" (sorry) really important?
When fiddling with reverb magic numbers, I have found it very challenging to pick out differences when just tweaking one number out of 20 or 30 constants used in the code. I know there MUST BE some difference, but my hearing is not very good any more anyway. So I just make big changes and see whether THOSE are audible.