跳转到内容

数字音乐创作/排序

来自维基教科书,开放世界中的开放书籍

排序是指将一系列精确计时命令串联起来,以向计算机发出声音指令。这些指令可以是“播放音频样本”或“在此 MIDI 通道上向此 MIDI 端口发送一个音符启动命令”或“为一个 MIDI 通道选择乐器”。在过去,排序器声音源之间有着明确的区分:排序器知道如何记录、编辑和回放 MIDI 命令序列,但本身无法录制或回放声音,而声音源则知道如何响应 MIDI 命令并产生实际的声音。如今,大多数应用程序至少可以完成这两者的某些功能。

为简化起见,我们将从一对应用程序开始,并将它们用于明确分离的功能:Qtractor 用于 MIDI 排序,而 Qsynth 用于产生声音。

Qsynth 实际上是命令行应用程序 FluidSynth 的 GUI 前端,后者能够加载定义要产生的声音的 SoundFont 文件。特别是,我们将从fluid-soundfont-gm包中加载 SoundFont 文件,该文件应安装为/usr/share/sounds/sf2/FluidR3_GM.sf2。这将为我们提供一套高质量的 通用 MIDI 乐器。

这些应用程序将需要 JACK 运行,正如您之前了解的操作步骤一样。

记谱法:传统与钢琴卷轴

[编辑 | 编辑源代码]

西方音乐发展了自己的延续数百年的传统 音乐记谱法,并且有一些作曲家更喜欢使用这种记谱法。另一方面,这种记谱法写起来很复杂,虽然像 LilyPond 这样的计算机软件能够生成高质量的记谱法,但在创作过程中,人们通常认为这种记谱法在实践中不可行:例如,著名的作曲家会发明自己的速记符号,除了他们自己的熟练抄写员之外,其他人无法理解,这说明这种记谱法写起来是多么繁琐!

一个更简单的替代方案是钢琴卷轴记谱法,其中音符以矩形块的形式布置在一个二维图表上,时间在水平轴上,音高在垂直轴上,块的宽度表示其持续时间。对于人类来说,这种格式非常容易理解,对于计算机软件来说,也非常容易创建、编辑和显示。它是 Qtractor 和其他一些音乐应用程序使用的记谱法。

Qsynth 主窗口

这是您首次启动 Qsynth 时的样子。请注意底部显示“Qsynth1”的小标签:这实际上是一个引擎的名称,Qsynth 使用该名称来称呼一个运行中的 FluidSynth 实例。相同的 Qsynth GUI 可以控制多个引擎,这些引擎在 JACK 中会显示为具有自己的音频输出和 MIDI 输入端口。所有这些控制旋钮(以及左侧的按钮)都适用于当前活动的引擎标签。

引擎设置

当您单击第一个标签旁边的“+”图标(或单击现有引擎的“设置...”按钮)时,您将看到此设置对话框。特别注意 MIDI 设置标签(如所示),您可以选择 MIDI 驱动程序:您可以从此菜单中选择“alsa_seq”项,以使 MIDI 输入端口显示在 QjackCtl 的连接窗口的“ALSA”标签下,或者选择“jack”,以使 MIDI 输入端口显示在“MIDI”标签下。在可能的情况下,最好将项目放在“MIDI”连接标签下,并依靠a2jmidid将所有剩余的“ALSA”连接重定向到该标签。

您可以通过右键单击标签名称并从菜单中选择“删除”来删除引擎。请注意,您无法删除第一个引擎。

加载 SoundFont

但是在 FluidSynth 能够发出声音之前,它需要加载 SoundFont。在这里,在引擎设置窗口的“Soundfonts”标签中,我单击了“打开...”按钮,并选择了之前提到的 FluidR3 通用 MIDI SoundFont。

默认通道预设

接下来,单击此引擎的“通道”按钮,您应该看到默认预设,其中“雅马哈三角钢琴”声音被分配给 MIDI 通道 1,其余通道未分配。

现在,如果您加载一个虚拟键盘应用程序,例如之前描述的vmpk或 JACK 键盘,并将音频和 MIDI 连接方式与之前使用 ZynAddSubFX 的方式类似,您应该能够使用此默认钢琴声音弹奏一些音符。

右键单击此窗口中的任何通道线,将出现一个菜单,其中包含“编辑...”、“取消设置”和“刷新”项目。“编辑...”项目会弹出一个对话框,允许您将 SoundFont 文件中的任何乐器分配到此通道,而“取消设置”会清除乐器分配。(推测“刷新”是为了使显示同步,以防 FluidSynth 实例通过其他通道更改其设置。)尝试在通道 2 上选择另一个声音,然后在您的虚拟键盘应用程序中,在通道 1 和 2 之间切换,每次弹奏一些音符,并聆听差异。

