timidity로 미디음악 감상하기

everret의 이미지

-처음에

예전 적수네에 썼던 글과 여러 미디음악 사이트에 썼던 내용을 조금 보완한 글입니다.

-timidity 소개

이 소프트웨어는 미디 음원이 없거나 빈약한 일반 사운드카드에서 미디 파일을 원음에 가깝게 연주할 수 있는 프로그램입니다. 작동 운영체계는 리눅스, 유닉스, 윈도우, FreeBSD, 맥, OS/2 등이며 이런 환경에서 미디 음악을 연주하는데 탁월한 성능을 발휘합니다. 유럽 사운드 카드의 표준이라는 GravisUltra 사운드 카드의 음원을 하나하나 파일로 만들어서 실시간으로 그 음원 파일들을 참조해서 미디 연주를 하므로 여타의 미디 연주기하고는 차원이 다른 음질을 들을 수 있습니다. 소프트미디 따위와 비교하시지 말기 바랍니다. 이건 단순히 에뮬레이팅하는 것 이상이라는 것입니다. 위에서 원음에 가깝다는 완곡한 표현을 했지만, 요샛말로 음질 하나는 죽인다라고 할 수 있습니다. 지원하는 미디 포맷은 GM, GS, XG 모두 지원합니다.

또한, timidity는 미디에서 wave화일을 추출할 수 있습니다. 사실 미디에서 wave화일을 추출하는 것이야 말로 timidity의 원래 주된 기능이었습니다.
즉, 원래 미디 연주기로 써 먹을려던 것이 아니라 wave 화일로만 뽑아 내려고 시작된 프로젝트였던 겁니다.

그런데, 시간이 지나면서 컴퓨터 CPU나 램 등 컴퓨터 하드웨어 성능이 좋아지자 이 프로그램도 점점 발달해서 리얼타임으로 wave를 뽑아 내면서 연주가 가능하게 된 것입니다. 물론 외부로 wave 화일 형태로 뽑아내는 것도 가능합니다. 이렇게 만들어진 wave 화일을 여타의 유틸을 써서 mp3로 변환시킬 수 있습니다. 시디 음질 수준의 mp3로... 본인이 윈도우 환경에서 사용하는 방법은 timidity로 미디 화일에서 wave화일을 만든 후, goldwave란 유틸을 써서 wave를 mp3로 만듭니다.

사용자의 입장에서 timidity의 역사에 대해서 잠깐 회고해 보면 알짜 리눅스 시절, 배포본에 포함된 timidity 0.2i 버전이 첫번째 대면이었습니다. 원 저자는 Tuukka Toivonen 이라는 핀란드 사람입니다. (리누스 토발즈도 핀란드 사람이니..) 그 후 여러 사람들이 참여해서 각종 버전으로 timidity를 발전시켰고, 현재는 ms-windows 용으로도 포팅이 되었으며, 일본 사람 Masanao Izumo에 의해 timidity++ 로 발전된 상태입니다. 그 동안 정말 많은 기능 개선이 있었습니다. 최근 1여년 동안에는 후속 버전이 만들어지지 않았으나 결코 프로젝트가 중단된 것이 아닙니다. 실험 버전은 꾸준히 계속되고 있으며, 윈도즈용의 경우 trace 모드 추가 등 점점 기능이 추가되고 있습니다.

여기 팁에서는 리눅스와 윈도즈용에 대해서 설명할 것입니다. 리눅스 용의 경우에 한텀과 같은 터미널에서 실행시킬 수도 있고, GTK나 Motif, 혹은 tcltk 형식으로 프로그램을 띄울 수 있습니다. Emacs사용자라면 심지어 emacs안에서도 플레이 가능 합니다. 저의 경우엔 그냥 간단히 한텀 하나를 열어서 트레이스 모드로 플레이 하는 것을 좋아합니다.

-관련링크

http://www.goice.co.jp/member/mo/timidity/
여기에서 timidity++를 다운받습니다.

