Strudelify

Anyway

Genesis

KeyG minorTempo78 bpm
0:00/0:00
// Anyway — Genesis
// 78 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/4 at bar 37, 4/4 at bar 38) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 5 "R Piano Double" piano (copy of ch 1 "P1-Grand Piano" piano)
// note: Full arrangement: all 65 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(78/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.

// other · piano · "P1-Grand Piano"
const piano = note(`<
  A@8 B C@2 D@5 E@5 C@2 D@5 F@3 G@3 H@3 I J@3 K@3 L@2 M N O P M N O Q R S T U V W X Y ~@3
>`.pickRestart({
  A: "[~@8 d4@3 a4@3 bb4@3 ~@2 bb4@3 a4@3 bb4@6 eb4@3 a4@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 ~@2 a4@3 bb4@3 e5@3 bb4@3 ~@3 bb4@6 f4@3 a4@3 bb4@3 f5@3 bb4@3 ~@2 bb4@6 e4@3 a4@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 eb4@3 a4@3 bb4@3 ~@2 bb4@3 a4@3 bb4@6 d4@3 a4@3 bb4@3 d5@3 bb4@3 a4@3 bb4@6 ~@2 a4@3 bb4@3 d5@3 bb4@3 ~@3 bb4@5 ~ d4@3 ~@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 eb4@3 a4@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 e4@3 a4@3 bb4@3 e5@3 bb4@3 ~@3 bb4@6 f4@3 ~@3 bb4@3 f5@3 bb4@3 a4@3 bb4@6 e4@3 ~@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 eb4@3 a4@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 d4@3 a4@3 bb4@3 d5@3 bb4@3 a4@3 bb4@6 d4@3 a4@3 bb4@3 ~@3 bb4@3 ~@3 bb4@3, ~@17 d5@6 ~@17 eb5@5 ~@10 e4@4 ~@10 a4@5 ~@19 a4@4 ~@13 e5@5 ~@19 eb5@5 ~@33 d4@4 ~@10 a4@5 ~@7 a4@5 ~ d5@6 ~@18 eb5@5 ~@25 a4@5 ~@7 a4@5 ~@19 a4@5 ~ e5@5 ~@19 eb5@5 ~@43 d5@5 ~ a4@5 ~]/8",
  B: "~ c4 f4 g4 c5@2 g4@3 c4 f4 g4 ~ g4 f4 g4, ~@36 c5@5 ~@7",
  C: "[~@3 f4 bb4@2 f4@3 bb3 e4 f4 ~ f4 e4 f4@2 ~ f4 g4 c5@2 g4@3 c4 f4 g4 ~ g4 f4 g4, ~@3 bb3@5 ~@43 c4@5 ~@40, ~@6 e4@5 ~@25 bb4@5 ~@43 c5@5 ~@7]/2",
  D: "[~@3 bb3@3 e4@3 f4@3 bb4@6 f4@9 bb3@3 ~@3 f4@3 ~@3 f4@3 e4@3 f4@5 ~ db4@3 f4@3 g4@3 db5@6 g4@9 db4@3 f4@3 g4@3 ~@3 g4@3 f4@3 g4@6 ~@3 f4@3 g4@3 c5@6 g4@9 ~@3 f4@3 g4@3 ~@3 g4@3 ~@3 g4@5 ~ db4@3 f4@3 g4@3 db5@6 g4@9 db4@3 f4@3 g4@3 ~@3 g4@3 f4@3 g4@6 ~@3 f4@3 g4@3 c5@6 g4@9 ~@6 g4@3 ~@3 g4@3 f4@3 g4@3, ~@30 e4@5 ~ bb4@5 ~@43 db5@5 ~@10 c4@5 ~@19 c4@5 ~@4 c5@6 f4@5 ~@37 db5@5 ~@10 c4@5 ~@19 c4@5 ~@16, ~@222 f4@5 ~ c5@6 ~@6]/5",
  E: "[~@3 d4@3 ~@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 eb4@3 a4@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 e4@3 a4@3 bb4@3 e5@3 bb4@3 ~@3 bb4@6 f4@3 ~@3 bb4@3 f5@3 bb4@3 a4@3 bb4@6 e4@3 ~@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 eb4@3 a4@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 d4@3 a4@3 bb4@3 d5@3 bb4@3 a4@3 bb4@6 d4@3 a4@3 bb4@3 ~@3 bb4@3 ~@3 bb4@5 ~ c4@3 f4@3 g4@3 c5@6 g4@9 c4@3 f4@3 g4@3 ~@3 g4@3 f4@3 g4@3, ~@6 a4@5 ~ d5@6 ~@18 eb5@5 ~@25 a4@5 ~@7 a4@5 ~@19 a4@5 ~ e5@5 ~@19 eb5@5 ~@43 d5@5 ~ a4@5 ~@37 c5@5 ~@7]/5",
  F: "[d4@2 ~ bb4@2 d5@2 ~@7 bb4@2 ~ bb4@2 a4@2 d4@2 ~ bb4@2 ~@3 a4@2 d4@2 a4@2 ~ d5@2 bb4@2 a4@2 ~ a4@2 bb4@2 eb5@2 ~ a4@2 eb4@2 ~ bb4@2 eb5@2 ~@3 d4@2 a4@2 bb4@2 ~@3 a4@2 ~@3 bb4@2 ~@3 a4@2 d4@2 ~@5 bb4@2 a4@2 ~ a4@2 bb4@2 d5@2 ~ a4@2 eb4@2 ~ bb4@2 eb5@2 ~@3 eb4@2 a4@2 bb4@2 ~@3 a4@2 d4@2 ~ bb4@2 d5@2 ~ a4@2 ~@7 bb4@2, ~@2 a4@3 ~@2 bb4@3 d4@4 ~@12 d5@4 ~@19 bb4@4 ~ a4@3 ~@2 bb4@4 ~@5 d5@3 ~@4 a4@4 ~ bb4@3 ~@2 a4@3 d5@4 ~@9 bb4@3 ~@2 a4@3 ~@2 bb4@4 ~@5 eb5@3 ~@12 d4@4 bb4@2 ~@3, ~@9 a4@2 ~ a4@4 d5@4 ~@3 a4@4 ~ bb4@3 ~@4 bb4@2 ~@5 eb4@3 ~@16 a4@2 ~@6 bb4@4 d4@4 ~ d5@4 ~@5 bb4@2 ~@5 d4@3 ~@16 a4@2 ~@6 bb4@4 ~@2 a4@3 ~@2 bb4@4 ~ a4@3 d5@4]/3",
  G: "[a4@2 ~@3 bb4@2 ~@3 a4@2 d4@2 ~ bb4@2 d5@2 bb4@2 ~ eb4@2 a4@2 bb4@2 ~@3 a4@2 eb4@2 ~ bb4@2 eb5@2 ~ a4@2 eb4@2 a4@2 ~ eb5@2 ~@2 a4@2 ~ a4@2 bb4@2 d5@2 ~ a4@2 ~@3 bb4@2 ~@2 bb4@2 ~ d4@2 ~@2 bb4@2 ~ bb4@2 a4@2 d4@2 ~ bb4@2 d5@2 ~ a4@2 eb4@2 a4@2 ~ eb5@2 ~@2 a4@2 ~ a4@2 bb4@2 eb5@2 ~ a4@2 eb4@2 ~ bb4@2 eb5@2 ~@3 eb4@2 a4@2 bb4@2 ~@3 a4@2 d4@2 ~ bb4@2 d5@2, ~@2 d4@3 ~@4 bb4@3 ~@2 a4@3 ~@4 a4@2 ~@6 bb4@4 ~@2 a4@3 ~@2 bb4@4 ~@3 bb4@2 ~ bb4@4 d4@3 ~@7 d4@4 ~ d5@4 ~@7 d5@4 ~@29 bb4@4 ~ a4@3 ~@2 bb4@4 ~@5 eb5@3 ~@9, ~@3 a4@4 d5@4 ~@17 eb5@3 ~@30 bb4@4 ~ a4@4 ~@3 a4@2 ~ a4@4 ~@7 a4@3 ~@2 bb4@3 ~@4 bb4@2 ~ bb4@4 eb4@3 ~@16 a4@2 ~@6 bb4@4 ~@2 a4@3 ~@2]/3",
  H: "[~ a4@2 ~@7 bb4@2 a4@2 ~@3 bb4@2 ~@3 a4@2 d4@2 ~ bb4@2 d5@2 bb4@2 ~ eb4@2 a4@2 bb4@2 ~@3 a4@2 eb4@2 ~ bb4@2 eb5@2 ~ a4@2 eb4@2 a4@2 ~ eb5@2 ~@2 a4@2 ~ a4@2 bb4@2 eb5@2 ~ a4@2 d4@2 ~ bb4@2 d5@2 ~@7 bb4@2 ~ bb4@2 a4@2 d4@2 ~ bb4@2 ~@3 a4@2 d4@2 a4@2 ~ d5@2 bb4@2 a4@2 ~ a4@2 bb4@2 d5@2 ~ a4@2 ~@3 bb4@2 ~@2 bb4@2 ~ d4@2 ~@2 bb4@2, bb4@3 d4@4 bb4@2 ~@5 d4@3 ~@4 bb4@3 ~@2 a4@3 ~@4 a4@2 ~@6 bb4@4 ~@2 a4@3 ~@2 bb4@4 ~@3 bb4@2 ~ bb4@4 eb4@3 ~@16 a4@2 ~ a4@4 d5@4 ~@3 a4@4 ~ bb4@3 ~@4 bb4@2 ~@5 d4@3 ~@7 d4@4 ~ d5@4 ~@7, ~@5 a4@3 d5@4 ~@3 a4@4 d5@4 ~@17 eb5@3 ~@30 bb4@4 ~ a4@3 ~@2 bb4@3 d4@4 ~@12 d5@4 ~@19 bb4@4 ~ a4@4 ~@3 a4@2 ~ a4@4]/3",
  I: "~ bb4@2 a4@2 d4@2 ~ bb4@2 d5@2 ~ a4@2 d4@2 a4@2 ~ d5@2 ~@2 a4@2 ~@3 bb4@2 ~@3 a4@2 d4@2 ~ bb4@2 ~@2 bb4@2 ~ d4@2, d5@4 ~@3 a4@3 ~@2 bb4@3 ~@4 bb4@2 ~ bb4@4 d4@4 ~@3 bb4@3 ~@2 a4@4 ~@3 a4@2 ~, ~@27 a4@4 d5@4 ~@6 d5@4 ~@3",
  J: "[a4@2 bb4@2 ~ bb4@2 a4@2 d4@2 ~ bb4@2 d5@2 ~ a4@2 ~@7 bb4@2 a4@2 ~@3 bb4@2 ~@3 a4@2 d4@2 ~ bb4@2 d5@2 bb4@2 ~ eb4@2 a4@2 bb4@2 ~@3 a4@2 ~@3 bb4@2 ~@3 a4@2 eb4@2 ~@5 bb4@2 a4@2 ~ a4@2 bb4@2 eb5@2 ~ a4@2 e4@2 ~ bb4@2 e5@2 ~@7 bb4@2 ~ bb4@2 a4@2 e4@2 ~ bb4@2 ~@3 a4@2 e4@2 a4@2 ~ e5@2 bb4@2 a4@2 ~ a4@2 bb4@2 f5@2 ~ a4@2, ~@4 d5@3 ~@4 a4@3 ~@2 bb4@3 d4@4 bb4@2 ~@5 d4@3 ~@4 bb4@3 ~@2 a4@3 ~@4 a4@2 ~@6 bb4@4 eb4@4 ~ eb5@4 ~@5 bb4@2 ~@5 eb4@3 ~@16 a4@2 ~ a4@4 e5@4 ~@6 e5@4 ~@22, ~@21 a4@3 d5@4 ~@3 a4@4 d5@4 ~@17 eb5@3 ~@4 a4@4 ~ bb4@3 ~@2 a4@3 eb5@4 ~@9 bb4@3 ~@2 a4@3 ~@2 bb4@3 e4@4 ~@9 a4@4 ~ bb4@3 ~@4 bb4@2 ~@5 f4@3 ~@4 bb4@3]/3",
  K: "[~@3 bb4@2 ~@2 bb4@2 ~ f4@2 ~@2 bb4@2 ~ bb4@2 a4@2 f4@2 ~ bb4@2 f5@2 ~ a4@2 e4@2 a4@2 ~ e5@2 ~@2 a4@2 ~@3 bb4@2 ~@3 a4@2 e4@2 ~ bb4@2 ~@2 bb4@2 ~ e4@2 a4@2 bb4@2 ~ bb4@2 a4@2 eb4@2 ~ bb4@2 eb5@2 ~ a4@2 ~@7 bb4@2 a4@2 ~@3 bb4@2 ~@3 a4@2 eb4@2 ~ bb4@2 eb5@2 bb4@2 ~ d4@2 a4@2 bb4@2 ~@3 a4@2 ~@3 bb4@2 ~@3 a4@2 d4@2 ~@5 bb4@2, f4@4 ~ f5@4 ~@7 f5@4 ~@23 a4@4 e5@4 ~@6 e5@4 ~@7 e5@3 ~@12 eb4@4 bb4@2 ~@5 eb4@3 ~@4 bb4@3 ~@2 a4@3 ~@4 a4@2 ~@6 bb4@4 d4@4 ~ d5@4 ~@5 bb4@2 ~@3, ~@2 a4@4 ~@3 a4@2 ~ a4@4 ~@7 a4@3 ~@2 bb4@3 ~@4 bb4@2 ~ bb4@4 e4@4 ~@3 bb4@3 ~@2 a4@4 ~@3 a4@2 ~@12 a4@3 ~@2 bb4@4 ~ a4@3 eb5@4 ~@3 a4@4 eb5@4 ~@17 d5@3 ~@4 a4@4 ~ bb4@3 ~@2 a4@3 d5@4]/3",
  L: "[a4@2 ~ a4@2 bb4@2 d5@2 ~ a4@2 d4@2 ~ bb4@2 d5@2 ~@7 bb4@2 ~ bb4@2 a4@2 d4@2 ~ bb4@2 ~@3 a4@2 d4@2 a4@2 ~ d5@2 bb4@2 a4@3 ~@2 d4@3 ~@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 eb4@3 a4@3 bb4@3 ~@3 bb4@3, ~@2 d4@3 ~@4 bb4@3 ~@2 a4@3 ~@2 bb4@3 d4@4 ~@12 d5@4 ~@24 d5@6 ~@18 eb5@5 ~, ~@21 a4@2 ~ a4@4 d5@4 ~@3 a4@4 ~ bb4@3 ~@4 bb4@2 ~@11 a4@5 ~@31]/2",
  M: "a4 bb4@2 e4 a4 bb4 e5 bb4 ~ bb4@2 f4 ~ bb4 f5 bb4, ~@24 a4@5 ~@7 a4@5 ~@7",
  N: "a4 bb4@2 e4 ~ bb4 ~ bb4 a4 bb4@2 eb4 a4 bb4 ~ bb4, ~@12 a4@5 ~ e5@5 ~@19 eb5@5 ~",
  O: "a4 bb4@2 d4 a4 bb4 d5 bb4 a4 bb4@2 d4 a4 bb4 ~ bb4, ~@42 d5@5 ~",
  P: "~@3 bb4@5 ~ d4@3 ~@3 bb4@3 ~@3 bb4@3 a4@3 bb4@6 eb4@3 a4@3 bb4@3 ~@3 bb4@3, a4@5 ~@7 a4@5 ~ d5@6 ~@18 eb5@5 ~",
  Q: "~@3 bb4@5 ~ c4@3 f4@3 g4@3 c5@6 g4@9 c4@3 f4@3 g4@3 ~@3 g4@3, a4@5 ~@37 c5@5 ~",
  R: "f4@3 g4@4 ~@8 f4@3 bb4@6 f4@9 bb3@3 e4@3 f4@3 ~@3 f4@3, ~@9 bb3@5 ~@34, ~@12 e4@5 ~@25 bb4@5 ~",
  S: "e4 f4@2 ~ f4 g4 c5@2 g4@3 c4 f4 g4 ~ g4, ~@9 c4@5 ~@28 c5@5 ~",
  T: "f4@3 g4@4 ~@2 bb3@3 e4@3 f4@3 bb4@6 f4@9 bb3@3 ~@3 f4@3 ~@3 f4@3, ~@36 e4@5 ~ bb4@5 ~",
  U: "e4@3 f4@5 ~ db4@3 f4@3 g4@3 db5@6 g4@9 db4@3 f4@3 g4@3 ~@3 g4@3, ~@42 db5@5 ~",
  V: "f4 g4@2 ~ f4 g4 c5@2 g4@3 ~ f4 g4 ~ g4, ~@9 c4@5 ~@19 c4@5 ~@4 c5@6",
  W: "~@3 g4@5 ~ db4@3 f4@3 g4@3 db5@6 g4@9 db4@3 f4@3 g4@3 ~@3 g4@3, f4@5 ~@37 db5@5 ~",
  X: "f4 g4@2 ~ f4 g4 c5@2 g4@3 ~@2 g4 ~ f4, ~@9 c4@5 ~@19 c4@5 ~@10, ~@36 f4@5 ~ c5@6",
  Y: "~@4 f4@15 ~@29, ~ g4@5 ~@42",
})).s("gm_piano").gain(0.24).pan(0.2)

