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

浏览器兼容性

另见