bob
Runge-Kutte numerical simulation of the Moog analog resonant filter.
Bob is based on bob~ by Miller Puckette in Pure Data. The design is based on the papers by Tim Stilson, Timothy E. Stinchcombe, and Antti Huovilainen.
Syntax
Initialization
iosamps -- number of times of oversampling used in the filtering process. This will determine the maximum sharpness of the filter resonance (Q). More oversampling allows higher Qs, less oversampling will limit the resonance. The default is 2 times (iosamps=0).
istor -- initial disposition of internal data space. Since filtering incorporates a feedback loop of previous output, the initial status of the storage space used is significant. A zero value will clear the space; a non-zero value will allow previous information to remain. The default value is 0.
Performance
asig -- input signal
xcf -- filter cutoff frequency
xres -- filter resonance. Nominally, a value of 4 should be the limit of stability -- above that, the filter oscillates.
xsat -- saturation. This parameter determines at what signal level the "transistors" in the model saturate. The maximum output amplitude is about 2/3 of that value.
According to bob~ manual page, "By default bob~ does one step of 4th-order Runge-Kutte integration per audio sample. This works OK for resonant/cutoff frequencies up to about 1/2 Nyquist. To improve accuracy and/or to extend the range of the filter to higher cutoff frequencies you can oversample by any factor - but note that computation time rises accordingly. At high cutoff frequencies/resonance values the RK approximation can go unstable. You can combat this by raising the oversampling factor. The saturation parameter determines at what signal level the "transistors" in the model saturate. The maximum output amplitude is about 2/3 of that value".
Examples
Here is an example of the bob opcode. It uses the file bob.csd.
See also
Standard Filters: Resonant Low-pass filters
Credits
By: Gleb Rogozinsky 2020
New in version 6.15