aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/3.audio.examples/F04.waveshaping.pulse.pd
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2003-09-23 00:21:28 +0000
committerThomas Grill <xovo@users.sourceforge.net>2003-09-23 00:21:28 +0000
commit64fdb009695828b788fce074135b20a5e52c5fc4 (patch)
treea05144197dd339721b6d4a3a0927f7596e8872b6 /pd/doc/3.audio.examples/F04.waveshaping.pulse.pd
parenta30193fcd726552364de74984b200be2c30723e7 (diff)
imported version 0.37-0
svn path=/trunk/; revision=1016
Diffstat (limited to 'pd/doc/3.audio.examples/F04.waveshaping.pulse.pd')
-rw-r--r--pd/doc/3.audio.examples/F04.waveshaping.pulse.pd133
1 files changed, 133 insertions, 0 deletions
diff --git a/pd/doc/3.audio.examples/F04.waveshaping.pulse.pd b/pd/doc/3.audio.examples/F04.waveshaping.pulse.pd
new file mode 100644
index 00000000..5724aeba
--- /dev/null
+++ b/pd/doc/3.audio.examples/F04.waveshaping.pulse.pd
@@ -0,0 +1,133 @@
+#N canvas 240 229 900 586 12;
+#X obj 220 171 line~;
+#X obj 220 147 pack 0 50;
+#X floatatom 220 46 0 0 0 0 - - -;
+#X obj 70 108 *~;
+#X obj 220 72 / 10;
+#X obj 220 96 moses 0;
+#X msg 220 120 0;
+#X text 215 28 bandwidth;
+#X obj 78 141 *~;
+#X obj 18 141 sig~ 1;
+#X obj 39 194 /~;
+#X obj 54 168 +~;
+#X text 111 141 X^2;
+#X text 84 171 1+X^2;
+#X text 71 196 1/(1+X^2);
+#X text 28 4 ANOTHER PULSE WIDTH MOD ALGORITHM;
+#N canvas 0 0 450 300 graph1 0;
+#X array F04-signal 882 float 0;
+#X coords 0 1.02 882 -1.02 200 130 1;
+#X restore 646 328 graph;
+#N canvas 0 0 450 300 graph1 0;
+#X array F04-spectrum 259 float 0;
+#X coords 0 1.01 258 -0.008 256 200 1;
+#X restore 587 38 graph;
+#X text 646 461 ---- 0.02 seconds ----;
+#X text 614 237 2;
+#X text 645 237 4;
+#X text 584 237 0;
+#X text 622 252 -- partial number --;
+#X text 677 237 6;
+#X text 710 237 8;
+#X text 738 237 10;
+#X text 770 237 12;
+#X text 802 237 14;
+#X obj 40 277 output~;
+#X obj 39 246 hip~;
+#N canvas 122 211 558 609 fft 0;
+#X obj 19 61 inlet~;
+#X obj 224 210 inlet;
+#X obj 29 92 rfft~;
+#X obj 29 125 *~;
+#X obj 60 125 *~;
+#X obj 29 155 sqrt~;
+#X obj 332 109 block~ 4096 1;
+#X obj 29 181 biquad~ 0 0 0 0 1;
+#X text 93 93 Fourier series;
+#X text 98 146 magnitude;
+#X text 96 131 calculate;
+#X text 21 3 This subpatch computes the spectrum of the incoming signal
+with a (rectangular windowed) FFT. FFTs aren't properly introduced
+until much later.;
+#X text 83 61 signal to analyze;
+#X text 193 164 delay two samples;
+#X text 191 182 for better graphing;
+#X obj 264 434 samplerate~;
+#X obj 251 255 metro 500;
+#X obj 251 232 inlet;
+#X text 301 232 toggle to graph repeatedly;
+#X text 278 210 bang to graph once;
+#X obj 29 205 /~ 4096;
+#X obj 264 409 bang~;
+#X obj 264 457 / 512;
+#X obj 19 295 tabwrite~ F04-signal;
+#X obj 250 291 tabwrite~ F04-spectrum;
+#X obj 264 483 s freq/2;
+#X msg 224 321 \; pd dsp 1;
+#X connect 0 0 2 0;
+#X connect 0 0 23 0;
+#X connect 1 0 23 0;
+#X connect 1 0 24 0;
+#X connect 1 0 26 0;
+#X connect 2 0 3 0;
+#X connect 2 0 3 1;
+#X connect 2 1 4 0;
+#X connect 2 1 4 1;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 7 0 20 0;
+#X connect 15 0 22 0;
+#X connect 16 0 23 0;
+#X connect 16 0 24 0;
+#X connect 17 0 16 0;
+#X connect 17 0 26 0;
+#X connect 20 0 24 0;
+#X connect 21 0 15 0;
+#X connect 22 0 25 0;
+#X restore 93 248 pd fft;
+#X obj 153 227 bng 18 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 153 248 tgl 18 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X text 174 247 <-- repeatedly;
+#X text 175 227 <-- graph once;
+#X obj 69 81 osc~;
+#X text 632 540 updated for Pd version 0.37;
+#X text 23 515 NOTE: The PAF algorithm is protected by patents belonging
+to IRCAM. Noncommercial use seems to be fine with them but contact
+them first if you want to sell something using this.;
+#X text 24 473 This is the form of pulse train used in the original
+Phase Aligned Formant (PAF) algorithm.;
+#X text 23 342 Here we use waveshaping to make another form of pulse
+train. This one has a neat spectrum: the partials drop off exponentially
+(with the "bandwidth" controlling the rate of dropoff.) In later patches
+we'll use a wavetable to do the waveshaping but for simplicity \, it's
+done algebraically here. The oscillator runs at half the fundamental
+frequency. The symmetry of the waveshaping doubles the frequency of
+the output.;
+#X text 849 222 0;
+#X text 846 35 1;
+#X obj 69 56 r freq/2;
+#X connect 0 0 3 1;
+#X connect 1 0 0 0;
+#X connect 2 0 4 0;
+#X connect 3 0 8 0;
+#X connect 3 0 8 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 1 1 0;
+#X connect 6 0 1 0;
+#X connect 8 0 11 1;
+#X connect 9 0 10 0;
+#X connect 9 0 11 0;
+#X connect 10 0 29 0;
+#X connect 10 0 30 0;
+#X connect 11 0 10 1;
+#X connect 29 0 28 0;
+#X connect 29 0 28 1;
+#X connect 31 0 30 1;
+#X connect 32 0 30 2;
+#X connect 35 0 3 0;
+#X connect 42 0 35 0;