#N canvas 267 68 876 553 12;
#X floatatom 318 379 0 0 0 0 - - -;
#X floatatom 282 468 0 0 0 0 - - -;
#X floatatom 200 469 0 0 0 0 - - -;
#X text 96 330 off;
#X floatatom 52 383 0 0 0 0 - - -;
#X floatatom 70 134 0 0 0 0 - - -;
#X obj 34 108 notein;
#X floatatom 34 134 0 0 0 0 - - -;
#X obj 52 488 noteout;
#X obj 52 462 makenote 64 250;
#X obj 52 409 metro 500;
#X msg 52 356 1;
#X msg 84 356 0;
#X text 52 333 on;
#X msg 52 436 60;
#X obj 200 496 pgmout;
#X obj 282 494 bendout;
#X floatatom 416 379 0 0 0 0 - - -;
#X floatatom 197 136 0 0 0 0 - - -;
#X floatatom 145 136 0 0 0 0 - - -;
#X text 41 79 omni;
#X floatatom 106 134 0 0 0 0 - - -;
#X obj 145 109 notein 1;
#X text 145 85 channel 1;
#X text 194 17 MIDI I/O objects;
#X text 85 54 notes;
#X text 334 47 control change;
#X text 264 69 everything;
#X floatatom 309 137 0 0 0 0 - - -;
#X floatatom 271 137 0 0 0 0 - - -;
#X floatatom 347 136 0 0 0 0 - - -;
#X obj 271 110 ctlin;
#X floatatom 440 138 0 0 0 0 - - -;
#X floatatom 396 138 0 0 0 0 - - -;
#X obj 396 111 ctlin 7;
#X text 364 71 specific controller number;
#X text 410 88 omni;
#X text 496 89 channel 1;
#X floatatom 493 140 0 0 0 0 - - -;
#X obj 493 114 ctlin 7 1;
#X obj 61 221 pgmin;
#X floatatom 97 248 0 0 0 0 - - -;
#X floatatom 61 248 0 0 0 0 - - -;
#X floatatom 197 250 0 0 0 0 - - -;
#X floatatom 161 250 0 0 0 0 - - -;
#X floatatom 307 253 0 0 0 0 - - -;
#X floatatom 272 253 0 0 0 0 - - -;
#X floatatom 382 255 0 0 0 0 - - -;
#X floatatom 343 253 0 0 0 0 - - -;
#X floatatom 420 256 0 0 0 0 - - -;
#X obj 161 222 bendin;
#X obj 272 226 touchin;
#X obj 343 227 polytouchin;
#X text 49 167 these can also take an optional channel number as argument
but by default are omni:;
#X text 32 197 program change;
#X text 155 198 pitch bend;
#X text 271 203 channel and poly aftertouch;
#X floatatom 191 380 0 0 0 0 - - -;
#X floatatom 224 380 0 0 0 0 - - -;
#X floatatom 260 382 0 0 0 0 - - -;
#X obj 191 407 ctlout;
#X obj 318 406 ctlout 7;
#X text 192 349 control out;
#X text 314 353 control 7;
#X text 409 354 control 7 \, channel 4;
#X obj 416 406 ctlout 7 4;
#X text 101 277 outputs work similarly. They all take an optional channel
as creation argument \, and ctlin takes a control number and a channel.
You get inlets to change them in any case. IF you specify no channel
\, it's channel 1;
#X floatatom 355 467 0 0 0 0 - - -;
#X floatatom 440 466 0 0 0 0 - - -;
#X obj 355 493 touchout;
#X obj 440 492 polytouchout;
#X floatatom 479 467 0 0 0 0 - - -;
#X floatatom 520 467 0 0 0 0 - - -;
#X obj 625 218 midiin;
#X floatatom 625 249 0 0 0 0 - - -;
#X floatatom 656 249 0 0 0 0 - - -;
#X floatatom 695 249 0 0 0 0 - - -;
#X floatatom 726 250 0 0 0 0 - - -;
#X text 590 155 These two are always omni and;
#X text 590 174 output the port number instead;
#X text 594 192 of the channel:;
#X obj 697 218 sysexin;
#X obj 623 472 midiout;
#X text 571 413 use this to output raw MIDI;
#X text 566 433 (the second inlet is the port;
#X text 569 451 number.);
#X text 625 514 updated for Pd release 0.33;
#X connect 0 0 61 0;
#X connect 1 0 16 0;
#X connect 2 0 15 0;
#X connect 4 0 10 0;
#X connect 6 0 7 0;
#X connect 6 1 5 0;
#X connect 6 2 21 0;
#X connect 9 0 8 0;
#X connect 9 1 8 1;
#X connect 10 0 14 0;
#X connect 11 0 4 0;
#X connect 12 0 4 0;
#X connect 14 0 9 0;
#X connect 17 0 65 0;
#X connect 22 0 19 0;
#X connect 22 1 18 0;
#X connect 31 0 29 0;
#X connect 31 1 28 0;
#X connect 31 2 30 0;
#X connect 34 0 33 0;
#X connect 34 1 32 0;
#X connect 39 0 38 0;
#X connect 40 0 42 0;
#X connect 40 1 41 0;
#X connect 50 0 44 0;
#X connect 50 1 43 0;
#X connect 51 0 46 0;
#X connect 51 1 45 0;
#X connect 52 0 48 0;
#X connect 52 1 47 0;
#X connect 52 2 49 0;
#X connect 57 0 60 0;
#X connect 58 0 60 1;
#X connect 59 0 60 2;
#X connect 67 0 69 0;
#X connect 68 0 70 0;
#X connect 71 0 70 1;
#X connect 72 0 70 2;
#X connect 73 0 74 0;
#X connect 73 1 75 0;
#X connect 81 0 76 0;
#X connect 81 1 77 0;
