svn
Non-linear state variable filter.
It has overdrive control and optional user-defined non-linear transfer function.
Syntax
Initialization
ifn -- if non-zero, a function table number containing the transfer function for the filter non-linearity. This should be mid-point centered and defined in the interval -imx to imx. If zero, the filter employs an internal non-linear map based on a hyperbolic tangent. Defaults to 0.
inm -- if non-zero, a function table number containing a normalising transfer function, generated from ifn (using GEN 4). Defaults to 0.
imx -- The absolute max of the function table domain, which is defined as -imx to imx. Defaults to 1.
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
ahp, alp, abp, abr -- highpass, lowpass, bandpass and bandreject ouputs.
asig -- input
xcf -- filter cutoff frequency (a- or k-rate)
xQ -- filter Q (min 0.5) (a- or k-rate).
kdrive -- overdrive factor. With the internal non-linear map, values above 0.125 will introduce progressively more non-linearities in the filter signal. When using a user-supplied transfer function, the amount of distortion introduced by this parameter will depend on the function employed. A value of 0 makes the filter completely linear. The amount of drive is also dependent on the level of the input signal. If this signal is significantly less than 0dBFS, then proportionally more drive is needed to introduce non-linearities in the signal. With a 0dBFS-level input, 100% drive is achieved with kdrive=1. With hotter input levels, kdrive can be used to moderate the non-linear distortion in the filter.
Examples
Here is an example of the svn opcode. It uses the file svn.csd.
See also
Standard Filters: Resonant Low-pass filters
Credits
Author: Victor Lazzarini
Feb 2021