// chords · piano · "P2-Grand Piano"
const piano_2 = note("<A@4 B@4 C D E F G H I J K@4 C D E F G H I J L M N@7 ~@8 O P@3 Q R@6 S T U@4 ~@3>".pickRestart({
  A: "[~@5 g2@12 [d3,g3]@4 ~ [d3,g3]@3 ~@3 g3@11 ~ bb3@6 g3@3 ~@3 g3@11 bb3@6 g3@3 ~@3 g3@12 d4@6 g3@2 ~@3 g3@12 d4@6 g3@3 ~@3 g3@12 bb3@5 g3@3 ~@3 g3@12 bb3@6 g3@3 d3@3 ~@11 [d3,a3]@4 ~@2 [d3,a3]@6, ~@25 g2@12 ~@12 g2@12 ~@11 g2@12 ~@11 g2@12 ~@12 g2@12 ~@11 g2@12 ~@15 d2@18 ~@5, ~@28 eb3@20 ~@4 e3@21 ~@2 f3@21 ~@2 e3@22 ~@2 eb3@21 ~@2 d3@19 ~@28]/4", // G5 D5
  B: "[g2@12 [d3,g3]@4 ~@2 [d3,g3]@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 d4@6 g3@3 ~@3 g3@12 ~@6 g3@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 bb3@6 g3@3 d3@3 ~@12 [d3,a3]@4 ~@2 [d3,a3]@5 ~, ~@21 g2@12 ~@12 g2@12 ~@12 g2@12 ~@12 g2@12 ~@3 d4@9 g2@12 ~@12 g2@12 ~@15 d2@23 ~, ~@24 eb3@19 ~@5 e3@22 ~@2 f3@22 ~@2 e3@22 ~@2 eb3@22 ~@2 d3@19 ~@29]/4", // G5 D5
  C: "f3@11 ~ c3@11 ~ f2@22 ~@2", D: "bb2@18 f3@6 bb2@23 ~", E: "f3@3 c3 f2@3 f3",
  F: "bb2@16 ~@5 bb2 ~@2 bb2@17 ~ bb2@5 ~", G: "db3@43 ~@5", H: "c3@23 ~", I: "db3@23 ~", J: "f2@23 ~",
  K: "[g2@12 [d3,g3]@4 ~@2 [d3,g3]@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 d4@6 g3@3 ~@3 g3@12 d4@6 g3@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 bb3@6 g3@3 d3@3 ~@12 [d3,a3]@4 ~@2 [d3,a3]@6, ~@21 g2@12 ~@12 g2@12 ~@12 g2@12 ~@12 g2@12 ~@12 g2@12 ~@12 g2@12 ~@15 d2@19 ~@5, ~@24 eb3@20 ~@4 e3@22 ~@2 f3@22 ~@2 e3@22 ~@2 eb3@22 ~@2 d3@19 ~@29]/4", // G5 D5
  L: "g2", M: "~@4 d3@9 ~ g2@34",
  N: "[~@3 d3@3 ~@2 c3@9 ~ a2@8 ~@3 g2@34 ~@2 d3@3 ~@2 db3@9 ~@2 a2@9 ~ c3@8 ~@3 g2@35 ~ d3@3 ~@2 db3@13 ~@3 a2@4 ~ c3@3 ~@2 bb2@4 ~ g2@4 ~@2 a2@3 ~@2 g2@4 ~ eb2@4 ~ g2@3 ~@2 f2@3 ~@3 eb2@4 ~ f2@3 ~@2 eb2@3 ~@2 d2@3 ~@2 eb2@41 ~ e2@40 ~@28, ~@226 d2@5 ~@105]/7",
  O: "~@6 g2@12 [d3,g3]@4 ~@2 [d3,g3]@3 ~@3 g3@12 bb3@6, ~@9 g2@4 ~@3, ~@5 eb3@3", // G5
  P: "[g3@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 d4@6 g3@3 ~@3 g3@12 d4@6 g3@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 bb3@6 g3@3 d3@3 ~@12 [d3,a3]@4 ~@2, ~ g2@4 ~@4 g2@4 ~@4 g2@4 ~@4 g2@4 ~@4 g2@4 ~@5 d2@6, ~@6 e3@22 ~@2 f3@22 ~@2 e3@22 ~@2 eb3@22 ~@2 d3@19 ~@23]/3", // D5
  Q: "[d3,a3]@6 g2@12 [d3,g3]@4 ~@2 [d3,g3]@3 ~@3 g3@12 bb3@6, ~@9 g2@4 ~@3, ~@5 eb3@3", // D5 G5
  R: "[g3@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 d4@6 g3@3 ~@3 g3@12 ~@6 g3@3 ~@3 g3@12 bb3@6 g3@3 ~@3 g3@12 bb3@6 g3@3 d3@3 ~@12 [d3,a3]@4 ~@2 [d3,a3]@5 ~ f3@11 ~ c3@11 ~ f2@22 ~@2 bb2@18 f3@6 bb2@23 ~ f3@18 c3@6 f2@18, ~@3 g2@12 ~@12 g2@12 ~@12 g2@12 ~@3 d4@9 g2@12 ~@12 g2@12 ~@15 d2@23 ~@139, ~@6 e3@22 ~@2 f3@22 ~@2 e3@22 ~@2 eb3@22 ~@2 d3@19 ~@167]/6", // D5
  S: "f3@6 bb2@16 ~@5 bb2 ~@2 bb2@17 ~", T: "bb2@5 ~ db3@42", U: "[~@6 c3@46 ~@2 db3@46 ~@2 f2@49 ~@41]/4",
})).s("gm_piano").gain(0.22).pan(0.6)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@4 A B C D E F G H I J I K L M C N O P Q R I S T U V W X@4 Y@5 Z@2 AA@4 AB ~@3 AC@6 AD AE AF@5 ~@3
>`.pickRestart({
  A: "g1@11 ~ c2@11 ~", B: "c2@22 ~@2 bb1@21 ~@3", C: "g1@11 ~ eb2@11 ~", D: "d2@21 ~@3 d2@23 ~",
  E: "f2@9 c2@3 f1@8 ~ f1@3", F: "d2@17 ~ d2@5 ~ c2@17 ~ c2@6", G: "f2@24 f1@18 f2@5 ~",
  H: "g2@20 ~ g2@2 ~ c2@17 ~ c2@5 ~", I: "bb1@23 ~", J: "ab2@15 ~", K: "f1@11 ~", L: "g1@23 ~ c2@22 ~@2",
  M: "c2@11 ~ bb1@11 ~", N: "d2@22 ~@2 d2@23 ~", O: "f2@12 c2@11 ~ f1@24", P: "d2@16 ~@2 d2@6 c2@17 ~ c2@5 ~",
  Q: "f2@18 c2@6 f1@18 f2@5 ~", R: "g2@17 ~ g2@6 c2@16 ~@2 c2@6", S: "ab2@47 ~", T: "bb1@47 ~", U: "f1@23 ~", V: "g1",
  W: "~@4 d2@9 ~ g1@34",
  X: "[~@3 d2@4 ~ c2@8 ~@2 a1@9 ~@2 g1@35 ~ d2@4 ~ db2@9 ~@2 a1@10 c2@10 ~ g1@36 d2@4 ~ db2@15 ~ a1@5 c2@5 bb1@5 g1@5 ~ a1@5 g1@3 ~@2 eb1@2]/4",
  Y: "[~@3 g1@5 f1@6 eb1@5 f1@5 eb1@5 d1@5 eb1@40 ~@2 e1@41 ~ c2@2 d2@3 ~@10 c2@2 ~ d2@20 ~@3 c2@2 ~ d2@3 ~@10 c2@2 d2@20 ~@4 f2@2 g2@3 ~@10 f2@2 ~ g2@20 ~]/5",
  Z: "[~@2 f2@2 ~ g2@3 ~@10 f2@2 ~ g2@21 ~@2 f2@2 ~ g2@3 ~@10 f2@2 g2@21 ~@3 f2@2 g2@3 ~@5]/2",
  AA: "[~@5 f2@2 ~ g2@21 ~@2 f2@2 ~ g2@3 ~@10 f2@2 g2@22 ~@2 f2@2 g2@3 ~@10 f2@2 ~ g2@22 ~ c2@2 ~ d2@3 ~@10 c2@2 ~ d2@21 ~@2 d2@5 ~@3 c2@5 ~@3 bb1@6 ~ a1@6 ~@2 bb1@3 ~@2]/4",
  AB: "a1@2 ~ g1@12 ~@9",
  AC: "[~@6 g1@22 ~@2 c2@22 ~@2 c2@22 ~@2 bb1@22 ~@2 g1@22 ~@2 eb2@22 ~@2 d2@22 ~@2 d2@23 ~ f2@12 c2@11 ~ f1@24 d2@16 ~@2 d2@6 c2@17 ~]/6",
  AD: "c2@5 ~ f2@18 c2@6 f1@18", AE: "f2@5 ~ g2@17 ~ g2@6 c2@16 ~@2",
  AF: "[c2@6 bb1@46 ~@2 ab2@47 ~ bb1@47 ~ f1@48 ~@42]/5",
})).s("gm_fretless_bass").gain(0.28)

// chords · marimba · "Marimba 1" · Am Bb F Gm Em Bb Am F …
const marimba = note(`<
  ~@16
  [~@27 d6@2 ~ [a5,c6]@2 ~ [bb5,d6] ~@2 g5@2 ~ c6@2 ~ [f5,a5]@2 ~ [g5,bb5] ~@2, ~@27 bb5 ~@8 bb5 ~@2 a5 ~@8]
  [[e5,g5]@3 ~@24 [bb5,d6] ~@2 a5@2 ~ [bb5,d6] ~@2 g5@2 ~ [a5,c6] ~@2 [f5,a5]@2 ~ [g5,bb5] ~@2, ~@30 c6 ~@5 bb5 ~@11]
  [[e5,g5]@3 ~@24 d6@2 ~ [a5,c6]@2 ~ [bb5,d6] ~@2 g5@2 ~ c6@2 ~ [f5,a5]@2 ~ [g5,bb5] ~@2, ~@27 bb5 ~@8 bb5 ~@2 a5 ~@8]
  [[d5,gb5] ~@15]
  ~@45
