Mac OS XでTiMidity++を使う

2007/4/22
Masayuki Nii / msyk@msyk.net
Last Modified:

久しぶりにMIDIをいじることになり、経緯はさておき、MIDIデータをサウンドデータにレンダリングしたかったのです。あれこれ、あれこれ探すと、そういう機能を持つMIDIプレイヤとしてQMidiってのがあるのが分かりました。これはこれで使えるのですが、「いろいろなテンポ」「いろいろなキー」でのMIDI演奏結果のファイルを作りたかったので、あれこれ探して、TiMidity++にいきつきました。インストール方法をメモっておきます。

TiMidity++のMac OS X版(CocoaでGUI)もあるのですが、とりあえずバイナリは動きませんでした。ソースもあったのですが、コマンドラインの方が事は早そうなんで、こちらは追求せず。TiMidity++ for MacOS X

インストール手順

以下の手順を行ったのは2007/4/21、OSはMac OS X v10.4.9、Developer ToolsはVer.2.4です。

  1. TiMidity++の英語版のページに行く
  2. Downloadのところにある「TiMidity++ source code 2.13.0」をダウンロード。これが一応最新のStableだった
  3. ダウンロードして展開は自動的に行われる。ソースは~/Desktop/TiMidity++-2.13.0に展開されるので、ターミナルでそのディレクトリをカレントにする
    cd ~/Desktop/TiMidity++-2.13.0
  4. ./configure, make, sudo make install という定番。落ちる機能があるようだが、まあ、これでOKのようだ(もちろん、Developer Toolsのインストールは必要)
    ./configure
    make
    sudo make install
  5. コマンドのフルパスは「/usr/local/bin/TiMidity」でも、パスが通っていないので、「/usr/sbin」に移動させる
    sudo cp /usr/local/bin/TiMidity /usr/sbin
  6. せっかくなので、manもちゃんと出るようにする。
    sudo cp /usr/local/man/man1/TiMidity.1 /usr/share/man/man1
    sudo cp /usr/local/man/man5/TiMidity.cfg.5 /usr/share/man/man3
  7. /usr/localディレクトリにshareディレクトリを作る。もちろんsudo必要
    mkdir /usr/local/share
  8. /usr/local/shareディレクトリにtimidityディレクトリを作る。もちろんsudoが必要
    mkdir /usr/local/share/timidity
  9. TiMidity++の英語のページにあるconfiguration filesというところの「TiMidity++ Configuration File Package v2004/8/3」をダウンロード
  10. 展開したフォルダにあるcfgsフォルダを、/usr/local/share/timidityにcfgという名前でコピーする(あまり意味ないかな。違う名前の場合は後から整合性をとりましょう)
    sudo cp -r ~/Desktop/timidity-cfgp/cfgs /usr/local/share/timidity/cfg
  11. サウンドフォントを、Shanさんのサイトからダウンロード。このページにあるSGM-180 v1.5 GM soundfontをダウンロードする。
  12. サウンドファイル本体は「SGM-180 v1.5.sfArk.exe」というファイル。Windowsで実行して圧縮を展開する。ダブルクリックすればよく、「SGM-180 v1.5.sf2」ができあがる。(sfArkではなく、sf2が出てくる)
  13. 「SGM-180 v1.5.sf2」というファイルを、/Library/Audio/Sounds/Banksに入れる。これで、QuickTimeでも参照できるようになる。
  14. /usr/local/share/TiMidity/cfg/sgm150v140.cfgを開いて、その内容の「SGM150 v1.40.sf2」を「SGM180 v1.5.sf2」に一括置換する(つまりそこはファイル名なのね)。そのファイルは、同じディレクトリに、sgm180v150.cfgという名前で保存する(設定ファイルの更新が追いついていないですので自分で処理します)
    cp /usr/local/share/timidity/cfg/sgm150v140.cfg ~/sgm180v150.cfg
    (ホームのルートにある「sgm180v150.cfg」をエディタで開いて一括置換、保存)
    sudo cp ~/sgm180v150.cfg /usr/local/share/timidity/cfg
  15. /usr/local/share/TiMidity/cfg/timidity_sgm.cfgを、/usr/local/share/timidity/timidity.cfgにコピー。ファイル名はこのとおりにする。
    cd /usr/local/share/timidity
    sudo cp cfg/TiMidity_sgm.cfg timidity.cfg
  16. /usr/local/share/timidity/timidity.cfgの内容を編集して、次のようにする。
    sudo nano /usr/local/share/timidity/TiMidity.cfg
