#循环 #数字信号处理 #音乐

应用程序 loopers

Loopers 是一个图形化实时循环器,设计简单易用,稳定可靠

1 个不稳定版本

0.2.0 2021年11月15日

#445音频

MIT/Apache

320KB
8K SLoC

Loopers

master status Crate

Loopers 是一个图形化的 实时循环器,使用 Rust 编写,设计简单易用,稳定可靠。它可以作为一个练习工具、作曲辅助工具,或用于现场表演中的循环作品。

目前它作为独立的 Jack 应用程序在 Linux 上运行,允许它与效果架、软件乐器和 DAW 等其他 Jack 客户端进行交互,或在 MacOS 上使用 Jack 或(实验性)直接与 CoreAudio 交互。

video of loopers

系统被模拟为一系列硬件循环单元(如 Boss Loop Station),这些单元通过单个时间控制同步。循环单元的数量仅受您的显示大小限制,循环长度仅受可用内存限制。

功能

  • 由公共时间控制同步的多个循环
  • 循环可以录制(设置循环长度)、叠加、清除、静音和独奏
  • 最多可以使用四个部分来分割表演的各个部分
  • 支持循环命令的节拍、小节和自由量化,使其易于同步
  • 无限撤销/重做
  • 双倍速度和半倍速度播放(以及叠加!)
  • 每个操作都可以通过 GUI 或 MIDI 控制
  • 可以保存和恢复会话
  • 内置的节拍器(在单独的 Jack 输出上)有助于您在循环中保持准确的时间
  • 循环长度不受限制,仅受计算机内存限制
  • 交叉淡入确保每次都能完美循环
  • 很有趣!

入门指南

Linux

要构建 loopers,您将需要 jack 和 sdl2。

对于 Ubuntu/Debian,可以使用以下命令安装它们

$ sudo apt install jackd2 libjack-jackd2-dev libgl1-mesa-dev libsdl2-dev

