here is a Harmonizer patch from Thomas Musil. i haven't tried it yet myself, but it should explain a few things. the idea is to simulate the first spinning-head tape pitch shifters. have a close look at the vdelay object, as it shifts pitch when you change the delay length [at least till the buffer runs out...]
good luck! derek
Pixelcorrection@wmconnect.com wrote:
I want to build a pd patch that is capable of raising and lowering the pitch of incoming signals in real time. Is there an object that conviently does this already? How about a help file or dsp technic for changing the pitch of a live signal?
#N canvas 291 177 585 489 10; #X obj 50 462 hip~ 5; #X obj 109 340 *~; #X obj 198 277 line~; #X obj 198 253 pack 0 200; #X obj 264 142 moses 1; #X msg 239 142 1; #X obj 50 144 exp; #X obj 50 249 /; #X obj 166 186 * 0.001; #X obj 309 346 line~; #X obj 310 320 pack 0 200; #X text 352 244 delay (msec); #X obj 109 364 +~; #X msg 310 296 1; #X obj 310 272 moses 1.5; #X obj 50 387 cos~; #X obj 50 411 *~; #X obj 50 438 +~; #X obj 129 302 wrap~; #X obj 252 340 *~; #X obj 252 370 +~; #X obj 195 395 cos~; #X obj 195 419 *~; #X obj 166 210 t b f; #X floatatom 50 273; #X obj 50 298 phasor~ 0; #X obj 129 278 +~ 0.5; #X obj 50 339 -~ 0.5; #X obj 50 363 *~ 0.5; #X obj 195 339 -~ 0.5; #X obj 195 369 *~ 0.5; #X floatatom 239 166; #X obj 50 192 - 1; #X obj 50 120 * 0.05776; #X obj 50 216 * -1; #X text 91 78 <-- transposition; #X text 96 96 (halftones); #X text 116 163 speed; #X text 115 176 change; #X text 298 116 <--window (msec); #X text 82 243 tape head; #X text 83 255 rotation speed; #X obj 4 14 inlet~; #X obj 50 483 outlet~; #X obj 50 79 inlet; #X obj 264 117 inlet; #X obj 310 245 inlet; #X obj 109 387 vd~ $1; #X obj 252 397 vd~ $1; #X obj 4 34 delwrite~ $1 2000; #X text 55 10 HARMONISER; #X connect 0 0 43 0; #X connect 1 0 12 0; #X connect 2 0 1 1; #X connect 2 0 19 1; #X connect 3 0 2 0; #X connect 4 0 5 0; #X connect 4 1 31 0; #X connect 5 0 31 0; #X connect 6 0 32 0; #X connect 7 0 24 0; #X connect 8 0 23 0; #X connect 9 0 12 1; #X connect 9 0 20 1; #X connect 10 0 9 0; #X connect 12 0 47 0; #X connect 13 0 10 0; #X connect 14 0 13 0; #X connect 14 1 10 0; #X connect 15 0 16 0; #X connect 16 0 17 0; #X connect 17 0 0 0; #X connect 18 0 19 0; #X connect 18 0 29 0; #X connect 19 0 20 0; #X connect 20 0 48 0; #X connect 21 0 22 0; #X connect 22 0 17 1; #X connect 23 0 7 0; #X connect 23 1 7 1; #X connect 24 0 25 0; #X connect 25 0 1 0; #X connect 25 0 27 0; #X connect 25 0 26 0; #X connect 26 0 18 0; #X connect 27 0 28 0; #X connect 28 0 15 0; #X connect 29 0 30 0; #X connect 30 0 21 0; #X connect 31 0 3 0; #X connect 31 0 8 0; #X connect 32 0 34 0; #X connect 33 0 6 0; #X connect 34 0 7 0; #X connect 42 0 49 0; #X connect 44 0 33 0; #X connect 45 0 4 0; #X connect 46 0 14 0; #X connect 47 0 16 1; #X connect 48 0 22 1;
#N canvas 242 46 467 296 10; #X obj 162 210 harmonizer lala; #X obj 162 30 osc~ 440; #X obj 162 64 *~ 0.2; #X obj 162 272 dac~ 1 2; #X floatatom 190 92; #X text 219 92 <-- transposition; #X text 224 110 (halftones); #X text 249 141 <--window (msec); #X floatatom 218 141; #X text 278 173 delay (msec); #X floatatom 247 173; #X msg 298 63 100; #X obj 298 40 loadbang; #X connect 0 0 3 0; #X connect 0 0 3 1; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 4 0 0 1; #X connect 8 0 0 2; #X connect 10 0 0 3; #X connect 11 0 8 0; #X connect 12 0 11 0;