Strudelify

Sleepwalk

Ann Farina

KeyC majorTempo85 bpm
0:00/0:00
// Sleepwalk — Ann Farina
// 85 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "brass" named as a brass, played on brass section (its piano patch is not one)
// note: Full arrangement: all 79 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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.

// bass · acoustic bass · "bass"
const bass = note(`<
  ~@2 A B C D E F G H I J K L M N K O P Q R S T O U V W X Y Z W X AA AB K AC R AD AE AF AG AH AI AJ M AK AL AM AG J M AH
  K AJ AN AO AP AQ W AR Y AS W AR AT AU AV AJ K AW AX L AY AZ BA BB BC BD Y
>`.pickRestart({
  A: "c2@5 c2 c2@4 g1 g#1", B: "a1@5 a1 a1@4 e2!2", C: "f2@10 f2 ~ f2@8 f3@2 c3@2", D: "g2@5 g2 g2@4 d2 b1",
  E: "c2@10 c2 ~ c2@8 c3@2 g2@2", F: "a1@10 a1 ~ a1@8 a2@2 e2@2", G: "f2@5 f2 f2@4 c2 f#2",
  H: "g2@10 g2 ~ g2@8 g3@2 d3@2", I: "c2@6 c2 ~ c2@2 c2@2 a1@6 a1 ~ g2@2 f#2@2", J: "f2@5 f2 g2@6", K: "c2@5 c2 a1@6",
  L: "f2@5 f2 g2@5 g2", M: "c2@12 a1@6 a1 ~ a1@2 a1@2", N: "f2@6 c2 ~ f2@2 f#2@2 g2@12", O: "f2@3 f2!3 g2@5 g2",
  P: "c2@6 c2 ~ c2@2 c2@2 a1@6 a1 ~ g2@2 e2@2", Q: "f2@6 c2 ~ f2@2 f#2@2 g2@6 d2 ~ b1@2 g1@2",
  R: "c2@10 c2@2 a1@6 a1 ~ a1@2 a1@2", S: "f2 g2", T: "c2@6 c2 ~ c2@2 c2@2 a1@10 a1@2", U: "c2@5 c2 f2@4 e2 d2",
  V: "c2@6 c2 ~ c2@2 c2@2 c2@8 d2@2 e2@2", W: "f2@4 a2 c3 f3@3 c2@3", X: "f2@5 c3 f3@4 e3 d3",
  Y: "c2@4 e2 g2 c3@3 g2@3", Z: "g2@4 a#2 d3 c2@3 g2@3", AA: "c2@8 g2 ~ g2@2 g#2@6 d#2@6",
  AB: "g2@8 d2 ~ d2@2 g2@8 d2 ~ d2@2", AC: "f2@6 f2 ~ f2@2 f2@2 g2@6 f2@2 e2@2 d2@2",
  AD: "f2@6 c3 ~ a#2@2 g#2@2 g2@6 d2 ~ b1@2 g1@2", AE: "c2@6 a1@5 a1", AF: "f2@6 g2@5 g2",
  AG: "c2@6 c2 ~ c2@2 c2@2 a1@12", AH: "f2@5 f2 g2@3 g2!3", AI: "c2@6 c2 ~ c2@2 g1@2 a1@10 a1@2",
  AJ: "f2@10 f2@2 g2@6 g2 ~ g2@2 g2@2", AK: "f2@3 c2 f2 g#2 g2@5 g2", AL: "c2@3 c2!3 a1@6", AM: "f2@3 f2!3 g2@6",
  AN: "c2@6 a1@3 a1!3", AO: "f2@12 g2@6 g2 ~ g2@2 g2@2", AP: "c2@5 c2 f2@6", AQ: "c2@5 c2 c2@6",
  AR: "f2@4 g#2 c3 f3@3 c2@3", AS: "g2@4 a#2 d3 c2@4 d2 e2", AT: "c2@8 e2@2 g2@2 g#2@8 d#2 ~ d#2@2",
  AU: "g2@8 d2 ~ d2@2 g2@8 d2@2 g2@2", AV: "c2 a1", AW: "f2@6 f2 ~ f2@2 f2@2 g2@6 f2 ~ e2@2 b1@2",
  AX: "c2@6 c2 ~ c2@2 g1@2 a1@12", AY: "c2@8 e2@2 g2@2 a1@8 e2 ~ e2@2", AZ: "f2@4 g#2 c3 g2@4 d2 g2",
  BA: "c2@8 g1 ~ g1@2 a1@6 e2@6", BB: "f2@8 c2 ~ c2@2 g2@8 d2 ~ d2@2", BC: "c2@8 g1 ~ g1@2 a1@8 e2@2 a1@2",
  BD: "f2@4 g#2 c3 g2@3 d2@3",
})).s("gm_acoustic_bass").gain(0.35)

