BaseAudioContext: createDelay() 方法

Baseline 已廣泛支援

此特性已得到良好支援,可在多種裝置和瀏覽器版本上使用。自 2021 年 4 月起,所有瀏覽器均已支援此特性。

BaseAudioContext 介面的 createDelay() 方法用於建立一個 DelayNode,該節點用於將傳入的音訊訊號延遲一段時間。

注意: 建立 DelayNode 的推薦方式是使用 DelayNode() 建構函式;請參閱 建立 AudioNode

語法

js
createDelay(maxDelayTime)

引數

maxDelayTime 可選

音訊訊號可以延遲的最大時間(以秒為單位)。必須小於 180 秒,如果未指定,則預設為 1 秒。

返回值

一個 DelayNode。預設的 DelayNode.delayTime 為 0 秒。

示例

我們建立了一個示例,允許您迴圈播放三個不同的取樣——請參閱 create-delay(您也可以 檢視原始碼)。如果您只點擊播放按鈕,迴圈將立即開始;如果您將滑塊向上滑動,然後點選播放按鈕,則會引入延遲,因此迴圈聲音不會立即播放。

js
const audioCtx = new AudioContext();

const synthDelay = audioCtx.createDelay(5.0);

// …

let synthSource;

playSynth.onclick = () => {
  synthSource = audioCtx.createBufferSource();
  synthSource.buffer = buffers[2];
  synthSource.loop = true;
  synthSource.start();
  synthSource.connect(synthDelay);
  synthDelay.connect(destination);
  this.setAttribute("disabled", "disabled");
};

stopSynth.onclick = () => {
  synthSource.disconnect(synthDelay);
  synthDelay.disconnect(destination);
  synthSource.stop();
  playSynth.removeAttribute("disabled");
};

// …

let delay1;
rangeSynth.oninput = () => {
  delay1 = rangeSynth.value;
  synthDelay.delayTime.setValueAtTime(delay1, audioCtx.currentTime);
};

規範

規範
Web Audio API
# dom-baseaudiocontext-createdelay

瀏覽器相容性

另見