「Timidity++」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(→‎インストール: 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行目:
 
== インストール ==
 
== インストール ==
   
[[Official Repositories|公式リポジトリ]]から {{Pkg|timidity++}} パッケージを[[Pacman|インストール]]してください。
+
{{Pkg|timidity++}} パッケージを[[Pacman|インストール]]してください。
   
 
また、音を出すために [[Wikipedia:ja:SoundFont|SoundFont]] もインストールする必要があります。SoundFont の一覧:
 
また、音を出すために [[Wikipedia:ja:SoundFont|SoundFont]] もインストールする必要があります。SoundFont の一覧:
* {{Pkg|timidity-freepats}}
+
* {{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++/timidity.cfg|
+
{{hc|/etc/timidity/timidity.cfg|
dir /usr/share/timidity/freepats
+
soundfont /usr/share/soundfonts/freepats-general-midi.sf2
source /etc/timidity++/freepats/freepats.cfg
 
 
}}
 
}}
   
38行目: 39行目:
 
パッケージをインストールしたらパスを TiMidity++ 設定ファイルに追加する必要があります。次の行を追加してください:
 
パッケージをインストールしたらパスを TiMidity++ 設定ファイルに追加する必要があります。次の行を追加してください:
   
{{hc|/etc/timidity++/timidity.cfg|
+
{{hc|/etc/timidity/timidity.cfg|
soundfont /usr/share/soundfonts/FluidR3_GM2-2.sf2
+
soundfont /usr/share/soundfonts/FluidR3_GM.sf2
 
}}
 
}}
   
 
=== デーモン ===
 
=== デーモン ===
   
{{ic|timidity.service}} を実行するように設定してください。詳しくは[[Daemons|デーモン]]を読んで下さい。
+
{{ic|timidity.service}} を実行するように設定してください。詳しくは[[デーモン]]を読んで下さい。
   
 
[[PulseAudio|PulseAudio]] を使っている場合、動作しないことがあります。デスクトップ環境の自動実行プログラムに以下の行を追加することができます。もしくは、デーモンモードで TiMidity++ を起動したい場合、以下のコマンドを使うことでコンソールに出力させることが可能です:
 
[[PulseAudio|PulseAudio]] を使っている場合、動作しないことがあります。デスクトップ環境の自動実行プログラムに以下の行を追加することができます。もしくは、デーモンモードで TiMidity++ を起動したい場合、以下のコマンドを使うことでコンソールに出力させることが可能です:
50行目: 51行目:
 
$ timidity -iA
 
$ timidity -iA
   
[[Systemd/User|Systemd/User]] を使ってユーザーの TiMidity++ サービスを書き込むことも可能です。{{ic|/etc/systemd/user/}} に以下のように {{ic|timidity.service}} ファイルを書いて下さい:
+
[[Systemd/ユーザー]] を使ってユーザーの TiMidity++ サービスを書き込むことも可能です。{{ic|~/.config/systemd/user/}} に以下のように {{ic|timidity.service}} ファイルを書いて下さい:
   
{{hc|/etc/systemd/user/timidity.service|<nowiki>[Unit]
+
{{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|man timidity}} を見るか {{ic|-h}} を使ってヘルプを見て下さい。
+
{{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, {{AUR|aconnectgui}}, {{Pkg|patchage}}, kaconnect を使うこともできます。これで vkeybd のキーで演奏すると TiMidity++ が対応する音を再生します。
+
オプション {{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}} '''カーネルモジュール'''をロードして、(任意で)起動時にロードするように設定してください。詳しくは[[Kernel modules|カーネルモジュール]]を読んで下さい。
+
{{ic|snd-virmidi}} '''カーネルモジュール'''をロードして、(任意で)起動時にロードするように設定してください。詳しくは[[カーネルモジュール]]を読んで下さい。
   
 
aconnect を使ってポート番号を確認します:
 
aconnect を使ってポート番号を確認します:
149行目: 150行目:
 
this instrument will not be heard
 
this instrument will not be heard
   
サンプルをインストールして SoundFile を {{ic|/etc/timidity++/timidity.cfg}} に追加してください。詳しくは [[#Soundfont|SoundFont]] を見て下さい。
+
サンプルをインストールして 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 keyboards|USB MIDI キーボード]]
+
* [[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 を使うこともできます。

vkeybdAURAUR からインストール可能です。

$ 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 バージョン 0.72 でテストしています。

まず最初に、設定ファイルを書く必要があります。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 で初期化が成功してデバッグメッセージが表示されるはずです。

関連項目