diff options
Diffstat (limited to 'doc/help/cyclone/svf~-help.pd')
-rw-r--r-- | doc/help/cyclone/svf~-help.pd | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/doc/help/cyclone/svf~-help.pd b/doc/help/cyclone/svf~-help.pd new file mode 100644 index 0000000..5c298f9 --- /dev/null +++ b/doc/help/cyclone/svf~-help.pd @@ -0,0 +1,114 @@ +#N canvas 1281 327 924 425 10; +#X declare -lib cyclone; +#X obj 407 306 dac~; +#N canvas 324 234 556 460 svf_part2 0; +#X text -1 306 onepole~.help contains yet another example.; +#X text -1 382 svf~ accepts arguments or max messages to change the +frequency input mode. it is generally recommended to set the mode with +an argument and leave it constant \, to avoid confusion.; +#X text -1 244 try sweeping the cutoff frequency in linear mode \, +then in radians mode \, to appreciate the difference. a similar principle +operates in the amplitude domain \, where exponential audio faders +are used to match our logarithmic perception of loudness.; +#X text -51 134 linear; +#X text -27 81 Hz; +#X text -1 177 in this mode \, input values from (0 -> 1) are interpreted +as radians \, producing a quarter-cycle sinusoidal mapping to cutoff +frequencies. this conforms the frequency mapping to a response that +is closer to our logarithmic perception of pitch.; +#X text -1 125 this mode is essentially the same \, but with a normalized +input range. linear input values from (0 -> 1) are mapped to cutoff +frequencies in the effective range \, (0 -> fs/4).; +#X text -1 72 this is the default mode. input values set the cutoff +frequency directly. therefore \, the input range is the same as the +cutoff frequency (0 -> fs/4) \, and response is linear.; +#X text -1 9 svf~ has three different modes for mapping input values +onto cutoff frequency. these are mainly for convenience \, but they +may also improve efficiency slightly.; +#X text -1 329 since svf~ only samples its control inputs once per +vector \, it is more efficient to use the radians mode than to do logarithmic +scaling outside the object at audio rate.; +#X text -59 191 radians; +#X restore 617 344 pd svf_part2; +#X text 16 12 state-variable filter; +#X text 8 273 special thanks to 2up; +#X msg 379 81 0.5; +#X text 545 118 frequency range is 0 - f(s)/4; +#X obj 409 151 noise~; +#X text 8 158 Floats or signals can modify these in real-time. The +value of these parameters is only sampled once per signal vector.; +#X text 8 138 Arguments are cutoff frequency (Hz) \, and resonance +(0-1).; +#X text 8 93 One of its advantages is that the it produces low-pass +\, high-pass \, band-pass \, and band-reject (notch) output simultaneously +- so all four are available in parallel.; +#X text 8 65 svf~ implements Chamberlin's state-variable filter algorithm. +; +#X msg 422 86 37; +#X text 553 164 left: (signal) filter input; +#X text 527 254 outputs: lowpass \, highpass \, bandpass \, notch; +#X text 553 192 right: (signal/float) resonance (0 - 1); +#X text 553 178 middle: (signal/float) cutoff frequency; +#X obj 346 25 loadbang; +#X obj 458 106 * 11025; +#X obj 458 85 / 512; +#X floatatom 458 127 0 0 0 0 - - -; +#N canvas 40 55 716 389 svf_algorithm 0; +#X text 242 290 bandstop = lowpass + hipass \;; +#X text 59 179 this is the dsp loop. note how the calculations work +together to produce all four outputs simultaneously.; +#X text 62 123 first \, convert hz to radians (this step is not necessary +in radians input mode); +#X text 44 82 this is the basic algorithm inside svf~:; +#X text 237 137 cf_radians = sin(2. * PI * cf_hz * x->ifs) \;; +#X text 242 258 bandpass = bandpass + cf_radians * hipass \;; +#X text 242 242 hipass = in_samp - lowpass - q * bandpass \;; +#X text 242 226 lowpass = lowpass + (cf_radians * bandpass) \;; +#X text 242 274 bandpass = bandpass - (bandpass ^ 3.) * 0.0001 \;; +#X restore 499 344 pd svf_algorithm; +#X text 8 240 (float) resonance (0-1); +#X text 8 226 (float) cutoff frequency (Hz); +#X text 8 212 arguments (optional):; +#X obj 526 201 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 493 201 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 460 201 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 427 201 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 508 219 *~ 0; +#X obj 475 219 *~ 0; +#X obj 442 219 *~ 0; +#X obj 409 219 *~ 0; +#X floatatom 507 151 0 0 0 0 - - -; +#X obj 498 12 import cyclone; +#X obj 409 175 svf~ 797 0.5; +#X obj 409 269 *~ 0.7; +#X obj 464 54 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 3700 1; +#X connect 4 0 32 0; +#X connect 6 0 34 0; +#X connect 11 0 36 0; +#X connect 16 0 4 0; +#X connect 16 0 11 0; +#X connect 16 0 27 0; +#X connect 17 0 19 0; +#X connect 18 0 17 0; +#X connect 19 0 34 1; +#X connect 24 0 28 1; +#X connect 25 0 29 1; +#X connect 26 0 30 1; +#X connect 27 0 31 1; +#X connect 28 0 35 0; +#X connect 29 0 35 0; +#X connect 30 0 35 0; +#X connect 31 0 35 0; +#X connect 32 0 34 2; +#X connect 34 0 31 0; +#X connect 34 1 30 0; +#X connect 34 2 29 0; +#X connect 34 3 28 0; +#X connect 35 0 0 0; +#X connect 35 0 0 1; +#X connect 36 0 18 0; |