Javascript AudioContext:振荡器-知道何时播放所有声音
我正在使用javascript api(miniMusic)。我能够创建一个音乐,然后导出javascript代码。我也能运行它 我希望能够知道我的音乐何时结束,这样我就可以再次播放并控制它Javascript AudioContext:振荡器-知道何时播放所有声音,javascript,audiocontext,Javascript,Audiocontext,我正在使用javascript api(miniMusic)。我能够创建一个音乐,然后导出javascript代码。我也能运行它 我希望能够知道我的音乐何时结束,这样我就可以再次播放并控制它 with(new AudioContext) for(i in D=[12,,,13,,,18,,,,,,12,,,13,,,18,,,,,,12,,,13,,,18,,,15,,,12,,,8,,,12,,,13]) { with(createOscillator()) if(D[i]) {
with(new AudioContext)
for(i in D=[12,,,13,,,18,,,,,,12,,,13,,,18,,,,,,12,,,13,,,18,,,15,,,12,,,8,,,12,,,13]) {
with(createOscillator())
if(D[i]) {
connect(destination)
frequency.value=800*1.06**(13-D[i]),
type='square',
start(i*.1),
stop(i*.1+.1)
}
}
// -> onEnd = function (...) {}
循环会立即运行,因此我无法使用索引来定位音乐播放的音符。
有人能帮我吗?振荡器有一个函数,当音调结束时调用该函数,但是您链接的api为每个音符创建了一个新的振荡器,您可以计算播放的音符数,然后在音符数等于乐曲中的音符数时循环
范例
with(新的音频上下文)
对于(D中的i=[12,13,18,12,13,18,12,13,18,12,13,18,15,12,8,12,13]){
使用(create振荡器())
if(D[i]){
onended=函数(){
log(“音符已停止播放”);
}
连接(目的地)
频率值=800*1.06**(13-D[i]),
类型='square',
启动(i*.1),
停止(i*.1+1)
}
}