Dexed: FM synthesizer plugin

아마도 80/90년대 음악을 좋아하는 사람으로서 DX7 소리에 익숙하지 않은 사람은 없을 것 같다. 그만큼 인기있었던 신디사이저이고 이쁜 소리를 많이 가지고 있는, 야마하 신디사이저가 SY77이며 이후에도 쭉 인기 있었던 이유가 아닐까 한다.Github에 올라가 있는 dexed라는 synthsizer plugin이 있다. DX7의 음원 데이터를 읽어서 그대로 사용할 수 있다. DX7의 소리도 낼 수 있고, DX7의 하드웨어를 가장하여 시뮬레이션하는 기능도 있다. 그런데 알다시피 이 시절 기술로 sine wave를 매우 깔끔하게 digital로 재생시키는 것에는 극복하기 힘든 하드웨어 복잡도의 문제가 있기에 그 자체가 잡음 덩어리이다. 그 시절의 잡음 기준으로는 충분히 눈감아 줄 수 있는 수준이지만, 지금처럼 디지털 신호처리 기술이 발달된 시점에서는 그 시절 소리를 흉내내면 그 시절에는 몰랐었는데 지금 듣기엔 생각보다 큰 잡음이 들릴 것이다. 물론 완벽한 floating point model로 돌리게 되면 잡음은 거의 들리지 않는다.일반 사람들에게 공개된 plugin 제작 플랫폼 중 하나인 Juce로 만들어졌다.과거의 신디사이저 알고리즘은 현재의 디지털 신호처리 관점에서 보면 매우 구현하기 쉽다는 특징을 가지고 있고, 수식으로만 나타내더라도 상당히 간단한 구성을 가지고 있는데, 문제는 과거의 소리를 어떻게 만들어내느냐가 더 귀찮은 문제이다. 이를테면 예전의 음원 데이터, 사실 FM음원이라고 해봐야 데이터가 요새와 같은 엄청나게 큰 PCM 데이터를 거의 사용하지 않으니까 그렇긴 하지만, 시스템의 데이터를 모두 dump 했을 때 그것을 그대로 가져다가 똑같은 소릴 낼 수 있느냐 없느냐 하는 것이다. 이 데이터를 미디에서는 system exclusive라고 하고 SysEx라고 쓰기도 한다. 즉 미디 표준에 정의된 어떤 값들이 아니고 악기마다 배타적으로 적용되는 파라미터 값들이기 때문에 그러하다.왜 여기서 문제가 생기느냐 하면, sysex에 담겨있는 각각의 값들이 우리가 생각하는 일반적인 알고리즘에 어떻게 대응하는지 알 수 없기 때문이다. 이를테면 SysEx에서 0-255까지의 값이 있다고 하면, 이 값이 우리의 알고리즘에는 0-0.99에 대응하는 것인지, 0-0.5에 대응하는 것인지 실제로 신디사이저를 제작한 사람이 아니면 알 수 없다는 것이다. 업체가 이러한 세세한 내용을 공개했을리도 만무하고.아날로그 신디사이저의 경우는 더욱 어렵다고 할 수 있다. 수많은 시행착오를 통해서 실제와 가깝게 가져갈 수 있을 뿐이다. 여기서 수많은 시행착오는 엄청난 노가다를 의미한다. 더구나 각종 TR회로가 얽혀서 비선형 특성을 내고 있는데, 이것을 얼마나 그럴싸하게 만드느냐가 제대로 모델했느니 아니니를 결정하게 될 것이다. 근본적인 알고리즘이 특별난 것은 없다. 다만 그 알고리즘에 어떠한 숫자들이 대응되느냐 얼마나 이상적인 모델과 거리가 있느냐에 대한 문제만 남는다.어쨌든 즐기시라. 원작의 DX7의 하드웨어를 만지는 그런 느낌은 하나도 없지만, 그 때 그 소리를 그대로 들을 수는 있다.