「FluidSynth」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎ALSA デーモンモード: ユーザーモードなので#を削除(英語版より))
(→‎ALSA デーモンモード: 節「2.3 SDL_Mixer」を訳出)
 
(同じ利用者による、間の4版が非表示)
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}} グループをインストールしたときに一緒にインストールされます。
   
== FluidSynth のインストール ==
+
== インストール ==
   
 
まずは[[公式リポジトリ]]から {{Pkg|fluidsynth}} を[[pacman|インストール]]してください。
 
まずは[[公式リポジトリ]]から {{Pkg|fluidsynth}} を[[pacman|インストール]]してください。
   
'''ただし、これだけでは FluidSynth はまだ音を出せません'''。FluidSynth には音源サンプルが含まれていないためです。音を出すには、音源パッチまたはサウンドフォントをインストールして、fluidsynth がそれを見つけられるように設定する必要があります。[[Timidity#SoundFont|SoundFont サンプル]]をインストールすることがきま
+
音を出ためには、[[Wikipedia:SoundFont|サウンドフォント]] をインストールする必要があります。サドフォトのリストは次の通りです:
   
  +
* {{Pkg|freepats-general-midi}}
== FluidSynth の使い方 ==
 
  +
* {{Pkg|soundfont-fluid}}
  +
  +
== 使い方 ==
   
 
FluidSynth を使う方法は2つあります。MIDI プレイヤーとして使うか、ALSA に MIDI サポートを追加するデーモンとして使うかです。
 
FluidSynth を使う方法は2つあります。MIDI プレイヤーとして使うか、ALSA に MIDI サポートを追加するデーモンとして使うかです。
33行目: 36行目:
   
 
systemctl --user start 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'