Strudelify
KeyE♭ majorTempo105 bpm
0:00/0:00
// Go Now — The Moody Blues
// 105 bpm, 3/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 77 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/3)

// 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 · tenor sax · "Sax"
const tenor_sax = note(`<
  A B C ~ D E@2 ~ F G H I@2 J K L@2 M N@2 ~ O P@5 Q@2 R S T U@2 V@2 ~@2 W X ~@2 Y Z AA@2 AB AC AD@2 AE AF AG ~ AH AI AJ
  AK@3 AL AM AN AO AP AQ AG ~@4 AR AS AT AU@2 ~
>`.pickRestart({
  A: "~@5 eb4", B: "~@3 eb4@2 ~ eb4@5 ~ eb4@2 ~ d4@5 ~ d4@2 ~", C: "bb3@3 ~@5", D: "~@19 d4@5",
  E: "[~@3 g3@13 ~@3 g3@4 ab3@3 ~ bb3@16 ~@5]/2", F: "~@19 ab4@4 ~", G: "f4@2 ~ f4@4 ~ eb4@2 ~ f4@6 ~@2 ab4@5",
  H: "~@3 f4@4 ~ eb4@2 ~ f4@4 ~ eb4@2 ~ g4@5", I: "[~@3 eb4@32 ~@13]/2", J: "~@3 bb4@4 ~ g4@2 ~@9 g4@5",
  K: "~@3 eb4@4 ~ d4@2 ~ bb3@6 ~@2 eb4@5", L: "[~@3 c4@32 ~@13]/2", M: "~@8 d4@2 ~ eb4@4 ~ d4@2 ~ e4@4 ~",
  N: "[b3@2 ~ d4@9 ~@2 e4@2 d4@2 ~ c4@24 ~@5]/2", O: "~@6 g4@2 g4@2 ~ g4@2 ~ g4@2 g4@2 ~ g4@5",
  P: "[~@3 g4@4 ~ g4@2 ~ g4@2 ~ g4@2 g4@2 ~ g4@11 ~@2 d4@2 ~ g4@6 ~@2 g4@70 ~@7]/5",
  Q: "[~@8 eb4@2 ~ g4@2 ~ g4@2 g4@2 ~ g4@9 ~@2 g4@2 g4@2 ~ g4@4 ~ g4@2 ~ g4@4 ~]/2",
  R: "g4@2 ~ g4@4 ~ g4@2 ~ g4@2 ~ eb4@2 eb4@2 ~ g4@4 ~", S: "g4@2 ~ g4@11 ~@2 eb4@2 ~ g4@5", T: "~@3 g4@13 ~@3 g4@5",
  U: "[~@3 g4@6 ~@2 d4@2 ~ g4@2 d4@2 ~ c4@24 ~@5]/2", V: "[~@4 d4@5 ~ d4@2 ~ d4@5 ~ d4@2 d4@7 ~@2 d4@16 ~@2]/2",
  W: "d4@6 ~@2 g3@13 ~@3", X: "g3@4 ab3@3 ~ bb3@16", Y: "ab4@4 ~ f4@2 ~ f4@4 ~ eb4@2 ~ f4@6 ~@2",
  Z: "ab4@6 ~@2 f4@4 ~ eb4@2 ~ f4@4 ~ eb4@2 ~", AA: "[g4@3 ~ eb4@16 ~@4]/2", AB: "~@8 bb4@4 ~ g4@2 ~@9",
  AC: "g4@6 ~@2 eb4@4 ~ d4@2 ~ bb3@6 ~@2", AD: "[eb4@3 ~ c4@16 ~@4]/2", AE: "~@13 d4@2 ~ eb4@4 ~ d4@2 ~",
  AF: "e4@4 ~ b3@2 ~ d4@9 ~@2 e4@2 d4@2 ~", AG: "c4", AH: "~@11 g4@2 g4@2 ~ g4@2 ~ g4@2 g4@2 ~",
  AI: "g4@6 ~@2 g4@4 ~ g4@2 ~ g4@2 ~ g4@2 g4@2 ~", AJ: "g4@11 ~@2 d4@2 ~ g4@6 ~@2", AK: "[g4@35 ~]/3",
  AL: "~@13 eb4@2 ~ g4@2 ~ g4@2 g4@2 ~", AM: "g4@9 ~@2 g4@2 g4@2 ~ g4@4 ~ g4@2 ~",
  AN: "g4@4 ~ g4@2 ~ g4@4 ~ g4@2 ~ g4@2 ~ eb4@2 eb4@2 ~", AO: "g4@4 ~ g4@2 ~ g4@11 ~@2 eb4@2 ~",
  AP: "g4@6 ~@2 g4@13 ~@3", AQ: "g4@6 ~@2 g4@6 ~@2 d4@2 ~ g4@2 d4@2 ~", AR: "~@16 ab4@4 ~ g4@2 ~",
  AS: "ab4@4 ~ g4@2 ~ ab4@4 ~ g4@2 ~ ab4@4 ~ g4@2 ~", AT: "ab4@6 ~@2 eb4@4 ~ f4@2 ~ ab4@4 ~ f4@2 ~",
  AU: "[bb4@3 ~ bb4@16 ~@4]/2",
})).s("gm_tenor_sax").gain(0.19).pan(0.3)

