#N canvas 3 101 705 445 10; #X obj 539 132 s pd-My_Happy_Sequencer; #X msg 539 104 vis \$1; #X obj 539 77 tgl 20 0 empty empty empty 17 7 0 10 -204800 -1 -1 1 1; #X text 570 77 show GUI; #X text 386 259 <- Container for the sequencer GUI; #X obj 191 346 spigot; #X obj 237 345 tgl 20 0 empty empty empty 17 7 0 10 -204800 -1 -1 0 1; #X text 258 346 print editor messages; #X obj 539 51 loadbang; #N canvas 0 99 454 259 counter 0; #X obj 21 25 inlet; #X obj 21 81 f; #X obj 21 129 t a a; #X obj 105 102 + 1; #X obj 119 26 inlet; #X msg 119 49 0; #X obj 21 160 outlet; #X obj 21 58 metro 150; #X obj 21 104 mod 128; #X obj 201 101 cnv 12 90 12 empty empty empty 20 12 0 14 -261682 -66577 0; #X text 201 99 loop-length=; #X obj 275 100 nbx 3 14 1 999 0 0 empty empty empty 0 -8 0 10 -261682 -1 -1 64 256; #X obj 275 28 loadbang; #X msg 275 51 64; #X connect 0 0 7 0; #X connect 1 0 8 0; #X connect 2 0 6 0; #X connect 2 1 3 0; #X connect 3 0 1 1; #X connect 4 0 5 0; #X connect 5 0 1 1; #X connect 7 0 1 0; #X connect 8 0 2 0; #X connect 11 0 8 1; #X connect 12 0 13 0; #X connect 13 0 11 0; #X coords 0 -1 1 1 111 14 2 200 100; #X restore 20 215 pd counter; #X obj 20 232 nbx 3 18 0 9999 0 0 empty empty empty 0 -8 0 10 -204786 -1 -1 0 256; #X obj 20 191 tgl 20 0 empty empty empty 17 7 0 10 -261682 -1 -1 0 1; #X text 43 191 turn on/off clock; #X obj 191 375 print EDITOR; #X obj 20 375 print NOTES; #X obj 20 346 spigot; #X obj 66 345 tgl 20 0 empty empty empty 17 7 0 10 -204800 -1 -1 0 1; #X text 94 375 print notes; #N canvas 318 287 538 414 synth 0; #N canvas 0 99 623 536 voice 0; #X obj 41 288 osc~ 440; #X obj 41 428 expr~ tanh($v1); #X obj 40 402 *~; #X obj 288 378 dbtorms~; #X obj 288 353 vline~; #X obj 287 176 pack f f; #X obj 288 201 route 1 0; #X obj 288 232 t a a; #X obj 333 255 - 10; #X obj 288 280 pack f f; #X msg 288 308 \$1 5 0 \, \$2 30 10; #X obj 52 311 osc~ 880.5; #X obj 52 334 *~ 0.5; #X obj 418 264 - 30; #X msg 418 317 \$1 10 0 \, 0 2000 50; #X obj 41 171 mtof; #X obj 41 214 t a a; #X obj 68 236 * 2; #X obj 68 259 + 0.5; #X obj 519 187 t a a; #X obj 519 210 *; #X obj 519 164 / 100; #X obj 519 233 t a a; #X obj 519 256 *; #X obj 519 279 rmstodb; #X obj 41 31 inlet; #X obj 41 60 unpack f f; #X obj 287 96 moses 1; #X obj 326 122 t b a; #X msg 326 145 1; #X msg 287 126 0; #X obj 41 451 outlet~; #X obj 151 308 osc~ 440; #X obj 151 428 expr~ tanh($v1); #X obj 150 402 *~; #X obj 162 331 osc~ 880.5; #X obj 162 354 *~ 0.5; #X obj 178 236 * 2; #X obj 151 451 outlet~; #X obj 220 191 random 100; #X obj 220 214 / 100; #X obj 220 237 - 0.5; #X obj 151 237 +; #X obj 151 204 t a a b; #X obj 178 259 +; #X obj 178 282 - 0.5; #X connect 0 0 2 0; #X connect 1 0 31 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 3 0 34 1; #X connect 4 0 3 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 6 1 13 0; #X connect 7 0 9 0; #X connect 7 1 8 0; #X connect 8 0 9 1; #X connect 9 0 10 0; #X connect 10 0 4 0; #X connect 11 0 12 0; #X connect 12 0 2 0; #X connect 13 0 14 0; #X connect 14 0 4 0; #X connect 15 0 16 0; #X connect 15 0 43 0; #X connect 16 0 0 0; #X connect 16 1 17 0; #X connect 17 0 18 0; #X connect 18 0 11 0; #X connect 19 0 20 0; #X connect 19 1 20 1; #X connect 20 0 22 0; #X connect 21 0 19 0; #X connect 22 0 23 0; #X connect 22 1 23 1; #X connect 23 0 24 0; #X connect 24 0 5 1; #X connect 25 0 26 0; #X connect 26 0 15 0; #X connect 26 1 27 0; #X connect 27 0 30 0; #X connect 27 1 28 0; #X connect 28 0 29 0; #X connect 28 1 21 0; #X connect 29 0 5 0; #X connect 30 0 5 0; #X connect 32 0 34 0; #X connect 33 0 38 0; #X connect 34 0 33 0; #X connect 35 0 36 0; #X connect 36 0 34 0; #X connect 37 0 44 0; #X connect 39 0 40 0; #X connect 40 0 41 0; #X connect 41 0 42 1; #X connect 41 0 44 1; #X connect 42 0 32 0; #X connect 43 0 42 0; #X connect 43 1 37 0; #X connect 43 2 39 0; #X connect 44 0 45 0; #X connect 45 0 35 0; #X restore 13 120 pd voice; #X obj 13 18 inlet; #X obj 13 66 pack f f f; #X obj 33 220 hsl 100 15 0 1 0 0 \$0.bli \$0.bla empty -2 -8 0 10 -261682 -1 -1 0 1; #X obj 58 248 t a a; #X msg 58 294 \$1 50; #X obj 58 317 line~; #X obj 8 346 *~; #X obj 7 387 dac~ 1 2; #X obj 58 271 *; #X obj 13 89 route 1 2 3 4 5 6, f 61; #X obj 13 43 poly 6 1, f 10; #X obj 135 220 tgl 15 0 \$0.bli \$0.bla empty 17 7 0 10 -261682 -1 -1 0 1; #X msg 147 261 dsp \$1; #X obj 147 284 s pd; #X obj 52 348 *~; #N canvas 0 99 623 536 voice 0; #X obj 41 288 osc~ 440; #X obj 41 428 expr~ tanh($v1); #X obj 40 402 *~; #X obj 288 378 dbtorms~; #X obj 288 353 vline~; #X obj 287 176 pack f f; #X obj 288 201 route 1 0; #X obj 288 232 t a a; #X obj 333 255 - 10; #X obj 288 280 pack f f; #X msg 288 308 \$1 5 0 \, \$2 30 10; #X obj 52 311 osc~ 880.5; #X obj 52 334 *~ 0.5; #X obj 418 264 - 30; #X msg 418 317 \$1 10 0 \, 0 2000 50; #X obj 41 171 mtof; #X obj 41 214 t a a; #X obj 68 236 * 2; #X obj 68 259 + 0.5; #X obj 519 187 t a a; #X obj 519 210 *; #X obj 519 164 / 100; #X obj 519 233 t a a; #X obj 519 256 *; #X obj 519 279 rmstodb; #X obj 41 31 inlet; #X obj 41 60 unpack f f; #X obj 287 96 moses 1; #X obj 326 122 t b a; #X msg 326 145 1; #X msg 287 126 0; #X obj 41 451 outlet~; #X obj 151 308 osc~ 440; #X obj 151 428 expr~ tanh($v1); #X obj 150 402 *~; #X obj 162 331 osc~ 880.5; #X obj 162 354 *~ 0.5; #X obj 178 236 * 2; #X obj 151 451 outlet~; #X obj 220 191 random 100; #X obj 220 214 / 100; #X obj 220 237 - 0.5; #X obj 151 237 +; #X obj 151 204 t a a b; #X obj 178 259 +; #X obj 178 282 - 0.5; #X connect 0 0 2 0; #X connect 1 0 31 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 3 0 34 1; #X connect 4 0 3 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 6 1 13 0; #X connect 7 0 9 0; #X connect 7 1 8 0; #X connect 8 0 9 1; #X connect 9 0 10 0; #X connect 10 0 4 0; #X connect 11 0 12 0; #X connect 12 0 2 0; #X connect 13 0 14 0; #X connect 14 0 4 0; #X connect 15 0 16 0; #X connect 15 0 43 0; #X connect 16 0 0 0; #X connect 16 1 17 0; #X connect 17 0 18 0; #X connect 18 0 11 0; #X connect 19 0 20 0; #X connect 19 1 20 1; #X connect 20 0 22 0; #X connect 21 0 19 0; #X connect 22 0 23 0; #X connect 22 1 23 1; #X connect 23 0 24 0; #X connect 24 0 5 1; #X connect 25 0 26 0; #X connect 26 0 15 0; #X connect 26 1 27 0; #X connect 27 0 30 0; #X connect 27 1 28 0; #X connect 28 0 29 0; #X connect 28 1 21 0; #X connect 29 0 5 0; #X connect 30 0 5 0; #X connect 32 0 34 0; #X connect 33 0 38 0; #X connect 34 0 33 0; #X connect 35 0 36 0; #X connect 36 0 34 0; #X connect 37 0 44 0; #X connect 39 0 40 0; #X connect 40 0 41 0; #X connect 41 0 42 1; #X connect 41 0 44 1; #X connect 42 0 32 0; #X connect 43 0 42 0; #X connect 43 1 37 0; #X connect 43 2 39 0; #X connect 44 0 45 0; #X connect 45 0 35 0; #X restore 73 120 pd voice; #N canvas 0 99 623 536 voice 0; #X obj 41 288 osc~ 440; #X obj 41 428 expr~ tanh($v1); #X obj 40 402 *~; #X obj 288 378 dbtorms~; #X obj 288 353 vline~; #X obj 287 176 pack f f; #X obj 288 201 route 1 0; #X obj 288 232 t a a; #X obj 333 255 - 10; #X obj 288 280 pack f f; #X msg 288 308 \$1 5 0 \, \$2 30 10; #X obj 52 311 osc~ 880.5; #X obj 52 334 *~ 0.5; #X obj 418 264 - 30; #X msg 418 317 \$1 10 0 \, 0 2000 50; #X obj 41 171 mtof; #X obj 41 214 t a a; #X obj 68 236 * 2; #X obj 68 259 + 0.5; #X obj 519 187 t a a; #X obj 519 210 *; #X obj 519 164 / 100; #X obj 519 233 t a a; #X obj 519 256 *; #X obj 519 279 rmstodb; #X obj 41 31 inlet; #X obj 41 60 unpack f f; #X obj 287 96 moses 1; #X obj 326 122 t b a; #X msg 326 145 1; #X msg 287 126 0; #X obj 41 451 outlet~; #X obj 151 308 osc~ 440; #X obj 151 428 expr~ tanh($v1); #X obj 150 402 *~; #X obj 162 331 osc~ 880.5; #X obj 162 354 *~ 0.5; #X obj 178 236 * 2; #X obj 151 451 outlet~; #X obj 220 191 random 100; #X obj 220 214 / 100; #X obj 220 237 - 0.5; #X obj 151 237 +; #X obj 151 204 t a a b; #X obj 178 259 +; #X obj 178 282 - 0.5; #X connect 0 0 2 0; #X connect 1 0 31 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 3 0 34 1; #X connect 4 0 3 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 6 1 13 0; #X connect 7 0 9 0; #X connect 7 1 8 0; #X connect 8 0 9 1; #X connect 9 0 10 0; #X connect 10 0 4 0; #X connect 11 0 12 0; #X connect 12 0 2 0; #X connect 13 0 14 0; #X connect 14 0 4 0; #X connect 15 0 16 0; #X connect 15 0 43 0; #X connect 16 0 0 0; #X connect 16 1 17 0; #X connect 17 0 18 0; #X connect 18 0 11 0; #X connect 19 0 20 0; #X connect 19 1 20 1; #X connect 20 0 22 0; #X connect 21 0 19 0; #X connect 22 0 23 0; #X connect 22 1 23 1; #X connect 23 0 24 0; #X connect 24 0 5 1; #X connect 25 0 26 0; #X connect 26 0 15 0; #X connect 26 1 27 0; #X connect 27 0 30 0; #X connect 27 1 28 0; #X connect 28 0 29 0; #X connect 28 1 21 0; #X connect 29 0 5 0; #X connect 30 0 5 0; #X connect 32 0 34 0; #X connect 33 0 38 0; #X connect 34 0 33 0; #X connect 35 0 36 0; #X connect 36 0 34 0; #X connect 37 0 44 0; #X connect 39 0 40 0; #X connect 40 0 41 0; #X connect 41 0 42 1; #X connect 41 0 44 1; #X connect 42 0 32 0; #X connect 43 0 42 0; #X connect 43 1 37 0; #X connect 43 2 39 0; #X connect 44 0 45 0; #X connect 45 0 35 0; #X restore 134 120 pd voice; #N canvas 0 99 623 536 voice 0; #X obj 41 288 osc~ 440; #X obj 41 428 expr~ tanh($v1); #X obj 40 402 *~; #X obj 288 378 dbtorms~; #X obj 288 353 vline~; #X obj 287 176 pack f f; #X obj 288 201 route 1 0; #X obj 288 232 t a a; #X obj 333 255 - 10; #X obj 288 280 pack f f; #X msg 288 308 \$1 5 0 \, \$2 30 10; #X obj 52 311 osc~ 880.5; #X obj 52 334 *~ 0.5; #X obj 418 264 - 30; #X msg 418 317 \$1 10 0 \, 0 2000 50; #X obj 41 171 mtof; #X obj 41 214 t a a; #X obj 68 236 * 2; #X obj 68 259 + 0.5; #X obj 519 187 t a a; #X obj 519 210 *; #X obj 519 164 / 100; #X obj 519 233 t a a; #X obj 519 256 *; #X obj 519 279 rmstodb; #X obj 41 31 inlet; #X obj 41 60 unpack f f; #X obj 287 96 moses 1; #X obj 326 122 t b a; #X msg 326 145 1; #X msg 287 126 0; #X obj 41 451 outlet~; #X obj 151 308 osc~ 440; #X obj 151 428 expr~ tanh($v1); #X obj 150 402 *~; #X obj 162 331 osc~ 880.5; #X obj 162 354 *~ 0.5; #X obj 178 236 * 2; #X obj 151 451 outlet~; #X obj 220 191 random 100; #X obj 220 214 / 100; #X obj 220 237 - 0.5; #X obj 151 237 +; #X obj 151 204 t a a b; #X obj 178 259 +; #X obj 178 282 - 0.5; #X connect 0 0 2 0; #X connect 1 0 31 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 3 0 34 1; #X connect 4 0 3 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 6 1 13 0; #X connect 7 0 9 0; #X connect 7 1 8 0; #X connect 8 0 9 1; #X connect 9 0 10 0; #X connect 10 0 4 0; #X connect 11 0 12 0; #X connect 12 0 2 0; #X connect 13 0 14 0; #X connect 14 0 4 0; #X connect 15 0 16 0; #X connect 15 0 43 0; #X connect 16 0 0 0; #X connect 16 1 17 0; #X connect 17 0 18 0; #X connect 18 0 11 0; #X connect 19 0 20 0; #X connect 19 1 20 1; #X connect 20 0 22 0; #X connect 21 0 19 0; #X connect 22 0 23 0; #X connect 22 1 23 1; #X connect 23 0 24 0; #X connect 24 0 5 1; #X connect 25 0 26 0; #X connect 26 0 15 0; #X connect 26 1 27 0; #X connect 27 0 30 0; #X connect 27 1 28 0; #X connect 28 0 29 0; #X connect 28 1 21 0; #X connect 29 0 5 0; #X connect 30 0 5 0; #X connect 32 0 34 0; #X connect 33 0 38 0; #X connect 34 0 33 0; #X connect 35 0 36 0; #X connect 36 0 34 0; #X connect 37 0 44 0; #X connect 39 0 40 0; #X connect 40 0 41 0; #X connect 41 0 42 1; #X connect 41 0 44 1; #X connect 42 0 32 0; #X connect 43 0 42 0; #X connect 43 1 37 0; #X connect 43 2 39 0; #X connect 44 0 45 0; #X connect 45 0 35 0; #X restore 194 120 pd voice; #N canvas 0 99 623 536 voice 0; #X obj 41 288 osc~ 440; #X obj 41 428 expr~ tanh($v1); #X obj 40 402 *~; #X obj 288 378 dbtorms~; #X obj 288 353 vline~; #X obj 287 176 pack f f; #X obj 288 201 route 1 0; #X obj 288 232 t a a; #X obj 333 255 - 10; #X obj 288 280 pack f f; #X msg 288 308 \$1 5 0 \, \$2 30 10; #X obj 52 311 osc~ 880.5; #X obj 52 334 *~ 0.5; #X obj 418 264 - 30; #X msg 418 317 \$1 10 0 \, 0 2000 50; #X obj 41 171 mtof; #X obj 41 214 t a a; #X obj 68 236 * 2; #X obj 68 259 + 0.5; #X obj 519 187 t a a; #X obj 519 210 *; #X obj 519 164 / 100; #X obj 519 233 t a a; #X obj 519 256 *; #X obj 519 279 rmstodb; #X obj 41 31 inlet; #X obj 41 60 unpack f f; #X obj 287 96 moses 1; #X obj 326 122 t b a; #X msg 326 145 1; #X msg 287 126 0; #X obj 41 451 outlet~; #X obj 151 308 osc~ 440; #X obj 151 428 expr~ tanh($v1); #X obj 150 402 *~; #X obj 162 331 osc~ 880.5; #X obj 162 354 *~ 0.5; #X obj 178 236 * 2; #X obj 151 451 outlet~; #X obj 220 191 random 100; #X obj 220 214 / 100; #X obj 220 237 - 0.5; #X obj 151 237 +; #X obj 151 204 t a a b; #X obj 178 259 +; #X obj 178 282 - 0.5; #X connect 0 0 2 0; #X connect 1 0 31 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 3 0 34 1; #X connect 4 0 3 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 6 1 13 0; #X connect 7 0 9 0; #X connect 7 1 8 0; #X connect 8 0 9 1; #X connect 9 0 10 0; #X connect 10 0 4 0; #X connect 11 0 12 0; #X connect 12 0 2 0; #X connect 13 0 14 0; #X connect 14 0 4 0; #X connect 15 0 16 0; #X connect 15 0 43 0; #X connect 16 0 0 0; #X connect 16 1 17 0; #X connect 17 0 18 0; #X connect 18 0 11 0; #X connect 19 0 20 0; #X connect 19 1 20 1; #X connect 20 0 22 0; #X connect 21 0 19 0; #X connect 22 0 23 0; #X connect 22 1 23 1; #X connect 23 0 24 0; #X connect 24 0 5 1; #X connect 25 0 26 0; #X connect 26 0 15 0; #X connect 26 1 27 0; #X connect 27 0 30 0; #X connect 27 1 28 0; #X connect 28 0 29 0; #X connect 28 1 21 0; #X connect 29 0 5 0; #X connect 30 0 5 0; #X connect 32 0 34 0; #X connect 33 0 38 0; #X connect 34 0 33 0; #X connect 35 0 36 0; #X connect 36 0 34 0; #X connect 37 0 44 0; #X connect 39 0 40 0; #X connect 40 0 41 0; #X connect 41 0 42 1; #X connect 41 0 44 1; #X connect 42 0 32 0; #X connect 43 0 42 0; #X connect 43 1 37 0; #X connect 43 2 39 0; #X connect 44 0 45 0; #X connect 45 0 35 0; #X restore 255 120 pd voice; #N canvas 0 99 623 536 voice 0; #X obj 41 288 osc~ 440; #X obj 41 428 expr~ tanh($v1); #X obj 40 402 *~; #X obj 288 378 dbtorms~; #X obj 288 353 vline~; #X obj 287 176 pack f f; #X obj 288 201 route 1 0; #X obj 288 232 t a a; #X obj 333 255 - 10; #X obj 288 280 pack f f; #X msg 288 308 \$1 5 0 \, \$2 30 10; #X obj 52 311 osc~ 880.5; #X obj 52 334 *~ 0.5; #X obj 418 264 - 30; #X msg 418 317 \$1 10 0 \, 0 2000 50; #X obj 41 171 mtof; #X obj 41 214 t a a; #X obj 68 236 * 2; #X obj 68 259 + 0.5; #X obj 519 187 t a a; #X obj 519 210 *; #X obj 519 164 / 100; #X obj 519 233 t a a; #X obj 519 256 *; #X obj 519 279 rmstodb; #X obj 41 31 inlet; #X obj 41 60 unpack f f; #X obj 287 96 moses 1; #X obj 326 122 t b a; #X msg 326 145 1; #X msg 287 126 0; #X obj 41 451 outlet~; #X obj 151 308 osc~ 440; #X obj 151 428 expr~ tanh($v1); #X obj 150 402 *~; #X obj 162 331 osc~ 880.5; #X obj 162 354 *~ 0.5; #X obj 178 236 * 2; #X obj 151 451 outlet~; #X obj 220 191 random 100; #X obj 220 214 / 100; #X obj 220 237 - 0.5; #X obj 151 237 +; #X obj 151 204 t a a b; #X obj 178 259 +; #X obj 178 282 - 0.5; #X connect 0 0 2 0; #X connect 1 0 31 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 3 0 34 1; #X connect 4 0 3 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 6 1 13 0; #X connect 7 0 9 0; #X connect 7 1 8 0; #X connect 8 0 9 1; #X connect 9 0 10 0; #X connect 10 0 4 0; #X connect 11 0 12 0; #X connect 12 0 2 0; #X connect 13 0 14 0; #X connect 14 0 4 0; #X connect 15 0 16 0; #X connect 15 0 43 0; #X connect 16 0 0 0; #X connect 16 1 17 0; #X connect 17 0 18 0; #X connect 18 0 11 0; #X connect 19 0 20 0; #X connect 19 1 20 1; #X connect 20 0 22 0; #X connect 21 0 19 0; #X connect 22 0 23 0; #X connect 22 1 23 1; #X connect 23 0 24 0; #X connect 24 0 5 1; #X connect 25 0 26 0; #X connect 26 0 15 0; #X connect 26 1 27 0; #X connect 27 0 30 0; #X connect 27 1 28 0; #X connect 28 0 29 0; #X connect 28 1 21 0; #X connect 29 0 5 0; #X connect 30 0 5 0; #X connect 32 0 34 0; #X connect 33 0 38 0; #X connect 34 0 33 0; #X connect 35 0 36 0; #X connect 36 0 34 0; #X connect 37 0 44 0; #X connect 39 0 40 0; #X connect 40 0 41 0; #X connect 41 0 42 1; #X connect 41 0 44 1; #X connect 42 0 32 0; #X connect 43 0 42 0; #X connect 43 1 37 0; #X connect 43 2 39 0; #X connect 44 0 45 0; #X connect 45 0 35 0; #X restore 315 120 pd voice; #X obj 9 176 +~ 0; #X obj 39 176 +~ 0; #X connect 0 0 21 0; #X connect 0 1 22 0; #X connect 1 0 11 0; #X connect 2 0 10 0; #X connect 3 0 4 0; #X connect 4 0 9 0; #X connect 4 1 9 1; #X connect 5 0 6 0; #X connect 6 0 7 1; #X connect 6 0 15 1; #X connect 7 0 8 0; #X connect 9 0 5 0; #X connect 10 0 0 0; #X connect 10 1 16 0; #X connect 10 2 17 0; #X connect 10 3 18 0; #X connect 10 4 19 0; #X connect 10 5 20 0; #X connect 11 0 2 0; #X connect 11 1 2 1; #X connect 11 2 2 2; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 15 0 8 1; #X connect 16 0 21 0; #X connect 16 1 22 0; #X connect 17 0 21 0; #X connect 17 1 22 0; #X connect 18 0 21 0; #X connect 18 1 22 0; #X connect 19 0 21 0; #X connect 19 1 22 0; #X connect 20 0 21 0; #X connect 20 1 22 0; #X connect 21 0 7 0; #X connect 22 0 15 0; #X coords 0 -1 1 1 120 35 1 30 200; #X restore 31 297 pd synth; #X obj 191 201 r \$0.to; #N canvas 170 116 645 392 note.manipulation 0; #X obj 18 190 s \$0.to; #X msg 78 38 note create 4 65 80 12 0; #X text 77 14 NOTE MANIPULATION; #X msg 78 68 note change duration 4 65 16; #X msg 78 98 note change velocity 4 65 120; #X msg 78 128 note change gid 4 65 1; #X text 279 38 create a note with [step \, pitch \, velocity \, duration \, gid]; #X text 279 68 change a note's duration [step \, pitch \, duration] ; #X text 279 98 chage a note's velocity [step \, pitch \, velocity] ; #X text 279 128 change a note's group [step \, pitch \, gid]; #X text 279 158 delete a note [step \, pitch]; #X msg 78 158 note delete 4 65; #X text 82 228 step: denotes the temporal position of the note (0 - inf); #X text 82 248 pitch: refers to the MIDI pitch (0 - 127); #X text 82 268 duration: period between note-on and note-off (1 - inf) ; #X text 82 288 velocity: (1 -127) for note-on \, 0 for note-off; #X text 82 308 gid: group id relevant for editing (0 -5); #X connect 1 0 0 0; #X connect 3 0 0 0; #X connect 4 0 0 0; #X connect 5 0 0 0; #X connect 11 0 0 0; #X restore 20 129 pd note.manipulation; #N canvas 141 99 986 324 manual 0; #X text 15 11 Display; #X text 15 21 -------; #X text 15 161 Clock; #X text 15 171 -----; #X text 14 190 For most flexible use \, [unpunch] doesn't have an internal clock \, but is driven by an external clock sent to its right inlet. The most simple clock is a counter counting upwards in regular intervals. Loops are played by inserting a modulo into the counter. Note that all active notes are muted when a jump in the clock occurs in order to avoid hanging notes.; #X text 15 40 [unpunch] draws its graphical interface to a canvas whose name is specified as first argument to [unpunch] and which can be an another patch \, abstraction \, or subpatch. In any case \, the canvas should be empty as it will be cleared during redraws.; #X text 15 107 The visual representation and the internal state are decoupled \, so representation can be changed while keeping existing notes intact.; #X text 419 13 Note creation and deletion; #X text 420 24 --------------------------; #X text 420 39 Notes are created by clickingon any empty field with defaults as configured in the upper section. Notes are deleted either by double-clicking them or by Ctrl_L-click.; #X restore 20 69 pd manual; #X text 419 280 arg1: name of canvas to draw interface; #X text 406 310 inlet0: editor commands and configuration; #X text 406 330 inlet1: sequencer input (clock); #X text 401 360 outlet0: generated edit commands (mouse actions); #X text 401 380 outlet1: notes ([pitch \, velocity] tuples); #N canvas 169 115 628 440 interface.configuration 0; #X msg 78 229 redraw; #X obj 18 300 s \$0.to; #X text 229 79 set step height (pixel; #X text 229 49 set step width (pixel); #X text 229 109 set the number of steps displayed in a single page ; #X text 229 139 set the vertical number of steps; #X text 229 229 redraw display after having changed configuration; #X text 229 169 set the nuumber of subdivision that fit into a division ; #X text 229 199 set the number of steps that fit into a subdivision ; #X text 229 259 switch display to page with given number (starting at 0) [implies a redraw of display]; #X msg 78 259 page 3; #X msg 78 109 set stepsperpage 64; #X msg 78 139 set pitchrange 48; #X text 78 21 INTERFACE CONFIGURATION; #X msg 78 169 set griddivision 5; #X msg 78 199 set gridsubdivision 6; #X msg 78 79 set stepvisheight 12; #X msg 78 49 set stepviswidth 9; #X connect 0 0 1 0; #X connect 10 0 1 0; #X connect 11 0 1 0; #X connect 12 0 1 0; #X connect 14 0 1 0; #X connect 15 0 1 0; #X connect 16 0 1 0; #X connect 17 0 1 0; #X restore 20 99 pd interface.configuration; #X obj 2 2 cnv 15 700 24 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 17 258 cnv 15 360 24 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 20 261 unpunch pd-My_Happy_Sequencer; #N canvas 711 99 1006 749 My_Happy_Sequencer 1; #X restore 242 261 pd My_Happy_Sequencer; #N canvas 170 116 568 256 misc 0; #X obj 18 130 s \$0.to; #X text 77 14 MISC METHODS; #X msg 78 38 clear \, redraw; #X text 179 38 clear all notes ('clear' alone only deletes all notes internally without updating visual representation); #X msg 78 78 dump; #X text 179 78 dump complete state as a set of messages. If the set of messages is later sent back to [unpunch] in the same order \, the complete state can be restored; #X connect 2 0 0 0; #X connect 4 0 0 0; #X restore 20 159 pd misc; #N canvas 0 99 467 139 example.song 0; #X obj 19 79 s \$0.to; #N canvas 0 99 487 293 song-data-in-a-messagebox 0; #X obj 16 22 inlet; #X obj 16 1027 outlet; #X msg 16 48 clear \, set stepviswidth 15 \, set stepvisheight 14 \, set stepsperpage 64 \, set pitchrange 48 \, set gridsubdivision 4 \, set griddivision 4 \, note restore 0 0 46 68 2 0 \, note restore 1 3 53 65 1 0 \, note restore 2 4 53 68 2 0 \, note restore 3 7 46 65 1 0 \, note restore 4 8 47 68 2 0 \, note restore 5 11 54 65 1 0 \, note restore 6 12 54 68 2 0 \, note restore 7 15 47 65 1 0 \, note restore 8 48 51 68 2 0 \, note restore 9 51 58 65 1 0 \, note restore 10 52 58 68 2 0 \, note restore 11 55 51 65 1 0 \, note restore 12 56 51 68 2 0 \, note restore 13 59 58 65 1 0 \, note restore 14 60 58 68 2 0 \, note restore 15 63 51 68 1 0 \, note restore 16 0 68 64 1 2 \, note restore 17 2 68 64 1 2 \, note restore 18 5 68 64 1 2 \, note restore 19 7 70 64 1 2 \, note restore 20 9 70 64 1 2 \, note restore 21 11 70 64 2 2 \, note restore 22 14 70 64 1 2 \, note restore 23 48 68 64 1 2 \, note restore 24 50 68 64 1 2 \, note restore 25 53 68 64 1 2 \, note restore 26 55 66 64 1 2 \, note restore 27 57 66 61 1 2 \, note restore 28 59 68 64 2 2 \, note restore 29 62 66 64 1 2 \, note restore 30 0 61 64 1 2 \, note restore 31 2 61 64 1 2 \, note restore 32 5 61 64 1 2 \, note restore 33 7 63 64 1 2 \, note restore 34 9 63 64 1 2 \, note restore 35 11 63 64 2 2 \, note restore 36 14 63 64 1 2 \, note restore 37 48 61 64 1 2 \, note restore 38 50 61 64 1 2 \, note restore 39 53 61 64 1 2 \, note restore 40 55 61 64 1 2 \, note restore 41 57 61 64 1 2 \, note restore 42 59 61 64 2 2 \, note restore 43 50 65 64 1 2 \, note restore 44 0 65 64 1 2 \, note restore 45 2 65 64 1 2 \, note restore 46 5 65 64 1 2 \, note restore 47 9 66 64 1 2 \, note restore 48 7 66 64 1 2 \, note restore 49 11 66 64 2 2 \, note restore 50 14 66 64 1 2 \, note restore 51 48 65 64 1 2 \, note restore 52 53 65 64 1 2 \, note restore 53 55 65 64 1 2 \, note restore 54 57 65 64 1 2 \, note restore 55 59 65 64 2 2 \, note restore 56 62 65 64 1 2 \, note restore 57 62 61 64 1 2 \, note restore 58 16 44 68 2 0 \, note restore 59 19 51 65 1 0 \, note restore 60 20 51 68 2 0 \, note restore 61 23 44 65 1 0 \, note restore 62 24 49 68 2 0 \, note restore 63 27 56 65 1 0 \, note restore 64 28 56 68 2 0 \, note restore 65 31 49 65 1 0 \, note restore 66 32 51 68 2 0 \, note restore 67 35 58 65 1 0 \, note restore 68 36 58 68 2 0 \, note restore 69 39 51 65 1 0 \, note restore 70 40 51 68 2 0 \, note restore 71 43 58 65 1 0 \, note restore 72 44 58 68 2 0 \, note restore 73 47 51 65 1 0 \, note restore 74 16 70 64 1 2 \, note restore 75 18 70 64 1 2 \, note restore 76 21 70 64 1 2 \, note restore 77 23 68 64 1 2 \, note restore 78 25 68 61 1 2 \, note restore 79 27 68 64 2 2 \, note restore 80 30 68 64 1 2 \, note restore 81 16 63 64 1 2 \, note restore 82 18 63 64 1 2 \, note restore 83 21 63 64 1 2 \, note restore 84 23 63 64 1 2 \, note restore 85 25 63 64 1 2 \, note restore 86 27 63 64 2 2 \, note restore 87 18 66 64 1 2 \, note restore 88 16 66 64 1 2 \, note restore 89 21 66 64 1 2 \, note restore 90 23 65 64 1 2 \, note restore 91 25 65 64 1 2 \, note restore 92 27 65 64 2 2 \, note restore 93 30 65 64 1 2 \, note restore 94 30 63 64 1 2 \, note restore 95 32 68 64 1 2 \, note restore 96 34 68 64 1 2 \, note restore 97 37 68 64 1 2 \, note restore 98 39 66 64 1 2 \, note restore 99 41 66 61 1 2 \, note restore 100 43 66 64 2 2 \, note restore 101 46 66 64 1 2 \, note restore 102 32 61 64 1 2 \, note restore 103 34 61 64 1 2 \, note restore 104 37 61 64 1 2 \, note restore 105 39 61 64 1 2 \, note restore 106 41 61 64 1 2 \, note restore 107 43 61 64 2 2 \, note restore 108 34 65 64 1 2 \, note restore 109 32 65 64 1 2 \, note restore 110 37 65 64 1 2 \, note restore 111 39 65 64 1 2 \, note restore 112 41 65 64 1 2 \, note restore 113 43 65 64 2 2 \, note restore 114 46 65 64 1 2 \, note restore 115 46 61 64 1 2 \, note restore 116 48 87 58 3 4 \, note restore 117 51 80 58 1 4 \, note restore 118 53 82 58 2 4 \, note restore 119 55 75 58 5 4 \, note restore 120 60 80 58 2 4 \, note restore 121 62 82 58 1 4 \, note restore 122 0 87 58 3 4 \, note restore 123 3 80 58 1 4 \, note restore 124 5 82 58 2 4 \, note restore 125 7 75 58 5 4 \, note restore 126 12 80 58 2 4 \, note restore 127 14 82 58 1 4 \, note restore 128 16 87 58 3 4 \, note restore 129 19 80 58 1 4 \, note restore 130 21 82 58 2 4 \, note restore 131 23 75 58 5 4 \, note restore 132 28 80 58 2 4 \, note restore 133 30 82 58 1 4 \, note restore 134 32 87 58 3 4 \, note restore 135 35 80 58 1 4 \, note restore 136 37 82 58 2 4 \, note restore 137 39 75 58 5 4 \, note restore 138 44 80 58 2 4 \, note restore 139 46 82 58 1 4 \, page 1 \,; #X connect 0 0 2 0; #X connect 2 0 1 0; #X restore 19 42 pd song-data-in-a-messagebox; #X obj 19 14 bng 20 250 50 0 empty empty empty 17 7 0 10 -204786 -1 -1; #X text 42 15 load song; #X connect 1 0 0 0; #X connect 2 0 1 0; #X restore 222 56 pd example.song; #N canvas 169 115 431 217 about 0; #X text 17 15 unpunch - a configurable matrix sequencer; #X text 17 31 -----------------------------------------; #X text 17 55 [unpunch] is a sequencer that allows to graphically edit MIDI-like scores on a timeline \, a.k.a piano roll sequencer. Notes can be created and deleted \, velocity and duration can be changed with mouse actions. Some actions are triggered by key commands. [unpunch] has a configurable interface to make it suitable for various time signatures and display resolutions. The complete state can be dumped for later restoration and it integrates well in existing state saving systems. It is designed for real-time synchronisation (if needed) and can also be used in systems like netpd.; #X restore 20 39 pd about; #X text 12 5 unpunch - a configurable matrix sequencer; #X text 575 413 2019 \, Roman Haefeli; #X msg 69 234 mute; #X connect 1 0 0 0; #X connect 2 0 1 0; #X connect 5 0 13 0; #X connect 6 0 5 1; #X connect 8 0 2 0; #X connect 9 0 10 0; #X connect 10 0 30 0; #X connect 11 0 9 0; #X connect 15 0 14 0; #X connect 16 0 15 1; #X connect 19 0 30 1; #X connect 30 0 15 0; #X connect 30 0 18 0; #X connect 30 1 5 0; #X connect 37 0 30 0;