Synth programming

예전 음반들을 보면 synthesizer를 프로그래밍했다고 하는 사람의 크레딧이 있었다. 사실 그 시절만해도 뭔가 어려울 것 같은 synthesizer를 다루려면 머리가 비상해야 할 것 같다는 생각도 하고, 쉽게 다뤄지지 않으니까 프로그래밍까지 해야되나보다 했었다. 사실상 synthsizer가 컴퓨터이긴 했으니까. 우리가 잘 알고 있는 그런 컴퓨터라기 보단 일종의 마이컴인데, UI는 좀 불편하고 그런 컴퓨터 말이다. 소리를 내주는 부분은 따로 만들어져있고 말이다.

예전에 잘 나가던 신디사이저의 회로를 지금 다시 사진으로 만나면 이런 기계로 어떻게 좋은 음질의 소릴 냈었을까 하는 생각을 하게 되는데, 실제로 음질이 그리 좋지 않았지만 당시의 우리의 귀가 그렇게까지 고급이지 않았어서 좋게 들렸다고 해야할 것 같다. 이게 전부 다 디지털로 옮겨오면서 음질이 급격히 좋아졌다고 해야 맞을 것 같다. 일부러 디지털 영역에서 예전 악기처럼 소리를 내기 위해 음질을 떨어뜨리기까지 한다.

왜? 당시에는 신디사이저가 디지털로 소리를 만들어내는 장치라고 할 수 있긴 했지만 그 모든 계산량을 다 커버할 수 없었기에 많은 부분 타협이 있었고 아날로그 디바이스도 섞어썼는데, 그 아날로그 디바이스에서 만들어내는 파형도 엄밀히 말해서 완벽하다 할 수 없었다. 지금 디지털 영역에서 다루고 있는 신호도 엄밀히 완벽하다고는 할 수 없지만, 완벽에 거의 가깝게 붙어있다고 볼 수 있다.

쉬운 예로 당시에는 아무리 잘 계산해봐야 10비트나 8비트로 곱셈만 해도 잘하는 것이었는데, 이 곱셈기가 신디사이저에서는 매우 소중한 자원이라 정말 정말 아껴서 설계했다. 정확도라고 해봐야 10비트나 8비트면 지금의 부동 소수점 연산의 곱셈기를 생각하면 엄청나게 부정확한 것이다. 지금 SD 시절의 영상을 보면 조잡하다고 할텐데, 내가 보기에는 SD시절의 영상과 4k 시대의 영상과의 차이보다도 훨씬 더 크다고 해야 맞다.

그러나, 당시엔 지금으로 보면 많이 아쉬운 신디사이저로 좋은 음악들이 많이 나왔던 반면, 지금은 엄청나게 좋은 악기들이 소프트웨어로 보급되고 있지만 예전처럼 그렇게 열심히 음악을 만들지 않는 듯 하다. 구경도 하기 어렵고 말이다.

각론하고, 당시 사람들이 synth programming이라고 했던 것은 고작해야 제한된 신디사이저 메뉴를 가지고 음색을 편집한 정도였고, 좀 더 열심히 했다 치면 리듬섹션과 베이스를 시퀀싱했던 정도라 봐야 될 것이다. 시퀀싱이란 게 별개 아니라 악보를 신디사이저나 시퀀서라고 불리우는 탁상 계산기 처럼 생긴 악기에 입력하는 것이다. 어쨌든 당시엔 이런 식으로 음악을 하는 것이 상당히 진보적이었던 것이니까 지금 생각하면 그것도 프로그래밍이냐 할 수 있지만 그러려니 해야하지 싶다.

synthisizer programming

실제의 신디사이저 프로그래밍은 어떤 음 패턴을 기본으로 할 것이냐 (wave? timbre? sample pattern?), 또 음을 어떻게 바꿀 것이냐 (modulation), 또 음이 시작해서 유지되고 또 소멸되기 까지 어떠한 모양으로 할 것이냐 (envelope??), 또 어떠한 음향적인 효과를 줄것이냐 등등에 따라 엄청나게 다양한 소리를 만들어내게 된다.

예전 신디사이저를 보면 wavetable 방식이냐 FM 방식이냐 VCO는 어떻게 되고 modulation을 어찌하며 등등 참으로 용어도 다양했는데 사실 정리해서 생각하면 그다지 어려울 것도 없다.

더 쉬운 말로 대충 정리를 하자면,

  1. 기본 음색이 뭐냐? 샘플 (파일)이냐? 아니면 sine wave를 조작한 수학적 파형이냐?
  2. 음을 플레이했을 때 소리의 높낮이가 어떤 패턴으로 전개되냐?
  3. 이펙트를 뭘로 걸어줄 것이냐?
  4. 음이 지속되는 동안 modulation (vibration)을 할 거냐? 얼마나 빠르게 할거냐? 얼마나 큰 폭으로 할 것이냐?

정도가 기본이 되고 여기에 다양한 변화를 줄 수 있는 요소들을 더하게 되면 사정없이 복잡해지기 마련인데, 어차피 기본 음색은 1번에서 대부분 결정이 나게 된다.

그런데 실제로 신디사이저를 접하게 되면 대부분 음색에 어떤 이름을 붙여놓은데다 UI가 워낙 악기마다 다르고 파라미터와 조절 방법도 각기 다 달라서 쉽게 적응할 수가 없다. 내가 느끼는 음색과 악기 안에 붙여져 있는 이름을 매칭하기도 쉽지 않을 뿐더러 정말 원하는 음색만 찾아서 골라 쓰기가 정말로 불편하다.

차라리 우리에게 이 음색의 기본 파형이 어떻게 되고, 그걸 어떻게 편집하고 변형해야 하는지 가르쳐주고 시작했으면 좋겠다는 생각까지 들게 마련이다.

