Tutorial | Linux 音频系统搭建

Table of Contents

Linux 下的音频系统搭建要比 Windows 和 MacOS 复杂很多,因为上层应用不会来帮用户解决底层系统软件的问题,因此用户就需要处理更多的细节。不过虽说刚开始会感到复杂,一旦理解就感觉很直观了。

可惜的是,国内几乎没有关于 Linux 音频方面的介绍。我当初搭建 Linux 的音频制作环境也是在 Google 和 Youtube 上摸索了很久(当时用的发行版是 Ubuntu,不像 Arch Linux 有详尽的 Wiki)。最近找到的一个网站啦哆咪可能是国内仅存的关于 Linux 音频/音乐制作的网站。里面有很多实用的内容,并且作者还搭建了一个 Arch Linux 的音乐软件仓库,是相当用心了。(虽然我个人更愿意使用 AUR 。)

这篇博客的主要目的是手把手的 Linux 音频配置教学,不涉及任何原理细节(因为自己现在也是一知半解)。希望自己有能完全搞明白的一天。

在阅读下面的内容之前,推荐先了解一下 Linux 的音频组件是怎么连接的。可以参考啦哆咪的这篇文章

1. 软件仓库

对于 Ubuntu 用户来说,使用 KXStudio 仓库是主流的选择。查看添加仓库的方法可以进入这个链接。该仓库提供了非常全面的与音频制作相关的软件,涵盖了相当多 Ubuntu 官方仓库没有的插件。

对于 Arch Linux 用户来说,因为有 AUR ,所以自然不是问题。

最复杂的就是下面关于 JACK 的配置了。

2. JACK

JACK 是 JACK Audio Connection Kit 的递归缩写,是一个专业的音频服务守护进程,能在使用其 API 的应用之间提供实时、低延迟的音频和 MIDI 数据连接。

这一段来自 Arch Wiki ,是我自己翻译的。

如果不想看英文的 Arch Wiki ,还可以看啦哆咪上对 JACK 的介绍,这篇文章还介绍了 JACK 的安装方法,照做即可。

我个人喜欢用 Cadence (软件包: cadence )这个 jack2 前端 GUI 软件。因此安装的是 jack2

在安装完 JACK 后,还需要进行一定的配置。对于 Arch 用户直接参考 JACK 的 Arch Wiki 即可,这里只是简单提一下。

首先需要将用户加入 audio 用户组。将用户加入已有用户组的命令参考如下:

$ sudo usermod -a -G audio <your user name>

其次,如果是 Arch Linux 用户,推荐安装 realtime-privileges 包,安装完成后将用户加入 realtime 用户组。注销后重新登录生效。

另外,为了能在使用 JACK 时同时能使用 PulseAudio ,需要使用一个 bridge 将 PulseAudio 的音频通过 JACK 。如果不这么做,在开启 JACK 服务时是无法使用桌面应用(比如浏览器)播放音频的。对于 Ubuntu 用户,需要安装 pulseaudio-module-jack ,对于 Arch 用户需要安装 pulseaudio-jack

对 Arch Linux 用户而言,还需要安装 alsa-utils ,否则 JACK 无法使用由 ALSA 驱动的输入输出设备。

接下来到了 JACK 的配置环节。这里以 Cadence 为例。打开 Cadence 后,首先在右下方的 JACK Bridges 的 ALSA Audio 标签中选择 「ALSA -> PulseAudio -> JACK (Plugin)」。之后点击 「Configure」在 Driver 标签下的 ALSA 标签选择,在这里可以选择输入和输出对应的硬件设备。还可以调整采样率和缓冲区大小。(采样率一般用 44100 ,缓冲区大小设置为 256 是个不错的选择。)

设置结束后,回到 Cadence 的主菜单,点击「Start」。不出意外的话应该不会报错,如果报错了,可以去「Tools」->「Logs」查看日志,上网搜索解决方案(一定要使用英文搜索引擎)。顺便一提,对 Arch 用户来说如果需要使用 Cadence 提供的其他工具,需要安装 a2jmidid ,否则那些工具无法打开。

如果 JACK 正常启动了,那么基本就要成功了。接下来需要做的是安装 Pavucontrol (软件包: pavucontrol ) 这个 PulseAudio 的前端控制软件。可以先使用浏览器或是本地的影音软件打开一个音频或视频,在「回放」这个标签栏的最下方选择显示「All Streams」,确认显示的对应的音频流使用的是「JACK Sink」(如果不是就调整过来)。

现在应该能正常听到声音了。到此 JACK 的配置工作就基本完成。

注意接下来提到的软件都需要在 JACK 运行时使用。

3. 音序器

Rosegarden (软件包: rosegarden ) 是 Linux 下最好用的原生音序器。

安装 Rosegarden 后用其打开 MIDI 文件,会发现没有声音。因为 Rosegarden 本身并不包含 soundfont ,也不自带合成器。

合成器一般使用 Fluidsynth (软件包: fluidsynth ) ,推荐安装它的一个前端工具叫做 Qsynth (软件包: qsynth ),安装 Qsynth 会自动将 Fluidsynth 作为依赖安装。Arch Linux 还将 Fluidsynth 的 soundfont 独立成一个包 soundfont-fluid ,需要额外安装,而 Ubuntu 不需要。

