MIDIPacketの作成

Core MIDIでは送信するMIDIデータをMIDIPacket構造体に詰めて送りますが、パケットデータに具体的にどんな値を指定するのかといったMIDIの仕様に関わる部分は、Appleのドキュメントには載っていないみたい。
とりあえずノートオン/オフ、コントロールチェンジ、ピッチベンドについては、以下の方法で送れました。

Note On

MIDIPacket packet;
packet.timeStamp = 0;
packet.length = 3;
packet.data[0] = 0x90;
packet.data[1] = noteNum;//ノートナンバー
packet.data[2] = 100;//ノートオンベロシティ

Note Off

MIDIPacket packet;
packet.timeStamp = 0;
packet.length = 3;
packet.data[0] = 0x80;
packet.data[1] = noteNum;//ノートナンバー
packet.data[2] = 0x00;//ノートオフベロシティ

Control Change

MIDIPacket packet;
packet.timeStamp = 0;
packet.length = 3;
packet.data[0] = 0xB0;
packet.data[1] = ccNum;//CCナンバー
packet.data[2] = ccValue;//値

Pitch Bend

//valueは0から16383の範囲
//中間値である8192は[LSB:0, MSB:64]になる
int LSB = value & (0x7F);//下位7bit
int MSB = value >> 7;//上位7bit

MIDIPacket packet;
packet.timeStamp = 0;
packet.length = 3;
packet.data[0] = 0xE0;
packet.data[1] = LSB;//パケットはLSB - MSBの順
packet.data[2] = MSB;
広告を非表示にする