#looper #loopers #time #command #control #length #jack

loopers-common

Loopers项目通用代码。查看loopers-jack获取主项目信息。

4个版本

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

#346 in 音频

31 每月下载量
用于 4 crates

MIT/Apache

37KB
1K 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)。

循环器还应与PipeWire完全兼容,这消除了对单独Jack服务器的需求。

MacOS

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

$ brew install jack sdl2
$ cargo install loopers
$ loopers

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

$ loopers --driver jack

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

文档

用户界面导览

Full UI

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

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

Looper View

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

Looper Controls

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

Engine Controls

循环器模式

在任何给定时间,每个循环器都可以处于几种模式之一,每种模式在用户界面中都有颜色标识

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

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

solo color 独奏
如果启用了独奏,所有其他循环器都将静音(除了也处于独奏模式的循环器)。
mute color 静音
当静音被启用时,循环器将被静音。

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

量化

当使用多个循环器时,通常希望它们同步。在Loopers中,这是通过所有循环器使用单个时间控制来实现的。循环长度是彼此的精确倍数(例如,您可能有一个比节拍循环长4倍的贝斯循环)。如果长度偏差超过几毫秒,几轮之后就会很快被注意到。

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

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

  • 免费 此选项禁用量化,并使所有命令立即生效
  • 节拍 命令在发出后下一个节拍生效,由速度决定
  • 小节 命令在下一个小节开始时生效,由速度和拍号决定

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

命令

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

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

循环命令都接受一个第一个参数,用于确定要针对哪个循环器

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

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

命令还不同,它们如何受量化影响

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

循环器命令

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

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

引擎命令

命令 参数 量化 描述
开始 立即 启动引擎
停止 立即 停止引擎,重置时间
开始停止 立即 如果引擎停止,则启动引擎,否则停止它
播放暂停 立即 如果引擎处于活动状态,则暂停引擎,否则重新启动它
暂停 立即 停止引擎但不重置时间
重置 立即 重置引擎时间
设置时间 时间(样本数) 立即 将时间设置为指定的样本数
添加循环器 立即 在当前部分的末尾添加一个循环器
按ID选择循环器 循环器ID 立即 选择给定ID的循环器
按索引选择循环器 索引 立即 在当前部分中选择给定索引的循环器(从0开始)
选择上一个循环器 队列 在当前部分中选择上一个循环器,从第一个到最后一个循环器循环
选择下一个循环器 队列 在当前部分中选择下一个循环器,从最后一个到最后一个循环器循环
上一个部分 量化 转到上一个部分,跳过没有循环器的部分
下一个部分 量化 转到下一个部分,跳过没有循环器的部分
转到部分 以下之一 A, B, C, 或 D 量化 转到指定的部分
设置量化模式 以下之一 Free, Beat, 或 Measure 立即 设置引擎的量化模式
设置节拍器级别 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

依赖关系

~4–14MB
~157K SLoC