// chords · piano
const piano = note(`<
  ~@2 A B@3 C D E ~ A B@3 C D E F G H@3 I J@3 K H@3 I J L E ~@2 M@4 N O P ~ M@4 N O Q@2 R@4 S@4 R@4 S@2 O P M@4 N O T
  ~@2
>`.pickRestart({
  A: "~@19 [bb3,eb4,g4]@5", B: "~@3 [bb3,eb4,g4]@5 ~@3 [bb3,eb4,g4]@5 [bb3,eb4,g4]@2 ~ [bb3,eb4,g4]@5",
  C: "~@3 [bb3,eb4,g4]@5 ~@3 [bb3,eb4,g4]@5 [bb3,eb4,g4]@2 ~ [ab3,c4,eb4]@5", // Eb Ab
  D: "~@3 [ab3,c4,eb4]@5 ~@3 [ab3,c4,eb4]@5 [ab3,c4,eb4]@2 ~ [ab3,c4,f4]@5", // Ab Fm
  E: "~@3 [ab3,c4,f4]@5 ~@3 [ab3,c4,f4]@5 [ab3,c4,f4]@2 ~ [bb3,d4,f4]@5", // Fm Bb
  F: "~@3 [bb3,d4,f4]@5 ~@3 [bb3,d4,f4]@5 [bb3,d4,f4]@2 ~ [bb3,d4,f4]@5", // Bb
  G: "~@3 [bb3,d4,f4]@5 ~@3 [bb3,d4,f4]@5 [bb3,d4,f4]@2 ~ [g3,c4,eb4]@5", // Bb Cm
  H: "~@3 [g3,c4,eb4]@5 ~@3 [g3,c4,eb4]@5 [g3,c4,eb4]@2 ~ [g3,c4,eb4]@5", // Cm
  I: "~@3 [g3,c4,eb4]@5 ~@3 [g3,c4,eb4]@5 [g3,c4,eb4]@2 ~ [g3,bb3,d4]@5", // Cm Gm
  J: "~@3 [g3,bb3,d4]@5 ~@3 [g3,bb3,d4]@5 [g3,bb3,d4]@2 ~ [g3,bb3,d4]@5", // Gm
  K: "~@3 [g3,bb3,d4]@5 ~@3 [g3,bb3,d4]@5 [g3,bb3,d4]@2 ~ [g3,c4,eb4]@5", // Gm Cm
  L: "~@3 [g3,bb3,d4]@5 ~@3 [g3,bb3,d4]@5 [g3,bb3,d4]@2 ~ [ab3,c4,f4]@5", // Gm Fm
  M: "[bb3,eb4,g4]@5 ~@3 [bb3,eb4,g4]@5 ~@3 [bb3,eb4,g4]@5 [bb3,eb4,g4]@2 ~", // Eb
  N: "[ab3,c4,eb4]@5 ~@3 [ab3,c4,eb4]@5 ~@3 [ab3,c4,eb4]@5 [ab3,c4,eb4]@2 ~", // Ab
  O: "[ab3,c4,f4]@5 ~@3 [ab3,c4,f4]@5 ~@3 [ab3,c4,f4]@5 [ab3,c4,f4]@2 ~", P: "[bb3,d4,f4]@5 ~@19",
  Q: "[bb3,d4,f4]@5 ~@3 [bb3,d4,f4]@5 ~@3 [bb3,d4,f4]@5 [bb3,d4,f4]@2 ~", // Bb
  R: "[g3,c4,eb4]@5 ~@3 [g3,c4,eb4]@5 ~@3 [g3,c4,eb4]@5 [g3,c4,eb4]@2 ~", // Cm
  S: "[g3,bb3,d4]@5 ~@3 [g3,bb3,d4]@5 ~@3 [g3,bb3,d4]@5 [g3,bb3,d4]@2 ~", T: "[bb3,eb4,g4]@5 ~@3 [bb3,eb4,g4]@5 ~@11",
})).s("gm_piano").gain(0.44).pan(0.3)