http://www.stardate.bc.ca/eawpatches/html/default.htm
Eric.A.Welsh씨의 이 사이트에서 음원 파일을 다운받습니다. 이것이 가장 정리가 잘 되어 있고 음질도 가장 뛰어납니다. 약 20메가 정도 됩니다. 요새 대부분의 배포본에는 timidity가 포함되어 있을 겁니다. 그러나, 음원 부분에서는 모자르는 부분이 있으므로 조금이라도 음질을 좋게 들으려면 이 음원을 사용하는 것을 추천합니다.

http://timidity.s11.xrea.com/index.en.html
실험적인 timidity++ 버전들이 만들어지고 있는 곳입니다. 주로 윈도우즈용에촛점을 맞춘 것 같습니다. 윈도우즈의 trace 는 꽤 좋아 보입니다.

-설치방법

윈도용은 적당한 위치에 디렉토리를 하나 만들고 압축 파일을 풀어서 파일들을 만든 디렉토리로 넣으면 됩니다. 그리고, 음원용 화일을 저장할 디렉토리도 하나 더 만들고 음원파일들을 그곳에 넣습니다.
음원 파일 디렉토리를 보면 timidity.cfg라는 화일이 있습니다. 이게 중요한데 이 화일을 편집기로 열고 dir c:\eawpats라고 된 부분을 찾습니다.
c:\eawpats를 여러분이 설치한 드라이브와 디렉토리 이름으로 변경하고 저장합니다. 만들어진 timidity.cfg를 timidity가 설치된 디렉토리로 복사합니다. 이제 설치가 끝났습니다.

리눅스용은 받은 소스를 적당한 곳(/tmp 같은)에 풀고, 일반 프로그램을 설치하는 것처럼, configure, make, make install을 차례로 실행해 주면 됩니다. GTK, Lesstif, tcltk, Emacs 형식을 지원하기 위해 다음과 같이 옵션을 주어야 합니다.

./configure --enable-ncurses --enable-slang --enable-motif --enable-tcltk --enable-emacs --enable-vt100 --enable-xaw --enable-gtk --enable-spectrogram

기본적으로 /usr/local/bin 에 timidity 실행파일이 들어가고 /usr/local/share/timidity 에 timidity.el (emacs에서 플레이 하도록 도와주는)이 들어갑니다. (설명서대로 다른 디렉토리를 선택해도 됩니다. install 설명서를 잘 읽어 보세요. 이 밖에 소스 디렉토리의 timidity디렉토리 안의 timidity.h 화일을 일부 수정할 수도 있습니다. install 화일에 순서대로 설명이 되어 있으므로 수정하면 편할 것입니다. 가령 시작시의 볼륨이라든지 음질의 출력 정도등을 필요한대로 수정할 수 있습니다)
빌드와 설치가 끝났다면 음원 파일을 설치하시고, 윈도우 파티션에 음원 파일이 있다면 mount 되어 있는한 그대로 사용해도 됩니다. 윈도우 설치 때처럼 timidity.cfg를 편집해서 /usr/local/share/timidity 에 넣어주면됩니다. (예를 들어 dir /mnt/dosc/eawpats 이런 식으로 변경해서) 혹시, timidity.cfg를 찾지 못하면 /etc 에 timidity.cfg를 넣어주면 될 겁니다. emacs 상에서 플레이 하기 위해서 timidity.el을 /usr/share/emacs/site-lisp 디렉토리에 복사합니다. timidity.el 화일을 편집기로 열어보면 emacs 에서 플레이하는 방법이 주석 부분에 나와 있으므로 그대로 따라하면 됩니다. ~/.emacs에 해당 내용을 정확히 입력하고 emacs상에서 Alt+x를 친후 timidity를 명령어로 치면 됩니다.

-사용방법

