合成音频

在此示例中,我们将展示如何生成简单的正弦波,并将其输出到用户的扬声器/耳机上。

let audioContext = new (window.AudioContext || window.webkitAudioContext)();

let sourceNode = audioContext.createOscillator();
sourceNode.type = 'sine';
sourceNode.frequency.value = 261.6;
sourceNode.detune.value = 0;

//Connect the source to the speakers
sourceNode.connect(audioContext.destination);

//Make the sound audible for 100 ms
sourceNode.start();
window.setTimeout(function() { sourceNode.stop(); }, 100);

每个 sourceNode 变量的 startstop 方法都有一个可选参数 when,它指定在开始或停止之前等待的秒数

因此,停止声音的另一种方法是:

sourceNode.start();
sourceNode.stop(0.1);

振荡器节点的 type 参数可以设置为以下任何值:

  • 正弦(默认)
  • 广场
  • 锯齿
  • 黄金三角
  • 自定义波

自定义波是 PeriodicWaves,可以使用 AudioContext.createPeriodicWave 方法创建。