モジュール java.desktop
パッケージ javax.sound.midi

クラスSysexMessage

java.lang.Object
javax.sound.midi.MidiMessage
javax.sound.midi.SysexMessage
すべての実装されたインタフェース:
Cloneable

public class SysexMessage extends MidiMessage
SysexMessageオブジェクトは、MIDIシステム・エクスクルーシブ・メッセージを表します。

MIDIファイルから読み込まれるシステム・エクスクルーシブ・メッセージには、必ず長さが定義されています。 MIDIファイルから読み込まれるシステム・エクスクルーシブ・メッセージのデータは、システム・エクスクルーシブ・メッセージ・ステータス・バイト(0xF0または0xF7)、すべてのメッセージ・データ・バイト、最後にエンドオブエクスクルーシブ・フラグ(0xF7)の順にSysexMessageのデータ配列に格納されます。 そのため、SysexMessageオブジェクトが報告する長さは、システム・エクスクルーシブ・データの長さにステータス・バイトの1バイトとエンドオブエクスクルーシブ・フラグの1バイトの合計2バイトを加えた長さになります。

標準MIDIファイル仕様の規定では、MIDIファイルから読み込まれるSysexMessageのステータス・バイトの正当な値には次の2つがあります。

  • 0xF0: システム・エクスクルーシブ・メッセージ(MIDIワイヤー・プロトコルでの場合と同じ)
  • 0xF7: 特別なシステム・エクスクルーシブ・メッセージ
MIDIワイヤー・プロトコルを使用して受信されたシステム・エクスクルーシブ・データがJava Soundによって使用されると、データは1つ以上のSysexMessagesに配置されます。 この場合、システム・エクスクルーシブ・データの長さは事前にはわかりません。システム・エクスクルーシブ・データの終わりは、MIDIワイヤー・バイト・ストリームのエンドオブエクスクルーシブ・フラグ(0xF7)でマークされています。
  • 0xF0: システム・エクスクルーシブ・メッセージ(MIDIワイヤー・プロトコルでの場合と同じ)
  • 0xF7: エンド・オブ・エクスクルーシブ(EOX)
特定のシステム・エクスクルーシブ・メッセージのデータが含まれる最初のSysexMessageオブジェクトは、状態値が0xF0です。 このメッセージに、そのすべてのシステム・エクスクルーシブ・データが含まれている場合、その末尾はステータス・バイト0xF7 (EOX)です。 それ以外の場合は、状態値が0xF7の1つ以上のSysexMessagesで追加のシステム・エクスクルーシブ・データが送信されます。 そのシステム・エクスクルーシブ・メッセージのデータの末尾が含まれているSysexMessageは、末尾の値がシステム・エクスクルーシブ・メッセージの終わりを表す0xF7 (EOX)です。

SysexMessagesオブジェクトからのシステム・エクスクルーシブ・データがMIDIワイヤー・プロトコルで転送される場合は、先頭の0xF0ステータス・バイト、システム・エクスクルーシブ・データ自体、および末尾の0xF7 (EOX)バイトだけが送信されます。SysexMessageに追加のシステム・エクスクルーシブ・データが含まれていることを示す0xF7ステータス・バイトは、MIDIワイヤー・プロトコルでは送信されません。