声音前沿:KeyKit 介绍

作者:Dave Phillips

在上个月专栏结尾,我承诺我们将研究一些基于 GUI 的工具,用于算法和实验性 MIDI 音乐创作。由于过时依赖项和软件开发时间的不确定性,我在这篇文章中只能关注 KeyKit。我希望您会同意这种关注是理所当然的。

KeyKit 是一个强大的 MIDI 创作和处理环境,它包含大量为传统 MIDI 音乐制作而设计的功能和工具——例如,MIDI 音序器和虚拟鼓机——以及用于非传统的 MIDI 音乐制作。实际上,对于想要探索一些与 MIDI 进行创作的奇异和不寻常方式的 Linux 音乐家来说,KeyKit 是必备软件。

安装设置

KeyKit 以源代码和编译形式提供。访问其网站,阅读最新消息,然后决定是否要下载该程序。您必须注册才能下载 KeyKit,但注册过程轻松且免费。下载 Linux 软件包,将其解压到您的主目录中,并阅读 README.linux 文件。然后,成为 root 用户并使用以下命令安装该软件make linux_install.

安装 KeyKit 后,您应该设置两个重要的 KeyKit 环境变量。KeyKit 支持 ALSA(目前仅支持 MIDI 输出)和 OSS/Free 设备,但您需要通过这些变量设置特定的设备。以下是我自己的 KeyKit 设备设置,保存在我的 ~/.bashrc 文件中,以便在登录时定义它们

export ALSA_RAWMIDI_DEVICE=hw:1,0

export MIDIDEVICE=/dev/midi00

因此,在 ALSA 模式下,KeyKit 通过我的第一个虚拟 MIDI 设备发送 MIDI 数据(hw:1,0)。在 OSS/Free 模式下,数据被发送到我的 SBLive 的硬件端口(hw:0,0 in ALSA)。对于 ALSA 下的音频输出,我将虚拟 MIDI 端口连接到 Linux 软合成器或 VSTi 插件。在 OSS/Free 下,该设备仅连接到我的外部合成器硬件。

请注意,在本篇文章测试的 KeyKit 版本 key73d 中,MIDI 输入已损坏。但是,KeyKit 可以加载和保存标准 MIDI 文件,因此如果您可以录制并将素材保存为 MIDI 文件,则可以将它们与 KeyKit 一起使用。这不是最佳解决方案,但在直接 MIDI 输入修复之前,这是一种权宜之计。KeyKit 的 MIDI 输出对于 ALSA 或 OSS/Free 来说都很好。

启动

输入key在 xterm 提示符下,KeyKit 将打开一个包含大片空白区域和带有命令提示符的窗口的主窗口,即 KeyKit 的语言命令控制台。KeyKit 的界面直接基于朴素的 X11 图形;也就是说,它不是基于标准的 GUI 工具包,例如 GTK 或 QT。您必须学习其一些独特的操作和控件,才能深入使用该程序,但是该界面可以轻松学习并快速掌握。

当 KeyKit 启动时,GUI 是空的,除了控制台命令窗口。控制台窗口外部的空间在 KeyKit 文档中没有特殊的名称,因此我在这里将其称为主窗口。在主窗口中的任意位置单击鼠标左键,将出现 KeyKit 的主菜单。主菜单组包括用于窗口管理、删除、移动、调整大小的项目;音乐功能,“工具”子菜单;杂项功能;页面管理;和窗口操作。单击鼠标左键以从菜单中选择项目或打开子菜单。单击并拖动菜单句柄——菜单窗口顶部的条带——以在主窗口中重新定位菜单,然后单击关闭按钮——右上角的 X——以关闭菜单窗口。图 1 显示了 KeyKit 启动后的默认外观,其中主菜单和“工具”菜单已打开以供检查。

At the Sounding Edge: Introducing KeyKit

图 1. 带有菜单的默认 KeyKit

确实是很朴素的东西。幸运的是,您可以通过一些有用的方式重新定义 KeyKit 的外观。您可以使用“工具 2”菜单中的“色调”实用程序设置基本颜色。您还可以“拉出”菜单项,以复制它们并将它们重新定位到主窗口中的任何位置,以方便访问。图 2 显示了一个彩色 KeyKit 页面,该页面运行了 Kboom 工具,并拉出了一些菜单项,调整了控制台窗口的大小,并将“工具”菜单中的另外两个项目设置为永久访问。可以使用 KeyKit 主弹出菜单中的“页面”子菜单来保存和重新加载页面布局,包括多页面配置。

