본문 바로가기

프로그래밍

프로그래밍과 음악의 결합

이 블로그의 이름이 모던웹과 음악이 된 이유가 있는데, 새롭게 준비한 웹서비스에서 이 음악이론과 코드진행을 데이터화하고 그 의미를 파악하고 사용자가 알고 싶어하고 알아야 할 정보로 재포장을 해야 했기 때문이다. 


작업에는 생각보다 오랜 시간이 걸렸다. 작업을 하는 중에 이 악보라는 데이터는 문자 정보 보다는 이미지에 가깝다는 것을 알게 되었고, 검색과 가공을 위한 데이터 편집, 재가공에 많은 시간이 소요되었다. 시간은 걸렸지만 어느 정도 해야할 작업들과 가능한 아이디어의 윤곽이 그려졌고, 이 결과물이 생각보다 음악을 공부하는 입장에서 상당한 도움이 될 것이라는 결론을 내리게 되었다.


그 과정에서 고려하고 고민하게 된, 그리고 선택된 작업들에 대한 대략적인 윤곽을 여기에 서술하고자 한다.



1. 악보 표기는 완전한 하나 표준만을 가지고 있는 것은 아니다.

사람이 보는 것에는 별 문제가 안된다고 하지만 방대한 데이터를 디지털화 하는 것에는 큰 문제가 된다.

누구나 음악을 공부하기 시작하면 악보를 보는 법을 배우고, 심지어 필수교육 과정에 음악을 학습하고 악보를 보는 것에 큰 문제가 없다고 해도 막상 디지털화 하기 시작하면 이 하나의 방식이 아니라는 것 때문에 예외적인 조건문들이 추가되기 시작했다.

또, 당연하겠지만 서비스에 표시될 때는 단 하나의 통일된 방식으로 표현하고 싶었기에 작업에 소요되는 시간이 자꾸 길어지고 데이터를 몇번이나 삭제하고 다시 넣는 작업을 되풀이 하게 되었다.

심지어 이것은 현실 세계에서 같은 음악적 표기를 부를때 조차 하프디미니쉬를 마이너플랫파이브로 호칭할 수 있는 것처럼 여러가지 alias(대명)을 가지고 있다는 것을 쉽게 알수 있다.


결국 데이터의 공통화를 하는 것이 많은 시간을 소요하게 되었고 재확인을 거듭하는 중에 지치기도 했다. 심지어 수집해야 할 데이터의 요소가 확정이 되지 않았던 시기부터 시작했었기에 하나씩 더 필요한 것들이 생길때마다 데이터를 다시 수집할 필요가 여러번 반복되었다.

악보는 심지어 작성자마자 특유의 스타일이 있을수 있고, 그에 따라 표기가 사용자화 되어 단편화되기도 한다. 

2. 분석을 위해서 수집해야 할 요소를 할수 있는 한 모두 수집하자.

앞의 실패에서의 경험을 통해 데이터의 수집은 보다 포괄적인 데이터를 수집하고 필요한 것들로 압축시키는 것이 훨씬  편리하다는 것을 다시 한번 실감하게 되었다. 누구나 쉽게 알수 있는 이 실패를 경험하게 된 이유는 결국 한번의 수집에 걸리는 시간이 길다는 점에서 발생한 초조함이 원인이 아니었는가 생각한다.
결국 유사한 작업을 되풀이 하는 동안 손을 놓고 수집이 끝나는 것을 기다려야 하는 과정이 반복되었고, 이것이 제작 기간의 상당 부분을 차지하게 되었다.

3. 화성학에 대한 조금더 원초적인 이해가 필요하다.

대략적으로는 알고 있었지만, 실제로 서비스 제작을 위해서는 좀더 원천적인 고민들과 그것에 대한 해답이 필요했다. 막히는 부분이 생길때마다 전공자들과 소통을 했지만, 정확한 답이 아니라 애매한 답을 듣게 되는 경우가 많았다. 여러자료를 찾아보고 인터넷 검색을 통해 해외에서 믿을만한 사이트에서 결과를 찾아야 하는 경우가 많았다.

4. 화성적인 분석을 수행하는 것은 쉽지 않다.

이것은 음악이라는 본질적인 부분과 관련된 것이고, 모든 데이터를 완벽하게 분석한다는 것은 너무 많은 시간이 소요된다는 것을 알게 되고 많은 부분을 직접 교정하고 추후에 사용자의 참여를 유도할 수 밖에 없다는 것을 깨닫게 되었다. 이것을 포기하는데까지 상당한 고민이 있었고, 제작기간의 상당 부분을 차지하기도 했다.

5. 악보를 랜더링 하는 것은 쉽지 않다.

악보를 랜더링하기 위해 여러가지 github에서 프로젝트들을 살펴보고 적용해보기를 반복하였지만, 맘에 드는 것은 쉽게 찾을수 없었다. 많은 부분을 외부의 모듈로 처리하고, 적당한 포기의 절차도 필요했기에 아쉬운 부분이 많았다. 언젠가 완전하게 재작성 해보고 싶은 부분이다.

6. 브라우저의 웹오디오에 대한 지원의 미비함.

HTML5니 WEB2.0이니 하는 말이 등장할때마다 큰 변화가 일어날 것 같았지만, 웹에서 구현된 동적인 UI의 변화는 생각보다 미비했다.
웹서비스 개발을 준비중이던 몇년전에는 이 부분때문에 잠시 포기하고 기술의 완성을 기다릴수 밖에 없었다. 이미 표준으로 정립되었지만 브라우저별로 지원의 수준에 많은 차이가 났다. 의외로 엣지브라우저가 이런 점에서는 나쁘지 않았지만 누구도 사용하지 않는다 수준의 미비한 점유율인 브라우저라 신경쓰지도 않았는데 말이다. 앞으로 더 많은 변화를 -특히 모바일 사파리에게- 기대한다. 



목표로 하는 것이 이미지가 아니라 데이터를 기반으로 한 악보를 웹에 동적으로 뿌리고, 코드 악보를 기반으로 반주기로 구동하며, 멜로디 패턴을 릭으로 적용하여 확인하고, 키나 템포의 조절이 가능하고, 각 엘리먼트의 정보를 쉽게 확인 가능한 보기 편한 새로운 악보의 형태를 구현이었기에 쉽지 않았지만 미숙한 결과물이지만 공개를 준비중이기에 미리 몇가지 고려해야 할 정보들과 관련 기술에 대한 기록을 종종 남겨보겠다.