使用Web Audio剪辑:如何使Firefox表现得像Chrome?

时间:2019-06-04 10:26:23

标签: google-chrome firefox html5-audio web-audio web-audio-api

Canopy中执行的代码段:

// @channels 1
// @duration 0.25
// @sampleRate 44100

var osc = new OscillatorNode(context);
var gain = context.createGain();
gain.gain.setValueAtTime(2, 0.25/2);
osc.connect(gain);
gain.connect(context.destination);
osc.start();

使用Audacity录制:

Annotated screenshot of Audacity recording showing clipping in Chrome

Chrome 74剪辑,而Firefox 66没有。

我也可以让Firefox来裁剪信号吗?(这是我所期望的)

1 个答案:

答案 0 :(得分:1)

如果要确保输出被裁剪,则可以通过至少三种方式进行:

  • 使用WaveShaperNode为您执行剪辑。 (随处可见)。
  • 使用ScriptProcessorNode(不建议使用)进行剪辑。
  • 使用AudioWorkletNode进行剪辑。 (并非到处都有。)

示例:(由OP添加,请仔细检查)

// @channels 1
// @duration 0.25
// @sampleRate 44100

var osc = new OscillatorNode(context);
var gain = context.createGain();
gain.gain.setValueAtTime(2, 0.25/2);
osc.connect(gain);

var waveShaper = new WaveShaperNode(context, {
    curve: new Float32Array([-1, 1])
});
gain.connect(waveShaper);
waveShaper.connect(context.destination);

osc.start();