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