JavaTM 2 Platform
Std. Ed. v1.3

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

すべてのスーパーインタフェース:
DataLine, Line

public interface Clip
extends DataLine

Clip インタフェースは特殊な種類のデータラインを表し、そのオーディオデータはリアルタイムでストリーム化するのではなく、再生前にロードできます。

データはプリロードされ長さが認識されているため、クリップを設定するとそのオーディオデータ内の任意の位置から再生を開始できます。また、ループを作成することもできるので、クリップは再生されると繰り返し循環します。ループは、再生する回数に加え、開始および終了サンプルフレームで指定されます。

クリップはこのタイプのラインをサポートする Mixer から取得できます。データを開くとクリップにロードされます。

オーディオクリップの再生は、start および stop メソッドを使用して開始および停止できます。これらのメソッドは、メディアの位置をリセットしません。つまり、start メソッドを使用すると、最後に停止した位置から再生が始まります。クリップのオーディオデータの始めから再生を開始するには、メディアをクリップの始めに巻き戻す setFramePosition(0) で stop を呼び出します。

導入されたバージョン:
1.3

クラス javax.sound.sampled.DataLine から継承した内部クラス
DataLine.Info
 
クラス javax.sound.sampled.Line から継承した内部クラス
Line.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, getMicrosecondPosition, isActive, isRunning, start, stop
 
インタフェース javax.sound.sampled.Line から継承したメソッド
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
 

フィールドの詳細

LOOP_CONTINUOUSLY

public static final int LOOP_CONTINUOUSLY
ループは特定回数くり返し実行された後で終了するのではなく無制限に継続することを示す値
関連項目:
loop(int)
メソッドの詳細

open

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

すでに開いているラインでこのメソッドを呼び出すのは不適切なアクションであるため、IllegalStateException が表示されることがあります。

ラインによっては、一度閉じると再度開けない場合があります。こうしたラインを再度開こうとすると、常に LineUnavailableException が表示されます。

パラメータ:
format - 指定されたオーディオデータの形式
data - クリップにロードするオーディオデータを含むバイト配列
offset - 配列の始めからバイト数で表される、コピーの開始地点
bufferSize - 配列からクリップへロードするデータのバイト
例外:
LineUnavailableException - リソースの制約のためにラインを開けない場合
IllegalArgumentException - バッファサイズがサンプルフレームの積分数を表示しない場合
IllegalStateException - ラインがすでに開いている場合
SecurityException - セキュリティ上の制約のためにラインを開けない場合
関連項目:
Line.close(), Line.isOpen(), LineListener

open

public void open(AudioInputStream stream)
          throws LineUnavailableException,
                 IOException
指定されたオーディオ入力ストリーム内に形式およびオーディオデータが提示されているクリップを開きます。クリップを開くと、必要なシステムリソースを獲得して操作可能な状態になったことを示します。この操作が入力ストリームの場合。操作が正常に実行されると、ラインは開いている状態であるとマークされて、OPEN イベントがラインのリスナーにディスパッチされます。

すでに開いているラインでこのメソッドを呼び出すのは不適切なアクションであるため、IllegalStateException が表示されることがあります。

ラインによっては、一度閉じると再度開けない場合があります。こうしたラインを再度開こうとすると、常に LineUnavailableException が表示されます。

パラメータ:
stream - オーディオデータがクリップに読み込まれるオーディオ入力ストリーム
例外:
LineUnavailableException - リソースの制約のためにラインを開けない場合
IOException - ストリームの読み込み中に入出力例外が発生した場合
IllegalStateException - ラインがすでに開いている場合
SecurityException - セキュリティ上の制約のためにラインを開けない場合
関連項目:
Line.close(), Line.isOpen(), LineListener

getFrameLength

public int getFrameLength()
メディアの長さをサンプルフレーム数で取得します。
戻り値:
サンプルフレーム数で表されるメディアの長さ、またはラインが開いていない場合は AudioSystem.NOT_SPECIFIED
関連項目:
AudioSystem.NOT_SPECIFIED

getMicrosecondLength

public long getMicrosecondLength()
メディアデュレーションをマイクロ秒単位で取得します。
戻り値:
マイクロ秒単位で表されるメディアデュレーション、またはラインが開いていな場合は AudioSystem.NOT_SPECIFIED
関連項目:
AudioSystem.NOT_SPECIFIED

setFramePosition

public void setFramePosition(int frames)
メディアの位置をサンプルフレーム数で設定します。位置はゼロから始まります。つまり、最初のフレームはフレーム番号ゼロになります。クリップが次回再生を開始すると、この位置のフレームから再生が開始されます。

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

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

setMicrosecondPosition

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

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

パラメータ:
microseconds - マイクロ秒数で表される、必要な新規メディア位置

setLoopPoints

public void setLoopPoints(int start,
                          int end)
ループ内で再生される最初および最後のサンプルフレームを設定します。最終地点は開始地点より大きいかまたは同一にする必要があります。また、どちらの地点もロードされたメディアのサイズ内の大きさにする必要があります。開始地点を 0 の値にすると、ロードされたメディアの始まりを示します。同様に、最終地点を -1 の値にすると、メディアの最終フレームを示します。
パラメータ:
start - ループの開始位置 (サンプルフレーム数、ゼロから始まる)
end - ループの最終位置 (サンプルフレーム数、ゼロから始まる)、または最終フレームを示す場合は -1
例外:
IllegalArgumentException - 要求されたループ地点が設定できない場合。通常は、開始および最終の両方またはどちらかがメディアのデュレーション外にあるため、あるいは最終地点が開始ポイントの前にあるのが原因

loop

public void loop(int count)
現在の位置からループ再生を開始します。ループの最終地点まで再生されてから、ループの開始地点へ count 回戻り、最後にクリップの最後まで再生します。

このメソッドを呼び出したときに現在の位置がループの最終地点よりも大きくなる場合は、ループは実行されず、クリップの最後までそのまま再生されます。

count 値を 0 にすると、現在のループを停止してクリップの最後まで再生を継続することを示します。ループの操作中に他の値を指定してこのメソッドを呼び出したときの動作は定義されていません。

ループ中に再生を停止すると、現在のループ状態は解除されます。後続のループと開始要求の動作は、中断されたループ操作によって影響を受けません。

パラメータ:
count - 再生がループの最終地点からループの開始地点へループバックされる回数、またはループが中断されるまで継続することを示す場合は LOOP_CONTINUOUSLY

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

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