Qtractor 在首次启动时的样子

首次启动 Qtractor 时,其主窗口应类似于此。Qtractor 中的项目将包含多个文件

  • 一个会话文件,扩展名为.qtr。它包含项目的总体设置。会话将包含一个或多个要同时播放的音轨(代表乐曲中不同的乐器部分);有关这些音轨的信息也将保存在会话文件中。
  • 一个或多个片段文件,它们可以是两种类型之一:标准 MIDI 文件用于 MIDI 数据,或 Ogg Vorbis 文件(默认情况下)用于音频数据。会话中的每个音轨都将引用一个或多个片段,这些片段将按顺序播放。同一个片段可以在音轨中的不同位置(或在不同音轨中)多次重复使用。这允许您在乐曲中创建重复部分,以便对片段的任何编辑都会立即在使用该片段的所有位置生效,而无需在多个位置进行编辑。

我建议您在开始一个新项目时,首先为它创建一个新目录。然后将.qtr文件保存在此目录中,您创建的所有关联片段文件都将与它一起保存。这可以让项目保持整洁,并有助于避免不同项目所属的片段文件之间出现混淆。因此,新项目的初始步骤是

  • 创建一个项目目录。
  • 启动 Qtractor,或使用它的文件→新建菜单项开始一个新的、最初为空的项目。
  • 调出文件→属性对话框。在其中,您为会话分配一个名称并指定会话目录,片段文件将保存在该目录中;为会话输入任何您喜欢的名称,而对于后者,选择您之前为该项目创建的目录。在单击确定之前,您可以随意调整会话属性。
  • 接下来,执行文件→另存为...,以创建初始.qtr文件。(您可以在对项目进行后续更改(如添加实际音轨和片段)后随时再次保存;此初始保存只是为了告诉 Qtractor 将项目放在哪里。)弹出的文件选择器将默认到会话目录。接受此目录默认值,并为会话文件选择一个合适的名称;默认情况下使用您之前输入的会话名称,并且使用该名称是有意义的。
  • 现在,您可以继续向项目添加实际的音轨和片段。

加载乐器定义

[编辑 | 编辑源代码]

在实际开始创建任何音轨之前,如果 Qtractor 能够为乐器音库分配名称,则会很有帮助。您可以通过选择视图→乐器菜单项来完成此操作,这将调出一个类似于右边的窗口,但最初为空。单击“导入...”按钮,然后选择与您加载到 Qsynth 中的相同的 FluidR3_GM SoundFont 文件。这将用信息填充所有列表,其中大部分信息仅可查看,不可单击(除了通过单击“>”符号来展开/折叠组之外);您似乎只能单击右上角列表中的文件名条目,以便重新排序或删除它们。

JACK 连接

[编辑 | 编辑源代码]

如果您检查您的 JACK 连接,您会发现 Qtractor 已将其音频自动连接到系统输出。但是,其 MIDI 端口仍处于未连接状态。Qtractor 似乎不支持原生 JACK MIDI 连接,因此您将在 QjackCtl 的连接窗口的“ALSA”标签下找到它,或者在a2j组中找到它,该组由a2jmidid在“MIDI”标签下管理。

在右侧的插图中,我们依靠a2jmidid将 Qtractor 的源端口带入“MIDI”选项卡,因为我们配置了 Qsynth 本地使用 JACK MIDI。另一种选择是重新配置 Qsynth 以使用 ALSA MIDI,然后可以在“ALSA”选项卡下建立连接,而无需a2jmidid. 请记住,MIDI 连接类型的选择可以在 Qsynth 中为每个引擎单独设置。

开始一个音轨

[编辑 | 编辑源代码]

现在,让我们为我们的项目添加一个音轨。选择音轨→添加音轨... 菜单项,应该会出现一个类似这样的对话框。

为类型选择 MIDI,将出现其他相关选项。

在 MIDI/乐器部分,点击显示“(无乐器)”的弹出菜单,您会看到还有一个选项“FluidR3_GM”,这是由于您之前从该文件中加载了乐器名称。选择它,并注意“音库”字段现在显示“FluidR3_GM 音库 0”。该音库包含主要的通用 MIDI 乐器,这将是可以的。

现在,您可以从该音库中选择一个乐器用于您的音轨。

我发现音轨乐器选择不可靠。当您重新打开先前保存的项目时,音轨乐器分配不会正确传播到合成器。也许这是因为 MIDI 连接尚未建立,因此音轨分配 MIDI 命令实际上正在发送,但正在丢失。因此,我发现最好在片段中放置显式的 MIDI 程序变更命令。

当您对设置感到满意时,点击确定,Qtractor 的主窗口应看起来像这样。

