저는 Web Audio API를 사용하여 임펄스를 출력하는 JavaScriptNode를 만들려고합니다. 즉, 1을 출력하고 출력 할 노드가 필요합니다. 그 밖의 것은 0입니다.JavaScriptNode (웹 오디오 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
정확히. 신호 처리 구조를 테스트/디버깅 할 때 충격이 들기는하지만, 나는 듣기에는별로 재미가 없다는 것을 인정한다. ;) –