"bd sd [hh hh]"
序列
空格依次触发,方括号在同一拍内细分。
Pattern Grammar
把 Strudel 语法按“时间、音高、变化、编排”拆开看,每条都能回到练习台实践。
~休止或留白[ ]拍内细分< >同时发声或轮换和声
(3,8)欧几里得节奏
Reference
"bd sd [hh hh]"
空格依次触发,方括号在同一拍内细分。
sound("bd*4")
星号把事件平均重复到当前循环长度。
gain("0.25 0.45")
用动态强弱改变 groove,不只靠增加音符。
note("c2 eb2 g2")
note 负责音高,sound 负责音色。
scale("C:minor")
用级数写旋律,再映射到音阶。
note("<c3 eb3 g3>")
尖括号表达同时发声或和声组。
.every(4, rev)
每隔固定小节改变一次,适合段落边界。
.sometimesBy(0.25, rev)
小概率变化制造现场感,但不破坏主循环。
.room(0.45).delay(0.25)
空间效果用于前后景和情绪,不应吞掉主拍。
stack( sound("bd").euclid(5, 8).gain(0.85),
sound("hh*8").swing(4).gain(0.28) )
euclid 用少量数字生成非均匀节奏,swing 让细分产生摇摆。
sound("hh*8") .degradeBy(0.25) .sometimesBy(0.35, x =>
x.speed("0.5"))
degradeBy 删除部分事件,sometimesBy 按概率改变片段。
note(saw.range(40, 52).segment(16)) .sound("sine")
.lpf(sine.range(400, 1800).slow(4))
saw 生成连续变化,segment 把它采样成可听的离散音符。
stack( note("0 2 4 7".scale("C:minor")) .sound("sawtooth")
.lpf(sine.range(350, 2200).slow(8)) .lpq(5), sound("bd ~ sd ~,
hh*8").gain(0.55) ).room(0.35).delay(0.125)
用 lpf、lpq、room 和 delay 同时控制明暗、共振和空间。
note("0 2 4 7".scale("C:minor")) .sound("triangle") .ply("<1
2 3>") .every(4, rev)
ply 重复单个事件,every 把反转放在固定段落边界。
stack( sound("bd*4").gain(0.8), sound("~ sd ~ sd").gain(0.65),
sound("hh*8") .pan("<0.2 0.8>") .rarely(x => x.rev())
)
rarely 适合制造偶发变化,pan 让细节在左右声道移动。
参考 Strudel 官方文档: Time Modifiers Random Modifiers Audio Effects