This translation is incomplete. Please help translate this article from English

WaveShaperNode 接口的 curve 属性是一个描述要被应用的畸变的Float32Array 数组.

数组的中间元素被应用于每个信号数值 0, 第一个应用于信号数值 -1,最后一个应用于信号数值 1; 小于 -1 或者大于 1 的数值分别按照 -11 来处理。

如有必要, 使用线性插值计算畸变曲线的中间值。

注意: 数组的值可以是 null : 在这个情况下, 不会有畸变被应用到输入的信号上。


var audioCtx = new AudioContext();
var distortion = audioCtx.createWaveShaper();
distortion.curve = myCurveDataArray; // myCurveDataArray is a Float32Array


 一个 Float32Array.


The following example shows basic usage of an AudioContext to create a wave shaper node. For applied examples/information, check out our Voice-change-O-matic demo (see app.js for relevant code).

Note: Sigmoid functions are commonly used for distortion curves because of their natural properties. Their S-shape, for instance, helps create a smoother sounding result. We found the below distortion curve code on Stack Overflow.

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var distortion = audioCtx.createWaveShaper();


function makeDistortionCurve(amount) {
  var k = typeof amount === 'number' ? amount : 50,
    n_samples = 44100,
    curve = new Float32Array(n_samples),
    deg = Math.PI / 180,
    i = 0,
  for ( ; i < n_samples; ++i ) {
    x = i * 2 / n_samples - 1;
    curve[i] = ( 3 + k ) * x * 20 * deg / ( Math.PI + k * Math.abs(x) );
  return curve;


distortion.curve = makeDistortionCurve(400);
distortion.oversample = '4x';


Specification Status Comment
Web Audio API
Working Draft  


Update compatibility data on GitHub
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
curveChrome Full support 14Edge Full support 12Firefox Full support 25IE No support NoOpera Full support 15Safari Full support 6WebView Android Full support YesChrome Android Full support 18Firefox Android Full support 26Opera Android Full support 14Safari iOS Full support YesSamsung Internet Android Full support 1.0


Full support  
Full support
No support  
No support