JavaTM 2
Platform
Std. Ed. v1.4.0

javax.sound.midi
インタフェース Sequencer

すべてのスーパーインタフェース:
MidiDevice

public interface Sequencer
extends MidiDevice

MIDI sequence を再生するハードウェアデバイスまたはソフトウェアデバイスを、sequencer と言います。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
 
メソッドの概要
 int[] addControllerEventListener(ControllerEventListener listener, int[] controllers)
          要求された種類の制御変更イベントをシーケンサが処理する時に通知を受けとるためのコントローライベントリスナーを登録します。
 boolean addMetaEventListener(MetaEventListener listener)
          メタイベントがシーケンスで発生してシーケンサによって処理される時に通知を受けとるためメタイベントリスナーを登録します。
 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 ティック単位で取得します (1 ティックの秒単位でのデュレーションは、Sequence に格納されているテンポとタイミング解像度の両方によって決まる)。
 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 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, getTransmitter, isOpen, open
 

メソッドの詳細

setSequence

public void setSequence(Sequence sequence)
                 throws InvalidMidiDataException
シーケンサが操作する現在のシーケンスを設定します。

パラメータ:
sequence - ロードするシーケンス
例外:
InvalidMidiDataException - シーケンスが無効な MIDI データを含んでいるか、またはシーケンスがサポートされていない場合

setSequence

public void setSequence(InputStream stream)
                 throws IOException,
                        InvalidMidiDataException
シーケンサが操作する現在のシーケンスを設定します。ストリームは MIDI ファイルデータを示す必要があります。

パラメータ:
stream - MIDI ファイルデータを含むストリーム
例外:
IOException - ストリームの読み込み中に入出力例外が発生した場合
InvalidMidiDataException - ストリームで無効なデータが発生したか、またはストリームがサポートされていない場合

getSequence

public Sequence getSequence()
シーケンサが現在操作しているシーケンスを取得します。

戻り値:
現在のシーケンス、またはシーケンスが現在設定されていない場合は null

start

public void start()
現在ロードされているシーケンスの MIDI データの再生を開始します。

関連項目:
start(), stop()

stop

public void stop()
アクティブの場合録音を停止し、現在ロードされているシーケンスがあれば、その再生を停止します。

関連項目:
start(), isRunning()

isRunning

public boolean isRunning()
シーケンスが現在実行中かどうかを示します。デフォルトは false です。start() または startRecording() が呼び出されると、シーケンサは実行を開始します。その後シーケンスの再生が完了するか、または stop() が呼び出されるまで、isRunningtrue を返します。

戻り値:
シーケンサが実行中の場合は true、そうでない場合は false

startRecording

public void startRecording()
MIDI データの録音および再生を開始します。データは、トラックが使用可能になっているチャネルの、使用可能な全トラックに録音されます。録音はシーケンサの現在の位置で開始されます。すでにトランクにあるイベントは録音セッション中に上書きされます。現在ロードされているシーケンサからのイベントがあれば、そのイベントは録音中に受信したメッセージとともにシーケンサの MIDI OUT レシーバに配信されます。

トラックはデフォルトでは録音可能になっていません。MIDI データを録音するためには、少なくとも 1 つのトラックが具体的に録音可能になっている必要があります。

関連項目:
startRecording(), recordEnable(javax.sound.midi.Track, int), recordDisable(javax.sound.midi.Track)

stopRecording

public void stopRecording()
アクティブの場合録音を停止します。現在のシーケンスの再生は継続します。

関連項目:
startRecording(), isRecording()

isRecording

public boolean isRecording()
シーケンサが現在録音中かどうかを示します。デフォルトは false です。シーケンサは、startRecording() が呼び出されると録音を開始し、その後は stop() または stopRecording() が呼び出されるまで true を返します。

戻り値:
シーケンサが録音中の場合は true、そうでない場合は false

recordEnable

public void recordEnable(Track track,
                         int channel)
指定されたトラックに、特定のチャネルで受信するイベントを録音する準備をします。トラックを使用可能にしておくと、録音がアクティブになったときにイベントを受信します。

