[App 개발] ModPlayer 를 만들어보자
본문
매킨토시하고 MOD 는 아주 오랜 인연을 맺고 있지요. 수많은 MOD Player 들이 옛날 68K 맥에서부터 Mac Guru 의 손에 의하여 다듬어져 왔습니다. 그런데 웬일인지 OS X 용 MOD 플레이어는 아직 그렇다할 놈이 없군요. 피씨용으로는 윈엠에서 MOD 를 지원하긴 합니다만, 워낙 MOD 란 놈이 유저 Variable 이 많아서 그런지 버그가 아주 심히 많습니다.
계속해서 맥마메를 분석하다보니, 이것을 바탕으로 무엇인가 재미있는 것을 만들어보아야겠다는 생각을 해 보았고, 그 첫 번째 시도가 바로 MOD Player 입니다. 퀵타임 로우 레벨 음악 출력 루틴을 일단 맥마메에서 추출했습니다. 그리고 아주 초 간단한 기초 MOD 플레이어 소스 (Sun 유닉스용 소스) 를 클래스로 분리하고 그것을 데이터 청크별로 뽑아낼 수 있도록 인터페이스 멤버를 구성했습니다.
다운로드를 받아서 음악을 한 번 틀어보시는 것은 말리지 않겠습니다만... ^^ 엄청난 음질은 절대 기대하지 말아 주셨으면 합니다. (하하) 기존에 나온 MOD 플레이어는 이렇게 간단하지 않고, FIR 필터가 적용되어 있어서 제가 만든 이 소스만큼 고주파 노이즈가 섞여있지 않습니다. 그리고 MOD 소스 자체가 워낙 허접이어서 8KHz, 8bit Mono 용에서 확장하려고 하면 수동으로 파라미터를 고쳐줘야 하는데, 파라미터 계산 문제를 아직 해결하지 못한 상태입니다. 아마 샘플링 속도가 높아지면 음질이 더 좋아질 것같은데 말입니다. 그래도 음악은 꽤 들을만 합니다. ^^ 참고로 소스와 같이 포함시킨 음악은 Purple Motion 의 Shadow Run 입니다. Future Crew 의 작품이죠.
- 소스의 구성
QTSound: 퀵타임 음악 출력 버퍼 구성과 콜백 함수 선언 부분입니다. 이 부분을 응용하시면 여러분들이 원하시는 low-level 음악 출력 루틴을 구성하시는데 유용하게 사용하실 수 있을 것입니다. 주석을 친절하게 달아 드렸더라면 얼마나 좋겠습니까마는... 주석 달 만큼 어려운 소스도 아니고, 맥마메 분석에서 살펴보았던 구조를 같이 곁들여서 참조하시면 이해하시는데에 크게 어려움이 없으실 것입니다. ^^
ModPlay: 이것은 유닉스용 MOD 플레이어의 허접 클래스 버젼입니다. 아직 내부에는 디버깅용 printf 함수가 곳곳에 남아 있어서 아마 Xcode 의 status 창에 유용한 정보드를 가득 뿌려줄 것입니다. 중요한 함수는 딱 두 개 뿐입니다. ModLoad() 함수와 FillBuffer 함수죠. MOD 파일 구조에 관심이 있으신 분들은 인터넷에서 파일 구조 문서를 찾아서 소스와 같이 보시면 크게 도움이 될 것입니다. (그만큼 소스가 심플 그 자체입니다.)
일단은 사운드 함수 동작과 MOD 클래스의 연동 문제를 해결하려는 가장 기초적인 목적으로 만들어진 소스이기 때문에 파일 오픈 다이얼로그니 그런 사치스러운(?) 것은 하나도 없습니다. ^^ 앞으로 좀 더 MOD 를 파 볼 것인지, 아니면 일단 음악 출력은 이대로 접고 간단한 게임 구현으로 넘어갈지를 놓고 고민중입니다. 궁극적으로는 게임 제작으로 갈 것입니다만, MOD 쪽도 좀 더 파보았음 하는 욕심이 없지않아 있습니다. ^^
그러면 유용하게 쓰십시오. MOD 파일은 인터넷 Future Crew Archive 에서 받은 것이기 때문에 저작권에 문제가 없을 것으로 생각됩니다만, 혹시라도 문제가 된다고 생각되시면 알려주십시오. 지워야죠 뭐... ^^;;;
최신글이 없습니다.
최신글이 없습니다.
댓글목록 0