Ricevo campioni PCM a 16 bit interlacciati via cavo. Ogni campione è firmatoPCM Web Audio Api Javascript - Sto ricevendo suoni distorti
L'ho letto come array Int16bit, consente di chiamare questo ALL_DATA. Quindi ciascuna delle voci dell'array è un campione a 16 bit.
Poiché è interlacciato, lo estraggo in 2 canali R-L-R-L Finisco con 2 (16 bit) matrici della dimensione della matrice ALL_DATA.
Dopodiché analizzo ciascun campione e lo normalizzo in Float32Array perché è quello che utilizza l'API di audio Web .
var normalizedSample = (campione> 0)? sample/32768: sample/-32768;
È questo il modo giusto per farlo.
I suoni vengono distorti. Puoi dire cosa sta succedendo. Quindi, letteralmente, se ascolti la chitarra classica sembra che sia elettrico con distorsione.
Per amor di argomenti sto mettendo giù il codice di esempio, ma questo codice gestisce
MONO SOUND per rendere l'esempio più semplice, in modo che non devono interleave esso pure
var startTime = 0;
var fileReader = new FileReader();
fileReader.onload = function (e) {
var data = new DataView(e.target.result);
var audio = new Int16Array(data.byteLength/Int16Array.BYTES_PER_ELEMENT);
var len = audio.length;
for (var jj = 0; jj < len; ++jj) {
audio[jj] = data.getInt16(jj * Int16Array.BYTES_PER_ELEMENT, true);
}
var right = new Float32Array(audio.length);
var channleCounter = 0;
for (var i = 0; i < audio.length;) {
var normalizedRight = (audio[i] > 0) ? audio[i]/32768 : audio[i]/-32768;
i = i + 1;
right[channleCounter] = normalizedRight;
channleCounter++;
}
var source = audioContext.createBufferSource();
var audioBuffer = audioContext.createBuffer(1, right.length, 44100);
audioBuffer.getChannelData(0).set(right);
source.buffer = audioBuffer;
source.connect(audioContext.destination);
source.noteOn(startTime);
startTime += audioBuffer.duration;
};
Qualche suggerimento potrebbe essere la causa del suono distorto. Ho scritto i dati di pcm prima di inviarlo sul lato server a un file è buono e il suono è perfetto.
Il tuo post mi ha fatto FINALMENTE far funzionare audio ... Grazie una tonnellata per la pubblicazione i vostri sforzi, ha fatto il mio audio vicino cristallino ora :) – ole
Qui lei ha detto che si è utilizzato MONO suono per renderlo semplice. Sto provando a farlo con il suono stereo. sai come si fa? –