モジュール java.desktop
パッケージ javax.sound.sampled

インタフェースClip

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

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

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

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

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

    導入されたバージョン:
    1.3
    • フィールドの詳細

      • LOOP_CONTINUOUSLY

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

      • 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)
        メディアの位置をサンプル・フレーム数で設定します。 位置はゼロから始まります。つまり、最初のフレームはフレーム番号ゼロになります。 クリップが次回再生を開始すると、この位置のフレームから再生が開始されます。

        サンプル・フレーム内の現在位置を取得するには、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がループが中断されるまで継続する必要があることを示す