【发布时间】:2021-11-13 19:26:35
【问题描述】:
我正在尝试使用网络音频,并制作了一个播放音符的功能。
var context = new (window.AudioContext || window.webkitAudioContext)()
var make_triangle = function(destination, frequency, start, duration) {
var osc = context.createOscillator()
osc.type = "triangle"
osc.frequency.value = frequency
var gain = context.createGain()
osc.connect(gain)
gain.connect(destination)
// timing
osc.start(start)
osc.stop(start + 2*duration) // this line is discussed later
gain.gain.setValueAtTime(0.5, start)
gain.gain.linearRampToValueAtTime(0, start+duration)
}
用法是这样的:
make_triangle(context.destination, 440, context.currentTime+1, 1)
这很好用。
Firefox 在其开发者控制台中有一个 Web Audio 选项卡。当我播放声音时,振荡器和增益会显示在图表中。如果没有osc.stop(start + 2*duration) 行,这些将永远存在。使用osc.stop(start + 2*duration) 线,振荡器消失,但增益永远保持连接到 AudioDestination。
我不想因为连接很多旧东西而导致内存泄漏或性能下降。 创建节点后需要清理到什么程度?我应该停止振荡器吗?断开一切?两者都有?
【问题讨论】:
标签: web-audio-api