>`).s("gm_marimba").gain(0.24).pan(0.9)

// other · pad poly · "Synth1"
const pad_poly = note("<~@20 A B C D E ~@24 F G H I@2 J K L@3 ~@6>".pickRestart({
  A: "f4@35 ~ g4@5 ~ a4@6", B: "g4@29 ~ a4@3 bb4@6 d5@3 e5@6", C: "f5@25 ~@11 g5@6 a5@6", D: "g5@23 ~@6 a5@4 f5@9 c5@6",
  E: "db5@47 ~", F: "~@6 g4@12 g4@5 ~ a4@6 bb4@18, ~@6 f4 ~@41", G: "a4 g4 a4 bb4 c5 d5@3",
  H: "c5 bb4 c5 d5 eb5 f5 eb5 d5", I: "[c5@6 a4@46 ~@2 f4@35 ~ g4@5 ~]/2", J: "a4@6 g4@29 ~ a4@3 bb4@6 d5@3",
  K: "e5@6 f5@25 ~@11 g5@6", L: "[a5@6 g5@23 ~@6 a5@4 f5@8 c5@6 ~ db5@47 ~@43]/3",
})).s("gm_pad_poly").gain(0.22).pan(0.9)

// other · pad poly · "Synth1 Harmony"
const pad_poly_2 = note("<~@20 A B C D E ~@25 F G H I J K L@3 ~@6>".pickRestart({
  A: "a4@35 ~ bb4@5 ~ c5@6", B: "bb4@29 ~ c5@3 d5@6 f5@3 g5@6", C: "a5@25 ~@11 bb5@6 c6@6",
  D: "bb5@23 ~@7 c6@3 a5@9 g5@6", E: "f5@47 ~", F: "~@5 bb4@3", G: "a4 g4 a4 bb4 c5 d5 c5 bb4", H: "a4@3 gb4@16 ~@5",
  I: "~@6 a4@35 ~ bb4@5 ~", J: "c5@6 bb4@29 ~ c5@3 d5@6 f5@3", K: "g5@6 a5@25 ~@11 bb5@6",
  L: "[c6@6 bb5@23 ~@6 c6@4 a5@8 g5@6 ~ f5@47 ~@43]/3",
})).s("gm_pad_poly").gain(0.16).pan(0.1)

// other · distortion guitar · "Elect Guitar"
const distortion_guitar = note("<~@28 A B C@7 ~ D E F G@2 H@3 ~@19>".pickRestart({
  A: "~@3 f2 ~@44, g2", B: "~@2 d3@4 ~ g2@17",
  C: "[~@3 d3@4 ~ c3@10 a2@8 ~@3 g2@35 ~ d3@4 ~ db3@10 ~ a2@10 c3@10 ~ g2@36 d3@4 ~ db3@14 ~@2 a2@4 ~ c3@4 ~ bb2@4 ~ g2@5 ~ a2@5 g2@3 ~@2 eb2@5 g2@4 ~ f2@5 ~ eb2@5 f2@5 eb2@4 ~ d2@5 eb2@42 e2@41 ~@27, ~@58 f2 ~@53]/7",
  D: "~@9 d5@25 ~ bb4@2 c5@3 ~@5 bb4@3, ~@40 d5@5 ~@3, ~@43 c5@4 ~",
  E: "a4@2 bb4@3 a4@3 g4@4 ~@11 c5@9 ~@2 d5@3 ~@2 g4@7 ~@2", F: "~ d5@8 ~@3 c5@8 ~@2 bb4@10 ~@6 d5@2 c5@3 d5@3 ~@2",
  G: "[eb5@9 ~ d5@3 c5@3 d5@3 ~@2 g4@10 ~@5 d5@9 ~@2 c5@9 ~ bb4@8 ~@3 f4@8 ~@2 eb4@8 ~@2 bb3@8]/2",
  H: "[~@3 c4@8 ~@2 d4@2 ~ d4@85 ~@43]/3",
})).s("gm_distortion_guitar").gain(0.54).pan(0.3)

// other · piano · "L Piano Double"
const piano_3 = note("<~@28 A B C@3 D@4 ~@28>".pickRestart({
  A: "g2", B: "~@4 d3@9 ~ g2@34",
  C: "[~@3 d3@4 ~ c3@8 ~@2 a2@8 ~@3 g2@35 ~ d3@3 ~@2 db3@9 ~@2 a2@9 ~ c3@10 ~ g2@34 ~@2 d3@4 ~@2]/3",
  D: "[~@15 a2@4 ~ c3@4 ~ bb2@4 ~ g2@4 ~@2 a2@4 ~ g2@3 ~@2 eb2@4 ~ g2@4 ~ f2@4 ~@2 eb2@4 ~ f2@5 eb2@3 ~@2 d2@5 eb2@41 ~ e2@40 ~@28, ~@15 db3 ~@176]/4",
})).s("gm_piano").gain(0.3).pan(0.8)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note("<~@63 A@2>".pickRestart({
  A: "[~@20 [a4,db5,e5,a5]@71 ~@5]/2", // A
})).s("gm_string_ensemble_2").gain(0.34)

// bass · overdriven guitar · "Strings"
const bass_2 = note("<~@28 A B C@4 D@5 E@2 F@4 G ~@19>".pickRestart({
  A: "g1", B: "~@4 d2@9 ~ g1@34",
  C: "[~@3 d2@4 ~ c2@8 ~@2 a1@9 ~@2 g1@35 ~ d2@4 ~ db2@9 ~@2 a1@10 c2@10 ~ g1@36 d2@4 ~ db2@15 ~ a1@5 c2@5 bb1@5 g1@5 ~ a1@5 g1@3 ~@2 eb1@2]/4",
  D: "[~@3 g1@5 f1@6 eb1@5 f1@5 eb1@5 d1@5 eb1@40 ~@2 e1@41 ~ c2@2 d2@2 ~@11 c2@2 ~ d2@21 ~@2 c2@2 ~ d2@3 ~@10 c2@2 d2@20 ~@4 f2@2 g2@4 ~@9 f2@2 ~ g2@21]/5",
  E: "[~@2 f2@2 ~ g2@3 ~@10 f2@2 ~ g2@21 ~@2 f2@2 ~ g2@4 ~@9 f2@2 g2@21 ~@3 f2@2 g2@3 ~@5]/2",
  F: "[~@5 f2@2 ~ g2@22 ~ f2@2 ~ g2@3 ~@10 f2@2 g2@22 ~@2 f2@2 g2@3 ~@10 f2@2 ~ g2@21 ~@2 c2@3 d2@3 ~@10 c2@2 ~ d2@21 ~@2 d2@7 ~ c2@6 ~@2 bb1@6 ~ a1@6 ~@2 bb1@4 ~]/4",
  G: "a1@2 ~ g1@12 ~@9",
})).s("gm_overdriven_guitar").gain(0.54)

// chords · drawbar organ · "Hammond"
const drawbar_organ = note("<~@48 A@8 B@8 ~>".pickRestart({
  A: "[~@30 [gb4,a4,d5]@24 [bb4,d5]@23 ~ [bb4,eb5]@22 ~@2 [g4,bb4,e5]@23 ~ [g4,bb4,f5]@23 ~ [g4,bb4,e5]@23 ~ [g4,bb4,eb5]@22 ~@2 [gb4,a4,d5]@48 [a4,c5,f5]@46 ~@2 [bb4,d5,g5]@22 ~@2 [c5,e5,g5]@22 ~@2 [a4,c5,f5]@42, ~@27 g4@23 ~@142]/8", // D Bb Eb5 Edim Gm7 Edim Eb D …
  B: "[~@6 [bb4,d5,g5]@22 ~@2 [c5,e5,g5]@23 ~ [bb4,db5,f5]@47 ~ [ab4,c5,eb5,f5]@46 ~@2 [bb4,db5,f5]@47 ~ [a4,c5,f5]@147 ~@39]/8", // Gm C Bbm Fm7 Bbm F
})).s("gm_drawbar_organ").gain(0.12).pan(0.3)

// other · distortion guitar · "Elect Guit Harmony"
const distortion_guitar_2 = note("<~@38 A B C D@2 E@3 ~@19>".pickRestart({
  A: "~@9 bb4@24 ~@2 g4@2 a4@3 ~@5 g4@3, ~@40 bb4@5 ~@3, ~@43 a4@4 ~",
  B: "f4@2 g4@3 f4@3 eb4@4 ~@11 a4@9 ~@2 bb4@3 ~@2 e4@7 ~@2", C: "~ bb4@8 ~@3 a4@8 ~@2 f4@10 ~@6 bb4@2 a4@3 bb4@3 ~@2",
  D: "[c5@9 ~ bb4@3 a4@3 bb4@3 ~@2 d4@10 ~@5 bb4@9 ~@2 a4@9 ~ g4@8 ~@3 d4@8 ~@2 c4@8 ~@2 d4@8]/2",
  E: "[~@3 eb4@8 ~@2 f4@2 ~ gb4@85 ~@43]/3",
})).s("gm_distortion_guitar").gain(0.5).pan(0.6)

// other · lead 1 square · "WooWoo"
const lead_1_square = note("<~@36 A@3 ~@26>".pickRestart({
  A: "[~@11 d4@41 ~@20]/3",
})).s("gm_lead_1_square").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@4 A@8 B@4 A@8 B@5 C D E F G H I J K L M N O P Q R S ~@3 T@8 U@4 ~@4>".pickRestart({
  A: "x!2", B: "x", C: "~@2 x ~@4 x ~@16", D: "~@3 x ~@4 x ~@9 x ~@10 x ~@18", E: "~@17 x ~@4 x ~@10 x ~@9 x ~@4",
  F: "~@6 x ~@35 x ~@4 x", G: "~@15 x ~@4 x ~@4 x ~@4 x ~@5 x ~@4 x ~@4 x ~",
  H: "~@3 x ~@4 x ~@5 x ~@4 x ~@4 x ~@4 x ~@4 x ~@13", I: "~@7 x ~@4", J: "~@11 x ~@9 x ~@2", K: "~@5 x ~@6 x ~@3",
  L: "~@3 x ~@4 x!2 ~@6", M: "~@2 x ~@15 x ~@2 x ~@22 x ~@3", N: "~@6 x!2 ~@11 x ~@4", O: "~@5 x ~@2 x ~@22 x ~@15 x",
  P: "~ x ~@23 x ~@14 x ~@2 x ~@4", Q: "~@18 x ~@15 x ~@2 x ~@10", R: "~@12 x ~@7 x ~@7 x ~@6 x ~@7 x ~@4",
  S: "x!2 ~@6", T: "~ x ~@3 x ~@2", U: "~ x ~@6",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@3 B A@4 ~@3 C A@3 D A D A D ~@12 E F G H I J K L M N ~@2 O P@3 Q P R S P ~@8
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x!3 ~@4", C: "~@13 x!2 ~", D: "~ x ~@2", E: "~ x!2", F: "~@5 x ~@20 x ~@21",
  G: "~@19 x ~@20 x ~@7", H: "~@13 x ~ x ~@18 x ~@13", I: "~@2 x ~@6 x ~@6", J: "x ~@6 x ~@6 x ~",
  K: "~@14 x ~@20 x ~@12", L: "~@8 x ~@20 x ~@18", M: "~@2 x ~@4 x ~@9 x ~@7 x ~@7 x ~@7 x ~@6", N: "x",
  O: "~@7 x!6 ~@3", P: "~@3 x ~@3 x", Q: "~@11 x!2 ~@2 x", R: "~@6 x ~@3 x ~@2 x ~@2", S: "x ~@2 x ~@3 x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@16 x ~@19 [~@37 x ~@10] [~@5 x ~@22 x ~@19] ~@27>").gain(0.56)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@3 B ~@7 C ~@3 D ~ E ~@14 F G H ~@10 I ~@2 J ~@12>".pickRestart({
  A: "~@19 x ~@2 x ~@5 x ~ x ~@17", B: "~@7 x", C: "~@9 x ~@2 x ~@3", D: "~@13 x ~@2", E: "~@10 x ~@2 x ~@2",
  F: "~@5 x ~@10", G: "~@23 x", H: "x ~ x ~ x!2 ~ x ~@40", I: "x", J: "~@14 x!2",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@13 x ~@23 [~@13 x ~@10] ~@27>").gain(0.56)

// drums · high tom
const high_tom = s("ht").struct("<~@3 A ~@3 B ~@7 C ~@3 D ~ E ~@15 F ~@10 G ~@16>".pickRestart({
  A: "~@4 x ~@2 x ~@2 x ~@2 x ~@34", B: "~@12 x!2 ~@2", C: "~@10 x!2 ~@4", D: "~@9 x!4 ~@3", E: "~@11 x ~@4",
  F: "~@36 x ~ x!2 ~ x ~ x ~ x ~@2", G: "~@12 x!4",
// … 49 more lines

More by Genesis