注意上面窗口中标记的以下两个重要区域

  • 音轨信息区域,以紫色勾勒,显示有关音轨的一些信息,以及提供 R(ecord)、M(ute) 和 S(olo) 按钮。您可以随时通过选择音轨→音轨属性... 菜单项或双击该信息区域来更改音轨设置。
  • 时间线区域,以橄榄绿勾勒。这显示了构成每个音轨的实际片段,按时间排列。
  • 时间标尺,以橙色勾勒。

窗口中显示的区域之间的空间分配只是默认值:您可以通过拖动它们之间的边界来更改它们的大小比例。

注意最初位于时间线区域左侧边缘的红色垂直线,其顶部有一个小三角形:这是“播放头”,显示片段中要开始播放的当前时间位置。您可以通过在时间线区域或时间标尺的适当位置按住 Ctrl 键单击或 Shift 键单击鼠标左键或中键来将其移动到任何时间位置。

创建一个片段

[编辑 | 编辑源代码]

现在让我们为您的音轨添加一个片段。通过在音轨信息区域或时间线区域中点击音轨,确保音轨已被选中。选择片段→新建... 菜单项,将出现一个新窗口。

音符区域
数值区域
事件区域

以下是该窗口的主要区域

  • 蓝色框架中的区域是一个虚拟键盘,您可以在其中点击听到所选乐器的音调,无论片段中是否有任何音符,并且不会对片段进行更改。
  • 橙色显示的音符区域是您可以在其中查看组成片段的音符,并通过点击添加音符和编辑音符的地方。请注意二维显示;纵轴上的音高(对应于虚拟键盘上的键)和横轴上的时间。窗口顶部附近以相同颜色框起来的菜单允许您选择“按键按下”而不是“音符开启”事件,但我不确定这样做的效果,因此将其保留为“音符开启”。
  • 紫色显示的数值区域显示了可以为每个音符调整的各种 MIDI 通道值:窗口顶部附近以相同颜色框起来的相应菜单允许您选择要在此窗口中显示和编辑的 MIDI 事件类型:音符力度、音高弯曲等。您一次只能查看和编辑一种事件类型。
  • 右侧以绿色框起来的大区域显示了片段中所有 MIDI 事件的低级显示。在这里,您可以对每个事件的参数进行更详细的调整;例如,如果您愿意,您可以输入控制器参数的确切数字。

注意音符区域右侧的垂直滚动条:它允许您选择在该区域和虚拟键盘上可见的音高范围。还请注意该滚动条下方“+”和“-”放大镜图标;它们允许您放大和缩小音高范围。

在数值区域下方是一个水平滚动条,它控制片段中可见于音符区域和数值区域的时间范围。同样,它有放大镜图标,允许您放大和缩小时间范围。

鼠标控制:滚动鼠标滚轮可在音高轴上滚动,而摇动滚轮可在时间轴上滚动。按住 Ctrl 键并滚动滚轮可同时放大音高和时间。

您的第一个音符!

点击音符区域内:您将听到一个音符的声音,并且将出现一个矩形条,代表您刚刚创建的音符。在右侧的事件区域中也有该音符事件的条目。

如果您将鼠标悬停在该条的内部部分上,您将看到指针变为手形,并且音符的一些信息将出现在气泡中。您可以在此点点击并拖动以重新定位音符,既可以在音高上,也可以在时间上。

如果您将鼠标悬停在该条的左右边缘上,您将看到指针变为水平双箭头。这允许您仅在时间上重新定位音符的开始或结束,同时保持另一个端点(和音高)相同。

您可以使用鼠标左键在空白区域点击以放置另一个音符,或点击现有音符以选择它。Shift 键点击将另一个音符添加到选择中,或 Ctrl 键点击将其从选择中移除。按 Del 键删除所有选定的音符。您还可以拖动选定的音符以将其在音高上向上或向下移动,或在时间上向左或向右移动。您可以使用 Ctrl+Z 撤消上一步操作,或使用 Ctrl+Shift+Z 重做上一步操作。每次添加、点击或移动音符时,Qtractor 都会通过播放音符提供声音反馈。

播放头和编辑头

[编辑 | 编辑源代码]

片段窗口有一个时间标尺,就像 Qtractor 主窗口一样。它还显示相同的红色垂直线,标记当前播放位置,与 Qtractor 主窗口的时间位置相同。在其中一个窗口中设置播放头位置的相同鼠标点击将在另一个窗口中起作用。

在时间标尺上点击并拖动,而不按住任何修饰键,将设置编辑范围;这由蓝色垂直线标记,用于标记编辑→选择→范围命令(Ctrl+R)的限制。

另请参阅

[编辑 | 编辑源代码]
华夏公益教科书