Strudelify

Ripples

Genesis

KeyE majorTempo62 bpm
0:00/0:00
// Ripples — Genesis
// 62 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 4, 4/4 at bar 5, 2/4 at bar 14, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 130 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(62/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B C@6 D@5 E F@4 G@5 H I@4 J K L@2 A B C@6 D@5 E F@4 G@5 H I@4 J K L@2 M N@8 O@2 P@6 Q@5 R@4 S@6 T@5 U@7 V@5 W X Y Z
  AA AB AC AD AE AF AG AH AI AJ@4
>`.pickRestart({
  A: "g#4@4 [e4,g#4]@4 ~@4 b4@4 e4@7 ~ f#4@4 d#4@4, b3@6 b3@9 ~, ~@4 [e4,g#4]@4 a#4@7 ~", // E
  B: "~@2 [f#4,a#4] ~@3 d#4@2 [f#4,a#4]@8, b3 [f#4,a#4] ~@2, ~@3 b3@5", // F#
  C: "[f#4@4 [e4,f#4]@4 [e4,f#4]@3 ~@5 e4@4 ~@4 b3@4 [f#4,g#4]@13 ~@3 e4@3 ~@7 d#4@4 b3@2 [g#3,b3,d#4,f#4]@18 ~@2 [d4,f4]@4 [d4,f4]@4 [d4,f4]@3 ~ [e4,g4]@3 ~ d4@7 ~@21 [g#3,g#4]@2 ~@2 [g#3,b3,e4]@14 ~@2 [d4,f4]@4 [d4,f4]@4 [d4,f4]@3 ~ [e4,g4]@3 ~ d4@6 ~@2 d4@4 ~@12 g4@3 ~ [c4,f#4]@4, b3@11 ~ a4@16 ~@80 e4@10 e4@9 ~@33 f4@14 ~@6 c4@7 ~@5, ~@12 b3@12 ~@4 b3@19 ~ [g#3,b3,f#4]@11 ~@21 [d3,a3,b3]@11 ~ [d3,a3,b3]@19 ~ d3@14 d3@16 ~@2 [d3,a3,b3]@11 ~ [d3,a3,b3]@19 ~@17, ~@16 g#4@12 ~@14 f#4@5 ~@49 f4@15 ~@3 g#4@6 b3@7 ~@45 e4@15 ~@5, ~@20 e4@8 ~@76 d4@7 ~@5 b3@2 g#3@6 ~@52 g3@8 g3@7 ~]/6", // Esus2 F#sus2 G#m7 Dm Em G# E Dm …
  D: "[d3@4 a2@4 g4@4 g4@3 ~@9 g4@7 ~ [g2,g4,b4]@15 ~@29 d#4@4 ~@24 b3@6 ~@2 [a3,f#4]@2 [a3,f#4]@2 ~@12 g#4@2 ~@2 [b2,g#4]@2 ~@2 [e3,g#3]@2 b3 ~ [e3,f#3,a3]@3 ~ [e3,g#3,b3]@7 ~@5 [e3,g#3]@2 e4 ~, d4@8 f#2@39 ~ [e2,e3]@18 e4@2 b3@2 e4@2 f#4@8 [b2,d#3,f#3,a#3]@30 ~@2 e2@14 a4@4 ~@4 e4@4 ~@2 g#4@14 f#4@4 ~@2, ~@8 [a3,d4]@7 ~ g2@16 ~@20 g#4@4 g#4@25 ~ f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@8 ~@6 [a3,f#4]@12 e2@7 ~@25, ~@18 d4@13 d4@16 ~@3 e4@4 e4@4 e4@2 b3@2 e4@2 a#4@17 ~@3 b3@8 b3@8 b3@4 ~@10 b2@4 b2@4 b2@8 ~@30, ~@20 g4@2 b4@10 ~@16 g#4@4 b3@8 b4@21 ~@7 a#4@8 a#4@14 ~@6 e3@4 e3@4 e3@6 ~@22 [e3,f#3,a3]@6 ~@2]/5", // G D E F#m7 E Bmaj7 D5 D …
  E: "[g#3,d#4]@4 ~@6 b3@2 d#4@3 ~@13 [b3,d#5]@2 d#4 ~, f#4@4 g#3@3 ~ b4@7 ~, ~@2 b3@3 ~ b3@3 d#4 [b3,d#5]@3 d#4@2 ~, ~@3 d#4@2 ~ f#4@9 ~, ~@8 g#3@3 d#4 [g#3,f#5]@3 ~", // G#5 B G#7
  F: "[~@4 [b3,f4]@2 ~@6 b3@2 d4 ~@5 b3@3 ~@5 b3@3 ~ g#3@4 b3@2 ~@2 g#3@2 g#4 ~ g#4@2 ~@8 e5@2 ~@4 [b3,g#4]@2 b4 ~ [c4,a4]@2 ~@10 [c4,a4,c5]@3 ~ [a3,f#4]@2 ~@2 [a3,f#4,b4]@2 ~@2 [a3,f#4,a4]@2 ~@2 a3@4 ~@12 [g3,g4]@2 ~@14 g4@3 ~, d3@31 ~ d3@26 b4@4 ~@2 c5@12 ~@4 c5@7 ~@5 b4@10 b4@4 b4@4 b4@4 b4@4 b4@4 b4@5 ~, a3@7 ~ [a3,f4]@7 ~ [a3,f4]@8 [a3,d4]@7 ~@13 b3@4 g#3@2 e4@12 ~@2 d#3@15 ~ d#3@15 ~ e3@15 ~ [e3,b3]@15 ~, f4@4 ~@10 g4@9 ~@15 b4@4 ~@6 g#4@4 b3@4 [g#3,e5]@6 g#3@4 [a3,f#4]@4 [a3,f#4]@4 [a3,f#4]@5 ~@3 [f#3,d#4]@4 [f#3,d#4]@4 [f#3,d#4]@4 ~@10 e5@7 ~ e5@8 [g3,e5]@7 ~, ~ d4@2 d4@2 d4@2 ~@7 e4@5 ~@4 f#4@8 ~@3 [c4,a4]@2 [c4,a4]@2 ~@8 f#4 ~@3 g4@4 ~@4 g4@4 ~@2]/4", // Bdim E F D B7 D G Dm …
  G: "[[d#4,a4]@4 f#4@2 ~@6 a3@2 c4@2 ~@4 g4@2 g4@4 ~@18 [e4,e5]@2 ~@10 f#4@4 g4@2 ~@14 [a3,d4]@2 ~@6 a3@2 ~@6 d4@2 ~@12 b3@2 f#4@2 ~@6 b4@2 ~@10 [g#4,c#5]@4 [g#4,c#5]@4 [g#4,c#5]@3 ~ g#4@8 ~@4 c#5@4 [c#5,f#5]@2 g#4 ~, f#3@15 ~ [f#3,d#4]@15 ~ g3@15 ~ [g3,c4,e5]@14 ~@2 c3@30 ~@2 [b2,a3]@15 ~ [b2,a3]@7 ~ [b2,a3,d#5]@8 g#5@8 e5@23 ~, c4@10 c4@4 ~@18 c4@4 e5@2 c5@2 c4@7 ~@15 [d4,f#4]@4 f#4@13 ~ f#4@14 f#4@10 ~@4 b4@6 a4@4 a4@19 ~@11 g#4@10 ~@2, ~@6 a4@14 ~@6 f#4@5 ~@3 c5@2 e4@4 e5@2 c5@4 c5@16 ~@4 d4@8 f#3@4 f#3@4 f#3@4 f#3@8 ~@6 e4@4 [e4,f#4]@5 ~ e4@4 ~@8 b4@15 ~@3 c#5@12 ~@8, ~@6 d#4@9 ~@13 g4@19 ~@7 e4@8 ~@2 a3@8 a3@4 ~@4 a3@4 ~@4 [a3,e4]@7 ~@3 b3@4 b3@4 ~@18 f#5@13 ~@15 g#5@7 ~]/5", // D#dim E D5 C#5 F#5 D#m C B7 …
  H: "~@14 b4 ~, b4@3 b4@2 b4@2 ~, ~@2 f#5@2 f#5@4 f#5@4 f#5@3 ~, ~@3 d#5@2 d#5@2 d#5@2 d#5@2 d#5@2 d#5@2 ~",
  I: "[[f#4,d#5,f#5]@4 ~@4 b4@4 g#4@8 ~@4 [b4,f#5]@4 ~@36 [a4,c#5,g#5]@4 [a4,c#5]@4 [a4,c#5]@3 ~ a4@8 a4@4 ~@20 b4@2 ~@14 a#4@3 ~, ~@4 [f#4,d#5,f#5]@8 b4@12 ~@4 e5@30 b4@14 e5@23 ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@5 ~, ~@20 g#4@10 ~@6 f#5@39 ~@17 f#5@35 ~, ~@38 d5@4 d5@6 c#5@2 d5@25 ~ c#5@12 [a4,c#5,g#5]@7 ~ b4@4 b4@4 b4@4 ~@4 a#4@4 a#4@4 a#4@4 ~@4, ~@40 c#5@4 c#5@2 b4@6 c#5@2 b4@2 a4@4 c#5@2 e5@6 g#5@7 ~@53]/4", // D#m B5 Amaj7 A D#m Amaj7
  J: "[g#4,c#5]@2 [g#4,c#5]@2 [g#4,c#5]@2 g#4@4 g#4@2 c#5@2 ~ g#4, g#5 e5@3, ~@3 c#5@3 [g#4,g#5]@2, ~@7 [c#5,f#5]", // C#5 G# F#5
  K: "b4@4 ~@8 d#5@2 f#5 ~@13 [d#5,g#5]@3 ~, ~@4 d#5@8 ~@4 a5@8 a5@7 ~, ~@3 b4@2 b4@2 ~ d#5@2 g#5@4 ~@2, ~@8 a4@6 ~@4 b4@4 b4@4 b4@5 ~, ~@5 d#5!2 ~", // G#5
  L: "[~@6 e5 ~@7 e5 ~@3 e5 ~@5 [g#4,e5]@7 ~, g#5@2 g#5@2 g#5@3 ~ c#5@3 b4@4 b4@4 b4@3 e5@2 ~@8, ~@2 a5@12 ~@4 f#5@6 c#5@6 ~@2 c#5@7 ~ c#5@22 ~@2, ~@6 f#5@4 f#5@4 b4@6 e5@6 f#5@4 ~@4 f#5@5 ~@3 f#5@20 ~@2, ~@23 b4@8 ~]/2", // C#m
  M: "~@31 g#2, g#3@3 g#2@3 c#3@3 e3@3 g#3@3 g#2@3 c#3@3 e3@3 g#3@3 g#2@3 c#3@2, ~ e3@3 g#3@3 g#2@3 c#3@3 e3@3 g#3@3 g#2@3 c#3@3 e3@3 g#3@4, ~@2 c#3@3 e3@3 g#3@3 g#2@3 c#3@3 e3@3 g#3@3 g#2@3 c#3@3 e3@3",
  N: "[~@255 a2, g#3@3 g#2@3 c#3@3 e3@3 g#3@3 g#2@3 c#3@3 e3@3 g#3@3 g#2@3 c#3@6 f#3@4 f#3@4 f#3@4 g#3 e3 c#3@3 e3@4 e3@4 e3@5 b2@3 d3@4 d3@4 d3@5 c#3@3 e3@4 e3@4 e3@3 g#3@3 a#2@3 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@3 e3@4 e3@4 e3@5 b2@3 d3@4 d3@4 d3@5 c#3@3 e3@4 e3@4 e3@5 b2@3 d3@4 d3@4 d3@5 c#3@3 e3@4 e3@4 e3@3 g#3@3 a#2@3 c#3@4 c#3@4 c#3@3 e3@3 a3@4 f#3 d3 b2@3 d3@5 c#3@3 e3@4 e3@4 e3@3, ~ e3@3 g#3@3 g#2@3 c#3@3 e3@3 g#3@3 g#2@3 c#3@3 e3@3 g#3@4 f#3 d3 b2@3 d3@4 d3@4 d3@6 g#2@3 c#3@4 c#3@4 c#3@6 f#3@4 f#3@4 f#3@4 a3 e3@2 a2@3 c#3@4 c#3@4 c#3@3 e3@3 g#3@4 g#3@4 g#3@4 g#3@4 g#3@4 g#3@4 g#3@4 g#3@3 g#2@3 c#3@4 c#3@4 c#3@6 f#3@4 f#3@4 f#3@4 g#3 e3@2 g#2@3 c#3@4 c#3@4 c#3@6 f#3@4 f#3@4 f#3@4 a3 e3@2 a2@3 c#3@4 c#3@4 c#3@3 e3@3 g#3@4 g#3@4 g#3@6 c#3@3 e3@6 f#2@3 b2@6 a3@4 a3@4 a3@4, ~@2 c#3@3 e3@3 g#3@3 g#2@3 c#3@3 e3@3 g#3@3 g#2@3 c#3@3 e3@6 f#2@3 b2@4 b2@4 b2@6 g#3@4 g#3@4 g#3@4 f#3 d3@2 f#2@3 b2@4 b2@4 b2@6 a3@4 a3@4 a3@6 c#3@3 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@3 g#3@4 g#3@4 g#3@4 f#3 d3@2 f#2@3 b2@4 b2@4 b2@6 g#3@4 g#3@4 g#3@4 f#3 d3@2 f#2@3 b2@4 b2@4 b2@6 a3@4 a3@4 a3@6 c#3@3 e3@4 e3@4 e3@3 a3@3 a2@3 c#3@6 f#3@4 a3 e3@2 a2@3 c#3@4 c#3@4 c#3@2, ~@31 g#2@8 f#2@4 f#2@4 f#2@8 g#2@4 g#2@4 g#2@8 f#2@4 f#2@4 f#2@8 a2@4 a2@4 a2@8 a#2@4 a#2@4 a#2@4 a#2@4 a#2@4 a#2@4 a#2@8 g#2@4 g#2@4 g#2@8 f#2@4 f#2@4 f#2@8 g#2@4 g#2@4 g#2@8 f#2@4 f#2@4 f#2@8 a2@4 a2@4 a2@8 a#2@4 a#2@4 a#2@8 a2@8 f#2@8 a2@4 a2@4 ~]/8",
  O: "[~@63 b2, a3@3 a2@3 c#3@3 e3@3 a3@4 g3 d#3 a#2@3 d#3@4 d#3@4 d#3@5 c#3@3 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@3, ~ e3@3 a3@3 a2@3 c#3@3 e3@6 g2@3 a#2@4 a#2@4 a#2@6 g#3@4 g#3@4 g#3@4 g#3@4 g#3@4 g#3@4 g#3@4, ~@2 c#3@3 e3@3 a3@3 a2@3 c#3@6 g3@4 g3@4 g3@4 g#3 e3@2 b2@3 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@2, ~@15 a2@8 g2@4 g2@4 g2@8 b2@4 b2@4 b2@4 b2@4 b2@4 b2@4 ~]/2",
  P: "[~@95 b2, g#3@3 b2@3 c#3@3 e3@3 g#3@6 c#3@3 e3@4 e3@4 e3@3 g#3 e3@3 g#3@4 g#3@4 g#3@6 b2@4 b2@4 b2@4 b2@3 e3@4 e3@4 e3@4 e3@3 e3@4 e3@4 e3@4 e3@5 e3@3 g#3@4 g#3@4 g#3@6 b2@4 b2@4 b2@4 b2@3 e3@4 e3@4 e3@4 e3@3 e3@4 e3@4 e3@4 e3@5 e3@3 g#3@5 d#3@3 g3@6 b2@4 b2@4 b2@4 ~@2, ~ e3@3 g#3@3 b2@3 c#3@3 e3@3 a3@3 a2@3 c#3@4 c#3@4 c#3@7 e3@4 e3@4 e3@8 ~@11 g#3@4 g#3@4 g#3@4 g#3@6 a2@4 a2@4 a2@4 a2@8 ~@10 f#3@4 f#3@4 f#3@4 f#3@6 b2@4 b2@4 b2@4 b2@8 ~@10 g#3@2 b2@4 b2@8 ~@2 g#3@4 g#3@4 g#3@4 g#3@4, ~@2 c#3@3 e3@3 g#3@3 b2@3 c#3@3 e3@3 a3@4 a3@4 a3@6 b2@4 b2@4 b2@4 b2@3 d#3@4 d#3@4 d#3@4 d#3@8 ~@12 c#3@4 c#3@4 c#3@4 c#3@8 e3@4 e3@4 e3@8 ~@11 g#3@4 g#3@4 g#3@4 g#3@6 a2@4 a2@4 a2@4 a2@8 ~@2 g3@2 a#2@4 a#2@8 ~@10, ~@15 b2@8 a2@4 a2@4 a2@8 ~@9 f#3@4 f#3@4 f#3@4 f#3@6 b2@4 b2@4 b2@4 b2@8 ~@10 g#3@2 b2@4 b2@4 b2@4 b2@3 d#3@4 d#3@4 d#3@4 d#3@8 ~@12 c#3@4 c#3@4 c#3@4 c#3@8 e3@8 d#3@4 d#3@4 d#3@4 d#3@4 d#3@3]/6",
  Q: "[~@79 b3, g#3@4 g#3@4 g#3@4 g#3@5 d3@3 f#3@4 f#3@4 f#3@5 e3@3 g#3@4 g#3@4 g#3@5 d3@3 f#3@4 f#3@4 f#3@5 d4@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4, ~ e3@4 e3@4 e3@4 e3@8 d3@4 d3@4 d3@8 e3@4 e3@4 e3@8 d3@4 d3@4 d3@8 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@3, ~ c#3@2 c#3@2 c#3@2 c#3@4 ~@5 g#3 c#3@2 c#3@2 c#3@2 c#3@4 ~@5 f#4 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 ~, ~@8 f#3 b2@2 b2@2 b2@2 b2@4 ~@5 f#3 b2@2 b2@2 b2@2 b2@4 ~@45]/5",
  R: "[~@127 a#2, f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@5 e3@3 g#3@4 g#3@4 g#3@4 f#3 d3 b2@3 d3@4 d3@4 d3@5 c#3@3 e3@4 e3@4 e3@5 b2@3 d3@4 d3@4 d3@5 c#3@3 e3@4 e3@4 e3@3 g#3@3 a#2@3 c#3@4 c#3@4 c#3@2, ~ d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@6 g#2@4 g#2@4 g#2@4 g#2@7 b2@4 b2@4 b2@6 g#3@4 g#3@4 g#3@4 f#3 d3@2 f#2@3 b2@4 b2@4 b2@6 a3@4 a3@4 a3@6 c#3@3 e3@4 e3@4 e3@3, ~@2 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@7 e3@4 e3@4 e3@6 f#2@4 f#2@4 f#2@4 f#2@7 c#3@4 c#3@4 c#3@6 f#3@4 f#3@4 f#3@4 a3 e3@2 a2@3 c#3@4 c#3@4 c#3@3 e3@3 g#3@4 g#3@4 g#3@4, ~@32 g#3@2 c#3@4 c#3@4 c#3@4 c#3@6 f#3@4 f#3@4 f#3@4 g#3 e3@2 g#2@4 g#2@4 g#2@4 g#2@8 f#2@4 f#2@4 f#2@8 a2@4 a2@4 a2@8 a#2@4 a#2@4 ~]/4",
  S: "[~@191 b2, g#3@3 a#2@3 c#3@3 e3@3 g#3@3 a#2@6 e3@4 e3@4 e3@5 b2@3 d3@4 d3@4 d3@5 c#3@3 e3@4 e3@4 e3@5 b2@3 d3@4 d3@4 d3@5 c#3@3 e3@4 e3@4 e3@3 g#3@3 a#2@3 c#3@4 c#3@4 c#3@3 e3@3 a3@4 f#3 d3 b2@3 d3@5 c#3@3 e3@4 e3@4 e3@4 e3@4 e3@4 e3@4 e3@5 a#2@3 d#3@4 d#3@4 d#3@5 c#3@3 e3@4 e3@4 e3@3, ~ e3@3 g#3@3 a#2@3 c#3@3 e3@3 g#3@3 g#2@4 g#2@4 g#2@4 g#2@7 b2@4 b2@4 b2@6 g#3@4 g#3@4 g#3@4 f#3 d3@2 f#2@3 b2@4 b2@4 b2@6 a3@4 a3@4 a3@6 c#3@3 e3@4 e3@4 e3@3 a3@3 a2@3 c#3@6 f#3@4 a3 e3@2 a2@3 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@6 g3@4 g3@4 g3@4 g#3 e3@2 b2@3 c#3@4 c#3@4 c#3@2, ~@2 c#3@3 e3@3 g#3@3 a#2@3 c#3@3 e3@3 g#3@4 g#3@4 g#3@4 f#3 d3@2 f#2@4 f#2@4 f#2@4 f#2@7 c#3@4 c#3@4 c#3@6 f#3@4 f#3@4 f#3@4 a3 e3@2 a2@3 c#3@4 c#3@4 c#3@3 e3@3 g#3@4 g#3@4 g#3@6 c#3@3 e3@6 f#2@3 b2@6 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 a3@4 g3 d#3@2 g2@3 a#2@4 a#2@4 a#2@6 g#3@4 g#3@4 g#3@4, ~@18 c#3@4 c#3@4 c#3@4 c#3@6 f#3@4 f#3@4 f#3@4 g#3 e3@2 g#2@4 g#2@4 g#2@4 g#2@8 f#2@4 f#2@4 f#2@8 a2@4 a2@4 a2@8 a#2@4 a#2@4 a#2@8 a2@8 f#2@8 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@8 g2@4 g2@4 g2@8 b2@4 b2@4 ~]/6",
  T: "[~@79 b2, g#3@3 b2@3 c#3@3 e3@3 g#3@3 b2@3 c#3@3 e3@3 g#3@3 b2@3 c#3@3 e3@3 a3@4 a3@4 a3@5 e3@3 g#3@4 g#3@4 g#3@6 b2@4 b2@4 b2@4 b2@3 e3@4 e3@4 e3@4 e3@3 e3@4 e3@4 e3@4 e3@5 e3@3 g#3@4 g#3@4 g#3@6 b2@4 b2@4 b2@4 b2@3 e3@4 e3@4 e3@4 e3@3, ~ e3@3 g#3@3 b2@3 c#3@3 e3@3 g#3@3 b2@3 c#3@3 e3@3 g#3@6 c#3@3 e3@4 e3@4 e3@3 g#3@2 b2@3 e3@4 e3@4 e3@8 ~@11 g#3@4 g#3@4 g#3@4 g#3@6 a2@4 a2@4 a2@4 a2@8 ~@10 f#3@4 f#3@4 f#3@4 f#3@6 b2@4 b2@4 b2@4 ~@2, ~@2 c#3@3 e3@3 g#3@3 b2@3 c#3@3 e3@3 g#3@3 b2@3 c#3@3 e3@3 a3@3 a2@3 c#3@4 c#3@4 c#3@8 b2@4 b2@4 b2@3 d#3@4 d#3@4 d#3@4 d#3@8 ~@12 c#3@4 c#3@4 c#3@4 c#3@8 e3@4 e3@4 e3@8 ~@11 g#3@4 g#3@4 g#3@4 g#3@4, ~@31 b2@8 a2@4 a2@4 a2@8 ~@9 f#3@4 f#3@4 f#3@4 f#3@6 b2@4 b2@4 b2@4 b2@8 ~@10 g#3@2 b2@4 b2@4 b2@4 b2@3 d#3@4 d#3@4 d#3@4 d#3@8 ~@11]/5",
  U: "[~@111 b3, e3@4 e3@4 e3@4 e3@4 g#3@2 b2@4 b2@6 g3@6 b2@4 b2@4 b2@4 b2@6 g#3@4 g#3@4 g#3@5 d3@3 f#3@4 f#3@4 f#3@5 e3@3 g#3@4 g#3@4 g#3@5 d3@3 f#3@4 f#3@4 f#3@5 d4@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4, ~ c#3@4 c#3@4 c#3@4 c#3@7 g#3@5 d#3@4 d#3@4 d#3@4 d#3@4 d#3@4 d#3@8 ~@11 f#3@2 b2@4 b2@4 b2@4 b2@8 ~@10 f#3@2 b2@4 b2@4 b2@4 b2@8 ~@106, ~@2 a2@4 a2@4 a2@4 a2@8 ~@2 g3@2 a#2@4 a#2@8 ~@11 e3@4 e3@4 e3@4 e3@8 d3@4 d3@4 d3@8 e3@4 e3@4 e3@8 d3@4 d3@4 d3@8 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@3, ~@17 e3@4 e3@8 ~@3 g#3@4 g#3@4 g#3@4 g#3@4 g#3@2 c#3@4 c#3@4 c#3@4 c#3@8 ~@10 g#3@2 c#3@4 c#3@4 c#3@4 c#3@8 ~@10 f#4@2 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 b3@4 ~@2]/7",
  V: "[~@128 [a2,a3]@8 a3@4 ~@8 a3@4 a3@4 [a3,e4]@3 ~, f#4@4 f#4@4 f#4@4 f#4@6 a4@4 a4@4 a4@4 a4@6 f#5@4 f#5@4 f#5@6 g#4@3 b4@4 b4@4 b4@3 e5@4 e5@4 e5@4 e5@4 e5@2 a4@4 a4@4 a4@4 a4@6 f#5@4 f#5@4 f#5@4 f#5@2 a#4@4 a#4@4 a#4@4 a#4@2 [a1,g#4]@8 [a2,e4]@4 [a3,c#4]@4 a1@8 [a2,g#4]@7 ~, ~ d4@4 d4@4 d4@4 d4@6 e4@4 e4@4 e4@4 e4@6 d#5@4 d#5@4 d#5@3 d#5@3 e4@3 g#4@4 g#4@4 g#4@3 b4@4 b4@4 b4@4 b4@6 e4@4 e4@4 e4@4 e4@6 d#5@4 d#5@4 d#5@6 f#4@4 f#4@4 f#4@4 f#4@32 ~, ~@2 b3@4 b3@4 b3@6 e5@4 e5@4 e5@4 e5@4 f#5 d#5 b4@4 b4@4 b4@4 b4@3 b4@3 d#5@4 d#5@4 d#5@6 g#4@4 g#4@4 g#4@4 g#4@6 e5@4 e5@4 e5@4 f#5 d#5 b4@4 b4@4 b4@4 b4@6 f#5@4 f#5@4 f#5@35 ~, ~@17 c#5@4 c#5@4 c#5@4 c#5@6 f#4@4 f#4@4 f#4@4 f#4@8 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@2 c#5@4 c#5@4 c#5@4 c#5@6 f#4@4 f#4@4 f#4@4 f#4@2 c#5@4 c#5@4 c#5@4 c#5@34 ~]/5", // A A5 Amaj7 A5 A Amaj7
  W: "a2@4 a2@3 ~@3 b3 ~@3 b3@2, [b3,f#4]@11 f#4@5, [a1,d#4]@7 [d#4,b4]@9, ~ a1, ~@8 a2@3 b3 a2@4", // B5 Adim G#m
  X: "e3@4 ~@2 e4 ~ e3@3 ~ e3@3 ~, b3@15 ~, [e2,g#4]@7 b4@4 [b4,e5]@4 ~, e4@6 ~ [e4,g#4]@8 ~, ~@4 e3@4 e2@7 ~", // E E5 E
  Y: "d3@8 d3@4 e4@2 ~@6 e4@2 ~@2 d3@7 ~, [d2,d4,g#4,b4]@14 [g#4,d5]@17 ~, ~@14 e4@6 ~@2 [e4,b4]@9 ~, ~@16 d2@15 ~, ~@2 d3 ~", // G#dim E5
  Z: "[f#2,a3,e4]@4 a3@2 ~@6 [f#2,f#4]@2 a3 ~, f#4@6 a3@2 f#1@7 ~, f#1@6 c#4@9 ~, c#4@2 f#2@3 a3@2 ~, ~@4 e4@11 ~", // F#m7 F#
  AA: "f#2@4 ~@10 a#3@2 ~@12 a#3@3 ~, [f#1,f#4]@10 f#4@2 f#1@12 f#1@7 ~, [b3,c#4]@6 b3@25 ~, ~@4 f#2@12 [f#2,c#4,f#4]@15 ~, ~@2 c#4@2 a#3@3 ~", // F# Bsus2 F#5
  AB: "[a2,a3]@4 a3@2 ~@4 a3@2 [a2,a3,e4]@2 [a3,c#4] ~, g#4@15 ~, a1@6 a3@2 a1@7 ~, ~ [a2,e4]@2 ~, ~@3 c#4@4 ~", // A A5 A A5
  AC: "a2@8 ~@4 d#4@2 ~@2 a2@6 ~@2 a2@7 ~, b3@31 ~, a1@16 a1@15 ~, d#4@12 ~@2 [d#4,b4]@17 ~, ~@8 a2@8 ~@6 [f#4,d#5]@9 ~", // G#m D#m
  AD: "e3@4 ~@2 e4 ~@3 b3 ~ e3@3 ~, b3@2 e3 ~, [e2,g#4]@7 g#4@2 e4@2 [b3,e4,g#4]@4 ~, e4@6 ~ b4@8 ~, ~@4 e3@3 e4 e2@7 ~", // E
  AE: "d3@8 ~@4 e4@2 ~@6 e4@2 [e4,e5]@9 ~, [d4,b4]@31 ~, [d2,g#4]@14 [g#4,d5]@17 ~, ~@4 d3@3 e4@3 ~@6, ~@16 [d2,d3]@15 ~", // E G Ddim G#dim D
  AF: "f#3@2 ~@10 f#4@2 a3 ~, f#2@4 a3@3 ~, [a3,c#4,e4,f#4]@4 [c#4,e4]@11 ~, ~@2 f#3@2 a3@2 f#3@9 ~, ~@4 f#4@6 f#2@5 ~", // F#m7 C#m
  AG: "f#2@2 ~@5 c#4 [f#2,a#3]@2 ~@4 f#1@2, [f#1,f#4]@5 f#4@3 ~@4 c#4@4, [b3,c#4]@3 b3@5 ~@3 a#3@5, ~ f#2@3 ~ f#2@3, ~@4 c#4@2 f#1@2 [f#1,f#4]@5 f#4@3", // F# Bsus2 F#
  AH: "[a2,a3]@8 a3@4 ~@8 a3@4 a3@4 [a3,e4]@3 ~, g#4@12 a3@4 a1@15 ~, a1@12 c#4@19 ~, [c#4,e4] ~@7 e4@20 ~@4, ~@8 a2@16 [a2,g#4]@7 ~", // A A5 C#m Amaj7
  AI: "a2@8 a2@4 b3@2 ~@6 b3@4 [a2,b3,a4]@7 ~, [a1,b3,d#4,f#4]@14 g#4@17 ~, ~@7 b3@3 ~@6, ~@16 a1@15 ~, ~@2 a2 ~", // Asus2 B7
  AJ: "[~@3 e4@4 ~, e4@2 e4@3 f#4@3 c#4@3 b3@3 e4@3 f#4@3 c#4@32 ~@12, ~ f#4@3 c#4@3 b3@3 e4@3 f#4@3 c#4@3 b3@3 e4@2 ~@40, ~@3 b3@3 e4@3 f#4@3 c#4@3 b3@3 e4@3 f#4@32 ~@11, ~@23 b3@32 ~@9]/4",
})).s("gm_piano").gain(0.4)

// bass · synth bass 1 · "BASS"
const bass = note(`<
  ~@7 A B@5 C D@2 E F G H I J K@2 F L M N K O P@2 ~@7 A B@5 C D@2 E F G H I J K@2 F L M N K O Q@2 ~@4 R S@2 T U V W X Y
  Z AA Y AB AC@2 AD@3 AE S@2 T AF AG AH AI AJ@2 AK S AL AM AN AO AP@7 AQ@2 AR K@2 F L M N K@2 F L M N K O AS@3 ~
