私のアプリはPCMバイナリデータをサーバーからWeb Audio APIにストリームします。オーディオを正規化する私のJSオーディオストリーミングコードがx86システムとx86_64システムで異なるのはなぜですか?
、私は再生のために戻ってのfloat32にそれらをキャストする前に、32768によって各サンプルを分割し、Int16型に入ってくるデータをキャストするデータビューを使用します。
:var data = new DataView(arrayBuffer);
var tempArray = new Int16Array(data.byteLength/Int16Array.BYTES_PER_ELEMENT);
var len = tempArray.length;
for (var jj = 0; jj < len; ++jj) {
tempArray[jj] = data.getInt16(jj * Int16Array.BYTES_PER_ELEMENT, true);
}
var bufferToPlay = new Float32Array(tempArray.length);
var channelCounter = 0;
for (var i = 0; i < tempArray.length;) {
var normalizedAudio = tempArray[i]/32768;
i = i + 1;
bufferToPlay[channelCounter] = normalizedAudio;
channelCounter++;
}
ここすごみです
これを私の64ビットWinマシンで実行すると、オーディオは完璧です。しかし、私が古い32ビットのWin XPマシンを使用すると、オーディオはリサンプリング/ビット変換アーチファクトのようなサウンドでいっぱいです。
私はエンディアンについて多くのことを読んできましたが、どちらのマシンもPentiumなので、両方ともリトルエンディアンでなければなりませんよね?だからこれはどのように可能ですか?
ありがとうございます。それはサウンドカードのサンプリングレートの不一致であったことが分かります。 – user3174541