私はWebAudioAPIを使用しており、インパルスを出力する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>