hi, i have a pd patch here that i compile with heavy. i get 2 mode switch warnings now.

2 mode switches detected on the audio thread!

is there a way to find out which objects cause this (with heavy?) i was a bit surprised to get those warnings.

Hmmm that is weird. Heavy should be pretty good at avoiding those things. Is there anything printing to the console? Do you have a custom render.cpp file?

    giuliomoro Is there anything printing to the console?

    do you mean if i have [print] objects in my patch or if there are some errors printed?

    this is the output on the console (from a terminal):

    Running /root/Bela/projects/granular/granular 
    Starting Heavy context with 2 input channels and 2 output channels
    Channels in use:
    Digital in : 0, Digital out: 0
    Scope out: 0
    Failed to open  MIDI device hw:1,0,0
    No MIDI device enabled
    Adding Midi device: hw:1,0,2
    Failed to open  MIDI device hw:1,0,2
    No MIDI device enabled
    Bela digital: channel 0 is set as input at message rate
    Bela digital: channel 1 is set as input at message rate
    Bela digital: channel 2 is set as input at message rate
    Bela digital: channel 3 is set as input at message rate
    Bela digital: channel 4 is set as input at message rate
    Bela digital: channel 5 is set as input at message rate
    Bela digital: channel 6 is set as input at message rate
    Bela digital: channel 7 is set as input at message rate
    Bela digital: channel 8 is set as input at message rate
    Bela digital: channel 9 is set as output at message rate
    Bela digital: channel 10 is set as output at message rate
    Bela digital: channel 11 is set as output at message rate
    Bela digital: channel 12 is set as output at message rate
    Bela digital: channel 13 is set as output at message rate
    Bela digital: channel 14 is set as output at message rate

    the mode switches warning is only present when i start the program via IDE. should i get these warnings also on the terminal?

    the render.cpp is the one you made available in the heavy multi midi branch on GitHub.

      lokki the render.cpp is the one you made available in the heavy multi midi branch on GitHub.

      ... and your Pd patch is adding a a Pd port by sending to [r bela_setMidi] ? Then it is normal for the Mode switch to happen. If you remove that send, the mode switch should disappear.
      Note that it is not so bad for mode switches to happen at the beginning of a program (you'd get the same if you were to use [soundfiler] to open a file). The problem is if they keep happening while running.

        lokki the mode switches warning is only present when i start the program via IDE. should i get these warnings also on the terminal?

        No such warnings on the terminal. The mode switches are monitored by the IDE itself.

        giuliomoro ... and your Pd patch is adding a a Pd port by sending to [r bela_setMidi] ? Then it is normal for the Mode switch to happen. If you remove that send, the mode switch should disappear.

        yes exactly. ah good to know. thanks for the clarification.

        note that i could also add the port directly in the render.cpp file, but there is no downside to do it in the pd patch i guess (apart from the mode switch, which should not occur then during running the program)

        it's fine to keep it in the patch. Actually it's more portable!

        ok i removed the midi port addition from the patch to test for mode switches, i still have 1. does the setup of digital inputs also cause a mode switch? i send the message to a [s bela_setDigital @hv_param]

        also i get some

        Underrun detected: 1 blocks dropped

        every now and then. i don't hear a crackle or anything. my cpu is at 20-30% with the heavy program loaded. do i need to worry about those? it seems they get more frequent when i send a lot of midi into the program (note on and note offs, aftertouch, cc message)

          lokki ok i removed the midi port addition from the patch to test for mode switches, i still have 1. does the setup of digital inputs also cause a mode switch? i send the message to a [s bela_setDigital @hv_param]

          No it shouldn't happen. What hardware are you on? The CTAG tends to have one spurious mode switch when you start the process, but no Bela board should do. Do you see that mode switch even if you run an empty patch?

          lokki Underrun detected: 1 blocks dropped

          So that is something bad. It means that you got an audio dropout. Do you perhaps have something potentially very expensive that is triggered by one of these events coming in? Perhaps you use an [until] or something to populate an array of some sort? Anything that would require a greater amount of CPU time than usual?

            giuliomoro Do you perhaps have something potentially very expensive that is triggered by one of these events coming in? Perhaps you use an [until]

            well, yes there is an until in the note abstraction i stole from somewhere :-) (and had to make heavy compatible)

            but it only counts till 11, is that already going to cause issues?

            find attached the patch, the relevant part is in the key scrub abstraction at the [notein] part. in the [pd note] subpatch there is a [pd cuenta] which has the until in it. any ideas how to remove the until, without causing latency on note input?

            _main.pd:

            #N canvas 57 22 1362 746 10;
            #X obj 254 -44 dac~;
            #N canvas 332 104 681 459 uilogic 0;
            #X obj -211 49 == 0;
            #X obj -211 81 f;
            #X obj -178 96 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj -142 72 spigot;
            #X obj 48 85 f;
            #X obj 81 100 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 100 73 spigot;
            #X obj 47 46 == 1;
            #X obj -194 230 f;
            #X obj -161 239 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
            0 1;
            #X obj -142 212 spigot;
            #X obj -195 185 == 2;
            #X obj 56 233 f;
            #X obj 89 248 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 108 221 spigot;
            #X obj 55 194 == 3;
            #X obj -196 158 r slotnr;
            #X obj 46 12 r slotnr;
            #X obj -211 12 r slotnr;
            #X obj 54 158 r slotnr;
            #X obj -302 13 r delaybng;
            #X obj -286 159 r delaybng;
            #X obj -47 10 r delaybng;
            #X obj -32 158 r delaybng;
            #X obj -122 159 r metronbg;
            #X obj 120 11 r metrobng;
            #X obj 127 158 r metrobng;
            #X obj -137 12 r metrobng;
            #X connect 0 0 1 0;
            #X connect 0 0 3 1;
            #X connect 3 0 2 0;
            #X connect 6 0 5 0;
            #X connect 7 0 4 0;
            #X connect 7 0 6 1;
            #X connect 10 0 9 0;
            #X connect 11 0 8 0;
            #X connect 11 0 10 1;
            #X connect 14 0 13 0;
            #X connect 15 0 12 0;
            #X connect 15 0 14 1;
            #X connect 16 0 11 0;
            #X connect 17 0 7 0;
            #X connect 18 0 0 0;
            #X connect 19 0 15 0;
            #X connect 20 0 1 0;
            #X connect 21 0 8 0;
            #X connect 22 0 4 0;
            #X connect 23 0 12 0;
            #X connect 24 0 10 0;
            #X connect 25 0 6 0;
            #X connect 26 0 14 0;
            #X connect 27 0 3 0;
            #X restore 791 -217 pd uilogic;
            #N canvas 446 177 450 300 tables 0;
            #X obj 8 142 table bufferlen 4;
            #X obj 8 164 table pos 4;
            #X text 12 7 four sample slots each 20secs;
            #X obj 8 40 table a 882000;
            #X obj 7 64 table b 882000;
            #X obj 7 91 table c 882000;
            #X obj 7 118 table d 882000;
            #X restore 792 -195 pd tables;
            #N canvas 761 110 605 574 chooseslot 0;
            #X msg 134 -39 \$1 2000;
            #X obj 143 -8 line;
            #X obj 144 49 select 1;
            #X text 35 -111 long press reset buffer;
            #X obj 144 20 change;
            #X obj 56 83 f;
            #X obj 91 83 + 1;
            #X msg 121 135 0;
            #X text 56 -92 switch sample slot;
            #X obj 50 -10 select 0 1;
            #X obj 41 39 spigot;
            #X msg 87 14 1;
            #X msg 145 75 0;
            #X msg -81 -55 \; bufferlen 0 0 0 0 0;
            #X obj -80 -80 loadbang;
            #X msg -81 -14 \; pos 0 0 0 0 0;
            #X msg 276 178 0;
            #X obj 238 119 t b b;
            #X msg -80 29 0;
            #X obj 237 90 delay 1200;
            #X obj 275 203 metro 100;
            #X obj 66 112 s slotnr;
            #X obj 238 152 s delaybng;
            #X obj 276 230 s metrobng;
            #X obj 222 57 s resetbuf;
            #X obj 204 -86 r slotchoose;
            #X obj 56 135 select 3;
            #X connect 0 0 1 0;
            #X connect 1 0 4 0;
            #X connect 2 0 12 0;
            #X connect 2 0 19 0;
            #X connect 2 0 20 0;
            #X connect 2 0 24 0;
            #X connect 4 0 2 0;
            #X connect 5 0 6 0;
            #X connect 5 0 21 0;
            #X connect 5 0 26 0;
            #X connect 6 0 5 1;
            #X connect 7 0 5 1;
            #X connect 9 0 10 0;
            #X connect 9 1 11 0;
            #X connect 10 0 5 0;
            #X connect 11 0 10 1;
            #X connect 12 0 10 1;
            #X connect 14 0 13 0;
            #X connect 14 0 15 0;
            #X connect 14 0 18 0;
            #X connect 16 0 20 0;
            #X connect 17 0 22 0;
            #X connect 17 1 16 0;
            #X connect 18 0 5 0;
            #X connect 19 0 17 0;
            #X connect 20 0 23 0;
            #X connect 25 0 0 0;
            #X connect 25 0 9 0;
            #X connect 26 0 7 0;
            #X restore 791 -237 pd chooseslot;
            #X obj 232 645 s freeze;
            #X msg 219 467 176400;
            #X msg 216 513 set livegrains;
            #X obj 221 538 s slot;
            #X obj 153 464 t b b;
            #X obj 128 509 s recallpos;
            #N canvas 370 171 450 300 livegrainreader 0;
            #X obj 154 225 outlet~;
            #X obj 64 119 *~ 176400;
            #X obj 64 98 phasor~ 0.08;
            #X obj 66 145 tabread4~ livegrains;
            #X obj 222 181 *~;
            #X obj 66 58 * 1;
            #X obj 242 154 line~;
            #X obj 15 -12 r pitch;
            #X obj 239 72 r velosample;
            #X obj 128 37 r direction;
            #X obj 172 6 r keysample;
            #X obj 239 111 / 127;
            #X msg 241 132 \$1 5;
            #X obj 131 55 spigot;
            #X obj 238 93 spigot;
            #X obj 34 14 spigot;
            #X obj 64 36 f;
            #X obj 130 77 t b f;
            #X obj 66 78 / 1760;
            #X obj 330 32 r livegrainonoff;
            #X obj 333 83 select 0;
            #X msg 296 130 0 5;
            #X connect 1 0 3 0;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 4 0 0 0;
            #X connect 5 0 18 0;
            #X connect 6 0 4 1;
            #X connect 7 0 15 0;
            #X connect 8 0 14 0;
            #X connect 9 0 13 0;
            #X connect 10 0 15 1;
            #X connect 10 0 13 1;
            #X connect 10 0 14 1;
            #X connect 11 0 12 0;
            #X connect 12 0 6 0;
            #X connect 13 0 17 0;
            #X connect 14 0 11 0;
            #X connect 15 0 16 0;
            #X connect 16 0 5 0;
            #X connect 17 0 16 0;
            #X connect 17 1 5 1;
            #X connect 18 0 2 0;
            #X connect 19 0 20 0;
            #X connect 20 0 21 0;
            #X connect 21 0 6 0;
            #X restore 138 -242 pd livegrainreader;
            #N canvas 663 54 580 468 reader1 0;
            #X obj 154 225 outlet~;
            #X obj 64 109 phasor~ 0.08;
            #X obj 222 181 *~;
            #X obj 63 21 * 1;
            #X obj 236 86 line~;
            #X obj 12 -49 r pitch;
            #X obj 233 4 r velosample;
            #X obj 82 -70 r direction;
            #X obj 233 43 / 127;
            #X msg 235 64 \$1 5;
            #X obj 83 -47 spigot;
            #X obj 232 25 spigot;
            #X obj 31 -23 spigot;
            #X obj 61 -1 f;
            #X obj 82 -25 t b f;
            #X obj 106 -111 r keyplay0;
            #X obj -66 -62 r slotnr;
            #X obj -84 15 tabread bufferlen;
            #X obj -85 47 * 44.1;
            #X obj -83 -31 f;
            #X msg -146 96 1000;
            #X obj -102 115 /;
            #X obj -105 76 t b f;
            #X obj -102 143 / 440;
            #X obj 63 62 *;
            #X obj -186 -91 r loop0onoff;
            #X msg 273 62 0 5;
            #X obj 63 42 f;
            #X obj -101 166 t b f;
            #X obj -182 -70 select 0 1;
            #X obj -65 77 sig~;
            #X obj 64 133 *~;
            #X obj 61 87 sig~;
            #X obj -83 -7 f;
            #X obj -148 -7 r recdone;
            #X obj 136 20 select 0 1 2 3;
            #X obj 66 156 tabread4~ a;
            #X msg 94 86 set a;
            #X msg 134 85 set b;
            #X msg 122 55 set c;
            #X msg 176 56 set d;
            #X connect 1 0 31 0;
            #X connect 2 0 0 0;
            #X connect 3 0 27 0;
            #X connect 4 0 2 1;
            #X connect 5 0 12 0;
            #X connect 6 0 11 0;
            #X connect 7 0 10 0;
            #X connect 8 0 9 0;
            #X connect 9 0 4 0;
            #X connect 10 0 14 0;
            #X connect 11 0 8 0;
            #X connect 12 0 13 0;
            #X connect 13 0 3 0;
            #X connect 14 0 13 0;
            #X connect 14 1 3 1;
            #X connect 15 0 12 1;
            #X connect 15 0 10 1;
            #X connect 15 0 11 1;
            #X connect 16 0 19 1;
            #X connect 17 0 18 0;
            #X connect 17 0 22 0;
            #X connect 18 0 30 0;
            #X connect 19 0 33 0;
            #X connect 19 0 35 0;
            #X connect 20 0 21 0;
            #X connect 21 0 23 0;
            #X connect 22 0 20 0;
            #X connect 22 1 21 1;
            #X connect 23 0 28 0;
            #X connect 24 0 32 0;
            #X connect 25 0 29 0;
            #X connect 26 0 4 0;
            #X connect 27 0 24 0;
            #X connect 28 0 27 0;
            #X connect 28 1 24 1;
            #X connect 29 0 26 0;
            #X connect 29 1 19 0;
            #X connect 30 0 31 1;
            #X connect 31 0 36 0;
            #X connect 32 0 1 0;
            #X connect 33 0 17 0;
            #X connect 34 0 33 0;
            #X connect 35 0 37 0;
            #X connect 35 1 38 0;
            #X connect 35 2 39 0;
            #X connect 35 3 40 0;
            #X connect 36 0 2 0;
            #X connect 37 0 36 0;
            #X connect 38 0 36 0;
            #X connect 39 0 36 0;
            #X connect 40 0 36 0;
            #X restore 82 -215 pd reader1;
            #X obj 218 490 s slotlengthlive;
            #N canvas 782 323 450 300 button0 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 649 334 pd button0;
            #X obj 612 363 s loop0onoff;
            #X obj 706 360 s keyplay0;
            #N canvas 780 383 450 300 button1 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 782 408 pd button1;
            #N canvas 739 543 450 300 button2 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 869 356 pd button2;
            #N canvas 739 543 450 300 button3 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 981 329 pd button3;
            #X obj 752 434 s loop1onoff;
            #X obj 844 432 s keyplay1;
            #X obj 844 380 s loop2onoff;
            #X obj 929 379 s keyplay2;
            #X obj 956 353 s loop3onoff;
            #X obj 1041 352 s keyplay3;
            #X obj 682 408 * -1;
            #X obj 681 429 + 1;
            #X obj 680 451 s keyscrub;
            #X obj 845 463 * -1;
            #X obj 844 484 + 1;
            #X obj 843 506 s keyscrub;
            #X obj 939 417 * -1;
            #X obj 938 438 + 1;
            #X obj 937 460 s keyscrub;
            #X obj 1045 385 * -1;
            #X obj 1044 406 + 1;
            #X obj 1043 428 s keyscrub;
            #X obj 1176 378 * -1;
            #X obj 1175 399 + 1;
            #X obj 1174 421 s keyscrub;
            #N canvas 782 323 450 300 button4 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 1143 304 pd button4;
            #X obj 1218 333 s keysample;
            #X obj 1106 333 s livegrainonoff;
            #X obj 394 253 s slotchoose;
            #X obj 329 256 s record;
            #N canvas 663 54 580 468 reader2 0;
            #X obj 154 225 outlet~;
            #X obj 64 109 phasor~ 0.08;
            #X obj 222 181 *~;
            #X obj 63 21 * 1;
            #X obj 236 86 line~;
            #X obj 12 -49 r pitch;
            #X obj 233 4 r velosample;
            #X obj 82 -70 r direction;
            #X obj 233 43 / 127;
            #X msg 235 64 \$1 5;
            #X obj 83 -47 spigot;
            #X obj 232 25 spigot;
            #X obj 31 -23 spigot;
            #X obj 61 -1 f;
            #X obj 82 -25 t b f;
            #X obj -66 -76 r slotnr;
            #X obj -84 0 tabread bufferlen;
            #X obj -85 32 * 44.1;
            #X obj -85 -43 f;
            #X msg -146 81 1000;
            #X obj -102 100 /;
            #X obj -105 61 t b f;
            #X obj -102 128 / 440;
            #X obj 63 62 *;
            #X msg 273 62 0 5;
            #X obj 63 42 f;
            #X obj -101 151 t b f;
            #X obj -185 -69 select 0 1;
            #X obj -65 62 sig~;
            #X obj 64 133 *~;
            #X obj 68 86 sig~;
            #X obj -186 -91 r loop1onoff;
            #X obj 106 -111 r keyplay1;
            #X obj -85 -20 f;
            #X obj -150 -20 r recdone;
            #X obj 66 156 tabread4~ b;
            #X obj 144 58 select 0 1 2 3;
            #X msg 144 79 set a;
            #X msg 144 101 set b;
            #X msg 144 123 set c;
            #X msg 144 142 set d;
            #X connect 1 0 29 0;
            #X connect 2 0 0 0;
            #X connect 3 0 25 0;
            #X connect 4 0 2 1;
            #X connect 5 0 12 0;
            #X connect 6 0 11 0;
            #X connect 7 0 10 0;
            #X connect 8 0 9 0;
            #X connect 9 0 4 0;
            #X connect 10 0 14 0;
            #X connect 11 0 8 0;
            #X connect 12 0 13 0;
            #X connect 13 0 3 0;
            #X connect 14 0 13 0;
            #X connect 14 1 3 1;
            #X connect 15 0 18 1;
            #X connect 16 0 17 0;
            #X connect 16 0 21 0;
            #X connect 17 0 28 0;
            #X connect 18 0 33 0;
            #X connect 18 0 36 0;
            #X connect 19 0 20 0;
            #X connect 20 0 22 0;
            #X connect 21 0 19 0;
            #X connect 21 1 20 1;
            #X connect 22 0 26 0;
            #X connect 23 0 30 0;
            #X connect 24 0 4 0;
            #X connect 25 0 23 0;
            #X connect 26 0 25 0;
            #X connect 26 1 23 1;
            #X connect 27 0 24 0;
            #X connect 27 1 18 0;
            #X connect 28 0 29 1;
            #X connect 29 0 35 0;
            #X connect 30 0 1 0;
            #X connect 31 0 27 0;
            #X connect 32 0 12 1;
            #X connect 32 0 10 1;
            #X connect 32 0 11 1;
            #X connect 33 0 16 0;
            #X connect 34 0 33 0;
            #X connect 35 0 2 0;
            #X connect 36 0 37 0;
            #X connect 36 1 38 0;
            #X connect 36 2 39 0;
            #X connect 36 3 40 0;
            #X connect 37 0 35 0;
            #X connect 38 0 35 0;
            #X connect 39 0 35 0;
            #X connect 40 0 35 0;
            #X restore 398 -201 pd reader2;
            #N canvas 663 54 580 468 reader3 0;
            #X obj 154 225 outlet~;
            #X obj 64 109 phasor~ 0.08;
            #X obj 222 181 *~;
            #X obj 63 21 * 1;
            #X obj 236 86 line~;
            #X obj 12 -49 r pitch;
            #X obj 233 4 r velosample;
            #X obj 82 -70 r direction;
            #X obj 233 43 / 127;
            #X msg 235 64 \$1 5;
            #X obj 83 -47 spigot;
            #X obj 232 25 spigot;
            #X obj 31 -23 spigot;
            #X obj 61 -1 f;
            #X obj 82 -25 t b f;
            #X obj -66 -62 r slotnr;
            #X obj -84 0 tabread bufferlen;
            #X obj -85 32 * 44.1;
            #X obj -85 -42 f;
            #X msg -146 81 1000;
            #X obj -102 100 /;
            #X obj -105 61 t b f;
            #X obj -102 128 / 440;
            #X obj 63 62 *;
            #X msg 273 62 0 5;
            #X obj 63 42 f;
            #X obj -101 151 t b f;
            #X obj -185 -69 select 0 1;
            #X obj -65 62 sig~;
            #X obj 64 133 *~;
            #X obj 68 86 sig~;
            #X obj -186 -91 r loop2onoff;
            #X obj 106 -111 r keyplay2;
            #X obj -84 -22 f;
            #X obj -149 -22 r recdone;
            #X obj 66 156 tabread4~ c;
            #X obj 145 47 select 0 1 2 3;
            #X msg 145 68 set a;
            #X msg 145 90 set b;
            #X msg 145 112 set c;
            #X msg 145 131 set d;
            #X connect 1 0 29 0;
            #X connect 2 0 0 0;
            #X connect 3 0 25 0;
            #X connect 4 0 2 1;
            #X connect 5 0 12 0;
            #X connect 6 0 11 0;
            #X connect 7 0 10 0;
            #X connect 8 0 9 0;
            #X connect 9 0 4 0;
            #X connect 10 0 14 0;
            #X connect 11 0 8 0;
            #X connect 12 0 13 0;
            #X connect 13 0 3 0;
            #X connect 14 0 13 0;
            #X connect 14 1 3 1;
            #X connect 15 0 18 1;
            #X connect 16 0 17 0;
            #X connect 16 0 21 0;
            #X connect 17 0 28 0;
            #X connect 18 0 33 0;
            #X connect 18 0 36 0;
            #X connect 19 0 20 0;
            #X connect 20 0 22 0;
            #X connect 21 0 19 0;
            #X connect 21 1 20 1;
            #X connect 22 0 26 0;
            #X connect 23 0 30 0;
            #X connect 24 0 4 0;
            #X connect 25 0 23 0;
            #X connect 26 0 25 0;
            #X connect 26 1 23 1;
            #X connect 27 0 24 0;
            #X connect 27 1 18 0;
            #X connect 28 0 29 1;
            #X connect 29 0 35 0;
            #X connect 30 0 1 0;
            #X connect 31 0 27 0;
            #X connect 32 0 12 1;
            #X connect 32 0 10 1;
            #X connect 32 0 11 1;
            #X connect 33 0 16 0;
            #X connect 34 0 33 0;
            #X connect 35 0 2 0;
            #X connect 36 0 37 0;
            #X connect 36 1 38 0;
            #X connect 36 2 39 0;
            #X connect 36 3 40 0;
            #X connect 37 0 35 0;
            #X connect 38 0 35 0;
            #X connect 39 0 35 0;
            #X connect 40 0 35 0;
            #X restore 46 -176 pd reader3;
            #N canvas 663 54 580 468 reader4 0;
            #X obj 154 225 outlet~;
            #X obj 64 109 phasor~ 0.08;
            #X obj 222 181 *~;
            #X obj 63 21 * 1;
            #X obj 236 86 line~;
            #X obj 12 -49 r pitch;
            #X obj 233 4 r velosample;
            #X obj 82 -70 r direction;
            #X obj 233 43 / 127;
            #X msg 235 64 \$1 5;
            #X obj 83 -47 spigot;
            #X obj 232 25 spigot;
            #X obj 31 -23 spigot;
            #X obj 61 -1 f;
            #X obj 82 -25 t b f;
            #X obj -66 -62 r slotnr;
            #X obj -84 0 tabread bufferlen;
            #X obj -85 32 * 44.1;
            #X obj -85 -42 f;
            #X msg -146 81 1000;
            #X obj -102 100 /;
            #X obj -105 61 t b f;
            #X obj -102 128 / 440;
            #X obj 63 62 *;
            #X msg 273 62 0 5;
            #X obj 63 42 f;
            #X obj -101 151 t b f;
            #X obj -185 -69 select 0 1;
            #X obj -65 62 sig~;
            #X obj 64 133 *~;
            #X obj 68 86 sig~;
            #X obj -186 -91 r loop3onoff;
            #X obj 106 -111 r keyplay3;
            #X obj -85 -22 f;
            #X obj -150 -22 r recdone;
            #X obj 66 156 tabread4~ d;
            #X obj 148 53 select 0 1 2 3;
            #X msg 148 74 set a;
            #X msg 148 96 set b;
            #X msg 148 118 set c;
            #X msg 148 137 set d;
            #X connect 1 0 29 0;
            #X connect 2 0 0 0;
            #X connect 3 0 25 0;
            #X connect 4 0 2 1;
            #X connect 5 0 12 0;
            #X connect 6 0 11 0;
            #X connect 7 0 10 0;
            #X connect 8 0 9 0;
            #X connect 9 0 4 0;
            #X connect 10 0 14 0;
            #X connect 11 0 8 0;
            #X connect 12 0 13 0;
            #X connect 13 0 3 0;
            #X connect 14 0 13 0;
            #X connect 14 1 3 1;
            #X connect 15 0 18 1;
            #X connect 16 0 17 0;
            #X connect 16 0 21 0;
            #X connect 17 0 28 0;
            #X connect 18 0 33 0;
            #X connect 18 0 36 0;
            #X connect 19 0 20 0;
            #X connect 20 0 22 0;
            #X connect 21 0 19 0;
            #X connect 21 1 20 1;
            #X connect 22 0 26 0;
            #X connect 23 0 30 0;
            #X connect 24 0 4 0;
            #X connect 25 0 23 0;
            #X connect 26 0 25 0;
            #X connect 26 1 23 1;
            #X connect 27 0 24 0;
            #X connect 27 1 18 0;
            #X connect 28 0 29 1;
            #X connect 29 0 35 0;
            #X connect 30 0 1 0;
            #X connect 31 0 27 0;
            #X connect 32 0 12 1;
            #X connect 32 0 10 1;
            #X connect 32 0 11 1;
            #X connect 33 0 16 0;
            #X connect 34 0 33 0;
            #X connect 35 0 2 0;
            #X connect 36 0 37 0;
            #X connect 36 1 38 0;
            #X connect 36 2 39 0;
            #X connect 36 3 40 0;
            #X connect 37 0 35 0;
            #X connect 38 0 35 0;
            #X connect 39 0 35 0;
            #X connect 40 0 35 0;
            #X restore 394 -174 pd reader4;
            #X obj 325 447 f;
            #X obj 353 445 + 1;
            #X msg 396 522 0;
            #X obj 325 499 select 2;
            #X obj 335 476 s mode;
            #X obj 433 437 line;
            #X obj 434 494 select 1;
            #X obj 434 465 change;
            #X obj 436 521 f;
            #X obj 434 617 - 1;
            #X msg 424 406 \$1 700;
            #X obj 433 595 spigot;
            #X obj 433 553 t f f;
            #X obj 478 555 == 0;
            #X msg 484 611 2;
            #X obj 481 580 select 1;
            #X obj 1161 -276 loadbang;
            #X obj 1162 -109 send bela_setDigital @hv_param;
            #X obj 635 282 debounce;
            #X obj 752 300 debounce;
            #X obj 892 299 debounce;
            #X obj 1016 290 debounce;
            #X obj 1161 255 debounce;
            #X obj 339 310 debounce;
            #X obj 340 289 r bela_digitalIn12;
            #X obj 28 232 debounce;
            #X obj 363 169 debounce;
            #X obj 408 212 debounce;
            #X obj 409 191 r bela_digitalIn13;
            #N canvas 364 195 866 528 modeswitch 0;
            #X obj 65 -81 r mode;
            #X obj 63 1 select 0 1 2;
            #X obj 350 157 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 333 21 == 2;
            #X obj 372 21 == 1;
            #X obj 436 31 select 1 0;
            #X obj 470 150 f;
            #X obj 498 150 + 1;
            #X obj 470 173 select 1;
            #X msg 529 173 0;
            #X msg 497 95 stop;
            #X obj 337 -1 t f f;
            #X obj 471 125 metro 200;
            #X obj -20 52 s enablelive;
            #X obj -22 73 s enablebuffer;
            #X obj -22 95 s livemode;
            #X msg -48 51 1;
            #X msg -51 73 0;
            #X msg -52 95 0;
            #X obj 100 50 s enablelive;
            #X obj 98 71 s enablebuffer;
            #X obj 98 93 s livemode;
            #X msg 72 49 1;
            #X msg 69 71 0;
            #X msg 68 93 1;
            #X obj 225 49 s enablelive;
            #X obj 223 70 s enablebuffer;
            #X obj 223 92 s livemode;
            #X msg 197 48 0;
            #X msg 194 70 1;
            #X msg 193 92 0;
            #X connect 0 0 1 0;
            #X connect 0 0 11 0;
            #X connect 1 0 16 0;
            #X connect 1 0 17 0;
            #X connect 1 0 18 0;
            #X connect 1 1 22 0;
            #X connect 1 1 23 0;
            #X connect 1 1 24 0;
            #X connect 1 2 28 0;
            #X connect 1 2 29 0;
            #X connect 1 2 30 0;
            #X connect 3 0 2 0;
            #X connect 4 0 5 0;
            #X connect 5 0 12 0;
            #X connect 5 1 10 0;
            #X connect 6 0 7 0;
            #X connect 6 0 8 0;
            #X connect 7 0 6 1;
            #X connect 8 0 9 0;
            #X connect 8 0 2 0;
            #X connect 9 0 6 1;
            #X connect 10 0 12 0;
            #X connect 11 0 3 0;
            #X connect 11 1 4 0;
            #X connect 12 0 6 0;
            #X connect 16 0 13 0;
            #X connect 17 0 14 0;
            #X connect 18 0 15 0;
            #X connect 22 0 19 0;
            #X connect 23 0 20 0;
            #X connect 24 0 21 0;
            #X connect 28 0 25 0;
            #X connect 29 0 26 0;
            #X connect 30 0 27 0;
            #X restore 792 -152 pd modeswitch;
            #N canvas 320 70 805 554 keyscrub 1;
            #X obj 411 597 outlet~;
            #X obj 157 502 *~;
            #X text 36 -71 starting index;
            #X obj 39 151 *;
            #X obj 348 231 phasor~;
            #X obj 49 427 +~;
            #X obj 49 390 *~;
            #X obj 348 205 /;
            #X obj 339 103 t b f;
            #X obj 145 405 sig~ 1;
            #X obj 188 407 cos~;
            #X obj 173 427 -~;
            #X obj 173 449 *~ 0.5;
            #X obj 354 280 wrap~;
            #X obj 415 521 *~;
            #X obj 405 423 sig~ 1;
            #X obj 449 423 cos~;
            #X obj 435 445 -~;
            #X obj 431 469 *~ 0.5;
            #X obj 284 442 +~;
            #X obj 265 401 *~;
            #X obj 49 206 sig~;
            #X obj 355 258 +~ 0.5;
            #X obj 73 406 samphold~;
            #X obj 308 424 samphold~;
            #X obj 222 181 sig~;
            #X obj 86 374 samphold~;
            #X obj 297 380 samphold~;
            #X obj 425 71 mtof;
            #X obj 428 -152 - 1;
            #X obj 428 -127 pack 0 0 0;
            #N canvas 262 228 513 511 guardaNotas 0;
            #N canvas 0 22 247 267 ++ 0;
            #X obj 41 40 inlet;
            #X obj 110 41 inlet;
            #X obj 41 99 f;
            #X obj 41 133 + 1;
            #X msg 110 82 0;
            #X obj 41 165 outlet;
            #X msg 41 73 bang;
            #X connect 0 0 6 0;
            #X connect 1 0 4 0;
            #X connect 2 0 3 0;
            #X connect 3 0 2 1;
            #X connect 3 0 5 0;
            #X connect 4 0 2 1;
            #X connect 6 0 2 0;
            #X restore 50 224 pd ++;
            #X obj 50 49 inlet;
            #X obj 50 282 *;
            #X obj 84 265 > 0;
            #X msg 50 198 bang;
            #X text 106 228 evita cuenta eterna;
            #X obj 50 307 tabwrite orden;
            #X obj 104 207 r ordenreset;
            #X obj 32 166 tabwrite nota;
            #X obj 96 135 tabwrite velocity;
            #X obj 240 77 t b f;
            #X obj 81 404 outlet;
            #X obj 86 108 t b f;
            #X obj 16 116 t b f;
            #X obj 39 79 unpack f f f;
            #X connect 0 0 2 0;
            #X connect 1 0 14 0;
            #X connect 2 0 6 0;
            #X connect 3 0 2 1;
            #X connect 4 0 0 0;
            #X connect 7 0 0 1;
            #X connect 10 1 9 1;
            #X connect 10 1 8 1;
            #X connect 10 1 6 1;
            #X connect 12 1 9 0;
            #X connect 12 1 3 0;
            #X connect 13 0 11 0;
            #X connect 13 1 8 0;
            #X connect 13 1 4 0;
            #X connect 14 0 13 0;
            #X connect 14 1 12 0;
            #X connect 14 2 10 0;
            #X restore 429 -71 pd guardaNotas;
            #X msg 428 -105 \$2 \$3 \$1;
            #N canvas 242 173 309 311 changeNote 0;
            #X text 91 9 evita redundancia.;
            #X obj 70 38 inlet;
            #X obj 142 171 &&;
            #X obj 72 215 spigot;
            #X obj 109 138 == -1;
            #X obj 165 149 == -1;
            #X obj 142 193 == 0;
            #X obj 72 279 outlet;
            #X floatatom 210 215 5 0 0 0 - - -, f 5;
            #X obj 55 92 t f f;
            #X obj 110 93 t f f;
            #X obj 43 163 pack;
            #X obj 64 66 unpack f f;
            #X obj 163 115 unpack f f;
            #X connect 1 0 12 0;
            #X connect 2 0 6 0;
            #X connect 3 0 7 0;
            #X connect 3 0 13 0;
            #X connect 4 0 2 0;
            #X connect 4 0 8 0;
            #X connect 5 0 2 1;
            #X connect 6 0 3 1;
            #X connect 9 0 11 0;
            #X connect 9 1 4 0;
            #X connect 10 0 11 1;
            #X connect 10 1 5 0;
            #X connect 11 0 3 0;
            #X connect 12 0 9 0;
            #X connect 12 1 10 0;
            #X connect 13 0 4 1;
            #X connect 13 1 5 1;
            #X restore 428 -4 pd changeNote;
            #N canvas 386 100 412 676 note 0;
            #X obj 63 66 t b b b;
            #X text 18 603 mensaje midi;
            #X obj 63 31 inlet;
            #X obj 63 619 outlet;
            #X obj 86 254 moses 0;
            #X msg 179 237 0;
            #X floatatom 191 280 5 0 0 0 - - -, f 5;
            #X obj 125 351 f;
            #X text 198 257 saca numero mayor;
            #X obj 63 368 f;
            #X obj 113 181 t f f;
            #X text 187 349 numero mayor;
            #X text 110 369 indice;
            #X floatatom 168 385 5 0 0 0 - - -, f 5;
            #X msg 125 321 bang;
            #X obj 125 279 t f f;
            #X obj 63 395 t f f;
            #X obj 63 582 pack;
            #X text 43 554 memoria ultima nota;
            #X obj 53 492 t f f b;
            #N canvas 733 352 236 271 cuenta11 0;
            #X obj 56 160 + 1;
            #X obj 56 112 until;
            #X obj 56 87 t f b;
            #X msg 114 120 -1;
            #X obj 56 137 f;
            #X obj 56 38 inlet;
            #X obj 56 184 outlet;
            #X msg 56 64 11;
            #X connect 0 0 4 1;
            #X connect 0 0 6 0;
            #X connect 1 0 4 0;
            #X connect 2 0 1 0;
            #X connect 2 1 3 0;
            #X connect 3 0 4 1;
            #X connect 4 0 0 0;
            #X connect 5 0 7 0;
            #X connect 7 0 2 0;
            #X restore 113 128 pd cuenta11;
            #X msg 165 509 10;
            #X obj 235 436 sel 10;
            #X text 171 455 reset orden \, evita cuenta eterna;
            #X text 149 404 si llega a 10 en "0" \, note off;
            #X obj 113 207 tabread orden;
            #X obj 235 479 s ordenreset;
            #X obj 84 434 tabread velocity;
            #X obj 63 462 tabread nota;
            #X obj 72 534 tabwrite nota;
            #X connect 0 0 9 0;
            #X connect 0 1 20 0;
            #X connect 0 2 5 0;
            #X connect 2 0 0 0;
            #X connect 4 1 15 0;
            #X connect 5 0 4 1;
            #X connect 6 0 4 1;
            #X connect 7 0 9 1;
            #X connect 9 0 13 0;
            #X connect 9 0 16 0;
            #X connect 10 0 25 0;
            #X connect 10 1 7 1;
            #X connect 14 0 7 0;
            #X connect 15 0 14 0;
            #X connect 15 1 6 0;
            #X connect 16 0 28 0;
            #X connect 16 1 22 0;
            #X connect 16 1 27 0;
            #X connect 17 0 3 0;
            #X connect 19 0 17 0;
            #X connect 19 1 29 0;
            #X connect 19 2 21 0;
            #X connect 20 0 10 0;
            #X connect 21 0 29 1;
            #X connect 22 0 26 0;
            #X connect 25 0 4 0;
            #X connect 27 0 17 1;
            #X connect 28 0 19 0;
            #X restore 428 -34 pd note;
            #X obj 439 -210 notein;
            #X obj 439 -182 poly 10 0;
            #X obj 428 25 unpack f f;
            #X obj 413 576 *~;
            #X obj 500 517 line~;
            #X obj 498 340 / 127;
            #X obj 489 86 select 0;
            #X obj 39 -55 touchin;
            #X obj 38 -33 / 127;
            #X obj 39 126 line;
            #X obj 210 -206 ctlin;
            #X obj 203 -178 pack f f f;
            #X msg 202 -156 \$3 \$2 \$1;
            #X obj 202 -135 route 1;
            #X obj 202 -113 route 19 126 127;
            #X obj 230 61 line;
            #X msg 231 39 \$1 50;
            #X obj 428 48 + 9;
            #X obj 334 149 f;
            #X obj 425 94 / 44;
            #X obj -156 53 r slotlength;
            #X text 271 -2 grainsize;
            #X obj 45 -160 loadbang;
            #X msg 45 -137 4410;
            #X obj 45 -113 s maxgrain;
            #X obj 100 132 -;
            #X obj 131 109 r maxgrain;
            #X obj 225 139 *;
            #X obj 251 121 r maxgrain;
            #X msg 540 362 0 \$1;
            #X obj 556 133 f;
            #X floatatom 611 39 5 0 0 0 - - -, f 5;
            #X obj 121 194 noise~;
            #X obj 65 238 *~;
            #X obj 92 166 sig~ 1;
            #X obj 104 236 +~;
            #X msg 500 361 \$1 5;
            #X obj 289 472 tabread4~ livegrains;
            #X obj 49 471 tabread4~ livegrains;
            #X obj 66 57 i;
            #X obj 41 57 -;
            #X obj 39 34 t f f;
            #X obj 39 13 +;
            #X obj 145 -9 + 0.5;
            #X obj 227 -13 / 140;
            #X obj 230 12 + 0.1;
            #X msg 68 -11 0;
            #X obj 76 -29 b;
            #X msg 38 101 \$1 50;
            #X obj 416 149 spigot;
            #X obj 489 57 spigot;
            #X obj 519 34 r keyscrub;
            #X obj 450 129 r keyscrub;
            #X obj 439 224 s pitch;
            #X obj 304 -80 > 80;
            #X msg 307 -33 1;
            #X msg 270 -33 -1;
            #X obj 340 -7 s direction;
            #X obj 245 -46 select 1;
            #X obj 320 -52 select 1;
            #X obj 245 -73 < 50;
            #X obj 487 182 select 0;
            #X obj 539 250 s velosample;
            #X obj 436 189 spigot;
            #X obj -158 180 r slotnr;
            #X obj -118 390 r slot;
            #X obj -143 -19 r slotlengthlive;
            #X obj -98 416 spigot;
            #X obj -36 347 r enablelive;
            #X obj -85 347 spigot;
            #X obj -63 165 r enablebuffer;
            #X obj -107 126 spigot;
            #X obj -54 54 r enablebuffer;
            #X obj -74 32 spigot;
            #X obj -44 -65 r enablelive;
            #X obj 101 -56 r enablebuffer;
            #X obj 151 -37 r livepos;
            #X obj -106 239 f;
            #X obj -49 185 t f f;
            #X msg -52 414 set livegrains;
            #X obj -133 99 f;
            #X obj 2 375 t f f;
            #X obj -35 395 select 1;
            #X obj -34 -42 t f f;
            #X obj -35 -19 select 1;
            #X msg -36 4 176400;
            #X obj -54 76 t f f;
            #X obj -102 99 select 1;
            #X obj -60 212 select 1;
            #X obj 538 -117 table orden 11;
            #X obj 538 -139 table velocity 11;
            #X obj 538 -161 table nota 11;
            #X obj 42 179 spigot;
            #X obj -119 -210 r freeze;
            #X obj -82 -151 * -1;
            #X obj -80 -124 + 1;
            #X obj -79 -72 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
            1;
            #X obj -172 -210 r mode;
            #X obj -178 -177 select 0;
            #X obj -172 -135 t b b;
            #X msg -184 -98 1;
            #X obj -78 -98 spigot;
            #X msg -137 -110 0;
            #X msg -136 -156 1;
            #X obj 120 220 *~ 0.002;
            #X obj -170 265 select 0 1 2 3;
            #X msg -170 286 set a;
            #X msg -170 308 set b;
            #X msg -170 330 set c;
            #X msg -170 349 set d;
            #X connect 1 0 38 0;
            #X connect 3 0 127 0;
            #X connect 4 0 6 0;
            #X connect 4 0 10 0;
            #X connect 4 0 22 0;
            #X connect 4 0 23 1;
            #X connect 4 0 26 1;
            #X connect 5 0 73 0;
            #X connect 6 0 5 0;
            #X connect 7 0 4 0;
            #X connect 8 0 53 0;
            #X connect 8 1 7 1;
            #X connect 9 0 11 0;
            #X connect 10 0 11 1;
            #X connect 11 0 12 0;
            #X connect 12 0 1 1;
            #X connect 13 0 16 0;
            #X connect 13 0 20 0;
            #X connect 13 0 24 1;
            #X connect 13 0 27 1;
            #X connect 14 0 38 0;
            #X connect 15 0 17 0;
            #X connect 16 0 17 1;
            #X connect 17 0 18 0;
            #X connect 18 0 14 1;
            #X connect 19 0 72 0;
            #X connect 20 0 19 0;
            #X connect 21 0 68 0;
            #X connect 22 0 13 0;
            #X connect 23 0 5 1;
            #X connect 24 0 19 1;
            #X connect 25 0 26 0;
            #X connect 25 0 27 0;
            #X connect 26 0 6 1;
            #X connect 27 0 20 1;
            #X connect 28 0 54 0;
            #X connect 28 0 98 0;
            #X connect 29 0 30 0;
            #X connect 30 0 32 0;
            #X connect 31 0 34 0;
            #X connect 32 0 31 0;
            #X connect 33 0 37 0;
            #X connect 34 0 33 0;
            #X connect 35 0 36 0;
            #X connect 35 1 36 1;
            #X connect 36 0 29 0;
            #X connect 36 1 30 1;
            #X connect 36 2 30 2;
            #X connect 37 0 52 0;
            #X connect 37 1 85 0;
            #X connect 37 1 96 0;
            #X connect 37 1 98 1;
            #X connect 38 0 0 0;
            #X connect 39 0 38 1;
            #X connect 40 0 71 0;
            #X connect 41 0 65 0;
            #X connect 41 1 40 0;
            #X connect 42 0 43 0;
            #X connect 43 0 77 0;
            #X connect 44 0 3 0;
            #X connect 45 0 46 0;
            #X connect 45 1 46 1;
            #X connect 45 2 46 2;
            #X connect 46 0 47 0;
            #X connect 47 0 48 0;
            #X connect 48 0 49 0;
            #X connect 49 0 79 0;
            #X connect 49 0 89 0;
            #X connect 49 0 95 0;
            #X connect 50 0 8 0;
            #X connect 50 0 62 0;
            #X connect 51 0 50 0;
            #X connect 52 0 28 0;
            #X connect 53 0 7 0;
            #X connect 54 0 84 0;
            #X connect 55 0 115 0;
            #X connect 57 0 58 0;
            #X connect 58 0 59 0;
            #X connect 60 0 3 1;
            #X connect 61 0 60 1;
            #X connect 62 0 25 0;
            #X connect 63 0 62 1;
            #X connect 64 0 39 0;
            #X connect 65 0 64 0;
            #X connect 66 0 65 1;
            #X connect 67 0 139 0;
            #X connect 68 0 23 0;
            #X connect 68 0 24 0;
            #X connect 69 0 70 0;
            #X connect 70 0 68 1;
            #X connect 71 0 39 0;
            #X connect 72 0 14 0;
            #X connect 73 0 1 0;
            #X connect 74 0 75 1;
            #X connect 75 0 83 0;
            #X connect 76 0 75 0;
            #X connect 76 1 74 0;
            #X connect 77 0 76 0;
            #X connect 78 0 77 1;
            #X connect 79 0 80 0;
            #X connect 80 0 51 0;
            #X connect 81 0 77 1;
            #X connect 82 0 81 0;
            #X connect 83 0 44 0;
            #X connect 84 0 53 0;
            #X connect 85 0 41 0;
            #X connect 86 0 85 1;
            #X connect 87 0 84 1;
            #X connect 89 0 94 0;
            #X connect 90 0 92 0;
            #X connect 91 0 92 0;
            #X connect 93 0 91 0;
            #X connect 94 0 90 0;
            #X connect 95 0 93 0;
            #X connect 96 1 97 0;
            #X connect 98 0 88 0;
            #X connect 99 0 112 0;
            #X connect 100 0 102 0;
            #X connect 101 0 108 0;
            #X connect 102 0 73 0;
            #X connect 102 0 72 0;
            #X connect 103 0 116 0;
            #X connect 104 0 73 0;
            #X connect 104 0 72 0;
            #X connect 105 0 113 0;
            #X connect 106 0 60 0;
            #X connect 107 0 121 0;
            #X connect 108 0 60 0;
            #X connect 109 0 118 0;
            #X connect 110 0 82 0;
            #X connect 111 0 78 0;
            #X connect 112 0 140 0;
            #X connect 113 0 123 0;
            #X connect 113 1 104 1;
            #X connect 114 0 102 0;
            #X connect 115 0 106 0;
            #X connect 116 0 117 0;
            #X connect 116 1 102 1;
            #X connect 117 0 114 0;
            #X connect 118 0 119 0;
            #X connect 118 1 108 1;
            #X connect 119 0 120 0;
            #X connect 120 0 108 0;
            #X connect 121 0 122 0;
            #X connect 121 1 106 1;
            #X connect 122 0 115 0;
            #X connect 123 0 112 0;
            #X connect 127 0 21 0;
            #X connect 128 0 129 0;
            #X connect 129 0 130 0;
            #X connect 130 0 136 0;
            #X connect 131 0 127 1;
            #X connect 132 0 133 0;
            #X connect 133 0 134 0;
            #X connect 133 1 138 0;
            #X connect 134 0 135 0;
            #X connect 134 1 137 0;
            #X connect 135 0 131 0;
            #X connect 136 0 131 0;
            #X connect 137 0 136 1;
            #X connect 138 0 136 1;
            #X connect 139 0 70 1;
            #X connect 140 0 141 0;
            #X connect 140 1 142 0;
            #X connect 140 2 143 0;
            #X connect 140 3 144 0;
            #X connect 141 0 104 0;
            #X connect 142 0 104 0;
            #X connect 143 0 104 0;
            #X connect 144 0 104 0;
            #X restore 321 -242 pd keyscrub;
            #X text 476 -185 4 sample playback slots reader1 to reader4;
            #X text 137 -266 playback livebuffer as "sample";
            #X text 878 -236 choose rec slot (and playback);
            #X text 865 -215 led logic \, blink when deleting slot content;
            #X text 854 -194 recording buffers;
            #X text 875 -173 record to buffer;
            #X text 396 -241 scrub buffer or live buffer with notein and aftertouch
            ;
            #X text 878 -150 switch playback mode: live/livebuffer/buffer;
            #X text 151 150 freeze/mode/record/slot;
            #X obj 229 316 f;
            #X obj 253 312 + 1;
            #X obj 272 344 select 1;
            #X msg 273 370 0;
            #X obj 322 376 select 0;
            #X obj 244 418 select 0;
            #X obj 152 445 spigot;
            #X obj 142 355 r mode;
            #X obj 138 421 == 0;
            #X obj 141 376 t b f;
            #X msg 90 396 0;
            #X obj 938 105 s mode;
            #X obj 989 65 s loop0onoff;
            #X obj 990 86 s loop1onoff;
            #X obj 989 107 s loop2onoff;
            #X obj 1069 65 s loop3onoff;
            #X obj 1070 86 s livegrainonoff;
            #X obj 1069 107 s keyplay0;
            #X obj 1070 128 s keyplay1;
            #X obj 1069 149 s keyplay2;
            #X obj 1070 170 s keyplay3;
            #X obj 1145 10 s keyscrub;
            #X msg 1101 -24 0;
            #X msg 1147 -26 1;
            #X msg 1161 -171 in 11 \, in 12 \, in 13 \, in 14 \, in 15 \, in 16
            \, in 19 \, in 20 \, in 22, f 35;
            #X obj 364 150 r bela_digitalIn15;
            #X obj 29 211 r bela_digitalIn20;
            #X obj 636 261 r bela_digitalIn11;
            #X obj 753 279 r bela_digitalIn14;
            #X obj 893 278 r bela_digitalIn19;
            #X obj 1017 269 r bela_digitalIn16;
            #X obj 1162 234 r bela_digitalIn22;
            #X obj 943 82 s init;
            #X obj 220 205 r init;
            #X obj 163 279 select 1;
            #N canvas 538 65 736 721 record 0;
            #X obj -258 -197 line~;
            #X obj -280 -162 *~;
            #X msg -184 -226 0 5;
            #X msg -245 -232 1 5;
            #X obj -166 -189 delay 5;
            #X msg -166 -150 stop;
            #X obj 21 -130 f;
            #X obj 54 -130 + 1;
            #X msg 88 -107 0;
            #X obj 21 -174 metro 1;
            #X obj -43 -97 * 44.1;
            #X obj -129 -27 f;
            #X msg -169 38 start \$1;
            #X msg 21 -218 stop;
            #X obj 88 -130 select 20000;
            #X obj 32 -34 max;
            #X obj 70 -34 f;
            #X msg 165 -169 0;
            #X obj 166 66 * 44.1;
            #X obj 166 -197 loadbang;
            #X text -125 -384 record into buffer;
            #X msg -45 145 1000;
            #X obj -1 164 /;
            #X obj -4 125 t b f;
            #X obj -126 -309 select 1 0;
            #X obj 171 -24 tabwrite bufferlen;
            #X obj 289 -78 tabread bufferlen;
            #X obj 173 -78 tabwrite pos;
            #X obj 243 7 tabread pos;
            #X obj 243 -118 t f f f f;
            #X obj -302 -271 adc~;
            #X text 226 64 phasor amplitude;
            #X text 41 163 phasor speed;
            #X obj -127 -227 b;
            #X obj 243 -146 r slotnr;
            #X obj 243 32 s recpos;
            #X obj 289 -52 s reclen;
            #X obj 94 -67 r reclen;
            #X obj -54 -168 r recpos;
            #X obj 167 88 s slotlength;
            #X obj 248 -200 r resetbuf;
            #X obj -89 16 r slotnr;
            #X floatatom 6 233 5 0 0 0 - - -, f 5;
            #X obj -124 -335 r record;
            #X obj -27 -275 s recdone;
            #X obj -192 159 tabwrite~ a;
            #X obj -92 49 select 0 1 2 3;
            #X msg -92 70 set a;
            #X msg -92 92 set b;
            #X msg -92 114 set c;
            #X msg -92 133 set d;
            #X obj -515 -132 metro 1;
            #X obj -517 -108 f;
            #X obj -487 -106 + 1;
            #X msg -459 -105 0;
            #X obj -562 -218 == 0;
            #X obj -566 -265 loadbang;
            #X msg -562 -238 0;
            #X obj -477 193 tabwrite~ livegrains;
            #X msg -334 59 stop;
            #X msg -415 59 start \$1;
            #X msg -424 11 0;
            #X obj -540 -35 f;
            #X obj -481 -3 * 44.1;
            #X obj -474 22 i;
            #X obj -573 -155 t b b;
            #X obj -583 -200 select 1 0, f 38;
            #X msg -497 -156 0;
            #X obj -609 -10 /;
            #X obj -611 -58 t f b;
            #X obj -611 -88 f;
            #X obj -609 15 s livepos;
            #X msg -393 -146 176400;
            #X obj -472 -290 table livegrains 176400;
            #X obj -514 -68 select 4000 0;
            #X msg -584 -33 4000;
            #X obj -679 153 tabwrite~ livefreeze;
            #X msg -723 102 bang;
            #X msg -772 -40 set livefreeze;
            #X obj -760 -11 s slot;
            #X obj -391 -75 s slot;
            #X msg -396 -100 set livegrains;
            #X obj -791 -94 t b b b;
            #X obj -643 81 line~;
            #X msg -683 45 1 8;
            #X msg -647 48 0 8;
            #X obj -593 116 *~;
            #X obj -717 -66 delay 92;
            #X obj -370 124 line~;
            #X msg -410 88 1 8;
            #X msg -374 91 0 8;
            #X obj -478 141 *~;
            #X obj -354 -4 delay 5;
            #X obj -790 -142 r freeze;
            #X obj -635 -216 r livemode;
            #X obj -507 -177 t b b;
            #X obj -657 -124 r recallpos;
            #X msg -839 -39 4411;
            #X obj -473 -271 table livefreeze 4411;
            #X obj -840 53 s slotlengthlive;
            #X obj -394 -123 s slotlengthlive;
            #X obj -774 -68 spigot;
            #X obj -728 -124 r mode;
            #X obj -727 -101 == 0;
            #X connect 0 0 1 1;
            #X connect 1 0 45 0;
            #X connect 2 0 0 0;
            #X connect 3 0 0 0;
            #X connect 4 0 5 0;
            #X connect 5 0 45 0;
            #X connect 6 0 7 0;
            #X connect 6 0 10 0;
            #X connect 6 0 14 0;
            #X connect 6 0 15 0;
            #X connect 6 0 27 0;
            #X connect 7 0 6 1;
            #X connect 8 0 6 0;
            #X connect 8 0 12 0;
            #X connect 9 0 6 0;
            #X connect 10 0 11 1;
            #X connect 11 0 12 0;
            #X connect 12 0 45 0;
            #X connect 13 0 9 0;
            #X connect 14 0 8 0;
            #X connect 15 0 16 0;
            #X connect 16 0 15 1;
            #X connect 16 0 18 0;
            #X connect 16 0 23 0;
            #X connect 16 0 25 0;
            #X connect 17 0 16 0;
            #X connect 17 0 6 0;
            #X connect 18 0 39 0;
            #X connect 19 0 17 0;
            #X connect 21 0 22 0;
            #X connect 22 0 42 0;
            #X connect 23 0 21 0;
            #X connect 23 1 22 1;
            #X connect 24 0 3 0;
            #X connect 24 0 33 0;
            #X connect 24 1 2 0;
            #X connect 24 1 13 0;
            #X connect 24 1 4 0;
            #X connect 24 1 44 0;
            #X connect 26 0 36 0;
            #X connect 28 0 35 0;
            #X connect 29 0 28 0;
            #X connect 29 1 27 1;
            #X connect 29 2 26 0;
            #X connect 29 3 25 1;
            #X connect 30 0 1 0;
            #X connect 30 0 86 0;
            #X connect 30 0 91 0;
            #X connect 30 1 1 0;
            #X connect 30 1 86 0;
            #X connect 30 1 91 0;
            #X connect 33 0 11 0;
            #X connect 33 0 9 0;
            #X connect 34 0 29 0;
            #X connect 37 0 16 0;
            #X connect 38 0 6 0;
            #X connect 40 0 17 0;
            #X connect 41 0 46 0;
            #X connect 43 0 24 0;
            #X connect 46 0 47 0;
            #X connect 46 1 48 0;
            #X connect 46 2 49 0;
            #X connect 46 3 50 0;
            #X connect 47 0 45 0;
            #X connect 48 0 45 0;
            #X connect 49 0 45 0;
            #X connect 50 0 45 0;
            #X connect 51 0 52 0;
            #X connect 52 0 53 0;
            #X connect 52 0 62 1;
            #X connect 52 0 70 1;
            #X connect 52 0 74 0;
            #X connect 53 0 52 1;
            #X connect 54 0 52 0;
            #X connect 55 0 66 0;
            #X connect 56 0 57 0;
            #X connect 57 0 55 0;
            #X connect 59 0 58 0;
            #X connect 60 0 58 0;
            #X connect 61 0 60 0;
            #X connect 62 0 63 0;
            #X connect 63 0 64 0;
            #X connect 64 0 60 0;
            #X connect 64 0 89 0;
            #X connect 65 0 51 0;
            #X connect 65 1 62 0;
            #X connect 66 0 65 0;
            #X connect 66 1 95 0;
            #X connect 67 0 51 0;
            #X connect 68 0 71 0;
            #X connect 69 0 68 0;
            #X connect 69 1 75 0;
            #X connect 70 0 69 0;
            #X connect 72 0 100 0;
            #X connect 74 0 54 0;
            #X connect 74 1 61 0;
            #X connect 75 0 68 1;
            #X connect 77 0 76 0;
            #X connect 78 0 79 0;
            #X connect 81 0 80 0;
            #X connect 82 0 77 0;
            #X connect 82 1 101 0;
            #X connect 82 2 84 0;
            #X connect 82 2 87 0;
            #X connect 83 0 86 1;
            #X connect 84 0 83 0;
            #X connect 85 0 83 0;
            #X connect 86 0 76 0;
            #X connect 87 0 85 0;
            #X connect 88 0 91 1;
            #X connect 89 0 88 0;
            #X connect 90 0 88 0;
            #X connect 91 0 58 0;
            #X connect 92 0 59 0;
            #X connect 93 0 82 0;
            #X connect 94 0 55 0;
            #X connect 95 0 70 0;
            #X connect 95 1 72 0;
            #X connect 95 1 81 0;
            #X connect 95 1 92 0;
            #X connect 95 1 90 0;
            #X connect 95 1 67 0;
            #X connect 96 0 70 0;
            #X connect 97 0 99 0;
            #X connect 101 0 97 0;
            #X connect 101 0 78 0;
            #X connect 102 0 103 0;
            #X connect 103 0 101 1;
            #X restore 792 -173 pd record;
            #X text 980 -173 livebuffer/freeze;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 8 0 9 0;
            #X connect 8 1 5 0;
            #X connect 8 1 6 0;
            #X connect 10 0 0 0;
            #X connect 10 0 0 1;
            #X connect 11 0 0 0;
            #X connect 13 0 14 0;
            #X connect 13 1 15 0;
            #X connect 13 1 25 0;
            #X connect 16 0 19 0;
            #X connect 16 1 20 0;
            #X connect 16 1 28 0;
            #X connect 17 0 21 0;
            #X connect 17 1 22 0;
            #X connect 17 1 31 0;
            #X connect 18 0 23 0;
            #X connect 18 1 24 0;
            #X connect 18 1 34 0;
            #X connect 25 0 26 0;
            #X connect 26 0 27 0;
            #X connect 28 0 29 0;
            #X connect 29 0 30 0;
            #X connect 31 0 32 0;
            #X connect 32 0 33 0;
            #X connect 34 0 35 0;
            #X connect 35 0 36 0;
            #X connect 37 0 38 0;
            #X connect 38 0 39 0;
            #X connect 40 0 42 0;
            #X connect 40 1 37 0;
            #X connect 40 1 41 0;
            #X connect 45 0 0 1;
            #X connect 46 0 0 0;
            #X connect 47 0 0 1;
            #X connect 48 0 49 0;
            #X connect 48 0 51 0;
            #X connect 48 0 52 0;
            #X connect 48 0 56 1;
            #X connect 49 0 48 1;
            #X connect 50 0 48 1;
            #X connect 51 0 50 0;
            #X connect 53 0 55 0;
            #X connect 54 0 56 0;
            #X connect 55 0 54 0;
            #X connect 56 0 60 0;
            #X connect 56 0 61 0;
            #X connect 57 0 48 1;
            #X connect 58 0 53 0;
            #X connect 59 0 57 0;
            #X connect 60 0 59 0;
            #X connect 60 1 59 1;
            #X connect 61 0 63 0;
            #X connect 62 0 48 1;
            #X connect 63 0 62 0;
            #X connect 64 0 112 0;
            #X connect 64 0 110 0;
            #X connect 64 0 111 0;
            #X connect 66 0 13 0;
            #X connect 67 0 16 0;
            #X connect 68 0 17 0;
            #X connect 69 0 18 0;
            #X connect 70 0 40 0;
            #X connect 71 0 58 0;
            #X connect 71 0 92 0;
            #X connect 72 0 71 0;
            #X connect 73 0 122 0;
            #X connect 74 0 44 0;
            #X connect 75 0 43 0;
            #X connect 76 0 75 0;
            #X connect 78 0 0 0;
            #X connect 78 0 0 1;
            #X connect 88 0 89 0;
            #X connect 88 0 90 0;
            #X connect 88 0 4 0;
            #X connect 88 0 93 0;
            #X connect 89 0 88 1;
            #X connect 90 0 91 0;
            #X connect 91 0 88 1;
            #X connect 92 0 48 0;
            #X connect 93 0 94 0;
            #X connect 94 0 8 0;
            #X connect 95 0 97 0;
            #X connect 96 0 94 1;
            #X connect 97 0 98 0;
            #X connect 97 1 96 0;
            #X connect 98 0 88 0;
            #X connect 110 0 99 0;
            #X connect 110 0 100 0;
            #X connect 110 0 101 0;
            #X connect 110 0 102 0;
            #X connect 110 0 103 0;
            #X connect 110 0 104 0;
            #X connect 110 0 105 0;
            #X connect 110 0 106 0;
            #X connect 110 0 107 0;
            #X connect 110 0 108 0;
            #X connect 110 0 120 0;
            #X connect 111 0 109 0;
            #X connect 112 0 65 0;
            #X connect 113 0 74 0;
            #X connect 114 0 73 0;
            #X connect 115 0 66 0;
            #X connect 116 0 67 0;
            #X connect 117 0 68 0;
            #X connect 118 0 69 0;
            #X connect 119 0 70 0;
            #X connect 121 0 44 0;
            #X connect 121 0 43 0;
            #X connect 121 0 122 0;
            #X connect 121 0 92 0;
            #X connect 122 0 88 0;

            debouncer abstraction (primitive, simple version :-)):

            #N canvas 0 22 450 300 10;
            #X obj 62 69 b;
            #X obj 48 43 spigot;
            #X msg 67 102 0;
            #X msg 107 73 1;
            #X obj 97 102 delay 10;
            #X obj 105 42 loadbang;
            #X obj 58 18 inlet;
            #X obj 49 128 outlet;
            #X connect 0 0 2 0;
            #X connect 0 0 4 0;
            #X connect 1 0 0 0;
            #X connect 1 0 7 0;
            #X connect 2 0 1 1;
            #X connect 3 0 1 1;
            #X connect 4 0 3 0;
            #X connect 5 0 3 0;
            #X connect 6 0 1 0;

            about the mode switch i will have to check this evening, my bela is not with me atm :-(
            but i have a standard bela cape, no ctag or anything. could it be caused by the experimental heavy multimidi support you added (despite me not using it?)

            as a small addendum, if you have a vanilla (heavy compatible) way that stores notes, so that when multiple keys are pressed and you release one the old one gets activated again, i would be very interested. all the ones i tried myself and also the ones i found, are quite complex and use [until] at some point...

            basically i would love a highest key priority system, so that always the highest pressed note on a midi keyboard is output. the version i have in the patch is different but also ok.

            I had implemented something like that in an earlier version of the Bela examples 08-PureData/hello-midi: https://github.com/BelaPlatform/Bela/tree/0e5f6d2ce85da5962f882dfb3da34adea9ed9106/examples/08-PureData/hello-midi . This actually is looking for the most recent note active as opposed to the highest (or lowest), but you can easily change that.

            I am using a [delay 0] there to traverse the array. This is very similar to [until], except that the scheduling of the messages is slightly different, but with no difference for the user in this case. So, this was still causing dropouts*. You could make it [delay 0.05] or something similar in order to dilute over time the array traversal. If you restrict the size of the array to the notes you are actually playing (e.g.: the octaves actually on your keyboard, or maybe dynamically, keeping track of the notes you played), then the added latency wouldn't be excessive.

            * for this reason, I later took that out, replacing it with an [array max], which is much more efficient in Pd, but not supported by heavy. So the current version of the example works efficiently with Pd but not with Heavy.

            ok i can confirm a few things here:

            taking my note priority stuff out makes the underrun go away. so that means, either heavy or note retriggering :-) i still can't believe a simple until 11 is too much for the cpu. (but i don't get what is going on probably). i tried to get your counter with [delay 0] into the abstraction, but that did not work. will have to investigate further.

            about the mode switch:

            running the basic example i get no mode switch. but running my patch, even with the note priority stuff out of the way, i get one mode switch. i will attach it here again, sorry for the longish post. if you find time to try it, i would be curious to see, what causes the mode switching... running the same patch in libpd, i get no mode switch. again i suspect, it has something to do with your heavy multi midi support, could that be? (even if i don't open a port from pd)

            #N canvas 46 22 1362 746 10;
            #X obj 254 -44 dac~;
            #N canvas 332 104 681 459 uilogic 0;
            #X obj -211 49 == 0;
            #X obj -211 81 f;
            #X obj -178 96 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj -142 72 spigot;
            #X obj 48 85 f;
            #X obj 81 100 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 100 73 spigot;
            #X obj 47 46 == 1;
            #X obj -194 230 f;
            #X obj -161 239 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
            0 1;
            #X obj -142 212 spigot;
            #X obj -195 185 == 2;
            #X obj 56 233 f;
            #X obj 89 248 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 108 221 spigot;
            #X obj 55 194 == 3;
            #X obj -196 158 r slotnr;
            #X obj 46 12 r slotnr;
            #X obj -211 12 r slotnr;
            #X obj 54 158 r slotnr;
            #X obj -302 13 r delaybng;
            #X obj -286 159 r delaybng;
            #X obj -47 10 r delaybng;
            #X obj -32 158 r delaybng;
            #X obj -122 159 r metronbg;
            #X obj 120 11 r metrobng;
            #X obj 127 158 r metrobng;
            #X obj -137 12 r metrobng;
            #X connect 0 0 1 0;
            #X connect 0 0 3 1;
            #X connect 3 0 2 0;
            #X connect 6 0 5 0;
            #X connect 7 0 4 0;
            #X connect 7 0 6 1;
            #X connect 10 0 9 0;
            #X connect 11 0 8 0;
            #X connect 11 0 10 1;
            #X connect 14 0 13 0;
            #X connect 15 0 12 0;
            #X connect 15 0 14 1;
            #X connect 16 0 11 0;
            #X connect 17 0 7 0;
            #X connect 18 0 0 0;
            #X connect 19 0 15 0;
            #X connect 20 0 1 0;
            #X connect 21 0 8 0;
            #X connect 22 0 4 0;
            #X connect 23 0 12 0;
            #X connect 24 0 10 0;
            #X connect 25 0 6 0;
            #X connect 26 0 14 0;
            #X connect 27 0 3 0;
            #X restore 791 -217 pd uilogic;
            #N canvas 446 177 450 300 tables 0;
            #X obj 8 142 table bufferlen 4;
            #X obj 8 164 table pos 4;
            #X text 12 7 four sample slots each 20secs;
            #X obj 8 40 table a 882000;
            #X obj 7 64 table b 882000;
            #X obj 7 91 table c 882000;
            #X obj 7 118 table d 882000;
            #X restore 792 -195 pd tables;
            #N canvas 761 110 605 574 chooseslot 0;
            #X msg 134 -39 \$1 2000;
            #X obj 143 -8 line;
            #X obj 144 49 select 1;
            #X text 35 -111 long press reset buffer;
            #X obj 144 20 change;
            #X obj 56 83 f;
            #X obj 91 83 + 1;
            #X msg 121 135 0;
            #X text 56 -92 switch sample slot;
            #X obj 50 -10 select 0 1;
            #X obj 41 39 spigot;
            #X msg 87 14 1;
            #X msg 145 75 0;
            #X msg -81 -55 \; bufferlen 0 0 0 0 0;
            #X obj -80 -80 loadbang;
            #X msg -81 -14 \; pos 0 0 0 0 0;
            #X msg 276 178 0;
            #X obj 238 119 t b b;
            #X msg -80 29 0;
            #X obj 237 90 delay 1200;
            #X obj 275 203 metro 100;
            #X obj 66 112 s slotnr;
            #X obj 238 152 s delaybng;
            #X obj 276 230 s metrobng;
            #X obj 222 57 s resetbuf;
            #X obj 204 -86 r slotchoose;
            #X obj 56 135 select 3;
            #X connect 0 0 1 0;
            #X connect 1 0 4 0;
            #X connect 2 0 12 0;
            #X connect 2 0 19 0;
            #X connect 2 0 20 0;
            #X connect 2 0 24 0;
            #X connect 4 0 2 0;
            #X connect 5 0 6 0;
            #X connect 5 0 21 0;
            #X connect 5 0 26 0;
            #X connect 6 0 5 1;
            #X connect 7 0 5 1;
            #X connect 9 0 10 0;
            #X connect 9 1 11 0;
            #X connect 10 0 5 0;
            #X connect 11 0 10 1;
            #X connect 12 0 10 1;
            #X connect 14 0 13 0;
            #X connect 14 0 15 0;
            #X connect 14 0 18 0;
            #X connect 16 0 20 0;
            #X connect 17 0 22 0;
            #X connect 17 1 16 0;
            #X connect 18 0 5 0;
            #X connect 19 0 17 0;
            #X connect 20 0 23 0;
            #X connect 25 0 0 0;
            #X connect 25 0 9 0;
            #X connect 26 0 7 0;
            #X restore 791 -237 pd chooseslot;
            #X obj 232 645 s freeze;
            #X msg 219 467 176400;
            #X msg 216 513 set livegrains;
            #X obj 221 538 s slot;
            #X obj 153 464 t b b;
            #X obj 128 509 s recallpos;
            #N canvas 370 171 450 300 livegrainreader 0;
            #X obj 154 225 outlet~;
            #X obj 64 119 *~ 176400;
            #X obj 64 98 phasor~ 0.08;
            #X obj 66 145 tabread4~ livegrains;
            #X obj 222 181 *~;
            #X obj 66 58 * 1;
            #X obj 242 154 line~;
            #X obj 15 -12 r pitch;
            #X obj 239 72 r velosample;
            #X obj 128 37 r direction;
            #X obj 172 6 r keysample;
            #X obj 239 111 / 127;
            #X msg 241 132 \$1 5;
            #X obj 131 55 spigot;
            #X obj 238 93 spigot;
            #X obj 34 14 spigot;
            #X obj 64 36 f;
            #X obj 130 77 t b f;
            #X obj 66 78 / 1760;
            #X obj 330 32 r livegrainonoff;
            #X obj 333 83 select 0;
            #X msg 296 130 0 5;
            #X connect 1 0 3 0;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 4 0 0 0;
            #X connect 5 0 18 0;
            #X connect 6 0 4 1;
            #X connect 7 0 15 0;
            #X connect 8 0 14 0;
            #X connect 9 0 13 0;
            #X connect 10 0 15 1;
            #X connect 10 0 13 1;
            #X connect 10 0 14 1;
            #X connect 11 0 12 0;
            #X connect 12 0 6 0;
            #X connect 13 0 17 0;
            #X connect 14 0 11 0;
            #X connect 15 0 16 0;
            #X connect 16 0 5 0;
            #X connect 17 0 16 0;
            #X connect 17 1 5 1;
            #X connect 18 0 2 0;
            #X connect 19 0 20 0;
            #X connect 20 0 21 0;
            #X connect 21 0 6 0;
            #X restore 138 -242 pd livegrainreader;
            #N canvas 663 54 580 468 reader1 0;
            #X obj 154 225 outlet~;
            #X obj 64 109 phasor~ 0.08;
            #X obj 222 181 *~;
            #X obj 63 21 * 1;
            #X obj 236 86 line~;
            #X obj 12 -49 r pitch;
            #X obj 233 4 r velosample;
            #X obj 82 -70 r direction;
            #X obj 233 43 / 127;
            #X msg 235 64 \$1 5;
            #X obj 83 -47 spigot;
            #X obj 232 25 spigot;
            #X obj 31 -23 spigot;
            #X obj 61 -1 f;
            #X obj 82 -25 t b f;
            #X obj 106 -111 r keyplay0;
            #X obj -66 -62 r slotnr;
            #X obj -84 15 tabread bufferlen;
            #X obj -85 47 * 44.1;
            #X obj -83 -31 f;
            #X msg -146 96 1000;
            #X obj -102 115 /;
            #X obj -105 76 t b f;
            #X obj -102 143 / 440;
            #X obj 63 62 *;
            #X obj -186 -91 r loop0onoff;
            #X msg 273 62 0 5;
            #X obj 63 42 f;
            #X obj -101 166 t b f;
            #X obj -182 -70 select 0 1;
            #X obj -65 77 sig~;
            #X obj 64 133 *~;
            #X obj 61 87 sig~;
            #X obj -83 -7 f;
            #X obj -148 -7 r recdone;
            #X obj 136 20 select 0 1 2 3;
            #X obj 66 156 tabread4~ a;
            #X msg 94 86 set a;
            #X msg 134 85 set b;
            #X msg 122 55 set c;
            #X msg 176 56 set d;
            #X connect 1 0 31 0;
            #X connect 2 0 0 0;
            #X connect 3 0 27 0;
            #X connect 4 0 2 1;
            #X connect 5 0 12 0;
            #X connect 6 0 11 0;
            #X connect 7 0 10 0;
            #X connect 8 0 9 0;
            #X connect 9 0 4 0;
            #X connect 10 0 14 0;
            #X connect 11 0 8 0;
            #X connect 12 0 13 0;
            #X connect 13 0 3 0;
            #X connect 14 0 13 0;
            #X connect 14 1 3 1;
            #X connect 15 0 12 1;
            #X connect 15 0 10 1;
            #X connect 15 0 11 1;
            #X connect 16 0 19 1;
            #X connect 17 0 18 0;
            #X connect 17 0 22 0;
            #X connect 18 0 30 0;
            #X connect 19 0 33 0;
            #X connect 19 0 35 0;
            #X connect 20 0 21 0;
            #X connect 21 0 23 0;
            #X connect 22 0 20 0;
            #X connect 22 1 21 1;
            #X connect 23 0 28 0;
            #X connect 24 0 32 0;
            #X connect 25 0 29 0;
            #X connect 26 0 4 0;
            #X connect 27 0 24 0;
            #X connect 28 0 27 0;
            #X connect 28 1 24 1;
            #X connect 29 0 26 0;
            #X connect 29 1 19 0;
            #X connect 30 0 31 1;
            #X connect 31 0 36 0;
            #X connect 32 0 1 0;
            #X connect 33 0 17 0;
            #X connect 34 0 33 0;
            #X connect 35 0 37 0;
            #X connect 35 1 38 0;
            #X connect 35 2 39 0;
            #X connect 35 3 40 0;
            #X connect 36 0 2 0;
            #X connect 37 0 36 0;
            #X connect 38 0 36 0;
            #X connect 39 0 36 0;
            #X connect 40 0 36 0;
            #X restore 82 -215 pd reader1;
            #X obj 218 490 s slotlengthlive;
            #N canvas 782 323 450 300 button0 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 649 334 pd button0;
            #X obj 612 363 s loop0onoff;
            #X obj 706 360 s keyplay0;
            #N canvas 780 383 450 300 button1 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 782 408 pd button1;
            #N canvas 739 543 450 300 button2 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 869 356 pd button2;
            #N canvas 739 543 450 300 button3 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 981 329 pd button3;
            #X obj 752 434 s loop1onoff;
            #X obj 844 432 s keyplay1;
            #X obj 844 380 s loop2onoff;
            #X obj 929 379 s keyplay2;
            #X obj 956 353 s loop3onoff;
            #X obj 1041 352 s keyplay3;
            #X obj 682 408 * -1;
            #X obj 681 429 + 1;
            #X obj 680 451 s keyscrub;
            #X obj 845 463 * -1;
            #X obj 844 484 + 1;
            #X obj 843 506 s keyscrub;
            #X obj 939 417 * -1;
            #X obj 938 438 + 1;
            #X obj 937 460 s keyscrub;
            #X obj 1045 385 * -1;
            #X obj 1044 406 + 1;
            #X obj 1043 428 s keyscrub;
            #X obj 1176 378 * -1;
            #X obj 1175 399 + 1;
            #X obj 1174 421 s keyscrub;
            #N canvas 782 323 450 300 button4 0;
            #X obj 140 98 spigot;
            #X msg 175 75 1;
            #X obj 116 35 loadbang;
            #X obj 193 145 f;
            #X obj 220 145 + 1;
            #X obj 198 225 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
            1;
            #X obj 136 145 select 1;
            #X msg 134 166 0;
            #X msg 269 127 0;
            #X obj 269 101 delay 300;
            #X obj 196 166 > 1;
            #X obj 199 193 select 1;
            #X obj 198 254 outlet;
            #X obj 340 71 outlet;
            #X obj 212 37 t b b;
            #X obj 214 -18 inlet;
            #X obj 209 14 select 1;
            #X connect 0 0 5 0;
            #X connect 1 0 0 1;
            #X connect 2 0 1 0;
            #X connect 3 0 4 0;
            #X connect 3 0 10 0;
            #X connect 4 0 3 1;
            #X connect 5 0 6 0;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 7 0 0 1;
            #X connect 8 0 3 0;
            #X connect 9 0 8 0;
            #X connect 10 0 11 0;
            #X connect 11 0 1 0;
            #X connect 11 0 5 0;
            #X connect 14 0 9 0;
            #X connect 14 0 3 0;
            #X connect 14 1 0 0;
            #X connect 15 0 13 0;
            #X connect 15 0 16 0;
            #X connect 16 0 14 0;
            #X restore 1143 304 pd button4;
            #X obj 1218 333 s keysample;
            #X obj 1106 333 s livegrainonoff;
            #X obj 394 253 s slotchoose;
            #X obj 329 256 s record;
            #N canvas 663 54 580 468 reader2 0;
            #X obj 154 225 outlet~;
            #X obj 64 109 phasor~ 0.08;
            #X obj 222 181 *~;
            #X obj 63 21 * 1;
            #X obj 236 86 line~;
            #X obj 12 -49 r pitch;
            #X obj 233 4 r velosample;
            #X obj 82 -70 r direction;
            #X obj 233 43 / 127;
            #X msg 235 64 \$1 5;
            #X obj 83 -47 spigot;
            #X obj 232 25 spigot;
            #X obj 31 -23 spigot;
            #X obj 61 -1 f;
            #X obj 82 -25 t b f;
            #X obj -66 -76 r slotnr;
            #X obj -84 0 tabread bufferlen;
            #X obj -85 32 * 44.1;
            #X obj -85 -43 f;
            #X msg -146 81 1000;
            #X obj -102 100 /;
            #X obj -105 61 t b f;
            #X obj -102 128 / 440;
            #X obj 63 62 *;
            #X msg 273 62 0 5;
            #X obj 63 42 f;
            #X obj -101 151 t b f;
            #X obj -185 -69 select 0 1;
            #X obj -65 62 sig~;
            #X obj 64 133 *~;
            #X obj 68 86 sig~;
            #X obj -186 -91 r loop1onoff;
            #X obj 106 -111 r keyplay1;
            #X obj -85 -20 f;
            #X obj -150 -20 r recdone;
            #X obj 66 156 tabread4~ b;
            #X obj 144 58 select 0 1 2 3;
            #X msg 144 79 set a;
            #X msg 144 101 set b;
            #X msg 144 123 set c;
            #X msg 144 142 set d;
            #X connect 1 0 29 0;
            #X connect 2 0 0 0;
            #X connect 3 0 25 0;
            #X connect 4 0 2 1;
            #X connect 5 0 12 0;
            #X connect 6 0 11 0;
            #X connect 7 0 10 0;
            #X connect 8 0 9 0;
            #X connect 9 0 4 0;
            #X connect 10 0 14 0;
            #X connect 11 0 8 0;
            #X connect 12 0 13 0;
            #X connect 13 0 3 0;
            #X connect 14 0 13 0;
            #X connect 14 1 3 1;
            #X connect 15 0 18 1;
            #X connect 16 0 17 0;
            #X connect 16 0 21 0;
            #X connect 17 0 28 0;
            #X connect 18 0 33 0;
            #X connect 18 0 36 0;
            #X connect 19 0 20 0;
            #X connect 20 0 22 0;
            #X connect 21 0 19 0;
            #X connect 21 1 20 1;
            #X connect 22 0 26 0;
            #X connect 23 0 30 0;
            #X connect 24 0 4 0;
            #X connect 25 0 23 0;
            #X connect 26 0 25 0;
            #X connect 26 1 23 1;
            #X connect 27 0 24 0;
            #X connect 27 1 18 0;
            #X connect 28 0 29 1;
            #X connect 29 0 35 0;
            #X connect 30 0 1 0;
            #X connect 31 0 27 0;
            #X connect 32 0 12 1;
            #X connect 32 0 10 1;
            #X connect 32 0 11 1;
            #X connect 33 0 16 0;
            #X connect 34 0 33 0;
            #X connect 35 0 2 0;
            #X connect 36 0 37 0;
            #X connect 36 1 38 0;
            #X connect 36 2 39 0;
            #X connect 36 3 40 0;
            #X connect 37 0 35 0;
            #X connect 38 0 35 0;
            #X connect 39 0 35 0;
            #X connect 40 0 35 0;
            #X restore 398 -201 pd reader2;
            #N canvas 663 54 580 468 reader3 0;
            #X obj 154 225 outlet~;
            #X obj 64 109 phasor~ 0.08;
            #X obj 222 181 *~;
            #X obj 63 21 * 1;
            #X obj 236 86 line~;
            #X obj 12 -49 r pitch;
            #X obj 233 4 r velosample;
            #X obj 82 -70 r direction;
            #X obj 233 43 / 127;
            #X msg 235 64 \$1 5;
            #X obj 83 -47 spigot;
            #X obj 232 25 spigot;
            #X obj 31 -23 spigot;
            #X obj 61 -1 f;
            #X obj 82 -25 t b f;
            #X obj -66 -62 r slotnr;
            #X obj -84 0 tabread bufferlen;
            #X obj -85 32 * 44.1;
            #X obj -85 -42 f;
            #X msg -146 81 1000;
            #X obj -102 100 /;
            #X obj -105 61 t b f;
            #X obj -102 128 / 440;
            #X obj 63 62 *;
            #X msg 273 62 0 5;
            #X obj 63 42 f;
            #X obj -101 151 t b f;
            #X obj -185 -69 select 0 1;
            #X obj -65 62 sig~;
            #X obj 64 133 *~;
            #X obj 68 86 sig~;
            #X obj -186 -91 r loop2onoff;
            #X obj 106 -111 r keyplay2;
            #X obj -84 -22 f;
            #X obj -149 -22 r recdone;
            #X obj 66 156 tabread4~ c;
            #X obj 145 47 select 0 1 2 3;
            #X msg 145 68 set a;
            #X msg 145 90 set b;
            #X msg 145 112 set c;
            #X msg 145 131 set d;
            #X connect 1 0 29 0;
            #X connect 2 0 0 0;
            #X connect 3 0 25 0;
            #X connect 4 0 2 1;
            #X connect 5 0 12 0;
            #X connect 6 0 11 0;
            #X connect 7 0 10 0;
            #X connect 8 0 9 0;
            #X connect 9 0 4 0;
            #X connect 10 0 14 0;
            #X connect 11 0 8 0;
            #X connect 12 0 13 0;
            #X connect 13 0 3 0;
            #X connect 14 0 13 0;
            #X connect 14 1 3 1;
            #X connect 15 0 18 1;
            #X connect 16 0 17 0;
            #X connect 16 0 21 0;
            #X connect 17 0 28 0;
            #X connect 18 0 33 0;
            #X connect 18 0 36 0;
            #X connect 19 0 20 0;
            #X connect 20 0 22 0;
            #X connect 21 0 19 0;
            #X connect 21 1 20 1;
            #X connect 22 0 26 0;
            #X connect 23 0 30 0;
            #X connect 24 0 4 0;
            #X connect 25 0 23 0;
            #X connect 26 0 25 0;
            #X connect 26 1 23 1;
            #X connect 27 0 24 0;
            #X connect 27 1 18 0;
            #X connect 28 0 29 1;
            #X connect 29 0 35 0;
            #X connect 30 0 1 0;
            #X connect 31 0 27 0;
            #X connect 32 0 12 1;
            #X connect 32 0 10 1;
            #X connect 32 0 11 1;
            #X connect 33 0 16 0;
            #X connect 34 0 33 0;
            #X connect 35 0 2 0;
            #X connect 36 0 37 0;
            #X connect 36 1 38 0;
            #X connect 36 2 39 0;
            #X connect 36 3 40 0;
            #X connect 37 0 35 0;
            #X connect 38 0 35 0;
            #X connect 39 0 35 0;
            #X connect 40 0 35 0;
            #X restore 46 -176 pd reader3;
            #N canvas 663 54 580 468 reader4 0;
            #X obj 154 225 outlet~;
            #X obj 64 109 phasor~ 0.08;
            #X obj 222 181 *~;
            #X obj 63 21 * 1;
            #X obj 236 86 line~;
            #X obj 12 -49 r pitch;
            #X obj 233 4 r velosample;
            #X obj 82 -70 r direction;
            #X obj 233 43 / 127;
            #X msg 235 64 \$1 5;
            #X obj 83 -47 spigot;
            #X obj 232 25 spigot;
            #X obj 31 -23 spigot;
            #X obj 61 -1 f;
            #X obj 82 -25 t b f;
            #X obj -66 -62 r slotnr;
            #X obj -84 0 tabread bufferlen;
            #X obj -85 32 * 44.1;
            #X obj -85 -42 f;
            #X msg -146 81 1000;
            #X obj -102 100 /;
            #X obj -105 61 t b f;
            #X obj -102 128 / 440;
            #X obj 63 62 *;
            #X msg 273 62 0 5;
            #X obj 63 42 f;
            #X obj -101 151 t b f;
            #X obj -185 -69 select 0 1;
            #X obj -65 62 sig~;
            #X obj 64 133 *~;
            #X obj 68 86 sig~;
            #X obj -186 -91 r loop3onoff;
            #X obj 106 -111 r keyplay3;
            #X obj -85 -22 f;
            #X obj -150 -22 r recdone;
            #X obj 66 156 tabread4~ d;
            #X obj 148 53 select 0 1 2 3;
            #X msg 148 74 set a;
            #X msg 148 96 set b;
            #X msg 148 118 set c;
            #X msg 148 137 set d;
            #X connect 1 0 29 0;
            #X connect 2 0 0 0;
            #X connect 3 0 25 0;
            #X connect 4 0 2 1;
            #X connect 5 0 12 0;
            #X connect 6 0 11 0;
            #X connect 7 0 10 0;
            #X connect 8 0 9 0;
            #X connect 9 0 4 0;
            #X connect 10 0 14 0;
            #X connect 11 0 8 0;
            #X connect 12 0 13 0;
            #X connect 13 0 3 0;
            #X connect 14 0 13 0;
            #X connect 14 1 3 1;
            #X connect 15 0 18 1;
            #X connect 16 0 17 0;
            #X connect 16 0 21 0;
            #X connect 17 0 28 0;
            #X connect 18 0 33 0;
            #X connect 18 0 36 0;
            #X connect 19 0 20 0;
            #X connect 20 0 22 0;
            #X connect 21 0 19 0;
            #X connect 21 1 20 1;
            #X connect 22 0 26 0;
            #X connect 23 0 30 0;
            #X connect 24 0 4 0;
            #X connect 25 0 23 0;
            #X connect 26 0 25 0;
            #X connect 26 1 23 1;
            #X connect 27 0 24 0;
            #X connect 27 1 18 0;
            #X connect 28 0 29 1;
            #X connect 29 0 35 0;
            #X connect 30 0 1 0;
            #X connect 31 0 27 0;
            #X connect 32 0 12 1;
            #X connect 32 0 10 1;
            #X connect 32 0 11 1;
            #X connect 33 0 16 0;
            #X connect 34 0 33 0;
            #X connect 35 0 2 0;
            #X connect 36 0 37 0;
            #X connect 36 1 38 0;
            #X connect 36 2 39 0;
            #X connect 36 3 40 0;
            #X connect 37 0 35 0;
            #X connect 38 0 35 0;
            #X connect 39 0 35 0;
            #X connect 40 0 35 0;
            #X restore 394 -174 pd reader4;
            #X obj 325 447 f;
            #X obj 353 445 + 1;
            #X msg 396 522 0;
            #X obj 325 499 select 2;
            #X obj 335 476 s mode;
            #X obj 433 437 line;
            #X obj 434 494 select 1;
            #X obj 434 465 change;
            #X obj 436 521 f;
            #X obj 434 617 - 1;
            #X msg 424 406 \$1 700;
            #X obj 433 595 spigot;
            #X obj 433 553 t f f;
            #X obj 478 555 == 0;
            #X msg 484 611 2;
            #X obj 481 580 select 1;
            #X obj 1161 -276 loadbang;
            #X obj 1162 -109 send bela_setDigital @hv_param;
            #X obj 635 282 debounce;
            #X obj 752 300 debounce;
            #X obj 892 299 debounce;
            #X obj 1016 290 debounce;
            #X obj 1161 255 debounce;
            #X obj 339 310 debounce;
            #X obj 340 289 r bela_digitalIn12;
            #X obj 28 232 debounce;
            #X obj 363 169 debounce;
            #X obj 408 212 debounce;
            #X obj 409 191 r bela_digitalIn13;
            #N canvas 364 195 866 528 modeswitch 0;
            #X obj 65 -81 r mode;
            #X obj 63 1 select 0 1 2;
            #X obj 350 157 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
            1;
            #X obj 333 21 == 2;
            #X obj 372 21 == 1;
            #X obj 436 31 select 1 0;
            #X obj 470 150 f;
            #X obj 498 150 + 1;
            #X obj 470 173 select 1;
            #X msg 529 173 0;
            #X msg 497 95 stop;
            #X obj 337 -1 t f f;
            #X obj 471 125 metro 200;
            #X obj -20 52 s enablelive;
            #X obj -22 73 s enablebuffer;
            #X obj -22 95 s livemode;
            #X msg -48 51 1;
            #X msg -51 73 0;
            #X msg -52 95 0;
            #X obj 100 50 s enablelive;
            #X obj 98 71 s enablebuffer;
            #X obj 98 93 s livemode;
            #X msg 72 49 1;
            #X msg 69 71 0;
            #X msg 68 93 1;
            #X obj 225 49 s enablelive;
            #X obj 223 70 s enablebuffer;
            #X obj 223 92 s livemode;
            #X msg 197 48 0;
            #X msg 194 70 1;
            #X msg 193 92 0;
            #X connect 0 0 1 0;
            #X connect 0 0 11 0;
            #X connect 1 0 16 0;
            #X connect 1 0 17 0;
            #X connect 1 0 18 0;
            #X connect 1 1 22 0;
            #X connect 1 1 23 0;
            #X connect 1 1 24 0;
            #X connect 1 2 28 0;
            #X connect 1 2 29 0;
            #X connect 1 2 30 0;
            #X connect 3 0 2 0;
            #X connect 4 0 5 0;
            #X connect 5 0 12 0;
            #X connect 5 1 10 0;
            #X connect 6 0 7 0;
            #X connect 6 0 8 0;
            #X connect 7 0 6 1;
            #X connect 8 0 9 0;
            #X connect 8 0 2 0;
            #X connect 9 0 6 1;
            #X connect 10 0 12 0;
            #X connect 11 0 3 0;
            #X connect 11 1 4 0;
            #X connect 12 0 6 0;
            #X connect 16 0 13 0;
            #X connect 17 0 14 0;
            #X connect 18 0 15 0;
            #X connect 22 0 19 0;
            #X connect 23 0 20 0;
            #X connect 24 0 21 0;
            #X connect 28 0 25 0;
            #X connect 29 0 26 0;
            #X connect 30 0 27 0;
            #X restore 792 -152 pd modeswitch;
            #N canvas 320 70 805 554 keyscrub 0;
            #X obj 411 597 outlet~;
            #X obj 157 502 *~;
            #X text 36 -71 starting index;
            #X obj 39 151 *;
            #X obj 348 231 phasor~;
            #X obj 49 427 +~;
            #X obj 49 390 *~;
            #X obj 348 205 /;
            #X obj 339 103 t b f;
            #X obj 145 405 sig~ 1;
            #X obj 188 407 cos~;
            #X obj 173 427 -~;
            #X obj 173 449 *~ 0.5;
            #X obj 354 280 wrap~;
            #X obj 415 521 *~;
            #X obj 405 423 sig~ 1;
            #X obj 449 423 cos~;
            #X obj 435 445 -~;
            #X obj 431 469 *~ 0.5;
            #X obj 284 442 +~;
            #X obj 265 401 *~;
            #X obj 49 206 sig~;
            #X obj 355 258 +~ 0.5;
            #X obj 73 406 samphold~;
            #X obj 308 424 samphold~;
            #X obj 222 181 sig~;
            #X obj 86 374 samphold~;
            #X obj 297 380 samphold~;
            #X obj 425 71 mtof;
            #X obj 413 576 *~;
            #X obj 500 517 line~;
            #X obj 498 340 / 127;
            #X obj 489 86 select 0;
            #X obj 39 -55 touchin;
            #X obj 38 -33 / 127;
            #X obj 39 126 line;
            #X obj 230 61 line;
            #X msg 231 39 \$1 50;
            #X obj 428 48 + 9;
            #X obj 334 149 f;
            #X obj 425 94 / 44;
            #X obj -156 53 r slotlength;
            #X text 271 -2 grainsize;
            #X obj 45 -160 loadbang;
            #X msg 45 -137 4410;
            #X obj 45 -113 s maxgrain;
            #X obj 100 132 -;
            #X obj 131 109 r maxgrain;
            #X obj 225 139 *;
            #X obj 251 121 r maxgrain;
            #X msg 540 362 0 \$1;
            #X obj 556 133 f;
            #X floatatom 611 39 5 0 0 0 - - -, f 5;
            #X obj 121 194 noise~;
            #X obj 65 238 *~;
            #X obj 92 166 sig~ 1;
            #X obj 104 236 +~;
            #X msg 500 361 \$1 5;
            #X obj 289 472 tabread4~ livegrains;
            #X obj 49 471 tabread4~ livegrains;
            #X obj 66 57 i;
            #X obj 41 57 -;
            #X obj 39 34 t f f;
            #X obj 39 13 +;
            #X obj 145 -9 + 0.5;
            #X obj 227 -13 / 140;
            #X obj 230 12 + 0.1;
            #X msg 68 -11 0;
            #X obj 76 -29 b;
            #X msg 38 101 \$1 50;
            #X obj 416 149 spigot;
            #X obj 489 57 spigot;
            #X obj 519 34 r keyscrub;
            #X obj 450 129 r keyscrub;
            #X obj 439 224 s pitch;
            #X obj 304 -80 > 80;
            #X msg 307 -33 1;
            #X msg 270 -33 -1;
            #X obj 340 -7 s direction;
            #X obj 245 -46 select 1;
            #X obj 320 -52 select 1;
            #X obj 245 -73 < 50;
            #X obj 487 182 select 0;
            #X obj 539 250 s velosample;
            #X obj 436 189 spigot;
            #X obj -158 180 r slotnr;
            #X obj -118 390 r slot;
            #X obj -143 -19 r slotlengthlive;
            #X obj -98 416 spigot;
            #X obj -36 347 r enablelive;
            #X obj -85 347 spigot;
            #X obj -63 165 r enablebuffer;
            #X obj -107 126 spigot;
            #X obj -54 54 r enablebuffer;
            #X obj -74 32 spigot;
            #X obj -44 -65 r enablelive;
            #X obj 101 -56 r enablebuffer;
            #X obj 151 -37 r livepos;
            #X obj -106 239 f;
            #X obj -49 185 t f f;
            #X msg -52 414 set livegrains;
            #X obj -133 99 f;
            #X obj 2 375 t f f;
            #X obj -35 395 select 1;
            #X obj -34 -42 t f f;
            #X obj -35 -19 select 1;
            #X msg -36 4 176400;
            #X obj -54 76 t f f;
            #X obj -102 99 select 1;
            #X obj -60 212 select 1;
            #X obj 42 179 spigot;
            #X obj -119 -210 r freeze;
            #X obj -82 -151 * -1;
            #X obj -80 -124 + 1;
            #X obj -79 -72 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
            1;
            #X obj -172 -210 r mode;
            #X obj -178 -177 select 0;
            #X obj -172 -135 t b b;
            #X msg -184 -98 1;
            #X obj -78 -98 spigot;
            #X msg -137 -110 0;
            #X msg -136 -156 1;
            #X obj 120 220 *~ 0.002;
            #X obj -170 265 select 0 1 2 3;
            #X msg -170 286 set a;
            #X msg -170 308 set b;
            #X msg -170 330 set c;
            #X msg -170 349 set d;
            #X obj 447 -155 notein;
            #X msg 628 -17 50;
            #X obj 626 -67 loadbang;
            #X obj 239 -207 ctlin;
            #X obj 232 -179 pack f f f;
            #X msg 231 -157 \$3 \$2 \$1;
            #X obj 231 -136 route 1;
            #X obj 231 -114 route 19 126 127;
            #X connect 1 0 29 0;
            #X connect 3 0 110 0;
            #X connect 4 0 6 0;
            #X connect 4 0 10 0;
            #X connect 4 0 22 0;
            #X connect 4 0 23 1;
            #X connect 4 0 26 1;
            #X connect 5 0 59 0;
            #X connect 6 0 5 0;
            #X connect 7 0 4 0;
            #X connect 8 0 39 0;
            #X connect 8 1 7 1;
            #X connect 9 0 11 0;
            #X connect 10 0 11 1;
            #X connect 11 0 12 0;
            #X connect 12 0 1 1;
            #X connect 13 0 16 0;
            #X connect 13 0 20 0;
            #X connect 13 0 24 1;
            #X connect 13 0 27 1;
            #X connect 14 0 29 0;
            #X connect 15 0 17 0;
            #X connect 16 0 17 1;
            #X connect 17 0 18 0;
            #X connect 18 0 14 1;
            #X connect 19 0 58 0;
            #X connect 20 0 19 0;
            #X connect 21 0 54 0;
            #X connect 22 0 13 0;
            #X connect 23 0 5 1;
            #X connect 24 0 19 1;
            #X connect 25 0 26 0;
            #X connect 25 0 27 0;
            #X connect 26 0 6 1;
            #X connect 27 0 20 1;
            #X connect 28 0 40 0;
            #X connect 28 0 84 0;
            #X connect 29 0 0 0;
            #X connect 30 0 29 1;
            #X connect 31 0 57 0;
            #X connect 32 0 51 0;
            #X connect 32 1 31 0;
            #X connect 33 0 34 0;
            #X connect 34 0 63 0;
            #X connect 35 0 3 0;
            #X connect 36 0 8 0;
            #X connect 36 0 48 0;
            #X connect 37 0 36 0;
            #X connect 38 0 28 0;
            #X connect 39 0 7 0;
            #X connect 40 0 70 0;
            #X connect 41 0 101 0;
            #X connect 43 0 44 0;
            #X connect 44 0 45 0;
            #X connect 46 0 3 1;
            #X connect 47 0 46 1;
            #X connect 48 0 25 0;
            #X connect 49 0 48 1;
            #X connect 50 0 30 0;
            #X connect 51 0 50 0;
            #X connect 52 0 51 1;
            #X connect 53 0 122 0;
            #X connect 54 0 23 0;
            #X connect 54 0 24 0;
            #X connect 55 0 56 0;
            #X connect 56 0 54 1;
            #X connect 57 0 30 0;
            #X connect 58 0 14 0;
            #X connect 59 0 1 0;
            #X connect 60 0 61 1;
            #X connect 61 0 69 0;
            #X connect 62 0 61 0;
            #X connect 62 1 60 0;
            #X connect 63 0 62 0;
            #X connect 64 0 63 1;
            #X connect 65 0 66 0;
            #X connect 66 0 37 0;
            #X connect 67 0 63 1;
            #X connect 68 0 67 0;
            #X connect 69 0 35 0;
            #X connect 70 0 39 0;
            #X connect 71 0 32 0;
            #X connect 72 0 71 1;
            #X connect 73 0 70 1;
            #X connect 75 0 80 0;
            #X connect 76 0 78 0;
            #X connect 77 0 78 0;
            #X connect 79 0 77 0;
            #X connect 80 0 76 0;
            #X connect 81 0 79 0;
            #X connect 82 1 83 0;
            #X connect 84 0 74 0;
            #X connect 85 0 98 0;
            #X connect 86 0 88 0;
            #X connect 87 0 94 0;
            #X connect 88 0 59 0;
            #X connect 88 0 58 0;
            #X connect 89 0 102 0;
            #X connect 90 0 59 0;
            #X connect 90 0 58 0;
            #X connect 91 0 99 0;
            #X connect 92 0 46 0;
            #X connect 93 0 107 0;
            #X connect 94 0 46 0;
            #X connect 95 0 104 0;
            #X connect 96 0 68 0;
            #X connect 97 0 64 0;
            #X connect 98 0 123 0;
            #X connect 99 0 109 0;
            #X connect 99 1 90 1;
            #X connect 100 0 88 0;
            #X connect 101 0 92 0;
            #X connect 102 0 103 0;
            #X connect 102 1 88 1;
            #X connect 103 0 100 0;
            #X connect 104 0 105 0;
            #X connect 104 1 94 1;
            #X connect 105 0 106 0;
            #X connect 106 0 94 0;
            #X connect 107 0 108 0;
            #X connect 107 1 92 1;
            #X connect 108 0 101 0;
            #X connect 109 0 98 0;
            #X connect 110 0 21 0;
            #X connect 111 0 112 0;
            #X connect 112 0 113 0;
            #X connect 113 0 119 0;
            #X connect 114 0 110 1;
            #X connect 115 0 116 0;
            #X connect 116 0 117 0;
            #X connect 116 1 121 0;
            #X connect 117 0 118 0;
            #X connect 117 1 120 0;
            #X connect 118 0 114 0;
            #X connect 119 0 114 0;
            #X connect 120 0 119 1;
            #X connect 121 0 119 1;
            #X connect 122 0 56 1;
            #X connect 123 0 124 0;
            #X connect 123 1 125 0;
            #X connect 123 2 126 0;
            #X connect 123 3 127 0;
            #X connect 124 0 90 0;
            #X connect 125 0 90 0;
            #X connect 126 0 90 0;
            #X connect 127 0 90 0;
            #X connect 128 0 38 0;
            #X connect 128 1 71 0;
            #X connect 128 1 84 1;
            #X connect 128 1 82 0;
            #X connect 129 0 52 0;
            #X connect 130 0 129 0;
            #X connect 131 0 132 0;
            #X connect 131 1 132 1;
            #X connect 131 2 132 2;
            #X connect 132 0 133 0;
            #X connect 133 0 134 0;
            #X connect 134 0 135 0;
            #X connect 135 0 65 0;
            #X connect 135 0 81 0;
            #X connect 135 0 75 0;
            #X restore 321 -242 pd keyscrub;
            #X text 476 -185 4 sample playback slots reader1 to reader4;
            #X text 137 -266 playback livebuffer as "sample";
            #X text 878 -236 choose rec slot (and playback);
            #X text 865 -215 led logic \, blink when deleting slot content;
            #X text 854 -194 recording buffers;
            #X text 875 -173 record to buffer;
            #X text 396 -241 scrub buffer or live buffer with notein and aftertouch
            ;
            #X text 878 -150 switch playback mode: live/livebuffer/buffer;
            #X text 151 150 freeze/mode/record/slot;
            #X obj 229 316 f;
            #X obj 253 312 + 1;
            #X obj 272 344 select 1;
            #X msg 273 370 0;
            #X obj 322 376 select 0;
            #X obj 244 418 select 0;
            #X obj 152 445 spigot;
            #X obj 142 355 r mode;
            #X obj 138 421 == 0;
            #X obj 141 376 t b f;
            #X msg 90 396 0;
            #X obj 938 105 s mode;
            #X obj 989 65 s loop0onoff;
            #X obj 990 86 s loop1onoff;
            #X obj 989 107 s loop2onoff;
            #X obj 1069 65 s loop3onoff;
            #X obj 1070 86 s livegrainonoff;
            #X obj 1069 107 s keyplay0;
            #X obj 1070 128 s keyplay1;
            #X obj 1069 149 s keyplay2;
            #X obj 1070 170 s keyplay3;
            #X obj 1145 10 s keyscrub;
            #X msg 1101 -24 0;
            #X msg 1147 -26 1;
            #X msg 1161 -171 in 11 \, in 12 \, in 13 \, in 14 \, in 15 \, in 16
            \, in 19 \, in 20 \, in 22, f 35;
            #X obj 364 150 r bela_digitalIn15;
            #X obj 29 211 r bela_digitalIn20;
            #X obj 636 261 r bela_digitalIn11;
            #X obj 753 279 r bela_digitalIn14;
            #X obj 893 278 r bela_digitalIn19;
            #X obj 1017 269 r bela_digitalIn16;
            #X obj 1162 234 r bela_digitalIn22;
            #X obj 943 82 s init;
            #X obj 220 205 r init;
            #X obj 163 279 select 1;
            #N canvas 538 65 736 721 record 0;
            #X obj -258 -197 line~;
            #X obj -280 -162 *~;
            #X msg -184 -226 0 5;
            #X msg -245 -232 1 5;
            #X obj -166 -189 delay 5;
            #X msg -166 -150 stop;
            #X obj 21 -130 f;
            #X obj 54 -130 + 1;
            #X msg 88 -107 0;
            #X obj 21 -174 metro 1;
            #X obj -43 -97 * 44.1;
            #X obj -129 -27 f;
            #X msg -169 38 start \$1;
            #X msg 21 -218 stop;
            #X obj 88 -130 select 20000;
            #X obj 32 -34 max;
            #X obj 70 -34 f;
            #X msg 165 -169 0;
            #X obj 166 66 * 44.1;
            #X obj 166 -197 loadbang;
            #X text -125 -384 record into buffer;
            #X msg -45 145 1000;
            #X obj -1 164 /;
            #X obj -4 125 t b f;
            #X obj -126 -309 select 1 0;
            #X obj 171 -24 tabwrite bufferlen;
            #X obj 289 -78 tabread bufferlen;
            #X obj 173 -78 tabwrite pos;
            #X obj 243 7 tabread pos;
            #X obj 243 -118 t f f f f;
            #X obj -302 -271 adc~;
            #X text 226 64 phasor amplitude;
            #X text 41 163 phasor speed;
            #X obj -127 -227 b;
            #X obj 243 -146 r slotnr;
            #X obj 243 32 s recpos;
            #X obj 289 -52 s reclen;
            #X obj 94 -67 r reclen;
            #X obj -54 -168 r recpos;
            #X obj 167 88 s slotlength;
            #X obj 248 -200 r resetbuf;
            #X obj -89 16 r slotnr;
            #X floatatom 6 233 5 0 0 0 - - -, f 5;
            #X obj -124 -335 r record;
            #X obj -27 -275 s recdone;
            #X obj -192 159 tabwrite~ a;
            #X obj -92 49 select 0 1 2 3;
            #X msg -92 70 set a;
            #X msg -92 92 set b;
            #X msg -92 114 set c;
            #X msg -92 133 set d;
            #X obj -515 -132 metro 1;
            #X obj -517 -108 f;
            #X obj -487 -106 + 1;
            #X msg -459 -105 0;
            #X obj -562 -218 == 0;
            #X obj -566 -265 loadbang;
            #X msg -562 -238 0;
            #X obj -477 193 tabwrite~ livegrains;
            #X msg -334 59 stop;
            #X msg -415 59 start \$1;
            #X msg -424 11 0;
            #X obj -540 -35 f;
            #X obj -481 -3 * 44.1;
            #X obj -474 22 i;
            #X obj -573 -155 t b b;
            #X obj -583 -200 select 1 0, f 38;
            #X msg -497 -156 0;
            #X obj -609 -10 /;
            #X obj -611 -58 t f b;
            #X obj -611 -88 f;
            #X obj -609 15 s livepos;
            #X msg -393 -146 176400;
            #X obj -472 -290 table livegrains 176400;
            #X obj -514 -68 select 4000 0;
            #X msg -584 -33 4000;
            #X obj -679 153 tabwrite~ livefreeze;
            #X msg -723 102 bang;
            #X msg -772 -40 set livefreeze;
            #X obj -760 -11 s slot;
            #X obj -391 -75 s slot;
            #X msg -396 -100 set livegrains;
            #X obj -791 -94 t b b b;
            #X obj -643 81 line~;
            #X msg -683 45 1 8;
            #X msg -647 48 0 8;
            #X obj -593 116 *~;
            #X obj -717 -66 delay 92;
            #X obj -370 124 line~;
            #X msg -410 88 1 8;
            #X msg -374 91 0 8;
            #X obj -478 141 *~;
            #X obj -354 -4 delay 5;
            #X obj -790 -142 r freeze;
            #X obj -635 -216 r livemode;
            #X obj -507 -177 t b b;
            #X obj -657 -124 r recallpos;
            #X msg -839 -39 4411;
            #X obj -473 -271 table livefreeze 4411;
            #X obj -840 53 s slotlengthlive;
            #X obj -394 -123 s slotlengthlive;
            #X obj -774 -68 spigot;
            #X obj -728 -124 r mode;
            #X obj -727 -101 == 0;
            #X connect 0 0 1 1;
            #X connect 1 0 45 0;
            #X connect 2 0 0 0;
            #X connect 3 0 0 0;
            #X connect 4 0 5 0;
            #X connect 5 0 45 0;
            #X connect 6 0 7 0;
            #X connect 6 0 10 0;
            #X connect 6 0 14 0;
            #X connect 6 0 15 0;
            #X connect 6 0 27 0;
            #X connect 7 0 6 1;
            #X connect 8 0 6 0;
            #X connect 8 0 12 0;
            #X connect 9 0 6 0;
            #X connect 10 0 11 1;
            #X connect 11 0 12 0;
            #X connect 12 0 45 0;
            #X connect 13 0 9 0;
            #X connect 14 0 8 0;
            #X connect 15 0 16 0;
            #X connect 16 0 15 1;
            #X connect 16 0 18 0;
            #X connect 16 0 23 0;
            #X connect 16 0 25 0;
            #X connect 17 0 16 0;
            #X connect 17 0 6 0;
            #X connect 18 0 39 0;
            #X connect 19 0 17 0;
            #X connect 21 0 22 0;
            #X connect 22 0 42 0;
            #X connect 23 0 21 0;
            #X connect 23 1 22 1;
            #X connect 24 0 3 0;
            #X connect 24 0 33 0;
            #X connect 24 1 2 0;
            #X connect 24 1 13 0;
            #X connect 24 1 4 0;
            #X connect 24 1 44 0;
            #X connect 26 0 36 0;
            #X connect 28 0 35 0;
            #X connect 29 0 28 0;
            #X connect 29 1 27 1;
            #X connect 29 2 26 0;
            #X connect 29 3 25 1;
            #X connect 30 0 1 0;
            #X connect 30 0 86 0;
            #X connect 30 0 91 0;
            #X connect 30 1 1 0;
            #X connect 30 1 86 0;
            #X connect 30 1 91 0;
            #X connect 33 0 11 0;
            #X connect 33 0 9 0;
            #X connect 34 0 29 0;
            #X connect 37 0 16 0;
            #X connect 38 0 6 0;
            #X connect 40 0 17 0;
            #X connect 41 0 46 0;
            #X connect 43 0 24 0;
            #X connect 46 0 47 0;
            #X connect 46 1 48 0;
            #X connect 46 2 49 0;
            #X connect 46 3 50 0;
            #X connect 47 0 45 0;
            #X connect 48 0 45 0;
            #X connect 49 0 45 0;
            #X connect 50 0 45 0;
            #X connect 51 0 52 0;
            #X connect 52 0 53 0;
            #X connect 52 0 62 1;
            #X connect 52 0 70 1;
            #X connect 52 0 74 0;
            #X connect 53 0 52 1;
            #X connect 54 0 52 0;
            #X connect 55 0 66 0;
            #X connect 56 0 57 0;
            #X connect 57 0 55 0;
            #X connect 59 0 58 0;
            #X connect 60 0 58 0;
            #X connect 61 0 60 0;
            #X connect 62 0 63 0;
            #X connect 63 0 64 0;
            #X connect 64 0 60 0;
            #X connect 64 0 89 0;
            #X connect 65 0 51 0;
            #X connect 65 1 62 0;
            #X connect 66 0 65 0;
            #X connect 66 1 95 0;
            #X connect 67 0 51 0;
            #X connect 68 0 71 0;
            #X connect 69 0 68 0;
            #X connect 69 1 75 0;
            #X connect 70 0 69 0;
            #X connect 72 0 100 0;
            #X connect 74 0 54 0;
            #X connect 74 1 61 0;
            #X connect 75 0 68 1;
            #X connect 77 0 76 0;
            #X connect 78 0 79 0;
            #X connect 81 0 80 0;
            #X connect 82 0 77 0;
            #X connect 82 1 101 0;
            #X connect 82 2 84 0;
            #X connect 82 2 87 0;
            #X connect 83 0 86 1;
            #X connect 84 0 83 0;
            #X connect 85 0 83 0;
            #X connect 86 0 76 0;
            #X connect 87 0 85 0;
            #X connect 88 0 91 1;
            #X connect 89 0 88 0;
            #X connect 90 0 88 0;
            #X connect 91 0 58 0;
            #X connect 92 0 59 0;
            #X connect 93 0 82 0;
            #X connect 94 0 55 0;
            #X connect 95 0 70 0;
            #X connect 95 1 72 0;
            #X connect 95 1 81 0;
            #X connect 95 1 92 0;
            #X connect 95 1 90 0;
            #X connect 95 1 67 0;
            #X connect 96 0 70 0;
            #X connect 97 0 99 0;
            #X connect 101 0 97 0;
            #X connect 101 0 78 0;
            #X connect 102 0 103 0;
            #X connect 103 0 101 1;
            #X restore 792 -173 pd record;
            #X text 980 -173 livebuffer/freeze;
            #X connect 5 0 12 0;
            #X connect 6 0 7 0;
            #X connect 8 0 9 0;
            #X connect 8 1 5 0;
            #X connect 8 1 6 0;
            #X connect 10 0 0 0;
            #X connect 10 0 0 1;
            #X connect 11 0 0 0;
            #X connect 13 0 14 0;
            #X connect 13 1 15 0;
            #X connect 13 1 25 0;
            #X connect 16 0 19 0;
            #X connect 16 1 20 0;
            #X connect 16 1 28 0;
            #X connect 17 0 21 0;
            #X connect 17 1 22 0;
            #X connect 17 1 31 0;
            #X connect 18 0 23 0;
            #X connect 18 1 24 0;
            #X connect 18 1 34 0;
            #X connect 25 0 26 0;
            #X connect 26 0 27 0;
            #X connect 28 0 29 0;
            #X connect 29 0 30 0;
            #X connect 31 0 32 0;
            #X connect 32 0 33 0;
            #X connect 34 0 35 0;
            #X connect 35 0 36 0;
            #X connect 37 0 38 0;
            #X connect 38 0 39 0;
            #X connect 40 0 42 0;
            #X connect 40 1 37 0;
            #X connect 40 1 41 0;
            #X connect 45 0 0 1;
            #X connect 46 0 0 0;
            #X connect 47 0 0 1;
            #X connect 48 0 49 0;
            #X connect 48 0 51 0;
            #X connect 48 0 52 0;
            #X connect 48 0 56 1;
            #X connect 49 0 48 1;
            #X connect 50 0 48 1;
            #X connect 51 0 50 0;
            #X connect 53 0 55 0;
            #X connect 54 0 56 0;
            #X connect 55 0 54 0;
            #X connect 56 0 60 0;
            #X connect 56 0 61 0;
            #X connect 57 0 48 1;
            #X connect 58 0 53 0;
            #X connect 59 0 57 0;
            #X connect 60 0 59 0;
            #X connect 60 1 59 1;
            #X connect 61 0 63 0;
            #X connect 62 0 48 1;
            #X connect 63 0 62 0;
            #X connect 64 0 112 0;
            #X connect 64 0 110 0;
            #X connect 64 0 111 0;
            #X connect 66 0 13 0;
            #X connect 67 0 16 0;
            #X connect 68 0 17 0;
            #X connect 69 0 18 0;
            #X connect 70 0 40 0;
            #X connect 71 0 58 0;
            #X connect 71 0 92 0;
            #X connect 72 0 71 0;
            #X connect 73 0 122 0;
            #X connect 74 0 44 0;
            #X connect 75 0 43 0;
            #X connect 76 0 75 0;
            #X connect 78 0 0 0;
            #X connect 78 0 0 1;
            #X connect 88 0 89 0;
            #X connect 88 0 90 0;
            #X connect 88 0 4 0;
            #X connect 88 0 93 0;
            #X connect 89 0 88 1;
            #X connect 90 0 91 0;
            #X connect 91 0 88 1;
            #X connect 92 0 48 0;
            #X connect 93 0 94 0;
            #X connect 94 0 8 0;
            #X connect 95 0 97 0;
            #X connect 96 0 94 1;
            #X connect 97 0 98 0;
            #X connect 97 1 96 0;
            #X connect 98 0 88 0;
            #X connect 110 0 99 0;
            #X connect 110 0 100 0;
            #X connect 110 0 101 0;
            #X connect 110 0 102 0;
            #X connect 110 0 103 0;
            #X connect 110 0 104 0;
            #X connect 110 0 105 0;
            #X connect 110 0 106 0;
            #X connect 110 0 107 0;
            #X connect 110 0 108 0;
            #X connect 110 0 120 0;
            #X connect 111 0 109 0;
            #X connect 112 0 65 0;
            #X connect 113 0 74 0;
            #X connect 114 0 73 0;
            #X connect 115 0 66 0;
            #X connect 116 0 67 0;
            #X connect 117 0 68 0;
            #X connect 118 0 69 0;
            #X connect 119 0 70 0;
            #X connect 121 0 44 0;
            #X connect 121 0 43 0;
            #X connect 121 0 122 0;
            #X connect 121 0 92 0;
            #X connect 122 0 88 0;

            the debounce abstraction is in the previous post...

            thanks!

            haha! i got rid of the underruns by "clever" repatching :-)

            since the [until] i used was always counting from zero to 10 i replaced it with a [t b b b b b b b b b b b]

            that banged the numbers from 0 to 10, and created a counter that way. i got less underruns but still some. so i reduced the note memory to 5 notes and only needed a [t b b b b b b]... this works now without glitches.

            weird that 11 iteration on that [until] cause an underrun... what is the CPU usage of the patch normally?

            20-25%.

            i since then replaced the abstraction with one, that does not use tables and i think the underruns are related to reading/writing to the same table at the same time, could that be?

            i will post my solution later, it uses just five [f] objects to store the last 5 notes and recall them appropriately, no underruns, even with a patch that uses 45% (included a reverb)

            btw. what is the top percentage you can go to. my gut feeling says it can't be close to 100% before there are underruns...

              If you run the patch with --high-performance-mode you should get 99.9% CPU. Otherwise, it's about 75-80%. This assumes constant CPU load, that is no asynchronous events should come in. When they do, they will eat a bit more of CPU, so you need to leave headroom for that. We are probably talking 2-3% in most cases, and I am still not sure what went wrong in your case.

              lokki i since then replaced the abstraction with one, that does not use tables and i think the underruns are related to reading/writing to the same table at the same time, could that be?

              That sounds weird, I'd have to look at the heavy code to find out if this is a thing, but I cannot think of a good reason why it would be this way.

                giuliomoro When they do, they will eat a bit more of CPU, so you need to leave headroom for that. We are probably talking 2-3% in most cases, and I am still not sure what went wrong in your case.

                hmm, that is indeed very strange. the old patch (with the until and tables) sits at 20% (according to the IDE). i don't see an increase if i play a lot of midi notes, but i sure see the underruns happen, about every 2 seconds, they sometimes come in chunks (meaning 5 to 10 messages after each other) but it is always only 1 block that is dropped.

                when i added the reverb to the patch it sat at about 45% and the underruns got a lot more frequent. so midi input and until/tables seem to eat about 30-40% cpu time, which seems like a lot to me.

                yeah you wouldn't see a spike in CPU activity when the underrun takes place: CPU usage % is an average, while the underrun is caused by a spike (worst-case scenario). That is why we added the underrun indicator!

                here is my "abstraction" for mono midi mode. it remembers the five last played notes and if you release a key it will jump to the highest note held on the keyboard. a newly pressed key has always priority even if it is lower....velocity gets only updated when you release all keys and start "fresh". this feels much more natural to me, then updating the velocity on every keypress at least for mono-synth sounds.

                this works very well with heavy, and seems to be much more stable/less cpu hungry then all table based solutions i tried.

                #N canvas 0 22 744 706 10;
                #X obj 137 -667 notein;
                #X obj 125 -580 pack 0 0 0;
                #X obj 102 -282 f;
                #X obj 331 -280 f;
                #X obj 154 -283 f;
                #X obj 223 -282 f;
                #X obj 134 -623 poly 5 1;
                #X obj 285 -420 route 1 2 3 4 5;
                #X obj 292 -281 f;
                #X obj 121 -516 route 0;
                #X msg 124 -550 \$3 \$1 \$2;
                #X obj 87 -482 route 1 2 3 4 5;
                #X msg 84 -446 -1;
                #X msg 116 -446 -1;
                #X msg 149 -446 -1;
                #X msg 181 -446 -1;
                #X msg 213 -447 -1;
                #X obj 311 -180 max;
                #X obj 352 -182 f;
                #X obj 73 -417 t b f;
                #X obj 116 -417 t b f;
                #X obj 158 -416 t b f;
                #X obj 201 -416 t b f;
                #X obj 243 -416 t b f;
                #X msg 378 -239 -2;
                #X msg 288 -454 \$2 \$3;
                #X obj 121 -222 spigot;
                #X obj 192 -128 change;
                #X obj 253 -112 select -1;
                #X msg 290 -51 0;
                #X obj 302 -1 f;
                #X obj 287 -156 f;
                #X obj 299 -350 t b b b b b b b;
                #X obj 330 -527 select 0;
                #X obj 324 -29 spigot;
                #X msg 357 -70 1;
                #X msg 399 -79 bang;
                #X msg 397 -59 0;
                #X obj 166 77 outlet;
                #X text 102 77 pitch;
                #X obj 345 82 outlet;
                #X text 390 83 velocity;
                #X connect 0 0 6 0;
                #X connect 0 0 26 0;
                #X connect 0 1 6 1;
                #X connect 0 1 26 1;
                #X connect 0 1 33 0;
                #X connect 1 0 10 0;
                #X connect 2 0 17 0;
                #X connect 3 0 17 0;
                #X connect 4 0 17 0;
                #X connect 5 0 17 0;
                #X connect 6 0 1 0;
                #X connect 6 1 1 1;
                #X connect 6 2 1 2;
                #X connect 7 0 2 0;
                #X connect 7 1 4 0;
                #X connect 7 2 5 0;
                #X connect 7 3 8 0;
                #X connect 7 4 3 0;
                #X connect 8 0 17 0;
                #X connect 9 0 11 0;
                #X connect 9 1 25 0;
                #X connect 10 0 9 0;
                #X connect 11 0 12 0;
                #X connect 11 1 13 0;
                #X connect 11 2 14 0;
                #X connect 11 3 15 0;
                #X connect 11 4 16 0;
                #X connect 12 0 19 0;
                #X connect 13 0 20 0;
                #X connect 14 0 21 0;
                #X connect 15 0 22 0;
                #X connect 16 0 23 0;
                #X connect 17 0 18 0;
                #X connect 17 0 31 1;
                #X connect 18 0 17 1;
                #X connect 19 0 32 0;
                #X connect 19 1 2 0;
                #X connect 20 0 32 0;
                #X connect 20 1 4 0;
                #X connect 21 0 32 0;
                #X connect 21 1 5 0;
                #X connect 22 0 32 0;
                #X connect 22 1 8 0;
                #X connect 23 0 32 0;
                #X connect 23 1 3 0;
                #X connect 24 0 17 1;
                #X connect 25 0 7 0;
                #X connect 26 0 27 0;
                #X connect 27 0 28 0;
                #X connect 28 0 29 0;
                #X connect 28 0 35 0;
                #X connect 28 1 36 0;
                #X connect 28 1 38 0;
                #X connect 29 0 30 0;
                #X connect 30 0 40 0;
                #X connect 31 0 27 0;
                #X connect 32 0 31 0;
                #X connect 32 1 2 0;
                #X connect 32 2 4 0;
                #X connect 32 3 5 0;
                #X connect 32 4 8 0;
                #X connect 32 5 3 0;
                #X connect 32 6 24 0;
                #X connect 33 1 34 0;
                #X connect 34 0 30 0;
                #X connect 35 0 34 1;
                #X connect 36 0 37 0;
                #X connect 37 0 34 1;