MIDIでは、ステータスバイトでメッセージの種類を指定し、データバイトでメッセージに対するパラメータを指定します。ただし、ステータスバイトは必ず最上位ビットが1、データバイトの最上位ビットは必ず0という制約があります。よって、データバイトは実質的に7ビットの範囲0~127までしか表現できません。ステータスバイトを表す定数はMidiMessageクラスの静的なフィールドで宣言されています。これを利用してもよいでしょう。MIDIメッセージの詳細は後述します。

これまでの内容を要約すると、Receiverインタフェースのsend()メソッドにMidiMessageオブジェクトを渡すことで、メッセージをMIDIデバイスに送信できます。ではReceiverオブジェクトはどのように取得すれば良いのでしょうか。方法はいくつかありますが、もっとも簡単なのはJavaを実行しているシステムのMIDI関連リソースへのアクセスを提供するjavax.sound.midi.MidiSystemクラスを利用する方法です。

javax.sound.midi.MidiSystem クラス

public class MidiSystem extends Object

このクラスは、認識可能なシステムにインストールされているMIDIデバイスへのアクセスを提供する静的なメソッドをコレクションしています。このクラスのメソッドからインストールされているMIDIデバイスの一覧などを取得することも可能ですが、システムに設定されているデフォルトのReceiverを返すgetReceiver()メソッドを使うと便利です。

MidiSystem クラス getReceiver() メソッド

public static Receiver getReceiver() throws MidiUnavailableException

通常、MIDI デバイスを取得して、関連するシステムリソースを割り当てるためにデバイスを開く処理などが必要になりますが、このメソッドはReceiverオブジェクトを既に開かれた状態で返すため、特別な初期化処理は必要ありません。すぐに利用することが可能です。