(クラス)
public abstract AudioData
オーディオ サンプルのソースの基本クラス。
説明
一般に、
AudioData 基本クラスにはかまわず
Wave、
ToneGenerator、
Echo などのサブクラスを使用します。ただし、他のファイル形式をサポートしたり、さまざまなフィルタ効果を提供したりする独自の
AudioData サブクラスを自由に実装できます。
AudioData サブクラスでは、サンプル フレーム数で示された一連のオーディオ データ サンプルを提供します。サンプル フレーム数は、サンプルあたりのデータのビット数およびサンプル データのチャネル数とは無関係です。たとえば、16 ビット 立体音響ステレオ サンプルのパルス符号変調 (PCM) データは、サンプル フレームあたりに 4 バイトを使用します。
アクセサ public abstract AudioData.bits-per-sample:
int
channels: | 格納済みサンプル データに関連付けられているチャネル数を返します。モノラル サンプルは 1、ステレオ サンプルは 2、というように値を返します。 |
アクセサ public abstract AudioData.channels:
int
アクセサ public abstract AudioData.duration:
Time
frames: | この AudioData オブジェクトでサンプル フレーム数を返します。 |
アクセサ public abstract AudioData.frames:
int
アクセサ public abstract AudioData.sample-rate:
Frequency
valid?: | 格納済みサンプル データが有効な場合は true を返します。 |
アクセサ public abstract AudioData.valid?:
bool
get-sample-data: | initial-frame から始まり、frame-count まで続くフレームのサンプル データ ブロックを格納している配列を返します。 |
public abstract | {AudioData.get-sample-data initial-frame:int = 0,frame-count:int = -1 }:#{FastArray-of uint8} |
(アクセサ)
(アクセサ)
アクセサ public abstract AudioData.bits-per-sample:
int
(アクセサ)
アクセサ public abstract AudioData.channels:
int 格納済みサンプル データに関連付けられているチャネル数を返します。モノラル サンプルは 1、ステレオ サンプルは 2、というように値を返します。
(アクセサ)
アクセサ public abstract AudioData.duration:
Time
(アクセサ)
アクセサ public abstract AudioData.frames:
int この AudioData オブジェクトでサンプル フレーム数を返します。
(アクセサ)
アクセサ public abstract AudioData.sample-rate:
Frequency
(アクセサ)
アクセサ public abstract AudioData.valid?:
bool 格納済みサンプル データが有効な場合は true を返します。
(メソッド)
public abstract | {AudioData.get-sample-data initial-frame:int = 0,frame-count:int = -1 }:#{FastArray-of uint8} |
initial-frame から始まり、frame-count まで続くフレームのサンプル データ ブロックを格納している配列を返します。
initial-frame: この整数値は、情報の抽出を開始するオーディオ データ フレームを指定します。既定では、フレーム 0 のサンプル データの先頭から読み取りが開始されます。オーディオ ソース データがファイル (.wav など) の場合、この値は、該当ファイル内のオーディオ データの先頭からのオフセットをフレーム単位で指定します。
frame-count: この整数値は、読み取るオーディオ ソース データの、initial-frame から始まるフレーム総数を指定します。
-1 の既定値は、すべてのフレームが読み取られることを示します。
戻り値
FastArray-of uint8 には、サンプル データが格納されています。この配列には、
frame-count によって要求されたフレームの数を格納します。配列に格納されている要素数(バイト数)は
frame-count の倍数になる可能性があります。; 例えば、サンプルあたり16ビットの2つのチャネルでデータが構成されている場合、フレームあたり4バイトになります。
サンプルあたり8ビット以上のデータには、プラットフォームに関わらず little-endian 方式が使用されなければなりません。実際に、これが簡単な方式です。次のコードは、ステレオの16ビットオーディオデータをプラットフォームに依存せずにエンコードする方法を示しています。
let result:{FastArray-of uint8} =
{{FastArray-of uint8}.from-size frame-count * 4, 0}
{for frame-index = 0 below frame-count do
let (left-sample:int16, right-sample:int16) =
{compute-next-frame}
let left-low-byte:uint8 = {bit-and left-sample, 255} asa uint8
let left-high-byte:uint8 = {bit-srl left-sample, 8} asa uint8
let right-low-byte:uint8 = {bit-and rightsample, 255} asa uint8
let right-high-byte:uint8 = {bit-srl right-sample, 8} asa uint8
let result-out-index:int = frame-index * 4
set result[result-out-index + 0] = left-low-byte
set result[result-out-index + 1] = left-high-byte
set result[result-out-index + 2] = right-low-byte
set result[result-out-index + 3] = right-high-byte
}