Timidity (日本語)

From ArchWiki
Revision as of 09:08, 7 June 2013 by Kusakata (Talk | contribs)

Jump to: navigation, search

TiMidity++ はハードウェアシンセサイザを使わずに MIDI ファイルを再生するためのソフトウェアシンセサイザです。リアルタイムにサウンドカードにレンダリングすることも、PCM .wav ファイルなどに保存することも、どちらも可能です。

インストール

公式リポジトリから timidity++ パッケージをインストールしてください。

また、音を出すために SoundFont もインストールする必要があります。SoundFonts の一覧:

設定

SoundFont

選択した SoundFont を設定してください。

Freepats

Freepats プロジェクトは TiMidity++ と互換性のあるインストサンプルセットを提供しています。

TiMidity と一緒に Freepats を使うには、以下の行を timidity.cfg に追加してください:

/etc/timidity++/timidity.cfg
dir /usr/share/timidity/freepats
source /etc/timidity++/freepats/freepats.cfg

Fluidr3

There are other SoundFonts available. This will show how to install the fluidr3AUR SoundFont.

Now we have to add its path to the TiMidity++ configuration file. Just add this line:

/etc/timidity++/timidity.cfg
soundfont /usr/share/soundfonts/fluidr3/FluidR3GM.SF2

デーモン

timidity.service を実行するように設定してください。詳しくは Daemons (日本語) を読んで下さい。

PulseAudio を使っている場合、動作しないことがあります。デスクトップ環境の自動実行プログラムに以下の行を追加することができます。もしくは、デーモンモードで TiMidity++ を起動したい場合、以下のコマンドを使うことでコンソールに出力させることが可能です:

$ timidity -iA

使用方法

ファイルの再生

TiMidity++ を使う方法は2つあります。MIDI プレイヤーとしてか ALSA の MIDI デーモンとしてかです。

スタンドアロンモード

TiMidity++ を使って簡単に MIDI ファイルを再生できます:

$ timidity example.midi

-in もしくは -ig オプションを加えることでテキストベース・GTK+ のインターフェースが表示されます。例えば Xfce/GNOME ユーザーは MIDI ファイルをカスタムコマンド timidity -ig で開くように設定することができます。TiMidity++ には他にも多くのオプションが存在します。man timidity を見るか -h を使ってヘルプを見て下さい。

GTK+ インターフェースには、プレイリスト・音量コントロール・ピッチや再生速度の変更オプションなどの機能があります。

デーモンモード

デーモン (ALSA sequencer client) として TiMidity++ を実行している場合 rosegarden, aplaymidi, vkeybd など他のプログラムに MIDI 出力のサポートを提供します。

デーモンモードでは4つのソフトウェア MIDI ポートが作られます:

$  aconnect -o
client 128: 'TiMidity' [type=user]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
    2 'TiMidity port 2 '
    3 'TiMidity port 3 '

aplaymidi を使って MIDI ファイルを再生するには:

$ aplaymidi filename.mid --port 128:0

Another example is vkeybd, a virtual MIDI keyboard for X.

You can install vkeybdAUR from the AUR.

$ vkeybd --addr 128:0

Option --addr 128:0 connects the input (readable) software MIDI port provided by vkeybd to the first output (writable) ALSA port provided by Timidity. Alternatively you can use aconnect(1), community/aconnectgui or AUR packages patchage, kaconnectAUR. As a result when you play around with the keys on the vkeybd TiMidity++ plays the appropriate notes.

仮想 MIDI デバイスに接続

Once you have the TiMidity++ daemon running and it is working with aplaymidi, you can connect it to a virtual MIDI device that will work in programs such as rosegarden or scala.

Load the snd-virmidi kernel module and (optionally) configure it to be loaded at boot. Read Kernel modules for more information.

Use aconnect to verify the port numbers:

$ aconnect -o
client 14: 'Midi Through' [type=kernel]
     0 'Midi Through Port-0'
 client 20: 'Virtual Raw MIDI 1-0' [type=kernel]
     0 'VirMIDI 1-0     '
 client 21: 'Virtual Raw MIDI 1-1' [type=kernel]
     0 'VirMIDI 1-1     '
 client 22: 'Virtual Raw MIDI 1-2' [type=kernel]
     0 'VirMIDI 1-2     '
 client 23: 'Virtual Raw MIDI 1-3' [type=kernel]
     0 'VirMIDI 1-3     '
 client 128: 'TiMidity' [type=user]
     0 'TiMidity port 0 '
     1 'TiMidity port 1 '
     2 'TiMidity port 2 '
     3 'TiMidity port 3 '

Now create the connection:

$ aconnect 20:0 128:0

You should now have a working MIDI output device on your system (/dev/snd/midiC1D0).

トラブルシューティング

TiMidity++ が MIDI ファイルを再生しない

SoundFile が正しく設定されていないのかもしれません。次を実行してください:

$ timidity example.midi

次のような表示が端末出力にあったら、あなたの SoundFile は正しく設定されていません。

No instrument mapped to tone bank 0, program XX - \
this instrument will not be heard

サンプルをインストールして SoundFile を /etc/timidity++/timidity.cfg に追加してください。詳しくは SoundFonts を見て下さい。

デーモンモードが起動しない

まず、あなたが audio グループに含まれているか確認してください。含まれていない場合、グループに追加してください:

# gpasswd audio -a username

グループを変更した後は、ログインし直す必要があります。

PulseAudio を使っている場合、timidity.service有効にする代わりに、TiMidity++ をユーザーで起動してください:

$ timidity -iA -OO

TiMidity++ をバッググラウンドで実行したい場合は、TiMidity++ のデーモン化オプションを使う代わりに、& を加えて下さい。

デーモンモードで再生速度がおかしい

TiMidity++'s ALSA output module (default) may cause this issue in ALSA server mode. Try another output option, for example, libao:

$ timidity -iA -OO

And test it using aplaymidi. If this does not work, you may want to configure JACK and set TiMidity++'s output to jack.

Tips and tricks

ファイルの変換

TiMidity++ は MIDI ファイルを他のフォーマットに変換することもできます。次のコマンドでは生成されたサウンドを WAV ファイルに保存します:

$ timidity input.mid -Ow -o out.wav

他のフォーマットに変換するために FFmpeg を使うことができます。次のコマンドは mp3 に変換します:

$ timidity input.mid -Ow -o - | ffmpeg -i - -acodec libmp3lame -ab 256k out.mp3

DOSBox で TiMidity++ を使う方法

Note: The following method is tested in version DOSBox 0.72

First of all, you need to write a config file. Input the following in DOSBox to create a configuration file:

config -writeconf dosbox.conf

you can replace dosbox.conf by any name that you want, add a dot in front of it if you want to hide it.

Make sure you started TiMidity++ as daemon as the instructions above, use the aconnect command.

Edit this configuration file with any editor, go to the section:

dosbox.conf
[midi]
mpu401=intelligent
device=default
config=

put the ALSA connection port into the back of config=, in default:

config=128:0

Restart DOSBox within a terminal so you can see its debug messages, by no accident you should see a successful initiation on port 128:0.

関連項目