JavaTM Platform
Standard Ed. 6

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 - ステータスバイトなどの、配列内の有効な メッセージデータの長さ
例外:
InvalidMidiDataException

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()
このオブジェクトと同じクラスで、同じ内容の新しいオブジェクトを作成します。

定義:
クラス MidiMessage 内の clone
戻り値:
このインスタンスの複製
関連項目:
Cloneable

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。