パラメータ:
track - イベントが録音されるトラック
channel - イベントが受信されるチャネル。チャネル値に -1 が指定されている場合、トラックは全チャネルからのデータを受信する
例外:
IllegalArgumentException - トラックが現在のシーケンスの一部でない場合、スローされる

recordDisable

public void recordDisable(Track track)
指定されたトラックに対して、録音不可にします。それ以降のイベントはこのトラックには録音されません。

パラメータ:
track - 録音を不可にするトラック、または全トラックを録音不可にする場合は null

getTempoInBPM

public float getTempoInBPM()
1 分当たりのビートで表示される現在のテンポを取得します。再生の実際のテンポは、返された値およびテンポ係数で決まります。

戻り値:
1 分当たりのビートで表示される現在のテンポ
関連項目:
getTempoFactor(), setTempoInBPM(float), getTempoInMPQ()

setTempoInBPM

public void setTempoInBPM(float bpm)
テンポを 1 分当たりのビートで設定します。再生の実際のテンポは、指定された値およびテンポ係数で決まります。

パラメータ:
bpm - 1 分当たりのビートで表示される望ましい新たなテンポ
関連項目:
getTempoFactor(), setTempoInMPQ(float), getTempoInBPM()

getTempoInMPQ

public float getTempoInMPQ()
四分音符当たりのマイクロ秒で表示される現在のテンポを取得します。再生の実際のテンポは、返された値およびテンポ係数で決まります。

戻り値:
四分音符当たりのマイクロ秒で表示される現在のテンポ
関連項目:
getTempoFactor(), setTempoInMPQ(float), getTempoInBPM()

setTempoInMPQ

public void setTempoInMPQ(float mpq)
テンポを四分音符当たりのマイクロ秒で設定します。再生の実際のテンポは、指定された値およびテンポ係数で決まります。

パラメータ:
mpq - 四分音符当たりのマイクロ秒で表示される望ましい新たなテンポ
関連項目:
getTempoFactor(), setTempoInBPM(float), getTempoInMPQ()

setTempoFactor

public void setTempoFactor(float factor)
指定された係数によりシーケンサの実際の再生テンポをスケーリングします。デフォルトは 1.0 です。1.0 という値は通常の速さ (シーケンスで指定されたテンポ) を表し、2.0 は 2 倍速いことを表します。テンポ係数は、getTempoInMPQ() および getTempoInBPM() によって返された値には影響しません。これらの値はスケーリング前のテンポを示します。

外部同期が使用されている場合はテンポ係数は調整できません。外部同期が使用されている場合、setTempoFactor はテンポ係数を常に 1.0 に設定します。

パラメータ:
factor - 要求されたテンポスカラー
関連項目:
getTempoFactor()

getTempoFactor

public float getTempoFactor()
シーケンサの現在のテンポ係数を返します。デフォルトは 1.0 です。

戻り値:
テンポ係数
関連項目:
setTempoFactor(float)

getTickLength

public long getTickLength()
MIDI ティックで表示される現在のシーケンスの長さを取得します。

戻り値:
ティック表示によるこのシーケンスの長さ

getTickPosition

public long getTickPosition()
シーケンスの現在の位置を MIDI ティック単位で取得します (1 ティックの秒単位でのデュレーションは、Sequence に格納されているテンポとタイミング解像度の両方によって決まる)。

戻り値:
現在のティック
関連項目:
setTickPosition(long)

setTickPosition

public void setTickPosition(long tick)
現在のシーケンサの位置を MIDI ティックで設定します。

パラメータ:
tick - 望ましいティックの位置
関連項目:
getTickPosition()

getMicrosecondLength

public long getMicrosecondLength()
現在のシーケンスの長さをマイクロ秒単位で取得します。

戻り値:
マイクロ秒単位でのシーケンスの長さ

getMicrosecondPosition

public long getMicrosecondPosition()
シーケンス上の現在の位置をマイクロ秒単位で取得します。

定義:
インタフェース MidiDevice 内の getMicrosecondPosition
戻り値:
マイクロ秒単位での現在の位置
関連項目:
setMicrosecondPosition(long)

setMicrosecondPosition

public void setMicrosecondPosition(long microseconds)
シーケンス上の現在の位置をマイクロ秒単位で設定します。