윈도용은 데스크탑에 링크시켜 두고 실행하면 편합니다. 리눅스 용에 비해 외관도 단순하고, 스킨도 사용하지 않아 투박해 보이지만 성능은 괜찮은 편입니다. 메뉴의 config로 들어가서 preference를 선택합니다. 첫번째 탭(player)에서 english를 선택하고 확인을 누릅니다. 다시 실행되며 영어로 메뉴가 나옵니다. 몇 가지 설정은 한번씩 각자 적용해 보시고 misc에서 Load Instruments While Playing을 uncheck 합니다. 왜냐하면 연주시 음질이 좋지 못하기 때문입니다. 그 위와 아래 두개는 체크합니다. Maximum Voices 256으로 Amplification은 100으로 잡습니다. output 탭을 선택하고 Precision란은 16bit, Signed, Linear PCM 등을 반드시 선택하고 Channels는 Stereo로 Sample rate는 48000으로 잡습니다. 이제 나머지는 그대로 두고 확인을 누릅니다. 이제 윈도우에서 timidity로 미디를 듣는 일만 남았습니다. 오른쪽 그림 부분을 더블 클릭하면 사운드 스펙트럼 파형을 볼 수 있습니다.

리눅스용은 man timidity 를 실행해 본다면 다양한 실행 옵션을 배울 수 있습니다.
우선 간단한 -in, -ig, -im, -ik 옵션을 해 보기 바랍니다. 이건 인터페이스를 터미널, Motif, GTK, tcltk 등으로 실행하는 옵션입니다.

timidity -in 미디화일
timidity -im 미디화일
timidity -ig 미디화일
timiidty -ik 미디화일

이런 식으로 실행하면 됩니다. 여기에 좀더 다양한 옵션을 붙이면

timidity -in -E wpvtos *.mid

이런 식으로 표현하면 됩니다. 필자가 선호하는 터미널 모드상의 -in 인터페이스에서 h 키를 누르면 단축키 설명이 나옵니다. 다시 h 키를 눌러 도움말을 빠져 나와서 t 키를 누르면 트레이스 모드로 들어갑니다. g 키를 누르면 창이 하나 열리고 사운드 스펙트럼을 볼 수 있습니다. n 키를 누르면 다음곡으로 p 키를 누르면 이전 곡을 들을 수 있습니다. l 키를 누르면 현재 디렉토리의 모든 곡의 리스트를 볼 수 있습니다.
설명서를 보고 하나씩 배워 두면 편리합니다.

-mp3로 변환 방법

윈도즈용은 메뉴의 config을 선택하고, preference로 들어갑니다. 첫번째 탭 player에서 Auto start를 uncheck 합니다. Not Looping을 반드시 체크합니다. 네번째 탭 output을 선택하고, 밑에 Windows audio driver라고 된 부분을 클릭하고 RIFF WAVE file로 선택해 줍니다. 이것은 wave 화일을 뽑아내기 위한 것이므로 나중에 작업을 마치고 다시 미디를 듣기 위해서는 설정을 반대로 해 주면 됩니다. 확인을 누르고 설정을 빠져 나옵니다.

먼저 아무 midi나 한곡 불러오기 합니다. 보통 연주할 때처럼 플레이 시킵니다. 평소와는 다르게 좀더 빨리 연주가 되며, 물론 소리는 들리지 않습니다.
출력 화일은 output.wav로 같은 폴더에 생성됩니다. 화일이 생성되었으면 화일 이름을 적당히 바꾸어 줍니다. (주의: wave 화일은 보통 mp3의 10배에 달하는 용량을 가지고 있으므로 하드디스크에 남은 용량이 충분히 있어야 합니다. 보통의 대중 가요 mp3가 4,5메가라면 wave는 40,50메가 용량을 차지합니다)