// chords · epiano1 · "keyboard"
const epiano1 = note(`<
  ~@2 A B C D A E F G H I H I H I H I H I H I H I J K L C M N O P Q R S I H I H I H I H I H I H I H I H I H I H I J K T
  U V W O X Y Z S I H I H I H AA H AB AC AA A
>`.pickRestart({
  A: "[g3,c4,e4]", B: "[c4,e4] ~@23, a3", C: "[g#3,f4], c4 ~@23", D: "[b3,d4,g4], f4 ~@23",
  E: "[a3,a4]@6 ~@2 [a3,c4,e4]@3 ~ [a3,c4,e4,a4]@11 ~, [c4,e4] ~@23", F: "[g#3,c4,f4]",
  G: "[b3,g#4,d#5]@6 ~@2 [b3,d4,f4,g4]@3 ~ [b3,f4,g#4,d#5]@11 ~, f4 ~@23", H: "[g3,c4,e4] [a3,c4,e4]",
  I: "[g#3,f4] [b3,d4,f4,g4], c4 ~@23", J: "[g3,c4,e4] [a3,c4,f4]", K: "[g3,e4] [a#3,e4,g4], c4 ~@11 c4 ~@11",
  L: "~ c4 [a3,c4,f4]@3 [a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2, f3", // F
  M: "e4@7 ~ g4 c5 g4 e4, g3@23 ~, c4 ~@13 e4@8 ~@2", N: "[d4,f4,g4,a#4]@6 ~@3 e5 f5 g5, ~ [a#3,c4,e4,g4]",
  O: "[a3,f4], c4 ~@23", P: "[c4,f4] ~@13 g#4@2 c5@2 f5@2 c5@2 g#4@2, g#3@23 ~",
  Q: "[g3,c4,e4]@3 ~@7 g4@2 [c4,d#4,f#4,g#4]@12, ~ [g3,c4,e4]@2 ~@3, ~@2 c5 ~@3", // C G#7 C
  R: "[b3,d4,f4,g4]@3 ~ g4@4 ~@2 d4@2 [g3,b3,d#4]@12, ~ [b3,f4]@2 ~@3, ~@2 d4@3 ~@7, ~@2 g4 ~@3", // G7 Gaug Bdim
  S: "[c4,e4] [a3,c4,e4], g3 ~@23", T: "~ c4 [a3,c4,f4]@3 [a3,c4,f4] [a3,c4,f4]@2 [a3,c4,f4]@2 [f3,a3,c4,f4]@2, f3@5 ~",
  U: "~ c4 [g#3,c4,f4]@3 [g#3,c4,f4] [g#3,c4,f4]@2 [g#3,c4,f4]@2 [f3,g#3,c4,f4]@2, f3@5 ~", // Fm
  V: "~@2 g3@2 [g3,c4,e4]@6 [g3,c4,e4]@2 [g3,c4,e4]@4 [c4,e4]@4 [e3,c4,g4]@3 ~, c3, ~@2 g3", // C
  W: "[a#3,d4,f4,g4]@3 ~ g4@4 ~@2 d4@2 [a#3,c4,e4,g4]@3 ~@7 g4@2, ~ [a#3,f4]@2 ~ [a#3,c4,e4]@2, ~@2 d4@3 ~@5 c5@2, ~@4 g4@2 ~@2 g4@3 ~", // Gm7 C7 A#5 C7
  X: "[c4,f4] ~@23, g#3", Y: "[g3,e4] [d#4,f#4,g#4], c4 ~@11 c4 ~@11", Z: "[b3,d4,f4,g4] [g3,b3,d#4]",
  AA: "[g#3,f4]@3 ~@7 c5@2 [b3,d4,f4,g4]@3 ~ g4@4 ~@2 d4@2, c4 ~@3 [g#3,c4,f4]@8 ~@4 [b3,f4]@8, ~@4 f5@2 ~@2 d4@3 ~, ~@5 g4", // C# G7 Fm Bdim
  AB: "[g#3,f4]@12 [b3,d4,f4,g4]@3 ~ g4@4 ~@2 d4@2, c4 ~@15 [b3,f4]@8, ~@8 d4@3 ~, ~@5 g4", // C# G7 Bdim
  AC: "[g3,c4,e4]@3 ~@7 g4@2 [a3,c4,e4]@12, ~ [g3,c4,e4]@2 ~@3, ~@2 c5 ~@3", // C Am C
})).s("gm_epiano1").gain(0.4)

