インタフェースSequencer
- すべてのスーパー・インタフェース:
AutoCloseable,MidiDevice
sequenceを再生するハードウェアまたはソフトウェア・デバイスは、sequencerとして知られています。 MIDIシーケンスには、標準MIDIファイルから読み込まれたデータなどの、タイムスタンプの付いたMIDIデータのリストが含まれます。 ほとんどのシーケンサは、シーケンスを作成し編集する機能も提供します。
Sequencerインタフェースには、次のような基本的なMIDIシーケンサ操作のメソッドが含まれます。
- MIDIデータ・ファイルからのシーケンスの取得
- 再生の開始と停止
- シーケンス上の任意の位置への移動
- 再生のテンポ(スピード)の変更
- 内部クロックまたは受信したMIDIメッセージへの再生の同期化
- ほかのデバイスのタイミングの制御
Sequencerがアクセスできるオブジェクトを通じて間接的に、次の操作もサポートされます。
- 個々のMIDIイベントまたはトラック全体の追加または削除によるデータの編集
- シーケンスの個々のトラックのミュート化またはソロ化
- シーケンスの再生中に発生したメタイベントまたは制御変更イベントに関するオブジェクトの、リスナーへの通知
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型インタフェース説明static classSyncModeオブジェクトは、MIDIシーケンサで扱われている時間をマスターまたはスレーブ・デバイスと同期化する方法の1つを表します。インタフェースjavax.sound.midi.MidiDeviceで宣言されたネストされたクラス/インタフェース
MidiDevice.Info -
フィールドのサマリー
フィールド -
メソッドのサマリー
修飾子と型メソッド説明int[]addControllerEventListener(ControllerEventListener listener, int[] controllers) 要求された種類の制御変更イベントをシーケンサが処理するときに通知を受け取るためのコントローラ・イベント・リスナーを登録します。booleanaddMetaEventListener(MetaEventListener listener) メタイベントがシーケンスで発生してシーケンサによって処理されるときに通知を受け取るためメタイベント・リスナーを登録します。int再生の反復数を取得します。longループの終点を取得します(MIDIティック単位)。longループの始点を取得します(MIDIティック単位)。このシーケンサの現在のマスター同期モードを取得します。このシーケンサがサポートするマスター同期モードのセットを取得します。longマイクロ秒で表した現在のシーケンスの長さを取得します。シーケンスが設定されていない場合は、0が返されます。longシーケンス上の現在の位置をマイクロ秒単位で取得します。シーケンサが現在操作しているシーケンスを取得します。このシーケンサの現在のスレーブ同期モードを取得します。シーケンサがサポートするスレーブ同期モードのセットを取得します。floatシーケンサの現在のテンポ係数を返します。float1分当たりのビートで表示される現在のテンポを取得します。float四分音符当たりのマイクロ秒で表示される現在のテンポを取得します。longMIDIティックで表した現在のシーケンスの長さを取得します。シーケンスが設定されていない場合は、0が返されます。longシーケンスの現在の位置をMIDIティック単位で取得します。booleangetTrackMute(int track) トラックの現在のミュート状態を取得します。booleangetTrackSolo(int track) トラックの現在のソロ状態を取得します。booleanシーケンサが現在録音中かどうかを示します。booleanシーケンサが現在実行中かどうかを示します。voidrecordDisable(Track track) 指定されたトラックへの録音を不可にします。voidrecordEnable(Track track, int channel) 指定されたトラックに、特定のチャネルで受信するイベントを録音する準備をします。int[]removeControllerEventListener(ControllerEventListener listener, int[] controllers) 1つ以上の種類のコントローラ・イベントについて、コントローラ・イベント・リスナーの処理対象を削除します。voidremoveMetaEventListener(MetaEventListener listener) 実際にリスナーが登録された場合、このシーケンサの登録済みリスナーのリストから指定されたメタイベント・リスナーを削除します。voidsetLoopCount(int count) ループを再生する反復回数を設定します。voidsetLoopEndPoint(long tick) ループで最後に再生されるMIDIティックを設定します。voidsetLoopStartPoint(long tick) ループで再生する最初のMIDIティックを設定します。voidこのシーケンサが使用するタイミング情報のソースを設定します。voidsetMicrosecondPosition(long microseconds) シーケンス上の現在の位置をマイクロ秒単位で設定します。voidsetSequence(InputStream stream) シーケンサが操作する現在のシーケンスを設定します。voidsetSequence(Sequence sequence) シーケンサが操作する現在のシーケンスを設定します。voidシーケンサのスレーブ同期モードを設定します。voidsetTempoFactor(float factor) 指定された係数によりシーケンサの実際の再生テンポをスケーリングします。voidsetTempoInBPM(float bpm) テンポを1分当たりのビートで設定します。voidsetTempoInMPQ(float mpq) テンポを四分音符当たりのマイクロ秒で設定します。voidsetTickPosition(long tick) 現在のシーケンサの位置をMIDIティックで設定します。voidsetTrackMute(int track, boolean mute) トラックのミュート状態を設定します。voidsetTrackSolo(int track, boolean solo) トラックのソロ状態を設定します。voidstart()現在ロードされているシーケンスのMIDIデータの再生を開始します。voidMIDIデータの録音および再生を開始します。voidstop()アクティブの場合録音を停止し、現在ロードされているシーケンスがあれば、その再生を停止します。voidアクティブの場合録音を停止します。インタフェースjavax.sound.midi.MidiDeviceで宣言されたメソッド
close, getDeviceInfo, getMaxReceivers, getMaxTransmitters, getReceiver, getReceivers, getTransmitter, getTransmitters, isOpen, open
-
フィールド詳細
-
LOOP_CONTINUOUSLY
static final int LOOP_CONTINUOUSLYループは特定回数くり返し実行されたあとで終了するのではなく無制限に継続することを示す値。- 導入されたバージョン:
- 1.5
- 関連項目:
-
-
メソッドの詳細
-
setSequence
void setSequence(Sequence sequence) throws InvalidMidiDataException シーケンサが操作する現在のシーケンスを設定します。このメソッドは、
Sequencerが閉じている場合でも呼び出すことができます。- パラメータ:
sequence- ロードするシーケンス- スロー:
InvalidMidiDataException- シーケンスが無効なMIDIデータを含んでいるか、シーケンスがサポートされていない場合
-
setSequence
void setSequence(InputStream stream) throws IOException, InvalidMidiDataException シーケンサが操作する現在のシーケンスを設定します。 ストリームはMIDIファイル・データを示す必要があります。このメソッドは、
Sequencerが閉じている場合でも呼び出すことができます。- パラメータ:
stream- MIDIファイル・データを含むストリーム- スロー:
IOException- ストリームの読込み中に入出力例外が発生した場合InvalidMidiDataException- ストリームで無効なデータが発生したか、またはストリームがサポートされていない場合
-
getSequence
Sequence getSequence()シーケンサが現在操作しているシーケンスを取得します。このメソッドは、
Sequencerが閉じている場合でも呼び出すことができます。- 戻り値:
- 現在のシーケンス、またはシーケンスが現在設定されていない場合は
null
-
start
void start()現在ロードされているシーケンスのMIDIデータの再生を開始します。 再生は現在の位置から始まります。 再生位置がループの終点に達したときにループ・カウントが1以上の場合には、ループの始点から再生が再開され、これがsetLoopCountで設定された反復数だけ繰り返されます。 その反復の後、またはループ・カウントが0のとき、再生はシーケンスの終わりまで続行されます。この実装により、適切なコントローラ、ピッチ・ベンド、およびプログラム変更イベントが送信されます。この結果、ループの始点に移動したときにシンセサイザの状態の一貫性が保証されます。
- スロー:
IllegalStateException-Sequencerが閉じている場合- 関連項目:
-
stop
void stop()アクティブの場合録音を停止し、現在ロードされているシーケンスがあれば、その再生を停止します。- スロー:
IllegalStateException-Sequencerが閉じている場合- 関連項目:
-
isRunning
boolean isRunning()シーケンサが現在実行中かどうかを示します。 デフォルトは「false」です。 シーケンサは、start()またはstartRecording()がコールされると実行を開始します。isRunningは、順序の再生が完了するか、stop()がコールされるまで、trueを返します。- 戻り値:
- シーケンサが実行中の場合は
true、そうでない場合はfalse
-
startRecording
void startRecording()MIDIデータの録音および再生を開始します。 データは、トラックが使用可能になっているチャネルの、使用可能な全トラックに録音されます。 録音はシーケンサの現在の位置から開始されます。 すでにトラックにあるイベントは録音セッション中に上書きされます。 現在ロードされているシーケンスからのイベントがあれば、そのイベントは録音中に受信するメッセージと一緒にシーケンサのトランスミッタに配信されます。トラックはデフォルトでは録音可能になっていません。 MIDIデータを録音するためには、少なくとも1つのトラックが具体的に録音可能になっている必要があります。
- スロー:
IllegalStateException-Sequencerが閉じている場合- 関連項目:
-
stopRecording
void stopRecording()アクティブの場合録音を停止します。 現在のシーケンスの再生は継続します。- スロー:
IllegalStateException-Sequencerが閉じている場合- 関連項目:
-
isRecording
boolean isRecording()シーケンサが現在録音中かどうかを示します。 デフォルトは「false」です。 シーケンサは、startRecording()がコールされると記録を開始し、stop()またはstopRecording()がコールされるまでtrueを返します。- 戻り値:
- シーケンサが録音中の場合は
true、そうでない場合はfalse
-
recordEnable
void recordEnable(Track track, int channel) 指定されたトラックに、特定のチャネルで受信するイベントを録音する準備をします。 トラックを使用可能にしておくと、録音がアクティブになったときにイベントを受信します。- パラメータ:
track- イベントが録音されるトラックchannel- イベントが受信されるチャネル。 チャネル値に -1が指定されている場合、トラックは全チャネルからのデータを受信する。- スロー:
IllegalArgumentException- トラックが現在のシーケンスの一部でない場合、スローされる
-
recordDisable
void recordDisable(Track track) 指定されたトラックへの録音を不可にします。 それ以降のイベントはこのトラックには録音されません。- パラメータ:
track- 録音を不可にするトラック、または全トラックを録音不可にする場合はnull
-
getTempoInBPM
float getTempoInBPM()1分当たりのビートで表示される現在のテンポを取得します。 再生の実際のテンポは、戻り値およびテンポ係数で決まります。- 戻り値:
- 1分当たりのビートで表示される現在のテンポ
- 関連項目:
-
setTempoInBPM
void setTempoInBPM(float bpm) テンポを1分当たりのビートで設定します。 再生の実際のテンポは、指定された値およびテンポ係数で決まります。- パラメータ:
bpm- 1分当たりのビートで表される目的の新たなテンポ- 関連項目:
-
getTempoInMPQ
float getTempoInMPQ()四分音符当たりのマイクロ秒で表示される現在のテンポを取得します。 再生の実際のテンポは、戻り値およびテンポ係数で決まります。- 戻り値:
- 四分音符当たりのマイクロ秒で表示される現在のテンポ
- 関連項目:
-
setTempoInMPQ
void setTempoInMPQ(float mpq) テンポを四分音符当たりのマイクロ秒で設定します。 再生の実際のテンポは、指定された値およびテンポ係数で決まります。- パラメータ:
mpq- 四分音符当たりのマイクロ秒で表される目的の新たなテンポ- 関連項目:
-
setTempoFactor
void setTempoFactor(float factor) 指定された係数によりシーケンサの実際の再生テンポをスケーリングします。 デフォルトは1.0です。 1.0の値は自然レート(シーケンスで指定されたテンポ)を表し、2.0は2倍の速度を意味します。テンポ係数は、getTempoInMPQ()およびgetTempoInBPM()によって戻される値には影響しません。 これらの値はスケーリング前のテンポを示します。外部同期が使用されている場合はテンポ係数は調整できません。 その場合、
setTempoFactorはテンポ係数を常に1.0に設定します。- パラメータ:
factor- 要求されたテンポ・スカラー- 関連項目:
-
getTempoFactor
float getTempoFactor()シーケンサの現在のテンポ係数を返します。 デフォルトは1.0です。- 戻り値:
- テンポ係数
- 関連項目:
-
getTickLength
long getTickLength()MIDIティックで表した現在のシーケンスの長さを取得します。シーケンスが設定されていない場合は、0が返されます。- 戻り値:
- ティック表示によるこのシーケンスの長さ
-
getTickPosition
long getTickPosition()シーケンスの現在の位置をMIDIティック単位で取得します。 (ティックの持続時間は、テンポとSequenceに保存されているタイミング解像度の両方によって決まります。)- 戻り値:
- 現在のティック
- 関連項目:
-
setTickPosition
void setTickPosition(long tick) 現在のシーケンサの位置をMIDIティックで設定します。- パラメータ:
tick- 目的のティック位置- 関連項目:
-
getMicrosecondLength
long getMicrosecondLength()マイクロ秒で表した現在のシーケンスの長さを取得します。シーケンスが設定されていない場合は、0が返されます。- 戻り値:
- マイクロ秒単位でのシーケンスの長さ
-
getMicrosecondPosition
long getMicrosecondPosition()シーケンス上の現在の位置をマイクロ秒単位で取得します。- 定義:
getMicrosecondPosition、インタフェースMidiDevice- 戻り値:
- マイクロ秒単位での現在の位置
- 関連項目:
-
setMicrosecondPosition
void setMicrosecondPosition(long microseconds) シーケンス上の現在の位置をマイクロ秒単位で設定します。- パラメータ:
microseconds- マイクロ秒単位での目的の位置- 関連項目:
-
setMasterSyncMode
void setMasterSyncMode(Sequencer.SyncMode sync) このシーケンサが使用するタイミング情報のソースを設定します。 シーケンサはマスターと同期します。マスターはsyncの値に応じて内部クロック、MIDIクロック、またはMIDIタイム・コードになります。sync引数は、getMasterSyncModes()によって返される、サポートされているモードのいずれかである必要があります。- パラメータ:
sync- 目的のマスター同期モード- 関連項目:
-
getMasterSyncMode
-
getMasterSyncModes
Sequencer.SyncMode[] getMasterSyncModes()このシーケンサがサポートするマスター同期モードのセットを取得します。- 戻り値:
- 使用可能なマスター同期モード
- 関連項目:
-
setSlaveSyncMode
void setSlaveSyncMode(Sequencer.SyncMode sync) シーケンサのスレーブ同期モードを設定します。 これはシーケンサからレシーバに送信されるタイミング情報の種類を示します。sync引数は、getSlaveSyncModes()によって返される、サポートされているモードのいずれかである必要があります。- パラメータ:
sync- 目的のスレーブ同期モード- 関連項目:
-
getSlaveSyncMode
-
getSlaveSyncModes
-
setTrackMute
void setTrackMute(int track, boolean mute) トラックのミュート状態を設定します。 このメソッドはいくつかの理由で失敗することがあります。 たとえば、指定されたトラック番号が現在のシーケンスに対して有効でない、あるいはシーケンサがこの機能をサポートしていない、などです。 この操作が成功したかどうかを検証する必要があるアプリケーションは、getTrackMute(int)を呼び出してこの呼び出しに従う必要があります。- パラメータ:
track- トラック番号。 現在のシーケンスのトラックは、0からシーケンスのトラック数から1を引いた値の範囲で番号付けされる。mute- トラックの新しいミュート状態。trueはトラックがミュートであることを意味し、falseはトラックがミュートでないことを意味する。- 関連項目:
-
getTrackMute
boolean getTrackMute(int track) トラックの現在のミュート状態を取得します。 ミュートになっていない全トラックのデフォルト・ミュート状態はfalseです。 指定されたトラックがミュートになっていない場合にはいつでも、このメソッドはfalseを返します。 これは、シーケンサがトラックのミュート化をサポートしていない場合や、指定されたトラック・インデックスが有効でない場合にも当てはまります。- パラメータ:
track- トラック番号。 現在のシーケンスのトラックは、0からシーケンスのトラック数から1を引いた値の範囲で番号付けされる。- 戻り値:
- ミュートの場合は
true、そうでない場合はfalse
-
setTrackSolo
void setTrackSolo(int track, boolean solo) トラックのソロ状態を設定します。soloがtrueの場合は、このトラックおよびソロになっているほかのトラックの音だけが聞こえます。soloがfalseの場合は、ソロになっているほかのトラックの音だけが聞こえますが、ソロになっているトラックがないときはミュートになっていないトラックの音がすべて聞こえます。このメソッドはいくつかの理由で失敗することがあります。 たとえば、指定されたトラック番号が現在のシーケンスに対して有効でない、あるいはシーケンサがこの機能をサポートしていない、などです。 この操作が成功したかどうかを検証する必要があるアプリケーションは、
getTrackSolo(int)を呼び出してこの呼び出しに従う必要があります。- パラメータ:
track- トラック番号。 現在のシーケンスのトラックは、0からシーケンスのトラック数から1を引いた値の範囲で番号付けされる。solo- トラックの新しいソロ状態。trueはトラックがソロであることを意味し、falseはトラックがソロでないことを意味する。- 関連項目:
-
getTrackSolo
boolean getTrackSolo(int track) トラックの現在のソロ状態を取得します。 ソロになっていない全トラックのデフォルト・ミュート状態はfalseです。 指定されたトラックがソロになっていない場合にはいつでも、このメソッドはfalseを返します。 これは、シーケンサがトラックのソロ化をサポートしていない場合や、指定されたトラック・インデックスが有効でない場合にも当てはまります。- パラメータ:
track- トラック番号。 現在のシーケンスのトラックは、0からシーケンスのトラック数から1を引いた値の範囲で番号付けされる。- 戻り値:
- ソロの場合は
true、そうでない場合はfalse
-
addMetaEventListener
boolean addMetaEventListener(MetaEventListener listener) メタイベントがシーケンスで発生してシーケンサによって処理されるときに通知を受け取るためメタイベント・リスナーを登録します。 たとえば、このクラスのシーケンサがメタ・イベント通知をサポートしていない場合、このメソッドは失敗することがあります。- パラメータ:
listener- 追加するリスナー- 戻り値:
- リスナーの追加が完了した場合は
true、そうでない場合はfalse - 関連項目:
-
removeMetaEventListener
void removeMetaEventListener(MetaEventListener listener) 実際にリスナーが登録された場合、このシーケンサの登録済みリスナーのリストから指定されたメタイベント・リスナーを削除します。- パラメータ:
listener- 削除するメタイベント・リスナー- 関連項目:
-
addControllerEventListener
int[] addControllerEventListener(ControllerEventListener listener, int[] controllers) 要求された種類の制御変更イベントをシーケンサが処理するときに通知を受け取るためのコントローラ・イベント・リスナーを登録します。 種類はMIDIコントローラ番号の配列を含むcontrollers引数によって指定されます。 (各番号は0から127まで。 さまざまな種類のコントローラに対応する番号については、MIDI 1.0仕様を参照。)戻された配列には、リスナーが今後イベントを受信するMIDIコントローラの番号を含んでいます。 シーケンサによってはコントローラ・イベント通知をサポートしていない場合があり、その場合、配列の長さは0です。 ほかのシーケンサはいくつかのコントローラの通知をサポートしますが、全コントローラについてではありません。 このメソッドは繰返し呼び出されることがあります。 各回とも、返された配列は、その特定の呼出しで要求されたコントローラだけでなく、リスナーが通知を受ける全コントローラを示します。
- パラメータ:
listener- 登録済みリスナーのリストに追加するコントローラ・イベント・リスナーcontrollers- 変更通知が要求されるMIDIコントローラ番号- 戻り値:
- 指定されたリスナーに今後変更が報告される全MIDIコントローラの番号
- 関連項目:
-
removeControllerEventListener
int[] removeControllerEventListener(ControllerEventListener listener, int[] controllers) 1つ以上の種類のコントローラ・イベントについて、コントローラ・イベント・リスナーの処理対象を削除します。controllers引数は、リスナーが今後変更通知を受けとらないコントローラに対応するMIDI番号の配列です。 登録済みリスナーのリストからこのリスナーを完全に削除するには、controllersにnullを渡します。 戻された配列には、リスナーが今後イベントを受信するMIDIコントローラの番号を含んでいます。 リスナーがどのコントローラの変更通知も受信しない場合、配列の長さは0です。- パラメータ:
listener- 古いリスナーcontrollers- 変更通知を取り消すMIDIコントローラ番号、または全コントローラに対して取り消す場合はnull- 戻り値:
- 指定されたリスナーに今後変更が報告される全MIDIコントローラの番号
- 関連項目:
-
setLoopStartPoint
void setLoopStartPoint(long tick) ループで再生する最初のMIDIティックを設定します。 ループ・カウンタが1以上の場合、ループの終点に達した時点で再生はこの始点に移動します。始点の値0は、ロードされているシーケンスの先頭を意味します。 始点の値は終点の値以下でなければならず、ロードされているシーケンスのサイズ内に入っていなければいけません。
シーケンサのループ始点のデフォルトは、シーケンスの先頭です。
- パラメータ:
tick- ループの始点(MIDIティック単位、ゼロから始まる)- スロー:
IllegalArgumentException- 要求されたループ始点を設定できない場合。通常は、始点がシーケンスのデュレーション外にあるか、始点が終点より後にあることが原因- 導入されたバージョン:
- 1.5
- 関連項目:
-
getLoopStartPoint
long getLoopStartPoint()ループの始点を取得します(MIDIティック単位)。- 戻り値:
- ループの始点(MIDIティック単位、ゼロから始まる)
- 導入されたバージョン:
- 1.5
- 関連項目:
-
setLoopEndPoint
void setLoopEndPoint(long tick) ループで最後に再生されるMIDIティックを設定します。 ループ・カウントが0の場合はループの終点に達しても再生が続行されます。終点の値 -1は、ロードされているシーケンスの最後のティックを意味します。 それ以外の場合、終点の値は始点の値以上でなければならず、ロードされているシーケンスのサイズ内に入っていなければいけません。
シーケンサのループ終点のデフォルトは -1で、シーケンスの最後という意味です。
- パラメータ:
tick- ループの終点(MIDIティック単位、ゼロから始まる)、または最後のティックを示す -1- スロー:
IllegalArgumentException- 要求されたループ終点を設定できない場合。通常は、終点がシーケンスのデュレーション外にあるか、終点が始点より前にあることが原因- 導入されたバージョン:
- 1.5
- 関連項目:
-
getLoopEndPoint
long getLoopEndPoint()ループの終点を取得します(MIDIティック単位)。- 戻り値:
- ループの終点(MIDIティック単位、ゼロから始まる)、またはシーケンスの最後を示す -1
- 導入されたバージョン:
- 1.5
- 関連項目:
-
setLoopCount
void setLoopCount(int count) ループを再生する反復回数を設定します。 再生がループの終点に達すると、count回までループの始点に戻ります。その後は、シーケンスの最後まで再生が続行されます。このメソッドを呼び出したときの現在位置がループの終点より大きい場合、ループは実行されず、シーケンスの最後まで再生が続行されます。ただし、この呼出しに続いてループの終点を変更した場合は、ループが実行されます。
countの値を0に設定するとループが無効になります。つまり、ループの終点に達しても再生が続行され、ループの始点には戻りません。 これがシーケンサのデフォルトです。ループ中に再生を停止すると、現在のループ状態は解除されます。そのあとに開始要求を行うとき、中断されたループ操作の影響は受けません。
- パラメータ:
count- 再生がループの終了位置からループの開始位置までループ・バックする回数、またはループが中断されるまで続行することを示すLOOP_CONTINUOUSLY- スロー:
IllegalArgumentException-countの値が負であり、かつLOOP_CONTINUOUSLYに等しくない場合- 導入されたバージョン:
- 1.5
- 関連項目:
-
getLoopCount
int getLoopCount()再生の反復数を取得します。- 戻り値:
- ループの回数。その後は、シーケンスの最後まで再生される
- 導入されたバージョン:
- 1.5
- 関連項目:
-