LinuxSampler 项目
本周我们将关注 LinuxSampler 的最新进展,这是一个非常酷的软件音频采样器。我必须在一开始就说,写这篇文章很困难,因为我玩这个程序玩得太开心了。
来自 LinuxSampler 网站的这段话简洁地描述了该项目的目标
“LinuxSampler 项目的创立目标是开发一款免费、开源的纯软件音频采样器,具有专业级功能,可与硬件和商业 Windows/Mac 软件采样器相媲美,并引入世界上任何其他采样器尚不具备的新功能。”
这是一个尽可能简洁明了的基本原理,也是对该项目的完美描述。但是,在我们了解这个描述是否确实完美之前,让我们快速回顾一下 MIDI 内存通道,了解一下其他采样器(包括硬件和软件)的背景。
采样器简史
现代工作室采样器是一种与数字音频合成器相关的电子乐器。合成器通过一组音频合成参数创建声音,而采样器则使用实际声音的录音作为其声音创建功能的基础。与合成器一样,采样的声音可以通过包络、LFO、特效和其他声音塑造功能进行转换和调制。
不幸的是,仅来自乐器的一个样本不足以令人信服地再现该乐器在整个音域内的声音。因此,开发了多重采样库,其中包含数十甚至数百个乐器的录音,这些录音在不同的演奏范围内采样,具有不同的发音和惯用演奏技巧(弓法、口法、拨弦),以更准确地表示真实乐器的声音可能性,同时实时 MIDI 控制参数(如滤波器截止值和 LFO 速率)为声音增加了更大的真实感。
当我开始将 MIDI 软件与硬件合成器结合使用时,我惊讶于这些令人难以置信的工具带来的新自由。与此同时,我不得不承认,虽然模仿合成的声音可能有用,但与真实乐器的声音相比,它们很少能通过检验。幸运的是,不久之后,不断增长的数字乐器行业推出了价格实惠的、支持 MIDI 的采样器。这些早期的、支持 MIDI 的采样器旨在与键盘或其他 MIDI 控制器(如风控制器或外部音序器)一起使用。为了节省宝贵的 RAM,大多数采样器允许用户在 MIDI 音符范围(0-127)内设置离散或重叠的样本区域(也称为分割和分层)的映射。因此,MIDI 音符编号 24 到 47 可以分配给低音提琴,编号 48 到 71 可能是钢琴,编号 72 到 96 可能是管风琴的声音。音符开/关速度、琴键压力、踏板状态、滚轮位置和滑块值可以自由地路由到采样器的 MIDI 可控参数,这使得机器比单纯的样本回放设备强大得多。
主要的电子乐器制造商开发了各种现在已成为经典的硬件采样器。 Roland、Yamaha、Akai、Ensoniq 和 E-mu 制造的价格实惠的机器很快成为工作室的主力,而 Fairlight 和 NED 继续为预算不那么受限的用户推进他们的硬件。
硬件采样器还引入了音频循环。循环最初用作在 MIDI 琴键按下期间持续采样声音的方法。采样声音的相对稳定的部分可以分配起点和终点,以提供循环边界。当播放样本时,指定的段将重复自身,直到琴键按下被释放,此时样本播放到结束。基本循环只是从头到尾重复循环段,但采样器设计人员开发了更复杂的循环功能,其中许多功能被说唱和嘻哈艺术家利用。
随着采样器的发展,计算机也在发展。到 20 世纪 90 年代末,硬件采样器的局限性变得显而易见。更好的样本需要更多的内存,采样器的专有 RAM 芯片很昂贵,并且硬件采样器的操作系统通常无法支持诸如铙钹碰撞的完整衰减或完整的多重采样钢琴等采样声音所需的大量内存。消费者还希望更快地访问他们的样本,并希望获得诸如音高转换和时间伸缩等新控件。到 20 世纪 90 年代末,很明显,大多数台式计算机都超过了大多数可用硬件采样器的基本功能,制造商很快意识到计算机作为采样器的潜力。
在 21 世纪初期,软件采样器领域的主要名称是 Tascam。该公司长期以来一直是优质录音硬件的制造商,通过其 Gigasampler 和 Gigastudio 产品线重新定义了现代软件采样器。这些程序拥抱并扩展了硬件采样器的可能性,但它们也面临着新平台固有的新挑战。廉价且充足的系统 RAM 缓解了旧的因内存容量不足而引起的问题,但高质量样本库的大小很快就超过了物理内存的限制。解决方案是让软件从硬盘驱动器以连续流的方式读取样本数据,使用一种称为预缓存的过程来缓冲到采样器的数据流。该程序还必须管理多个数据流,并应允许对音频输出进行某种程度的实时控制。
Gigasampler 和 Gigastudio 在 MIDI 音乐家中非常成功,其他音乐软件公司也纷纷效仿 Tascam 的领导,通常在采样器的基本设计中添加新的和独特的功能。最终,FOSS 声音和音乐软件世界发展出了自己的竞争对手,这最终将我们带到了 LinuxSampler 项目。
认识家庭成员

