If you want "the best" digital reverb code for the FV-1, I suggest that you search out the code examples supplied by Spin (http://spinsemi.com/programs.php) themselves. However, one very interesting patch is the "mini reverb" which accomplishes a stereo reverb in only 22 instructions. This gives you plenty of room to do other things while still having a reverby sound available.
For years I have looked at the delay line lengths and all-pass lengths and coefficients in every example I could find and just thought of them as "magic numbers" as I could not find any objective strategy for determining them.
Auditioning different combinations via trial and error with Spin ASM is very time consuming as you would need to come up with up to 8 different settings, make 8 different files, build them and upload them to the chip, audition them and take some notes, then try to figure out where to go from there.
I've come up with a block in SpinCAD (version currently unreleased) that lets you adjust nearly everything in the small reverb and audition it immediately without writing code and without having to burn it into a chip. I think you will find this interesting. I sure did!
Wow, Great !!!
I need a good, small reverb for my current project.
I think what everyone needs to remember about those "magic Numbers". The FV-1 reverbs are very much down to the knowledge of Keith Barr who was the reverb expert behind most of the Alesis reverb gear. So while we can ask why those numbers? I just think he knew what worked.
Great step forward DL in making a block where you can change all these numbers and test easily. :)
I would suggest also trying numbers that fit with the 'fibonacci sequence'.
Suppose the idea is that no repeat output from a delay line should match the output of another delay line
And Fibonacci series is 2,3,5,8...
4th repeat of 2ms delay line will superimpose on 8ms line's output
5th repeat of 3ms delay line will superimpose on 3rd repeat of 5ms delay line.
DL once experimented with 3-4-5 reverb
There is some clue in the (ancient) literature but it seems more like rule-of-thumb than a specific scientific conclusion. 3-4-5 was a suggestion from one of the Kadenze courses I took but that was parallel comb filters rather than a reverb ring or all-pass chain.
DL
Quote from: Vivek on September 24, 2022, 02:27:57 PM
Suppose the idea is that no repeat output from a delay line should match the output of another delay line
And Fibonacci series is 2,3,5,8...
4th repeat of 2ms delay line will superimpose on 8ms line's output
5th repeat of 3ms delay line will superimpose on 3rd repeat of 5ms delay line.
We'd be looking for prime numbers, not Fibonacci. Wasn't that what the MN3011 did? I never bothered to check, but I had the idea the taps on that were at prime ratios of the overall length.
Damnit, now I'm probably going to have to go and find out!...
MN3011 was tapped at
396
662
1194
1726
2790
3328
Wolfram Alpha to the rescue! Some common factors 1, 2, 3, 9.
https://www.wolframalpha.com/input?i2d=true&i=common+factors+of+396+662+1194+1726+2790+3328
Is there an easy online way to plot series like
396,1
396x2,1
396x3,1
....
Along with
662,1
662x2,1
662x3,1
...
Quote from: Digital Larry on September 24, 2022, 10:47:47 AM
If you want "the best" digital reverb code for the FV-1, I suggest that you search out the code examples supplied by Spin (http://spinsemi.com/programs.php) themselves. However, one very interesting patch is the "mini reverb" which accomplishes a stereo reverb in only 22 instructions. This gives you plenty of room to do other things while still having a reverby sound available.
For years I have looked at the delay line lengths and all-pass lengths and coefficients in every example I could find and just thought of them as "magic numbers" as I could not find any objective strategy for determining them.
Auditioning different combinations via trial and error with Spin ASM is very time consuming as you would need to come up with up to 8 different settings, make 8 different files, build them and upload them to the chip, audition them and take some notes, then try to figure out where to go from there.
I've come up with a block in SpinCAD (version currently unreleased) that lets you adjust nearly everything in the small reverb and audition it immediately without writing code and without having to burn it into a chip. Even if you don't want to subscribe to my pay site I think you will find this interesting. I sure did!
Does this imply there will be a fresh release of SpinCAD Designer soon? Digging these new verb and delay blocks you're working on.
Quote from: Cybercow on September 25, 2022, 12:45:23 PM
Does this imply there will be a fresh release of SpinCAD Designer soon? Digging these new verb and delay blocks you're working on.
Why yes it does in fact Mr. Cow! It's scheduled for next week and at the moment it's only for subscribers. Part of that is down to me forgetting how to check things into Github, and the fact that the current state of the code (several things in half-baked form) is not suitable for a full release.
Thanks,
DL
Quote from: ElectricDruid on September 24, 2022, 03:21:25 PM
Quote from: Vivek on September 24, 2022, 02:27:57 PM
Suppose the idea is that no repeat output from a delay line should match the output of another delay line
And Fibonacci series is 2,3,5,8...
4th repeat of 2ms delay line will superimpose on 8ms line's output
5th repeat of 3ms delay line will superimpose on 3rd repeat of 5ms delay line.
We'd be looking for prime numbers, not Fibonacci. Wasn't that what the MN3011 did? I never bothered to check, but I had the idea the taps on that were at prime ratios of the overall length.
Damnit, now I'm probably going to have to go and find out!...
I think prime numbers are what you use when you're not using all-passes but a short multi-tapped delay as diffusion stage. Cause in the latter case you want as much uncorrelated echoes as possible.
Quote from: Vivek on September 24, 2022, 05:24:56 PM
Is there an easy online way to plot series like
396,1
396x2,1
396x3,1
....
Along with
662,1
662x2,1
662x3,1
...
You don't always feed back *all* the taps. For example the example reverb in the old MN3011 datasheet only feeds back the last tap.
https://www.experimentalistsanonymous.com/diy/Datasheets/MN3011.pdf
IIRC the old ETI magazine circuit used different tap to feedback but I was fairly certain there was on error on the schematic (something very common from that era of ETI) and the actual schematic is probably the same as the Panasonic example.
If you feed back the sum of m taps then you might drop the feedback level by a factor of 1/m to stop the feedback loop oscillating but then the strength of the feedback from longest delay will be lower and it will decay earlier.
I'm only talking in very broad large-scaled terms here. There's plenty of papers dealing with analysing this stuff more formally.
Sorry to resurrect this thread.
Regarding coefficients, Keith Barr was the last great hero when it comes to seeking perfection in an algorithm. I rescue some important reflections that Barr himself commented:
"I really like 2AP, delay, 2AP, delay, in a loop. I try to set the delay to somewhere a bit less than the sum of the 2 preceding AP delays, which are of course much longer than the initial APs (before the loop).
Yeah, the big loop is great; you inject input everywhere, but take it out in only two places... It just keeps comin' new and fresh as the thing decays away. –If you've got the memory and processing!
Most coefficients would be 0.5, of course, and we had a few comments about how the reverbs had a 'building' effect due to APs with K=0.5"
The scheme he used can be easily found online. Apparently he had that general guideline regarding the total length of the delay, and the artisanal touch to finish adjusting them. Probably there is also some relevance with prime number ratios, as has been commented.