在 JavaScript 中修改 AudioBuffer 音量

Modify AudioBuffer volume in JavaScript

如何修改 javascript 中的 AudioBuffer 音量? 我只想修改 AudioBuffer 音量而不播放任何声音并且不使用任何增益。 最后,我想要一个修改音量的新 AudioBuffer。

假设您想要将现有 AudioBuffer 中的所有值乘以 2。您可以通过遍历所有值来应用计算来实现。

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;
    }
}

这将就地编辑所有值。如果您想将所有值复制到新的 AudioBuffer,您可以按如下方式进行。

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;
    }
}

上面的示例创建了一个 AudioBuffer,其属性与现有的完全相同。它将使现有的 AudioBuffer 保持不变。