声音前沿:自由运转
几年前,我的一个学生在当地一家咖啡馆表演了一首相当独特的原创作品。他使用了一把吉他、一把贝斯、他的声音和一个脚踏控制的硬件设备,称为循环采样器。采样器录制了吉他或贝斯上演奏的简短片段,然后将它们作为重复的音频循环反馈输出。声音效果是由七个循环吉他部分和两个循环贝斯部分组成的纹理。当纹理构建到他喜欢的程度时,他加入了人声,在循环的声音上演唱了一首非循环的歌曲。在歌曲的高潮部分,他只是在一个合适的节拍上停止了采样器,观众为之疯狂。
JP Mercury 的 FreeWheeling 程序是该循环采样器的软件版本。当然,已经添加了只有在软件中才可能实现的功能,使 FreeWheeling 成为一个强大的基于循环的表演工具。在本月的专栏中,我将介绍最新版本的 FreeWheeling,并考虑其基本功能。FreeWheeling 具有我尚未探索的功能,但即使是它的基本用途也展示了 FreeWheeling 的音乐性。
音频循环是声音或声音的一部分,它会重复播放,直到被内部或外部控制停止。在音乐术语中,循环是一种固定音型,一种重复的乐句,可以单独使用或与其他固定音型组合使用。斯特拉文斯基的《春之祭》包含了分层固定音型的出色例子。分层音频循环可以在工作室或现场表演中快速构建复杂的音乐纹理。
旧时代的磁带循环回声装置是最早的音频循环设备,但现代音频循环器真正始于 20 世纪 80 年代的硬件采样器和鼓机。这些机器提供了循环功能,已被各种流派的音乐家创造性地使用,包括嘻哈、说唱和电子舞曲。随着采样转移到在通用计算机上运行的软件,一种强大的音乐创作软件流派从基本的硬件实现演变而来。诸如 Fruity Loops 和 Sonic Foundry 的 Acid 等程序是音频循环音序器的优秀示例,它们增加了诸如定时循环和高质量时间伸缩和音高调整等增强功能。
我经常被问及 Linux 音频软件是否包含任何类似于 Acid 的东西。我坦率承认,Linux 音频开发尚未推出 Acid 的竞争产品,尽管 Ardour 可能会被改造使用。然而,基于 Linux 的音乐家可以使用一些令人印象深刻的基于循环的音乐软件,因此我们最终来到了 FreeWheeling。
我在 Planet CCRMA ISO CD 镜像(参见“资源”)安装的 Red Hat 9 和 Fedora Core 3 上构建并测试了 FreeWheeling 0.5pre4。编译程序是一项简单的任务,只有两个特殊考虑事项。优秀的 SDL(Simple DirectMedia Layer)库和头文件是 FreeWheeling GUI 所必需的,包括用于图形和 TrueType 字体支持的 SDL_gfx 和 SDL_ttf 组件。第二个考虑事项是选择提供对 FluidSynth 音色库合成器的内部支持,从而允许使用 FreeWheeling 直接播放和录制。
我的 Planet CCRMA 安装已经提供了主要的 SDL 和 FluidSynth 系统。但是,在配置过程中,我发现 Planet 没有安装 SDL_gfx 和 SDL_ttf devel 软件包。安装这些软件包后,FreeWheeling 编译并安装没有报错。
要根据您的个人喜好完全配置 FreeWheeling,您需要了解其 .fweelin.rc 文件的详细信息。默认情况下,此文件安装在您的主目录和 /usr/local/share/fweelin 中。您主目录中的文件具有优先权,您可以在其中自定义 FreeWheeling。我们稍后会更仔细地查看 .fweelin.rc,但现在让我们开始使用设置为默认值的程序。
FreeWheeling 是一个了解 JACK 的应用程序,因此您需要在打开 FreeWheeling 之前启动 JACK 音频服务器。启动 JACK 后,打开一个 xterm,输入fweelin在提示符下,当 FreeWheeling 启动时,敬畏地凝视着屏幕上充满消息。图 1 显示了该消息流的一部分,以及我的 JACK 音频连接和 FreeWheeling 默认显示。FreeWheeling 不会自动连接到任何其他 JACK 客户端,因此您需要使用 jack_connect 或 GUI(例如 Rui Capela 的 QJackCtl)建立连接。当然,由于 JACK,您可以将 FreeWheeling 的音频 I/O 路由到任何其他 JACK 客户端或从中路由,例如,将外部软合成器的音频输出连接到 FreeWheeling 的音频输入。FreeWheeling 也是一个 ALSA 音序器客户端,这意味着它可以向任何其他 ALSA 音序器客户端(例如外部软合成器)发送和接收 MIDI 消息。
按 / 键调出 FreeWheeling 的帮助屏幕,其中列出了当前的键位绑定和控制命令。FreeWheeling 本质上是一个键盘控制的音频循环音序器,旨在通过 .fweelin.rc 文件实现最大程度的个性化。同样,我必须推迟对这个现在神秘的文档的进一步解释,以便继续进行程序的实际操作。
FreeWheeling 的基本操作很简单。音频输入可以来自启用录音的混音器通道、OGG 编码的声音文件或内部合成器。主显示屏显示输入声音通过 FreeWheeling 的过程(图 2)。默认情况下,定义了四个输入通道,通过按向上或向下箭头键和输入通道号(1,2,3,4)进行单独的音量控制。按一个 QWERTY 键录制一个片段,然后再次按下它以循环播放录音。使用其他键重复此基本过程,将任何先前的循环用作实时伴奏。u 键删除上次录制的循环,空格+[键] 删除 [键] 处的循环,Alt-空格 删除所有当前循环。F8 将上次录制的循环保存为 OGG 文件,而 F7 将整个循环集合保存为一个场景。合成器音色、音频循环和场景都可以从 FreeWheeling 的浏览器中选择。b 键在浏览器的可加载类型之间循环切换,小键盘 + 和 - 键滚动每种类型的可用项目,Enter 键选择并加载一个项目。
录制可以是自由式的,可以定时到预先录制的循环,也可以与 FreeWheeling 的节拍器协调。敲击速度功能提供了一种设置节拍器的简洁方法。在播放期间,可以通过按下相关键来切换循环的开和关。可以使用小键盘 - 和 + 键以及循环键来静音和取消静音循环。每个 I/O 通道和每个循环都提供音量控制,使表演者可以更精细地控制整体平衡。
我已经录制了一些简单的示例来演示这些功能,并将它们放在网上 这里。它们在音乐上并没有特别的价值,但它们应该让您了解即使在 FreeWheeling 最基本的级别上也可以完成什么。
现在我们更进一步探索,并研究 .fweelin.rc 文件。此文件是一个基于 XML 的配置文件,通过它可以广泛自定义 FreeWheeling 的功能,包括其界面布局、键盘绑定、MIDI 控制分配等等。您需要花一些时间来学习配置语法,但该文件也是 FreeWheeling 的主要文档,编写清晰,绝对值得付出努力。
使用 .fweelin.rc 最简单的方法是更改一些默认值,重新启动程序并查看进行了哪些更改。例如,我更改了这个设置
<!-- Soundfonts to load. Soundfonts without a path load from /usr/local/share/fweelin/. --> <fluidsynth soundfont="basic.sf2"/>
使用这行代码
<fluidsynth soundfont="/home/dlphilp/soundfonts/8mbgmsfx.sf2"/>
为 FreeWheeling 的内部 FluidSynth 加载我首选的音色库。
这个简单的例子将 FreeWheeling 的显示尺寸设置为更符合我的喜好
<var resolution="1024,768"/>
下一个例子展示了 .fweelin.rc 的更有趣的用途,将 MIDI 键号绑定到切换循环录制和播放。首先,我们转到“变量”部分,并将 noterange 变量设置为所需的 MIDI 音符号范围,在本例中,是我的 CZ101 MIDI 键盘的最低八度音阶
<declare var="VAR_noterange" type="range" init="36>47"/>
在视频部分,我们找到这个布局设计
<layout id="1" name="MIDI Keyboard" scale="0.35,0.55" pos="0.00,0.00" label="0" elabel="0" namepos="0.02,0.02" show="0">
Tab 键在 PC 键盘之间切换,布局 ID 0和 MIDI 键盘显示。默认情况下,FreeWheeling 打开时显示 PC 键盘布局,但这也可以重新定义。
.fweelin.rc 的启动部分定义了我的 CZ101 键盘和 FreeWheeling 的 MIDI 布局之间的映射
<!-- Sub 0: Startup - do startup stuff --> <binding input="go-sub" conditions="sub=0" ... output2="video-show-loop" parameters2="layoutid=1 and loopid=VAR_noterange+VAR_loopid_pianostart" ... />
video-show-loop 事件定义了显示的循环范围。每个录制的循环都分配了一个唯一的 ID 号,loopid,它是通过将接收到的 MIDI 音符号的值和 loopid_pianostart 变量的值相加创建的。pianostart 变量也在“变量”部分中定义
<declare var="VAR_loopid_pianostart" type="int" init="350"/>
图 3 展示了 FreeWheeling 在播放分配给 MIDI 键盘布局的循环时录制音频输入。当我按下 CZ101 上的最低键时,会录制一个循环并将其分配给 FreeWheeling MIDI 布局中的相应键。再次按下该键会播放分配的循环,如图 3 所示。
MIDI 键绑定在“触发循环”部分中定义
<binding input="midikey" conditions="notenum=VAR_noterange and keydown=1" output="trigger-loop" parameters="loopid=notenum+VAR_loopid_pianostart and vol=velocity/127"/>
如果发生的 MIDI 键按下等于 VAR_noterange 中定义的音符号,则满足条件,并且会发生触发循环事件,要么在 MIDI 键盘布局上录制或播放循环。
正如我所说,要理解 FreeWheeling 的自定义选项和语法需要付出一些努力,但它确实开始变得有意义,并且确实会产生高度个性化的乐器。
如上所述,FreeWheeling 的主要文档来源是 .fweelin.rc 文件。FreeWheeling 的作者还在一系列 AVI 视频中直接介绍了 FreeWheeling。演示和三个教程目前可从 FreeWheeling 网站获得,第四个教程应该很快上线。FreeWheeling 邮件列表提供了有关该程序及其用户如何使用它的另一个信息来源。除了本文档外,FreeWheeling 网站上还提供了许多演示声音文件。
FreeWheeling 是非常具有音乐性的软件,邀请用户在强大的实时创作环境中进行演奏。它也是仍在成熟的软件:我在摸索 FreeWheeling 的键盘控件时,几次使 RH9 和 FC3 崩溃。此外,我希望看到一些用户级增强功能,例如 JACK 传输同步以及在 FreeWheeling 中重命名循环和场景的功能。幸运的是,程序员/音乐家 JP Mercury 致力于改进 FreeWheeling,并欢迎扩展其功能的建议。我必须承认,即使在 FreeWheeling 的基本级别上,我也玩得太开心了,而且随着我对它的了解越多,我也看到了它更深层次的可能性。如果您想使用实时、基于循环的表演乐器,那么您需要了解一下 FreeWheeling。
下个月,我将继续评测 Linux 音频循环软件,届时将介绍 Jesse Chappell 的 SooperLooper。