#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 0.1 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 302 599 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 text 327 19 stop; #X obj 256 192 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 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 256 127 * 300; #X floatatom 256 148 5 0 0 0 - - -; #X text 229 147 BPM; #X obj 257 43 / 300; #X msg 301 19 0; #X msg 399 20 120; #N canvas 415 212 914 365 clock16th 0; #X obj 38 36 inlet; #X obj 38 254 outlet; #X obj 38 140 phasor~; #X obj 38 119 line~; #X msg 38 99 \$1 10; #X msg 137 57 4; #X text 166 58 (4 ticks/beat \, i.e. 16th notes); #X obj 137 39 loadbang; #X obj 38 76 expr ($f1*$f2)/60; #X text 152 78 ticks_per_sec = beats_per_min * ticks_per_beat / sec_per_min ; #X msg 86 118 0; #X text 118 120 reset phase; #X obj 690 191 f 0.1; #X obj 636 82 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 590 80 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 636 102 t b b; #X obj 590 102 t b b; #X obj 38 230 threshold~ 0.5 1 0.1 1; #X obj 38 161 +~; #X obj 37 184 wrap~; #X text 36 14 create a tempo clock; #X obj 782 78 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 736 76 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 782 98 t b b; #X obj 736 98 t b b; #X msg 776 192 0; #X text 777 177 reset; #X obj 710 221 + 0; #X text 799 58 nudge--; #X text 740 59 nudge-; #X text 641 64 nudge+; #X text 592 64 nudge++; #X obj 589 38 inlet; #X obj 636 36 inlet; #X obj 736 38 inlet; #X obj 782 38 inlet; #X msg 617 133 0.1; #X msg 663 133 0.025; #X msg 763 129 -0.025; #X msg 809 129 -0.1; #X text 454 274 We can nudge the clock forward or back. (This does not change the tempo \, just the phase.); #X connect 0 0 8 0; #X connect 2 0 18 0; #X connect 3 0 2 0; #X connect 4 0 3 0; #X connect 5 0 8 1; #X connect 7 0 5 0; #X connect 8 0 4 0; #X connect 10 0 2 1; #X connect 12 0 27 0; #X connect 13 0 15 0; #X connect 14 0 16 0; #X connect 15 0 12 0; #X connect 15 1 37 0; #X connect 16 0 12 0; #X connect 16 1 36 0; #X connect 17 0 1 0; #X connect 18 0 19 0; #X connect 19 0 17 0; #X connect 21 0 23 0; #X connect 22 0 24 0; #X connect 23 0 12 0; #X connect 23 1 39 0; #X connect 24 0 12 0; #X connect 24 1 38 0; #X connect 25 0 12 1; #X connect 27 0 12 1; #X connect 27 0 18 1; #X connect 32 0 14 0; #X connect 33 0 13 0; #X connect 34 0 22 0; #X connect 35 0 21 0; #X connect 36 0 27 1; #X connect 37 0 27 1; #X connect 38 0 27 1; #X connect 39 0 27 1; #X restore 256 169 pd clock16th; #X f 13; #X obj 316 231 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X floatatom 257 20 5 0 0 0 - - -; #X obj 424 576 bf-instrument drumInst2-\$0; #X msg 362 20 80; #X obj 348 169 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 348 186 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 348 135 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 348 152 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X text 367 186 nudge--; #X text 366 168 nudge-; #X text 367 150 nudge+; #X text 367 133 nudge++; #X text 228 19 BPM; #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 433 143 Nudge the clock forward or back to sync with other instruments at the same tempo, f 29; #X text 748 390 feedback; #X obj 256 62 bf-param drumInst2-\$0 bpm300 1 cont 0; #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 connect 1 0 18 0; #X connect 2 0 78 2; #X connect 2 0 80 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 81 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 60 0; #X connect 29 0 30 0; #X connect 29 0 31 0; #X connect 29 0 74 0; #X connect 30 0 5 0; #X connect 31 0 6 0; #X connect 32 0 42 0; #X connect 33 0 81 0; #X connect 33 1 81 1; #X connect 34 0 28 0; #X connect 35 0 33 0; #X connect 37 0 38 0; #X connect 37 1 39 0; #X connect 37 2 82 0; #X connect 38 0 2 0; #X connect 39 0 23 0; #X connect 40 0 39 1; #X connect 42 0 49 0; #X connect 44 0 46 0; #X connect 46 0 14 0; #X connect 46 1 48 0; #X connect 46 2 20 0; #X connect 48 0 17 3; #X connect 49 0 46 1; #X connect 51 0 52 0; #X connect 52 0 57 0; #X connect 54 0 77 0; #X connect 55 0 54 0; #X connect 56 0 54 0; #X connect 57 0 37 0; #X connect 58 0 38 1; #X connect 59 0 54 0; #X connect 61 0 54 0; #X connect 62 0 57 3; #X connect 63 0 57 4; #X connect 64 0 57 1; #X connect 65 0 57 2; #X connect 74 0 10 0; #X connect 77 0 51 0; #X connect 78 2 3 0; #X connect 79 0 24 0; #X connect 80 2 19 0; #X connect 81 2 44 0; #X connect 83 0 28 1; #X connect 84 0 85 0; #X connect 85 0 86 0; #X connect 86 0 83 0;