FluidSynth - Arch Linux 中文维基

跳至內容

# FluidSynth

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 FluidSynth，最近一次同步於 2024-8-11，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

本文或本節內容已經過時。

原因： 英文頁面的更改不少。 (在Talk:FluidSynth討論)

FluidSynth 是一款基於 SoundFont 2 規範的實時軟體合成器。gst-plugins-bad包 可選擇使用它。

OpenTTD 與 MPD 默認依賴於 FluidSynth。

## 安裝

安裝 fluidsynth包 軟體包。

還需要一個 SoundFont。參見 MIDI#SoundFont 列表以獲取 SoundFonts 列表。

## 用法

使用 FluidSynth 有兩種方式。要麼作為 MIDI 播放器，要麼作為向 ALSA 添加 MIDI 支持的守護進程。

### 獨立模式

您可以簡單地使用 fluidsynth 播放 MIDI 文件：

    $ fluidsynth -a alsa -m alsa_seq -l -i /usr/share/soundfonts/FluidR3_GM.sf2 example.mid

假設你安裝了 soundfont-fluid包。

FluidSynth 還有許多其他選項，請參見 fluidsynth(1) 或使用 `-h` 獲取幫助。

用戶可能希望使用 `pipewire` 或 `pulseaudio` 代替 `alsa` 作為 -a 選項的參數。

提示：如果為默認 SoundFont 創建了符號連結（例如

    ln -s FluidR3_GM.sf2 /usr/share/soundfonts/default.sf2

），則無需每次都指定 SoundFont。

### ALSA 守護進程模式

如果希望 fluidsynth 作為 ALSA 音序器客戶端運行，請編輯 `/etc/conf.d/fluidsynth` 並添加 SoundFont 和其他修改。例如，Fluid：

    SOUND_FONT=/usr/share/soundfonts/FluidR3_GM.sf2
    OTHER_OPTS='-a alsa -m alsa_seq -r 48000'

然後，您就可以啟動/啟用 `fluidsynth.service`。

注意：如果使用 pulseaudio 驅動程序，則不能使用 root 啟動 fluidsynth 服務。Pulseaudio 不允許 root 連接，因為 Pulseaudio 伺服器通常由用戶（而非 root）啟動。因此，該服務是作為用戶單元提供的。

下面將提供一個軟體 MIDI 輸出埠（除了系統上的硬體 MIDI 埠（如果有的話））：

    $ aconnect -o

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

aplaymidi 就是一個用法例子：

    $ aplaymidi -p128:0 example.mid

注意：要在實時設置中實現低延遲，必須設置 FluidSynth wiki 中描述的 RATE/NUM/SIZE 參數。這些參數的常用值和其他提示也在專業音頻#JACK 參數中列出。

### SDL_Mixer

要在使用 SDL_Mixer 的程序中使用 fluidsynth，需要指定 soundfont：

     $ SDL_SOUNDFONTS=/usr/share/soundfonts/FluidR3_GM.sf2 ./program

## 提示與技巧

### 將 MIDI 轉換為 MP3/OGG

需要 soundfont-fluid包 或其他任意 SoundFont。

`/usr/share/soundfonts` is the default location of FluidR3_GM

用簡單的命令行將 midi 轉為 mp3：

    $ fluidsynth -l -T raw -F - /usr/share/soundfonts/FluidR3_GM.sf2 example.mid | twolame -b 256 -r - example.mp3

需要 twolame包。

用簡單的命令行將 midi 轉為 ogg：

    $ fluidsynth -nli -r 48000 -o synth.cpu-cores=2 -T oga -F example.ogg /usr/share/soundfonts/FluidR3_GM.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_GM.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'

分類：​

- 音樂
- 使用「模板:過時」標記的頁面或章節

FluidSynth
新增話題