现在您可以安装 loopers 本身了。首先安装 rust 工具链(https://rustup.rs),然后

$ cargo install loopers

然后使用以下命令启动它

$ loopers

(如果您收到关于 Jack 没有运行的错误,您需要首先启动 Jack 服务器。有关详细信息,请参阅 Jack 文档。)

这将创建一个 Jack 客户端,可以与任何数量的工具(我推荐来自 KXStudio 的 Claudia)连接到您的输入/输出/效果。

Loopers 也应与 PipeWire 完全兼容,这消除了需要单独的 Jack 服务器的需求。

MacOS

Loopers 对在 CoreAudio 上运行提供实验性支持,CoreAudio 是 MacOS 的原生音频系统(您也可以在 MacOS 上在 jack 上运行它,目前对它的支持更好)。要在 Mac 上使用 CoreAudio 构建

$ brew install jack sdl2
$ cargo install loopers
$ loopers

默认情况下,它将使用 CoreAudio 运行。要使用 jack 运行

$ loopers --driver jack

注意:目前通过 coreaudio 不支持 midi,并且无法选择音频源和输出端(使用默认设备)。

文档

用户界面导览

Full UI

用户界面分为两部分:顶部包含一组 loopers,底部包含引擎的控件和设置。将鼠标悬停在每个 loopers 上会显示该 loopers 的控件,包括设置 loopers 所参与的片段和控制模式。

每个 loopers 都会显示一些关键信息,以便表演者快速了解其状态

Looper View

将鼠标悬停在 loopers 上会生成 loopers 的控件(尽管大多数表演者更愿意使用硬件按钮)

Looper Controls

底部是引擎控件

Engine Controls

Loopers 模式

在任何给定时间,每个 loopers 可以处于几种模式之一,每种模式在 UI 中都有颜色标识

播放颜色 播放
在播放模式下,loopers 的输出与其他所有 loopers 的输出混合,并发送到全局输出。这是默认模式。
录音颜色 录音
当开始录音时,loopers 中所有现有的样本都会被清除。然后,直到录音完成,新的音频会被记录到一个样本中,从而确定循环长度。
叠加颜色 叠加
在叠加模式下,我们在 loopers 中现有的样本上添加新的输入,而不改变循环长度。

除了这些独家模式之外,loopers 还可以有以下一个或多个 修饰符

独奏颜色 独奏
如果启用独奏,所有其他 loopers 都会被静音(除了那些也处于独奏模式的外)。
静音颜色 静音
当启用静音时,loopers 会被静音。

模式和修饰符可以通过 UI 或通过发送 midi 命令来控制。

量化

当使用多个 loopers 时,通常希望它们同步在一起。在 Loopers 中,这是通过一个跨所有 loopers 使用的时间控制来实现的。同时,循环长度必须是彼此的确切倍数(例如,您可能有一个 4 倍于节奏 loop 的 bass loop)。如果长度偏差超过几毫秒,在几次重复之后就会很快被发现。

为了帮助表演者使循环长度完全同步,Loopers 提供了一个 量化 功能。这允许您将命令(例如,停止录音从而设置循环长度)同步到某些度量事件。

它支持三种量化模式,通过 UI 底部的按钮设置

  • 自由:禁用量化,使所有命令立即生效
  • 节拍:命令在发布后的下一个节拍生效,由速度决定
  • 小节:命令在下一个小节的开始生效,由速度和拍号决定

一些命令受量化影响,一些命令立即生效。有关更多信息,请参阅命令参考

命令

系统的各个方面都可以通过命令进行控制,无论是通过UI还是通过midi。有关配置midi控制的详细信息,请参阅设置

有两种命令:loop器命令,应用于一个或多个loop器,以及引擎命令,应用于整个系统。命令可以接受参数来控制命令的行为。

loop器命令都接受一个第一个参数,用于确定将针对哪个loop器

  • 已选:仅针对通过UI或通过Select*Looper命令之一控制的已选loop器
  • Id:接受一个id参数,并针对具有该id的loop器
  • Index:接受一个index参数,并针对当前可见部分中该索引处的loop器,从0开始。
  • 所有:针对所有loop器

其他命令也可能接受控制其行为的参数。

命令在量化方面也有区别

  • 即时命令在收到后立即执行,不受量化设置或系统状态的约束
  • 排队命令将在队列中等待其他(可能是量化的)命令生效后执行。例如,您可以发送切换到下一部分(量化的命令),然后发送SelectNextLooper命令(排队的命令),它将在部分切换之前执行。
  • 量化命令将在下一个量化边界(例如,下一个小节的开始,有关详细信息,请参阅量化)执行。

loop器命令

命令 参数 量化 描述
录音 loop器目标 量化 将选定的loop器移动到录音模式
覆盖录音 loop器目标 量化 将选定的loop器移动到覆盖录音模式
播放 loop器目标 量化 将选定的loop器移动到播放模式
录音/覆盖录音/播放 loop器目标 量化① 从录音 -> 覆盖录音 -> 播放 -> 覆盖录音
静音 loop器目标 即时 切换所选loop器的静音修饰符
独奏 loop器目标 即时 切换所选loop器的独奏修饰符
删除 loop器目标 即时 删除所选loop器
清除 loop器目标 量化 清除所选loop器的所有样本
设置Pan loop器目标,一个从-1(完全左侧)到1(完全右侧)的pan值 即时 为loop器设置pan
设置级别 loop器目标,一个从0(静音)到1(全音量)的级别值 即时 为loop器设置输出级别
1/2x loop器目标 即时 将loop器设置为1/2x速度
1x loop器目标 即时 将loop器设置为1x速度
2x loop器目标 即时 将loop器设置为2x速度

RecordOverdubPlay从录音 -> 覆盖录音和覆盖录音 -> 播放量化,但从播放 -> 覆盖录音排队。

引擎命令

命令 参数 量化 描述
开始 即时 启动引擎
停止 即时 停止引擎,重置时间
开始/停止 即时 如果已停止则启动引擎,否则停止它
播放/暂停 即时 如果已激活则暂停引擎,否则重新启动它
暂停 即时 停止引擎但不清除时间
重置 即时 重置引擎时间
设置时间 时间(样本数) 即时 将时间设置为指定的样本数
添加loop器 即时 将loop器添加到当前部分的末尾
按ID选择loop器 loop器ID 即时 选择具有给定ID的loop器
按索引选择loop器 索引 即时 选择当前部分中给定索引处的loop器(从0开始)
选择前一个循环器 已排队 选择当前部分中的上一个循环器,从第一个循环器循环到最后一个循环器
选择下一个循环器 已排队 选择当前部分中的下一个循环器,从最后一个循环器循环到第一个循环器
上一个部分 量化 跳过没有循环器的部分,转到上一个部分
下一个部分 量化 跳过没有循环器的部分,转到下一个部分
转到指定部分 以下之一:ABCD 量化 转到指定的部分
设置量化模式 以下之一:FreeBeatMeasure 即时 为引擎设置量化模式
设置节拍器级别 0-100 即时 将节拍器音量设置为给定的百分比
设置节拍器BPM bpm (浮点数) 即时 将引擎的节拍设置为给定的BPM值
设置拍号 上,下 即时 根据参数设置引擎的拍号(例如,3, 4)
保存会话 路径 即时 将当前会话保存到指定的路径
加载会话 路径 即时 从指定的路径加载会话,替换现有的会话

设置

配置存储在标准系统用户配置位置(通常这将是 ~/.config/loopers/)。当前配置由一组从MIDI消息到循环器命令的映射组成。这些应放置在配置目录中的名为midi_mappings.tsv的文件中,该文件将在循环器第一次运行后自动创建。

此文件的每一行非空行应包含以下制表符分隔的列

  1. MIDI通道(可以是*表示任何通道或通道号)
  2. MIDI控制器号
  3. MIDI数据(可以是*表示任何数据,单个值如50或范围如0-100
  4. 命令名称(参见上面的表格)
  5. 命令参数(多个参数应使用制表符分隔;特殊值$data可以在某些数值参数的位置使用,以使用MIDI事件的数值,例如用于表情踏板)

MIDI值(通道、控制器、数据)可以被视为对传入MIDI事件的过滤器;对于每个事件,所有匹配的命令都会触发。

配置用于与Behringer FCB1010(一个出色的踏板板)的示例

Channel	Controller	Data	Command	Arg1	Arg2	Arg3
*	22	127	RecordOverdubPlay	Selected
*	22	0	RecordOverdubPlay	Selected

*	23	127	SelectNextLooper
*	23	0	SelectNextLooper

*	24	127	NextPart
*	24	0	NextPart

*	25	127	Clear	Selected
*	25	0	Clear	Selected

*	26	127	PlayPause
*	26	0	PlayPause

*	27	0-127	SetPan	Selected	$data

依赖关系

~29–42MB
~740K SLoC