>`.pickRestart({
  A: "~ g2", B: "[d2@4 a1@4 f#1@8 g1@32 e1@31 ~ b1@32 e2@47 ~]/5", C: "g#2@31 ~", D: "d2@31 ~", E: "d#2@31 ~",
  F: "e2@31 ~", G: "f#2@31 ~", H: "g1", I: "c2@15 ~", J: "a1 b1", K: "a1@15 ~", L: "d2@15 ~", M: "f#1@15 ~",
  N: "f#1@7 ~ f#1@7 ~ f#1@14 ~@2", O: "a1@31 ~", P: "[e1@3 ~]/2", Q: "e1/2", R: "g#2 e2 c#2@2", S: "c#2 b1",
  T: "e2@2 g#2 e2", U: "c#2 b1 a1@2", V: "b1 c#2 d#2@2", W: "c#2 g#2", X: "c#2", Y: "b1 a1", Z: "g#1 f#1", AA: "e2 d#2",
  AB: "e2 d#2 d#2@2", AC: "g#1", AD: "b1@7 f#2", AE: "b1@7 a2", AF: "c#2!2", AG: "b1 c#2", AH: "b1 e2",
  AI: "g#2 e2 c#2 b1", AJ: "[a1@2 b1 c#2@3 c#2@2]/2", AK: "g#2 c#2", AL: "a1 g#1", AM: "f#1 e2", AN: "d#2 b1",
  AO: "a1@2 e2 d#2", AP: "[d#2@4 g#1@8 g#1@8 b1@7 f#2 b1@7 f#2 b1@7 f#2 b1@7 a2 e2@4]/7", AQ: "[~@3 b2 e2@8 f#2@4]/2",
  AR: "f#2!2", AS: "[e2@5 ~]/3",
})).s("gm_synth_bass_1").gain(0.3)

// chords · pad warm · "PAD"
const pad_warm = note(`<
  ~@9 A@3 B C D E F G H I J K L M N O P Q L M R@2 ~@9 A@3 B C D E F G H I J K L M N O P Q L M S@2 ~@44 T U V W X@2 Y@2
  Z@2 AA@6 AB@2 AC ~@3
