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