2013-06-06 3 views
8

웹 오디오 API 설명서 및 자습서를 확인했지만이 문제를 해결하는 방법을 알아 내지 못했습니다.웹 오디오 API : 사운드 예약 및 믹스 내보내기

XMLHttpRequest를 통해 몇 개의 wav 파일을로드 한 다음 buffersources를 작성한다고 가정 해 보겠습니다. 재생이 정확하게 시작될 때 일정을 잡을 수 있습니다. 그러나 내가 그들을 연주하고 싶지는 않지만 대신 버퍼에 저장하고 일정을 잡기를 원하면 어떻게해야할까요?

실제 예 : 드럼을 예약하고 전체 믹스를 wav로 내보내는 간단한 시퀀서를 만들려고합니다 (RecorderJS 등을 사용하여 녹음하지 않고). 어떤 아이디어, 도서관?

답변

4

그냥 조금 이렇게했습니다.

var offline = new webkitOfflineAudioContext(numChannels, lengthInSamples, sampleRate) 

당신이 새로운 컨텍스트 사용하여 모든 BufferSources을 다시해야합니다 : : 그런 다음 재생을 예약

var newBufferSource = offline.createBufferSource(); 
newBufferSource.buffer = someAudioBuffer; 
newBufferSource.connect(offline.destination); 

을 :

기본적으로, 당신은 오프라인 환경을 만들어야합니다

newBufferSource.start(offline.currentTime + 10); 

그런 다음 오프라인 대여에 대한 complete 이벤트에 바인딩하십시오. 디링 (dering) :

offline.onComplete = function(ev){ 
    doSomething(ev.renderedBuffer); 
} 

그런 다음 '렌더링'을 시작 : 당신이 ev.renderedBuffer가 있으면

offline.startRendering(); 

, 당신은 당신이 그것으로 원하는 건 뭐든지 할 수 있습니다. 내 응용 프로그램에는 필자가 직접 작성한 WAV 인코더가 있지만 Recorder.js를 수정하여 동일한 작업을 쉽게 수행 할 수 있습니다.

단지 헤드 업 : webkitOfflineAudioContext은 현재 Chrome 전용입니다. 관심이있는 경우 다음 링크를 참조하십시오. OfflineAudioContext

+1

어쨌든 설명서를보고이 오프라인 컨텍스트의 목적을 파악하지 못했습니다. 고마워요. :) 다음은 내가 만든 작업 예제입니다. http://jsfiddle.net/jC6rd/ –

+0

굉장합니다. 다행 이네요. –

+0

offline.startRendering(); 사파리에서 일하지 않아요, 이것에 대한 해결책이 있습니까? –

관련 문제