>`.pickRestart({
  A: "[~@16 [b3,e4,g#4]@31 ~ [b3,d#4,f#4,a#4]@31 ~ [b3,e4,f#4,a4]@15 ~]/3", // E Bmaj7 Bsus4
  B: "[b3,e4,g#4]@7 ~ [a3,c#4,e4]@7 ~ [b3,e4,g#4]@7 ~ [a3,c#4,e4]@7 ~", C: "[b3,d#4,f#4,g#4]@31 ~",
  D: "[a3,d4,f4]@31 ~", E: "[b3,e4,g#4]@31 ~", F: "[c4,d#4,f#4,a4]", G: "[b3,e4,g4]", H: "[a3,c4,d#4,f#4]",
  I: "[c4,e4,g4]", J: "[d4,f#4,a4]", K: "e4 d#4, [b3,f#4,a4]", L: "[a3,c#4,e4,g#4]", M: "[b3,d#4,f#4]",
  N: "[b3,d#4,e4,g#4]", O: "[b3,d4,e4,g#4]", P: "[a3,c#4,e4,f#4]", Q: "[b3,c#4,f#4] [a#3,c#4,f#4]",
  R: "[[b3,e4,g#4]@7 ~]/2", S: "[b3,e4,g#4]/2", T: "~ [e2,e3,a4,c#5,e5]", U: "[e2,e3,b4,d#5,f#5] [e2,e3,e4,g#4,b4,d#5]",
  V: "[e2,e3,e4,g#4,b4,e5] [f#2,f#3,a4,c#5,e5]", W: "[f#2,f#3,b4,d#5,f#5] [f#2,f#3,a#4,c#5,f#5]",
  X: "[[a4,c#5,e5,g#5] [b4,d#5,f#5], [a2,a3]]/2", Y: "[[e2,e3] [d2,d3,d5], [b4,e5,g#5]]/2",
  Z: "[[a4,c#5,e5,f#5]@2 [b4,c#5,f#5] [a#4,c#5,f#5], [f#2,f#3]]/2", // F#m7 Bsus2 F#
  AA: "[[a4,c#5,e5,g#5]@2 [d#5,f#5]@2 [e2,e3]@2 [d2,d3,d5]@2 [a4,c#5,f#5]@2 [b4,c#5,f#5] [a#4,c#5,f#5], [a2,a3]@2 e5@3 ~, ~ b4@3 [f#2,f#3]@2, ~ g#5 ~]/6", // Amaj7 D#m E D F#m Bsus2 F# A …
  AB: "[[a4,c#5,e5,g#5]@4 f#5 g#5 a5 b5, [a2,a3], ~ [b4,d#5]]/2", AC: "[e2,e3,b4,e5,g#5]",
})).s("gm_pad_warm").gain(0.16)

// chords · synth strings 1 · "STRINGS"
const synth_strings_1 = note("<~@16 A B A C D E F@7 G@3 ~@16 A B A C D E F@7 H@4 ~@47 I@6 J@8 K@2 ~@2>".pickRestart({
  A: "[c4,d#4,f#4,a4]@31 ~", B: "[b3,e4,g4]@31 ~", C: "[c4,e4,g4]@31 ~", D: "[d4,f#4,a4]@31 ~",
  E: "[e4,f#4,a4,b4]@15 ~ [d#4,f#4,b4]@14 ~@2", // Esus4 B
  F: "[[c#4,e4,g#4]@2 [d#4,f#4]@2 ~@2 d4@2 a3@2 b3 a#3 [a3,e4,g#4]@2, a3@2 e4@3 ~@2, ~ b3@3 c#4@3, ~@2 g#4@2 f#4@2 ~]/7", // C#m D#m Amaj7
  G: "[[d#4,f#4]@2 [e4,g#4]@3 ~, b3@5 ~]/3", H: "[[d#4,f#4]@2 [e4,g#4]@5 ~, b3@7 ~]/4",
  I: "[[c#4,e4,g#4]@2 [d#4,f#4]@2 ~@2 d4@2 a3@2 b3 a#3, a3@2 e4@3 ~, ~ b3@3 [c#4,f#4]@2, ~ g#4 ~]/6", // C#m D#m F#5
  J: "[[c#4,e4,g#4]@2 [d#4,f#4]@2 ~@2 d4@2 a3@2 b3 a#3 [e4,g#4]@2 [b3,d#4,f#4]@2, a3@2 e4@3 ~ a3@2, ~ b3@3 c#4@3 ~, ~ g#4 f#4 ~]/8", // C#m D#m E B
  K: "[e3,b3,e4,g#4,b4,e5]/2", // E
})).s("gm_synth_strings_1").gain(0.25)

// chords · acoustic guitar steel · "A GUIT"
const acoustic_guitar_steel = note(`<
  ~@22 A@2 B@2 C@2 A@2 D E ~@22 A@2 B@2 C@2 A@2 F@3 G ~@46 H@5 I@6 J@3 K@4