LinuxSampler 项目的设计理念包括对其组件的明确定义以及在它们之间提供清晰的接口。 libgig 库提供了以 GIG 格式加载、编辑和保存文件的核心功能。 linuxsampler 引擎(图 1)为有效客户端提供这些功能,但它本身与任何前端完全分离。 Gigedit 软件(无论是在独立模式还是插件模式下运行)也需要 Libgig。
liblscp 库提供了用于访问 linuxsampler 引擎服务的控制协议。 GUI 前端使用此库来存储和加载 LinuxSampler 会话,并完整保留所有控制状态。会话状态包括 MIDI 和音频设备设置、所有已加载的乐器及其参数值,以及乐团/乐器数据库的内容。

目前有两个项目为 linuxsampler 服务器提供 GUI 前端。 Rui Nuno Capela 的 QSampler(图 2)以其朴素的 Qt4 GUI 遵循了他的其他优秀软件(QJackCtl、QSynth、QTractor)的图形设计。 QSampler 快速而轻巧,但目前尚不支持 LinuxSampler 的乐器数据库。基于 Java 的 JSampler 软件与所有 linuxsampler 服务同步更新,但其资源占用稍重。图 3 和图 4 显示了 JSampler 的两种风格:Classic 和 Fantasia。


安装
LinuxSampler 包含在大多数针对实时音频性能优化的 Linux 发行版中。如果您已经运行了诸如 PlanetCCRMA 或 JAD 之类的发行版,则应检查您的发行版存储库中是否有软件包。如果您没有运行支持 RT 的系统,则应该运行,尤其是在您希望获得 LinuxSampler(以及大多数其他 Linux 音频应用程序)的卓越体验时。有关此类系统的部分列表,请参阅 linux-sound.org/distros。
构建该软件不会造成任何异常问题,只要您具有所需的依赖项和开发工具即可。我为我的 32 位和 64 位系统构建了项目中所有内容的当前版本,但 QSampler 除外,它需要比我的任何系统上都更新的 Qt 版本。否则,我在构建或安装 LinuxSampler 组件时没有遇到任何问题。
使用 LinuxSampler
让我们看看 Studio Dave 这里使用 LinuxSampler 的典型会话。以下四个步骤使事情顺利进行
- 使用 QJackCtl 启动 JACK
- 启动 LinuxSampler 服务器
- 启动并配置 JSampler Fantasia GUI
- 启动我的音序器
这些步骤可以使用简单的 bash 脚本自动化,并且每个步骤都可以采用进一步的选项来微调条件和连接。例如,QJackCtl 的 PatchBay 保存了所有音频和 MIDI 连接的连接模板,并且该程序可以使用特定的 patchbay 模板启动,这是一个非常有用的便利设施。
Fantasia GUI 为操作 linuxsampler 提供了一个简单且易于导航的环境。该界面包括顶部菜单栏/工具条和一个主窗口,主窗口分为乐团/乐器数据库、GIG 样本的虚拟机架以及用于设置系统音频和 MIDI 设备的控制面板。
我已经为我最典型的合奏创建了乐团模板。但是,有时我从头开始,所以我还维护乐器系列的乐团(即低音、拨弦乐器、键盘等)。采样器机架中的每种乐器都可以设置为其自己的音频/MIDI 端口和通道,并且来自不同乐团的样本可以在虚拟机架中自由混合。