http://www.goldwave.com에서 goldwave를 다운 받습니다. 이건 wave화일을 mp3로 인코딩하는 유틸입니다.이미 다른 mp3 인코딩 유틸이 있다면 그걸 사용하면 됩니다. (goldwave는 lame의 dll화일을 요구하므로 관련 링크에서 lame도 받아야 합니다. mp3 인코딩을 위해 필수...)
goldwave를 실행해서 file메뉴를 클릭하면 batch processing이라는 것이 보일 겁니다.
그걸 클릭해서 Add files로 위의 wave 화일을 선택해서 넣어 줍니다. (참고로 이건 여러개의 wave 화일들을 mp3로 변환하는데 유용한 명령입니다) 밑의 save as type로 Mpeg audio(*.mp3)를 선택하고 밑의 attributes에 Layer3, 44100Hz,128kbps, stereo를 선택해 주고 folder 탭을 선택해서
Store all the files in their original folders를 선택해 줍니다.
이제 Begin을 눌러 주면 wave를 mp3로 컨버젼하는 작업이 시작됩니다.

리눅스에서 미디 화일로 부터 wave 화일을 뽑아 내려면 (가령, 미디화일 이름이 canon.mid 라면)

timidity -T 100 -E wpvtos -C 128 -s 44100 -Ow canon.mid

같이 실행해 주면 됩니다. (옵션은 메뉴얼을 보세요)
만들어진 wave 화일을 mp3로 만들려면
http://www.idiap.ch/~sanders/not_lame/ 에서 notlame을 가져 옵니다. 역시 다른 mp3 인코더를 쓰더라도 상관 없을 겁니다.

notlame canon.wav canon.mp3

이런 식으로 명령을 내리면 됩니다. 컴퓨터에 따라서 시간이 걸립니다. 지금 컴퓨터(펜3 650, 램384)에선 40초 정도 걸립니다. 예전 펜120, 램32일때는 5분정도 걸렸던 것으로 기억합니다.

-글을 마치며

써 놓고 보니 어째 글이 갈수록 복잡해 지는군요. 어쨋든 timidity는 미디 음악에 관심있는 사람에게는 상당히 유용하니 미디를 듣기 위해 설치하는 것도 후회는 없을 겁니다.
그럼, 광활한 미디의 세계로 여행을 떠나시길

Forums: 
penrose의 이미지

좋은 정보 감사합니다.

옛날에 일본 애니메이션 음악 들으려고 U.C.Berkeley 서버 접속해서 미디파일 다운받던 생각이 나네요.
QuickTime 버전이 바뀔 때마다 새로 연주하고는 카세트로 녹음하곤 했었는데...
Yamaha XG 음원으로 연주해보고는 감동받은 기억도...

아. 그립다. :)

What a wonderful world!

everret의 이미지

도움이 되었다니 끄적여 본 보람이 있군요.

http://allthatmidi.hihome.com/
요새 자주 가는 미디 자료실입니다. 운영하시는 여자분이 굉장히 친절한 것 같고 자료도 많습니다. 특히, 가요 미디 부분이 마음에 드는군요. 가수별로 노래가 분류되어 있습니다.

제가 최근에 만들어서 듣고 있는 플레이 리스트를 공개하면

김범수-하루.mid
scor-AlwaysSomewhere.mid
Oasis-Stand By Me.mid
백년설-대지의항구.mid
백년설-번지없는주막.mid
박일남-전선야곡.mid
이문세-깊은밤을날아서.mid
이은미-기억속으로.mid
이은미-너에게가고싶어.mid
베이시스-네가날버린이유.mid
베이시스-작별의식.mid
부활-lonelynight.mid
최헌-오동잎.mid
트윈픽스.mid
황야의무법자.mid

이군요. 의외로 전통가요가 많은... 미디에서 전통 가요는 상대적으로 수가 적더군요.

pok의 이미지

timidity를 이용하면 AC97사운드카드에서도 rosegarden같은 미디편집프로그램을 사용할 수 있습니다.

주의하실점은 soundfont가 있는지 여부, snd_emu10k1 모듈이 올라와있는지 여부인데, soundfont로는 freepats를 까시면 되고 snd_emu10k1은 modprobe를 이용하셔서 올리면 됩니다.

아. 깜박했는데, 미디편집프로그램을 실행시키기 전에
/usr/bin/timidity -iA -B2,8 -Os1l -s 44100 &
명령을 내려줘야 정상적으로 쓸 수 있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.