Wave (クラス)
public final Wave {inherits AudioData}
パッケージ: CURL.AUDIO.SOURCES

RIFF WAV 形式データのロードと再生のための AudioData サブクラス。

説明

WAV データは、Url から、または ByteInputStream からロードできます。すべての AudioData パラメータは、WAV ファイル ヘッダーから読み取られます。

注意事項

現時点では、非圧縮 ("type 1") PCM ファイルおよび圧縮 ("type 2") Microsoft ADPCM ファイルのみサポートしています。

注意事項

非同期ロードは、 async?true に設定することによって呼び出されます。非同期ロードにより、アプレットで、データの読み取りとは無関係に実行を続けることができますが、ファイルがロードされたかどうかをテストするために少し特別なコードが必要です。指定されたポイントでは、Wave がまだ有効でない場合があるので、Wave.valid? ゲッターを介して調べる必要があります。Wave.valid? ゲッターは、RIFF ヘッダーが構文解析された後、おそらくサウンド データが読み取られる前に true を返します。 Wave.loaded ゲッターは、任意のポイントで実際に読み取られた Wave.frames または Wave.duration の比率を返します。

時には、Url ではなく ByteInputStream を WAV データのソースとして渡した方がよい場合があります。そのような場合には、 Wave.from-byte-input-stream コンストラクタを使用します。

コンストラクタ
from-byte-input-stream:ByteInputStream から Wave を作成します。
コンストラクタ public {Wave.from-byte-input-stream
bis:ByteInputStream,
async?:bool = false
}
from-url:Url から Wave を作成します。
コンストラクタ public {Wave.from-url url:Url, async?:bool = false}

プロパティ
bits-per-sample:サンプルあたりのデータのビット数を返します。
アクセサ public Wave.bits-per-sample:int
channels:格納済みサンプル データに関連付けられているチャネル数を返します。モノラル サンプルは 1、ステレオ サンプルは 2、というように値を返します。
アクセサ public Wave.channels:int
duration:サンプル データの全長を秒単位で返します。
アクセサ public Wave.duration:Time
frames:この AudioData オブジェクトでサンプル フレーム数を返します。
アクセサ public Wave.frames:int
loaded:読み取られたサンプル データの Fraction を返します。
アクセサ public Wave.loaded:Fraction
sample-rate:1 秒あたりのサンプル フレーム数を返します。
アクセサ public Wave.sample-rate:Frequency
valid?:Wave オブジェクトに有効なデータが含まれている場合は、true を返します。
アクセサ public Wave.valid?:bool
プロパティ 継承 AudioData: audio-format

メソッド
get-sample-data:initial-frame から始まり、frame-count まで続くフレームのサンプル データ ブロックを格納している配列を返します。
public {Wave.get-sample-data
initial-frame:int = 0,
frame-count:int = -1
}:#{FastArray-of uint8}
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
from-byte-input-stream (コンストラクタ)
public {Wave.from-byte-input-stream
bis:ByteInputStream,
async?:bool = false
}

ByteInputStream から Wave を作成します。

bis: 読み取り元の ByteInputStream
async?: Wave データを非同期に読み取るかどうかを指定するブール値。既定値は、Wave オブジェクトのロードが同期していることを示す false です。


from-url (コンストラクタ)
public {Wave.from-url url:Url, async?:bool = false}

Url から Wave を作成します。

url: PCM または ADPCM データの読み取り元の URL。
async?: Wave を開いて非同期に読み取るかどうかを指定するブール値。既定値は、Wave オブジェクトのロードが同期していることを示す false です。



プロパティ詳細
bits-per-sample (アクセサ)
アクセサ public Wave.bits-per-sample:int

サンプルあたりのデータのビット数を返します。



channels (アクセサ)
アクセサ public Wave.channels:int

格納済みサンプル データに関連付けられているチャネル数を返します。モノラル サンプルは 1、ステレオ サンプルは 2、というように値を返します。



duration (アクセサ)
アクセサ public Wave.duration:Time

サンプル データの全長を秒単位で返します。



frames (アクセサ)
アクセサ public Wave.frames:int

この AudioData オブジェクトでサンプル フレーム数を返します。



loaded (アクセサ)
アクセサ public Wave.loaded:Fraction

読み取られたサンプル データの Fraction を返します。

注意事項

この値の範囲は、オーディオ データが無効な場合やアンロードされた場合の 0.0 から、データが完全にロードされた 1.0 までです。


sample-rate (アクセサ)
アクセサ public Wave.sample-rate:Frequency

1 秒あたりのサンプル フレーム数を返します。



valid? (アクセサ)
アクセサ public Wave.valid?:bool

Wave オブジェクトに有効なデータが含まれている場合は、true を返します。

注意事項

オーディオ データが非同期に読み取られており、まだ読み取りが終わっていない場合、Wave には、適切な長さの有効なデータ (無音) が含まれています。非同期ロードのステータスを確認するには、 Wave.loaded ゲッターを使用します。





メソッド詳細
get-sample-data (メソッド)
public {Wave.get-sample-data
initial-frame:int = 0,
frame-count:int = -1
}:#{FastArray-of uint8}

initial-frame から始まり、frame-count まで続くフレームのサンプル データ ブロックを格納している配列を返します。

initial-frame: この整数値は、情報の抽出を開始するオーディオ データの先頭フレームを指定します。既定では、フレーム番号 0 のサンプル データの先頭から読み取りが開始されます。Wave オブジェクトのインスタンスの場合、この値は、該当ファイル内のオーディオ データの先頭からのオフセットをフレームで指定します。
frame-count: この整数値は、読み取るオーディオ ソース データの、initial-frame オフセットから始まるフレーム総数を指定します。-1 の既定値は、すべてのフレームが読み取られることを示します。

注意事項

async? キーワードを true に設定して Wave オブジェクトを作成する場合、このメソッドを呼び出しても Wave がまだ完全にロードされていないことがあります。Wave が完全にロードされる前に get-sample-data を呼び出した場合、さらに多くのデータを要求しても、現在ロードされているフレームだけが返されます。現在ロードされている Wave の数を調べるには、 Wave.loaded アクセッサを使用します。