#loops #dsp #music

app loopers-jack

Loopers是一个图形化的现场循环播放器,专为易用性和稳定的性能而设计

3个版本

0.1.2 2021年2月9日
0.1.1 2021年1月6日
0.1.0 2020年11月29日

#853 in 音频

MIT/Apache

320KB
8K SLoC

Loopers

master status Crate

Loopers是一个图形化的现场循环播放器,使用Rust编写,专为易用性和稳定的性能而设计。它可以作为练习工具、作曲辅助工具或在现场环境中表演循环作品。

目前它作为一个独立的Jack应用程序在Linux上运行,这使得它可以与其他Jack客户端(如效果架、软件乐器和DAW)接口,或在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 上运行,这是 MacOS 的原生音频系统(您也可以在 MacOS 上通过 jack 运行,目前对 jack 的支持更好)。要在 Mac 上使用 CoreAudio 构建

$ brew install jack sdl2
$ cargo install loopers
$ loopers

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

$ loopers --driver jack

注意:目前不支持通过 CoreAudio 使用 midi,也无法选择音频源和目标(使用默认设备)。

文档

用户界面导览

Full UI

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

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

Looper View

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

Looper Controls

底部是我们找到的引擎控件

Engine Controls

Loopers 模式

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

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

除了这些专有模式外,looper 还可以有一个或多个以下 修饰符

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

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

量化

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

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

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

  • 自由 这将禁用量化,并使所有命令立即生效
  • 节拍 命令在发布后的下一个节拍上生效,由节奏决定
  • 小节 命令在下一个小节的开始处生效,由节奏和拍号决定

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

命令

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

有两种类型的命令:循环命令,作用于一个或多个循环器,和引擎命令,作用于整个系统。命令可以接受参数,以控制命令的行为。

循环命令都接受一个第一个参数,该参数确定哪个循环器将被目标化

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

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

命令的量化影响方式也有所不同

  • 即时命令在接收到后立即执行,不受量化设置或系统状态的影响
  • 队列命令将在队列中等待其他(可能量化的)命令生效后执行。这允许您,例如,发送切换到下一部分的命令(一个量化的命令),然后发送SelectNextLooper命令(一个队列命令),它将在部分切换之前等待执行。
  • 量化命令将等待到下一个量化边界(例如,下一个小节的开始,详情请参阅量化)才执行。

循环命令

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

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

引擎命令

命令 参数 量化 描述
开始 即时 启动引擎
停止 即时 停止引擎,重置时间
开始停止 即时 如果引擎停止,则启动它,否则停止它
播放暂停 即时 如果引擎处于活动状态,则暂停它,否则重新启动它
暂停 即时 停止引擎但不会重置时间
重置 即时 重置引擎时间
设置时间 时间(以样本为单位) 即时 将时间设置为指定的样本数
添加循环器 即时 将循环器添加到当前部分的末尾
根据Id选择循环器 循环器Id 即时 选择具有给定id的循环器
根据索引选择循环器 索引 即时 选择当前部分中给定索引处的循环器(从0开始)
选择上一个循环器 队列 选择当前部分的上一段循环,从第一段到最后一段循环
SelectNextLooper 队列 选择当前部分的下一段循环,从最后一段到第一段循环
PreviousPart 量化 跳过没有循环的部分,转到上一部分
NextPart 量化 跳过没有循环的部分,转到下一部分
GoToPart 以下之一:ABC,或 D 量化 转到指定的部分
SetQuantizationMode 以下之一:FreeBeat,或 Measure 即时 为引擎设置量化模式
SetMetronomeLevel 0-100 即时 将节拍器的音量设置为给定的百分比
SetTempoBPM bpm (浮点数) 即时 将引擎的节奏设置为给定的BPM值
SetTimeSignature 上,下 即时 根据参数(例如3,4)设置引擎的拍号
SaveSession 路径 即时 将当前会话保存到给定的路径
LoadSession 路径 即时 从给定的路径加载会话,替换现有的会话

设置

配置存储在标准系统用户配置位置(通常这将是 ~/.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

依赖项

~28–41MB
~737K SLoC