不仅仅是程序员专用:把 Arch Linux 打造成音乐工作站的几条经验
作为程序员+音乐人二合一,我的系统环境横跨Windows和Arch Linux。原本Arch Linux只用来做开发,但这么强大的系统,我总觉得它还有无限的可能性还没有发掘出来,比如,做音乐。
相较于Windows,作为开发者首选的系统之一,Arch Linux有以下难以比拟的优势:
- 运行速度快,内存占用量较小,轻便自在;
- Pacman软件库,应有尽有,安装开发工具轻而易举;
- 安全可靠,不怕病毒;
- 对老电脑、老设备分外友好,十年前的ThinkPad X200照样做主力。
不过,不管是哪个发行版,Linux总有一点比不上Windows和MacOS,就是音乐制作——很少有音频软件厂商能够提供原生支持Linux的音乐制作工具。尤其是Native Instruments这样的业界巨头,只专注于Windows和MacOS,不会为Linux提供任何支持。实在是可叹。
幸运的是,开源的力量是无穷的,既然Linux能普及,总有大佬在填补这方面的空白。各种适用于Linux的音乐制作工具链应运而生,从底层驱动级别的JACK,到对标业界标准插件规范(VST、RTAX、AAX、DX、AU)的LADSPA,甚至完整的DAW——LMMS、Ardour、REAPER for Linux,应有尽有。从此,Linux不再是没有音乐人造访的荒漠。
Linux作为音乐制作环境的必备要求
要想把Linux打造成音乐工作站,需要进行以下方面的配置:
- 配置好低延迟的音频接口——JACK。
- 安装必要的音乐制作软件。
- 安装兼容环境——Wine、LinVST,用来使用Windows下的VST插件。
第一:安装与配置JACK
要把你的Arch Linux打造成音乐工作站,首先要做的就是配置音频服务——JACK。JACK是一套高性能、低延迟的音频服务程序,它基于Linux底层的ALSA,可为音频应用程序提供低延迟的音频回放、录制支持,相当于Windows下的ASIO,以及MacOS下的CoreAudio。
一般的发行版会提供两个版本的JACK:
- JACK1:包名为jack,用C语言编写的最初版本:
- 只有音频服务功能
- 对系统要求苛刻,需要配置用户权限、realtime权限才能使用
- 独占控制声卡,其他程序无法再播放音频
- JACK2:包名为jack2,用C++重写的版本:
- 支持DBus协议控制
- 支持将PulseAudio、ALSA重定向到JACK,从而兼顾其他使用这两种音频服务的程序
- 无需配置权限即可使用
先给出结论——选择JACK2,不要选择JACK1!
虽然JACK1是最初版本,包括Manjaro、Artix Community在内的多款发行版都有预装,但它并不是开箱即用的。想要使用JACK1,首先要配置realtime权限,然后再把当前用户添加到audio用户组中,重新登录后再通过QJackCtl这类工具来手工启用JACK服务,非常麻烦。
加之,JACK,和PulseAudio是独占访问声卡的,其中PulseAudio是各大Linux发行版和各种应用首选的音频服务,这就意味着一旦开启JACK,其他应用程序就无法出声,甚至会引起一些无法预料的错误。
相较于此,重写的JACK2则解决了上述两大硬伤。首先,JACK2使用了全新的架构,默认情况下无需依赖realtime权限和audio用户组即可运行,和PulseAudio一样都能直接运行于用户空间(区别于root权限下的系统服务)。其次,开发者设计了一套“桥接(Bridging)”机制,能够把ALSA和PulseAudio重定向到JACK里来,从而保证其他使用了PulseAudio的应用程序仍能正常使用,听歌做歌两不误。
显然,首选的JACK版本非JACK2莫属。
首先安装JACK2,以及JACK2的音频控制面板Cadence:
sudo pacman -Ss jack2 cadence
Cadence是一款优雅的JACK2控制面板,功能全面。首先打开它:
然后点击【JACK Status】部分的【Start】,启动JACK服务。若启动成功,则该部分会显示以下内容,表示JACK2启动成功,并给出当前的运行参数。
启动成功后,PulseAudio到JACK的桥接功能也会自动启用。打开PulseAudio桥接后,系统会多出一个音频设备,为“PulseAudio JACK sink”,是把PulseAudio重定向到JACK的设备,选择它即可让原先使用PulseAudio播放音频的程序都通过JACK来输出音频。
若不需要PulseAudio桥接,可以在Cadence下方的【JACK Bridges】的【PulseAudio】选项卡内手动开关这个功能。
提示:
- 可以勾选【Auto-start JACK or LADISH at login】,设置Cadence与JACK2服务的自启动。
- 桥接启用后,原有声卡设备(见图3上方)的音量控制仍然起作用,用于控制输出的主音量。
默认地,Cadence会把输出设备设置为Dummy(空设备),会导致无法出声。因此要手动设置音频设备。
在Cadence主界面里,点击【JACK Status】部分的【Configure】,进入JACK设置,然后点选【Drivers】选项卡。
左边【Drivers】一栏有五种输出设备:ALSA(调用本地声卡)、Dummy(空设备)、Loopback(回环)、Net/NetOne(网络源)。点选ALSA,以使用我们的声卡。其余选项不常用。
此时右边就会显示出可用的设置项。
看到【Device】部分,设置输出设备。注意下面几个设置项,按下表设置好:
设置项 | 说明 | 取值 |
Device/Interface | 选择要给JACK使用的设备,包含输入、输出 | hw:0指向默认的声卡设备 |
Input Device | 单独设置输入、输出设备 | hw:0指向默认设备的默认接口 |
Duplex Mode | 勾选后,可以分别设置输入/输出设备 |
|
Input Channels | 输入、输出通道数 | 默认值为0,会自动指向该设备支持的最大通道数 |
然后看到【Properties】部分,设置以下两个参数:
设置项 | 说明 | 取值 |
Sample Rate | 采样率 | 一般音乐制作用44100或48000即可 |
Buffer Size | 缓冲区大小 | 取值越小,延迟越低,但在集成声卡上可能会导致爆音。 |
其他参数保持默认值即可。
设置完成后确认,先后点击【Stop】和【Start】,重启JACK,即可生效。
第二:安装Linux下的DAW
Linux下的主流DAW软件不多,几大商业DAW大厂(如Steinberg、AVID、Ableton)基本没有适配Linux的计划。但一些优秀的开发团队推出了适用于Linux的自由软件DAW,比如:
- Ardour:偏重于混音和后期的DAW,适合处理乐队、Vocal录音。调音台大厂Harrison的MixBus就是基于Ardour开发的。
- LMMS:完成度较高的全功能DAW,拥有钢琴窗,适合MIDI编曲。它自带大量的效果器,以及一些模拟游戏机的音源,开箱即用。
- Mixxx:开源的DJ工作站,严格来说不是DAW,专为现场Live打造。
以上软件皆可直接从Arch Linux的官方源安装。因篇幅限制,这里不介绍软件的用法,读者可自己体验。
sudo pacman -S ardour
sudo pacman -S lmms
sudo pacman -S mixxx
作者使用的是强悍的商业DAW——REAPER。有别于其他大厂,它提供了官方的Linux版本,能直接使用专为Linux开发的VST插件;且其Windows版本也可以借助兼容层Wine,在Linux下运行。
第三:安装原生效果器插件
除了DAW,一些优秀的开发者也推出了同属自由软件的效果器插件,涵盖LV2、LADSPA与VST等几大格式,满足Linux下音乐人的使用。它们同样可以在Arch Linux下运行。这里先介绍两款插件:
全名Linux Studio Project Plugins,是一套专为Linux打造的效果器插件,旨在填补Linux下缺少优质插件的空白。它囊括了混音所需的一系列效果器,包括压缩器、延迟效果器、图形均衡器、多段均衡器(类似于Fabfilter Pro-Q),甚至扩展器(Expander)、频段压缩器、侧链压缩器这样的高级玩法。部分插件还提供动态的频谱图显示,清晰直观。
比如,下图所示的压缩器Dynamic Processor Stereo:
以及多段侧链压缩器Sidechain Multiband Compressor Stereo x8:
Sidechain Multi-band Kompressor Stereo x8
在Arch Linux中,直接安装即可。
sudo pacman -S lsp-plugins
这是一款非常高质量的混响工具,与商业DAW自带的不相上下,用彼此独立的几款插件来实现大厅(Hall)、房间(Room)、板式(Plate)混响,并提供一个反射效果插件(Reflections)。
它也可以直接安装:
sudo pacman -S lsp-plugins
Arch Linux下,通过Pacman安装的插件如果提供VST版本,一般都会放在/usr/lib/vst下。把它添加到支持VST的DAW VST扫描目录中(如REAPER For Linux)。
第四:使用Windows下的VST插件
我在上文里提到,目前主流的商业音频软件厂商,只会把精力集中在Windows和MacOS,往往直接忽略Linux。这就使得计算机音乐制作领域的大半壁江山都不属于Linux。好在,Wine的发展,使部分Windows专属的VST插件得以在Linux下运行,一定程度上弥补了这一缺憾。
接下来就介绍如何在Linux下,给DAW装配上VST插件。
Wine的安装和初始化
Wine是专为Linux和MacOS开发的兼容层,让你能在Linux下运行Windows下的程序。
在Arch Linux下,要想安装Wine,首先须开启multilib源,这个源默认情况下是不启用的。
sudo打开Pacman的配置文件/etc/pacman.conf,然后取消注释以下两行,保存:
[multilib]
Include = /etc/pacman.d/mirrorlist
注意:上方还有一个multilib-testing,收录测试中的软件,可能不稳定,一般不启用。
更新软件源,然后安装Wine。下方的wine-mono和wine-gecko分别为.NET运行时、浏览器内核,为可选组件,但最好装上以免Wine在初始化时提示安装:
sudo pacman -Syy
sudo pacman -S wine wine-mono wine-gecko
安装时可能需要选择用哪个版本的libfreetype,保持默认值就好。
安装完成后初始化,运行任意一个Windows应用程序,或是运行winecfg(Wine的配置工具),即可启动Wine,它会帮我们创建一个默认的“前缀(Prefix)”。这里的“前缀”是Windows程序的运行环境,相当于一个个沙盒,每个前缀彼此独立。
Linux下的原生DAW,主要有两种支持Windows版VST插件的方案:
- 使用基于Wine的桥接器,将Windows版VST插件转换成原生的Linux VST插件,如LinVST
- 原理是构建一个原生VST格式的wrapper,宿主在加载wrapper后会自动调用桥接器的host服务端,从而利用Wine加载VST本体。
- 通用的方案,只要DAW支持原生VST,就可以用。
- 内建桥接器,即采用自己编写的桥接器,如LMMS中的VeSTige
- 只有少数的DAW有这个功能。
另外,还可以直接使用Wine来运行Windows版的DAW,它会像在Windows里那样加载VST。它基本不需任何其他配置,但不具备普适性,不能保证所有的DAW都能正常运行。目前兼容性好的只有REAPER。
以LMMS为例,它附带了专门的桥接器VeSTige,可以直接像在Windows那样,加载*.dll为扩展名的VST插件。
操作步骤如下:
- 点击左侧的Instrument Plugins(音频插件);
- 插件列表出现,在下方找到VeSTige,拖到音轨视图里;
- 点击音轨视图里的VeSTige图标,打开插件界面;
- 在插件界面中点击“打开”按钮,定位到VST插件目录,打开它;
- 可以点击“Show/hide GUI”按钮来显示或隐藏VST插件的界面。
能否加载成功,仍然因系统环境和Wine的版本而异。如果无法加载,则使用htop,把RemoteVSTHost.exe这个进程结束,以免占用过多处理器资源。
LinVST是由OSXMidi开发的桥接器。类似于Windows下的jBridge,用户通过它提供的转换工具,创建一个原生VST插件,作为Windows版VST插件的wrapper,接下来只需在宿主中加载即可。
它同时支持VST2和VST3,分别对应两个独立的项目:LinVST2、LinVST3。它们各自还拥有一个增强版本——LinVST-X和LinVST3-X,允许一个VST插件实例被共享,起到节省资源的目的(例如把一个Kontakt实例用在多个音轨上)。
Arch Linux的官方源没有收录LinVST,须通过AUR安装。笔者用的是yay。
0. 安装yay
初次听说AUR和yay的读者,可以先添加Arch Linux CN源。同样是编辑/etc/pacman.d,在结尾添加:
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
然后安装密钥包,以及yay本体:
sudo pacman -S archlinuxcn-keyring yay
1. 安装LinVST本体
首先安装LinVST。AUR的包分为源码包和二进制包,后者开箱即用,前者则需编译。建议选择二进制包。
# 源码包
yay -S linvst linvst3
# 二进制包
yay -S linvst-bin linvst3-bin
如果需要增强版本,则安装:
yay -S linvst-x-bin linvst3-x-bin
注意:采用源码版编译会有两个问题:
- 只有linvst能编译,linvst3会在编译附加组件ArchStudioUtils时出错。
- 生成wrapper必不可少的linvstconvert没有编译。用户必须手动进入源码的convert/目录来编译才行。
2. 如果出现错误:“一个或多个文件没有通过有效性检查!”
但是,由于LinVST的二进制包更新与AUR PKGBUILD的MD5值不同步,会出现能下载成功,却通不过有效性检查的情况。这时要手工修改PKGBUILD文件,去掉有效性检查的部分。
首先进入linvst-bin包的yay缓存目录:
cd ~/.cache/yay/linvst-bin/
然后修改PKGBUILD文件,更改md5sums=(xxxxx)一行,把括号里的字符串值改为SKIP,表示“跳过有效性检查”。注意大小写:
# 修改前,字符串值为MD5校验和
md5sums=(68b329da9893e34099c7d8ad5cb9c940)
# 修改后,字符串值为SKIP
md5sums=(SKIP)
保存后,运行makepkg,生成安装包:
makepkg
生成好的安装包位于当前目录,文件名为linvst-bin-x.y-z-x86_64.pkg.tar.zst(x,y,z为版本号)。可以直接安装:
sudo pacman -U linvst-bin-x.y-z-x86_64.pkg.tar.zst
用同样的方法,制作并安装其他几个二进制包。
3. 生成wrapper
LinVST用于生成wrapper的工具有以下几种,它们界面大体相同,须从终端运行:
- linvstconvert、linvstxconvert、linvst3convert、linvst3xconvert:指定一个文件夹,然后由其中的VST插件生成对应的wrapper。
- 以上工具加上tree作为后缀:递归寻找子目录下的所有VST插件,为其生成wrapper。
如果所有的VST插件都在一个文件夹里,则选前一类;而如果位于若干个子目录里(比如部分VST插件带有附属的文件,要与插件本体放在单独目录中),则选后一类。
运行后,出现这个界面:
- 首先把你的Windows VST插件统一放到一个目录中,建议~/.vst(VST2)和~/.vst3(VST3)。
- 在生成工具界面中,选择LinVST库。点击【Choose linvst.so】,在文件对话框中定位到/usr/share/LinVst,选择linvst.so。其他几个VST3和增强版的库文件也在该文件夹中,如果是linvst3convert,则选择linvst3.so,以此类推。
- 然后通过下方的【Choose dll folder】,选择Windows VST DLL所在的文件夹。(如果是linvst3convert,则界面是【Choose VST3 folder】,选择*.vst3所在文件夹)。
- 点击【Start】生成,随后VST插件目录下就会出现与插件同名的*.so文件,即原生VST wrapper。
- 最后把插件目录添加到DAW中即可。实测,REAPER for Linux完美支持。
注意:
- VST插件和生成的*.so文件必须在同一目录下,否则LinVST会提示找不到插件。
Wine的兼容性
Wine是一个持续开发的项目,这是由Windows的复杂度决定的,开发团队不可能在短期内适配真实Windows下的所有特性,并保持其稳定性。因此并不是所有的程序都能完美运行,包括VST插件,测试中程序挂掉、出现Bug,在所难免。
幸运的是,有些开发者会考虑到Linux的生态,会优化自己的应用程序,使其能完美地运行于Wine。REAPER就是一个很好的例子,它的Windows版本可以直接在Wine中安装。之前REAPER并未推出原生的Linux版本,官方特别在下载页中提到,“Windows版本可在Wine下运行良好(For Linux users, the Windows version works well with WINE.)”,便利了Linux用户,也实现了开疆拓土。
即便如此,REAPER仍属于少数。大部分的应用仍需自行去测试,检验其在Wine下的兼容性,以及事后会不会出Bug。
- Kontakt Player:我用Wine下的REAPER for Windows测试,它可以在REAPER中正常加载并播放NKI采样,表现与Windows下一致。不过,如果在REAPER中就地重新加载(选择“更改当前VST效果”后重新选择Kontakt),则会导致长时间卡住,可见并不完美。
- Synth1:一款免费、强悍的合成器插件。
- 在LMMS下尝试用VeSTige打开,但没能启动成功。相反LMMS自带的VST宿主程序(RemoteVSTHost.exe)还卡在后台占用CPU,只能手动结束。
- 移师REAPER for Linux,借助LinVST,顺利运行,体验与Windows别无二致。
后记
以上是作者在Arch Linux下试玩音乐制作软件的体会,发掘了Linux的别样用法。由于厂商适配策略的不同,并不能保证Linux一定能拥有不输于Windows和MacOS的体验,但当下的Linux至少不存在这方面的空白。
不过,在Linux下制作音乐尚有明显的局限性,体现在诸多商业软件缺少对Linux的支持。作者曾经在自己的惠普笔记本上安装Arch Linux,配置好REAPER和Native Instruments的Komplete Start套装,无奈兼容性差强人意,到最后还是只能回到Windows。要想让Linux能在音乐制作领域与Windows、MacOS一分高下,还有很长的路要走。
可下载 Midifan for iOS 应用在手机或平板上阅读(直接在App Store里搜索Midifan即可找到,或扫描下面的二维码直接下载),在 iPad 或 iPhone 上下载并阅读。
-
2022-11-26
匿名
758