# FluidSynth (日本語)

FluidSynth は SoundFont 2 の仕様に基づいたリアルタイムソフトウェアシンセサイザーです。

## FluidSynth のインストール

まずは公式リポジトリから fluidsynth をインストールしてください。

ただし、これだけでは FluidSynth はまだ音を出せません。FluidSynth には音源サンプルが含まれていないためです。音を出すには、音源パッチまたはサウンドフォントをインストールして、fluidsynth がそれを見つけられるように設定する必要があります。SoundFont サンプルをインストールすることができます。

## FluidSynth の使い方

FluidSynth を使う方法は2つあります。MIDI プレイヤーとして使うか、ALSA に MIDI サポートを追加するデーモンとして使うかです。

### スタンドアロンモード

簡単に fluidsynth を使って MIDI ファイルを再生することができます:

    $ fluidsynth -a alsa -m alsa_seq -l -i /usr/share/soundfonts/fluidr3/FluidR3GM.SF2 example.midi

ここでは fluidr3 をインストールしていると仮定しています。

fluidsynth には他にもたくさんのオプションが存在しています。man ページを見たり -h を使ってヘルプを表示してください。

-a オプションを指定することで alsa の代わりに pulseaudio を使うこともできます。

### ALSA デーモンモード

fluidsynth を ALSA デーモンとして動作させたい場合、`/usr/lib/systemd/system/fluidsynth.service` を編集して、使いたいサウンドフォントの入った `ExecStart` 行を追加してください。fluidr3 の場合:

    ExecStart=/usr/bin/fluidsynth -is -a alsa -m alsa_seq -r 48000 "/usr/share/soundfonts/fluidr3/FluidR3GM.SF2"

その後、fluidsynth サービスを起動させたり、有効にすることができます。

これで (システムのハードウェア MIDI ポートに加えて) ソフトウェア MIDI 出力ポートができます:

    $ aconnect -o

    client 128: 'FLUID Synth (5117)' [type=user]
       0 'Synth input port (5117:0)'

aplaymidi などでこのポートを使うことができます:

    $ aplaymidi -p128:0 example.midi

## 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 "$@"' --

Category:

- Audio/Video (日本語)