오디오인터페이스 버퍼사이즈는 무엇일까?

사운드캣
2023-12-27
조회수 5872


안녕하세요 사운드캣입니다.

우리가 오디오 인터페이스를 사용하다 보면 샘플레이트(Sample rate) 외에도 '버퍼 사이즈(Buffer size)'라는 것을 선택해야 되는 상황도 발생하게 됩니다. 그나마 샘플레이트는 이해하기 어려워도 음질에 관련된 것이기 때문에 스트리밍 플레이어나 파일 상세 보기에서 확인할 수도 있고 원리에 대해서 설명한 글도 다수 존재하지만 버퍼 사이즈에 대한 설명은 초보자 분들 기준에 이해조차 불가능한 경우가 많고 자료도 적어 이해하기 쉽게 설명드리겠습니다.


버퍼 사이즈를 선택하는 이유는 레이턴시(지연시간)를 조절하여 원활한 녹음 진행하기 위함입니다.


아날로그 오디오가 디지털 환경에서 처리되는데 상당히 많은 과정이 필요합니다.


PC가 DAW를 구동하게 되면 녹음, 재생 시에 오디오 인터페이스와 수도 없이 많은 데이터를 주고받게 됩니다. 이 과정에서 PC가 오디오 인터페이스와 주고받을 데이터를 처리하게 되면서 물리적으로 시간 지연이 발생하게 되는데 이것을 '레이턴시(Latency)'라고 합니다. 레이턴시가 발생하게 되면 가장 타격을 받는 작업 상황은 녹음 상황입니다. 녹음 시 실제 연주와 모니터링 사운드간의 시간차가 벌어지게 되면 자막 싱크가 맞지 않은 영화를 보는 것 같이 연주자가 큰 불편을 느끼고 심하면 녹음의 싱크가 밀릴 가능성도 있습니다. 이러한 문제를 해결하기 위해 레이턴시를 강제로 조절하는 기능이 버퍼 사이즈 선택입니다.


레이턴시 = 물품이 채워지는 시간, 필요한 수레 개수 = CPU의 작업량




CPU는 낱개의 데이터를 실시간으로 처리하여 전송하는 것이 아니라 일정량 데이터가 쌓였을 때 처리하고 전송하는 프로세스를 가지고 있습니다. 예를 들어 이동할 물품이 1024개 있다고 가정합시다. 수레 당 채우는 물품의 양을 1024개로 정하고 수레에 1024개의 물품이 채워졌을 때까지 기다린 후 목적지로 출발합니다. 1개의 수레로 모든 물품을 옮길 수 있어 효율적이지만 1024개를 채우는데 시간이 필요합니다. 이번에는 수레 당 64개의 물품만 채워지면 출발해 보겠습니다. 1024개의 물품이 64개씩만 채워져도 바로바로 이동하므로 물품이 채워지는데 기다리는 시간은 상대적으로 적습니다. 대신 16개의 수레가 운반에 동원되어야 1024개를 모두 옮길 수 있으므로 작업에 필요한 인원이 늘어나게 됩니다. 여기서 핵심이 물품의 양은 '버퍼 사이즈', 시간은 '레이턴시', 필요한 수레의 개수는 'CPU 점유율'에 비교될 수 있습니다.


버퍼 사이즈는 레이턴시와 CPU 점유율의 균형을 위해 존재합니다.


무엇이든지 균형이 중요... 합니다.


버퍼 사이즈는 작업 상황별 레이턴시와 CPU 점유율의 균형을 맞출 때 필요한 기능입니다. 

녹음 상황과 같이 짧은 레이턴시가 필요하고 비교적 정보 처리의 양이 적을 경우는 버퍼사이즈를 작게 하여 CPU 부담을 늘리더라도 레이턴시를 작게 가져가는 것이 좋습니다. 반대로 수많은 VST들이 처리되어야 하는 본격 곡 작업 상황의 경우 레이턴시보다 CPU의 부담을 줄여주는 것이 원활한 모니터링에 도움이 되므로 버퍼사이즈를 크게 설정해 주는 것이 좋습니다.


DAW의 CPU 점유율 미터를 모니터링하는 것이 좋습니다.


FL studio 툴바 상단에 CPU 점유율 미터가 위치하고 있습니다.


