モジュール 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ワイヤー・プロトコルでは送信されません。

  • フィールドのサマリー

    フィールド 
    修飾子と型 フィールド 説明
    static int SPECIAL_SYSTEM_EXCLUSIVE
    MIDIファイルで使われる、特別なシステム・エクスクルーシブ・メッセージのステータス・バイトです(0xF7または247)。
    static int SYSTEM_EXCLUSIVE
    システム・エクスクルーシブ・メッセージのステータス・バイト(0xF0または240)です。

    クラス javax.sound.midi.MidiMessageで宣言されたフィールド

    data, length
  • コンストラクタのサマリー

    コンストラクタ 
    修飾子 コンストラクタ 説明
      SysexMessage()
    新しいSysexMessageを構築します。
    protected SysexMessage​(byte[] data)
    新しいSysexMessageを構築します。
      SysexMessage​(byte[] data, int length)
    新しいSysexMessageを構築し、メッセージのデータを設定します。
      SysexMessage​(int status, byte[] data, int length)
    新しいSysexMessageを構築し、メッセージのデータを設定します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    Object clone()
    このオブジェクトと同じクラスで、同じ内容の新しいオブジェクトを作成します。
    byte[] getData()
    システム・エクスクルーシブ・メッセージのデータのコピーを取得します。
    void setMessage​(byte[] data, int length)
    システム・エクスクルーシブ・メッセージのデータを設定します。
    void setMessage​(int status, byte[] data, int length)
    システム・エクスクルーシブ・メッセージのデータを設定します。

    クラス javax.sound.midi.MidiMessageで宣言されたメソッド

    getLength, getMessage, getStatus

    クラス java.lang.Objectで宣言されたメソッド

    equalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait
  • フィールド詳細

  • コンストラクタの詳細

    • SysexMessage

      public SysexMessage()
      新しいSysexMessageを構築します。 新しいメッセージの内容には、有効なMIDIメッセージが指定されることが保証されます。 構築後にメッセージの内容を設定するには、setMessageメソッドの1つを使用します。
      関連項目:
      setMessage(byte[], int)
    • SysexMessage

      public SysexMessage​(byte[] data, int length) throws InvalidMidiDataException
      新しいSysexMessageを構築し、メッセージのデータを設定します。 データ配列の先頭のバイトは、有効なシステム・エクスクルーシブ・ステータス・バイト(0xF0または0xF7)である必要があります。 メッセージの内容は、setMessageメソッドの1つを使用して変更できます。
      パラメータ:
      data - ステータス・バイトを含むシステム・エクスクルーシブ・メッセージ・データ
      length - 配列内の有効なメッセージ・データの長さ(ステータス・バイトを含む)。負でない、data.length以下の数値
      例外:
      InvalidMidiDataException - パラメータ値が有効なMIDIメタ・メッセージを指定していない場合
      導入されたバージョン:
      1.7
      関連項目:
      setMessage(byte[], int), setMessage(int, byte[], int), getData()
    • SysexMessage

      public SysexMessage​(int status, byte[] data, int length) throws InvalidMidiDataException
      新しいSysexMessageを構築し、メッセージのデータを設定します。 メッセージの内容は、setMessageメソッドの1つを使用して変更できます。
      パラメータ:
      status - メッセージのステータス・バイト。システム・エクスクルーシブの有効なステータス・バイト(0xF0または0xF7)である必要があります
      data - システム・エクスクルーシブ・メッセージのデータ(ステータス・バイトを除く)
      length - 配列内の有効なメッセージ・データの長さ。負でない、data.length以下の数値
      例外:
      InvalidMidiDataException - パラメータ値が有効なMIDIシステム排他メッセージを指定していない場合
      導入されたバージョン:
      1.7
      関連項目:
      setMessage(byte[], int), setMessage(int, byte[], int), getData()
    • SysexMessage

      protected SysexMessage​(byte[] data)
      新しいSysexMessageを構築します。
      パラメータ:
      data - 詳細なメッセージを含むバイトの配列。 メッセージ・データはsetMessageメソッドを使って変更できる。
      関連項目:
      setMessage(byte[], int)
  • メソッドの詳細

    • setMessage

      public void setMessage​(byte[] data, int length) throws InvalidMidiDataException
      システム・エクスクルーシブ・メッセージのデータを設定します。 データ配列の先頭のバイトは、有効なシステム・エクスクルーシブ・ステータス・バイト(0xF0または0xF7)である必要があります。
      オーバーライド:
      setMessage、クラス: MidiMessage
      パラメータ:
      data - システム・エクスクルーシブ・メッセージのデータ
      length - ステータス・バイトを含む配列内の有効なメッセージ・データの長さ
      例外:
      InvalidMidiDataException - パラメータ値が有効なMIDIシステム排他メッセージを指定していない場合
    • setMessage

      public void setMessage​(int status, byte[] data, int length) throws InvalidMidiDataException
      システム・エクスクルーシブ・メッセージのデータを設定します。
      パラメータ:
      status - メッセージのステータス・バイト(0xF0または0xF7)
      data - システム・エクスクルーシブ・メッセージのデータ
      length - 配列内の有効なメッセージ・データの長さ
      例外:
      InvalidMidiDataException - ステータス・バイトがシステム排他メッセージに対して無効である場合
    • getData

      public byte[] getData()
      システム・エクスクルーシブ・メッセージのデータのコピーを取得します。 返されるバイトの配列に、ステータス・バイトは含まれません。
      戻り値:
      システム・エクスクルーシブ・メッセージ・データを含む配列
    • clone

      public Object clone()
      このオブジェクトと同じクラスで、同じ内容の新しいオブジェクトを作成します。
      定義:
      clone、クラス: MidiMessage
      戻り値:
      このインスタンスの複製
      関連項目:
      Cloneable