私はWeb Audio APIを使用しており、インパルスを出力するJavaScriptNodeを作成しようとしています。つまり、1を出力するノードが必要で、その後には0の束が残り、それ以外のものはありません。JavaScriptNode(Web Audio API)を使用してインパルスを作成する
私はこれを行うには、以下のコードが分かりやすい方法だと思っていました。 "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>
非常に短い「クリック」を作成しようとしていますか?興味深い.. – Lloyd
正確に。インパルスは、信号処理構造をテスト/デバッグしているときに便利ですが、聞くのが楽しいとは認めていません。 ;) –