安装好后,打开 Qsynth ,进入「Setup」->「Soundfonts」,添加一个新的 soundfont 。在这里选择安装好的 Fluidsynth Soundfont,路径是: /usr/share/soundfonts/FluidR3_GM.sf2

这时候用 Rosegarden 打开 MIDI 文件,应该能听到声音了。

也就是说,在使用 Rosegarden 前,需要先使用 Qsynth 开启 Fluidsynth 。

4. DAW

Ardour (软件包: ardour ) 是 Linux 下最好用的 DAW 。

虽然 Ardour 是开源软件,但推荐的做法是去 Ardour 的官网上付费下载(可以选择任意价格捐赠),毕竟开发这种软件相当不容易。如果想使用发行版仓库的版本,也可以考虑捐一下款。

这里再给出一个 Ardour 的教程以供参考:BEGINNER'S TUTORIAL - Ardour 4 。有能力的可以上 Youtube 找到更多的教学视频。更详细的信息可以参考官方手册

如果想做电子音乐,LMMS(软件包: lmms )是一个不错的的 FL Studio 替代品,当然功能没有 FL Studio 那么强大。

5. 插件

Linux 上支持的原声插件是 LADSPA (Linux Audio Developer's Simple Plugin API)和 LV2 (LADSPA Version 2)插件 。LV2 是使用最多的插件。基本上常用的插件都可以在 KXStudio 仓库或者 AUR 中找到。

我使用过的插件不多,只推荐一些常用的(Linux 有非常丰富的插件等着大家去发现):

  • 合成器
    • ZynAddSubFX
    • Zyn-Fusion(推荐,更好的 ZynAddSubFX 前端界面)
    • Yoshimi(适合做弦乐和风琴)
  • 采样器
    • DrMr(用于加载hydrogen音源)
    • Fabla
    • Drumkv1
    • Drumgizmo
    • avldrums
  • 效果
    • Calf 系列插件(强烈推荐)
    • Guitarix 系列插件

6. MIDI 键盘

为了在 Ardour 中使用 MIDI 键盘,要在终端开启 JACK MIDI <-> ALSA sequencer MIDI bridge。

需要在终端运行 a2jmidid (需要安装同名软件包):

$ a2jmidid -e

具体可以参考Ardour官方手册

7. 软件效果器

这里重点介绍的是 Guitarix ,使用它能让我们带上耳机练琴。设置步骤如下:

首先在 Cadence 中设置输入设备为自己的 USB 声卡,再运行。

第二步,打开 Guitarix ,挑选自己需要的效果,组成效果链路。

第三步,打开 Cadence 的工具 Catia 。可以看到系统中所有软件音频接口的连接,将系统音频输入连接到 Guitarix 的输入,将 Guitarix 的输出(一般是双声道)分辨连接到两个系统 playback 。

设置完成后之后就可以听到自己乐器的声音了。

8. 其他

8.1. 打谱

如果是五线谱制作,最简单的就是使用 MuseScore ,运行它无需开启 JACK 。如果想要制作更加复杂或者排版精良的乐谱,可以使用 GNU 的软件 LilyPond ,它使用一套标记语言,最后渲染成乐谱(类似于 LaTeX)。

Linux 下也有 Guitar Pro 的替代品——TuxGuitar。Ubuntu 用户可以去官方网站下载 deb 包,Arch 用户可以在 AUR 找到。由于 TuxGuitar 是用 Java 开发的,需要安装 JRE 才可以运行。因为这个软件很长时间没有用,现在也没有安装,不确定是否需要 JACK 。

8.2. 鼓机

最常用的就是 Hydrogen 了。

8.3. 简单录音

如果只是想简单录音,可以直接使用 Audacity ,这个软件不需要 JACK 也可以运行。

9. 后记

这篇博客只是流水帐式的简单过一遍 Linux 下的音频配置方法。一些更深入的内容(比如利用 Carla 和 Wine 运行 VST 插件)没有提到。不过我相信上面提到的内容已经足够日常的练习和 Demo 制作了。

使用 Linux 进行音频制作本身就是一个小众的领域,工业级的优质软件相比 Windows 和 MacOS 还是少之又少。但是了解并使用 Linux 制作音乐确实是一件很有意思的事情,尤其是几乎所有的软件都是自由软件,意味着能够免费获取和自由修改源代码,不需要花大价钱购买商业软件,或者费力气去破解(从来都不推荐这么做),用户也可以借助软件仓库简单快速获得大部分需要的插件。虽然 Linux 的插件选择有限,但对于非工业级的音乐制作来说,有限的选项可能反而是件好事。对于半专业的音乐制作,Linux 也足够满足人们的需求。

此外,善于使用英文搜索也是十分重要的。Linux 自身的很多信息都只能通过英文搜索获得,更不必说关于 Linux 的音乐制作信息了,在这方面国内算得上是一片空白。使用 Bing 是个不错的选择,有能力的话当然是用 Google 了。

最后推荐一个论坛叫做 LinuxMusicians ,里面都是关于使用 Linux 进行音乐制作的讨论,你可以在里面得到很多有益的帮助。我曾经为了提取一个 VST 插件内置的 MIDI 文件,在这个论坛上找到了一个网友写的 Ruby 脚本(可能这里的 musicians 都是 hackers 吧^^)。