1. 디지털 피아노 음원 제작 방식
우리가 듣는 어쿠스틱 피아노의 소리는 우리가 해머가 줄을 치는 ‘타격음’ 자체가 아님
줄이 순간적으로 휘어졌다가 복원되며 생기는 파동이 사운드보드를 타고 공기 중으로 퍼지면서 만들어지는 소리임.
세기와 속도에 따라 줄의 진동이 달라지고, 이게 결국 소리의 크기와 느낌(음색)을 결정함
여기서 핵심은, 이 소리 변화가 단순히 크기 문제가 아니라 음색의 차이라는건데, 세게 치면 날카롭고 단단하고, 약하게 치면 부드럽고 따뜻하게 들린다 뭐 그런거지.
디지털 피아노의 음원은 이걸 얼마나 잘 흉내내는지가 나아갈 길이고 평가지표임.
디지털 음원 만드는 방식은 두 가지임.
1. 샘플링 (Sampling)
샘플링은 진짜 피아노를 연주해서 미리 소리를 녹음해놓고, 그걸 상황에 맞게 재생하는 방식임
각 음을 다양한 상황에 따라 개별 샘플을 만들어둠. 그리고 연주를 통해 MIDI로 들어온 신호이 맞는 샘플을 재생함.
이 방식은 진짜 피아노 소리를 그대로 녹음했으니 소리 자체는 매우 자연스러움.
하지만, 다양한 뉘앙스를 표현하려면 샘플이 기하급수적으로 늘어나고, 미세한 터치 차이에 샘플 간 ‘틈’을 메우기 위해 별도로 모델링 기법을 사용해야함.
(VSL 가상악기에서 음원을 녹음하기 위해 로봇이 타건하는 모습)
2. 모델링 (Modeling)
모델링은 피아노 구조 자체를 수학적으로 구현해서 줄, 해머, 댐퍼, 사운드보드 등 소리를 만드는데 관여하는 모든 요인을 계산해서 실시간으로 만듦
이렇개 하먼 타건 강약, 페달 사용, 공명 상황 등에 따라 소리를 유동적으로 변화시킬 수 있음.
단점은 계산식이 정교하면 정교할수록 음인 너무나 이싱적으로 만들어져 오히려 어색하거나 가짜같이 들릴 수 있음. 이를 위해 랜덤한 노이즈를 넣고자 애쓰지만, 컴퓨터가 가장 못하는 게 ’랜덤‘이다보니 쉽지않음.
대표적인 모델링 가상악기인 피아노텍은 공식적으론 발표하진 랂았지만, 거의 확정적으로 C++로 개발했다고 볼 수 있음. 피아노텍을 리눅스에서 돌려보면 흔적이 보임.
대충 개념 정리를 했으니 차차 알아보기로 하자.
이 글에 관련해 의견을 나누기 위해 dcinside digital piano gallery에도 게시하고 있습니다. 질문이나 토론은 갤러리를 방문해주세요.