>`.pickRestart({
  A: "[~@8 [a4,f#5]!8, a4 c#6 a4 c#6 a4 c#6 a4 c#6 ~@8, ~ e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 e5@2 ~@15]/2", // D
  B: "[~@8 e4 [d5,g#5]!3 e4 [d5,g#5]!3, e4 g#5 e4 g#5 e4 g#5 e4 g#5 ~@8, ~ b4@2 b4@2 b4@2 b4@2 b4@2 b4@2 b4@2 b4@2 ~@15]/2", // Ddim
  C: "[~@8 f#4 [c#5,b5]!3 f#4 [c#5,a#5]!3, f#4 a5 f#4 a5 f#4 a5 f#4 a5 ~@8, ~ c#5@2 c#5@2 c#5@2 c#5@2 c#5@2 c#5@2 c#5@2 c#5@2 ~@15]/2", // C#7 F#
  D: "[e4,b4] g#5 [e4,b4] g#5", E: "e4 [b4,g#5] [e5,b5]@2",
  F: "g#5 e5 c#5 [g#4,a5] g#5 e5 c#5 [g#4,a5] g#5 e5 c#5 [g#4,a5] g#5 e5 c#5 [g#4,a5]", // Amaj7
  G: "g#5 e5 c#5 [g#4,a5] g#5 e5 c#5 [g#4,a5] g#5 e5 c#5 [g#4,a5] ~@4", // Amaj7
  H: "[~@16 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 ~@20 [d5,g#5]@2 [d5,g#5]@2 ~@4 [d5,g#5]@2 [d5,g#5]@2 ~@17 c#5, a4@8 a4@8 a4@8 a4@7 ~@29 [a4,f#5]@35 ~@13 [d5,g#5]@8 ~@8 [d5,g#5]@35 ~, ~@2 e5@4 e5@4 e5@4 e5@4 e5@4 e5@4 e5@4 e5@32 ~@2 e4@8 e4@8 e4@8 e4@7 ~ e4@15 ~ e4@14 ~@2 f#4@8 f#4@8 f#4@8 f#4@7 ~, ~@4 c#6@8 c#6@8 c#6@8 c#6@34 ~@4 b4@4 b4@4 b4@4 b4@4 b4@4 b4@4 b4@4 b4@17 ~@19 c#5@4 c#5@4 c#5@4 c#5@4 c#5@4 c#5@4 c#5@4 ~@2, ~@17 g#5@2 g#5@2 g#5@2 g#5@2 ~@8 a5@2 a5@2 a5@2 a5]/5", // D Ddim D Ddim
  I: "[~@2 [c#5,b5]@2 [c#5,b5]@2 ~@4 [c#5,a#5]@2 [c#5,a#5]@2 ~@18 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 ~@20 [d5,g#5]@2 [d5,g#5]@2 ~@4 [d5,g#5]@2 [d5,g#5]@2 ~@17 c#5, f#4@15 ~ f#4@15 ~ a4@8 a4@8 a4@8 a4@7 ~@29 [a4,f#5]@35 ~@13 [d5,g#5]@8 ~@8 [d5,g#5]@35 ~, ~@12 b5@19 ~@3 e5@4 e5@4 e5@4 e5@4 e5@4 e5@4 e5@4 e5@32 ~@4 b4@4 b4@4 b4@4 b4@4 b4@4 b4@4 b4@4 b4@17 ~@19 c#5@4 c#5@4 c#5@4 c#5@4 c#5@4 c#5@4 c#5@4 ~@2, ~@12 c#5@8 ~@8 [c#5,a#5]@35 ~@33 e4@8 e4@8 e4@8 e4@7 ~ e4@15 ~ e4@14 ~@2 f#4@8 f#4@8 f#4@8 f#4@7 ~, ~@18 c#6@4 c#6@4 c#6@4 c#6@17 ~@3 g#5@4 g#5@4 g#5@4 g#5@4 ~@16 a5@4 a5@4 a5@4 a5@2]/6", // C#7 F# D Ddim D Ddim F#
  J: "[~ [c#5,b5]!2 ~@2 [c#5,a#5]!2 ~@9 [a4,f#5]!8, f#4@15 ~ f#4@15 ~ a4@8 a4@8 a4@8 a4@7 ~@33, ~@12 b5@19 ~@3 e5@4 e5@4 e5@4 e5@4 e5@4 e5@4 e5@4 e5@33 ~, ~@12 c#5@8 ~@8 [c#5,a#5]@35 ~@33, ~@36 c#6@8 c#6@8 c#6@8 c#6@35 ~]/3", // C#7 F# D F#
  K: "[~@5 [b4,g#5] [e5,b5]@8 ~@2, [e4,b4]@15 ~ b4@24 ~@88, ~ g#5@2 g#5@2 ~@11, ~@16 e4@16 e4@15 ~@81]/4", // E E5
})).s("gm_acoustic_guitar_steel").gain(0.25)

// other · distortion guitar · "E GUIT"
const distortion_guitar = note(`<
  ~@68 A@2 B C D E F@3 G H G I J K L ~@3 M N O P Q R S T U@2 V@2 W X Y Z AA AB ~@13 AC AD@2 AE AF AG AH AI ~@4
