chris@531
|
1 #N canvas 826 561 694 734 10;
|
chris@531
|
2 #X obj 40 660 dac~ 1 2;
|
robert@464
|
3 #X text 33 22 Karplus Strong;
|
robert@464
|
4 #X text 33 32 ==============;
|
chris@531
|
5 #X obj 40 613 vd~ \$0-wg1;
|
chris@531
|
6 #X obj 120 635 lop~ 1000;
|
chris@531
|
7 #X obj 120 679 s~ \$0-fb1;
|
chris@531
|
8 #X obj 40 286 hip~ 100;
|
chris@531
|
9 #X obj 105 345 r~ \$0-fb1;
|
chris@531
|
10 #X obj 40 368 delwrite~ \$0-wg1 100;
|
chris@531
|
11 #X obj 40 538 *~;
|
chris@531
|
12 #X obj 40 560 *~ 10;
|
chris@531
|
13 #X text 135 286 <<< centre (i.e. DC block) signal with high-pass filter
|
robert@464
|
14 ;
|
chris@531
|
15 #X text 126 492 <<< use potentiometer or fader on second analog in
|
robert@464
|
16 ;
|
chris@531
|
17 #X text 37 190 EXCITATION INPUT:;
|
chris@531
|
18 #X text 37 418 DELAY PERIOD:;
|
chris@531
|
19 #X text 214 655 <<< and decay here [0-0.9999];
|
chris@531
|
20 #X text 155 307 <<< thresholding to remove any consistent noise in
|
chris@531
|
21 the excitation signal;
|
chris@531
|
22 #X obj 40 234 adc~ 1;
|
chris@531
|
23 #X obj 40 466 sig~ 1;
|
chris@531
|
24 #X obj 40 515 -~;
|
chris@531
|
25 #X obj 55 491 adc~ 3;
|
chris@531
|
26 #X obj 40 582 +~ 2;
|
chris@531
|
27 #X text 214 635 <<< set damping here [100-20000];
|
chris@531
|
28 #X obj 120 657 *~ 0.99;
|
chris@531
|
29 #X text 126 573 <<< period range between 2-12ms;
|
chris@531
|
30 #X text 151 505 to set period (or 'length of string');
|
chris@531
|
31 #X text 36 55 This is an example of simple 'Karplus Strong' synthesis
|
chris@531
|
32 ;
|
chris@531
|
33 #X text 36 69 which produces a sound resembling a plucked string by
|
chris@531
|
34 ;
|
chris@531
|
35 #X text 36 84 feeding the filtered output of a delay line back into
|
chris@531
|
36 ;
|
chris@531
|
37 #X text 36 98 itself. Here we use the left audio input as an excitation
|
chris@531
|
38 ;
|
chris@531
|
39 #X text 36 112 mechanism for the string. Try connecting a piezo to
|
chris@531
|
40 bela's;
|
chris@531
|
41 #X text 36 126 audio input and tapping against it. The first analog
|
chris@531
|
42 input;
|
chris@531
|
43 #X text 36 140 sets the length of the string.;
|
chris@531
|
44 #X text 485 15 ............................;
|
chris@531
|
45 #X text 485 25 . ____ ._____ _ .......___ .;
|
chris@531
|
46 #X text 485 35 .| __ )| ____| |....../ _ |.;
|
chris@531
|
47 #X text 485 55 .| |_) | |___| |___ / ___ |.;
|
chris@531
|
48 #X text 485 65 .|____/|_____|_____/_/..._|.io;
|
chris@531
|
49 #X text 485 75 ............................;
|
chris@531
|
50 #X text 485 45 .| __ || __|.| |...../ _| |.;
|
chris@531
|
51 #X obj 40 307 gate-xfer 0.1;
|
chris@531
|
52 #X text 116 234 <<< use piezo or microphone on left audio channel;
|
chris@531
|
53 #X text 140 248 (you can even try hooking up an accelerometer...);
|
chris@531
|
54 #X text 37 200 ----------------;
|
chris@531
|
55 #X text 37 429 ------------;
|
robert@464
|
56 #X connect 3 0 4 0;
|
chris@531
|
57 #X connect 3 0 0 0;
|
chris@531
|
58 #X connect 3 0 0 1;
|
chris@531
|
59 #X connect 4 0 23 0;
|
chris@531
|
60 #X connect 6 0 40 0;
|
robert@464
|
61 #X connect 7 0 8 0;
|
robert@464
|
62 #X connect 9 0 10 0;
|
chris@531
|
63 #X connect 10 0 21 0;
|
chris@531
|
64 #X connect 17 0 6 0;
|
chris@531
|
65 #X connect 18 0 19 0;
|
chris@531
|
66 #X connect 19 0 9 1;
|
chris@531
|
67 #X connect 19 0 9 0;
|
chris@531
|
68 #X connect 20 0 19 1;
|
chris@531
|
69 #X connect 21 0 3 0;
|
chris@531
|
70 #X connect 23 0 5 0;
|
chris@531
|
71 #X connect 40 0 8 0;
|