欧几里得节奏 · 步进音序器 · 手指鼓练习
欧几里得鼓点里的 Steps、Hits 和 Rotation 是什么?
欧几里得节奏生成器可以用两个小整数排出一条很实用的循环,但 Steps、Hits、Density 与 Rotation 很容易被混成一件事。先手工搭出 E(3,8),证明 Rotation 究竟保留什么,再加入第二声部,把屏幕上的网格变成两块 Pad 上可复现的演奏。
范围:这是一套不依赖具体设备的编排与手指练习。本文把一个循环固定为八个等长的八分音符格,x 表示起音,. 表示休止。参数命名并不统一:有的软件写 Hits,有的写 Fills,另一些软件的 Density 可能控制不同操作。因此,真正的证据是输出的八格内容,而不是旋钮名称。本文所说“向右 Rotation 一格”,是把每个起音移到晚一格的位置,并让第 8 格绕回第 1 格;若你的产品正负方向相反,请直接记录输出字符串,不要照抄符号。文末论文与官方手册支持数学结构和产品事实;四道不变量门禁、R0a/R1/R0b 回归、双声部碰撞卡、脱离屏幕练习、错误代码和停止规则,是 FingerDrum 编辑团队的原创综合。这张网格不等于任何具名传统的文化实践、音色、发音或律动感。
在 E(k,n) 中,n 是循环里的等长步数,k 是被尽量均匀分布到这些步里的起音数。E(3,8) 可写成 x..x..x.:第 1、4、7 格起音,循环间隔依次为 3、3、2。向右 Rotation 一格得到 .x..x..x。它改变哪个起音碰到小节线,但不能改变八格、三击或循环的 3–3–2 间隔。先数清这些不变量,再凭听感评价。
Steps、Hits、Rotation、Division 与 Voice 回答五个不同问题
Toussaint 用 E(k,n) 表示欧几里得节奏:k 是起音数,n 是二进制脉冲序列的长度;构造目标是让起音尽量均匀分布。这只是循环起音骨架,不规定鼓件、手序、力度、速度、Swing 或音乐风格。
| 控制项 | 它回答什么 | E(3,8) 的值 | 不要混入 |
|---|---|---|---|
Steps / pulses n | 循环走满多少个等长格? | 8 | 每格时值与小节显示 |
Hits / fills / onsets k | 多少格有起音? | 3 | 力度、概率与重复播放次数 |
Rotation r | 同一循环间隔怎样对齐第 1 格? | 参考版为 0 | 增加击打或改写间隔 |
| Division | 每格在时钟上有多长? | 本文取八分音符 | E(3,8) 的数学身份 |
| Voice / Pad | Pattern 送给哪个声音? | 先用一个短声音 | 起音位置本身 |
当软件用词不一致时,这个分层尤其重要。Native Instruments 的 Maschine 3.7 文档使用 Steps 与 Fills;Ableton 当前的 Euclidean MIDI Tool 则记录了 Steps、Division、各声部 Rotation,以及它自身的 Density 行为。不要预设所有 Density 都等于 k。每次改动后,都数一次真正输出的起音,并写下实际的 x/. 字符串。
打开生成器之前,先把 E(3,8) 搭成 x..x..x.
先写八个等长容器和三次起音:x x x . . . . .。给每个起音分一个休止,剩下两个休止:x. | x. | x. | ..。再把余下两个休止分别放进前两组:x.. | x.. | x.。合起来就是 x..x..x.。这是专门让本例可见的一种拆法,不是对通用 Bjorklund 或欧几里得算法的替代实现。
| 格位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 口数 | 1 | & | 2 | & | 3 | & | 4 | & |
| Pattern | x | . | . | x | . | . | x | . |
| 动作 | 击打 | 数拍 | 数拍 | 击打 | 数拍 | 数拍 | 击打 | 数拍 |
接着用数字验算。从第 1 格到第 4 格相隔三格,第 4 格到第 7 格相隔三格;第 7 格越过循环边界回到下一次第 1 格,相隔两格。因此循环间隔向量是 (3,3,2),而且 3 + 3 + 2 = 8。每次都要把绕回来的那段算进去。只从左读到第 8 格就停,会漏掉真正闭合循环的最后一段。
- 长度门:恰好八个等长格;Loop 没有暗中沿用十六格。
- 起音门:恰好三次起音,位于第 1、4、7 格。
- 间隔门:三个循环距离是某种旋转顺序的 3、3、2。
- 闭环门:第 8 格之后进入新的第 1 格,而不是多出第 9 格或截掉末尾休止。
如果音序器显示的是 4/4 拍十六个十六分音符格,同样的八格字符串只占两拍。可以为本文设成八格 Loop,也可以在一小节里重复两遍,写成 x..x..x.x..x..x.。没有同时写清 Division 与 Loop 长度前,不要把两种显示说成完全相同。
用 R0a → R1 → R0b 证明 Rotation 没有偷改别的参数
Rotation 会把每个起音沿循环移动相同格数。面对固定的底鼓、小节线或旋律,它可以明显改变乐句重心,但不能增加起音,也不能重写循环间隔。由于不同产品对正方向和零点的定义不一致,下面以完整字符串为准。
| 状态 | 完整 Pattern | 起音格 | 循环间隔 | 作用 |
|---|---|---|---|---|
R0a / r0 | x..x..x. | 1、4、7 | 3、3、2 | 参考 |
R1 / 右移 1 | .x..x..x | 2、5、8 | 3、3、2 | 移动与小节线的关系 |
R2 / 右移 2 | x.x..x.. | 1、3、6 | 2、3、3 | 同一循环距离,不同书写起点 |
R0b / r0 | x..x..x. | 1、4、7 | 3、3、2 | 回归证明 |
R0a 连跑四轮,R1 连跑四轮,再恢复 R0b 连跑四轮。每轮都必须有三条事件,并在八格后闭合。R1 只有在起音移到第 2、5、8 格、循环距离仍未改变时才通过;R0b 必须完整复现 R0a。若 Rotation 控件归零后没有恢复参考字符串,说明另一个参数、随机器、Apply 操作或 Loop 边界也一起变了。
Rotation 并不保证编曲里“听起来一样”。面对未旋转的第二声部,它会移动碰撞与重心。本文的不变量结论更窄:被旋转的声部保留相同起音数与循环距离。它在音乐上好不好用,是下一层听辨决定。
加入 E(2,8) 锚点声部,并提前写出每次碰撞
让两个声部共用同一套八格时钟。A 声部采用规则的欧几里得 Pattern E(2,8) = x...x...,在第 1、5 格起音;B 声部使用刚刚验过的 E(3,8)。把它们映射到两块相邻、声音清楚可分的 Pad。合奏前,先写下同击位置。
| 格位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| A · E(2,8) | x | . | . | . | x | . | . | . |
| B · E(3,8) r0 | x | . | . | x | . | . | x | . |
| r0 碰撞 | A+B | — | — | — | — | — | — | — |
| B · 右移 1 | . | x | . | . | x | . | . | x |
| r1 碰撞 | — | — | — | — | A+B | — | — | — |
r0 时,两声部都从第 1 格起音;只把 B 向右旋转一格后,唯一碰撞移到第 5 格。发生碰撞时,事件总数不会变成四条:A 每轮贡献两次起音,B 每轮贡献三次,因此 MIDI 计划共有五条声部事件,只是占用四个不同格位。要同时检查声部身份与被占用的格数。
先独奏 A 四轮,再独奏 B 四轮,最后合在一起。若两个独奏都通过、只有碰撞时某声部消失,欧几里得计数并不是第一处故障。依次检查是否录到了两条目标 MIDI、接收端是否有意 Choke 某声部、Pad 布局是否让同击手势不稳,以及音频路径是否削波。不要混层:合奏手势漏一击,不会改写纸面算法。
完成六阶段 Pad 练习,再拿掉视觉网格
- 说满八格:只念
1 & 2 & 3 & 4 &,先不击打。每个点号所在的格也要继续走拍。 - 只打 B:在一块 Pad 上击第 1、4、7 格,同时把所有格念出来。连跑四轮,每轮必须有三次可辨攻击。
- 验闭环:录四轮,检查从第 7 格起音经过第 8 格休止到下一轮第 1 格,是否形成跨两步的闭环间隔。
- 加入 A:让另一根手指或另一只手负责第 1、5 格。r0 开始前就预排第 1 格双 Pad 手势,不要撞上后才临时反应。
- 旋转再回归:r0 四轮、右移一格四轮、r0 再四轮。合奏位置会变,但 A 始终固定,B 每轮始终三击。
- 隐藏 Pattern:转开、调暗或关掉步进显示,执行同一条 R0a/R1/R0b。录完才重新打开网格,对照计划与实际声部事件。
| 轮次 | A 事件(计划 / 实测) | B 事件(计划 / 实测) | 碰撞(计划 / 实测) | 下一第 1 格干净? | 第一处失败 |
|---|---|---|---|---|---|
| R0a 第 1 轮 | 2 / ___ | 3 / ___ | 第 1 格 / ___ | 是 / 否 | ___ |
| R0a 第 4 轮 | 2 / ___ | 3 / ___ | 第 1 格 / ___ | 是 / 否 | ___ |
| R1 第 1 轮 | 2 / ___ | 3 / ___ | 第 5 格 / ___ | 是 / 否 | ___ |
| R1 第 4 轮 | 2 / ___ | 3 / ___ | 第 5 格 / ___ | 是 / 否 | ___ |
| R0b 第 4 轮 | 2 / ___ | 3 / ___ | 第 1 格 / ___ | 是 / 否 | ___ |
选择能从容完成的速度;本文不规定通用 BPM 或落点容差,提速也不是通过条件。完整通过必须同时满足声部事件数正确、碰撞位置符合计划、循环边界完整,以及 R0b 与 R0a 相同。隐藏网格后失败,就回到最后通过的一关,不要继续加入力度变化、概率、Swing 或第三声部。
给第一项失败的不变量命名
| 代码 | 证据 | 下一项单独检查 | 不要跳到的结论 |
|---|---|---|---|
COUNT | 目标声部在 n 格内不是 k 次起音 | 检查真实 Hits/Fills 控件、漏击、概率、Repeat 与生成结果 | Rotation 已正确改变节奏 |
GAP | B 有三击,但循环距离不是 3、3、2 | 写出八格字符串,重新计算包括绕回段在内的每个距离 | 八格里任意三击都是 E(3,8) |
START | 计数与间隔通过,但相对小节线的位置错误 | 检查 Rotation 方向、起点标记与 Clip Offset | Density 或分辨率必然错误 |
WRAP | 单轮通过,下一轮第 1 格却抢、拖、多击或漏击 | 检查 Loop 长度、时间选区、Division 与绕回音符 | 眼前七格正确就足够 |
COLLISION | 两个独奏通过,A+B 同击时才有事件消失或声音失真 | 依次比较计划事件、录到的 MIDI、接收端 choke/polyphony、手势与音频路径 | 欧几里得生成器删了一格 |
RETURN | 恢复 Rotation 后,R0b 没有复现 R0a | 逐项对照参数与破坏性 Apply/Randomize 操作 | 差异只由声部 B 造成 |
LABEL | 某产品控件行为不同于你预设的通用名称 | 查对应版本手册,再数实际渲染出的起音 | “Density”有统一行业定义 |
每次只改第一条失败记录所指向的变量。例如,事件数正确但起点关系错误,是 START,不是修改 Hits 的理由;纸面网格正确但双击手势失败,是 COLLISION 排查,也不是重画循环间隔的理由。
把不变量卡映射到具体工具,不要照搬菜单名
Ableton Live 12 手册记录了一个 Euclidean MIDI Tool:可同时生成最多四个声部、为每个声部指定音高或 Drum Rack Pad、独立 Rotation,并设置 Steps 与 Division。当前手册也说明,短于时间选区的 Pattern 可能重复或绕回。应用结果前先定义时间选区;若 Auto Apply 已开启,则在预览时就先定义,之后再数真实音符位置。不要只凭图形假定 Clip 边界。
Native Instruments 的 Maschine 3.7 支持页在 2026 年 10 月 18 日复核时称更新已经可用,并记录了 Steps、Fills、Rotate 与 Division。那是 Maschine 的具体实现,不能证明其他音序器采用相同的旋转正方向、把起音称作 Fills,或在选区边界写入完全相同的 MIDI。
论文给出的共同语言更窄:长度为 n 的循环序列里有 k 次起音,以 x 与 . 表示,并让起音尽量均匀分布。Toussaint 还明确提醒:这套算法不是对任何文化中的音乐家如何有意识创作时间线的模型。本文只把 E(3,8) 当作可核验的协调骨架。学习一种具名音乐传统,还需要回到该传统的音乐家、录音、分句、音色、动作和社会语境,不能把八个字符当成完整风格。
欧几里得节奏常见问题
E(3,8) 就是 3:2 复节奏吗?
不是。E(3,8) 是在一个声部的八个等长格里分布三次起音;3:2 复节奏则让“三等分”与“二等分”两条脉冲流在同一周期并行。即使都出现数字 3 和 2,它们回答的计数问题也不同。
x..x..x. 就自动等于 Tresillo、Reggaeton 或某种风格吗?
不是。论文指出同一骨架会出现在包括 Tresillo 表示在内的具名时间线中,但二进制网格没有携带文化、配器、发音、微时值、重音或合奏互动。本文只测试起音骨架与手动协调。
Rotation 会创造一个新节奏吗?
它保留循环距离,却改变相对第 1 格及所有未旋转声部的相位。数学上仍属于同一旋转家族;编曲中可能承担不同功能。写结论时要说明你谈的是哪一层。
为什么我的 Density 改的是重复次数,不是 Hits?
因为参数名属于具体产品。查看对应版本手册,再数可见或导出的起音。本文的 k 永远指 n 格内实测的起音数,不随 UI 名称改变。
现在可以加概率、力度重音或 Swing 了吗?
先让确定性的 R0a/R1/R0b 通过,再另存一个版本只加其中一项。概率会改变实际出现的事件数,力度会改变动态或音色,Swing 会改变 timing;它们都不属于本文用于验收的基础 E(k,n) 身份。
A 与 B 都产生准确的声部事件数;B 在 Rotation 前后一直保留 3–3–2 循环间隔;计划碰撞从第 1 格移到第 5 格;每个八格 Loop 都完整回到第 1 格;隐藏网格后 R0b 仍复现 R0a——全部通过即可停止。任一门禁失败,就保留最后通过的录音与完整 x/. 字符串。在第一处失败得到一个已命名原因和一次可逆修正前,不增加随机、第三声部或速度。
来源与访问日期
研究论文支持 E(k,n) 记法、二进制起音/休止表示、均匀分布、E(3,8)、循环间隔向量与文化创作过程边界;Ableton 与 Native Instruments 支持当前产品实例。四道门禁、R0a/R1/R0b、双声部碰撞卡、错误代码与停止规则不是厂商规范,而是本文基于资料所做的编辑综合。
- Godfried Toussaint — The Euclidean Algorithm Generates Traditional Musical Rhythms(访问:2026-10-18)
- Ableton — Live 12 手册:MIDI Tools / Euclidean(访问:2026-10-18)
- Native Instruments — What’s New in Maschine 3.7?(访问:2026-10-18)