Closed mkruselj closed 3 years ago
https://colinraffel.com/software/bbdmodeling/echo.cpp
That’s what jp is built on and it is super handy.
Probably better to go with that newer BBD emulation from daFX paper, of course 🙂
That’s what jos code does. All the same rhing
Ahh all caught up now. yes use the new stuff indeed
If this can be of any use, I'm copying a relevant part of a synth service manual It mentions also a delay rating.
Right, Omni has a different scheme by using 3 individual LFOs, whereas Solina uses the 3-phase 2 LFO deal. I kinda like the Solina better personally.
Dropping this in for reference, too.
We can basically close this issue now, only very few things left to polish and @jatinchowdhury18 is aware of it. 🙂
Let's see if we can add one, with help from jpcima's ensemble effect emulation (if he permits).
Here's some more useful things from a certain Reaktor ensemble, this will explain how the LFOs are intermingled:
F1 - frequency of first LFO, A1 - amplitude of first LFO, etc.
Looking into the 3 Phase Ensemble structure, you can see 0.18, 0.6 etc, those numbers are default values for LFO rates and amplitudes. Two LFOs give out three different signals that modulate the 2-tap delay (which is our 512-stage BBD chip emulation).
This is the LFOs structure, where you can see how it all mingles together. ms2sec is just a multiply by 0.001 (duh!). ms is 5 as it says to the left of the port.
This is the LFO itself, it has a phase driver (which goes -1...1, not 0...1!), some wrapping
out = in - round(in)
and Par shaping block, which amounts toout = (8 - (abs(in) * 16)) * in
.This is the Phase driver:
SR.R is sample rate constant, SR.C is sample rate clock (I guess in Surge terms this means, process() on every sample?). Latch module holds the incoming value and reads it out at SR.C rate. Wrapper is again
out = in - round(in)
. z^-1 ndc is a one sample delay, ndc means "no denormal cancel".That's about it. Not gonna go inside the 2-tap delay block because that's gonna be replaced by some other code anyways.