DelayNode - 代表音频处理模块中的延迟线

DelayNode 接口代表延迟线;一个 AudioNode 音频处理模块,它在输入数据到达和传播到输出之间产生延迟。 DelayNode 总是只有一个输入和一个输出,两者都有相同数量的通道。

DelayNode 充当延迟线,该处的值为 1s。

创建具有循环的图形时,必须在循环中至少有一个 DelayNode,否则参与循环的节点将被静音。

输入数量 1
输出数量 1
通道计数模式 "max"
通道数 2(未在默认计数模式下使用)
通道解释 "speakers"

构造函数

DelayNode()

创建 DelayNode 对象实例的新实例。或者,您可以使用 BaseAudioContext.createDelay() 工厂方法创建。

属性

从其父类 AudioNode 继承了属性。

DelayNode.delayTime 只读

一个 a-rateAudioParam 表示要应用的延迟量。

方法

没有特有的方法; 从其父类 AudioNode 继承了方法。

实例

我们创建了一个简单的示例,允许您在常量循环上播放三个不同的样本 — 请参阅 create-delay(您也可以查看源代码)。如果只按下播放按钮,循环将立即开始;如果将滑块向上滑动到右侧,然后按播放按钮,将引入延迟,因此循环声音不会在短时间内开始播放。

var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

var synthDelay = audioCtx.createDelay(5.0);

  ...

var synthSource;

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

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

...

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

规范

规范 状态 备注
Web Audio API
DelayNode 的定义
工作草案 -

桌面浏览器兼容性

特性 Chrome Edge Firefox Internet Explorer Opera Safari
基础支持 14 支持 25 不支持 15 6
DelayNode() constructor 551 未知 53 不支持 42 未知
delayTime 14 12 25 不支持 15 6

移动浏览器兼容性

特性 Android Chrome for Android Edge mobile Firefox for Android IE mobile Opera Android iOS Safari
基础支持 14 14 支持 26 未知 15 未知
DelayNode() constructor 551 551 未知 53 未知 42 未知
delayTime 支持 14 支持 26 未知 15 未知

1. 在版本 59 之前,不支持默认值。

相关链接