// chords · epiano1 · "Piano"
const epiano1 = note(`<
  ~@2 A@4 B@8 C@7 D@4 ~ E@8 ~@2 F G H F I J K@2 L M N F O P Q R S@2 T U V@2 ~@4 T U V@2 W X Y Z AA AB AC W AD AE@2
>`.pickRestart({
  A: "[~@27 [bb3,eb4]@8 [bb3,eb4,g4]@8 ~@20 d5@4 ~@8 [g3,bb3,c4]@8 [g3,bb3,c4,eb4]@8 eb5@5, ~@19 [eb2,eb5]@24 d5@20 ~@33, ~@51 d3@16 [eb2,bb4]@24 ~@5, ~@51 [eb3,g3]@8 [eb3,g3,bb3,d4,g4]@8 ~@8 eb3@16 ~@5, ~@55 f4@12 ~@29]/4", // Eb5 Eb C7 Cm7 Eb Eb5 Eb Ebmaj7
  B: "[~@15 eb5@4 ~@8 [c4,eb4,g4]@8 [c4,eb4,g4,bb4]@8 ~@8 [ab3,c4,eb4]@8 [ab3,c4,eb4,f4]@8 ~@8 [ab3,bb3,d4]@8 f4@8 ~@8 ab3@8 ~@4 f3@4 ~@8 [bb3,eb4]@8 [bb3,eb4,g4]@8 ~@8 [eb3,g3,bb3,d4]@8 ~@4 g4@4 ~@8 [g3,bb3,c4]@8 [g3,bb3,c4,eb4]@8 eb5@5, ~@3 eb3@16 [ab2,c5]@24 [f2,eb5]@24 bb1@24 [bb1,f4]@24 [eb2,eb5]@24 [eb2,d5]@24 [eb2,bb4]@24 ~@5, ~@3 [g3,bb3]@8 [g3,bb3,eb4,bb4]@8 ~@8 ab3@16 ~@32 f3@32 ab3@8 ~@40 [eb3,g3,bb3,d4]@8 ~@8 eb3@16 ~@5, ~@7 g4@12 ~@48 ab4@48 ~@77, ~@83 [ab3,bb3,d4]@16 [bb3,d4]@16 ~@77]/8", // Cm Cm7 Ab Fm7 Bb7 Eb5 Eb Ebmaj7 …
  C: "[~@15 eb5@4 ~@20 g5@4 ~@8 [f3,ab3,c4,eb4]@8 ~@4 ab4@4 ~@20 d5@4 ~@8 [ab3,b3,d4]@8 [ab3,b3,d4,f4]@8 ~@8 [c4,eb4,g4]@8 g4@8 g4@8 c4@8 ~@4 g3@4 c5@5, ~@3 eb3@16 ~@8 [ab3,c4]@8 [ab3,c4,eb4,g4,c5]@8 ~@16 [f3,ab3,c4,eb4]@8 ~@8 d3@16 [b1,b4]@24 c2@24 c2@24 ~@5, ~@3 [g3,bb3]@8 [g3,bb3,eb4,bb4]@8 ~@8 g3@16 [f2,eb5]@24 ~@8 [f3,ab3]@8 [f3,ab3,bb3,d4,ab4]@8 ~@8 f3@16 ~@8 g3@32 c4@8 ~@5, ~@7 g4@12 eb5@24 ~@24 d5@20 ~@28 c5@48 ~@5, ~@31 bb4@12 ~@36 f4@12 ~@40 [c4,eb4]@16 [eb4,g4]@16 ~@5]/7", // Fm7 Abdim Cm Ab Abmaj7 Fm7 B Gm …
  D: "[~@15 eb5@4 ~@20 g4@4 ~@8 [d4,g4,bb4]@8 ~@16 [d4,g4]@8 [bb3,d4,g4]@8 ~@5, ~@3 eb3@16 [c2,eb5]@24 g2@24 [g2,d5]@24 ~@5, ~@3 [g3,c4]@8 [g3,c4,eb4,c5]@8 ~@8 [g3,c4,eb4]@8 [g3,c4,eb4,c5]@8 ~@8 bb3@32 ~@13, ~@7 g4@12 ~@12 g4@8 ~@4 g5@48 ~@5, ~@59 [d4,g4,bb4]@16 bb4@16 ~@5]/4", // Gm G5 Gm Cm G5 C5 Cm Gm
  E: "[~@39 eb5@4 ~@20 g4@4 ~@8 [c4,eb4,g4]@8 g4@8 g4@8 c4@8 ~@4 g3@4 ~@8 [d4,g4,bb4]@8 bb4@8 bb4@8 d4@8 ~@4 bb3@4 ~@8 [ab3,c4,eb4]@8 [ab3,c4,eb4,f4]@8 [bb1,d5]@5, ~@19 c5@16 ~@32 c5@48 d5@48 ~@29, ~@27 eb3@16 [c2,eb5]@24 c2@24 c2@24 g2@24 g2@24 [f2,c5]@24 ~@5, ~@27 [g3,c4]@8 [g3,c4,eb4,c5]@8 ~@8 [g3,c4,eb4]@8 [g3,c4,eb4,c5]@8 ~@8 g3@32 c4@8 ~@8 bb3@32 d4@8 ~@8 f3@16 ~@5, ~@31 g4@12 ~@12 g4@8 ~@20 [c4,eb4]@16 [eb4,g4]@16 ~@16 [d4,g4]@16 [g4,bb4]@16 ~@29]/8", // Cm Gm Ab Fm7 Bb Cm F5 C5 …
  F: "~ [bb3,eb4] [bb3,eb4,g4], [eb2,eb5]", G: "~ [g3,bb3,d4] [g3,bb3,d4,f4], [eb2,bb4], ~ eb3@2",
  H: "~ [g3,bb3,c4] [g3,bb3,c4,eb4], [eb2,bb4], ~ eb3@2", // C7 Cm7 Eb5
  I: "~@2 [ab3,c4,eb4,g4]@2 ~ c5, [ab2,g5], ~@2 [ab3,c4,eb4,g4]", // Abmaj7
  J: "~@2 [f3,ab3,c4,eb4]@2 ~ ab4, [f2,eb5], ~@2 [f3,ab3,c4,eb4]", // Fm7 F7 Fm7
  K: "[~@2 [ab3,bb3,d4]@2 f4@2 ~@2 [ab3,bb3,d4]@2 ~ ab4, bb4, bb1 bb1, ~ f3@2 f4@2 [ab3,d4,f4], ~ [ab3,bb3,d4] f3]/2", // Bb7 Ddim Bb7
  L: "~ [bb3,eb4] [bb3,eb4,g4], [eb2,eb5], ~ g3@2", M: "~@5 d5, d5@5 ~, ~ d3@2, ~ [eb3,g3] [eb3,g3,bb3,d4,g4], ~ f4",
  N: "~ [g3,bb3,c4] [g3,bb3,c4,eb4], [eb2,g4], ~ eb3@2", O: "~ [c4,eb4,g4] [c4,eb4,g4,bb4], [ab2,eb5], ~ ab3@2",
  P: "~@5 eb5, c5, ~ eb3@2, ~ [f3,ab3] [f3,ab3,c4,eb4,ab4], ~ f4", // Fm Fm7
  Q: "~ [ab3,bb3,d4] [ab3,bb3,d4,f4], [bb1,ab4], ~ f3@2", R: "~@5 d5, b4, ~ d3@2, ~ [f3,ab3] [f3,ab3,b3,d4,ab4], ~ f4",
  S: "[~@2 [c4,eb4,g4]@2 g4@2 g4@2 c4@2 ~ g3, c5, c2 c2, ~ g3@4 c4, ~ [c4,eb4] [eb4,g4]]/2", // Cm Eb
  T: "~@5 eb5, c5@2 ~, ~ eb3@2, ~ [g3,c4] [g3,c4,eb4,c5], ~ g4", // C5 Cm
  U: "~@5 g4, [c2,eb5], ~ [g3,c4,eb4] [g3,c4,eb4,c5], ~@3 g4@2 ~", // Cm
  V: "[~@2 [d4,g4]@2 bb4@2 ~@2 [d4,g4]@2 ~ d5, g5, g2 g2, ~ bb3@2 bb4@2 [d4,bb4], ~ [d4,g4] bb3]/2", // G5 Gm G5
  W: "~ [ab3,c4,eb4] [ab3,c4,eb4,f4], [f2,c5], ~ f3@2", X: "~ [ab3,bb3,d4] [ab3,bb3,d4,f4], [bb1,d5]",
  Y: "~@5 eb5, eb5@5 ~, ~ eb3@2, ~ [g3,bb3] [g3,bb3,eb4,bb4], ~ g4", // Gm Eb
  Z: "~@2 [eb3,g3,bb3,d4]@2 ~ g4, [eb2,d5], ~@2 [eb3,g3,bb3,d4]", // Ebmaj7
  AA: "~@2 [eb3,g3,bb3,c4]@2 ~ g4, [eb2,c5], ~@2 [eb3,g3,bb3,c4]", // Cm7 Cm Cm7
  AB: "~@2 [g3,bb3,eb4]@2 ~ bb4, [eb2,eb5], ~@2 [g3,bb3,eb4]", // Eb
  AC: "~@5 ab5, ab5@5 ~, ~ ab3@2, ~ [c4,eb4] [c4,eb4,ab4,eb5], ~ c5", // Cm Ab
  AD: "~@2 eb4!2 ~ bb4, eb5, ~ [eb3,g3,bb3] [eb3,g3,bb3,eb4,g4]", AE: "[~ [g4,bb4,eb5]@39 ~@8, [eb2,g3,bb3]@5 ~]/2",
})).s("gm_epiano1").gain(0.16).pan(0.9)