图 5 显示了我使用 LinuxSampler 写作时的常用设置。采样器由我的古董 MIDI 音序器驱动,并配置为 ALSA MIDI 连接和 JACK 音频输出。 QJackCtl 处理所有音频/MIDI 路由和连接。我可以轻松地将诸如 JACK-Rack 之类的效果处理器添加到链中,但我最近一直保持简单。音序器的 MIDI 被路由到采样器,采样器的音频被路由到我的扬声器。

如果没有用于 GIG 文件的编辑器,用户界面就很难说是完整的。幸运的是,该项目包括 Gigedit,这是一个用于编辑 GIG 文件的 GUI(独立或插件)。在 Fantasia GUI 中,您可以通过将鼠标光标在样本名称的右侧停留片刻,然后单击将出现的橙色“编辑”按钮(图 7)来召唤 Gigedit。编辑器插件将打开,然后您可以实时编辑 GIG。
在使用 Gigedit 作为插件时,我发现使用“另存为”来保存我的工作反而会损坏它。果然,这个问题是众所周知的,并且快速搜索 LinuxSampler 公告栏就找到了解决方案(只需使用“保存”,而不是“另存为”)。

我为本文录制了两个简单的示例,Enrique Granados 的 少女与夜莺 和 Stefan Wolpe 的 钢琴曲 Form For Piano。这两首曲子都是我本人在 1989 年编排的,从那时起,它们已经被许多不同的合成钢琴和采样钢琴演奏过。这些实现是由 LinuxSampler 展示 Mats Helgesson 的 Maestro Concert Grand 的声音来完成的,这是一款出色的免费 GIG 格式采样三角钢琴,我必须说,这些曲子从未听起来如此出色。
许可
关于 LinuxSampler 许可政策存在一些争议。来自项目网站的以下信息应阐明 LinuxSampler 软件系列的许可分配
- libgig -(纯)GPL
- liblscp -(纯)LGPL
- jlscp -(纯)GPL v2
- Gigedit -(纯)GPL
- LinuxSampler - 具有商业例外的 GPL
- JSampler -(纯)GPL v2
- QSampler -(纯)GPL
以下是商业例外的文本
“LinuxSampler 根据 GNU GPL 许可,但例外情况是,未经 LinuxSampler 作者事先书面许可,不得将源代码、库和应用程序用于商业硬件或软件产品。”
就这样。开发人员建议,如果您对 LinuxSampler 许可政策有其他疑问,您应该阅读 FAQ 或直接联系开发人员。
文档和社区
文档目前相当单薄,但该软件使用起来并不特别复杂。 Gigedit 编辑器可能是软件包中最复杂的部分,但 Alexander Methke 的 Gigedit 快速入门 将使您快速有效地入门。 Grigor Iliev 的 JSampler 手册 同样对 Classic 或 Fantasia GUI 的用户来说是宝贵的。
LinuxSampler 社区正在稳步发展,最近发布的适用于 Windows 的 LinuxSampler 肯定会增加其用户群的规模。 LinuxSampler 公告板 目前是用户最好的交流线路,而开发人员可能会在 Freenode 上的 #linuxsampler IRC 频道上被找到。
LinuxSampler 的未来
LinuxSampler 开发路线图 指示了该项目当前的开发状态以及在下一个公开发布之前需要完成的工作。 剩余的问题包括扩展对 GIG3、DLS 和 Akai 文件格式的支持、改进音高转换器、VSTi 前端以及对多处理器系统的支持。但是,当前版本中完全实现的功能列表确实令人印象深刻。
我承认,我已经被 LinuxSampler 迷住了。它已成为我目前工作中的固定装置,我期待着更深入地探索它。我仍然需要了解 MIDI 乐器映射和内部 FX Sends,我想查看一些商业 GIG 库,并且我想开始使用 Gigedit 制作我自己的 GIG。而且我有没有提到我也想要 32 小时的一天?
结尾
接下来:谁知道呢?您只需在两周后再次回来。同时,查看 LinuxSampler 项目,然后跳到 linuxaudio.org 以赶上 Linux Audio Conference 2008 的音频和视频录音。这应该会让您忙到我们再次见面。