在 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
保持不变。
如何修改 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
保持不变。