chris@531
|
1 #N canvas 646 209 853 1174 10;
|
chris@531
|
2 #X text 29 17 SAMPLE-ACCURATE ENVELOPE TRIGGER;
|
chris@531
|
3 #X text 29 27 ================================;
|
chris@531
|
4 #X obj 33 543 /~ 44100;
|
chris@531
|
5 #X obj 78 523 samplerate~;
|
chris@531
|
6 #X obj 78 503 loadbang;
|
chris@531
|
7 #X obj 33 619 rpole~;
|
chris@531
|
8 #X obj 33 477 sig~ 1;
|
chris@531
|
9 #X obj 438 571 sig~ 0.5;
|
chris@531
|
10 #X obj 33 937 *~;
|
chris@531
|
11 #X obj 399 550 *~ -1;
|
chris@531
|
12 #X obj 33 801 *~ 512;
|
chris@531
|
13 #X obj 33 639 clip~ 0 1;
|
chris@531
|
14 #X obj 33 822 tabread4~ env1;
|
chris@531
|
15 #X obj 33 780 *~;
|
chris@531
|
16 #X obj 399 424 abs~;
|
chris@531
|
17 #X obj 48 736 sig~ 1;
|
chris@531
|
18 #X obj 48 759 /~;
|
chris@531
|
19 #X obj 48 915 osc~ 220;
|
chris@531
|
20 #X obj 48 895 +~ 50;
|
chris@531
|
21 #X obj 48 855 *~;
|
chris@531
|
22 #X obj 112 736 clip~ 1e-05 100000;
|
robert@464
|
23 #N canvas 0 22 450 278 (subpatch) 0;
|
robert@464
|
24 #X array env1 512 float 3;
|
robert@464
|
25 #A 0 0 0.0625 0.0883883 0.108253 0.125 0.139754 0.153093 0.165359 0.176777
|
robert@464
|
26 0.1875 0.197642 0.207289 0.216506 0.225347 0.233854 0.242061 0.25 0.257694
|
robert@464
|
27 0.265165 0.272431 0.279509 0.286411 0.293151 0.299739 0.306186 0.3125
|
robert@464
|
28 0.318689 0.32476 0.330719 0.336573 0.342327 0.347985 0.353553 0.359035
|
robert@464
|
29 0.364434 0.369755 0.375 0.380173 0.385276 0.390312 0.395285 0.400195
|
robert@464
|
30 0.405046 0.40984 0.414578 0.419263 0.423896 0.428478 0.433013 0.4375
|
robert@464
|
31 0.441942 0.446339 0.450694 0.455007 0.459279 0.463512 0.467707 0.471865
|
robert@464
|
32 0.475986 0.480072 0.484123 0.488141 0.492125 0.496078 0.5 0.503891
|
robert@464
|
33 0.507752 0.511585 0.515388 0.519164 0.522913 0.526634 0.53033 0.534
|
robert@464
|
34 0.537645 0.541266 0.544862 0.548435 0.551985 0.555512 0.559017 0.5625
|
robert@464
|
35 0.565962 0.569402 0.572822 0.576222 0.579601 0.582961 0.586302 0.589624
|
robert@464
|
36 0.592927 0.596212 0.599479 0.602728 0.60596 0.609175 0.612372 0.615554
|
robert@464
|
37 0.618718 0.621867 0.625 0.628117 0.631219 0.634306 0.637377 0.640434
|
robert@464
|
38 0.643477 0.646505 0.649519 0.652519 0.655506 0.658478 0.661438 0.664384
|
robert@464
|
39 0.667317 0.670238 0.673146 0.676041 0.678924 0.681795 0.684653 0.6875
|
robert@464
|
40 0.690335 0.693159 0.695971 0.698771 0.701561 0.704339 0.707107 0.709864
|
robert@464
|
41 0.71261 0.715345 0.71807 0.720785 0.72349 0.726184 0.728869 0.731544
|
robert@464
|
42 0.734209 0.736864 0.73951 0.742146 0.744773 0.747391 0.75 0.7526 0.75519
|
robert@464
|
43 0.757772 0.760345 0.76291 0.765466 0.768013 0.770552 0.773082 0.775605
|
robert@464
|
44 0.778119 0.780625 0.783123 0.785613 0.788095 0.790569 0.793036 0.795495
|
robert@464
|
45 0.797947 0.800391 0.802827 0.805256 0.807678 0.810093 0.8125 0.8149
|
robert@464
|
46 0.817294 0.81968 0.822059 0.824432 0.826797 0.829156 0.831508 0.833854
|
robert@464
|
47 0.836193 0.838525 0.840851 0.843171 0.845484 0.847791 0.850092 0.852386
|
robert@464
|
48 0.854675 0.856957 0.859233 0.861503 0.863767 0.866025 0.868278 0.870524
|
robert@464
|
49 0.872765 0.875 0.877229 0.879453 0.881671 0.883883 0.88609 0.888292
|
robert@464
|
50 0.890488 0.892679 0.894864 0.897044 0.899218 0.901388 0.903552 0.905711
|
robert@464
|
51 0.907865 0.910014 0.912157 0.914296 0.91643 0.918559 0.920682 0.922801
|
robert@464
|
52 0.924916 0.927025 0.929129 0.931229 0.933324 0.935414 0.9375 0.939581
|
robert@464
|
53 0.941657 0.943729 0.945797 0.947859 0.949918 0.951972 0.954021 0.956066
|
robert@464
|
54 0.958107 0.960143 0.962175 0.964203 0.966227 0.968246 0.970261 0.972272
|
robert@464
|
55 0.974279 0.976281 0.97828 0.980274 0.982265 0.984251 0.986233 0.988212
|
robert@464
|
56 0.990186 0.992157 0.994123 0.996086 0.998045 1 0.992172 0.984375 0.976609
|
robert@464
|
57 0.968874 0.961169 0.953495 0.945852 0.938239 0.930657 0.923106 0.915586
|
robert@464
|
58 0.908097 0.900638 0.89321 0.885813 0.878447 0.871111 0.863806 0.856532
|
robert@464
|
59 0.849289 0.842076 0.834894 0.827743 0.820623 0.813533 0.806474 0.799446
|
robert@464
|
60 0.792449 0.785483 0.778547 0.771642 0.764767 0.757924 0.751111 0.744329
|
robert@464
|
61 0.737578 0.730857 0.724168 0.717509 0.71088 0.704283 0.697716 0.69118
|
robert@464
|
62 0.684675 0.678201 0.671757 0.665344 0.658962 0.652611 0.64629 0.64
|
robert@464
|
63 0.633741 0.627513 0.621315 0.615148 0.609012 0.602907 0.596832 0.590788
|
robert@464
|
64 0.584775 0.578793 0.572841 0.56692 0.56103 0.555171 0.549343 0.543545
|
robert@464
|
65 0.537778 0.532041 0.526336 0.520661 0.515017 0.509404 0.503822 0.49827
|
robert@464
|
66 0.492749 0.487259 0.481799 0.476371 0.470973 0.465605 0.460269 0.454963
|
robert@464
|
67 0.449689 0.444444 0.439231 0.434048 0.428897 0.423775 0.418685 0.413625
|
robert@464
|
68 0.408597 0.403599 0.398631 0.393695 0.388789 0.383914 0.37907 0.374256
|
robert@464
|
69 0.369473 0.364721 0.36 0.355309 0.35065 0.346021 0.341423 0.336855
|
robert@464
|
70 0.332318 0.327812 0.323337 0.318893 0.314479 0.310096 0.305744 0.301423
|
robert@464
|
71 0.297132 0.292872 0.288643 0.284444 0.280277 0.27614 0.272034 0.267958
|
robert@464
|
72 0.263914 0.2599 0.255917 0.251965 0.248043 0.244152 0.240292 0.236463
|
robert@464
|
73 0.232664 0.228897 0.22516 0.221453 0.217778 0.214133 0.210519 0.206936
|
robert@464
|
74 0.203383 0.199862 0.196371 0.19291 0.189481 0.186082 0.182714 0.179377
|
robert@464
|
75 0.176071 0.172795 0.16955 0.166336 0.163153 0.16 0.156878 0.153787
|
robert@464
|
76 0.150727 0.147697 0.144698 0.14173 0.138793 0.135886 0.13301 0.130165
|
robert@464
|
77 0.127351 0.124567 0.121815 0.119093 0.116401 0.113741 0.111111 0.108512
|
robert@464
|
78 0.105944 0.103406 0.1009 0.0984237 0.0959785 0.093564 0.0911803 0.0888274
|
robert@464
|
79 0.0865052 0.0842138 0.0819531 0.0797232 0.077524 0.0753556 0.073218
|
robert@464
|
80 0.0711111 0.069035 0.0669896 0.064975 0.0629911 0.0610381 0.0591157
|
robert@464
|
81 0.0572241 0.0553633 0.0535332 0.0517339 0.0499654 0.0482276 0.0465206
|
robert@464
|
82 0.0448443 0.0431988 0.041584 0.04 0.0384467 0.0369243 0.0354325 0.0339715
|
robert@464
|
83 0.0325413 0.0311419 0.0297732 0.0284352 0.027128 0.0258516 0.0246059
|
robert@464
|
84 0.023391 0.0222068 0.0210534 0.0199308 0.0188389 0.0177778 0.0167474
|
robert@464
|
85 0.0157478 0.0147789 0.0138408 0.0129335 0.0120569 0.0112111 0.010396
|
robert@464
|
86 0.00961169 0.00885813 0.00813533 0.00744329 0.00678201 0.00615148 0.00555171
|
robert@464
|
87 0.0049827 0.00444444 0.00393695 0.00346021 0.00301423 0.002599 0.00221453
|
robert@464
|
88 0.00186082 0.00153787 0.00124567 0.000984237 0.000753556 0.000553633
|
robert@464
|
89 0.000384467 0.000246059 0.000138408 6.15148e-05 1.53787e-05 0;
|
robert@464
|
90 #X coords 0 1 512 0 512 64 1 0 0;
|
chris@531
|
91 #X restore 34 1026 graph;
|
chris@531
|
92 #X text 475 477 if greater than threshold output 1;
|
chris@531
|
93 #X text 513 521 differentiator;
|
chris@531
|
94 #X text 512 539 (generates impulse on positive trigger (0->1);
|
chris@531
|
95 #X text 107 620 signal-rate counter;
|
chris@531
|
96 #X text 497 618 rpole~ coeff to 0;
|
chris@531
|
97 #X text 410 1004 pre-generated envelope;
|
chris@531
|
98 #X obj 112 692 *~;
|
chris@531
|
99 #X obj 399 476 hv_gte~;
|
chris@531
|
100 #X obj 399 592 hv_lte~;
|
chris@531
|
101 #X text 116 891 kickdrum 101 :);
|
chris@531
|
102 #X obj 399 392 receive~ excitationSignal;
|
chris@531
|
103 #X obj 438 456 receive~ threshold;
|
chris@531
|
104 #X obj 112 672 receive~ envDuration;
|
chris@531
|
105 #X obj 38 311 send~ excitationSignal;
|
chris@531
|
106 #X obj 198 311 send~ threshold;
|
chris@531
|
107 #X obj 318 311 send~ envDuration;
|
chris@531
|
108 #X obj 33 967 dac~;
|
chris@531
|
109 #X text 29 57 Sample-accurate signal processing can often be hard to
|
chris@531
|
110 ;
|
chris@531
|
111 #X text 29 71 do in puredata \, which generally works on a per-block
|
chris@531
|
112 ;
|
chris@531
|
113 #X text 29 85 basis. In this example we use a combination of;
|
chris@531
|
114 #X text 95 102 and;
|
chris@531
|
115 #X obj 125 102 rpole~;
|
chris@531
|
116 #X obj 48 875 *~ 1000;
|
chris@531
|
117 #X obj 112 714 *~ 0.25;
|
chris@531
|
118 #X obj 444 507 sig~ 1;
|
chris@531
|
119 #X obj 399 528 rzero~ 1;
|
chris@531
|
120 #X text 187 102 objects to perform;
|
chris@531
|
121 #X text 29 120 sample-accurate envelope triggering based on the;
|
chris@531
|
122 #X text 29 134 signal fed into the first audio channel.;
|
chris@531
|
123 #X obj 38 210 adc~ 1;
|
chris@531
|
124 #X obj 198 240 adc~ 3;
|
chris@531
|
125 #X obj 318 280 adc~ 4;
|
chris@531
|
126 #X text 252 240 use a potentiometer on first analog in to set;
|
chris@531
|
127 #X text 252 253 triggering threshold...;
|
chris@531
|
128 #X text 382 280 ...second analog in sets envelope duration;
|
chris@531
|
129 #X obj 32 102 rzero~;
|
chris@531
|
130 #X text 605 12 ............................;
|
chris@531
|
131 #X text 605 22 . ____ ._____ _ .......___ .;
|
chris@531
|
132 #X text 605 32 .| __ )| ____| |....../ _ |.;
|
chris@531
|
133 #X text 605 52 .| |_) | |___| |___ / ___ |.;
|
chris@531
|
134 #X text 605 62 .|____/|_____|_____/_/..._|.io;
|
chris@531
|
135 #X text 605 72 ............................;
|
chris@531
|
136 #X text 605 42 .| __ || __|.| |...../ _| |.;
|
chris@531
|
137 #X text 475 424 take absolute value of signal;
|
chris@531
|
138 #X text 497 630 (coefficient of 1 causes rpole~ to;
|
chris@531
|
139 #X text 497 643 accumulate input samples);
|
chris@531
|
140 #X text 108 542 setting input to (1/sampleRate) means;
|
chris@531
|
141 #X text 108 555 rpole~ counts seconds when its coefficient;
|
chris@531
|
142 #X text 108 569 is set to 1 (resets when 0);
|
chris@531
|
143 #X text 147 822 use envelope value for volume and frequency;
|
chris@531
|
144 #X text 479 594 -> boolean (x != x);
|
chris@531
|
145 #X text 92 210 Left audio input for excitation (a piezo disk works
|
chris@531
|
146 well);
|
chris@531
|
147 #X text 111 767 multiplies counter output allowing to alter;
|
chris@531
|
148 #X text 111 781 playback speed of envelope;
|
chris@531
|
149 #X text 497 607 resets counter by briefly setting;
|
chris@531
|
150 #X connect 2 0 5 0;
|
chris@531
|
151 #X connect 3 0 2 1;
|
chris@531
|
152 #X connect 4 0 3 0;
|
chris@531
|
153 #X connect 5 0 11 0;
|
chris@531
|
154 #X connect 6 0 2 0;
|
chris@531
|
155 #X connect 7 0 30 1;
|
chris@531
|
156 #X connect 8 0 38 0;
|
chris@531
|
157 #X connect 8 0 38 1;
|
chris@531
|
158 #X connect 9 0 30 0;
|
chris@531
|
159 #X connect 10 0 12 0;
|
chris@531
|
160 #X connect 11 0 13 0;
|
chris@531
|
161 #X connect 12 0 8 0;
|
chris@531
|
162 #X connect 12 0 19 0;
|
chris@531
|
163 #X connect 12 0 19 1;
|
chris@531
|
164 #X connect 13 0 10 0;
|
chris@531
|
165 #X connect 14 0 29 0;
|
chris@531
|
166 #X connect 15 0 16 0;
|
chris@531
|
167 #X connect 16 0 13 1;
|
chris@531
|
168 #X connect 17 0 8 1;
|
robert@464
|
169 #X connect 18 0 17 0;
|
chris@531
|
170 #X connect 19 0 44 0;
|
chris@531
|
171 #X connect 20 0 16 1;
|
chris@531
|
172 #X connect 28 0 45 0;
|
chris@531
|
173 #X connect 29 0 47 0;
|
chris@531
|
174 #X connect 30 0 5 1;
|
chris@531
|
175 #X connect 32 0 14 0;
|
chris@531
|
176 #X connect 33 0 29 1;
|
chris@531
|
177 #X connect 34 0 28 0;
|
chris@531
|
178 #X connect 34 0 28 1;
|
chris@531
|
179 #X connect 44 0 18 0;
|
chris@531
|
180 #X connect 45 0 20 0;
|
chris@531
|
181 #X connect 46 0 47 1;
|
chris@531
|
182 #X connect 47 0 9 0;
|
chris@531
|
183 #X connect 51 0 35 0;
|
chris@531
|
184 #X connect 52 0 36 0;
|
chris@531
|
185 #X connect 53 0 37 0;
|