モジュール java.desktop
パッケージ 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)です。
    • コンストラクタのサマリー

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

      • SYSTEM_EXCLUSIVE

        public static final int SYSTEM_EXCLUSIVE
        システム・エクスクルーシブ・メッセージのステータス・バイト(0xF0または240)です。
        関連項目:
        MidiMessage.getStatus()定数フィールド値
      • SPECIAL_SYSTEM_EXCLUSIVE

        public static final int SPECIAL_SYSTEM_EXCLUSIVE
        MIDIファイルで使われる、特別なシステム・エクスクルーシブ・メッセージのステータス・バイトです(0xF7または247)。 この値は、リアルタイム「MIDIワイヤー」プロトコルで使われるEND_OF_EXCLUSIVEと同じです。
        関連項目:
        MidiMessage.getStatus()定数フィールド値
    • コンストラクタの詳細

      • 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 - sysexメッセージに対してステータス・バイトが無効な場合
      • getData

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

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