멀티 이펙트의 동작조건

by Audvans | 2017-05-01 15:34
android audio dsp linux modular multi effects p212 신호처리 오디오

일반적으로 디지털 신호를 처리할 때 입력 신호의 최대 주파수의 2배의 샘플레이트 조건을 만족하면 되는 것으로 알고 있다. 그래서 대부분의 오디오 응용프로그램에서는 44.1kHz 혹은 48kHz 정도의 샘플레이트면 가청 주파수 신호를 처리하는데 아무런 문제가 없는 것으로 알고 있다.


그러나 간과하고 있는 것은 이 신호처리 단계에서 비선형 신호처리는 하지 않는다는 것을 전제해야 한다는 것이다. 비선형 신호처리 - 쉽게 말해 찌그러짐 - 를 하게 되면 고조파(이것은 일본에서 가져온 한자어이고 harmonic이라고 하고 우리 말로는 뭘로 해야 좋을지 모르겠다), 즉 정수배의 주파수 성분이 늘어나게 된다. 원래 신호의 에너지의 일부가 그것의 정수배 (2배 3배 4배...) 주파수로 퍼져나간다 이해해도 된다. 따라서 가청 주파수의 신호라고 하더라도 그것이 찌그러지게하는 어떤 신호처리 과정이 포함되면 신호처리기 내부에서 주파수 대역폭이 늘어나게 되는 결과가 얻어진다. 그런데, 샘플레이트가 이것을 받아낼 수 없는 정도라고 하면 aliasing이 생기게 된다.


내부적으로 생긴 aliasing은 찌그러짐 효과를 계속 쓰면 더욱 더 파급되는 현상을 보이는데, 일반적으로 기타 이펙트에서 overdrive/distortion/fuzz effect + amplifier distortion (preamplifier/power amplifier)를 빼고는 그다지 찌그러뜨릴 일은 없다. 상용으로 판매되는 디지털 이펙트 중에서 그런 것 하나까지 꼼꼼하게 대응한 제품이 있기도 하지만 대부분은 이 부분이 제작비에 막대한 영향을 미치기 때문에 그냥 무시하는 경우가 많다. 

이를테면 44.1kHz로 처리해도 되는 걸 그것의 4배 혹은 8배 정도로 oversampling해서 처리하기 때문이다. 이론적으로 누군가 계산하기로는 8배 정도면 디지털 찌그러짐에 의한 aliasing은 무시할 수준이 된다고 한다. 어쨋든 8배 빠른 신호처리를 해야하는데, 프로세서 성능이 그렇게 올라가야 하는 거면 제작 단가는 크게 올라간다. 더 빠른 프로세서를 사용해야 되고 더 높은 샘플링 주파수에 대응하는 audio codec을 써야 하기 때문이다. 

상용으로 판매되고 있는 멀티 이펙터 얘기가 나와서 말인데, 공학적인 측면에서 자원을 막대하게 활용해서 세세한 부분까지 잘 잡아낸 이펙터보단 감성적인 면에 더 잘 호소하는, 또 사용하기 훨씬 쉬운 제품이 더 비싼 값에 더 잘 팔리고 있다. 전자의 경우 16배 oversampling을 하고 있고 그로인해 엄청나게 빠른 신호처리를 해야하는 부담을 안고 있는 반면에 지금 프로 뮤지션들이 가장 많이 사고 있는 고가 멀티이펙트는 2배 oversampling이 고작이다. 그외의 이펙트 품질은 전자에 비해 형편없다 그다지 R&D를 하지 않기 떄문이다. 그러나 가장 많이 많이 팔리고 있고 더 좋은 물건으로 이해되고 있다.

아주 고성능의 ARM processor가 아닌 이상 이번 프로젝트에서는 첫 시도니만큼 44.1kHz의 낮은 샘플링 주파수에서 동작하는 것이 바람직할 것으로 보고 있다. 이미 제작된 Mac용의 플러긴 들에서는 비선형 처리를 하는 것들은 대개 8배 정도 oversampling을 하고 모든 처리가 끝나면 다시 2배 oversampling을 하도록 decimation을 하게 되어있다. 아직 ARM의 Neon을 사용한 SIMD 는 특별히 사용해보지 못했다. 얼마나 빠르고 얼마나 효율적인지 알 수 없다. 컴파일러가 SIMD 연산을 위해서 얼마나 많은 신경을 썼을지도 알 수 없을 뿐더러.

이것은 ARM platform위에서 몇가지 예제를 통해서 확인해보는 것이 좋을 것으로 판단된다. 

댓글 0

MADE BY

Audvans

analog audio, audio dsp, c/c++, digital audio, dsp, guitar playing, hackintosh, mpich, Node.js, orcad, parallelism, pascal, perl, Python, raspberry pi, s905x, spice
OS 선택하기+알파 다음글 멀티 이펙트의 동작조건현재글 H/W Platform 이전글