web-audio 合成音频

示例

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

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

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

//将信号源连接到扬声器
sourceNode.connect(audioContext.destination);

//使声音可听到100毫秒
sourceNode.start();
window.setTimeout(function() { sourceNode.stop(); }, 100);

上面的变量的start和stop方法sourceNode都有一个可选参数when,用于指定启动或停止之前要等待的秒数

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

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

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

  • 正弦(默认)

  • 广场

  • 锯齿

  • 训练

  • 风俗习惯

自定义波形是PeriodicWaves并且可以使用该AudioContext.createPeriodicWave方法创建。