「Timidity++」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→インストール: Soundfont を追加) |
|||
(4人の利用者による、間の15版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:マルチメディア]] |
[[en:Timidity]] |
[[en:Timidity]] |
||
TiMidity++ はハードウェアシンセサイザを使わずに MIDI ファイルを再生するための[[Wikipedia:ja:ソフトウェア・シンセサイザー|ソフトウェアシンセサイザ]]です。リアルタイムにサウンドカードにレンダリングすることも、PCM .wav ファイルなどに保存することも、どちらも可能です。 |
TiMidity++ はハードウェアシンセサイザを使わずに MIDI ファイルを再生するための[[Wikipedia:ja:ソフトウェア・シンセサイザー|ソフトウェアシンセサイザ]]です。リアルタイムにサウンドカードにレンダリングすることも、PCM .wav ファイルなどに保存することも、どちらも可能です。 |
||
5行目: | 5行目: | ||
== インストール == |
== インストール == |
||
− | + | {{Pkg|timidity++}} パッケージを[[Pacman|インストール]]してください。 |
|
また、音を出すために [[Wikipedia:ja:SoundFont|SoundFont]] もインストールする必要があります。SoundFont の一覧: |
また、音を出すために [[Wikipedia:ja:SoundFont|SoundFont]] もインストールする必要があります。SoundFont の一覧: |
||
− | * {{Pkg| |
+ | * {{Pkg|freepats-general-midi}} |
* {{Pkg|soundfont-fluid}} |
* {{Pkg|soundfont-fluid}} |
||
+ | * {{AUR|soundfont-generaluser}} |
||
+ | * {{AUR|soundfont-arachno}} |
||
== 設定 == |
== 設定 == |
||
27行目: | 29行目: | ||
TiMidity と一緒に Freepats を使うには、以下の行を {{ic|timidity.cfg}} に追加してください: |
TiMidity と一緒に Freepats を使うには、以下の行を {{ic|timidity.cfg}} に追加してください: |
||
− | {{hc|/etc/timidity |
+ | {{hc|/etc/timidity/timidity.cfg| |
− | + | soundfont /usr/share/soundfonts/freepats-general-midi.sf2 |
|
− | source /etc/timidity++/freepats/freepats.cfg |
||
}} |
}} |
||
38行目: | 39行目: | ||
パッケージをインストールしたらパスを TiMidity++ 設定ファイルに追加する必要があります。次の行を追加してください: |
パッケージをインストールしたらパスを TiMidity++ 設定ファイルに追加する必要があります。次の行を追加してください: |
||
− | {{hc|/etc/timidity |
+ | {{hc|/etc/timidity/timidity.cfg| |
− | soundfont /usr/share/soundfonts/ |
+ | soundfont /usr/share/soundfonts/FluidR3_GM.sf2 |
}} |
}} |
||
=== デーモン === |
=== デーモン === |
||
− | {{ic|timidity.service}} を実行するように設定してください。詳しくは[[ |
+ | {{ic|timidity.service}} を実行するように設定してください。詳しくは[[デーモン]]を読んで下さい。 |
[[PulseAudio|PulseAudio]] を使っている場合、動作しないことがあります。デスクトップ環境の自動実行プログラムに以下の行を追加することができます。もしくは、デーモンモードで TiMidity++ を起動したい場合、以下のコマンドを使うことでコンソールに出力させることが可能です: |
[[PulseAudio|PulseAudio]] を使っている場合、動作しないことがあります。デスクトップ環境の自動実行プログラムに以下の行を追加することができます。もしくは、デーモンモードで TiMidity++ を起動したい場合、以下のコマンドを使うことでコンソールに出力させることが可能です: |
||
50行目: | 51行目: | ||
$ timidity -iA |
$ timidity -iA |
||
− | [[Systemd/ |
+ | [[Systemd/ユーザー]] を使ってユーザーの TiMidity++ サービスを書き込むことも可能です。{{ic|~/.config/systemd/user/}} に以下のように {{ic|timidity.service}} ファイルを書いて下さい: |
− | {{hc|/ |
+ | {{hc|~/.config/systemd/user/timidity.service|<nowiki>[Unit] |
Description=TiMidity++ Daemon |
Description=TiMidity++ Daemon |
||
After=sound.target |
After=sound.target |
||
63行目: | 64行目: | ||
}} |
}} |
||
+ | 以下のコマンドを実行することでユーザーがログインしたときに自動的に Timidity++ が起動するようになります: |
||
− | {{ic|# systemctl --global enable timidity.service}} を使って全てのユーザーでサービスを有効にして下さい。 |
||
+ | $ systemctl --user enable timidity.service: |
||
− | ユーザーがログインしたときに自動的に Timidity++ が起動するようになります。 |
||
== 使用方法 == |
== 使用方法 == |
||
78行目: | 79行目: | ||
$ timidity example.midi |
$ timidity example.midi |
||
− | {{ic|-in}} もしくは {{ic|-ig}} オプションを加えることでテキストベース・GTK+ のインターフェースが表示されます。例えば Xfce/GNOME ユーザーは MIDI ファイルをカスタムコマンド {{ic|timidity -ig}} で開くように設定することができます。TiMidity++ には他にも多くのオプションが存在します。{{ |
+ | {{ic|-in}} もしくは {{ic|-ig}} オプションを加えることでテキストベース・GTK+ のインターフェースが表示されます。例えば Xfce/GNOME ユーザーは MIDI ファイルをカスタムコマンド {{ic|timidity -ig}} で開くように設定することができます。TiMidity++ には他にも多くのオプションが存在します。{{man|1|timidity}} を見るか {{ic|-h}} を使ってヘルプを見て下さい。 |
GTK+ インターフェースには、プレイリスト・音量コントロール・ピッチや再生速度の変更オプションなどの機能があります。 |
GTK+ インターフェースには、プレイリスト・音量コントロール・ピッチや再生速度の変更オプションなどの機能があります。 |
||
105行目: | 106行目: | ||
$ vkeybd --addr 128:0 |
$ vkeybd --addr 128:0 |
||
− | オプション {{ic|--addr 128:0}} は vkeybd による入力 (読み込み可能) ソフトウェア MIDI ポートを Timidity による最初の出力 (書き込み可能) ALSA ポートに接続します。また aconnect |
+ | オプション {{ic|--addr 128:0}} は vkeybd による入力 (読み込み可能) ソフトウェア MIDI ポートを Timidity による最初の出力 (書き込み可能) ALSA ポートに接続します。また aconnect, {{Pkg|patchage}}, kaconnect を使うこともできます。これで vkeybd のキーで演奏すると TiMidity++ が対応する音を再生します。 |
==== 仮想 MIDI デバイスに接続 ==== |
==== 仮想 MIDI デバイスに接続 ==== |
||
111行目: | 112行目: | ||
TiMidity++ デーモンを動作させ aplaymidi で動くようにできたのならば、rosegarden や scala などのプログラムで動作する仮想 MIDI デバイスに接続することができます。 |
TiMidity++ デーモンを動作させ aplaymidi で動くようにできたのならば、rosegarden や scala などのプログラムで動作する仮想 MIDI デバイスに接続することができます。 |
||
− | {{ic|snd-virmidi}} '''カーネルモジュール'''をロードして、(任意で)起動時にロードするように設定してください。詳しくは[[ |
+ | {{ic|snd-virmidi}} '''カーネルモジュール'''をロードして、(任意で)起動時にロードするように設定してください。詳しくは[[カーネルモジュール]]を読んで下さい。 |
aconnect を使ってポート番号を確認します: |
aconnect を使ってポート番号を確認します: |
||
149行目: | 150行目: | ||
this instrument will not be heard |
this instrument will not be heard |
||
− | サンプルをインストールして SoundFile を {{ic|/etc/timidity |
+ | サンプルをインストールして SoundFile を {{ic|/etc/timidity/timidity.cfg}} に追加してください。詳しくは [[#Soundfont|SoundFont]] を見て下さい。 |
− | |||
− | === デーモンモードが起動しない === |
||
− | |||
− | まず、あなたが '''audio''' グループに含まれているか確認してください。含まれていない場合、グループに追加してください: |
||
− | |||
− | # gpasswd audio -a ''username'' |
||
− | |||
− | グループを変更した後は、ログインし直す必要があります。 |
||
− | |||
− | [[PulseAudio|PulseAudio]] を使っている場合、{{ic|timidity.service}} を[[Daemons|有効にする]]代わりに、TiMidity++ をユーザーで起動してください: |
||
− | |||
− | $ timidity -iA -OO |
||
− | |||
− | TiMidity++ をバッググラウンドで実行したい場合は、TiMidity++ のデーモン化オプションを使う代わりに、{{ic|&}} を加えて下さい。 |
||
=== デーモンモードで再生速度がおかしい === |
=== デーモンモードで再生速度がおかしい === |
||
173行目: | 160行目: | ||
オプションを変えた後 aplaymidi を使ってテストしてください。これで問題が修正されない場合は、[[JACK Audio Connection Kit|JACK]] を設定して TiMidity++ の出力先を jack にすると良いかもしれません。 |
オプションを変えた後 aplaymidi を使ってテストしてください。これで問題が修正されない場合は、[[JACK Audio Connection Kit|JACK]] を設定して TiMidity++ の出力先を jack にすると良いかもしれません。 |
||
+ | == ヒントとテクニック == |
||
− | == Tips and tricks == |
||
=== ファイルの変換 === |
=== ファイルの変換 === |
||
186行目: | 173行目: | ||
{{Note|以下の方法は DOSBox バージョン 0.72 でテストしています。}} |
{{Note|以下の方法は DOSBox バージョン 0.72 でテストしています。}} |
||
− | まず最初に、設定ファイルを書く必要があります。DOSBox で次を入力して設定ファイルを作成してください: |
+ | まず最初に、設定ファイルを書く必要があります。[[DOSBox]] で次を入力して設定ファイルを作成してください: |
config -writeconf dosbox.conf |
config -writeconf dosbox.conf |
||
{{ic|dosbox.conf}} は好きな名前に置き換えることができます。隠しファイルにしたいときは名前の前にドットを加えて下さい。 |
{{ic|dosbox.conf}} は好きな名前に置き換えることができます。隠しファイルにしたいときは名前の前にドットを加えて下さい。 |
||
206行目: | 193行目: | ||
== 関連項目 == |
== 関連項目 == |
||
− | * [[ |
+ | * [[USB MIDI キーボード]] |
2021年8月13日 (金) 10:31時点における版
TiMidity++ はハードウェアシンセサイザを使わずに MIDI ファイルを再生するためのソフトウェアシンセサイザです。リアルタイムにサウンドカードにレンダリングすることも、PCM .wav ファイルなどに保存することも、どちらも可能です。
目次
インストール
timidity++ パッケージをインストールしてください。
また、音を出すために SoundFont もインストールする必要があります。SoundFont の一覧:
設定
まずユーザーを audio グループに追加する必要があります。
# gpasswd -a <user> audio
SoundFont
選択した SoundFont を設定してください。
Freepats
Freepats プロジェクトは TiMidity++ と互換性のあるインストサンプルセットを提供しています。
TiMidity と一緒に Freepats を使うには、以下の行を timidity.cfg
に追加してください:
/etc/timidity/timidity.cfg
soundfont /usr/share/soundfonts/freepats-general-midi.sf2
Fluidr3
他にも利用できる SoundFont があります。以下は soundfont-fluid SoundFont のインストール方法です。
パッケージをインストールしたらパスを TiMidity++ 設定ファイルに追加する必要があります。次の行を追加してください:
/etc/timidity/timidity.cfg
soundfont /usr/share/soundfonts/FluidR3_GM.sf2
デーモン
timidity.service
を実行するように設定してください。詳しくはデーモンを読んで下さい。
PulseAudio を使っている場合、動作しないことがあります。デスクトップ環境の自動実行プログラムに以下の行を追加することができます。もしくは、デーモンモードで TiMidity++ を起動したい場合、以下のコマンドを使うことでコンソールに出力させることが可能です:
$ timidity -iA
Systemd/ユーザー を使ってユーザーの TiMidity++ サービスを書き込むことも可能です。~/.config/systemd/user/
に以下のように timidity.service
ファイルを書いて下さい:
~/.config/systemd/user/timidity.service
[Unit] Description=TiMidity++ Daemon After=sound.target [Service] ExecStart=/usr/bin/timidity -iA -Os [Install] WantedBy=default.target
以下のコマンドを実行することでユーザーがログインしたときに自動的に Timidity++ が起動するようになります:
$ systemctl --user enable timidity.service:
使用方法
ファイルの再生
TiMidity++ を使う方法は2つあります。MIDI プレイヤーとしてか ALSA の MIDI デーモンとしてかです。
スタンドアロンモード
TiMidity++ を使って簡単に MIDI ファイルを再生できます:
$ timidity example.midi
-in
もしくは -ig
オプションを加えることでテキストベース・GTK+ のインターフェースが表示されます。例えば Xfce/GNOME ユーザーは MIDI ファイルをカスタムコマンド timidity -ig
で開くように設定することができます。TiMidity++ には他にも多くのオプションが存在します。timidity(1) を見るか -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
他に X の仮想 MIDI キーボード vkeybd を使うこともできます。
$ vkeybd --addr 128:0
オプション --addr 128:0
は vkeybd による入力 (読み込み可能) ソフトウェア MIDI ポートを Timidity による最初の出力 (書き込み可能) ALSA ポートに接続します。また aconnect, patchage, kaconnect を使うこともできます。これで vkeybd のキーで演奏すると TiMidity++ が対応する音を再生します。
仮想 MIDI デバイスに接続
TiMidity++ デーモンを動作させ aplaymidi で動くようにできたのならば、rosegarden や scala などのプログラムで動作する仮想 MIDI デバイスに接続することができます。
snd-virmidi
カーネルモジュールをロードして、(任意で)起動時にロードするように設定してください。詳しくはカーネルモジュールを読んで下さい。
aconnect を使ってポート番号を確認します:
$ 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 '
そして接続を作成してください:
$ aconnect 20:0 128:0
これでシステム上に動作する MIDI 出力デバイスが出来たはずです (/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
に追加してください。詳しくは SoundFont を見て下さい。
デーモンモードで再生速度がおかしい
この問題 は TiMidity++ の (デフォルトの) ALSA 出力モジュールを ALSA サーバーモードで使った時に発生します。libao など、他の出力オプションを試して下さい:
$ timidity -iA -OO
オプションを変えた後 aplaymidi を使ってテストしてください。これで問題が修正されない場合は、JACK を設定して TiMidity++ の出力先を jack にすると良いかもしれません。
ヒントとテクニック
ファイルの変換
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++ を使う方法
まず最初に、設定ファイルを書く必要があります。DOSBox で次を入力して設定ファイルを作成してください:
config -writeconf dosbox.conf
dosbox.conf
は好きな名前に置き換えることができます。隠しファイルにしたいときは名前の前にドットを加えて下さい。
上で説明しているように aconnect を使ってデーモンとして TiMidity++ を起動してください。
設定ファイルを好きなエディタで編集して、次のセクションを見て下さい:
dosbox.conf
[midi] mpu401=intelligent device=default config=
config= の後ろに ALSA の接続ポートを書いて下さい、デフォルトでは:
config=128:0
ターミナルの DOSBox を再起動すればポート 128:0 で初期化が成功してデバッグメッセージが表示されるはずです。