应用介绍
手上一个 MIDI 文件,Windows 自带的 GS 音源听起来像上世纪的手机铃声。想换个像样的音色,商业音源动辄几百兆还要授权。FluidSynth 走的是 SoundFont 这条路:给它一个 sf2 音色库和一个 MIDI 文件,直接渲染成音频,换音色就是换一个 sf2 文件,而好的免费 SoundFont 满网都是。
它没有图形界面,就是一个命令行程序加一个 C 库——这恰恰是它被到处集成的原因:LMMS、MuseScore、Denemo、jOrgan 这些软件的音源引擎都是它。实时演奏时接 MIDI 键盘走 dsound 或 wasapi 输出,离线渲染时 `-a file` 直接写成 wav,同一套代码两种用法。多线程的采样处理让它在低延迟下也不容易爆音。
SoundFont 音色渲染:加载 sf2 / sf3 音色库,按 MIDI 事件取样合成;音色库换一个,整首曲子的音色就全换了,不用改 MIDI。
实时与离线两种模式:`-a dsound|wasapi|waveout` 接声卡做实时演奏,`-a file -F out.wav` 把 MIDI 直接渲染成音频文件,快于实时。
多线程采样处理:合成和音频渲染分开在多个线程上跑,压低延迟的同时留住 CPU 余量,现场演奏不容易断。
内置混响与合唱:`--chorus`、混响参数可以在命令行直接开关调节,不用再挂一层效果器。
bank offset 管理多音色库:同时加载多个 SoundFont 时用 `-b` 给每个库指定 bank 偏移,避免音色编号打架。
当库嵌进自己的程序:核心是一个 C 库,LGPL 授权,其他软件(LMMS、MuseScore、Denemo 等)就是这么把它当音源引擎用的。
MIDI 事件可以 dump:`-d` 把进出的 MIDI 事件打到标准输出,调试键盘映射或者排查某个音为什么不响时很直接。
它没有图形界面,就是一个命令行程序加一个 C 库——这恰恰是它被到处集成的原因:LMMS、MuseScore、Denemo、jOrgan 这些软件的音源引擎都是它。实时演奏时接 MIDI 键盘走 dsound 或 wasapi 输出,离线渲染时 `-a file` 直接写成 wav,同一套代码两种用法。多线程的采样处理让它在低延迟下也不容易爆音。
软件功能
SoundFont 音色渲染:加载 sf2 / sf3 音色库,按 MIDI 事件取样合成;音色库换一个,整首曲子的音色就全换了,不用改 MIDI。
实时与离线两种模式:`-a dsound|wasapi|waveout` 接声卡做实时演奏,`-a file -F out.wav` 把 MIDI 直接渲染成音频文件,快于实时。
多线程采样处理:合成和音频渲染分开在多个线程上跑,压低延迟的同时留住 CPU 余量,现场演奏不容易断。
内置混响与合唱:`--chorus`、混响参数可以在命令行直接开关调节,不用再挂一层效果器。
bank offset 管理多音色库:同时加载多个 SoundFont 时用 `-b` 给每个库指定 bank 偏移,避免音色编号打架。
当库嵌进自己的程序:核心是一个 C 库,LGPL 授权,其他软件(LMMS、MuseScore、Denemo 等)就是这么把它当音源引擎用的。
MIDI 事件可以 dump:`-d` 把进出的 MIDI 事件打到标准输出,调试键盘映射或者排查某个音为什么不响时很直接。

