aboutsummaryrefslogtreecommitdiff
path: root/doc/help/cyclone/svf~-help.pd
diff options
context:
space:
mode:
Diffstat (limited to 'doc/help/cyclone/svf~-help.pd')
-rw-r--r--doc/help/cyclone/svf~-help.pd114
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;