迷你记谱法
引号里的节奏语言:序列、休止、分组、轮换、复合节拍、欧几里得节奏和随机。
双引号之间的一切都是迷你记谱法(mini-notation):一种紧凑的节奏写法。 同样的规则适用于鼓名、音名和数字。
序列与休止
用空格分开的各步平分一个周期。~(或 -)是休止。
s("bd ~ ~ bd ~ ~ sd ~")分组:[ ]
方括号把几步压进一步的位置。
s("bd [sd sd] bd [~ sd]")分组可以任意嵌套:[hh [hh hh]] 是一个八分音符加两个十六分音符。
s("hh [hh hh] hh [hh [hh hh]]")加快与放慢:* 和 /
*n 让一步在自己的位置里演奏 n 次;/n 把它拉长到 n 个周期,所以每 n 小节才响一次。
s("bd*2 sd, hh*8, cp/2")轮换:< >
尖括号每个周期只演奏其中一步,依次轮流。这是让模式逐小节变化最简单的办法。
note("<c3 a2 f2 g2>").s("sawtooth")和 * 结合,可以更快地走完这个列表:
note("<c3 e3 g3 b3>*4")和弦与叠加:,
逗号让它的各部分同时演奏。在分组里,它就构成一个和弦。
note("[c3,e3,g3] [a2,c3,e3] [f2,a2,c3] [g2,b2,d3]")延长与重复:@ ! _
@n 让一步的长度是其他步的 n 倍。!n 把一步重复 n 次,每个副本都是完整的一步。
_ 把前一步再延长一步。
note("c3@3 eb3 g3!2 bb3 _")复合节拍:{ }
花括号演奏长度不同、但步长相同的几层,于是它们彼此错开,过一阵又重新对齐。
%n 设定一个周期里放几步。
note("{c3 eb3 g3, c4 d4 eb4 f4 g4}%4")欧几里得节奏:(k,n)
x(k,n) 把 k 次击打尽量均匀地分布在 n 步里。很多传统节奏都是欧几里得节奏:
(3,8) 是 tresillo,(5,8) 是 cinquillo。第三个数字用来旋转这个模式。
s("bd(3,8), hh(5,8,2), sd(2,8,4)")随机:? 和 |
? 让一步有一半的概率不响(?0.2 是 20% 的概率)。| 在几个选项中随机挑一个。
随机是有种子的:在你修改代码之前,程序每次运行都会演奏同样的“随机”音符。
s("hh*16?, bd [sd|cp]")采样变体与数字范围::和 ..
name:n 选择某个声音的第 n 个变体(bd:3)。a .. b 从 a 数到 b。
n("0 .. 7").scale("C:major")迷你记谱法处处都是模式
任何接受数字的参数也接受带引号的模式,所以同样的语法可以控制速度、音量或滤波器:
s("hh*8").gain("0.9 0.4 0.6 0.4").fast("<1 2>")