2

生データをメモリからサンプルとして Web Audio Api に追加する方法はありますか? Int8Array (または Int16Array) をバッファーとして追加したいと思います。バッファーにはサンプルだけがあり、WAV や MP3 などの形式はありません。私は成功せずに audioContext.createBuffer などを試しました。

このようなもの:

var buffer = audioContext.createBuffer(1,8192, 22000);
var intArray = new Int8Array(....);
// -- fill intarray
buffer.buffer = intArray;
...
var source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination); 

それが不可能な場合、メモリ内で簡単に「エミュレート」できる contetx.decodeAudio() と互換性のあるサウンド形式はありますか? つまり、ヘッダーか何かです。

4

1 に答える 1

6

それは非常に直感的ではなく、仕様に明示的に文書化されておらず、ネット上で見つけるのも簡単ではありません:

ただし、任意のバッファFloat32Arrayで返される を簡単に変更できます。getChannelData(<idx of channel>)

サンプルを [-1, 1] の範囲にスケーリングすることを忘れないでください

あなたの例では、intArray の値をスケールして、呼び出して取得した floatArray にコピーします。

floatArray = buffer.getChannelData(0)
于 2013-02-12T23:19:06.753 に答える