# example of TiMidity configuration files
# paths
dir ${basedir}/         # to *.exe
dir ${basedir}/cfg      # to *.cfg
dir ${basedir}/sf2      # to *.sf2
dir /Library/Audio/Sounds/Banks
dir /usr/local/share/timidity/cfg

# fundamental SoundFont bank
source sgm180v150.cfg

# GS compatibility
source altassign.cfg
source level88.cfg
source playnote88.cfg
source send88.cfg

これで基本的にOKかと思います。

コマンドのチェックと例

まずはヘルプとバージョンを確認

timidity -h
timidity -v

引数にMIDIファイルを指定すると、即座に音が出ます。つまり演奏ばっちりできますね。

timidity [MIDIファイル]

MIDI演奏をAIFFファイルに落とすには、次のようにします。

timidity -o [出力ファイル.aiff] -Oa [MIDIファイル]

キーを移動するのは-Kパラメータ。-24〜24が指定できます。1単位は半音です。

timidity -K 2 -o [出力ファイル.aiff] -Oa [MIDIファイル]

テンポは-Tパラメータで、パーセントで指定します。つまり、-T 100はオリジナルとおり

timidity -T 90 -o [出力ファイル.aiff] -Oa [MIDIファイル]

特定のMIDIチャンネルを抜くには、-Qパラメータです。複数のチャンネルを抜く場合はカンマで区切ればいいです。どのチャンネルに何の音が入っているか知りたい場合は、QMidiで開いて調べるのが早いかな…。

timidity -Q3,4 -o [出力ファイル.aiff] -Oa [MIDIファイル]

最後に

以上、自分の目的は達成できそうですので、終了!

ちなみに、今時、MIDIなんて言う輩は時代遅れと思っている人も多いかもしれません。まあ、その通りなんですが、それを通り越して、「いまだにフロッピー」な世界ってまだあります。フロッピーにMIDIデータを入れて販売するマシンは最近はメモリカードも使えるとは言え現役ですし、最新版じゃないエレクトーンはいまもフロッピーを使う必要があります(2002年に新発売のEL-900Bまでフロッピー、2004年のStagea以降USBやメモリが主流に)。また、この世界では、ピアノプレーヤ(ミュージックプレイヤなどとも言う)というマシンも音楽教室でよく使われており、それもデータはフロッピーです。こういう歴史を突き抜けた世界はまだまだあるのです。

なんでMIDIで、なんでピアノプレーヤか? たぶん、最新技術を知っている人に取ってはアホ臭いでしょうけど、これは理由があります。音楽教室でのニーズにMIDIは合致します。MIDIであれば、テンポやキーを変えて演奏したり、特定のパートを抜いて演奏することができます。練習曲のMIDIデータが販売されていて、たとえばピアノのパートを消して伴奏にするとか、まだちゃんと弾けない場合にはゆっくりやるとか、いろいろ使い勝手がいいわけです。もちろん、今時のサウンド編集ソフトを使えば同じ事ができますが、10年以上前に買ったMIDI/フロッピー機材でやれることと根本的には変わらないですよね。むしろ、MIDIデータのように軽く、演奏途中でのテンポやキーの変更が簡単にできるといった機能、そしてエレクトーンやピアノプレーヤといった一体化されたソリューション、過去からのデータの蓄積…こうした事情を考えればこの世界はまだまだなくなりそうにありません。

しかし、今時の機材を考えてみれば…だいたい、30秒くらいの曲だと非圧縮で5MB、概算で10のキーと、それぞれ10種類のテンポをそれぞれサウンドで用意するとしたら、500MBとなります(そんなにいらんでしょうけど)。MP3にしたらだいたい10分の1くらいになります。それらのMP3データを用意しておいて、切り替えて使うとか、実際に使うファイルだけを使うとすれば、ピアノプレーヤってiPodに置き換わりますよね? もちろん、フルパート、ピアノパートなしなどなど、いろんなバリエーションが欲しい訳ですが、今時のコンピュータのリソースでは、それらをもともと用意しておいて、必要なものを取り出す…ということも十分可能になってきています。つまり、iTunesにはバラエティ豊富なレンダリング済みのデータがあり、それをチョイスしてiPodにコピーして使うというイメージですね。

ということで、後はスクリプトをくむだけになりました〜。