パラメータ:
microseconds - マイクロ秒単位での望ましい位置
関連項目:
getMicrosecondPosition()

setMasterSyncMode

public 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()

getMasterSyncMode

public Sequencer.SyncMode getMasterSyncMode()
このシーケンサの現在のマスター同期モードを取得します。

戻り値:
現在のマスター同期モード
関連項目:
setMasterSyncMode(Sequencer.SyncMode), getMasterSyncModes()

getMasterSyncModes

public Sequencer.SyncMode[] getMasterSyncModes()
このシーケンサがサポートするマスター同期モードのセットを取得します。

戻り値:
使用可能なマスター同期モード
関連項目:
Sequencer.SyncMode.INTERNAL_CLOCK, Sequencer.SyncMode.MIDI_SYNC, Sequencer.SyncMode.MIDI_TIME_CODE, getMasterSyncMode(), setMasterSyncMode(Sequencer.SyncMode)

setSlaveSyncMode

public void setSlaveSyncMode(Sequencer.SyncMode sync)
シーケンサのスレーブ同期モードを設定します。これはシーケンサからレシーバに送信されるタイミング情報の種類を示します。sync 引数は、getSlaveSyncModes() によって返される、サポート対象モードの 1 つであることが必要です。

パラメータ:
sync - 望ましいスレーブ同期モード
関連項目:
Sequencer.SyncMode.MIDI_SYNC, Sequencer.SyncMode.MIDI_TIME_CODE, Sequencer.SyncMode.NO_SYNC, getSlaveSyncModes()

getSlaveSyncMode

public Sequencer.SyncMode getSlaveSyncMode()
このシーケンサの現在のスレーブ同期モードを取得します。

戻り値:
現在のスレーブ同期モード
関連項目:
setSlaveSyncMode(Sequencer.SyncMode), getSlaveSyncModes()

getSlaveSyncModes

public Sequencer.SyncMode[] getSlaveSyncModes()
シーケンサがサポートするスレーブ同期モードのセットを取得します。

戻り値:
使用可能なスレーブ同期モード
関連項目:
Sequencer.SyncMode.MIDI_SYNC, Sequencer.SyncMode.MIDI_TIME_CODE, Sequencer.SyncMode.NO_SYNC

setTrackMute

public void setTrackMute(int track,
                         boolean mute)
トラックのミュート状態を設定します。このメソッドは多数の理由によって失敗することがあります。たとえば、指定されたトラック番号が現在のシーケンスに有効でない、あるいはシーケンサがこの機能をサポートしていない、などです。この操作が完了したかどうかを確認する必要のあるアプリケーションの場合、この呼び出しに続いて getTrackMute(int) の呼び出しを行います。

パラメータ:
track - トラック番号。現在のシーケンスのトラックは、0 からシーケンスのトラック数引く 1 の範囲で番号付けされる
mute - トラックの新しいミュート状態。true はトラックがミュートであることを意味し、false はトラックがミュートでないことを意味する
関連項目:
getSequence()

getTrackMute

public boolean getTrackMute(int track)
トラックの現在のミュート状態を取得します。ミュートになっていない全トラックのデフォルトミュート状態は false です。いずれにしても、指定されたトラックがミュートになっていない場合、このメソッドは false を返します。これは、シーケンサがトラックのミュート化をサポートしていない場合、および指定されたトラックインデックスが有効でない場合です。

パラメータ:
track - トラック番号。現在のシーケンスのトラックは、0 からシーケンスのトラック数引く 1 の範囲で番号付けされる
戻り値:
ミュートの場合は true、そうでない場合は false

setTrackSolo

public void setTrackSolo(int track,
                         boolean solo)
トラックのソロ状態を設定します。solotrue の場合は、このトラックおよびソロになっている他のトラックの音だけが聞こえます。solofalse の場合は、ソロになっている他のトラックの音だけが聞こえますが、ソロになっているトラックがないときはミュートになっていないトラックの音がすべて聞こえます。

このメソッドは多数の理由によって失敗することがあります。たとえば、指定されたトラック番号が現在のシーケンスに有効でない、あるいはシーケンサがこの機能をサポートしていない、などです。この操作が完了したかどうかを確認する必要のあるアプリケーションの場合、この呼び出しに続いて getTrackSolo(int) の呼び出しを行います。

