「FluidSynth」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) 細 (→ALSA デーモンモード: --user を追加(英語版より)) |
Kusanaginoturugi (トーク | 投稿記録) (→ALSA デーモンモード: 節「2.3 SDL_Mixer」を訳出) |
||
(同じ利用者による、間の5版が非表示) | |||
3行目: | 3行目: | ||
[http://www.fluidsynth.org/ FluidSynth] は SoundFont 2 の仕様に基づいたリアルタイムソフトウェアシンセサイザーです。{{Pkg|gst-plugins-bad}} の依存パッケージになっているため、{{Grp|gnome}} グループをインストールしたときに一緒にインストールされます。 |
[http://www.fluidsynth.org/ FluidSynth] は SoundFont 2 の仕様に基づいたリアルタイムソフトウェアシンセサイザーです。{{Pkg|gst-plugins-bad}} の依存パッケージになっているため、{{Grp|gnome}} グループをインストールしたときに一緒にインストールされます。 |
||
− | == |
+ | == インストール == |
まずは[[公式リポジトリ]]から {{Pkg|fluidsynth}} を[[pacman|インストール]]してください。 |
まずは[[公式リポジトリ]]から {{Pkg|fluidsynth}} を[[pacman|インストール]]してください。 |
||
− | + | 音を出すためには、[[Wikipedia:SoundFont|サウンドフォント]] をインストールする必要があります。サウンドフォントのリストは次の通りです: |
|
+ | * {{Pkg|freepats-general-midi}} |
||
− | == FluidSynth の使い方 == |
||
+ | * {{Pkg|soundfont-fluid}} |
||
+ | |||
+ | == 使い方 == |
||
FluidSynth を使う方法は2つあります。MIDI プレイヤーとして使うか、ALSA に MIDI サポートを追加するデーモンとして使うかです。 |
FluidSynth を使う方法は2つあります。MIDI プレイヤーとして使うか、ALSA に MIDI サポートを追加するデーモンとして使うかです。 |
||
32行目: | 35行目: | ||
その後、fluidsynth サービスを起動させてセッションを実行できます: |
その後、fluidsynth サービスを起動させてセッションを実行できます: |
||
− | + | systemctl --user start fluidsynth |
|
− | |||
− | 起動時に毎回サービスが起動するようにしたい場合、systemd で有効化してください: |
||
− | |||
− | # systemctl enable fluidsynth |
||
以下の設定で (システムのハードウェア MIDI ポートに加えて) ソフトウェア MIDI 出力ポートができます: |
以下の設定で (システムのハードウェア MIDI ポートに加えて) ソフトウェア MIDI 出力ポートができます: |
||
48行目: | 47行目: | ||
$ aplaymidi -p128:0 example.midi |
$ aplaymidi -p128:0 example.midi |
||
+ | |||
+ | === SDL_Mixer === |
||
+ | |||
+ | SDL_Mixer を使用するプログラムで fluidsynth を使用するには、サウンドフォントを次のように指定する必要があります: |
||
+ | |||
+ | $ SDL_SOUNDFONTS=/usr/share/soundfonts/FluidR3_GM.sf2 ./program |
||
== MIDI を OGG に変換する方法 == |
== MIDI を OGG に変換する方法 == |
||
71行目: | 76行目: | ||
export -f midi2ogg |
export -f midi2ogg |
||
find . -regex '.*[.][mM][iI][dD][iI]?$' -print0 | xargs -0 -n 1 -P $maxjobs bash -c 'midi2ogg "$@"' -- |
find . -regex '.*[.][mM][iI][dD][iI]?$' -print0 | xargs -0 -n 1 -P $maxjobs bash -c 'midi2ogg "$@"' -- |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | |||
+ | === PulseAudio との競合 === |
||
+ | |||
+ | ''fluidsynth'' アプリケーションがドライバとして alsa を使用するように設定されていると、サウンドカードに直接アクセスしてしまい、pulseaudio や pulseaudio を使用するアプリケーションが正常に動作しなくなります。設定ファイル {{ic|/etc/conf.d/fluidsynth}} を修正し、ドライバを PulseAudio に変更してから、fluidsynth と PulseAudio を再起動してください: |
||
+ | |||
+ | {{hc|/etc/conf.d/fluidsynth| |
||
+ | output=OTHER_OPTS='-a pulseaudio -m alsa_seq -r 48000' |
||
+ | }} |
2020年7月13日 (月) 22:03時点における最新版
FluidSynth は SoundFont 2 の仕様に基づいたリアルタイムソフトウェアシンセサイザーです。gst-plugins-bad の依存パッケージになっているため、gnome グループをインストールしたときに一緒にインストールされます。
目次
インストール
まずは公式リポジトリから fluidsynth をインストールしてください。
音を出すためには、サウンドフォント をインストールする必要があります。サウンドフォントのリストは次の通りです:
使い方
FluidSynth を使う方法は2つあります。MIDI プレイヤーとして使うか、ALSA に MIDI サポートを追加するデーモンとして使うかです。
スタンドアロンモード
簡単に fluidsynth を使って MIDI ファイルを再生することができます:
$ fluidsynth -a alsa -m alsa_seq -l -i /usr/share/soundfonts/FluidR3_GM2-2.sf2 example.midi
ここでは公式リポジトリから soundfont-fluid をインストールしていると仮定しています。
fluidsynth には他にもたくさんのオプションが存在しています。man ページを見たり -h を使ってヘルプを表示してください。
-a オプションを指定することで alsa の代わりに pulseaudio を使うこともできます。
ALSA デーモンモード
fluidsynth を ALSA デーモンとして動作させたい場合、/etc/conf.d/fluidsynth
を編集して、使いたいサウンドフォントを追加してください。例えば fluidr3 の場合:
SOUND_FONT=/usr/share/soundfonts/FluidR3_GM.sf2 OTHER_OPTS='-a alsa -m alsa_seq -r 48000'
その後、fluidsynth サービスを起動させてセッションを実行できます:
systemctl --user start fluidsynth
以下の設定で (システムのハードウェア MIDI ポートに加えて) ソフトウェア MIDI 出力ポートができます:
$ aconnect -o
client 128: 'FLUID Synth (5117)' [type=user] 0 'Synth input port (5117:0)'
aplaymidi などでこのポートを使うことができます:
$ aplaymidi -p128:0 example.midi
SDL_Mixer
SDL_Mixer を使用するプログラムで fluidsynth を使用するには、サウンドフォントを次のように指定する必要があります:
$ SDL_SOUNDFONTS=/usr/share/soundfonts/FluidR3_GM.sf2 ./program
MIDI を OGG に変換する方法
midi を ogg に変換するシンプルなコマンドライン:
$ fluidsynth -nli -r 48000 -o synth.cpu-cores=2 -T oga -F example.ogg /usr/share/soundfonts/fluidr3/FluidR3GM.SF2 example.MID
以下は同時に複数の midi ファイルを ogg に変換する小さなスクリプトです:
#!/bin/bash maxjobs=$(grep processor /proc/cpuinfo | wc -l) midi2ogg() { name=$(echo $@ | sed -r s/[.][mM][iI][dD][iI]?$//g | sed s/^[.][/]//g) for arg; do fluidsynth -nli -r 48000 -o synth.cpu-cores=$maxjobs -F "/dev/shm/$name.raw" /usr/share/soundfonts/fluidr3/FluidR3GM.SF2 "$@" oggenc -r -B 16 -C 2 -R 48000 "/dev/shm/$name.raw" -o "$name.ogg" rm "/dev/shm/$name.raw" ## Uncomment for replaygain tagging #vorbisgain -f "$name.ogg" done } export -f midi2ogg find . -regex '.*[.][mM][iI][dD][iI]?$' -print0 | xargs -0 -n 1 -P $maxjobs bash -c 'midi2ogg "$@"' --
トラブルシューティング
PulseAudio との競合
fluidsynth アプリケーションがドライバとして alsa を使用するように設定されていると、サウンドカードに直接アクセスしてしまい、pulseaudio や pulseaudio を使用するアプリケーションが正常に動作しなくなります。設定ファイル /etc/conf.d/fluidsynth
を修正し、ドライバを PulseAudio に変更してから、fluidsynth と PulseAudio を再起動してください:
/etc/conf.d/fluidsynth
OTHER_OPTS='-a pulseaudio -m alsa_seq -r 48000'