声音前沿:使用 QSynth 和 QJackCtl
在上个月的专栏中,我介绍了 seq24,一个极简但功能强大的 MIDI 音序器。该专栏的最后一张屏幕截图展示了 seq24 在我的 Dave 工作室中的工作情况。在该屏幕截图中,您可以看到我最喜欢的两个 Linux 音频程序,Rui Nuno Capela 的 QJackCtl 和 QSynth。在本月的专栏中,我们将更仔细地研究这些应用程序,以了解它们的功能以及如何在您自己的 Linux MIDI 音乐工作站中使用它们。
QSynth 和 QJackCtl 是其他软件的 GUI 前端。QSynth 为基于 fluidsynth soundfont 的合成器提供了友好的用户界面。QJackCtl 为 JACK 音频服务器/传输控制系统提供了类似的界面。这两个应用程序都使用了最新版本的 Qt 图形工具包以及其他必需组件的最新版本。有关安装和配置 QSynth 和 QJackCtl 的完整说明,请参阅其各自的网站(请参阅“资源”),并且大多数必要的软件都包含在主流 Linux 发行版中。JACK 和 fluidsynth 通常在主流发行版中找不到,但 QSynth/QJackCtl 网站包含这些组件和所有其他必需组件的 URL。
当我提到 QSynth 或 QJackCtl 的功能时,在许多情况下,该功能实际上属于底层应用程序。GUI 组织了 fluidsynth 和 JACK 的可用功能,以便更轻松地访问和控制,因此为了方便起见,我写得好像 QSynth 和 QJackCtl 本身就是完整的。
JACK 是一种音频服务器和传输控制系统,专为低延迟和强大的性能而设计,可满足专业级别的使用。给定一个经过适当调整的基础系统——低延迟内核、优化的磁盘吞吐量等等——客户端应用程序可以自由路由和连接,共享音频数据而不会出现丢帧,并且可能与同步传输控制一起工作。该系统已被 Linux 音频开发社区广泛采用,并已成为任何现代基于 Linux 的音乐和声音制作系统不可或缺的一部分。
可以从命令行启动和控制 JACK。但是,在 X 中工作时,使用 GUI 配置 JACK 系统的参数会更好。QJackCtl 提供了该 GUI。
如果您正在运行音频优化的 Linux 系统,例如 AGNULA/Demudi 或 Planet CCRMA,则 QJackCtl 要么默认激活,要么作为菜单项可用。如果您从命令行启动 QJackCtl,则可以添加 --help 选项以查看一些可能的启动选项。
图 1 显示了 QJackCtl 的主面板。其按钮控制 JACK 系统的活动状态(启动/停止/退出)、消息传递和状态报告、设备连接管理、传输控制(播放/暂停)、设置配置和程序信息弹出窗口。主面板还包括状态按钮报告的信息的可视化显示。

图 1. QJackCtl
单击“设置”按钮以打开图 2 中所示的系统配置对话框。本文不是关于 JACK 的,因此我将跳过对 JACK 参数的详细解释。QJackCtl 尝试使用合理的默认值配置自身,但是当您更多地了解其功能时,您将能够调整 JACK 以获得更好的性能。(有关更多信息,请参阅 JACK 参考资料)。
“设置”面板包含用于启动/关闭脚本、字体显示设置和一些其他选项的选项卡。“显示”选项卡包含两个特别值得注意的项目,一个用于将连接绘制为贝塞尔曲线的选项,以及一个用于重命名客户端及其端口的选项。它们可能看起来并不那么引人注目,但它们是周到且有用的细节。
假设您有一个正常工作的系统,您现在可以单击“启动”按钮开始使用 JACK。图 3 展示了 QJackCtl 与我的 M-Audio Delta 66 一起工作的情况。JACK 通常一次只处理一个声卡,因此我为我的 SBLive 和 Delta 66 声卡分别配置了服务器。图 3 还显示了由状态面板及其可视化显示表示的系统状态。
现在我们有了一个正在运行的 JACK 系统,我们可以将其与 QSynth 一起使用。但是,在建立连接之前,让我们看看 QSynth。
fluidsynth 项目为 Linux 音乐家提供了一个免费且开源的基于 soundfont 的合成器。Soundfont 是一种结合了音频数据和性能控制数据的声音文件格式。Soundfont 不仅仅是回放,它们需要一个引擎(合成器)来将性能控制应用于原始音频数据。fluidsynth 就是这样一个引擎。
与 JACK 类似,fluidsynth 可以从命令行运行,但其在提示符下的配置可能有点复杂(请参阅“man fluidsynth”)。QSynth 是解决该问题的 GUI 解决方案。
图 4 显示了 QSynth 的默认外观。主面板排列清晰且易于理解。与 QJackCtl 一样,QSynth 使用有用的工具提示来阐明每个界面组件的功能。
同样,我们从“设置”面板开始我们的小型导览。此处的选项包括用于音频和 MIDI 驱动程序配置、soundfont 音色库选择以及 QSynth 默认设置和当前设置摘要的选项卡。QSynth 支持 ALSA 和 OSS 的音频和 MIDI 驱动程序、MidiShare 的仅 MIDI 驱动程序以及 JACK 的仅音频驱动程序。在图 5 和图 6 中,QSynth 分别配置为 ALSA 音序器客户端和 JACK 音频客户端。
单击“Soundfonts”选项卡以指定要分配给 QSynth 引擎的 soundfont 音色库。如图 7 所示,您可以列出多个音色库,但只有最后一个列出的字体处于活动状态。
关闭“设置”面板,然后单击“通道”按钮以打开图 8 中所示的通道/乐器分配面板。最大通道数在“设置/MIDI”选项卡中确定,默认值为 16 个通道,最大允许值为 256 个通道,所有通道均以 16 为增量。右键单击“通道”对话框中的条目,然后从图 9 中看到的 soundfont 乐器列表中选择一个乐器。根据需要为每个通道重复此操作。

