JavaTM 2 Platform
Std. Ed. v1.3

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 つがあります。

MIDI ワイヤプロトコルを使って受信されたシステムエクスクルーシブデータが Java Sound によって処理されると、データは 1 つ以上の SysexMessages に配置されます。この場合、システムエクスクルーシブデータの長さは事前にはわかりません。システムエクスクルーシブデータの終わりは、MIDI ワイヤバイトストリームのエンドオブエクスクルーシブフラグ (0xF7) で表わされています。

特定のシステムエクスクルーシブメッセージのデータを収めた最初の 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 を構築します。
 
メソッドの概要
 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 から継承したメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

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

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

setMessage

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

setMessage

public void setMessage(int status,
                       byte[] data,
                       int length)
                throws InvalidMidiDataException
システムエクスクルーシブメッセージのデータを設定します。
パラメータ:
status - メッセージのステータスバイト (0xF0 または 0xF7)
data - システムエクスクルーシブメッセージのデータ
length - 配列内の有効なメッセージデータの長さ

getData

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

clone

public Object clone()
このオブジェクトとクラスおよび内容が同じ新しいオブジェクトを作成します。
オーバーライド:
クラス MidiMessage 内の clone
戻り値:
このインスタンスの複製

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.