aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/3.audio.examples/33.sampler.oneshot.pd
blob: 75ce91536c5c5b0947d495b29e60cba072471d19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#N canvas 34 0 994 773 12;
#X msg 538 26 \; pd dsp 1;
#X msg 622 26 \; pd dsp 0;
#X text 563 64 ON;
#X text 641 64 OFF;
#X graph graph1 0 -1.02 176403 1.02 746 290 946 160;
#X array sample-table 176403 float 0;
#X pop;
#X obj 583 520 loadbang;
#X floatatom 72 407 0 0 0;
#N canvas 159 26 495 266 output 0;
#X obj 406 192 t b;
#X obj 406 132 f;
#X obj 406 72 inlet;
#X text 413 35 mute;
#X obj 406 222 f;
#X msg 510 214 0;
#X msg 406 102 bang;
#X obj 406 162 moses 1;
#X obj 510 184 t b f;
#X obj 476 140 moses 1;
#X obj 100 178 dbtorms;
#X obj 476 110 r master-lvl;
#X obj 100 50 r master-lvl;
#X obj 406 252 s master-lvl;
#X obj 26 217 inlet~;
#X obj 239 49 inlet;
#X text 239 22 level;
#X obj 239 120 s master-lvl;
#X msg 115 78 set \$1;
#X obj 115 107 outlet;
#X msg 257 77 \; pd dsp 1;
#X obj 100 233 line~;
#X obj 26 254 *~;
#X obj 26 289 dac~;
#X obj 100 205 pack 0 50;
#X text 24 190 audio;
#X text 112 132 show level;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 13 0;
#X connect 5 0 13 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 7 1 8 0;
#X connect 8 0 5 0;
#X connect 9 1 4 1;
#X connect 10 0 24 0;
#X connect 11 0 1 1;
#X connect 11 0 9 0;
#X connect 12 0 10 0;
#X connect 12 0 18 0;
#X connect 14 0 22 0;
#X connect 15 0 17 0;
#X connect 15 0 20 0;
#X connect 18 0 19 0;
#X connect 21 0 22 1;
#X connect 22 0 23 0;
#X connect 22 0 23 1;
#X connect 24 0 21 0;
#X restore 37 440 pd output;
#X msg 107 407 MUTE;
#X text 157 406 <-- output amplitude;
#X obj 37 374 hip~ 5;
#X obj 37 288 tabread4~ sample-table;
#X obj 593 379 adc~ 1;
#X obj 593 409 hip~ 5;
#X obj 564 473 tabwrite~ sample-table;
#X msg 564 340 bang;
#X text 697 525 v-- re-read the original sample;
#X text 18 15 ONE-SHOT SAMPLER USING LINE~ AS PHASE;
#X obj 37 258 line~;
#X obj 77 340 line~;
#X obj 37 340 *~;
#X obj 77 313 r cutoff;
#X obj 37 228 r phase;
#X msg 130 161 \; phase 1 \, 4.41e+08 1e+07 \; cutoff 1 5;
#X msg 30 71 bang;
#X obj 130 126 delay 5;
#X text 83 71 <-- play the sample;
#X msg 30 162 \; cutoff 0 5;
#X text 40 119 cut the;
#X text 40 138 sound off;
#X text 210 111 Wait for the;
#X text 208 131 cutoff to finish;
#X text 355 155 set the upper line~ to start;
#X text 355 174 at the first sample and go;
#X text 354 195 forever (until the next trigger);
#X text 24 479 In this example we're using a line~ object in place
of the phaser~-based network that controls read location.;
#X text 24 520 To start a note \, first we have to mute the output
in case ther's already something playing---otherwise we'll get a click.
The "cutoff" line~ then takes 5 msec to get to zero. After that amount
of delay \, we reset the phase to sample number 1 and set it in motion.
We want the line~ output to increase by 1 each sample of output \,
so we ask for it to do 4.41e+08 samples in 1e+07 milliseconds.;
#X text 24 636 The cutoff mechanism is still safe if we happen to ask
for two notes in under 5 msec. The second request would reset the delay
\, so that there's no way the delay can possibly fire without the cutoff
line~ at zero.;
#X text 602 339 <-- record;
#X obj 628 439 line~;
#X obj 593 444 *~;
#X text 710 328 ------ 4 seconds ------;
#X msg 551 418 1;
#X obj 661 376 del 3990;
#X msg 661 404 0 10;
#X text 712 405 <--stop recording;
#X text 25 706 We avoid clicking at the end of the table by getting
the table's own contents to go smoothly to zero. To do this we added
a level control to the recording patch that cuts off just before the
recording reaches the end of the table.;
#X text 595 641 this is.;
#X text 596 615 My apologies to Jonathan Harvey whose bell;
#X msg 583 550 read ../sound/bell.aiff sample-table;
#X obj 583 579 soundfiler;
#X text 725 751 updated for Pd version 0.33;
#X connect 5 0 49 0;
#X connect 6 0 7 1;
#X connect 7 0 6 0;
#X connect 8 0 7 2;
#X connect 10 0 7 0;
#X connect 11 0 20 0;
#X connect 12 0 13 0;
#X connect 13 0 40 0;
#X connect 15 0 14 0;
#X connect 15 0 43 0;
#X connect 15 0 42 0;
#X connect 18 0 11 0;
#X connect 19 0 20 1;
#X connect 20 0 10 0;
#X connect 21 0 19 0;
#X connect 22 0 18 0;
#X connect 24 0 27 0;
#X connect 24 0 25 0;
#X connect 25 0 23 0;
#X connect 39 0 40 1;
#X connect 40 0 14 0;
#X connect 42 0 39 0;
#X connect 43 0 44 0;
#X connect 44 0 39 0;
#X connect 49 0 50 0;