JavaTM Platform
Standard Ed. 6

javax.sound.sampled
インタフェース Clip

すべてのスーパーインタフェース:
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
 

フィールドの詳細

LOOP_CONTINUOUSLY

static final int LOOP_CONTINUOUSLY
ループは特定回数くり返し実行された後で終了するのではなく無制限に継続することを示す値

関連項目:
loop(int), 定数フィールド値
メソッドの詳細

open

void open(AudioFormat format,
          byte[] data,
          int offset,
          int bufferSize)
          throws LineUnavailableException
クリップを開き、必要なシステムリソースを獲得して操作可能になっていることを示します。クリップは、指定された形式とオーディオデータで開かれます。この操作が正常に完了すると、ラインは開いている状態としてマークされ、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 イベントがラインのリスナーにディスパッチされます。

すでに開いているラインでこのメソッドを呼び出すのは不適切なアクションであるため、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)
メディアの位置をサンプルフレーム数で設定します。位置はゼロから始まります。 つまり、最初のフレームはフレーム番号ゼロになります。クリップが次回再生を開始すると、この位置のフレームから再生が開始されます。

現在の位置をサンプルフレーム数で取得するには、DataLinegetFramePosition メソッドを使用します。

パラメータ:
frames - サンプルフレーム数で表される、必要な新規メディア位置

setMicrosecondPosition

void setMicrosecondPosition(long microseconds)
メディア位置をマイクロ秒単位で設定します。クリップが次回再生を開始すると、この位置から再生が開始されます。精度のレベルは保証されません。たとえば、実装では、現在のフレーム位置およびオーディオサンプルフレームレートからマイクロ秒位置が計算される場合があります。マイクロ秒単位の精度は、1 サンプルフレームあたりのマイクロ秒数に制限されます。

現在の位置をマイクロ秒単位で取得するには、DataLinegetMicrosecondPosition メソッドを使用します。

パラメータ:
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

JavaTM Platform
Standard Ed. 6

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

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。