// chords · epiano1 · "Piano" · soft notes
const epiano1_soft = note(`<
  ~@3 A@2 B@2 ~ C ~@2 D ~ E@3 F@2 ~@2 G@2 H ~@3 G@2 H ~@7 I ~@2 I ~@3 J ~ K ~ I ~ L ~ M ~@2 N O ~ P ~@4 N O ~ P ~ Q R
  ~@3 S ~ T U@2
>`.pickRestart({
  A: "[~@3 g3@16 ~@8 bb3@8 ~@13, ~@19 eb2@24 ~@5]/2", B: "[~@27 eb4@8 ~@13, ~@19 eb2@24 ~@5]/2", C: "~@3 f3@16 ~@5",
  D: "~@3 g3@16 ~@5", E: "[~@27 eb4@8 ~@16 eb4@8 ~@13, ~@19 eb2@24 ab2@24 ~@5]/3",
  F: "[~@27 bb3@8 ~@13, ~@19 bb1@24 ~@5]/2", G: "[~@27 eb4@8 ~@13, ~@19 c2@24 ~@5]/2", H: "~@3 eb3@16 ~@5", I: "~ g3@2",
  J: "~@2 bb3", K: "~ bb3 ~, eb2", L: "~ c4 ~, f2", M: "~ b3 ~, b1", N: "~ eb4 ~, c2", O: "~ eb3@2", P: "~@2 g4",
  Q: "~ f3@2", R: "~ eb4 ~, eb2", S: "~ ab4 ~, ab2", T: "eb2", U: "[eb3@5 ~]/2",
})).s("gm_epiano1").gain(0.08).pan(0.9)

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  ~@2 A@8 B@8 C@8 D@6 E@3 ~ F G H F I J K L M N H M I J O P Q R S Q T U@2 V Q R Q R U V W O F N H M X J Y Z ~
>`.pickRestart({
  A: "[~@19 eb2@8 [bb3,g4]@8 [bb3,g4]@3 ~@5 eb2@8 [g3,d4]@8 [g3,d4]@3 ~@5 eb2@8 [eb3,g3,c4]@8 [eb3,g3,c4]@3 ~@5 eb2@8 [g3,bb3,g4]@8 [g3,bb3,g4]@3 ~@5 ab2@8 [c4,g4]@8 [c4,g4]@3 ~@5 f2@8 [ab3,eb4]@8 [ab3,eb4]@3 ~@5 bb2@8 [f3,ab3,d4]@8 [f3,ab3,d4]@2 ~@6 bb2@5]/8", // Eb G5 Cm Gm C5 Ab5 Ddim
  B: "[~@3 [f3,ab3,d4]@7 ~ [f3,ab3]@3 ~@5 eb2@8 [bb3,g4]@8 [bb3,g4]@3 ~@5 eb2@8 [eb3,g3,d4]@8 [eb3,g3,d4]@3 ~@5 eb2@8 [g3,c4]@8 [g3,c4]@3 ~@5 eb2@8 [g3,bb3,g4]@8 [g3,bb3,g4]@3 ~@5 ab2@8 [ab3,c4,g4]@8 [ab3,c4,g4]@3 ~@5 f2@8 [ab3,eb4]@8 [ab3,eb4]@3 ~@5 bb2@8 [ab3,d4]@8 [ab3,d4]@3 ~@5 b2@5, ~@11 d4 ~@180]/8", // Ddim Fm Eb Ebmaj7 C5 Gm Abmaj7 Ab5 …
  C: "[~@3 [ab3,d4]@8 [ab3,d4]@3 ~@5 c3@8 [g3,c4,g4]@7 ~ [g3,c4]@7 ~ c3@8 [g3,c4,g4]@8 [g3,c4,g4]@2 ~@6 c3@8 [g3,c4,g4]@7 ~ [g3,c4]@7 ~ c3@8 [g3,c4,g4]@8 [g3,c4,g4]@2 ~@6 g2@8 [bb3,d4,bb4]@8 [bb3,d4,bb4]@2 ~@6 g2@8 [bb3,d4,bb4]@7 ~ [bb3,d4]@3 ~@5 g2@8 [bb3,d4,bb4]@7 ~ [bb3,d4]@7 ~ g2@5, ~@35 g4@2 ~@46 g4@2 ~@70 bb4 ~@23 bb4@2 ~@11]/8", // Abdim C5 Bb
  D: "[~@3 [bb3,d4,bb4]@8 [bb3,d4,bb4]@2 ~@6 c3@8 [g3,c4,g4]@8 [g3,c4,g4]@2 ~@6 c3@8 [g3,c4,g4]@7 ~ [g3,c4]@3 ~@5 c3@8 [g3,c4,g4]@8 [g3,c4,g4]@2 ~@6 c3@8 [g3,c4,g4]@7 ~ [g3,c4]@3 ~@5 g2@8 [bb3,d4,bb4]@7 ~ [bb3,d4]@7 ~ g2@5, ~@59 g4 ~@47 g4 ~@23 bb4@2 ~@11]/6", // Bb C5 Bb
  E: "[~@3 [bb3,d4,bb4]@8 [bb3,d4,bb4]@2 ~@6 f2@8 [ab3,eb4]@8 [ab3,eb4]@3 ~@5 bb2@9 ~@20]/3", // Bb Ab5
  F: "eb2@8 [g3,bb3,g4]@8 [g3,bb3,g4]@3 ~@5", G: "eb2@8 [eb3,g3,d4]@8 [eb3,g3,d4]@3 ~@5",
  H: "eb2@8 [g3,c4]@8 [g3,c4]@3 ~@5", I: "ab2@8 [ab3,c4,g4]@8 [ab3,c4,g4]@3 ~@5",
  J: "f2@8 [f3,ab3,eb4]@8 [f3,ab3,eb4]@3 ~@5", K: "bb2@4 [f3,ab3,d4]@4 [f3,ab3,d4] ~@3",
  L: "bb2@8 [f3,ab3,d4]@7 ~ [f3,ab3]@3 ~@5, ~@16 d4 ~@7", M: "eb2@8 [bb3,g4]@8 [bb3,g4]@3 ~@5",
  N: "eb2@8 [g3,d4]@8 [g3,d4]@3 ~@5", O: "bb2@8 [f3,ab3,d4]@8 [f3,ab3,d4]@3 ~@5", P: "b2@8 [ab3,d4]@8 [ab3,d4]@3 ~@5",
  Q: "c3@4 [g3,c4,g4]@4 [g3,c4,g4] ~@3", R: "c3@8 [g3,c4,g4]@7 ~ [g3,c4]@3 ~@5, ~@16 g4 ~@7",
  S: "c3@8 [g3,c4,g4]@7 ~ [g3,c4]@7 ~, ~@8 g4 ~@3", T: "g2@8 [bb3,d4,bb4]@7 ~ [bb3,d4]@7 ~, ~@8 bb4 ~@3",
  U: "g2@4 [bb3,d4,bb4]@4 [bb3,d4,bb4] ~@3", V: "g2@8 [bb3,d4,bb4]@7 ~ [bb3,d4]@3 ~@5, ~@16 bb4 ~@7",
  W: "f2@8 [ab3,eb4]@8 [ab3,eb4]@3 ~@5", X: "ab2@8 [eb4,c5]@8 [eb4,c5]@3 ~@5",
  Y: "eb2 [g3,bb3,g4] [g3,bb3], ~@8 g4 ~@3", Z: "~ [g3,bb3,g4]@19 ~@4, eb2@17 ~@7",
})).s("gm_acoustic_guitar_nylon").gain(0.21).pan(0.1)

// other · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@2 A@8 B@8 C@8 D@8 ~@2 E F@2 E G H I@2 E F@2 E G H@3 J@4 K@4 J@4 K@2 H@2 E F@2 E L H M@2 ~
>`.pickRestart({
  A: "[~@19 g3@24 eb3@24 eb3@24 g3@24 ab3@24 f3@24 f3@29]/8",
  B: "[~@19 g3@24 eb3@24 eb3@24 g3@24 ab3@24 f3@24 f3@24 f3@5]/8", C: "[~@19 g3@48 g3@48 bb3@48 bb3@29]/8",
  D: "[~@19 g3@48 g3@48 bb3@48 f3@24 f3@5]/8", E: "g3", F: "eb3", G: "ab3", H: "f3", I: "f3/2", J: "g3/2", K: "bb3/2",
  L: "c4", M: "[eb3,eb4,bb4,g5]/2",
})).s("gm_string_ensemble_2").gain(0.24).pan(1)

