|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface Sequencer
MIDI
を再生するハードウェアデバイスまたはソフトウェアデバイスのことを「シーケンサ」といいます。MIDI シーケンスには、標準 MIDI ファイルから読み込まれたデータなどの、時刻表示された MIDI データのリストが含まれます。ほとんどのシーケンサは、シーケンスを作成し編集する機能も提供します。
シーケンス
Sequencer
インタフェースには、次のような基本的な MIDI シーケンサ操作が含まれます。
Sequencer
がアクセスできるオブジェクトを通じて間接的に、次の操作もサポートされます。
Sequencer.SyncMode
,
addMetaEventListener(javax.sound.midi.MetaEventListener)
,
ControllerEventListener
,
Receiver
,
Transmitter
,
MidiDevice
入れ子のクラスの概要 | |
---|---|
static class |
Sequencer.SyncMode
SyncMode オブジェクトは、MIDI シーケンサで扱われている時間をマスターまたはスレーブデバイスと同期化する方法の 1 つを表現しています。 |
インタフェース javax.sound.midi.MidiDevice から継承された入れ子のクラス/インタフェース |
---|
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()
マイクロ秒で表した現在のシーケンスの長さを取得します。 |
long |
getMicrosecondPosition()
シーケンス上の現在の位置をマイクロ秒単位で取得します。 |
Sequence |
getSequence()
シーケンサが現在操作しているシーケンスを取得します。 |
Sequencer.SyncMode |
getSlaveSyncMode()
このシーケンサの現在のスレーブ同期モードを取得します。 |
Sequencer.SyncMode[] |
getSlaveSyncModes()
シーケンサがサポートするスレーブ同期モードのセットを取得します。 |
float |
getTempoFactor()
シーケンサの現在のテンポ係数を返します。 |
float |
getTempoInBPM()
1 分当たりのビートで表示される現在のテンポを取得します。 |
float |
getTempoInMPQ()
四分音符当たりのマイクロ秒で表示される現在のテンポを取得します。 |
long |
getTickLength()
MIDI ティックで表した現在のシーケンスの長さを取得します。 |
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()
アクティブの場合録音を停止します。 |
インタフェース javax.sound.midi.MidiDevice から継承されたメソッド |
---|
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()
MidiDevice
内の getMicrosecondPosition
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()
Sequencer.SyncMode.INTERNAL_CLOCK
,
Sequencer.SyncMode.MIDI_SYNC
,
Sequencer.SyncMode.MIDI_TIME_CODE
,
getMasterSyncMode()
,
setMasterSyncMode(Sequencer.SyncMode)
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 Specification」を参照)。
返された配列には、リスナーが今受信しようとするイベントの 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 ティック単位、ゼロから始まる)、または最後のティックを示す -1
IllegalArgumentException
- 要求されたループ終点を設定できない場合。通常は、終点がシーケンスのデュレーション外にあるか、終点が始点より前にあることが原因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()
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。