Graphics Programming

Music Processing #1 본문

Season 2

Music Processing #1

minseoklee 2019. 1. 2. 00:36

옛날에 (2011~2012년 즈음) 어도비 플래시로 음악 시각화를 재밌게 만든 적이 있다.



이름은 음악 시각화라고 붙였지만 딱히 음악의 특성을 잘 표현하는 건 아니었다. 볼륨이 커지면 화면이 더 급격히 변하거나, 파티클들이 더 빠르게 움직이고 간단한 비트 감지를 통해 비주얼을 급격히 변화시키는 정도였다.


이때는 음악의 장르, 정확한 비트 감지, 선율 표현 등을 할 능력도 없었고 어디서 관련 자료를 찾는 지도 몰랐다. 애초에 푸리에 변환이 뭔지도 몰랐고 매 프레임 computeSpectrum()이라는 API 함수를 호출하면 오디오 샘플이 256개 나오는구나, 그런데 pcm이랑 주파수 스펙트럼이 무슨 차이야? 수준이었으니...



작년에(2018년 -.- 벌써 2019년이다) 오랜만에 하나 만들어봤지만 역시 옛날 기술력 재탕하는 데 그쳤다. 하지만 그 사이에 대학교도 졸업했고 어려운 것들을 어느 정도 읽을 줄도 알게 되었다.



그래서 검색하다 이런 책을 찾았다. 목차를 보고 '그래 바로 이 책이다' 해서 pdf를 질렀고 쭉 읽어보니 내가 원하던 내용이 모두 있었다.


아무래도 플래시가 익숙해서 액션스크립트로 구현해보려니 computeSpectrum()이 돌려주는 256개 샘플은 크로마 클래스들을 구분하기에 해상도가 턱없이 낮았다. 푸리에 변환할 때 윈도우 크기가 고정이여서 그냥 내가 직접 구현해봤는데 렉 걸림 ㅜㅜ


지금은 C++로 갈아타서 오디오 파일을 불러오고 푸리에 변환까지 되는 상태다. 오디오 재생할려고 처음에는 xaudio2를 썼는데 wav만 가능하고 내가 가진 파일은 전부 mp3여서 xaudio2는 집어치우고 SDL + SDL_mixer를 붙였다. SDL 빌드하고 내 프로젝트에 넣으려고 삽질을 좀 했다. 외부 라이브러리 쓸 땐 항상 프로젝트에 끼워넣는 게 문제다.


플래시 쓸 때는 CPU로만 그렸는데 이제 DirectX, OpenGL도 할 줄 아니 빠방하게 3D로 그려보고도 싶다. ShaderToy에 굇수들이 만들어낸 비주얼로 음악을 표현할 수 있으면... 와우 -_- 뭐 일단 책 열심히 읽어서 music processing부터 잘 해야 한다.


Comments