// chords · acoustic guitar steel · "guitar chords"
const acoustic_guitar_steel = note(`<
  ~@2 A B C D A E C F G H I J I J K J L M N O P O Q R S T U V W X Y Z L J G H L AA I O I J AB AC AD M K H AD M L H L H
  AE R AF AG AH AI S AJ AK AL AM H AB O L J AM AN AD H P J AO
>`.pickRestart({
  A: "~@3 [e4,c5] ~@5 [e4,c5] ~@2", B: "~@6 [c4,e4]@2 ~@10 [c4,e4] ~@5", C: "~@6 [f4,c5] ~@11 [f4,c5]@2 ~@4",
  D: "~@6 [f4,g4,b4] ~@11 [f4,g4,b4] ~@5", E: "~@3 [c4,a4] ~@5 [c4,a4] ~@2", F: "~@3 [f4,b4] ~@5 [f4,b4] ~@2",
  G: "[e4,g4,c5]@5 ~ [e4,g4,c5] ~@11 [c4,a4] ~@5", H: "~@6 [f4,c5] ~@5 [f4,g4,b4]@5 ~ [f4,g4,b4] ~@5",
  I: "~@6 [e4,c5] ~@5 [c4,e4,a4]@5 ~ [c4,e4,a4] ~@5", J: "~@6 [f4,c5] ~@11 [f4,b4] ~@5",
  K: "[e4,g4,c5]@5 ~ [e4,g4,c5] ~@5 c4@5 ~ c4 ~@5, ~@4 [e4,a4]@3 ~", // C A5
  L: "~@6 [e4,c5] ~@5 c4@5 ~ c4 ~@5, ~@4 [e4,a4]@3 ~", M: "f4@5 ~ f4 ~@5 [f4,g4,b4]@5 ~ [f4,g4,b4] ~@5, [g#4,c5]@3 ~@5",
  N: "[e4,g4,c5]@5 ~ [e4,g4,c5] ~@5 [c4,e4,a4]@5 ~ [c4,e4,a4] ~@5", O: "~@6 [f4,c5] ~@5 f4@5 ~ f4 ~@5, ~@4 [g4,b4]@3 ~",
  P: "~@6 [e4,c5] ~@11 [c4,a4] ~@5", Q: "~@6 [e4,c5] ~@11 [f4,c5] ~@5", R: "~@6 [e4,c5] ~@11 [e4,a#4] ~@5",
  S: "~@6 [f4,a4] ~@9 a3 ~ f4@4 a4 ~", T: "~@6 [f4,g#4,c5] ~@5 [f4,g#4,c5] ~@3 c4 ~ [f4,g#4,c5]@2 ~@4",
  U: "~@4 g3@2 [e4,g4] ~@9 g3 ~ [e4,g4] ~@5", V: "~@6 [f4,a#4] ~@5 [e4,g4,a#4]@5 ~ [e4,g4,a#4] ~@5",
  W: "~@4 a3@2 [f4,a4] ~@9 a3 ~ [f4,a4] ~@5", X: "~@4 g#3@2 [f4,g#4] ~@9 g#3 ~ [f4,g#4] ~@5",
  Y: "e4@5 ~ e4 ~@5 f#4@5 ~ f#4 ~@5, [g4,c5]@3 ~ [g#4,c5]@3 ~", Z: "[f4,g4,b4]@5 ~ [f4,g4,b4] ~@11 [g4,d#5] ~@5",
  AA: "f4@5 ~ f4 ~@11 [f4,b4] ~@5, [g#4,c5]@3 ~@5", AB: "e4@5 ~ e4 ~@5 c4@5 ~ c4 ~@5, [g4,c5]@3 ~ [e4,a4]@3 ~",
  AC: "[f4,g#4,c5]@5 ~ [f4,g#4,c5] ~@5 f4@5 ~ f4 ~@5, ~@4 [g4,b4]@3 ~", // Fm G
  AD: "e4@5 ~ e4 ~@5 [c4,e4,a4]@5 ~ [c4,e4,a4] ~@5, [g4,c5]@3 ~@5", AE: "~@6 [e4,c5] ~@5 [f4,a4,c5]@5 ~ [f4,a4,c5] ~@5",
  AF: "~@6 [f4,a4,c5] ~@5 [f4,a4,c5] ~@3 c4 ~ [f4,a4,c5]@2 ~@4", AG: "~@6 [f4,g#4,c5] ~@9 c4 ~ [f4,g#4,c5] ~@5",
  AH: "~@6 [e4,g4,c5] ~@9 c4 ~ [e4,g4,c5] ~@5", AI: "[f4,g4,a#4]@5 ~ [f4,g4,a#4] ~@11 [e4,a#4] ~@5",
  AJ: "~@6 [f4,g#4] ~@9 g#3 ~ f4@4 g#4 ~", AK: "e4@5 ~ e4 ~@5 [f#4,g#4,c5]@5 ~ [f#4,g#4,c5] ~@5, [g4,c5]@3 ~@5",
  AL: "~@6 [f4,b4] ~@5 [g4,b4,d#5]@5 ~ [g4,b4,d#5] ~@5", AM: "e4@5 ~ e4 ~@11 [c4,a4] ~@5, [g4,c5]@3 ~@5",
  AN: "[f4,g#4,c5]@5 ~ [f4,g#4,c5] ~@11 [f4,b4] ~@5", AO: "~@6 [e4,g4] ~@11 [g3,e4] ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.24)

// chords · piano · "piano triplets"
const piano = note(`<
  ~@2 A B C D A B C D E F E F E F E F E F E F E F G H I J K L I J M N E F E F E F E F E F E F E F E F E F E F E F G H I
  J K O I J M N E F E F E F P Q P Q P Q K
>`.pickRestart({
  A: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
  B: "[a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~", // Am
  C: "[g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~", // Fm
  D: "[b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~", // G7
  E: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~", // C Am
  F: "[g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~", // Fm G7
  G: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // C F
  H: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4] ~", // C C7
  I: "[a3,c4,f4] ~ [a3,c4,f4]!3 ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  J: "[g#3,c4,f4] ~ [g#3,c4,f4]!3 ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~", // Fm
  K: "[g3,c4,e4] ~ [g3,c4,e4]!3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
  L: "[a#3,d4,f4,g4] ~ [a#3,d4,f4,g4]!3 ~ [a#3,d4,f4,g4] ~ [a#3,d4,f4,g4] ~ [a#3,d4,f4,g4] ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4]!3 ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4] ~", // Gm7 C7
  M: "[g3,c4,e4] ~ [g3,c4,e4]!3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [c4,d#4,f#4,g#4] ~ [c4,d#4,f#4,g#4]!3 ~ [c4,d#4,f#4,g#4] ~ [c4,d#4,f#4,g#4] ~ [c4,d#4,f#4,g#4] ~", // C G#7
  N: "[b3,d4,f4,g4] ~ [b3,d4,f4,g4]!3 ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [g3,b3,d#4] ~ [g3,b3,d#4]!3 ~ [g3,b3,d#4] ~ [g3,b3,d#4] ~ [g3,b3,d#4] ~", // G7 Gaug
  O: "[f4,g4,a#4,d5] ~ [f4,g4,a#4,d5]!3 ~ [f4,g4,a#4,d5] ~ [f4,g4,a#4,d5] ~ [f4,g4,a#4,d5] ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4]!3 ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4] ~", // Gm7 C7
  P: "[g3,c4,e4] ~ [g3,c4,e4]!3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4]!3 ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~", // C Am
  Q: "[g#3,c4,f4] ~ [g#3,c4,f4]!3 ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4]!3 ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4] ~", // Fm G7
})).s("gm_piano").gain(0.3)

// chords · brass section · "brass"
const brass_section = note("<~@58 A B C D E F G H I J K L M N O P Q R S T ~>".pickRestart({
  A: "~@4 [a4,c5] ~@2 [a4,c5]@3 ~@2 [a4,c5]@5 ~@7", B: "~@4 [g#4,c5] ~ c5@4 ~@2 [g#4,c5]@5 ~@7, ~@3 g#4 ~@8",
  C: "~@4 [g4,c5] ~ [g4,c5]@4 g4 ~ [g4,c5]@4 ~@8", D: "~@4 [a#4,c5] ~ c5@3 ~ a#4 ~@2 c5@3 ~@8, ~@6 a#4 ~@5 a#4@3 ~@9",
  E: "~@4 [a4,c5] ~@2 [a4,c5]@3 a4 ~@2 c5@2 ~@9, ~@6 a4 ~@5", // Am
  F: "~@4 [g#4,c5] ~ c5@4 ~ [g#4,c5] ~ [g#4,c5]@5 ~@6, ~@3 g#4 ~@8", // G#
  G: "[g4,c5] ~@3 [g4,c5]@6 ~@8 [f#4,c5] ~@3 [f#4,c5] ~", H: "b4 ~",
  I: "~@4 [e5,g5] ~ [e5,g5]@4 ~@2 [e5,a5,c6] ~@3 e5 [a5,c6] ~@6", J: "~@4 [f5,g#5] ~ [f5,g#5]@5 ~@2 g5 ~@4 [f5,g5] ~@5",
  K: "~@4 [e5,g5] ~ [e5,g5]@5 ~ e5 a5 ~@4 [e5,a5] ~@5", // Em A5
  L: "~@4 [f5,g#5] ~ [f5,g#5]@4 ~@2 d5 [b4,g5] ~@4 [b4,d5,g5] ~@5", // Fm Em G
  M: "~@4 [e5,g5] ~ [e5,g5]@4 ~@2 [e5,a5] ~@5 [e5,a5] ~@5", N: "g#5@9 ~@3 [b4,d5,g5]@7 ~@5",
  O: "~@7 [c5,e5,g5] ~@2 [c5,e5,g5] ~@7 [e5,a5,c6] ~@3 [a5,c6] ~", // C Am
  P: "[f5,g#5]@4 ~@2 g#5@4 ~@2 [d5,g5]@5 ~ [d5,g5]@2 ~@4", // Fm G5
  Q: "~@6 [c5,e5,g5] ~@3 [e5,g5] ~ [e5,a5,c6]@5 ~@2 c6@5, ~@18 [e5,a5]@5 ~", // C Em Am A5
  R: "~ f5@5 [f5,g#5]@3 ~@3 [d5,g5]@5 ~ [d5,g5] ~@5, g#5@5 ~@19", // Fm G5
  S: "~@6 [c5,e5,g5] ~@3 [e5,g5] ~@2 [e5,a5,c6]@4 ~ [e5,a5,c6]@4 ~@2", // C Em Am
  T: "[f5,g#5]@5 ~ [f5,g#5]@3 ~@3 [d5,g5]@5 ~ [b4,d5,g5] ~@5", // Fm G5 G
})).s("gm_brass_section").gain(0.52)

// chords · brass section · "brass" · soft notes
const brass_section_soft = note("<~@59 A ~@5 B ~ C ~@3 D E F G H G I ~>".pickRestart({
  A: "~@10 g#4 ~@13", B: "f4 ~", C: "~@12 f5 ~@11", D: "f5@3 ~@5", E: "~@22 e5 ~", F: "~@6 f5@4 ~@2 b4@5 ~ b4@2 ~@4",
  G: "~@10 c5 ~@13", H: "~@12 b4@5 ~ b4 ~@5", I: "~@12 b4@5 ~@7",
})).s("gm_brass_section").gain(0.33)

// chords · drawbar organ · "hammond organ"
const drawbar_organ = note(`<
  ~@10 A B C D E F G ~ C H I B E J K L M@2 N@2 O P Q ~ R B R S T U V B W X E B V S C S V Y V B V B K Z AA AB AC AD AE AF
  AG ~ AH AI AJ B V AK AL B V AM V B AN
>`.pickRestart({
  A: "[e4,g4]@5 ~ [e4,a4]@6", B: "[f4,g#4]@11 ~ [f4,g4]@10 ~@2", C: "[e4,g4]@12 [e4,a4]@11 ~",
  D: "[f4,g#4]@12 [f4,g4]@11 ~", E: "g4@11 ~ a4@12, e4@23 ~", F: "~@3 g4@2 ~, g#4@11 ~@13, ~ f4@20 ~@3",
  G: "[c4,e4,g4]@11 ~@13", H: "~ g#4@11 [f4,g4]@11 ~, f4@11 ~@13", I: "g4@11 ~ a4@11 ~, e4@23 ~",
  J: "[f4,g#4]@4 [f4,g4]@3 ~", K: "[e4,g4]@11 ~ [f4,a4]@10 ~@2", L: "[e4,g4,c5]@11 ~ [e4,g4,a#4]@9 ~@3",
  M: "[~ a4@23 [f4,g#4]@21 ~@3, ~ c5@45 ~@2]/2", N: "[g4@23 ~@2 g4@20 ~@3, e4@15 ~, c5@7 ~ a#4@7 ~]/2",
  O: "[a4,c5]@23 ~", P: "[f4,g#4]@7 ~", Q: "[e4,g4] ~", R: "[e4,g4]@11 ~ [e4,a4]@12", S: "[f4,g#4]@6 [f4,g4]@5 ~",
  T: "g4@11 ~ a4@12, e4", U: "~ g#4@11 [f4,g4]@10 ~@2, f4@11 ~@13", V: "[e4,g4]@11 ~ [e4,a4]@11 ~",
  W: "g4@10 ~@2 a4@11 ~, e4@23 ~", X: "g#4@11 ~ g4@11 ~, f4@11 ~", Y: "[f4,g#4]@11 ~ [f4,g4]@9 ~@3",
  Z: "[e4,g4]@6 ~@2 c5@2 b4 ~ a#4@11 ~", AA: "~ c5@10 ~ a4 c5 ~@4 [a4,c5]@4 ~@2, a4@5 ~@7",
  AB: "[g#4,c5]@11 ~@2 g#4@5 [g#4,c5]@3 ~@3, ~@12 c5@5 ~@7", AC: "[g4,c5]@11 ~ [g4,c5]@7 ~@5", AD: "[g4,a#4] ~",
  AE: "[a4,c5]@11 ~ [a4,c5]@6 [a4,c5]@4 ~@2", AF: "[g#4,c5]@11 ~ [g#4,c5]@5 ~ [g#4,c5]@4 ~@2", AG: "[g4,c5] ~",
  AH: "~ [e4,g4]@9 ~@3 a4@11, ~@6 e4@5 ~", AI: "[f4,g#4]@11 ~@2 [f4,g4]@8 ~@3", AJ: "[e4,g4]@11 ~ [e4,a4]@10 ~@2",
  AK: "[f4,g#4]@10 ~@3 g4@9 ~@2, ~@4 f4@3 ~", AL: "[e4,g4]@10 ~@2 [e4,a4]@11 ~", AM: "~ [f4,g#4]@11 [f4,g4]@10 ~@2",
  AN: "[e4,g4]@11 ~@13", // Em
})).s("gm_drawbar_organ").gain(0.24)

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

// drums · rim
const rim = s("rim").struct("<[x!2] [x!4] [~ x ~ x]!77>").gain(0.66)

// drums · snare
const snare = s("sd").struct("<~@17 A ~@7 B C@7 D ~@7 A ~@16 C@7 E ~@5 F C@6 E>".pickRestart({
  A: "~@6 x ~ x ~ x!2", B: "~@7 x!5", C: "~ x ~ x", D: "~@3 x ~@5 x!3", E: "~@3 x ~@2 x ~ x ~ x!2", F: "~@9 x!3",
})).gain(0.66)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A@4 B A@8 B A B A@3 B A@3 ~@9 A@3 B A@3 B A@3 B A@7 B A@2 B A ~@8 A@6 ~@7
>`.pickRestart({
  A: "x!12", B: "x!11 ~",
})).gain(0.66)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 [~@10 x!2] ~@39 [~@10 x!2] ~@7 [~@10 x!2] ~@21>").gain(0.66)

// drums · open hat
const open_hat = s("oh").struct("<~@6 A ~@8 A ~ A ~@3 A ~@15 A ~@3 A ~@3 A ~@7 A ~@2 A ~@22>".pickRestart({
  A: "~@11 x",
})).gain(0.66)

// drums · high tom
const high_tom = s("ht").struct("<~@9 [~@7 x!3 ~@2] ~@39 [~@7 x!3 ~@2] ~@7 [~@7 x!3 ~@2] ~@21>").gain(0.66)

// drums · crash
const crash = s("cr").struct("<~@2 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A ~@6>".pickRestart({
  A: "x",
})).gain(0.66)

// drums · ride
const ride = s("rd").struct("<~@26 A B@7 ~@24 A B@7 ~@6 A B@6>".pickRestart({
  A: "~ x!11", B: "x!12",
})).gain(0.66)

stack(
  bass, epiano1, acoustic_guitar_steel, piano, brass_section, brass_section_soft, drawbar_organ, kick, rim, snare,
  hihat, mid_tom, open_hat, high_tom, crash, ride
)