#N canvas 0 23 1582 1005 12;
#X text 688 21 bf-clock help and demo;
#X obj 188 280 bng 20 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 219 513 dac~;
#X obj 260 280 bng 20 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 334 280 bng 20 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 115 280 bng 20 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 294 374 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 276 393 *~;
#X obj 256 374 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 238 393 *~;
#X obj 219 374 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 201 393 *~;
#X obj 184 374 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 166 393 *~;
#X obj 304 323 loadbang;
#X msg 304 346 1;
#X obj 222 487 *~;
#N canvas 0 23 965 558 gaincalc 0;
#X obj 36 25 inlet;
#X obj 76 222 dbtorms;
#X obj 36 72 sel 0;
#X msg 35 98 0;
#X text 167 317 linear gain;
#X obj 55 279 line~;
#X msg 55 258 \$1 10;
#X obj 55 301 outlet~;
#X obj 165 292 outlet;
#X obj 287 292 outlet;
#X text 53 323 linear gain;
#X text 136 142 gain in Pd dB (100 = 0 dbFS);
#X text 288 314 dBFS gain;
#X obj 79 118 * 60;
#X text 159 22 Control volume in dB over a useful range (-48 to +12
dbFS) \, with a control input that is [0.0 \, 1.0];
#X obj 78 144 - 48;
#X obj 77 176 + 100;
#X msg 289 235 -100;
#X connect 0 0 2 0;
#X connect 1 0 6 0;
#X connect 1 0 8 0;
#X connect 2 0 3 0;
#X connect 2 1 13 0;
#X connect 3 0 1 0;
#X connect 3 0 17 0;
#X connect 5 0 7 0;
#X connect 6 0 5 0;
#X connect 13 0 15 0;
#X connect 15 0 16 0;
#X connect 15 0 9 0;
#X connect 16 0 1 0;
#X connect 17 0 9 0;
#X restore 315 459 pd gaincalc;
#X floatatom 401 459 5 0 0 0 - - -;
#X text 447 459 dBFS;
#X text 451 652 How to use bf-clock:;
#X text 446 815 3) The 'subdivision1' event triggers on subdivisions
of the beat \, according to the setting of the 'sub1' parameter.;
#X text 446 855 4) The 'subdivision2' event triggers on subdivisions
of the beat \, according to the setting of the 'sub2' parameter.;
#X text 449 958 The 'nudge' buttons can be used to shift the entire
clock forward or backwards in time by small amounts. This can be useful
when trying to synchronize (or desynchronize!) multiple bf-clocks.
;
#X text 447 689 Bf-clock generates four different rhythmic events:
;
#X text 446 724 1) The 'beat' is triggered every beat at the specified
tempo (in beats-per-minute).;
#X obj 1113 860 bf-own-clock;
#X obj 1115 1021 bf-others-clock;
#X obj 166 546 bf-instrument drumInst1;
#X obj 920 669 bf-instrument drumInst2;
#X text 446 763 2) The 'downbeat' is triggered at the beginning of
every measure. The measure length is set with the 'meter' parameter.
;
#X text 450 1021 A bf-clock can also be controlled by a system of messages
in the right-most inlet. And a bf-clock will output some control messages
to the right-most outlet. This allows one bf-clock to control the bpm
of another bf-clock.;
#X obj 116 146 bf-clock drumInst1 leadClock 0;
#X obj 854 204 bf-clock drumInst2 followClock 0;
#X floatatom 912 167 5 0 0 0 - - -;
#X obj 854 169 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X floatatom 971 168 5 0 0 0 - - -;
#X floatatom 1029 168 5 0 0 0 - - -;
#X floatatom 1088 168 5 0 0 0 - - -;
#X text 910 149 bpm;
#X text 971 149 meter;
#X text 1030 150 sub1;
#X text 1087 150 sub2;
#X text 825 151 on/off;
#N canvas 1434 549 622 385 sineDrums1 0;
#X obj 137 149 bng 20 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#N canvas -1777 -146 815 774 sinedrum 0;
#X obj 166 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 146.832 256;
#X obj 223 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 40 256;
#X obj 290 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 250 256;
#X text 294 256 dec(ms);
#X text 218 257 freqMod(hz);
#X text 167 257 freq(hz);
#X obj 351 277 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
1;
#X text 350 257 click;
#N canvas 400 240 812 501 sinedrum 0;
#X obj 48 32 inlet;
#X obj 133 34 inlet;
#X obj 217 35 inlet;
#X obj 307 38 inlet;
#X obj 380 36 inlet;
#X text 47 15 trigger;
#X text 305 19 att(ms);
#X text 380 19 dec(ms);
#X text 208 18 freqMod(hz);
#X text 130 18 freq(hz);
#X obj 250 341 *~;
#X obj 265 212 vline~;
#N canvas 691 174 782 407 attdec 0;
#X msg 106 258 1 \$1 \, 0 \$2 \$1;
#X obj 161 180 pack f f;
#X obj 106 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 106 231 0 250;
#X msg 161 201 set \$1 \$2;
#X obj 219 158 t b f;
#X obj 161 54 inlet;
#X obj 285 56 inlet;
#X obj 106 54 inlet;
#X obj 119 304 outlet;
#X text 104 33 bang;
#X text 157 37 attack time (ms);
#X text 285 38 decay time (ms);
#X text 338 140 This generates an message to send to vline~ to create
an attack/decay envelope Luke Dahl 2016;
#X connect 0 0 9 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 5 1 1 1;
#X connect 6 0 1 0;
#X connect 7 0 5 0;
#X connect 8 0 2 0;
#X restore 265 187 pd attdec;
#X obj 190 310 osc~ 150;
#X obj 190 283 +~;
#X obj 190 257 *~;
#X obj 250 378 outlet~;
#X obj 47 60 t b b;
#X text 521 274 Simple Synthetic Kick Drum Luke Dahl 2016;
#X obj 441 36 inlet;
#X text 441 19 click?, f 38;
#X obj 389 212 * 0;
#X obj 442 190 == 0;
#X msg 389 190 0.75;
#X connect 0 0 17 0;
#X connect 1 0 14 1;
#X connect 2 0 15 1;
#X connect 3 0 12 1;
#X connect 4 0 12 2;
#X connect 10 0 16 0;
#X connect 11 0 10 1;
#X connect 11 0 15 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X connect 15 0 14 0;
#X connect 17 0 12 0;
#X connect 17 1 23 0;
#X connect 19 0 22 0;
#X connect 21 0 13 1;
#X connect 22 0 21 1;
#X connect 23 0 21 0;
#X restore 150 314 pd sinedrum;
#X obj 161 235 mtof;
#X obj 150 335 *~ 0.75;
#X obj 290 212 loadbang;
#X msg 290 239 250;
#X msg 358 237 1;
#X msg 223 240 40;
#X obj 95 100 inlet;
#X obj 176 100 inlet;
#X obj 170 426 outlet~;
#X connect 0 0 8 1;
#X connect 1 0 8 2;
#X connect 2 0 8 4;
#X connect 6 0 8 5;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 10 0 17 0;
#X connect 11 0 14 0;
#X connect 11 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 2 0;
#X connect 13 0 6 0;
#X connect 14 0 1 0;
#X connect 15 0 8 0;
#X connect 16 0 9 0;
#X restore 137 174 pd sinedrum;
#X obj 137 198 *~ 0.2;
#N canvas -1777 -146 815 774 sinedrum 0;
#X obj 166 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 261.626 256;
#X obj 223 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 40 256;
#X obj 290 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 250 256;
#X text 294 256 dec(ms);
#X text 218 257 freqMod(hz);
#X text 167 257 freq(hz);
#X obj 351 277 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
1;
#X text 350 257 click;
#N canvas 400 240 812 501 sinedrum 0;
#X obj 48 32 inlet;
#X obj 133 34 inlet;
#X obj 217 35 inlet;
#X obj 307 38 inlet;
#X obj 380 36 inlet;
#X text 47 15 trigger;
#X text 305 19 att(ms);
#X text 380 19 dec(ms);
#X text 208 18 freqMod(hz);
#X text 130 18 freq(hz);
#X obj 250 341 *~;
#X obj 265 212 vline~;
#N canvas 691 174 782 407 attdec 0;
#X msg 106 258 1 \$1 \, 0 \$2 \$1;
#X obj 161 180 pack f f;
#X obj 106 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 106 231 0 250;
#X msg 161 201 set \$1 \$2;
#X obj 219 158 t b f;
#X obj 161 54 inlet;
#X obj 285 56 inlet;
#X obj 106 54 inlet;
#X obj 119 304 outlet;
#X text 104 33 bang;
#X text 157 37 attack time (ms);
#X text 285 38 decay time (ms);
#X text 338 140 This generates an message to send to vline~ to create
an attack/decay envelope Luke Dahl 2016;
#X connect 0 0 9 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 5 1 1 1;
#X connect 6 0 1 0;
#X connect 7 0 5 0;
#X connect 8 0 2 0;
#X restore 265 187 pd attdec;
#X obj 190 310 osc~ 150;
#X obj 190 283 +~;
#X obj 190 257 *~;
#X obj 250 378 outlet~;
#X obj 47 60 t b b;
#X text 521 274 Simple Synthetic Kick Drum Luke Dahl 2016;
#X obj 441 36 inlet;
#X text 441 19 click?, f 38;
#X obj 389 212 * 0;
#X obj 442 190 == 0;
#X msg 389 190 0.75;
#X connect 0 0 17 0;
#X connect 1 0 14 1;
#X connect 2 0 15 1;
#X connect 3 0 12 1;
#X connect 4 0 12 2;
#X connect 10 0 16 0;
#X connect 11 0 10 1;
#X connect 11 0 15 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X connect 15 0 14 0;
#X connect 17 0 12 0;
#X connect 17 1 23 0;
#X connect 19 0 22 0;
#X connect 21 0 13 1;
#X connect 22 0 21 1;
#X connect 23 0 21 0;
#X restore 150 314 pd sinedrum;
#X obj 161 235 mtof;
#X obj 150 335 *~ 0.75;
#X obj 290 212 loadbang;
#X msg 290 239 250;
#X msg 358 237 1;
#X msg 223 240 40;
#X obj 95 100 inlet;
#X obj 176 100 inlet;
#X obj 170 426 outlet~;
#X connect 0 0 8 1;
#X connect 1 0 8 2;
#X connect 2 0 8 4;
#X connect 6 0 8 5;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 10 0 17 0;
#X connect 11 0 14 0;
#X connect 11 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 2 0;
#X connect 13 0 6 0;
#X connect 14 0 1 0;
#X connect 15 0 8 0;
#X connect 16 0 9 0;
#X restore 237 174 pd sinedrum;
#X obj 237 150 bng 20 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#N canvas -1777 -146 815 774 sinedrum 0;
#X obj 166 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 349.228 256;
#X obj 223 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 40 256;
#X obj 290 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 250 256;
#X text 294 256 dec(ms);
#X text 218 257 freqMod(hz);
#X text 167 257 freq(hz);
#X obj 351 277 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
1;
#X text 350 257 click;
#N canvas 400 240 812 501 sinedrum 0;
#X obj 48 32 inlet;
#X obj 133 34 inlet;
#X obj 217 35 inlet;
#X obj 307 38 inlet;
#X obj 380 36 inlet;
#X text 47 15 trigger;
#X text 305 19 att(ms);
#X text 380 19 dec(ms);
#X text 208 18 freqMod(hz);
#X text 130 18 freq(hz);
#X obj 250 341 *~;
#X obj 265 212 vline~;
#N canvas 691 174 782 407 attdec 0;
#X msg 106 258 1 \$1 \, 0 \$2 \$1;
#X obj 161 180 pack f f;
#X obj 106 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 106 231 0 250;
#X msg 161 201 set \$1 \$2;
#X obj 219 158 t b f;
#X obj 161 54 inlet;
#X obj 285 56 inlet;
#X obj 106 54 inlet;
#X obj 119 304 outlet;
#X text 104 33 bang;
#X text 157 37 attack time (ms);
#X text 285 38 decay time (ms);
#X text 338 140 This generates an message to send to vline~ to create
an attack/decay envelope Luke Dahl 2016;
#X connect 0 0 9 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 5 1 1 1;
#X connect 6 0 1 0;
#X connect 7 0 5 0;
#X connect 8 0 2 0;
#X restore 265 187 pd attdec;
#X obj 190 310 osc~ 150;
#X obj 190 283 +~;
#X obj 190 257 *~;
#X obj 250 378 outlet~;
#X obj 47 60 t b b;
#X text 521 274 Simple Synthetic Kick Drum Luke Dahl 2016;
#X obj 441 36 inlet;
#X text 441 19 click?, f 38;
#X obj 389 212 * 0;
#X obj 442 190 == 0;
#X msg 389 190 0.75;
#X connect 0 0 17 0;
#X connect 1 0 14 1;
#X connect 2 0 15 1;
#X connect 3 0 12 1;
#X connect 4 0 12 2;
#X connect 10 0 16 0;
#X connect 11 0 10 1;
#X connect 11 0 15 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X connect 15 0 14 0;
#X connect 17 0 12 0;
#X connect 17 1 23 0;
#X connect 19 0 22 0;
#X connect 21 0 13 1;
#X connect 22 0 21 1;
#X connect 23 0 21 0;
#X restore 150 314 pd sinedrum;
#X obj 161 235 mtof;
#X obj 150 335 *~ 0.75;
#X obj 290 212 loadbang;
#X msg 290 239 250;
#X msg 358 237 1;
#X msg 223 240 40;
#X obj 95 100 inlet;
#X obj 176 100 inlet;
#X obj 170 426 outlet~;
#X connect 0 0 8 1;
#X connect 1 0 8 2;
#X connect 2 0 8 4;
#X connect 6 0 8 5;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 10 0 17 0;
#X connect 11 0 14 0;
#X connect 11 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 2 0;
#X connect 13 0 6 0;
#X connect 14 0 1 0;
#X connect 15 0 8 0;
#X connect 16 0 9 0;
#X restore 338 173 pd sinedrum;
#X obj 338 148 bng 20 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 236 199 *~ 0.15;
#X obj 337 197 *~ 0.07;
#N canvas 45 269 815 774 sinedrum 0;
#X obj 166 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 36.7081 256;
#X obj 223 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 40 256;
#X obj 290 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 900 256;
#X text 294 256 dec(ms);
#X text 218 257 freqMod(hz);
#X text 167 257 freq(hz);
#X obj 351 277 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
1;
#X text 350 257 click;
#N canvas 400 240 812 501 sinedrum 0;
#X obj 48 32 inlet;
#X obj 133 34 inlet;
#X obj 217 35 inlet;
#X obj 307 38 inlet;
#X obj 380 36 inlet;
#X text 47 15 trigger;
#X text 305 19 att(ms);
#X text 380 19 dec(ms);
#X text 208 18 freqMod(hz);
#X text 130 18 freq(hz);
#X obj 250 341 *~;
#X obj 265 212 vline~;
#N canvas 691 174 782 407 attdec 0;
#X msg 106 258 1 \$1 \, 0 \$2 \$1;
#X obj 161 180 pack f f;
#X obj 106 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 106 231 0 900;
#X msg 161 201 set \$1 \$2;
#X obj 219 158 t b f;
#X obj 161 54 inlet;
#X obj 285 56 inlet;
#X obj 106 54 inlet;
#X obj 119 304 outlet;
#X text 104 33 bang;
#X text 157 37 attack time (ms);
#X text 285 38 decay time (ms);
#X text 338 140 This generates an message to send to vline~ to create
an attack/decay envelope Luke Dahl 2016;
#X connect 0 0 9 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 5 1 1 1;
#X connect 6 0 1 0;
#X connect 7 0 5 0;
#X connect 8 0 2 0;
#X restore 265 187 pd attdec;
#X obj 190 310 osc~ 150;
#X obj 190 283 +~;
#X obj 190 257 *~;
#X obj 250 378 outlet~;
#X obj 47 60 t b b;
#X text 521 274 Simple Synthetic Kick Drum Luke Dahl 2016;
#X obj 441 36 inlet;
#X text 441 19 click?, f 38;
#X obj 389 212 * 0;
#X obj 442 190 == 0;
#X msg 389 190 0.75;
#X connect 0 0 17 0;
#X connect 1 0 14 1;
#X connect 2 0 15 1;
#X connect 3 0 12 1;
#X connect 4 0 12 2;
#X connect 10 0 16 0;
#X connect 11 0 10 1;
#X connect 11 0 15 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X connect 15 0 14 0;
#X connect 17 0 12 0;
#X connect 17 1 23 0;
#X connect 19 0 22 0;
#X connect 21 0 13 1;
#X connect 22 0 21 1;
#X connect 23 0 21 0;
#X restore 150 314 pd sinedrum;
#X obj 161 235 mtof;
#X obj 150 335 *~ 0.75;
#X obj 290 212 loadbang;
#X msg 358 237 1;
#X msg 223 240 40;
#X obj 95 100 inlet;
#X obj 176 100 inlet;
#X obj 170 426 outlet~;
#X msg 290 239 900;
#X connect 0 0 8 1;
#X connect 1 0 8 2;
#X connect 2 0 8 4;
#X connect 6 0 8 5;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 10 0 16 0;
#X connect 11 0 13 0;
#X connect 11 0 17 0;
#X connect 11 0 12 0;
#X connect 12 0 6 0;
#X connect 13 0 1 0;
#X connect 14 0 8 0;
#X connect 15 0 9 0;
#X connect 17 0 2 0;
#X restore 42 174 pd sinedrum;
#X obj 42 148 bng 20 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X msg 390 147 65;
#X msg 291 150 60;
#X msg 191 148 50;
#X msg 96 148 26;
#X obj 448 95 loadbang;
#X obj 41 197 *~ 0.2;
#X obj 47 67 inlet;
#X obj 141 70 inlet;
#X obj 240 71 inlet;
#X obj 352 74 inlet;
#X obj 38 244 outlet~;
#X obj 135 242 outlet~;
#X obj 241 247 outlet~;
#X obj 338 245 outlet~;
#X text 170 23 4 simple drum synths;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 22 0;
#X connect 3 0 7 0;
#X connect 4 0 3 0;
#X connect 5 0 8 0;
#X connect 6 0 5 0;
#X connect 7 0 23 0;
#X connect 8 0 24 0;
#X connect 9 0 16 0;
#X connect 10 0 9 0;
#X connect 11 0 5 1;
#X connect 12 0 3 1;
#X connect 13 0 1 1;
#X connect 14 0 9 1;
#X connect 15 0 11 0;
#X connect 15 0 12 0;
#X connect 15 0 13 0;
#X connect 15 0 14 0;
#X connect 16 0 21 0;
#X connect 17 0 10 0;
#X connect 18 0 0 0;
#X connect 19 0 4 0;
#X connect 20 0 6 0;
#X restore 177 324 pd sineDrums1;
#X obj 315 393 bf-param drumInst1 volume 1 cont 1;
#N canvas 0 191 845 521 sineDrums2 1;
#N canvas -1777 -146 815 774 sinedrum 0;
#X obj 166 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 516.722 256;
#X obj 223 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 40 256;
#X obj 290 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 250 256;
#X text 294 256 dec(ms);
#X text 218 257 freqMod(hz);
#X text 167 257 freq(hz);
#X obj 351 277 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
1;
#X text 350 257 click;
#N canvas 400 240 812 501 sinedrum 0;
#X obj 48 32 inlet;
#X obj 133 34 inlet;
#X obj 217 35 inlet;
#X obj 307 38 inlet;
#X obj 380 36 inlet;
#X text 47 15 trigger;
#X text 305 19 att(ms);
#X text 380 19 dec(ms);
#X text 208 18 freqMod(hz);
#X text 130 18 freq(hz);
#X obj 250 341 *~;
#X obj 265 212 vline~;
#N canvas 691 174 782 407 attdec 0;
#X msg 106 258 1 \$1 \, 0 \$2 \$1;
#X obj 161 180 pack f f;
#X obj 106 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 106 231 0 250;
#X msg 161 201 set \$1 \$2;
#X obj 219 158 t b f;
#X obj 161 54 inlet;
#X obj 285 56 inlet;
#X obj 106 54 inlet;
#X obj 119 304 outlet;
#X text 104 33 bang;
#X text 157 37 attack time (ms);
#X text 285 38 decay time (ms);
#X text 338 140 This generates an message to send to vline~ to create
an attack/decay envelope Luke Dahl 2016;
#X connect 0 0 9 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 5 1 1 1;
#X connect 6 0 1 0;
#X connect 7 0 5 0;
#X connect 8 0 2 0;
#X restore 265 187 pd attdec;
#X obj 190 310 osc~ 150;
#X obj 190 283 +~;
#X obj 190 257 *~;
#X obj 250 378 outlet~;
#X obj 47 60 t b b;
#X text 521 274 Simple Synthetic Kick Drum Luke Dahl 2016;
#X obj 441 36 inlet;
#X text 441 19 click?, f 38;
#X obj 389 212 * 0;
#X obj 442 190 == 0;
#X msg 389 190 0.75;
#X connect 0 0 17 0;
#X connect 1 0 14 1;
#X connect 2 0 15 1;
#X connect 3 0 12 1;
#X connect 4 0 12 2;
#X connect 10 0 16 0;
#X connect 11 0 10 1;
#X connect 11 0 15 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X connect 15 0 14 0;
#X connect 17 0 12 0;
#X connect 17 1 23 0;
#X connect 19 0 22 0;
#X connect 21 0 13 1;
#X connect 22 0 21 1;
#X connect 23 0 21 0;
#X restore 150 314 pd sinedrum;
#X obj 161 235 mtof;
#X obj 150 335 *~ 0.75;
#X obj 290 212 loadbang;
#X msg 290 239 250;
#X msg 358 237 1;
#X msg 223 240 40;
#X obj 95 100 inlet;
#X obj 176 100 inlet;
#X obj 170 426 outlet~;
#X connect 0 0 8 1;
#X connect 1 0 8 2;
#X connect 2 0 8 4;
#X connect 6 0 8 5;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 10 0 17 0;
#X connect 11 0 14 0;
#X connect 11 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 2 0;
#X connect 13 0 6 0;
#X connect 14 0 1 0;
#X connect 15 0 8 0;
#X connect 16 0 9 0;
#X restore 266 224 pd sinedrum;
#X obj 266 248 *~ 0.2;
#N canvas -1777 -146 815 774 sinedrum 0;
#X obj 166 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 311.127 256;
#X obj 223 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 40 256;
#X obj 290 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 250 256;
#X text 294 256 dec(ms);
#X text 218 257 freqMod(hz);
#X text 167 257 freq(hz);
#X obj 351 277 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
1;
#X text 350 257 click;
#N canvas 400 240 812 501 sinedrum 0;
#X obj 48 32 inlet;
#X obj 133 34 inlet;
#X obj 217 35 inlet;
#X obj 307 38 inlet;
#X obj 380 36 inlet;
#X text 47 15 trigger;
#X text 305 19 att(ms);
#X text 380 19 dec(ms);
#X text 208 18 freqMod(hz);
#X text 130 18 freq(hz);
#X obj 250 341 *~;
#X obj 265 212 vline~;
#N canvas 691 174 782 407 attdec 0;
#X msg 106 258 1 \$1 \, 0 \$2 \$1;
#X obj 161 180 pack f f;
#X obj 106 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 106 231 0 250;
#X msg 161 201 set \$1 \$2;
#X obj 219 158 t b f;
#X obj 161 54 inlet;
#X obj 285 56 inlet;
#X obj 106 54 inlet;
#X obj 119 304 outlet;
#X text 104 33 bang;
#X text 157 37 attack time (ms);
#X text 285 38 decay time (ms);
#X text 338 140 This generates an message to send to vline~ to create
an attack/decay envelope Luke Dahl 2016;
#X connect 0 0 9 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 5 1 1 1;
#X connect 6 0 1 0;
#X connect 7 0 5 0;
#X connect 8 0 2 0;
#X restore 265 187 pd attdec;
#X obj 190 310 osc~ 150;
#X obj 190 283 +~;
#X obj 190 257 *~;
#X obj 250 378 outlet~;
#X obj 47 60 t b b;
#X text 521 274 Simple Synthetic Kick Drum Luke Dahl 2016;
#X obj 441 36 inlet;
#X text 441 19 click?, f 38;
#X obj 389 212 * 0;
#X obj 442 190 == 0;
#X msg 389 190 0.75;
#X connect 0 0 17 0;
#X connect 1 0 14 1;
#X connect 2 0 15 1;
#X connect 3 0 12 1;
#X connect 4 0 12 2;
#X connect 10 0 16 0;
#X connect 11 0 10 1;
#X connect 11 0 15 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X connect 15 0 14 0;
#X connect 17 0 12 0;
#X connect 17 1 23 0;
#X connect 19 0 22 0;
#X connect 21 0 13 1;
#X connect 22 0 21 1;
#X connect 23 0 21 0;
#X restore 150 314 pd sinedrum;
#X obj 161 235 mtof;
#X obj 150 335 *~ 0.75;
#X obj 290 212 loadbang;
#X msg 290 239 250;
#X msg 358 237 1;
#X msg 223 240 40;
#X obj 95 100 inlet;
#X obj 176 100 inlet;
#X obj 170 426 outlet~;
#X connect 0 0 8 1;
#X connect 1 0 8 2;
#X connect 2 0 8 4;
#X connect 6 0 8 5;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 10 0 17 0;
#X connect 11 0 14 0;
#X connect 11 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 2 0;
#X connect 13 0 6 0;
#X connect 14 0 1 0;
#X connect 15 0 8 0;
#X connect 16 0 9 0;
#X restore 366 224 pd sinedrum;
#N canvas -1777 -146 815 774 sinedrum 0;
#X obj 166 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 710.844 256;
#X obj 223 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 40 256;
#X obj 290 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 250 256;
#X text 294 256 dec(ms);
#X text 218 257 freqMod(hz);
#X text 167 257 freq(hz);
#X obj 351 277 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
1;
#X text 350 257 click;
#N canvas 400 240 812 501 sinedrum 0;
#X obj 48 32 inlet;
#X obj 133 34 inlet;
#X obj 217 35 inlet;
#X obj 307 38 inlet;
#X obj 380 36 inlet;
#X text 47 15 trigger;
#X text 305 19 att(ms);
#X text 380 19 dec(ms);
#X text 208 18 freqMod(hz);
#X text 130 18 freq(hz);
#X obj 250 341 *~;
#X obj 265 212 vline~;
#N canvas 691 174 782 407 attdec 0;
#X msg 106 258 1 \$1 \, 0 \$2 \$1;
#X obj 161 180 pack f f;
#X obj 106 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 106 231 0 250;
#X msg 161 201 set \$1 \$2;
#X obj 219 158 t b f;
#X obj 161 54 inlet;
#X obj 285 56 inlet;
#X obj 106 54 inlet;
#X obj 119 304 outlet;
#X text 104 33 bang;
#X text 157 37 attack time (ms);
#X text 285 38 decay time (ms);
#X text 338 140 This generates an message to send to vline~ to create
an attack/decay envelope Luke Dahl 2016;
#X connect 0 0 9 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 5 1 1 1;
#X connect 6 0 1 0;
#X connect 7 0 5 0;
#X connect 8 0 2 0;
#X restore 265 187 pd attdec;
#X obj 190 310 osc~ 150;
#X obj 190 283 +~;
#X obj 190 257 *~;
#X obj 250 378 outlet~;
#X obj 47 60 t b b;
#X text 521 274 Simple Synthetic Kick Drum Luke Dahl 2016;
#X obj 441 36 inlet;
#X text 441 19 click?, f 38;
#X obj 389 212 * 0;
#X obj 442 190 == 0;
#X msg 389 190 0.75;
#X connect 0 0 17 0;
#X connect 1 0 14 1;
#X connect 2 0 15 1;
#X connect 3 0 12 1;
#X connect 4 0 12 2;
#X connect 10 0 16 0;
#X connect 11 0 10 1;
#X connect 11 0 15 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X connect 15 0 14 0;
#X connect 17 0 12 0;
#X connect 17 1 23 0;
#X connect 19 0 22 0;
#X connect 21 0 13 1;
#X connect 22 0 21 1;
#X connect 23 0 21 0;
#X restore 150 314 pd sinedrum;
#X obj 161 235 mtof;
#X obj 150 335 *~ 0.75;
#X obj 290 212 loadbang;
#X msg 290 239 250;
#X msg 358 237 1;
#X msg 223 240 40;
#X obj 95 100 inlet;
#X obj 176 100 inlet;
#X obj 170 426 outlet~;
#X connect 0 0 8 1;
#X connect 1 0 8 2;
#X connect 2 0 8 4;
#X connect 6 0 8 5;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 10 0 17 0;
#X connect 11 0 14 0;
#X connect 11 0 12 0;
#X connect 11 0 13 0;
#X connect 12 0 2 0;
#X connect 13 0 6 0;
#X connect 14 0 1 0;
#X connect 15 0 8 0;
#X connect 16 0 9 0;
#X restore 467 223 pd sinedrum;
#X obj 365 249 *~ 0.15;
#X obj 466 247 *~ 0.07;
#N canvas 45 269 594 570 sinedrum 0;
#X obj 166 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 76.2346 256;
#X obj 223 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 40 256;
#X obj 290 277 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 900 256;
#X text 294 256 dec(ms);
#X text 218 257 freqMod(hz);
#X text 167 257 freq(hz);
#X obj 351 277 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
1;
#X text 350 257 click;
#N canvas 400 240 812 501 sinedrum 0;
#X obj 48 32 inlet;
#X obj 133 34 inlet;
#X obj 217 35 inlet;
#X obj 307 38 inlet;
#X obj 380 36 inlet;
#X text 47 15 trigger;
#X text 305 19 att(ms);
#X text 380 19 dec(ms);
#X text 208 18 freqMod(hz);
#X text 130 18 freq(hz);
#X obj 250 341 *~;
#X obj 265 212 vline~;
#N canvas 691 174 782 407 attdec 0;
#X msg 106 258 1 \$1 \, 0 \$2 \$1;
#X obj 161 180 pack f f;
#X obj 106 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 106 231 0 900;
#X msg 161 201 set \$1 \$2;
#X obj 219 158 t b f;
#X obj 161 54 inlet;
#X obj 285 56 inlet;
#X obj 106 54 inlet;
#X obj 119 304 outlet;
#X text 104 33 bang;
#X text 157 37 attack time (ms);
#X text 285 38 decay time (ms);
#X text 338 140 This generates an message to send to vline~ to create
an attack/decay envelope Luke Dahl 2016;
#X connect 0 0 9 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 5 1 1 1;
#X connect 6 0 1 0;
#X connect 7 0 5 0;
#X connect 8 0 2 0;
#X restore 265 187 pd attdec;
#X obj 190 310 osc~ 150;
#X obj 190 283 +~;
#X obj 190 257 *~;
#X obj 250 378 outlet~;
#X obj 47 60 t b b;
#X text 521 274 Simple Synthetic Kick Drum Luke Dahl 2016;
#X obj 441 36 inlet;
#X text 441 19 click?, f 38;
#X obj 389 212 * 0;
#X obj 442 190 == 0;
#X msg 389 190 0.75;
#X connect 0 0 17 0;
#X connect 1 0 14 1;
#X connect 2 0 15 1;
#X connect 3 0 12 1;
#X connect 4 0 12 2;
#X connect 10 0 16 0;
#X connect 11 0 10 1;
#X connect 11 0 15 0;
#X connect 12 0 11 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X connect 15 0 14 0;
#X connect 17 0 12 0;
#X connect 17 1 23 0;
#X connect 19 0 22 0;
#X connect 21 0 13 1;
#X connect 22 0 21 1;
#X connect 23 0 21 0;
#X restore 150 314 pd sinedrum;
#X obj 161 235 mtof;
#X obj 150 335 *~ 0.75;
#X obj 290 212 loadbang;
#X msg 358 237 1;
#X msg 223 240 40;
#X obj 95 100 inlet;
#X obj 176 100 inlet;
#X obj 170 426 outlet~;
#X msg 290 239 900;
#X connect 0 0 8 1;
#X connect 1 0 8 2;
#X connect 2 0 8 4;
#X connect 6 0 8 5;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 10 0 16 0;
#X connect 11 0 13 0;
#X connect 11 0 17 0;
#X connect 11 0 12 0;
#X connect 12 0 6 0;
#X connect 13 0 1 0;
#X connect 14 0 8 0;
#X connect 15 0 9 0;
#X connect 17 0 2 0;
#X restore 171 224 pd sinedrum;
#X obj 170 247 *~ 0.2;
#X obj 169 122 inlet;
#X obj 270 120 inlet;
#X obj 369 121 inlet;
#X obj 468 120 inlet;
#X obj 385 415 outlet~;
#X text 226 35 4 simple drum synths;
#X obj 50 124 inlet;
#X obj 50 155 route 0 1 2 3;
#X text 42 99 set pitches;
#X obj 468 328 *~;
#X obj 430 328 *~;
#X obj 393 328 *~;
#X obj 358 328 *~;
#X obj 585 224 route 0 1 2 3;
#X obj 584 121 inlet;
#X text 584 96 on/off for each;
#X obj 649 274 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X connect 0 0 1 0;
#X connect 1 0 19 0;
#X connect 2 0 4 0;
#X connect 3 0 5 0;
#X connect 4 0 18 0;
#X connect 5 0 17 0;
#X connect 6 0 7 0;
#X connect 7 0 20 0;
#X connect 8 0 6 0;
#X connect 9 0 0 0;
#X connect 10 0 2 0;
#X connect 11 0 3 0;
#X connect 14 0 15 0;
#X connect 15 0 6 1;
#X connect 15 1 0 1;
#X connect 15 2 2 1;
#X connect 15 3 3 1;
#X connect 17 0 12 0;
#X connect 18 0 12 0;
#X connect 19 0 12 0;
#X connect 20 0 12 0;
#X connect 21 0 20 1;
#X connect 21 1 19 1;
#X connect 21 2 18 1;
#X connect 21 3 17 1;
#X connect 21 3 24 0;
#X connect 22 0 21 0;
#X restore 922 499 pd sineDrums2;
#X obj 989 636 dac~;
#X obj 998 604 *~;
#N canvas 0 23 965 558 gaincalc 0;
#X obj 36 25 inlet;
#X obj 76 222 dbtorms;
#X obj 36 72 sel 0;
#X msg 35 98 0;
#X text 167 317 linear gain;
#X obj 55 279 line~;
#X msg 55 258 \$1 10;
#X obj 55 301 outlet~;
#X obj 165 292 outlet;
#X obj 287 292 outlet;
#X text 53 323 linear gain;
#X text 136 142 gain in Pd dB (100 = 0 dbFS);
#X text 288 314 dBFS gain;
#X obj 79 118 * 60;
#X text 159 22 Control volume in dB over a useful range (-48 to +12
dbFS) \, with a control input that is [0.0 \, 1.0];
#X obj 78 144 - 48;
#X obj 77 176 + 100;
#X msg 289 235 -100;
#X connect 0 0 2 0;
#X connect 1 0 6 0;
#X connect 1 0 8 0;
#X connect 2 0 3 0;
#X connect 2 1 13 0;
#X connect 3 0 1 0;
#X connect 3 0 17 0;
#X connect 5 0 7 0;
#X connect 6 0 5 0;
#X connect 13 0 15 0;
#X connect 15 0 16 0;
#X connect 15 0 9 0;
#X connect 16 0 1 0;
#X connect 17 0 9 0;
#X restore 1045 565 pd gaincalc;
#X floatatom 1132 566 5 0 0 0 - - -;
#X text 1172 567 dBFS;
#X obj 1045 498 bf-param drumInst2 volume 1 cont 1;
#X text 446 896 The effective tempo of the bf-clock can be set to multiples
or divisions of the nominal tempo (as specified by the 'bpm' parameter)
using the 'tempo multiplier' radio-button;
#N canvas 0 23 450 300 initParams 0;
#X obj 137 52 loadbang;
#X msg 186 122 meter 4;
#X msg 186 146 sub1 2;
#X msg 186 171 sub2 3;
#X obj 112 222 outlet;
#X obj 135 78 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X text 55 22 initialize some of the bf-clock parameters;
#X msg 185 98 bpm 80;
#X connect 0 0 5 0;
#X connect 1 0 4 0;
#X connect 2 0 4 0;
#X connect 3 0 4 0;
#X connect 5 0 7 0;
#X connect 5 0 1 0;
#X connect 5 0 2 0;
#X connect 5 0 3 0;
#X connect 7 0 4 0;
#X restore 383 109 pd initParams;
#N canvas 1139 165 1317 666 bf-clock-ControlMessages-OpenMe! 0;
#X msg 601 215 tempoMult x1;
#X msg 600 244 tempoMult /2;
#X msg 601 187 tempoMult x2;
#X msg 783 246 nudge +;
#X msg 783 270 nudge -;
#X msg 783 294 nudge --;
#X msg 783 222 nudge ++;
#X msg 601 158 tempoMult x3;
#X msg 602 126 tempoMult x4;
#X msg 600 273 tempoMult /3;
#X msg 601 298 tempoMult /4;
#X obj 52 147 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 52 126 on/off;
#X msg 52 167 onOff \$1;
#X floatatom 151 144 5 0 0 0 - - -;
#X msg 151 167 bpm \$1;
#X text 149 123 bpm;
#X text 781 198 nudge phase;
#X floatatom 221 144 5 0 0 0 - - -;
#X msg 221 167 meter \$1;
#X text 219 123 meter;
#X floatatom 299 144 5 0 0 0 - - -;
#X text 297 123 subdivision1;
#X msg 299 167 sub1 \$1;
#X floatatom 393 146 5 0 0 0 - - -;
#X text 391 125 subdivision2;
#X msg 393 169 sub2 \$1;
#X text 598 103 tempo multiplier;
#X obj 1138 276 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
0 1;
#X msg 1138 296 sync \$1;
#X obj 895 280 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 891 258 grant bpm;
#X msg 895 300 grant \$1;
#X msg 989 298 grant1x;
#X obj 989 279 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X text 986 257 1-time grant bpm;
#X msg 1082 551 syncDownbeat;
#X text 1078 532 the downbeat to sync to;
#X obj 534 565 outlet;
#X text 437 48 The right inlet for bf-clock can recieve messages to
control the various parameters of the bf-clock;
#X text 1081 506 TODO....;
#X text 1134 254 sync on next downbeat;
#X connect 0 0 38 0;
#X connect 1 0 38 0;
#X connect 2 0 38 0;
#X connect 3 0 38 0;
#X connect 4 0 38 0;
#X connect 5 0 38 0;
#X connect 6 0 38 0;
#X connect 7 0 38 0;
#X connect 8 0 38 0;
#X connect 9 0 38 0;
#X connect 10 0 38 0;
#X connect 11 0 13 0;
#X connect 13 0 38 0;
#X connect 14 0 15 0;
#X connect 15 0 38 0;
#X connect 18 0 19 0;
#X connect 19 0 38 0;
#X connect 21 0 23 0;
#X connect 23 0 38 0;
#X connect 24 0 26 0;
#X connect 26 0 38 0;
#X connect 28 0 29 0;
#X connect 29 0 38 0;
#X connect 30 0 32 0;
#X connect 32 0 38 0;
#X connect 33 0 38 0;
#X connect 34 0 33 0;
#X restore 1147 166 pd bf-clock-ControlMessages-OpenMe!;
#X text 1146 353 Some parameter changes get sent out;
#X text 95 373 un/mute->;
#X text 451 1083 When the 'sync' toggle is enabled \, the next 'syncDownbeat'
message in the right inlet (or from another bf-clock that is being
watched) will cause the receiving bf-clock to reset its phase and downbeat.
;
#X text 605 59 This example shows two bf-clocks \, each driving a simple
percussion synth. One bf-clock (leadClock) is sending control messages
to the other (followClock);
#X obj 676 410 bf-param drumInst2 pitches 4 midi 2;
#X obj 1044 407 bf-param drumInst2 onOff 4 bool 3;
#X text 1148 145 Messages to the right inlet can control a bf-clock
;
#N canvas 0 23 532 312 init 1;
#X obj 222 44 loadbang;
#X obj 206 86 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 135 40 inlet;
#X obj 255 225 outlet;
#X obj 221 113 t b b b b;
#X text 176 9 initialize drum pitches;
#X msg 96 148 19 0;
#X msg 191 148 46 1;
#X msg 291 150 63 2;
#X msg 389 148 68 3;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 4 0 6 0;
#X connect 4 1 7 0;
#X connect 4 2 8 0;
#X connect 4 3 9 0;
#X connect 6 0 3 0;
#X connect 7 0 3 0;
#X connect 8 0 3 0;
#X connect 9 0 3 0;
#X restore 676 384 pd init;
#N canvas 60 60 532 312 init 0;
#X obj 222 44 loadbang;
#X obj 206 86 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 135 40 inlet;
#X obj 255 225 outlet;
#X obj 221 113 t b b b b;
#X text 176 9 initialize drum pitches;
#X msg 96 148 1 0;
#X msg 191 148 1 1;
#X msg 291 150 1 2;
#X msg 389 148 1 3;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 4 0 6 0;
#X connect 4 1 7 0;
#X connect 4 2 8 0;
#X connect 4 3 9 0;
#X connect 6 0 3 0;
#X connect 7 0 3 0;
#X connect 8 0 3 0;
#X connect 9 0 3 0;
#X restore 1044 380 pd init;
#X obj 1147 331 print commandOut;
#X connect 1 0 44 1;
#X connect 3 0 44 2;
#X connect 4 0 44 3;
#X connect 5 0 44 0;
#X connect 6 0 7 1;
#X connect 7 0 16 0;
#X connect 8 0 9 1;
#X connect 9 0 16 0;
#X connect 10 0 11 1;
#X connect 11 0 16 0;
#X connect 12 0 13 1;
#X connect 13 0 16 0;
#X connect 14 0 15 0;
#X connect 15 0 6 0;
#X connect 15 0 8 0;
#X connect 15 0 10 0;
#X connect 15 0 12 0;
#X connect 16 0 2 0;
#X connect 16 0 28 0;
#X connect 17 0 16 1;
#X connect 17 2 18 0;
#X connect 32 0 5 0;
#X connect 32 1 1 0;
#X connect 32 2 3 0;
#X connect 32 3 4 0;
#X connect 33 0 46 1;
#X connect 33 1 46 2;
#X connect 33 2 46 3;
#X connect 33 3 46 4;
#X connect 33 4 65 0;
#X connect 34 0 33 1;
#X connect 35 0 33 0;
#X connect 36 0 33 2;
#X connect 37 0 33 3;
#X connect 38 0 33 4;
#X connect 44 0 13 0;
#X connect 44 1 11 0;
#X connect 44 2 9 0;
#X connect 44 3 7 0;
#X connect 45 0 17 0;
#X connect 46 0 48 0;
#X connect 48 0 47 1;
#X connect 48 0 29 0;
#X connect 49 0 48 1;
#X connect 49 2 50 0;
#X connect 52 0 49 0;
#X connect 54 0 32 5;
#X connect 55 0 33 5;
#X connect 60 1 46 0;
#X connect 61 1 46 5;
#X connect 63 0 60 0;
#X connect 64 0 61 0;