>`.pickRestart({
  A: "[~@28 e5@12 ~@4 g#4@3 ~ f#4@4 b4@4 c#5@4 d5@4]/2", B: "c#5@3 d5 b4 f#5@2 ~", C: "c#5 b4 c#5 d5 c#5 g#4@3",
  D: "a4@2 f#4 d4 c#4 e4@3", E: "~ g#4 a4 c#5 g#4@4", F: "[g#4@12 e5@9 d#5 e5 f#5]/3", G: "g#4 a4 g#4 e4 c#5@4",
  H: "e5@3 f#5 e5 d#5 e5 f#5", I: "e4@4 d#4@4 d#4@5 ~@3", J: "g#4 f#4", K: "g#4@2 d5 c#5", L: "b4@21 ~@11",
  M: "g#4@3 a4 f#4 b4 c#5 d5", N: "c#5@6 d5@2 b4@2 f#5@5 ~", O: "~@4 c#5@2 g#4 e4", P: "a#4@7 ~ g#4@6 a4@2",
  Q: "f#4 b4 c#5 d5 c#5@3 d5", R: "b4@4 f#5@10 ~@2 c#5@3 ~ b4@4 c#5@4 d5@4", S: "c#5@4 g#4@10 ~@2 a4@8 f#4@3 ~ d4@4",
  T: "c#4@4 e4@11 ~ g#4@7 ~ c#5@7 ~", U: "[g#4@13 ~@3 g#4@48]/2",
  V: "[e5@36 d#5@4 e5@4 f#5@3 ~ g#4@4 a4@4 g#4@4 e4@4]/2", W: "c#5@15 ~ e5@12 f#5@4",
  X: "e5@4 d#5@4 e5@4 f#5@3 ~ g#4@4 a4@4 g#4@4 e4@4", Y: "c#5@12 ~@4 e4@7 ~ d#4@7 ~", Z: "d#4@5 ~@3 g#4@8",
  AA: "f#4@7 ~ g#4@6 ~@2", AB: "d5@8 c#5@7 ~ b4@16", AC: "g#5@7 ~ e5@4 c#5@11 ~ e5@3 ~ c#5@3 ~",
  AD: "[d#5@7 ~ e5@7 ~ f#5@7 ~ g#5@23 ~@17]/2", AE: "g#5@23 ~@9", AF: "f#5@7 ~ e5@3 ~ c#5@10 ~@2 g#5@6 ~@2",
  AG: "f#5@14 ~@2 a#5@13 ~@3", AH: "g#5@7 ~ e5@3 ~ c#5@10 ~@2 e5@3 ~ c#5@3 ~",
  AI: "d#5@4 b4@3 ~ f#5@4 b4@3 ~ g#5@4 b4@3 ~ a5@4 b4@3 ~",
})).s("gm_distortion_guitar").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~@22 A@8 ~@24 A@8 ~@21 B@4 ~@17 C D@4 E@3 A@14 F ~@3>".pickRestart({
  A: "x ~@6 x!2 ~@7", B: "x ~@3 x ~@2 x", C: "~ x", D: "x ~@2 x!2 ~@3", E: "x!2", F: "x",
})).gain(0.25)

// drums · snare
const snare = s("sd").struct("<~@22 A@8 ~@24 A@8 ~@46 B A@2 C A@9 D A@3 E ~@4>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~@2 x ~@2 x ~@2", D: "~ x ~@2", E: "~@4 x ~@6 x ~@4",
})).gain(0.29)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@23 A ~@31 A ~@57 A ~@5 A ~@10>".pickRestart({
  A: "~@11 x ~@4",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@26 A ~@2 B ~@27 C D E ~ F ~@48 G H ~ I ~ J ~ K ~ I ~ L ~ M ~ N ~@4>".pickRestart({
  A: "~@13 x!2 ~", B: "~@11 x ~ x!2 ~", C: "~@5 x!2 ~@9", D: "~@7 x", E: "~@20 x ~@3 x ~@2 x ~ x ~@2",
  F: "~@11 x ~ x ~@2", G: "~ x ~ x ~@12", H: "x!2 ~ x ~ x ~ x ~@4 x!3 ~", I: "~@27 x ~@2 x ~", J: "~@27 x ~ x ~@2",
  K: "~@8 x!3 ~@5", L: "~@19 x ~@4 x ~@2 x ~ x ~@2", M: "~@18 x ~@3 x ~@4 x ~@2 x ~", N: "~@6 x ~@17 x ~@2 x ~ x ~@2",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct("<~@21 A B@4 C B@3 ~@23 A B@4 C B@3 ~@50 D E F B G H D E F B G H B I ~@4>".pickRestart({
  A: "~@9 x!7", B: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~", C: "x ~@2 x!2 ~ x ~ x ~ x!3 ~ x ~",
  D: "x ~@2 x ~@2 x ~ x ~@3 x ~ x!2", E: "x ~@2 x!2 ~ x!3 ~ x ~ x ~ x!2", F: "x ~ x!3 ~ x!3 ~ x!3 ~@2 x",
  G: "x ~ x!3 ~ x!3 ~ x!3 ~ x ~", H: "x ~ x!3 ~ x!3 ~ x ~ x ~ x!2", I: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!2",
})).gain(0.13)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@21 A ~@4 B ~@26 A ~@4 B ~@53 C B D E ~ F C B D E ~ F ~ G ~@4>".pickRestart({
  A: "~@4 x!5 ~@7", B: "~ x ~@6", C: "~@2 x ~ x ~@2 x ~@2 x!2 ~@4", D: "~@7 x", E: "~@7 x ~@8", F: "~@11 x ~@4",
  G: "~@7 x ~@3 x ~ x ~@2",
})).gain(0.06)

// drums · mid tom
const mid_tom = s("mt").struct("<~@26 A ~@2 A ~@27 B C D ~ E ~@49 F ~ E ~ G ~ H ~ E ~ I ~ J ~ K ~@4>".pickRestart({
  A: "~@9 x!2 ~@5", B: "~ x ~@6", C: "~@10 x ~@2 x ~@2", D: "~@5 x ~@2", E: "~@9 x ~@6", F: "~@12 x!2 ~@2",
  G: "~@19 x ~ x ~@10", H: "~@5 x!2 ~@9", I: "~@18 x ~ x ~ x ~@4 x ~@4", J: "~ x ~ x ~@12", K: "~ x ~@7 x!2 ~ x ~@3",
})).gain(0.29)

// drums · open hat
const open_hat = s("oh").struct("<~@30 A B ~@30 A B C@47 D ~@18>".pickRestart({
  A: "x!16", B: "x!9 ~@7", C: "x ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!2", D: "x ~ x!3 ~ x!3 ~ x!22",
})).gain(0.1)

// drums · crash
const crash = s("cr").struct(`<
  ~@22 A ~@4 A ~@2 A ~@23 A ~@2 B A C A B A ~@20 A@4 ~@17 B@4 ~@3 D A ~ A ~ A ~ A ~ A@3 E A@3 ~@3
>`.pickRestart({
  A: "x", B: "~ x", C: "x!2", D: "~ x!2 ~", E: "~ x ~ x",
})).gain(0.06)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@63 [~@8 x!8] [x!9 ~@7] ~@65>").gain(0.03)

stack(
  piano, bass, pad_warm, synth_strings_1, acoustic_guitar_steel, distortion_guitar, kick, snare, snare_soft, low_tom,
  hihat, hihat_soft, mid_tom, open_hat, crash, crash_soft
)

More by Genesis