#N canvas 135 23 1051 575 12;
#X floatatom 830 288 0 0 0 0 - - -;
#X floatatom 545 422 0 0 0 0 - - -;
#X floatatom 623 421 0 0 0 0 - - -;
#X obj 518 333 noteout;
#X obj 623 448 pgmout;
#X obj 545 448 bendout;
#X floatatom 951 288 0 0 0 0 - - -;
#X text 173 10 MIDI I/O objects;
#X obj 125 405 pgmin;
#X floatatom 157 432 0 0 0 0 - - -;
#X floatatom 125 432 0 0 0 0 - - -;
#X floatatom 68 433 0 0 0 0 - - -;
#X floatatom 22 433 5 0 0 0 - - -, f 5;
#X floatatom 252 432 0 0 0 0 - - -;
#X floatatom 206 432 0 0 0 0 - - -;
#X floatatom 342 453 0 0 0 0 - - -;
#X floatatom 305 474 0 0 0 0 - - -;
#X floatatom 379 430 2 0 0 0 - - -, f 2;
#X text 119 365 program change, f 7;
#X text 27 365 pitch bend, f 5;
#X floatatom 667 270 3 0 0 0 - - -, f 3;
#X floatatom 686 299 3 0 0 0 - - -, f 3;
#X floatatom 706 327 2 0 0 0 - - -, f 2;
#X obj 667 354 ctlout;
#X obj 951 315 ctlout 7 4;
#X floatatom 680 422 0 0 0 0 - - -;
#X floatatom 751 422 0 0 0 0 - - -;
#X obj 680 448 touchout;
#X obj 751 448 polytouchout;
#X floatatom 791 420 0 0 0 0 - - -;
#X obj 569 71 midiin;
#X floatatom 569 100 0 0 0 0 - - -;
#X floatatom 891 100 0 0 0 0 - - -;
#X obj 891 71 sysexin;
#X obj 946 473 midiout;
#X floatatom 749 100 0 0 0 0 - - -;
#X obj 749 71 midirealtimein;
#X obj 206 405 touchin;
#X obj 305 403 polytouchin;
#X floatatom 41 206 0 0 0 0 - - -;
#X obj 22 155 notein;
#X floatatom 22 229 0 0 0 0 - - -;
#X floatatom 61 181 0 0 0 0 - - -;
#X text 71 207 velocity;
#X text 90 183 channel;
#X floatatom 288 214 0 0 0 0 - - -;
#X floatatom 272 243 0 0 0 0 - - -;
#X floatatom 304 181 0 0 0 0 - - -;
#X obj 272 156 ctlin;
#X text 303 244 value;
#X text 335 182 channel;
#X text 398 431 channel;
#X text 199 365 channel aftertouch, f 10;
#X text 306 360 polyphonic aftertouch, f 10;
#X text 336 476 aftertouch value;
#X floatatom 258 316 0 0 0 0 - - -;
#X text 286 317 value;
#X obj 258 286 ctlin 7 4;
#X text 72 154 (omni);
#X floatatom 215 208 0 0 0 0 - - -;
#X floatatom 162 209 0 0 0 0 - - -;
#X obj 162 180 notein 1;
#X text 153 155 (channel 1);
#X text 316 155 (all controllers \, omni);
#X floatatom 61 310 0 0 0 0 - - -;
#X text 18 311 value;
#X obj 61 284 ctlin 4;
#X floatatom 107 310 0 0 0 0 - - -;
#X floatatom 503 305 3 0 0 0 - - -, f 3;
#X floatatom 541 305 3 0 0 0 - - -, f 3;
#X floatatom 576 305 2 0 0 0 - - -, f 2;
#X text 496 280 note;
#X text 738 383 touch;
#X text 793 396 note;
#X text 117 283 (controller 4);
#X text 135 312 channel, f 8;
#X text 334 284 (controller 7 \, channel 4), f 14;
#X text 696 271 value;
#X text 725 328 channel;
#X obj 830 315 ctlout 7;
#X text 822 341 (controller 7 \, channel 1), f 14;
#X text 939 341 (controller 7 \, channel 4), f 14;
#X text 878 408 Raw MIDI (doesn't take arguments \, 2nd inlet sets
port number):, f 22;
#X text 524 124 raw MIDI byte by byte (except real-time messages),
f 27;
#X text 743 124 real-time messages, f 9;
#X text 532 15 These three below are always omni \, don't take arguments
and output the port number on the right outlet:;
#X text 21 526 updated for Pd release 0.48-2;
#X text 710 300 controller #;
#X text 319 214 controller #;
#X text 52 229 note;
#X text 155 231 note;
#X text 196 231 velocity;
#X text 371 455 note;
#X obj 22 405 bendin, f 7;
#X text 77 406 *;
#X text 600 451 *;
#X text 402 516 * Known bug: [bendin] and [bendout] are inconsistent.
While [bendin] outputs values from 0 to 16383 \, [bendout] takes values
from -8192 to 8191 - this won't change.;
#X text 593 305 channel;
#X text 537 279 velocity;
#X text 883 124 system exclusive messages only \, byte by byte, f
17;
#X text 506 174 ========================================================================
, f 72;
#X text 530 197 MIDI OUTPUTS: Outputs are set to channel 1 by default
\, but they also take a channel argument \, but [ctlout] takes control
and channel arguments. Inlets are not supressed by arguments and change
the parameters., f 65;
#X text 32 41 MIDI INPUTS: Inputs are omni by default \, an optional
argument sets the channel and removes the rightmost outlet (which ouputs
the channel number). For [ctlin] \, a first optional argument sets
controller number and supresses its corresponding outlet \, and a second
argument sets the channel and also supresses its corresponding outlet.
;
#X text 738 398 value;
#X connect 0 0 79 0;
#X connect 1 0 5 0;
#X connect 2 0 4 0;
#X connect 6 0 24 0;
#X connect 8 0 10 0;
#X connect 8 1 9 0;
#X connect 20 0 23 0;
#X connect 21 0 23 1;
#X connect 22 0 23 2;
#X connect 25 0 27 0;
#X connect 26 0 28 0;
#X connect 29 0 28 1;
#X connect 30 0 31 0;
#X connect 33 0 32 0;
#X connect 36 0 35 0;
#X connect 37 0 14 0;
#X connect 37 1 13 0;
#X connect 38 0 16 0;
#X connect 38 1 15 0;
#X connect 38 2 17 0;
#X connect 40 0 41 0;
#X connect 40 1 39 0;
#X connect 40 2 42 0;
#X connect 48 0 46 0;
#X connect 48 1 45 0;
#X connect 48 2 47 0;
#X connect 57 0 55 0;
#X connect 61 0 60 0;
#X connect 61 1 59 0;
#X connect 66 0 64 0;
#X connect 66 1 67 0;
#X connect 68 0 3 0;
#X connect 69 0 3 1;
#X connect 70 0 3 2;
#X connect 93 0 12 0;
#X connect 93 1 11 0;