图 8. 通道对话框

图 9. 乐器选择器
QSynth 是一种多音色合成器,这意味着您可以为每个通道分配不同的乐器,以用于独立演奏者的混合合奏。或者,您可以为多个通道分配单个乐器,以创建丰富的层次感声音纹理。或者,您可以随意混合所有这些方法。要同时使用不同的 soundfont,请右键单击主面板左下角的引擎选择器选项卡(在图 4 中标记为 qsynth1),以向乐趣中添加另一个 QSynth 实例。每个引擎都可以访问不同的 soundfont,并具有独立的 master gain 和效果设置。使用正确的字体,您可能会发现 QSynth 是您永远需要的唯一合成器。
顺便说一句,如果您想扩展您的 soundfont 集合,请务必查看 Hammersound 的列表(请参阅“资源”),其中链接到一些优秀的免费字体。您可能还想仔细阅读 Linux Audio Users 邮件列表存档,以查找免费字体的链接。一些列表成员设计了真正免费重新分发的字体,但社区仍然需要一个真正免费和开源的通用 MIDI soundfont。
此时,返回 QJackCtl 并启动 JACK 服务器(如果尚未运行)。单击“连接”按钮并选择“音频”选项卡以建立您的 JACK 音频连接。图 11 说明了具有独立输出端口的多个 QSynth 引擎连接到 ALSA PCM 输入端口的一种排列方式;这是一个很好的例子,说明 QJackCtl 如何简化复杂的路由安排。
现在选择“MIDI”选项卡以设置您的 MIDI 连接。在这里,我们找到了与音频选项卡相同的灵活性,如图 12 所示。在该屏幕截图中,来自我的物理 MIDI 端口(SBLive 与连接到 Casio CZ101 MIDI 键盘的适配器)的输入被路由到第一个 QSynth 引擎。第一个 ALSA 虚拟 MIDI 端口连接到第二个 QSynth 引擎和 SBLive 上的 EMU10k1 合成器。最后,最后一个虚拟 MIDI 输出端口连接到第三个 QSynth 引擎和 EMU10k1 合成器。同样,使用 QJackCtl 可以简化复杂的配置。
单击“Patchbay”按钮以查看、编辑和保存/加载您的音频和 MIDI 连接作为用户定义的预设。图 13 说明了这个简洁的功能,显示了为图 11 和图 12 中的连接定义的 Patchbay 预设。
我们已经建立了 QSynth 的音频和 MIDI 连接,所以现在是时候使用它们了。图 14 说明了 seq24 使用具有多个引擎的 QSynth,每个引擎由 seq24 中的单独序列驱动。请记住,seq24 在内部建立其 MIDI 连接,无需使用 QJackCtl 中的“MIDI 连接”选项卡。QSynth 自动连接到 ALSA PCM 输入端口,但如果您想将 QSynth 的输出路由到其他位置,则需要重新连接。图 14 还演示了这样的连接,其中一个引擎的输出路由到 JACK Rack 中的 LADSPA 效果处理器,其输出被发送到 ALSA PCM 端口。
顺便说一句,图 14 中的屏幕截图仅用于演示。QSynth 自己的效果处理器(混响和合唱)非常实用,但它们不会等同于专用软件或硬件处理器的性能。
QSynth 和 QJackCtl 是我的 Linux 声音工作室的基本组件,我当然无法想象在没有它们的情况下在 X 中工作。是的,您可以使用它们的宿主应用程序在命令行中完成所有操作。但是,这些有用的 GUI 使工作变得更加容易,这意味着我可以更轻松地配置设备来制作音乐。
这些应用程序易于学习和使用,并且它们简单直接地服务于其卑微的目的,因此 QSynth 或 QJackCtl 几乎没有什么可批评的。我想在 QJackCtl 中看到 MIDI 活动指示器,可能在 MIDI 连接选项卡中,但这并不是迫切的需求。
那么这个小工作室听起来怎么样?查看演示,让我知道您的想法。就我个人而言,Linux 音乐家现在可用的功能给我留下了深刻的印象。我希望本文向您揭示了其中的一些功能。
作者希望感谢 Peter Hanappe 和 fluidsynth 的所有其他开发者,感谢他们开发了这款出色的软件。还要非常感谢 Paul Davis 和所有 JACK 开发者,感谢他们开发了开源音频软件中最出色的成果之一。当然,还要非常感谢 Rui Nuno Capela 在 QSynth 和 QJackCtl 方面的工作。