JavaTM 2 Platform
Std. Ed. v1.3

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

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

public interface TargetDataLine
extends DataLine

ターゲットデータラインは、オーディオデータをそこから読み込めるタイプの DataLine です。もっとも一般的な例は、データをオーディオ取得デバイスから取得するデータラインです。デバイスはターゲットデータラインに書き込むミキサーとして実装されます。

このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。アプリケーションから見ると、ターゲットデータラインはオーディオデータのソースの役割をします。

ターゲットデータラインは、MixergetLine メソッドと DataLine.Info オブジェクトを呼び出して、ミキサーから取得できます。

TargetDataLine インタフェースは、ターゲットデータラインのバッファから取得したデータを読み込むメソッドを提供します。オーディオを録音するアプリケーションは、バッファがオーバーフローする前に、ターゲットデータラインからデータを素早く読み込みます。オーバーフローすると、取得したデータに不連続部が生じて、クリック音が聞こえることがあります。アプリケーションは、DataLine インタフェースで定義された available メソッドを使用して、データラインのバッファで現在キューに入っているデータの量を判別することができます。バッファがオーバーフローを起こした場合、キューに入っているもっとも古いデータが破棄され、新しいデータに置き換えられます。

導入されたバージョン:
1.3
関連項目:
Mixer, DataLine, SourceDataLine

クラス javax.sound.sampled.DataLine から継承した内部クラス
DataLine.Info
 
クラス javax.sound.sampled.Line から継承した内部クラス
Line.Info
 
メソッドの概要
 void open(AudioFormat format)
          指定されたフォーマットでラインを開き、ラインが必要なシステムリソースを獲得して操作可能になるようにします。
 void open(AudioFormat format, int bufferSize)
          指定されたフォーマットと指定されたバッファサイズでラインを開き、ラインが必要なシステムリソースを獲得して操作可能になるようにします。
 int read(byte[] b, int off, int len)
          データラインの入力バッファからオーディオデータを読み込みます。
 
インタフェース 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
 

メソッドの詳細

open

public void open(AudioFormat format,
                 int bufferSize)
          throws LineUnavailableException
指定されたフォーマットと指定されたバッファサイズでラインを開き、ラインが必要なシステムリソースを獲得して操作可能になるようにします。

バッファサイズはバイトで指定されますが、サンプルフレームの積分数を表示する必要があります。この条件に適合しないバッファサイズでこのメソッドを呼び出すと、IllegalArgumentException が表示されることがあります。開いたラインの実際のバッファサイズは、指定されたバッファサイズとは異なることがあります。実際に設定された値は、後続の呼び出し DataLine.getBufferSize() によって照会できます。

この操作が完了すると、ラインは開くものとしてマークされ、OPEN イベントがラインのリスナーにディスパッチされます。

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

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

パラメータ:
format - 望ましいオーディオ形式
bufferSize - 望ましいバッファサイズ、バイト単位
例外:
LineUnavailableException - リソースの制約のためにラインを開けない場合
IllegalArgumentException - バッファサイズがサンプルフレームの積分数を表示しない場合
IllegalStateException - ラインがすでに開いている場合
SecurityException - セキュリティ上の制約のためにラインを開けない場合
関連項目:
open(AudioFormat), Line.open(), Line.close(), Line.isOpen(), LineEvent

open

public void open(AudioFormat format)
          throws LineUnavailableException
指定されたフォーマットでラインを開き、ラインが必要なシステムリソースを獲得して操作可能になるようにします。

実装側がバッファサイズを選択します。バッファサイズはバイトで決定されますが、サンプルフレームの積分数を含んでいます。システムが選択したバッファサイズは、後続の DataLine.getBufferSize() を呼び出して照会できます。

この操作が完了すると、ラインは開くものとしてマークされ、OPEN イベントがラインのリスナーにディスパッチされます。

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

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

パラメータ:
format - 望ましいオーディオ形式
例外:
LineUnavailableException - リソースの制約のためにラインを開けない場合
IllegalStateException - ラインがすでに開いている場合
SecurityException - セキュリティ上の制約のためにラインを開けない場合
関連項目:
open(AudioFormat, int), Line.open(), Line.close(), Line.isOpen(), LineEvent

read

public int read(byte[] b,
                int off,
                int len)
データラインの入力バッファからオーディオデータを読み込みます。バイトで配列に指定された座標から開始して、要求されたバイト数が指定された配列に読み込まれます。このメソッドは、要求された量のデータが読み込まれるまでブロックされます。ただし、要求された量が読み込まれる前にデータラインがクローズ、停止、排出、またはフラッシュされると、メソッドはブロックされないでそれまでに読み込まれたバイト数を返します。

ブロックせずに読み込めるバイト数は、DataLine インタフェースの available メソッドを使って確認できます。このバイト数はブロックせずに確実に読み込めますが、追加データを読み込もうとするとブロックされるかどうかは確実ではありません。

読み込まれるバイト数は、次のような完全なサンプルフレーム数を表わす必要があります。

[読み込まれるバイト数] % [フレームサイズのバイト数] == 0

戻り値は常にこの条件に適合します。不完全なサンプルフレーム数を表わすバイト数を読み込むという要求は満たすことができないので、IllegalArgumentException が表示される場合があります。
パラメータ:
b - このメソッドが返すときの、要求された入力データを含むバイト配列
off - 配列の先頭からの座標、バイト単位
len - 読み込み要求されたバイト数
戻り値:
実際に読み込まれるバイト数
例外:
IllegalArgumentException - 要求されたバイト数が完全なサンプルフレーム数に相当しない場合
関連項目:
SourceDataLine.write(byte[], int, int), DataLine.available()

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.