【发布时间】:2012-03-01 16:36:57
【问题描述】:
我正在使用 Web Audio API,并且正在尝试制作一个输出脉冲的 JavaScriptNode。也就是说,我想要一个输出 1 后跟一大堆零的节点,仅此而已。
我认为下面的代码是一种明智的做法。我将一个名为“timeForAnImpulse”的变量初始化为 true,并使用该变量触发音频回调的脉冲输出。在回调中,我将“timeForAnImpulse”设置为 false。
这似乎应该工作,但它没有。我得到的不是单个脉冲,而是一个脉冲序列(每个缓冲区开头的 1)。知道我做错了什么吗?
<script type="text/javascript">
window.onload = init;
function impulseNodeCB(evt){
if(timeForAnImpulse){
var buf = evt.outputBuffer.getChannelData(0);
buf[0] = 1;
timeForAnImpulse = false;
}
}
var timeForAnImpulse = true;
function init() {
var context = new webkitAudioContext();
impulseNode = context.createJavaScriptNode(2048,0,1);
impulseNode.onaudioprocess = impulseNodeCB;
impulseNode.connect(context.destination);
}
</script>
</head>
【问题讨论】:
-
那么您只是想创建一个极其简短的“点击”吗?有趣..
-
没错。当您测试/调试信号处理结构时,冲动会派上用场,尽管我承认听它们并不太有趣。 ;)