#N canvas 542 57 1074 583 12;
#X obj 531 344 noteout;
#X obj 614 433 pgmout;
#X obj 529 433 bendout;
#X floatatom 26 488 5 0 0 0 - - - 0;
#X text 31 420 pitch bend, f 5;
#X obj 677 362 ctlout;
#X obj 698 433 touchout;
#X obj 774 433 polytouchout;
#X obj 581 66 midiin;
#X obj 923 56 sysexin;
#X obj 941 433 midiout;
#X obj 753 66 midirealtimein;
#X obj 241 460 touchin;
#X obj 340 460 polytouchin;
#X obj 26 208 notein;
#X text 79 260 velocity;
#X text 90 234 channel;
#X obj 276 209 ctlin;
#X text 307 297 value;
#X text 440 488 channel;
#X text 235 420 channel aftertouch, f 10;
#X text 341 419 polyphonic aftertouch, f 10;
#X text 372 534 aftertouch value;
#X floatatom 261 371 0 0 0 0 - - - 0;
#X text 289 372 value;
#X text 76 207 (omni);
#X obj 166 233 notein 1;
#X text 157 198 (channel 1);
#X text 320 208 (all controllers \, omni);
#X floatatom 65 365 0 0 0 0 - - - 0;
#X text 22 366 value;
#X obj 65 339 ctlin 4;
#X floatatom 111 365 0 0 0 0 - - - 0;
#X text 509 291 note;
#X text 761 367 touch;
#X text 816 381 note;
#X text 121 338 (controller 4);
#X text 709 283 value;
#X text 742 336 channel;
#X obj 850 335 ctlout 7;
#X text 884 379 Raw MIDI (doesn't take arguments \, 2nd inlet sets
port number):, f 22;
#X text 536 119 raw MIDI byte by byte (except real-time messages),
f 27;
#X text 748 120 real-time messages;
#X text 544 15 These three below are always omni \, don't take arguments
and output the port number on the right outlet:;
#X text 727 310 controller #;
#X text 323 267 controller #;
#X text 61 282 note;
#X text 159 284 note;
#X text 200 284 velocity;
#X text 409 511 note;
#X obj 26 460 bendin, f 7;
#X text 81 459 *;
#X text 584 432 *;
#X text 613 316 channel;
#X text 550 290 velocity;
#X text 903 107 system exclusive messages only \, byte by byte, f
17;
#X text 761 383 value;
#X text 335 235 channel/port;
#X text 165 212 (port 1);
#X text 139 367 channel/port;
#X obj 261 341 ctlin 7 17;
#X text 339 335 (controller 7 \, channel 1/port 2), f 17;
#X text 9 51 MIDI INPUTS: Inputs are omni by default \, an optional
argument sets the channel/port and removes the rightmost outlet (which
outputs this information). For [ctlin] \, a first optional argument
sets controller number and suppresses its corresponding outlet \, and
a second argument sets the channel and also suppresses its corresponding
outlet., f 70;
#X text 549 184 MIDI OUTPUTS: Outputs are set to channel 1 / port 1
by default \, but they also take a channel/port argument (where channels
from 17 represent port 2 \, from 33 port 3 and so on). The [ctlout]
object takes control and channel/port arguments. Inlets are not suppressed
by arguments and change the parameters., f 67;
#X text 810 268 (controller 7 \, channel/port 1), f 15;
#X obj 961 335 ctlout 3 38;
#X text 9 129 Port number is encoded as the channel number. Channels
1 to 16 are for port 1 \, channels 17 to 32 is the same as channels
1 to 16 for port 2 \, channels 33 to 48 represents channels 1 to 16
in port 3 \, and so on..., f 70;
#X text 184 459 **;
#X text 663 432 **;
#X text 536 525 ** Program change values in [pgmin] and [pgmout] are
indexed from 1 \, which means that the possible values are from 1 to
128 (not 0 to 127)!, f 70;
#X text 536 475 * Known bug: [bendin] and [bendout] are inconsistent
([bendin] outputs values from 0 to 16383 and [bendout] takes values
from -8192 to 8191) - this won't change., f 70;
#X text 32 543 updated for Pd version 0.48-2;
#X text 940 268 (controller 3 \, channel 6/port 3), f 17;
#X floatatom 26 282 4 0 127 0 - - - 0;
#X floatatom 589 316 0 1 64 0 - - - 0;
#X floatatom 529 407 5 0 0 0 - - - 0;
#X floatatom 45 259 4 0 127 0 - - - 0;
#X floatatom 166 262 4 0 127 0 - - - 0;
#X floatatom 276 296 4 0 127 0 - - - 0;
#X floatatom 292 267 4 0 127 0 - - - 0;
#X floatatom 377 510 4 0 127 0 - - - 0;
#X floatatom 340 532 4 0 127 0 - - - 0;
#X floatatom 127 488 4 0 127 0 - - - 0;
#X floatatom 241 488 4 0 127 0 - - - 0;
#X floatatom 581 95 4 0 127 0 - - - 0;
#X floatatom 753 95 4 0 127 0 - - - 0;
#X floatatom 620 95 4 0 127 0 - - - 0;
#X floatatom 923 85 4 0 127 0 - - - 0;
#X floatatom 969 85 4 0 127 0 - - - 0;
#X floatatom 848 95 4 0 127 0 - - - 0;
#X floatatom 961 308 4 0 127 0 - - - 0;
#X floatatom 850 308 4 0 127 0 - - - 0;
#X floatatom 696 309 4 0 127 0 - - - 0;
#X floatatom 677 282 4 0 127 0 - - - 0;
#X floatatom 554 316 4 0 127 0 - - - 0;
#X floatatom 516 316 4 0 127 0 - - - 0;
#X floatatom 614 407 4 0 127 0 - - - 0;
#X floatatom 698 407 4 0 127 0 - - - 0;
#X floatatom 774 407 4 0 127 0 - - - 0;
#X floatatom 814 407 4 0 127 0 - - - 0;
#X floatatom 716 335 0 1 64 0 - - - 0;
#X floatatom 308 234 0 1 64 0 - - - 0;
#X floatatom 219 261 0 1 64 0 - - - 0;
#X floatatom 65 234 0 1 64 0 - - - 0;
#X floatatom 72 488 0 1 64 0 - - - 0;
#X floatatom 287 488 0 1 64 0 - - - 0;
#X floatatom 414 488 0 1 64 0 - - - 0;
#X text 156 13 MIDI Input/Output objects;
#X text 527 159 ==========================================================================
, f 74;
#X obj 127 460 pgmin 2;
#X text 110 418 program change (channel 2), f 14;
#X text 73 509 ch;
#X text 289 508 ch;
#X text 20 509 value;
#X text 159 489 value;
#X text 233 508 value;
#X connect 8 0 84 0;
#X connect 8 1 86 0;
#X connect 9 0 87 0;
#X connect 9 1 88 0;
#X connect 11 0 85 0;
#X connect 11 1 89 0;
#X connect 12 0 83 0;
#X connect 12 1 105 0;
#X connect 13 0 81 0;
#X connect 13 1 80 0;
#X connect 13 2 106 0;
#X connect 14 0 73 0;
#X connect 14 1 76 0;
#X connect 14 2 103 0;
#X connect 17 0 78 0;
#X connect 17 1 79 0;
#X connect 17 2 101 0;
#X connect 26 0 77 0;
#X connect 26 1 102 0;
#X connect 31 0 29 0;
#X connect 31 1 32 0;
#X connect 50 0 3 0;
#X connect 50 1 104 0;
#X connect 60 0 23 0;
#X connect 74 0 0 2;
#X connect 75 0 2 0;
#X connect 90 0 65 0;
#X connect 91 0 39 0;
#X connect 92 0 5 1;
#X connect 93 0 5 0;
#X connect 94 0 0 1;
#X connect 95 0 0 0;
#X connect 96 0 1 0;
#X connect 97 0 6 0;
#X connect 98 0 7 0;
#X connect 99 0 7 1;
#X connect 100 0 5 2;
#X connect 109 0 82 0;
