¿Cómo se puede modificar el volumen de AudioBuffer en javascript? Solo quiero modificar el volumen de AudioBuffer sin reproducir ningún sonido y sin usar ninguna ganancia. Finalmente, quiero tener un nuevo AudioBuffer con volumen modificado.
Digamos que desea multiplicar todos los valores dentro de un AudioBuffer existente por 2. Puede hacerlo recorriendo todos los valores para aplicar el cálculo.
for (let channel = 0; channel < audioBuffer.numberOfChannels; channel += 1) { const channelData = audioBuffer.getChannelData(channel); for (let sample = 0; sample < channelData.length; sample += 1) { channelData[sample] *= 2; } } Esto editará todos los valores en su lugar. Si desea copiar todos los valores a un nuevo AudioBuffer , puede hacerlo de la siguiente manera.
const copiedAudioBuffer = new AudioBuffer({ length: audioBuffer.length, numberOfChannels: audioBuffer.numberOfChannels, sampleRate: audioBuffer.sampleRate }); for (let channel = 0; channel < audioBuffer.numberOfChannels; channel += 1) { const channelData = audioBuffer.getChannelData(channel); const copiedChannelData = copiedAudioBuffer.getChannelData(channel); for (let sample = 0; sample < channelData.length; sample += 1) { copiedChannelData[sample] = channelData[sample] * 2; } } El ejemplo anterior crea un AudioBuffer con exactamente las mismas propiedades que el existente. Dejará intacto el AudioBuffer existente.