2014-11-07 3 views
1

다양한 목적으로 웹 오디오를 사용하고 있으며 URL 및 오실레이터를 통해로드 된 샘플이 올바르게 작동하고 재생되는 동안 사용자 지정 소스 버퍼를 작성하는 것은 아닙니다. 아래 코드를 사용하여 AudioBufferSourceNode에 내 AudioBuffer를로드하려고 시도했으며 Chrome-NetBeans 디버거를 통해 데이터가있는 버퍼를로드하고 오류가 표시되지 않는 것을 볼 수 있지만 시작이 호출되면 사운드가 생성되지 않습니다. 버퍼에 노이즈를 채우는 것 뿐이지 만, 내 자신의 사용자 정의 웨이브 데이터로 채울 계획입니다. 잘못된 데이터 형식으로 버퍼를 채울 가능성이 있음을 알고 있지만 적절한 방법에 관한 문서 나 예제를 찾을 수 없었습니다. 어떤 도움을 주시면 감사하겠습니다.내 웹 오디오 버퍼 채우기가 작동하지 않습니다.

var audioContext = new (window.AudioContext || window.webkitAudioContext)(); 
var frameCount = 2000; 
var sampleRate = 4000; 
var myBuffer = audioContext.createBuffer(2, frameCount, sampleRate); 

// FILL WITH WHITE NOISE 
for (var i = 0; i < frameCount; i++) { 
    myBuffer[i] = Math.random() * 2 - 1; 
} 
sourceNode = audioContext.createBufferSource(); 
sourceNode.buffer = myBuffer; 
sourceNode.connect(audioContext.destination); 
sourceNode.start(0); 

답변

0

이 매번이라고 당신은 샘플의 또 다른 BUFF_SIZE 번호를 렌더링 한 콜백 메소드 내부 당신의 잡음을 신스합니다

var BUFF_SIZE = 2048; // spec allows, yet do not go below 1024 
var audio_context = new AudioContext(); 
var gain_node = audio_context.createGain(); 
gain_node.connect(audio_context.destination); 
var source_node = audio_context.createScriptProcessor(BUFF_SIZE, 1, 1); 

source_node.onaudioprocess = (function() { 

    return function(event) { 

     var synth_buff = event.outputBuffer.getChannelData(0); // mono for now 

     // FILL WITH WHITE NOISE 
     for (var i = 0, buff_size = synth_buff.length; i < buff_size; i++) { 
      synth_buff[i] = Math.random() * 2 - 1; 
     } 
    }; 
}()); 

source_node.connect(gain_node); 
관련 문제