久しぶりに timidity を使って midi の曲を聴こうとしたら、音色が正しく鳴っていないことに気づいた。
どうも、 timidity が使っている音源ファイルである soundfont の設定が正しくないようだ。
の様な書き方しかしていなかったが、この形だと、1つの soundfont ファイルでバンク内の全ての preset の音色を持っている場合は大丈夫だが、 soundfont によっては、特定の楽器のみの音色で構成されるものもあるし、そのような soundfont の場合、 preset の番号が 0 だったりするものもあるので、それをそのまま読み込んだだけではうまくない。必要な preset の音色だけ置き換える必要がある。
そのような場合の記述の仕方として「Timidity導入解説」などによると、
のような書き方があるのが分かった。 bank は soundfont 内の音色の bank 番号、 p2 は soundfont 内の音色の preset 番号、 p1 は、 timidity がその soundfont を読み込んだ際に割り当てる preset 番号。
ただ、これを設定するためには、 soundfont ファイルの中にどんな音色が用意されているかと、それらの音色に設定されている bank 番号と preset 番号を知る必要がある。
検索して、 SoundFont Librarian というツールを使えば soundfont の内部の設定を見ることができるのが分かったが、どうもこのツール、配布先が全くのバラバラで、配布されているバージョンもバラバラ、挙句にどこが開発しているのかも不明・・・という、非常に胡散臭い状態のようだ。検索してみた感じだと、随分前に E-MU Systems というサンプラーや音源、 MIDI キーボードなどを作っていたメーカーがあって、そこが作っていたようだが、10年近く前に解散して Creative Labs の一部署となってしまったようだ。なので、今ネット上で開発配布されている SoundFont Librarian は、 E-MU ではない誰かがソースをどうやったか分からないがどこからか入手して配布しているか、または、そっくりのツールを一から書き起こしたか、どちらかだと思うが、いずれにせよ、どこの誰が何をやったか分からないようなツールにはウイルスやトラップなどが仕込まれていても全然不思議ではないのでインストールするわけにはいかない。
なので、ネットで soundfont の仕様を見つけて調べて、自分でツール( sf2show )を作成した。
拡張子が .sf2 の soundfont ファイルを開くと、その内部構造を下のようにリストに表示してくれる。
timidity を使っていて、 soundfont の内部を見て設定するためにこれを必要とする人がどれだけいるかは知らないが、一応公開しておく。 .Net を使っているので、 .NET Framework 4.6.1以降が必要。
各 Chank の意味などについて詳しく知りたければ、上に挙げた URL の仕様を見て欲しいが、 timidity.cfg を記述する際に必要となる soundfont 内の音色と bank 番号、 preset 番号については、 ‘pdata phdr’ Chank の行を見れば分かる。
この記事のリンク元