Sonic-Pi

Sonic pi가 사실상의 음악 언어가 되어가고 있다. 신디사이저 엔진을 이용해서 음을 합성하기도 하고 python에 가까운 컴퓨터 언어를 통해서 어떤 패턴의 루프를 돌린다거나 난수를 발생시켜서 그에 해당하는 멜로디를 플레이한다든가 샘플을 읽어다가 플레이 하기도 하고 하는 것이다.

문법이야 특별히 복잡할 게 없지만, 인터프리터가 계속해서 코드를 실행해나가는 일만 한다. 이 일은 사실 신디에서만 많은 연산을 하지 나머지 일은 파싱해서 정해진 일을 수행하기만 하는 것이니까 비싼 하드웨어가 필요없는데, 라스베리파이가 대 히트를 치고 있는 영국에서는 악기삼아 재미있게 가지고 놀고 하는 모양이다.

사실 악기를 다루기 힘든 사람이면 이것이 훨씬 편하게 음악을 만들 수 있다. 시퀀서에 음을 입력하는 문제도 사실 기계적인 과정인데, 그 과정을 프로그래밍하듯이 바꿔놓은 것이다. 도돌이 표가 나와서 여러 번 반복하게 되는 것들 이런 것은 사실 컴퓨터 프로그램으로 만들면 정해진 패턴을 플레이 하는 과정을 for loop로 돌리는 것과 같으니까 배열에 음의 높이와 길이를 넣어두고 플레이를 시키든가 하면 되고, 음색은 synth에서 부르든가 아니면 wave file을 불러오든가 하면된다. 어차피 이 데이터를 가지고 플레이하는 것은 인터프리터가 알아서 할 일이니까.

사실 생각해보면 시퀀서에 드럼패턴을 넣겠다 하면서 마우스 질을 죽어라 하는 것 보단, 단순히 에디터에 코드로 입력하는 것이 편하다. 이런 것과 비슷한 일을 예전에 cakewalk에서도 했었던 것으로 안다. 그러나 쉽지 않아서 퇴출된 것인지, 그 옛날 케이크워크의 텍스트 인터페이스는 작업하기 상당히 편했는데, 그것이 모두 마우스질을 하는 GUI로 바뀌고나서 사실 정나미가 뚝 떨어졌다.

그런 걸 보면 같은 결과물을 만들어내더라도 사람마다 취향에 맞는 작업이 있다. GUI상에서 마우스를 예술적으로 다뤄서 빠른 결과를 얻어내는 사람들이 있고, GUI 보단 키보드 - 특히 단축키 -를 기가막히게 다뤄서 텍스트 인터페이스를 좋아하는 사람도 있다. 나의 경우도 후자이다. 어떤 음악을 만들라고 하면 프로그램으로 짜서 만드는 것이 차라리 편하다.

어차피 음악을 만들때 하는 작업은 정말로 아티스트가 아닌 이상 대부분의 작업이 유사한 패턴으로 진행된다. 즐겨쓰는 음색을 읽어오고, 좋아하는 패턴을 입력해서 정해진 동안 반복시키고 좋아하는 코드를 쳐넣고 말이다. 이것을 실제의 미디 키보드로 쳐서 입력하면 실수를 하는 일이 더 많고 그것들을 수습하는 동안 집중력을 읽거나 많은 시간을 소비해서 결국 정해진 시간에 원하는 결과를 얻어내지 못한다.

만일 내가 사용하는 DAW의 작업의 많은 부분을 프로그램 (쉽게 말해 스크립트에 가깝다)으로 해결할 수 있으면 더욱 완벽하게 (좀 기계적일 수 밖에 없다) 그리고 엄청나게 빠르게 데모를 만들어 낼 수 있을 것이다.

이렇게 바꿔보면 좀 더 좋을텐데..

Sonic PI에서 제공하는 소통 방법은 컴퓨터 언어로 치면 좀 매우 디테일하게 기술하고 있는 것이라 볼 수 있을 것 같다. 이것을 좀 더 추상화해서 더 편하게 만들 수도 있을 것 같다는 말이다. 마치 저수준 언어로 매우 상세하게 기술된 것을 매크로로 활용한다거나 하는 것 말이다.

즉, 어떤 패턴으로 2마디를 돌리고 또 다른 패턴으로 2마디 돌리고, 이런 4마디를 두번 더 돌리고, 패턴 C로 4마디를 돌리고 뭐 이런 식으로 하는데, 각각의 패턴을 또 어떻게 어떤 음색으로 하고 하는 것을 매우 디테일하게 기술할 수 있고 말이다. 무슨 말이냐면 현재의 기술 방법은 너무 기계에 가깝게 치우쳐져 있으니까 좀 더 추상화할 수 있는 부분은 추상화하고, 사용자가 필요에 따라 이 부분을 매우 구체화 할 수도 있게 하고 그런 식으로 변형해 본다는 뜻이다.

이러한 경우에는 음악 스타일 마다 라이브러리를 만들어서 넣을 수 있는 패턴을 라이브러리에서 불러다 쓸 수 있고, 필요에 따라 라이브러리에 있는 패턴도 마음대로 커스터마이징해서 사용하고 그런 식으로 말이다. 그런데 중요한 것은 이렇게 만들어진 결과를 export할 수 있어야 한다. 미디 파일의 형태로 바꿔준다거나 특정 DAW용 파일로 exporting이 가능하면 좋겠는데, 지금의 프로모션 방법으로 봤을 때는 일단 동기부여, 시작테입을 끊어주는 정도일 것 같고, 최후의 모양새는 마치 swift에 playground가 붙는 식으로 Logic Pro 같은데서 응용하는 것이 더 좋지 않을까 한다.