- すべてのスーパー・インタフェース:
AutoCloseable,DataLine,Line
public interface Clip extends DataLine
Clipインタフェースは特殊な種類のデータ・ラインを表し、そのオーディオ・データはリアルタイムでストリーム化するのではなく、再生前にロードできます。
データはプリロードされ長さが認識されているため、クリップを設定するとそのオーディオ・データ内の任意の位置から再生を開始できます。 また、ループを作成して、クリップを繰返し再生することもできます。 ループを設定するには、再生する回数と、開始および終了サンプル・フレームを指定します。
クリップは、この型の行をサポートするMixerから取得できます。 クリップを開くとデータがクリップにロードされます。
オーディオ・クリップの再生は、startおよびstopメソッドを使用して開始および停止することができます。 これらのメソッドは、メディアの位置をリセットしません。つまり、startを使用すると、最後に停止した位置から再生が再開されます。 クリップ・オーディオ・データの先頭から再生を再開するには、stopをsetFramePosition(0)で起動するだけで、メディアをクリップの先頭に巻き戻します。
- 導入されたバージョン:
- 1.3
-
ネストされたクラスのサマリー
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static intLOOP_CONTINUOUSLYループは特定回数くり返し実行されたあとで終了するのではなく無制限に継続することを示す値。 -
メソッドのサマリー
修飾子と型 メソッド 説明 intgetFrameLength()メディアの長さをサンプル・フレーム数で取得します。longgetMicrosecondLength()メディア・デュレーションをマイクロ秒単位で取得します。voidloop(int count)現在の位置からループ再生を開始します。voidopen(AudioFormat format, byte[] data, int offset, int bufferSize)クリップを開き、必要なシステム・リソースを獲得して操作可能になっていることを示します。voidopen(AudioInputStream stream)指定したオーディオ入力ストリーム内に提示されている形式およびオーディオ・データでクリップを開きます。voidsetFramePosition(int frames)メディアの位置をサンプル・フレーム数で設定します。voidsetLoopPoints(int start, int end)ループ内で再生される最初および最後のサンプル・フレームを設定します。voidsetMicrosecondPosition(long microseconds)メディア位置をマイクロ秒単位で設定します。インタフェース javax.sound.sampled.DataLineで宣言されたメソッド
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stopインタフェース javax.sound.sampled.Lineで宣言されたメソッド
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
-
フィールド詳細
-
LOOP_CONTINUOUSLY
static final int LOOP_CONTINUOUSLYループは特定回数くり返し実行されたあとで終了するのではなく無制限に継続することを示す値。
-
-
メソッドの詳細
-
open
void open(AudioFormat format, byte[] data, int offset, int bufferSize) throws LineUnavailableExceptionクリップを開き、必要なシステム・リソースを獲得して操作可能になっていることを示します。 クリップは、指定された形式とオーディオ・データで開かれます。 この操作が成功すると、その行はopenとマークされ、OPENイベントが行リスナーに送出されます。すでに開いているラインでこのメソッドを呼び出すのは不適切なアクションであるため、
IllegalStateExceptionが表示されることがあります。ラインによっては、一度閉じると再度開くことができない場合があります。 こうしたラインを再度開こうとすると、常に
LineUnavailableExceptionが表示されます。- パラメータ:
format- 指定されたオーディオ・データの形式data- クリップにロードするオーディオ・データを含むバイト配列offset- 配列の始めからバイト数で表される、コピーの開始地点bufferSize- 配列からクリップへロードするデータのバイト数- 例外:
LineUnavailableException- リソースの制約のためにラインを開けない場合IllegalArgumentException- バッファ・サイズがサンプル・フレームの整数値を表さない場合、あるいはformatの指定が不完全または無効な場合IllegalStateException- ラインがすでに開いている場合SecurityException- セキュリティの制約のためにラインを開けない場合- 関連項目:
Line.close(),Line.isOpen(),LineListener
-
open
void open(AudioInputStream stream) throws LineUnavailableException, IOException指定したオーディオ入力ストリーム内に提示されている形式およびオーディオ・データでクリップを開きます。 クリップを開くと、必要なシステム・リソースを獲得して操作可能な状態になったことを示します。 この操作が入力ストリームの場合。 この操作が成功すると、その行はopenとマークされ、OPENイベントが行リスナーにディスパッチされます。すでに開いているラインでこのメソッドを呼び出すのは不適切なアクションであるため、
IllegalStateExceptionが表示されることがあります。ラインによっては、一度閉じると再度開くことができない場合があります。 こうしたラインを再度開こうとすると、常に
LineUnavailableExceptionが表示されます。- パラメータ:
stream- オーディオ・データがクリップに読み込まれるオーディオ入力ストリーム- 例外:
LineUnavailableException- リソースの制約のためにラインを開けない場合IOException- ストリームの読込み中に入出力例外が発生した場合IllegalArgumentException- ストリームのオーディオ形式の指定が不完全または無効な場合IllegalStateException- ラインがすでに開いている場合SecurityException- セキュリティの制約のためにラインを開けない場合- 関連項目:
Line.close(),Line.isOpen(),LineListener
-
getFrameLength
int getFrameLength()メディアの長さをサンプル・フレーム数で取得します。- 戻り値:
- サンプル・フレーム数で表されるメディアの長さ、またはラインが開いていない場合は
AudioSystem.NOT_SPECIFIED - 関連項目:
AudioSystem.NOT_SPECIFIED
-
getMicrosecondLength
long getMicrosecondLength()メディア・デュレーションをマイクロ秒単位で取得します。- 戻り値:
- マイクロ秒単位で表されるメディア・デュレーション、またはラインが開いていない場合は
AudioSystem.NOT_SPECIFIED - 関連項目:
AudioSystem.NOT_SPECIFIED
-
setFramePosition
void setFramePosition(int frames)メディアの位置をサンプル・フレーム数で設定します。 位置はゼロから始まります。つまり、最初のフレームはフレーム番号ゼロになります。 クリップが次回再生を開始すると、この位置のフレームから再生が開始されます。サンプル・フレーム内の現在位置を取得するには、
DataLineのgetFramePositionメソッドを使用します。- パラメータ:
frames- サンプル・フレーム数で表される、必要な新規メディア位置
-
setMicrosecondPosition
void setMicrosecondPosition(long microseconds)メディア位置をマイクロ秒単位で設定します。 クリップが次回再生を開始すると、この位置から再生が開始されます。 精度のレベルは保証されません。 たとえば、実装では、現在のフレーム位置およびオーディオ・サンプル・フレーム・レートからマイクロ秒位置が計算される場合があります。 マイクロ秒単位の精度は、1サンプル・フレームあたりのマイクロ秒数に制限されます。現在の位置をマイクロ秒単位で取得するには、
DataLineのgetMicrosecondPositionメソッドを使用します。- パラメータ:
microseconds- マイクロ秒数で表される、必要な新規メディア位置
-
setLoopPoints
void setLoopPoints(int start, int end)ループ内で再生される最初および最後のサンプル・フレームを設定します。 終了点は開始点以上でなければならず、両方ともロードされたメディアのサイズ内になければなりません。 始点の値0は、ロードされたメディアの先頭を示します。 同様に、終点の値 -1は、メディアの最終フレームを示します。- パラメータ:
start- ループの開始位置(サンプル・フレーム数、ゼロから始まる)end- ループの最終位置(サンプル・フレーム数、ゼロから始まる)、または最終フレームを示す場合は -1- 例外:
IllegalArgumentException- 要求されたループ地点が設定できない場合。通常は、開始と最終の両方またはどちらかがメディアのデュレーション外にあるため、あるいは最終地点が開始ポイントの前にあるのが原因
-
loop
void loop(int count)現在の位置からループ再生を開始します。 ループの終点まで再生してからループの始点へcount回戻り、その後はクリップの最後まで再生します。このメソッドを呼び出したときに現在の位置がループの最終地点よりも大きくなる場合は、ループは実行されず、クリップの最後までそのまま再生されます。
count値を0にすると、現在のループを停止してクリップの最後まで再生を継続することを示します。 ループの操作中にほかの値を指定してこのメソッドを呼び出したときの動作は定義されていません。ループ中に再生を停止すると、現在のループ状態は解除されます。後続のループと開始要求の動作は、中断されたループ操作によって影響を受けません。
- パラメータ:
count- 再生がループ終了位置からループ開始位置にループバックする回数、またはLOOP_CONTINUOUSLYがループが中断されるまで継続する必要があることを示す
-