From 64fdb009695828b788fce074135b20a5e52c5fc4 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Tue, 23 Sep 2003 00:21:28 +0000 Subject: imported version 0.37-0 svn path=/trunk/; revision=1016 --- pd/doc/3.audio.examples/E03.octave.divider.pd | 137 ++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 pd/doc/3.audio.examples/E03.octave.divider.pd (limited to 'pd/doc/3.audio.examples/E03.octave.divider.pd') diff --git a/pd/doc/3.audio.examples/E03.octave.divider.pd b/pd/doc/3.audio.examples/E03.octave.divider.pd new file mode 100644 index 00000000..a0f77844 --- /dev/null +++ b/pd/doc/3.audio.examples/E03.octave.divider.pd @@ -0,0 +1,137 @@ +#N canvas 129 17 793 665 12; +#X obj 477 135 loadbang; +#X obj 32 286 hip~ 5; +#X obj 477 53 adc~ 1; +#X obj 477 190 soundfiler; +#X obj 32 313 output~; +#X text 544 646 updated for Pd version 0.37; +#X obj 478 100 tabwrite~ E03-table; +#X msg 477 162 read ../sound/voice.wav E03-table; +#X obj 117 64 fiddle~ 2048; +#X obj 118 95 unpack; +#X obj 111 199 osc~; +#X obj 118 119 moses 1; +#X obj 77 199 *~; +#X obj 145 147 mtof; +#X obj 145 170 *; +#X msg 194 125 0.5; +#X floatatom 194 154 3 0 0 0 - - -; +#X msg 232 125 15; +#N canvas 0 0 446 202 /SUBPATCH/ 0; +#X obj 261 30 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X obj 100 20 inlet~; +#X obj 99 87 *~; +#X obj 98 159 outlet~; +#X text 381 181 corner; +#X connect 0 0 2 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X coords 0 0 100 100 40 18 1; +#X restore 78 248 pd; +#N canvas 0 0 446 202 /SUBPATCH/ 0; +#X obj 261 30 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X obj 100 20 inlet~; +#X obj 99 87 *~; +#X obj 98 159 outlet~; +#X text 381 181 corner; +#X connect 0 0 2 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X coords 0 0 100 100 40 18 1; +#X restore 32 248 pd; +#X obj 78 222 *~ 2; +#X obj 194 100 loadbang; +#N canvas 414 195 613 302 looper 0; +#N canvas 0 0 450 300 graph1 0; +#X array E03-table 44103 float 0; +#X coords 0 1.02 44103 -1.02 200 130 1; +#X restore 349 22 graph; +#X text 347 161 ---- 44103 samples ----; +#X obj 35 77 +~ 1; +#X obj 35 25 phasor~ 1; +#X obj 35 50 *~ 44100; +#X obj 35 106 tabread4~ E03-table; +#X obj 35 132 outlet~; +#X text 46 238 one-second sample reader loop. You can replace this +with an adc~ if you want to go live.; +#X connect 2 0 5 0; +#X connect 3 0 4 0; +#X connect 4 0 2 0; +#X connect 5 0 6 0; +#X restore 31 30 pd looper; +#X text 561 141 re-read original sample; +#X obj 489 77 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#N canvas 300 203 758 306 delay 0; +#X obj 15 222 outlet~; +#X obj 14 21 inlet~; +#X obj 15 102 loadbang; +#X obj 14 49 delwrite~ E03-del 40; +#X obj 15 195 delread~ E03-del; +#X obj 15 152 expr 1000*1024/$f1; +#X obj 15 128 samplerate~; +#X text 208 47 write to delay line which has enough memory to hold +40 msec; +#X text 125 128 get sample rate at load time; +#X text 185 152 divide 1024 by sample rate to give time in seconds +\; multiply by 1000 to convert to milliseconds.; +#X text 168 197 read from the delay line at the calculater delay; +#X text 317 268 1024-sample delay; +#X connect 1 0 3 0; +#X connect 2 0 6 0; +#X connect 4 0 0 0; +#X connect 5 0 4 0; +#X connect 6 0 5 0; +#X restore 31 71 pd delay; +#X text 242 4 OCTAVE DIVIDING VIA RING MODULATION; +#X text 508 75 <-- record a sample; +#X text 265 125 <-- choose an effect; +#X text 157 231 on/off for original; +#X text 128 247 <--and processed sounds; +#X text 196 274 This patch demonstrates using ring modulation to alias +a sound down one octave. The ring modulation itself ("osc~" and multiplier) +is easy. (We step it up by a factor of 2 to balance the original better.) +; +#X text 198 340 Harder is getting the fundamental frequency of the +original sound. We do this with the complicated "fiddle~" object \, +which puts out a stream of analysis data for an incoming signal. The +"2048" argument specifies the analysis window size. The analysis is +most closely aligned with what the sound was doing at the middle of +the window \, i.e. \, 1024 samples ago. The "pd delay" window delays +the signal itself 1024 samples so it will be as tightly synchronized +with the analysis data as possible. (If you're doing this on a real-time +input \, you might drop the delay and settle for less perfect synchronization.) +; +#X text 198 512 About fiddle~ \, suffice it to say that the third outlet +contains (pitch \, amplitude) pairs. We unpack the pitch and strip +out any zeros (when fiddle~ fails to find a pitch it outputs zero but +we'd rather stick with the most recent good one). This is converted +from MIDI to Hertz \, and multiplied by 1/2 to control the modulation +oscillator. (You can also try large-ish integers which leave the pitch +intact but introduce funny formants.); +#X connect 0 0 7 0; +#X connect 1 0 4 0; +#X connect 1 0 4 1; +#X connect 2 0 6 0; +#X connect 7 0 3 0; +#X connect 8 2 9 0; +#X connect 9 0 11 0; +#X connect 10 0 12 1; +#X connect 11 1 13 0; +#X connect 12 0 20 0; +#X connect 13 0 14 0; +#X connect 14 0 10 0; +#X connect 15 0 16 0; +#X connect 16 0 14 1; +#X connect 17 0 16 0; +#X connect 18 0 1 0; +#X connect 19 0 1 0; +#X connect 20 0 18 0; +#X connect 21 0 15 0; +#X connect 22 0 8 0; +#X connect 22 0 25 0; +#X connect 24 0 6 0; +#X connect 25 0 19 0; +#X connect 25 0 12 0; -- cgit v1.2.1