2008년 1월 11일 금요일

멜론 파일(DCF)를 MP3로 만들자.. #2

다시 구질구질한 이야기를 써보자..
멜론 파일(DCF)를 MP3로 만들자.. #1에서 MP3를 어떠한 순서를 통해서 만드는지를 설명했다.

이번 글 #2에서는 #1에서 제시했던 과정이 왜 필요한가를 알아보자

사용자 삽입 이미지

#2에서 나왔던 그림이다.

1) 재생파일 분석
이 과정은 지금 재생하고자 하는 파일의 정보를 알아낸다. 정보를 알아내는 이유는 MP3 ID3 태그에 들어갈 가수, 제목, 앨범 정보를 얻기 위함이고, 녹을 할때 녹음을 하는 시간을 알아내기 위해서 이다. 정보는 간단하게 찾아낼 수 있다.
DCF 파일에서 음악에 대한 정보는 ASCII로 파일을 열었을때 10번째 줄에 Meta 데이터로 기록되어 있다.

대략 아래와 같은 모습이다.
Meta-Container:KS_C_5601-1992;MENU="mp3";Title="니가 사는 그집 - 박진영";Copyright="widerthan";
10번째 줄에는 위에 보이는 정보 외에도 파일 사이즈, Bitrate, Sampling Rate, 장르.. 트랙넘버
이런것들이 기록되어 있는데 이걸 활용해서 파일을 만든다면 결과가 상당히 좋을것 같다.


2) Melon Player 실행
이건 또 왜 실행 시켜야 하는가?? 당연히 DCF파일을 재생해야 하기 때문이다. 실행하는 방법은
[멜론플레이어 실행파일명.exe] [멜론파일.dcf] 형식으로 실행했을 때 바로 재생된다.
그럼 재생할려고 로딩하는 시간과 재생이 끝나고 난뒤의 여유 시간을 더해서 2초정도.. 그럼 1번 과정에서 얻어낸 시간에 +2초를 하게 되면 총 녹음 시간이 나오는것이다. 이거... 손으로 해도 정확할거 같은데 원래 자동화에 이러한 오차정도는 어느정도 고려해야 한다.

3) 녹음시작, 플레이어 재생
일단 녹음을 어떻게 하는지는 나중에 얘기하기로 하고 멜론플레이어를 실행할 때 DCF파일을 인자로 넘겨주면 바로 재생되기 때문에 2번 과정과 3번과정은 연속적으로 진행된다고 보면 된다. 2번과정에서 얘기한 앞에 2초정도는 플레이어 로딩시간이기 때문에 플레이어를 실행하자 마자 녹음을 시작하면 된다는 것이다.

4) 플레이어 종료
플레이어를 종료시키는 이유는 플레이리스트를 삭제하기 위해서 이다. 멜론 폴더에 자기 아이디로 되어 있는 폴더 안에 플레이 리스트 파일이 있다. 이 파일을 멜론 플레이어가 실행하는 동안에 점유를 계속하기 때문에 이 리스트 파일을 삭제하기 위해서는 플레이어를 강제종료 시켜야 된다.

5) 플레이 리스트 삭제
플레이 리스트는 왜 또 삭제 하나... 그 이유는 원하는 파일을 하나 재생하고 나서 이전에 재생했던 다른 파일의 재생을 막기 위해서이다. 녹음하는데 시간 오차를 많이 줘버릴 경우 후반부의 다음곡이 녹음되어버리는 불상사를 막기 위함이다.


여기까지... 그럼 이걸 프로그램으로 풀어내야겠지?
윈도우즈 프로그래밍 조금 하는 사람들은 벌써 머릿속에서 다 계산이 되어서 몇번 과정에 뭐를 써야 하는지 다 알것이다. 그래도 모르는 사람들이 있으니깐 한번 짚고 넘어가자.

WinAPI를 기준으로 설명한다.
1번 과정 CreateFile, ReadFile
2번 과정 CreateProcess
3번 과정 waveInOpen, waveInAddBuffer
4번 과정 ExitProcess

이정도만 제시해주면 벌써 다 만든 사람 있겠지? 다음 #3 부터는 실제 프로그래밍에 들어가보도록 하자.

댓글 없음:

댓글 쓰기