#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;