跳到主要内容

connect

2024年02月05日
柏拉文
越努力,越幸运

一、认识


AudioNode 接口的 connect() 方法使你能将一个节点的输出连接到一个指定目标,这个指定的目标可能是另一个 AudioNode(从而将音频数据引导到下一个指定节点)或一个AudioParam, 以便上一个节点的输出数据随着时间流逝能自动地对下一个参数值进行改变。

二、语法


var destinationNode = AudioNode.connect(destination, outputIndex, inputIndex);

AudioNode.connect(destination, outputIndex);
  • destination: 需要连接的 AudioNodeAudioParam.

  • outputIndex: 一个索引,用于描述当前 AudioNode 的哪个输出会连接到 destination。索引数字是由输出频道的数量来确定的。当你只能将给定的输出连接到给定的输入一次(重复的尝试会被忽略)时,可以通过多次调用 connect() 将一个输出连接到多个输入。可以通过这样来实现扇出。这个参数的默认值为 0

  • inputIndex: 一个索引,用于描述当前 AudioNode 会连接到 destination 的哪个输入,它的默认值是 0。索引数字是由输入频道的数量来确定的。将一个 AudioNode 连接回之前的 AudioNode,以此形成一个圈是可行的。不过只在这个圈里有至少一个 DelayNode 才可行。否则会抛出一个 NotSupportedError 异常。此参数在 destinationAudioParam 时不可用。

  • destinationNode: 如果 destination 是一个节点, connect() 返回 destination 所表示的 AudioNode 对象的引用,允许你链式地调用数个 connect() 。某些浏览器关于该接口的旧实现会返回 undefined。 如果 destination 是一个 AudioParam、connect() 返回 undefined

三、异常


3.1 IndexSizeError

IndexSizeError 这个异常表明 outputIndexinputIndex 与当前输入或输出不符。

3.2 InvalidAccessError

InvalidAccessError 目标节点与原节点不在同一个音频上下文。

3.3 NotSupportedError

NotSupportedError 该链接会形成一个闭环(音频在这个环里不断重复经过同一个节点)并且这个闭环里没有 DelayNode (en-US) 来防止产生的波形被卡住,不停地构建相同的音频帧。