At the Sounding Edge: Introducing KeyKit

图 2. 自定义 KeyKit 页面

检查“工具 1”子菜单中“端口启用器”的默认设置。在图 2 中,“端口启用器”设置为通过 ALSA_RAWMIDI_DEVICE 变量定义的 ALSA 设备发送 MIDI 输出。选择输入设备可能会冻结应用程序,因此在此示例中将其保持未选中状态。启用适当的输出端口后,KeyKit 即可投入使用。

使其工作

首先,我们将运行两个简单的测试,以熟悉更多 KeyKit 界面约定。再次打开 KeyKit 的主菜单,然后打开“工具 1”子菜单。当图 1 中看到的菜单出现时,选择“Riff”项。菜单现在消失了,并且正常光标变成了所谓的扫描光标。单击并拖动扫描光标以定义和调整 Riff 窗口的大小,然后释放鼠标按键。光标轮廓区域现在填充了 Riff 工具的内容。打开该工具的“更多”菜单,然后选择“从文件加载”以将标准 MIDI 文件加载到 Riff 中。结果应类似于图 3。Riff 数据显示窗口类似于许多 MIDI 音序器中典型的钢琴卷帘显示,其中音高由垂直轴表示,持续时间沿水平轴表示。使用“开”按钮切换播放,或通过在数据显示中的任意位置单击鼠标左键来开始播放。在显示中的任意位置单击鼠标右键以停止播放。KeyKit 有许多其他播放选项,但是我们将把这个简单的示例限制为最简单的方法。

At the Sounding Edge: Introducing KeyKit

图 3. Riff 工具

因此,KeyKit 可以加载和播放 MIDI 文件;这很好。现在,让我们看一些更实质性的东西。删除 Riff 工具,然后从“工具 1”菜单中打开 Kboom 工具并调整其大小。Kboom 看起来像一个典型的虚拟鼓机(图 4),但其朴素的外观掩盖了其“更多”菜单中一组有趣且有用的工具。与大多数软件节奏编程器一样,Kboom 允许您通过单击网格点来在网格中添加和删除节拍。但是,您可以从“更多”菜单中选择“随机”项之一,并让 Kboom 自行编程。对于我们这些喜欢从随机生成的部分雕刻图案的人来说,此功能非常方便。Kboom 的其他音乐上有用的功能包括“移位”和“移调”功能,但是您必须自己检查一下。现在该转到一个更高级的 KeyKit 示例了。

At the Sounding Edge: Introducing KeyKit

图 4. Kboom 工具

高级 KeyKit

“工具 1”菜单中的“组”工具看起来很像面向轨道的 MIDI 音序编辑器。将 MIDI 文件加载到“组”后,您可以在合并和每轨显示中查看和编辑其数据(图 4)。但是,“组”很快就开始失去与传统 MIDI 音序器的相似之处,尤其是在其“编辑”功能中。滚动浏览“组”的“编辑”菜单会显示一些不寻常的功能和过程,例如 BeatStep、Chordize、Evolve、Permutate 和 Stutter,以及更熟悉的音序编辑工具,例如 Flip(反转)、Reverse 和 Scale。许多工具都具有嵌套的子菜单,可以更精细地控制其过程。图 4 显示了“组”工具正在工作,其“编辑/随机化”菜单已展开到其白噪声生成器的详细级别。

At the Sounding Edge: Introducing KeyKit

图 5. KeyKit 的组工具

合并和 Trk 2 显示中颜色较浅的事件是使用 Trk 2 菜单中的“拾取”功能选择的。在 KeyKit 中拾取某些内容不仅仅是一个简单的选择过程。“Trk 2”的“拾取”菜单包括用于按各种事件特征(包括持续时间、音量和通道)进行选择的项目;按相反状态,例如使未选定的事件变为选定状态,反之亦然;甚至用于随机选择。

“组”是一个强大的工具。可以按轨道不同地选择事件,并且可以对拾取的事件执行编辑或一系列编辑。然后,您可以翻转所有事件的拾取状态,并对新拾取的事件执行另一个编辑或多个编辑。在此过程的任何时候,您都可以将您的工作保存为标准 MIDI 文件,并且可以从“页面”子菜单中将页面布局另存为快照。

