프로젝트 구상

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

재료

  • p212 board 1개

도구

  • 개발 호스트 (PC/Mac)

기타 멀티 이펙트를 만들고자 했던 시도는 지금까지 여러 번 된다. 과거에는 소위 풋 페달 혹은 stompbox라고 불리우는 작은 회로들을 만들어 보기도 하고, 이것들을 연결해서 하나의 멀티 이펙터를 만들 생각도 해봤고, 그 이후로는 진공관으로 프리앰프도 여러 번 만들어봤고, 마지막으로는 S/W 플러긴으로 기타 앰프 시뮬레이터를 비롯한 이펙트를 만들어왔다.




이런 작업은 사실 상용의 제품이나 소프트웨어와 비교하면 완성도라든가 인지도 측면에서 차이가 나기 때문에 돈을 받고 팔기에는 여러 가지로 무리가 있다. 일단 물건을 판매하고 나면 사후 관리에 대한 의무도 어느 정도 생겨나기 때문에 사용하다가 발생하는 문의 사항이라든가 문제점에 대해서는 지원을 해줘야 하는 일도 생긴다. 따라서 순전히 개인적인 용도로만 사용하게 되고 무료로 배포한다거나 제작 방법을 알려준다거나 하는 일도 하지 않는다. 


그러나 나에게 좋은 것을 타인들에게도 권해주고 갖게 해주고 싶은 마음은 인간의 본성인지라 어차피 상품화해서 금전적인 소득을 올리지 못할 것이라면 제작방법이나 원리를 알려주고 그들이 더 좋은 것을 만들어낼만한 발판을 마련해주는 것도 좋겠다라는 생각을 하게 되었다. 또 그분들의 아이디어를 응용해서 더 좋은 물건으로 개선할 수도 있게 됨은 물론이려니와.


기타 멀티이펙트는 예전부터 DSP를 사용해서 만들어져 왔다. DSP에 특별한 장점이 있다기 보단 과거만 해도 ADC/DAC와 같은 핵심부품과 프로세서간의 연결이 용이했기 때문이고 무엇보다도 DSP의 경우는 일반 마이크로 프로세서와 달리 한가지 일에 전념시킬 수 있었기 때문이다. 다시 말해서 이일 저일 다 같이 시켜서 정신없게 하는게 아니라 DSP라는 프로세서에 신호처리 작업을 전적으로 할당해서 안정성을 추구하게 했다 이런 말이다. 그만큼이나 신호처리 작업이 원활하게 흐르지 않고 외부의 작업 요청이라든가 순간적인 과부하에 의해서 아주 잠시라도 처리의 흐름이 끊기게 되면 그것은 큰 잡음이 생겨날 소지가 생겨나게 되기 때문이다.


신호처리를 조금이라도 공부해본 사람은 알겠지만 단 1개의 샘플이라도 온전히 처리되지 않으면 그것은 일종의 impulse, 경우에 따라서는 매우 큰 잡음이 된다. 이것이 그 다음단에 물리는 다른 이펙트들에게 영향을 미치게 되면 그 파급력은 커지고 길어지게 된다. 말이 길어졌지만 신호처리 장비에서 단 하나의 샘플이라도 제대로 처리하지 못하면 사실상 재앙이 되는 것이다.


그런 의미에서 범용의 processor를 사용해서 신호처리 작업을 시키는 것에는 여러 가지로 부담이 따르게 된다. 이를테면 속도가 그다지 빠르지 않은 DSP라도 동일한 작업을 수행하는 코드를 무한루프로 돌려놓는 것이 고성능 프로세서에 복잡한 커널과 OS를 올려놓고 신호처리를 하려는 것 보다 안정성 측면에서는 훨씬 유리하다.


그럼에도 이 프로젝트에서는 가격이 저렴한 범용 하드웨어 플랫폼에 리눅스 혹은 안드로이드를 올려두고 다단 (cascaded) 신호처리 작업을 하려 한다. 기왕이면 타인들이 작업한 신호처리 모듈을 추가할 수도 있고, 아예 클라우드 소싱을 할 수 있는 플랫폼이 되면 더 좋겠다 싶다. 지금까지 세상에 등장한 다양한 오픈 소스 프로젝트 중에서 모듈화된 오디오 이펙트 플랫폼 내지는 프로젝트가 없었기 때문이다. 그것은 Pro Tools라든가 Cubase/Logic과 같은 상용 DAW에 플러긴을 공급함으로써 금전적 수익을 얻을 수 있었기에 그런 것이었나 하는 생각도 해보게 된다. 


이미 안드로이드나 iOS 기반에서 앱의 형태로 존재하는 기타 이펙터/앰프 시뮬레이터는 여럿 된다.



그러나 이들이 그다지 매력이 없는 이유는

- 안드로이드 기기 자체가 오디오 신호처리를 위한 목적으로 만들어진 기기가 아니라 audio in 단자가 따로 없고 음성 통화를 위한 마이크 단자로 별도로 넣어줘야 하는 문제가 있다.

- 일반적인 오디오 인터페이스 수준의 입력을 받으려면 별도의 USB 장치를 부가해야 한다.

- 애플리케이션이 주로 그래픽 인터페이스에 공을 많이 들인 반면 이펙트의 질 자체는 그다지 좋지 못하고, 그 결과물을 일반적인 레코딩에 활용할 것이 아니라 수준이 높지 못하고 돈 벌이에만 집착한 나머지 이펙트의 수도 극히 제한적이다.

- 폰이나 테블릿 자체에 걸리는 부하에 영향을 받는다. 


우리가 사용하는 스마트 폰이나 테블릿의 연산 능력이나 성능은 멀티 이펙트로 활용하기에 훌륭한 수준이지만 앞서 언급한 것처럼 DSP 처럼 오직 오디오 신호처리에 전념하도록 되어있지 않기 때문에 좋은 성능을 기대할 수 없었던 것이다. 그러나, 그렇다고 해서 안정적인 OS, 또 미려한 GUI와 확장성 (Wifi/BT)을 포기할 수는 없다. 사실상 리눅스와 안드로이드는 소형 기기가 가야할 방향이기 때문에 절대로 타협할 수 없다. 


따라서 본 프로젝트에서는

- 범용 하드웨어 기반의 (기타) 오디오 멀티 이펙트를 구현함

- Linux 혹은 Android를 OS로 사용하는 것을 전제로 함

- 오디오 입출력을 위한 별도의 device를 둠: USB device로서 저가의 오디오 인터페이스 칩들은 Linux/Android OS 수준에서 모두 지원됨

- 멀티 이펙트는 우선 직렬 시그널 체인으로 구성하고 개개의 이펙트는 모듈화가 가능하도록 함

- 터치스크린 LCD를 활용하여 포터블 기기 혹은 앰프 내장이 가능하도록 함


이미 신호처리 이펙트를 위한 S/W는 기존에 제작해두었던 프로젝트를 재활용하면 되고, 현재는 p212(Amlogic S905X quad core arm processor)에 Linux를 올려서 작업하느냐 안드로이드를 올려야 하느냐로 고민 중이다. 


댓글 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
H/W Platform 다음글 프로젝트 구상현재글