合成音訊

在此示例中,我們將展示如何生成簡單的正弦波,並將其輸出到使用者的揚聲器/耳機上。

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 方法建立。