대부분의 DAW는 레이턴시 뿐만 아니라 CPU 점유율을 자체적으로 알려줍니다. 디지털 오디오 프로세스에서는 CPU 점유율이 한계에 다다르는 것 또한 노이즈의 원인이 될 수 있기 때문에 이를 사전에 방지하고자 유저가 CPU 점유율을 모니터링하며 버퍼 사이즈를 조절하라는 뜻이기도 합니다. 버퍼 사이즈별 CPU 점유율은 사용하는 작업 컴퓨터의 사양, DAW 또는 오디오 인터페이스의 기종에 따라 차이가 발생하므로 미리 각 작업 상황별 적절한 버퍼사이즈를 미리 숙지해 두신 뒤 각 상황에 맞게 버퍼사이즈를 변경한다면 장비 운용이 더욱 원활해질 것으로 예상됩니다.


상황에 따라 다르지만 대략적으로 녹음 시에는 128이하, 모니터링 시에는 512이상을 사용합니다.


버퍼사이즈가 어떤 기능이고 왜 조절해야 하는지까지 알아보았지만 상황별로 어느 정도까지 레이턴시를 조절하면 되는지 궁금하신 분들도 있으실 것이라 예상됩니다. 버퍼사이즈는 보편적으로 16샘플부터 시작하여 2048샘플까지 굉장히 촘촘하게 있기 때문에 나에게 알맞은 크기의 버퍼 사이즈가 무엇인지 고민하고 계실 여러분들을 위해 대략적인 가이드를 드리도록 하겠습니다.

(가이드가 대응되지 않는 상황도 있으므로 반드시 버퍼사이즈 조정 후 레이턴시와 CPU 점유율을 확인하시는 것을 권장합니다.)


녹음 상황

좌 : 128샘플 우 : 64샘플


녹음 상황에서 주로 신경 써야 되는 부분은 레이턴시입니다. 사람의 감각에 의존하는 부분이라 개인차가 존재하지만 보통 레이턴시가 10ms 이상이 되면 레이턴시를 느끼기 시작하고 20-30ms 이상이 되면 녹음하기가 어려울 정도로 레이턴시를 느끼게 됩니다. 쓴이의 컴퓨터 기준 128 샘플로 설정하면 '전체 레이턴시(Overall Latency)'가 9.67ms, 64샘플 기준 6.33ms 정도 발생합니다. 9.67ms 정도만 되어도 악기 연주의 경우 레이턴시가 잘 느껴지지 않을 가능성이 있습니다. 이질감이 없다면 128샘플을 사용하셔도 무방합니다. 보컬의 경우 머리를 통해 들리는 소리가 겹쳐 들려 조금 더 예민하게 느끼실 수 있습니다. 이 경우 레이턴시가 느껴진다면 64 샘플로 한 단계 낮춰 녹음을 진행하시면 됩니다.


CPU 미터가 아슬아슬한 상황임을 확인하실 수 있습니다.


레이턴시가 불편하여 64샘플까지 버퍼사이즈를 낮추었더니 CPU 미터가 위의 이미지와 같이 아슬아슬하게 올라간다 싶으시면 어느 정도 레이턴시와 버퍼 사이즈를 타협하셔야 합니다. 64와 128중 어느 버퍼사이즈가 녹음할 때 더 좋은 결과물을 만들 수 있는지 테스트해 본 뒤 녹음을 진행하시면 됩니다.


모니터링 상황



실제 악기를 모델링한 가상악기는 구조상 CPU 점유율이 높을 수밖에 없습니다.

'

모니터링 상황에서는 본격적인 오디오 편집을 위해 가상 악기와 이펙터를 많이 사용하게 되어 CPU 점유율이 많이 올라가게 됩니다.

이 와중에 버퍼 사이즈까지 작게 설정되어 CPU 점유율이 더 올라간다면 노이즈는 물론 DAW 자체가 정상적으로 구동 불가능하므로 레이턴시가 많이 올라가더라도 어쩔 수 없이 512에서 1024까지 넉넉하게 버퍼사이즈를 올려주어야 합니다. 모니터링 오디오가 말도 안되게 뒤로 밀리지만 않으면 작업에 크게 지장 없으므로 최대한 CPU 점유율을 확보하는 데 목적을 두고 버퍼사이즈를 조정합니다.


0 0