// bass · acoustic bass · "Bass"
const bass = note("<~@2 A@8 B@8 C@8 D@8 ~@2 E@4 F G H@2 E@4 F G H I J@4 K@4 J@4 K@2 G H E@4 F G L M ~>".pickRestart({
  A: "[~@19 eb2@21 ~@3 eb2@21 ~@3 eb2@21 ~@3 eb2@21 ~@3 ab1@21 ~@3 f1@21 ~@3 bb1@21 ~@3 bb1@5]/8",
  B: "[~@19 eb2@21 ~@3 eb2@21 ~@3 eb2@21 ~@3 eb2@21 ~@3 ab1@21 ~@3 f1@21 ~@3 bb1@21 ~@3 b1@5]/8",
  C: "[~@19 c2@21 ~@3 c2@21 ~@3 c2@21 ~@3 c2@21 ~@3 g1@21 ~@3 g1@21 ~@3 g1@21 ~@3 g1@5]/8",
  D: "[~@19 c2@21 ~@3 c2@21 ~@3 c2@21 ~@3 c2@21 ~@3 g1@21 ~@3 g1@21 ~@3 f1@21 ~@3 bb1@5]/8", E: "eb2@7 ~", F: "ab1@7 ~",
  G: "f1@7 ~", H: "bb1@7 ~", I: "b1@7 ~", J: "c2@7 ~", K: "g1@7 ~", L: "eb2@2 bb2", M: "eb2@23 ~",
})).s("gm_acoustic_bass").gain(0.27).pan(0)

