試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

cfgforsfのMandriva Linux向けRPMパッケージを作成/Mandriva上のTiMidity++用設定ファイルについて

TiMidity++でサウンドフォントを使用するための設定ファイルを自動生成するツール(cfgforsf)について」で扱ったcfgforsfRPMパッケージを作成し、別館の配布ページに公開した。
(2014/10/13)配布ページは削除済み。
これはサウンドフォントを読み込んで設定ファイルを書き出すだけなので、単独で動作はするが、TiMidity++で使うためのパッケージのため、実質その本体も必要。
また、Mandriva LinuxTiMidity++は、そのままでは、(「TiMidity++向けの音色パッチ(EawpatchesとEawplus)のRPMパッケージを作成」で扱ったupdate-alternativesにより)設定済みのGUS/Patchセットを使用してしまうため、以下の設定方法を参考にして、cfgforsfが作成した設定ファイルを使用するようにする。

  1. TiMidity++の-cオプションによる指定を使用する
  2. 一般ユーザの設定ファイルが読み込まれるようにする
  3. 設定ファイルの読み込み順序についての追加メモ

TiMidity++の-cオプションによる指定を使用する

TiMidity++-cオプションを使用すると、読み込む設定ファイルが指定できる。

(MIDIファイルの再生・オーディオへの変換など)
$ timidity -c [設定ファイル] ([その他オプション...]) [MIDIファイル]
(ALSA MIDIデバイスとして動作)
$ timidity -c [設定ファイル] ([その他オプション...]) -iA

一般ユーザの設定ファイルが読み込まれるようにする

TiMidity++が最初に読み込む設定ファイルは/etc/timidity/timidity.cfg(あるいは/etc/timidity.cfg)で、上のupdate-alternativesによる音色セットの切り替えもこの場所にあるシンボリックリンクを切り替えることで行っている。
update-alternativesでは、Mandriva Linuxの「TiMidity++」パッケージが提供するカスタム設定ファイル/etc/timidity/timidity-custom.cfgに切り替えることもできて、「gksu」パッケージがインストールされていてsudo設定も済んだ状態で「アプリケーションの実行」ダイアログや端末に

gksudo -- /usr/sbin/update-alternatives --set timidity.cfg /etc/timidity/timidity-custom.cfg

をコピペ後実行して/etc/timidity/timidity-custom.cfgを編集すると、カスタム設定が使用できる。ただし、このファイルは一般ユーザは変更できないアクセス権になっているため

gksudo gedit /etc/timidity/timidity-custom.cfg

など(実行方法は同様)によりこのファイルの全体を管理者権限で下のような内容にして上書きすることで、ホームディレクトリの.timidityというディレクトリにあるtimidity.cfgが読み込まれるようになる(-cオプションなしで実行したときに限る)。
ファイル名: /etc/timidity/timidity-custom.cfg

source ~/.timidity/timidity.cfg

「~」がホームディレクトリに展開される点が重要なので、ドットの付いた隠しディレクトリの中のファイルを指定しなくても動作上問題はない。
ファイル名: /etc/timidity/timidity-custom.cfg

(隠しディレクトリでない場所の例)
source ~/timidity/timidity.cfg

その後、上の「source」の右に書かれた場所の設定ファイルに

source [使用したい設定ファイル]

などの設定を記述する(もしくはファイルを作成するのではなく、使用したい設定ファイルに対するシンボリックリンクをこの場所に作成する)。

設定ファイルの読み込み順序についての追加メモ

[ホームディレクトリ]/.timidity.cfgという場所に設定ファイルがある場合、これも読み込まれるのだが、straceで設定ファイルの読み込み動作を追ってみると、/etc/以下のcfgファイルよりも後となっていて*1、更に、もし[ホームディレクトリ]/.timidity.cfgが存在しても、/etc/以下のcfgファイルがないと

/etc/timidity/timidity.cfg: No such file or directory
timidity: Can't read any configuration file.
Please check /etc/timidity/timidity.cfg

となって動作しないことが分かった(-cオプションを付けて設定ファイルを指定した場合はOK)。
(2008/12/30)/etc/以下のcfgファイルの場所についての記述を修正

使用したバージョン:

  • TiMidity++ 2.13.2-25mdv2009.0

*1:${HOME}/.timidity.cfgに設定を書いた場合、/etc/以下のcfgファイルからたどった設定が読み込まれた後で処理される・また、-cオプションを付けた場合はこれよりも先に処理されていることも分かった