// Listing 11.1 MIDI output note on/off boilerplate
// MIDI out setup, make a MidiOut object, open it on a device
MidiOut mout;
// MIDI Port (Window > Device Browser > MIDI > Output)
0 => int port;
// try to open that port, fail gracefully
if( !mout.open(port) )
{
<<< "Error: MIDI port did not open on port: ", port >>>;
me.exit();
}
// Make a MIDI msg holder for sending
MidiMsg msg;
// utility function to send MIDI out notes
fun void MIDInote(int onoff, int note, int velocity)
{
if (onoff == 0) 128 => msg.data1;
else 144 => msg.data1;
note => msg.data2;
velocity => msg.data3;
mout.send(msg);
}
// declare and initialize array of MIDI notes
[57,57,64,64,66,66,64,62,62,61,61,59,59,57] @=> int myNotes[];
// quarter note and half note durations
0.3 :: second => dur q;
0.8 :: second => dur h;
[ q, q, q, q, q, q, h, q, q, q, q, q, q, h] @=> dur myDurs[];
// loop for length of array
for (0 => int i; i < myNotes.cap(); i++)
{
MIDInote(1, myNotes[i], 100);
myDurs[i] => now;
MIDInote(0, myNotes[i], 100);
0.2 :: second => now;
}