본문 바로가기
웹 오디오 프로그래밍

[Web Audio API #13] Audio buffer - Sample, Frame, 그리고 Sample rate

by 영바이트 2021. 8. 3.

Web Audio API를 잘 사용하기 위해서는 음원에 해당하는 오디오 버퍼audio buffer에 대한 지식이 필요하다. 타이밍 컨트롤, 변수 설정 등에 사용되는 값이 정확히 무엇을 의미하는지 알 수 있기 때문이다.

 

◆ Sample, Frame, 그리고 Sample rate

 

· Sample: 어느 한 시점의 소리의 크기를 32bit 정밀도의 부동소수점으로 표현한 값이다.


· Frame(sample frame): 동일 시점에 재생되는 샘플들의 집합이다. Mono channel에서 Sample과 frame은 같다. 2 channel stereo 이상에서는 frame은 모든 channel들의 sample들이 된다.


· Sample rate: 1초 동안 재생되는 sample frame의 개수이다. 1초 동안의 동작을 나타내므로 단위로 Hz를 사용한다. 더 높은 sample rate를 가진 사운드일수록 더 좋은 음질을 가졌다고 할 수 있다.
예) 44.1KHz mono sound buffer: 44100 samples, 44100 frames
44.1KHz stereo sound buffer: 88200 samples, 44100 frames. ∵ 44100 x 2(L, R) = 88200


· Length: 오디오 버퍼에 들어있는 frame의 개수이다.

 

 

◆ Plannar Vs. Interleaved
2채널 이상의 스테레오 신호에서 각각의 채널을 저장하는 방법이다.

· Planar
처리를 위한 형식이라고 할 수 있다. Web Audio API는 사운드가 재생되기 전까지 이 형태를 유지한다.
예) 16 frame 2 channel planar buffer: LLLLLLLLRRRRRRRR

· Interleaved
재생을 위한 형식이라고 할 수 있다. L/R을 번갈아가며 저장한다. MP3를 디코딩하면 기본적으로 이 형태로 되어 있다. Web Audio API는 MP3를 디코딩할 때 이 Interleaved 형태를 Plannar 형태로 바꾼 후 처리한다.
예) 16 frame 2 channel interleaved buffer: LRLRLRLRLRLRLRLR

 

 

◆ a-rate 오디오 파라미터(audio param)와 k-rate 오디오 파라미터

· a-rate 오디오 파라미터: 설정한 오디오 파라미터를 각각의 프레임에 적용시킨다. 기본으로 설정되어 있는 정책이다.
· k-rate 오디오 파라미터: 설정한 오디오 파라미터를 블록(block, 128 프레임) 단위로 적용시킨다.

 

댓글