パラメータ:
track - トラック番号。現在のシーケンスのトラックは、0 からシーケンスのトラック数引く 1 の範囲で番号付けされる
solo - トラックの新しいソロ状態。true はトラックがソロであることを意味し、false はトラックがソロでないことを意味する
関連項目:
getSequence()

getTrackSolo

public boolean getTrackSolo(int track)
トラックの現在のソロ状態を取得します。ソロになっていない全トラックのデフォルトミュート状態は false です。いずれにしても、指定されたトラックがソロになっていない場合、このメソッドは false を返します。これは、シーケンサがトラックのソロ化をサポートしていない場合、および指定されたトラックインデックスが有効でない場合です。

パラメータ:
track - トラック番号。現在のシーケンスのトラックは、0 からシーケンスのトラック数引く 1 の範囲で番号付けされる
戻り値:
ソロの場合は true、そうでない場合は false

addMetaEventListener

public boolean addMetaEventListener(MetaEventListener listener)
メタイベントがシーケンスで発生してシーケンサによって処理される時に通知を受けとるためメタイベントリスナーを登録します。

パラメータ:
listener - 追加するリスナー
戻り値:
リスナーの追加が完了した場合は true、そうでない場合は false
関連項目:
removeMetaEventListener(javax.sound.midi.MetaEventListener), MetaEventListener, MetaMessage

removeMetaEventListener

public void removeMetaEventListener(MetaEventListener listener)
実際にリスナーが登録された場合、このシーケンサの登録済リスナーのリストから指定されたメタイベントリスナーを削除します。

パラメータ:
listener - 削除するメタイベントリスナー
関連項目:
addMetaEventListener(javax.sound.midi.MetaEventListener)

addControllerEventListener

public int[] addControllerEventListener(ControllerEventListener listener,
                                        int[] controllers)
要求された種類の制御変更イベントをシーケンサが処理する時に通知を受けとるためのコントローライベントリスナーを登録します。種類は MIDI コントローラ番号の配列を含む controllers 引数によって指定されます (各番号は 0 から 127 まで。さまざまな種類のコントローラに対応する番号については、「MIDI 1.0 Specification」を参照)。

返された配列には、リスナーが今受信しようとするイベントの MIDI コントローラ番号を含みます。シーケンサによってはコントローライベント通知をサポートしていない場合があり、その場合、配列の長さは 0 です。他のシーケンサはいくつかのコントローラの通知をサポートしますが、全コントローラについてではありません。このメソッドは繰り返し呼び出されることがあります。各回とも、返された配列は、その特定の呼び出しで要求されたコントローラだけでなく、リスナーが通知を受ける全コントローラを示します

パラメータ:
listener - 登録済リスナーのリストに追加するコントローライベントリスナー
controllers - 変更通知が要求される MIDI コントローラ番号
戻り値:
指定されたリスナーに今後変更が報告される全 MIDI コントローラの番号
関連項目:
removeControllerEventListener(javax.sound.midi.ControllerEventListener, int[]), ControllerEventListener

removeControllerEventListener

public int[] removeControllerEventListener(ControllerEventListener listener,
                                           int[] controllers)
1 つ以上の種類のコントローライベントについて、コントローライベントリスナーの処理対象を削除します。controllers 引数は、リスナーが今後変更通知を受けとらないコントローラに対応する MIDI 番号の配列です。登録済リスナーのリストからこのリスナーを完全に削除するには、controllersnull を渡します。戻された配列には、リスナーが今後イベントを受信する MIDI コントローラの番号を含んでいます。リスナーがどのコントローラの変更通知も受信しない場合、配列の長さは 0 です。

パラメータ:
listener - 古いリスナー
controllers - 変更通知を取り消す MIDI コントローラ番号、または全コントローラに対して取り消す場合は null
戻り値:
指定されたリスナーに今後変更が報告される全 MIDI コントローラの番号
関連項目:
addControllerEventListener(javax.sound.midi.ControllerEventListener, int[])

JavaTM 2
Platform
Std. Ed. v1.4.0

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

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