2017-02-03 11 views
2

OfflineAudioContext.startRendering()은 내 선택 (16 비트 또는 24 비트)의 비트 심도를 포함하는 AudioBuffer을 어떻게 출력 할 수 있습니까? 나는 출력의 샘플 속도를 AudioContext.sampleRate으로 쉽게 설정할 수 있다는 것을 알고 있지만 어떻게 비트 깊이를 설정합니까?특정 비트 심도로 렌더링하는 방법은 무엇입니까?

오디오 프로세싱에 대한 나의 이해는 매우 제한되어 있으므로 생각만큼 쉽지는 않을 것입니다.

편집 # 1 : 당신은 출력의 샘플 레이트를 설정하는 방법에 대한 아이디어가있는 경우, 즉 너무 좋은 것, 그래서

사실, AudioContext.sampleRate는 읽기 전용입니다.

편집 # 2 :

나는 샘플 속도가

답변

1

당신이 직접 할 수 없어합니다 (DataView에서) 인코딩 된 WAV 채널 수 다음에 삽입 추측 웹 오디오에서만 작동하기 때문에 부동 소수점 값. 너 스스로 이걸해야 해. 기본적으로 오프라인 컨텍스트의 출력을 가져 와서 모든 샘플을 32768 (16 비트) 또는 8388608 (24 비트)로 곱하고 정수로 반올림합니다. 이것은 컨텍스트의 출력이 -1에서 1의 범위 내에 있다고 가정합니다. 그렇지 않으면 추가 확장을 수행해야합니다. 마지막으로 부동 소수점 숫자를 다시 얻으려면 최종 결과를 32768 (8388608)로 나눌 수 있습니다. 그것은 최종 어플리케이션이 무엇인지에 달려 있습니다.

+0

감사합니다. 따라서'audioBuffer.getChannelData (0 | 1)'의 각 값에 32768 또는 8388608을 곱하면 최종 결과 인 .wav 파일의 해당 비트 심도가 유지됩니까? 그리고 왜 내가 32768 또는 8388608로 최종 결과를 나눌 필요가 있는지 확신 할 수 없습니다 ... 단지 초기 값을 되 찾을 것인가? – maximedupre

+0

먼저, OfflineAudioContext를 만들 때 샘플 속도를 지정해야합니다. –

+0

현재 WebAudio에는 AudioBuffer에서 WAV 파일을 만들 수있는 지원이 없습니다. 당신을 위해서 도서관을 찾아야합니다. (또는 직접 배우십시오 .WAV 파일은 매우 간단합니다.) –