和声与音阶
音名与八度、音阶级数、移调、和弦符号、和弦排列(voicing)和琶音。
音名与八度
音名由一个字母、可选的变音记号(# 升、b 降)和一个八度数字组成。c4 是 MIDI 60,
即中央 C;a4 是 69(440 Hz)。每个八度从 C 开始,所以 b3 就在 c4 的下面。
没有写八度的音名在第 3 个八度:note("c e g") 和 note("c3 e3 g3") 相同。
note("c e g b")TuttiDAW 的钢琴卷帘使用 Live 的命名,MIDI 60 叫 C3。代码和片段的标签差一个八度, 但音高是一样的。
音阶级数:n 和 scale
n("0 2 4") 写的是数字;.scale("C:minor") 把它们变成某个音阶里的音。0 级是主音,
1 级是音阶里的下一个音,依此类推。超出音阶的数字会继续进入下一个八度,负数则往下走。
n("0 1 2 3 4 5 6 7").scale("C:minor")除非你写明(C4:minor),主音都在第 3 个八度。音阶名包括 major、minor、dorian、
mixolydian、lydian、phrygian、blues 和 chromatic。主音和音阶名的每个单词都用
冒号连接:A:minor:pentatonic、C:harmonic:minor。在双引号里,空格表示新的一步,
所以 "C:harmonic minor" 不是一个音阶名。
n("0 2 4 <7 6>").scale("<D:dorian G:mixolydian>")因为音阶本身也是模式,用级数写的旋律会自动跟着和弦变化。
移动音符:add 和 transpose
.transpose(n) 按半音移动音符。.add(...) 给取值加数:对级数来说是在音阶里移动;
对 note 模式,要在里面写 note(...)。
note("c3 e3 g3 e3").transpose("<0 5 7 0>")n("0 2 4 2".add("<0 3>")).scale("A:minor")和弦符号:chord 和 voicing
chord("...") 接受 C、Am7、F^7、G7 或 Bbm9 这样的和弦符号。.voicing()
把每个符号变成具体的音,排列方式让和弦的最高音落在 c5 或略低于 c5 的位置。
chord("<C Am F G>").voicing()用 .anchor(...) 移动整个排列:和弦会改为排在那个音的下方。
chord("<Dm7 G7 C^7 A7>").anchor("g4").voicing()挑选和弦音:n 配合 chord
设定了和弦之后,n 按序号从低到高挑选排列中的音,得到一个跟着和弦走的琶音。
n("0 1 2 3 2 1").chord("<Cm7 Fm7 Bb7 Eb^7>").voicing()低音线:rootNotes
.rootNotes(八度) 在你指定的八度里演奏每个和弦的根音。
stack(
chord("<Am F C G>").voicing(),
chord("<Am F C G>").rootNotes(2)
)需要精确的音时
和弦排列跟随锚定音,而不是固定的形状。当你需要精确的音高,比如某个特定转位或重复的根音, 就把和弦写成音名的叠加。
note("<[a2,e3,a3,c4] [f2,c3,a3,c4] [c3,g3,c4,e4] [g2,d3,b3,d4]>")