Skip to content
Snippets Groups Projects
bfex_DrumSequencer.pd 11.73 KiB
#N canvas 2 95 956 984 10;
#X declare -path ..;
#X declare -stdpath mrpeach;
#X declare -stdpath mrpeach/net;
#X declare -stdpath osc;
#X declare -stdpath cxc;
#X declare -stdpath mapping;
#X declare -path ../modules;
#X declare -path ../bf-pd;
#X obj 383 574 dac~;
#X obj 169 451 bng 15 250 50 0 empty empty empty 17 7 0 10 -204786
-1 -1;
#X floatatom 256 250 5 0 0 0 - - -;
#X obj 142 391 sel 1;
#X obj 188 452 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 8.1758 256;
#X obj 245 452 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 0 256;
#X obj 312 452 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -204786
-1 -1 250 256;
#X text 316 431 dec(ms);
#X text 240 432 freqMod(hz);
#X text 189 432 freq(hz);
#X obj 373 452 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 1
1;
#X text 372 432 click;
#X obj 619 451 bng 15 250 50 0 empty empty empty 17 7 0 10 -261682
-1 -1;
#X obj 638 452 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -261682
-1 -1 0 256;
#X obj 695 452 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -261682
-1 -1 170 256;
#X text 637 437 att(ms);
#X text 693 437 dec(ms);
#N canvas 315 52 990 675 noisehat 0;
#X obj 111 47 inlet;
#X obj 210 46 inlet;
#X obj 283 44 inlet;
#X text 110 30 trigger;
#X text 208 27 att(ms);
#X text 283 27 dec(ms);
#X obj 153 349 *~;
#X obj 168 220 vline~;
#N canvas 981 214 743 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 170;
#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 168 195 pd attdec;
#X obj 156 540 outlet~;
#X obj 110 75 t b b;
#X obj 344 44 inlet;
#X obj 93 318 noise~;
#X obj 153 373 hip~ 500;
#X obj 153 413 +~;
#X obj 252 396 *~ 0.1;
#X obj 253 315 nbx 5 14 0.1 80 0 0 empty empty empty 0 -8 0 10 -262144
-1 -1 42.4671 256;
#X obj 426 223 nbx 5 14 0 0.99 0 0 empty empty empty 0 -8 0 10 -262144
-1 -1 0.768 256;
#X obj 339 127 + 0.1;
#X obj 352 88 * 79;
#X obj 423 45 inlet;
#X text 342 24 comb delay;
#X text 423 25 comb feedback;
#X obj 541 47 inlet;
#X text 541 27 feedback polarity;
#X obj 541 74 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 560 175 1;
#X msg 596 175 -1;
#X obj 426 247 * 1;
#X obj 541 118 t b f;
#X obj 568 144 sel 1, f 36;
#X obj 252 336 delread4~ combdly-\$0 10;
#X obj 238 452 delwrite~ combdly-\$0 80;
#X connect 0 0 10 0;
#X connect 1 0 8 1;
#X connect 2 0 8 2;
#X connect 6 0 13 0;
#X connect 7 0 6 1;
#X connect 8 0 7 0;
#X connect 10 0 8 0;
#X connect 11 0 19 0;
#X connect 12 0 6 0;
#X connect 13 0 14 0;
#X connect 14 0 9 0;
#X connect 14 0 32 0;
#X connect 15 0 14 1;
#X connect 16 0 31 0;
#X connect 17 0 28 0;
#X connect 18 0 16 0;
#X connect 19 0 18 0;
#X connect 20 0 17 0;
#X connect 23 0 25 0;
#X connect 25 0 29 0;
#X connect 26 0 28 1;
#X connect 27 0 28 1;
#X connect 28 0 15 1;
#X connect 29 0 17 0;
#X connect 29 1 30 0;
#X connect 30 0 26 0;
#X connect 30 1 27 0;
#X connect 31 0 15 0;
#X restore 686 483 pd noisehat;
#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 223 481 pd sinedrum;
#X obj 618 369 sel 1;
#X obj 809 453 nbx 5 14 0 0.96 0 0 empty empty empty 0 -8 0 10 -261682
-1 -1 0.768 256;
#X text 751 436 comb len;
#X text 812 438 comb fb;
#X floatatom 875 278 5 0 0 0 - - -;
#X floatatom 188 392 5 0 0 0 - - -;
#X obj 188 411 mtof;
#X obj 223 502 *~ 0.75;
#N canvas 160 78 450 300 declares 0;
#X obj 13 71 declare -path ..;
#X obj 13 101 declare -stdpath mrpeach;
#X obj 12 127 declare -stdpath mrpeach/net;
#X obj 12 157 declare -stdpath osc;
#X obj 12 187 declare -stdpath cxc;
#X obj 14 216 declare -stdpath mapping;
#X obj 14 14 declare -path ../modules;
#X obj 14 44 declare -path ../bf-pd;
#X restore 17 19 pd declares;
#X obj 424 546 *~;
#X obj 312 387 loadbang;
#X msg 245 415 0;
#X msg 312 414 250;
#X obj 868 390 loadbang;
#N canvas 303 173 731 590 hhINit 0;
#X obj 187 45 loadbang;
#X obj 204 91 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 205 117 t b b;
#X obj 204 146 until;
#X obj 296 175 + 1;
#X obj 262 176 f;
#X msg 277 146 0;
#X text 243 87 until produces bangs as fast as possible;
#X obj 252 260 random 100;
#X obj 252 283 + 10;
#X obj 204 203 sel 5;
#X obj 253 313 outlet;
#X obj 109 36 inlet;
#X obj 327 315 outlet;
#X text 294 41 this subpatch generates new random values for the feedback
parameter;
#X obj 264 204 t b f;
#X text 325 335 index;
#X text 254 336 value;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 2 1 6 0;
#X connect 3 0 5 0;
#X connect 4 0 5 1;
#X connect 5 0 4 0;
#X connect 5 0 10 0;
#X connect 5 0 15 0;
#X connect 6 0 5 1;
#X connect 8 0 9 0;
#X connect 9 0 11 0;
#X connect 10 0 3 1;
#X connect 12 0 1 0;
#X connect 15 0 8 0;
#X connect 15 1 13 0;
#X restore 720 278 pd hhINit;
#X obj 686 503 *~ 0.1;
#X obj 718 258 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 260 208 t b b b;
#N canvas 2 88 450 300 cntr8 0;
#X obj 152 57 inlet;
#X obj 181 172 f 0;
#X obj 215 171 + 1;
#X obj 181 214 mod 8;
#X msg 208 142 0;
#X obj 187 253 outlet, f 13;
#X text 235 87 a counter 0 to 7;
#X text 240 143 reset;
#X obj 201 57 inlet;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 0 3 0;
#X connect 2 0 1 1;
#X connect 3 0 5 0;
#X connect 4 0 1 1;
#X connect 8 0 4 0;
#X restore 256 230 pd cntr8;
#N canvas 0 23 556 337 cntr6 0;
#X obj 152 57 inlet;
#X obj 266 59 inlet;
#X obj 181 172 f 0;
#X obj 215 171 + 1;
#X msg 305 174 0;
#X obj 187 253 outlet, f 13;
#X obj 181 214 mod 6;
#X text 312 58 reset;
#X text 169 21 a counter 0 to 5;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 2 0 6 0;
#X connect 3 0 2 1;
#X connect 4 0 2 1;
#X connect 6 0 5 0;
#X restore 875 257 pd cntr6;
#X obj 914 236 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X text 828 235 reset counter;
#X msg 868 410 0.8;
#X text 221 391 pitch midi;
#X floatatom 746 371 5 0 0 0 - - -;
#X text 738 257 randomize;
#N canvas 0 23 450 300 calcComb 0;
#X obj 78 147 mtof;
#X obj 78 169 expr (1000.0/$f1);
#X obj 78 126 + 64;
#X obj 257 138 expr $f1*150+50;
#X obj 362 140 expr $f1*0.96;
#X obj 35 36 inlet;
#X text 36 10 comb delay length as midi pitch;
#X obj 273 61 inlet;
#X text 285 22 comb feedback 0 to 1;
#X obj 88 249 outlet;
#X text 90 275 hh env decay;
#X obj 234 246 outlet;
#X text 233 272 comb delay;
#X obj 356 246 outlet;
#X text 355 272 comb fb;
#X connect 0 0 1 0;
#X connect 1 0 11 0;
#X connect 2 0 0 0;
#X connect 3 0 9 0;
#X connect 4 0 13 0;
#X connect 5 0 2 0;
#X connect 7 0 3 0;
#X connect 7 0 4 0;
#X restore 746 412 pd calcComb;
#X text 494 18 A Drum Sequencer with Kick and Hiat using bf-pd;
#X obj 752 452 nbx 5 14 0 0.96 0 0 empty empty empty 0 -8 0 10 -261682
-1 -1 0.536292 256;
#X obj 809 390 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -261682
-1 -1 0.8 256;
#X text 494 41 This is an example patch for how to build an instrument
and use bf parameters when using bf-pd. Bf-pd is an implementation
of the BOEUF framework by Luke Dahl and Florent Berthaut. More details
on https://gitlab.cristal.univ-lille.fr/boeuf/bf-pd;
#X obj 316 231 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 424 576 bf-instrument drumInst2-\$0;
#X text 333 230 reset downbeat;
#X text 84 481 A KickDrum Synth;
#X text 589 482 A HiHat Synth;
#X msg 380 412 1;
#X text 748 390 feedback;
#X obj 18 301 bf-param drumInst2-\$0 kicks 8 bool 1;
#X obj 265 298 bf-param drumInst2-\$0 kickPitch 1 midi 2;
#X obj 513 299 bf-param drumInst2-\$0 hh 8 bool 3;
#X obj 718 299 bf-param drumInst2-\$0 hhDly 6 midi 4;
#X obj 8 230 bf-output drumInst2-\$0 clockOut 1 bang 0;
#N canvas 150 50 495 329 gaincalc 0;
#X obj 36 25 inlet;
#X floatatom 78 103 5 0 0 0 - - -;
#X obj 78 168 dbtorms;
#X floatatom 155 168 5 0 0 0 - - -;
#X obj 36 72 sel 0;
#X msg 35 98 0;
#X obj 78 144 + 65;
#X obj 77 122 * 45;
#X text 189 166 gain in dB (100 = 0 dbFS);
#X floatatom 155 202 5 0 0 0 - - -;
#X text 195 202 linear gain;
#X obj 71 211 line~;
#X msg 71 194 \$1 10;
#X obj 71 228 outlet~;
#X text 24 259 control volume over a useful range with an input that
is [0 \, 127];
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 9 0;
#X connect 2 0 12 0;
#X connect 4 0 5 0;
#X connect 4 1 1 0;
#X connect 5 0 2 0;
#X connect 6 0 3 0;
#X connect 6 0 2 0;
#X connect 7 0 6 0;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X restore 647 657 pd gaincalc;
#X obj 648 549 loadbang;
#X msg 648 569 0.5;
#X obj 648 589 bf-param drumInst2-\$0 volume 1 cont 5;
#X obj 19 45 loadbang;
#X msg 19 69 dsp 1;
#X obj 19 93 s pd;
#X obj 162 80 bf-clock drumInst2-\$0 clock1 0;
#X connect 1 0 18 0;
#X connect 2 0 57 2;
#X connect 2 0 59 2;
#X connect 3 0 1 0;
#X connect 4 0 18 1;
#X connect 5 0 18 2;
#X connect 6 0 18 4;
#X connect 10 0 18 5;
#X connect 12 0 17 0;
#X connect 13 0 17 1;
#X connect 14 0 17 2;
#X connect 17 0 34 0;
#X connect 18 0 26 0;
#X connect 19 0 12 0;
#X connect 20 0 17 4;
#X connect 23 0 60 2;
#X connect 24 0 25 0;
#X connect 25 0 4 0;
#X connect 26 0 28 0;
#X connect 28 0 0 0;
#X connect 28 0 0 1;
#X connect 28 0 51 0;
#X connect 29 0 30 0;
#X connect 29 0 31 0;
#X connect 29 0 55 0;
#X connect 30 0 5 0;
#X connect 31 0 6 0;
#X connect 32 0 41 0;
#X connect 33 0 60 0;
#X connect 33 1 60 1;
#X connect 34 0 28 0;
#X connect 35 0 33 0;
#X connect 36 0 37 0;
#X connect 36 1 38 0;
#X connect 36 2 61 0;
#X connect 37 0 2 0;
#X connect 38 0 23 0;
#X connect 39 0 38 1;
#X connect 41 0 48 0;
#X connect 43 0 45 0;
#X connect 45 0 14 0;
#X connect 45 1 47 0;
#X connect 45 2 20 0;
#X connect 47 0 17 3;
#X connect 48 0 45 1;
#X connect 50 0 37 1;
#X connect 55 0 10 0;
#X connect 57 2 3 0;
#X connect 58 0 24 0;
#X connect 59 2 19 0;
#X connect 60 2 43 0;
#X connect 62 0 28 1;
#X connect 63 0 64 0;
#X connect 64 0 65 0;
#X connect 65 0 62 0;
#X connect 66 0 67 0;
#X connect 67 0 68 0;
#X connect 69 2 36 0;