// drums · kick
const kick = s("bd").struct("<~@2 [~@19 x ~@4]!32 ~@2 x!40 ~>").gain(0.32)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@3 [~@17 x ~@6]!31 ~@2 [~@11 x]!39 ~@2>").gain(0.16)

// drums · rim
const rim = s("rim").struct("<~@3 [~@3 x ~@7 x ~@12]!31 ~@2 [~ x!2]!39 ~@2>").gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@10 A ~@7 B ~@7 C ~@9 D ~@6 E ~@7 F ~@7 F D ~@6 G ~@6 H D ~>".pickRestart({
  A: "~@11 x ~@3 x ~@3 x ~@4", B: "~@7 x ~@3 x ~@7 x ~@4", C: "~@7 x ~@3 x ~@3 x ~@8", D: "x", E: "~@3 x!2 ~",
  F: "~@3 x!3", G: "~@6 x ~ x ~ x!2", H: "~@6 x ~ x!4",
})).gain(0.24)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@26 A ~@16 B ~@7 B ~@7 B ~@17>".pickRestart({
  A: "~@13 x ~@10", B: "~@3 x",
})).gain(0.16)

// drums · hihat
const hihat = s("hh").struct("<~@3 [~@3 x ~@7 x ~@12]!31 ~@2 [~ x!2]!39 x ~>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@10 A ~@7 A ~@17 B ~@23 B ~@14 B ~>".pickRestart({
  A: "~@19 x ~@4", B: "x",
})).gain(0.24)

// drums · ride
const ride = s("rd").struct("<~@2 A B@7 C B@7 C B@15 ~@2 D E@23 D E@13 F ~@2>".pickRestart({
  A: "~@19 x ~@4", B: "~@3 x ~@7 x ~@7 x ~@4", C: "~@3 x ~@7 x ~@12", D: "~ x!2", E: "x!3", F: "x!6",
})).gain(0.32)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@3 A ~ A@3 ~@3 B ~ A@3 ~@3 C A@6 ~ A@3 ~ A ~@4 D E ~ E@3 ~@5 E ~ E ~@2 E ~ E@4 ~@2 D E ~ E@3 ~@2 E@2 ~ E ~ E ~@3
>`.pickRestart({
  A: "~@17 x ~@6", B: "~@15 x ~ x ~@6", C: "~@5 x ~@2", D: "~@10 x!2", E: "~@11 x",
})).gain(0.16)

stack(
  tenor_sax, piano, epiano1, epiano1_soft, acoustic_guitar_nylon, string_ensemble_2, bass, kick, kick_soft, rim, snare,
  snare_soft, hihat, crash, ride, ride_soft
)

More by The Moody Blues