您也可以随时抓取编辑会话的结果。“抓取”是 KeyKit 中将工具的 MIDI 数据粘贴到全局数据剪贴板的术语,使抓取的数据可用于任何其他工具——您可以运行多个工具。在“组”工具中,可以从每个轨道的标签菜单(标记为“合并”、“Trk 1”、“Trk 2”等的按钮)中选择抓取。请注意,您可以选择抓取轨道中的所有事件或仅抓取拾取的事件。

KeyKit 的马尔可夫生成器(在“工具 2”菜单中)通过一组称为马尔可夫过程的约束变体来处理 MIDI 文件的数据。此工具根据用户定义的值(称为“设置相似度”和“制作相似度”)分析输入并制定输出。“相似度”在此处代表相似。马尔可夫过程产生的结果是原始输入的密切相关变体,这使得它们对于想要在变体之间保留或多或少强烈身份的作曲家特别有用。

单击“原始”按钮以访问“设置相似度”参数。这些值确定分析窗口大小和时间增量,即窗口在数据中移动的间隔。单击“相似度”按钮以设置“制作相似度”值;值越高,生成的相似度越长。“相似度”数据显示然后填充输入/输出值的组合结果(图 6)。如上所述,使用鼠标按钮切换播放,并记住保存您的工作。

At the Sounding Edge: Introducing KeyKit

图 6. 马尔可夫生成器

如果没有图像到声音转换器,任何实验音乐工具包都是不完整的,而 KeyKit 的 PictSweep 工具在此处完成了该工具包。PictSweep 是另一个看似简单的工具,其中包括一组相当不错的有用编辑功能。“更多”菜单包括用于音阶选择、设置调号、稀疏颜色转换和其他音乐上有用的过程的选项。遗憾的是,PictSweep 可接受的图像类型仅限于 PPM 文件,但是可以使用标准的 Linux 图形工具轻松创建这些文件。

At the Sounding Edge: Introducing KeyKit

图 7. PictSweep 图像到声音处理器

KeyKit 环境还包括一种强大的面向对象的命令语言,支持实时 MIDI 输出。以下简单示例将 Cmaj7 和弦发送到 MIDI 输出设备

realtime('c e g b')

不幸的是,我在这里时间不多了,所以我将 KeyKit 语言的研究留给感兴趣的读者。请参阅 KeyKit lib 目录中名为 example*.k 的文件,以很好地了解其详细信息。

文档

KeyKit 的文档以源代码树的 docs 目录中的 HTML 页面的集合形式存在。提供了一个教程,用于与程序进行基本交互,但是您只需尝试许多未记录的工具即可了解其用途和功能。幸运的是,这比劳动更有趣,并且 KeyKit 专为动手实验而设计。

KeyKit 邮件列表也可用。参与量很低但稳定,并且开发人员始终准备好帮助解决您遇到的任何 KeyKit 问题。

直到下个月

KeyKit 是开发人员 Tim Thompson 送给想要尝试一些不同事物,甚至是非常不同事物的计算机音乐家的礼物。它有一些缺陷,并且需要更好的 ALSA 支持,但是其 MIDI 输出非常出色,并且 MIDI 文件加载/保存功能正常。此外,谁能抗拒一个工具包中包含 boomix、grab bag、snarf box 和 offset walker 等组件的程序呢?

我喜欢使用 KeyKit;它提供了令人难以置信的乐趣,但它也是用于严肃音乐制作的强大应用程序。如果您是一位正在寻找与 MIDI 合作的不同方式的 Linux 音乐家,则应该查看 KeyKit。

顺便说一句,本期完成了我对 Linux 的 MIDI 软件的“简要”介绍。希望您喜欢这次观看。下个月,我将展示 Csound5 的一些进展,但是现在我要回到 hack。下个月见!

Dave Phillips 是一位音乐家、教师和作家,居住在俄亥俄州芬德利。自 1995 年首次接触 Linux 以来,他一直是 Linux 音频社区的活跃成员。他是 《Linux 音乐与声音之书》的作者,以及 《Linux Journal》中众多文章的作者。

加载 Disqus 评论