- すべてのスーパー・インタフェース:
AutoCloseable
,DataLine
,Line
public interface Clip extends DataLine
Clip
インタフェースは特殊な種類のデータ・ラインを表し、そのオーディオ・データはリアルタイムでストリーム化するのではなく、再生前にロードできます。
データはプリロードされ長さが認識されているため、クリップを設定するとそのオーディオ・データ内の任意の位置から再生を開始できます。 また、ループを作成して、クリップを繰返し再生することもできます。 ループを設定するには、再生する回数と、開始および終了サンプル・フレームを指定します。
クリップは、この型の行をサポートするMixer
から取得できます。 クリップを開くとデータがクリップにロードされます。
オーディオ・クリップの再生は、start
およびstop
メソッドを使用して開始および停止することができます。 これらのメソッドは、メディアの位置をリセットしません。つまり、start
を使用すると、最後に停止した位置から再生が再開されます。 クリップ・オーディオ・データの先頭から再生を再開するには、stop
をsetFramePosition(0)
で起動するだけで、メディアをクリップの先頭に巻き戻します。
- 導入されたバージョン:
- 1.3
-
ネストされたクラスのサマリー
インタフェース javax.sound.sampled.DataLineで宣言されたネストされたクラス/インタフェース
DataLine.Info
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 static int
LOOP_CONTINUOUSLY
ループは特定回数くり返し実行されたあとで終了するのではなく無制限に継続することを示す値。 -
メソッドのサマリー
修飾子と型 メソッド 説明 int
getFrameLength()
メディアの長さをサンプル・フレーム数で取得します。long
getMicrosecondLength()
メディア・デュレーションをマイクロ秒単位で取得します。void
loop(int count)
現在の位置からループ再生を開始します。void
open(AudioFormat format, byte[] data, int offset, int bufferSize)
クリップを開き、必要なシステム・リソースを獲得して操作可能になっていることを示します。void
open(AudioInputStream stream)
指定したオーディオ入力ストリーム内に提示されている形式およびオーディオ・データでクリップを開きます。void
setFramePosition(int frames)
メディアの位置をサンプル・フレーム数で設定します。void
setLoopPoints(int start, int end)
ループ内で再生される最初および最後のサンプル・フレームを設定します。void
setMicrosecondPosition(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
-
フィールド詳細
-
メソッドの詳細
-
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
がループが中断されるまで継続する必要があることを示す
-