BaseAudioContext:createDelay() 方法

基线 广泛可用

此功能已得到良好建立,并在许多设备和浏览器版本中运行。它自 2021 年 4 月.

报告反馈

createDelay() 方法是 BaseAudioContext 接口的一种方法,用于创建一个 DelayNode,它用于将传入的音频信号延迟一定的时间。

语法

注意: DelayNode() 构造函数是创建 DelayNode 的推荐方法;请参见 创建 AudioNode
createDelay(maxDelayTime)

js

参数

maxDelayTime 可选

音频信号可以延迟的最大时间,以秒为单位。必须小于 180 秒,如果未指定,则默认为 1 秒。

返回值

示例

一个 DelayNode。默认的 DelayNode.delayTime 为 0 秒。

注意: DelayNode() 构造函数是创建 DelayNode 的推荐方法;请参见 创建 AudioNode
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);
};

规范

我们创建了一个简单的示例,允许您以恒定循环播放三个不同的样本 - 请参见 create-delay(您也可以 查看源代码)。如果您只按下播放按钮,循环将立即开始;如果您将滑块向上滑动到最右边,然后按下播放按钮,则将引入延迟,因此循环声音不会立即开始播放。
Web Audio API
# 规范

浏览器兼容性

dom-baseaudiocontext-createdelay

另请参见