Strudelify
Didn't We Almost Have It All cover art

Whitney

Didn't We Almost Have It All

Whitney Houston

KeyC majorTempo69 bpm
0:00/0:00
// Didn't We Almost Have It All — Whitney Houston
// 69 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(69/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 · epiano2 · "e-piano"
const epiano2 = note("<A@3 B C@4 D E F G H I@2 J@4 K@8 L@8 M@5 N@8 O P@8 Q R@5 S@8 T@7 U@4>".pickRestart({
  A: "[~@4 c5 d5 ~ a#5 ~@4 g5@2 a5 ~@3 f4 ~@3 a4@2 [d4,a#4]@3 [d#4,c5]@3 [f4,d5] ~ [c2,c3]@3 [d5,d#5] [a#4,f5]@2 [f4,a#4] ~ d#2 ~@2 g3 f4 g4 a#4@2, a#2@8 ~@3 [g4,a#5]@5 ~@3 g4@5 ~@7 [g4,d#5]@4 ~@4 [f4,a#4]@5 ~@4, a#4@3 d4@5 ~ a#3@6 ~@2 a3@2 ~@23 f3@2 [f3,a#3,d#4]@4, ~ f3@3 ~@4 [d#3,c5,a5]@7 ~ d3@8 [g2,g3]@7 ~@5 [d2,d3]@4 ~ a#2@3 ~@4, ~@2 c4@2 ~@2 f5@2 ~@2 f4@5 [c5,f5]@9 ~@24]/3", // Gm Cm Dm C D#maj7 A#5 Gm Cm …
  B: "[d4,f4,a#4]@3 a#4 d4@7 d4 c4 a#3 f3 d#3, [a#2,f3,a#3]@13 ~@3", // A# A#5
  C: "[~@7 f4 ~@6 g4 ~@5 g3@3 [d3,f4] g4@2 f4@2 ~@2 d4 ~@2 c4@3 ~@4 [b3,d4]@4 ~@2 f4 ~@5 g3@3 ~@3 d#4@2 f2 ~ [a2,c4]@2, [a#2,d3]@8 [g#2,c4,f4]@7 ~ g2@7 ~ [g2,b3]@7 ~@6 c4@2 g4@5 ~@2 d#4@9 ~@9, ~@4 f3@7 ~ f3@11 ~@5 [g3,d#4]@4 ~@4 g3@4 ~@4 [g3,b3,d4]@4 ~@12 [a3,d4]@4, ~@5 a#3@3 ~@7 [c4,d4]@8 ~@7 d3@2 c3@8 b2@8 c3@7 ~ [f2,a3,f4]@4 ~ g2@3, ~@6 d4@2 ~@23 d#4@7 d#4@2 ~@6 c4@14 ~@4]/4", // Dm Bm Am A# Fm G Cm G …
  D: "[a#2,f3,a#3,d4]@2 [a2,a3,c4,f4]@2 ~@3 d5, ~ [g2,d4,g4,a#4], ~@3 g3", // A# F Gm
  E: "d#4!2 ~@2 f4 ~@2 [d#3,f4], d#2@3 [d#2,a4,c5], d#3@3 d#4 [a4,c5]@2 ~@2, [g4,d5]@4 [g4,a#4,d5]@3 d#3@7 ~@2, ~@5 f4@2 ~", // D#sus2 Adim Am G5 Gm
  F: "c4 ~@2 c4 ~ d3 ~ d3, [d2,a4] [g2,d4,f4], [d3,f4] [d3,f4,c5] ~ [g3,a#4], ~ c4@2 ~ c5@2 ~@2", // D5 G7 Dm Dm7 Gm
  G: "[c3,d#4]@2 d4 ~ c3@2 f4 ~@7 [f3,a#4]@2, [c2,a#3]@7 ~ f2@8, ~@3 d#4@4 [a3,g4]@9, ~@9 f4@3 [f4,d5]@4, ~@5 f3@2 ~", // Cm A#5 C7 A7 Dm
  H: "~@2 [c4,d#4,g4] [d2,c4,d4,f#4], [a#2,d4,f4,a#4]@3 ~, ~ a#3@2 ~, ~ d3", // Cm D7 A#
  I: "[g2@7 [b3,d4,g4] ~ d4 ~ c3 ~ a3 [a3,e4] ~@4 b2 b2@3 d4 ~ c4@3 [e2,g3] f#2 [g2,b3]@2, ~@7 g3@5 c3@4 ~@2 [f#3,b3]@7 ~@7, ~@9 [b3,g4]@3 ~ [d4,f#4]@2 e4@17, ~@10 [a3,d4,f#4]@3 ~@2 a3@14 a3@3, ~@18 d4@5 ~ [e2,g3]@4 ~@4]/2", // G A5 Em G B5 Em D Em
  J: "[c4@3 ~@3 [d4,e4,g4,c5] ~@3 [c4,e4,b4]@2 [c4,e4,g4]@2 [c4,g4]@2 [d4,a4] ~@6 g3@2 ~@2 [c2,d4] ~@2 d3@2 [b3,d4,g4]@4 [b3,d4,g4]@2 [b3,d4] ~@3 a3@2 [a3,e4]@2 ~ d4@4 ~@2 f#4 [e2,b3]@6 ~ f#2 ~ [e2,g3], ~@3 a2@4 [c4,e4,b4] d3@4 d2@4 g4@11 g3 c2@34 [g2,b3]@2, ~@7 c5@57, ~@7 a3@21 [d2,d4,f#4]@4 g2@4 [d3,g3]@2 g4@8 a3@15 [e3,a3]@3, ~@7 g4@5 ~@2 e4@2 g2 d3@3 [d4,b4]@2 d3@2 ~@2 c3 e4@12 [a3,d4,f#4] c3@2 [d4,f#4]@2 c3@2 e4 [f#3,b3]@4 b2 [d4,a4]@2 [e4,g4]@10]/4", // C Cmaj7 C C5 D5 Csus2 G Bm …
  K: "[~@2 e3@2 [e4,g4,c5]@2 e4 ~@3 [c4,b4]@2 [d3,c4,e4,g4]@2 c4 d3 a4 ~@2 g3 ~@10 c4 f4 [a#3,d4]@4 [d4,f4,a#4]@2 ~@4 [c4,f4,a4]@2 [d#3,c4,g4]@2 c4 ~ d3@4 ~@3 f4 [g3,d4,a#4]@2 ~@2 g3@2 [d3,f4,d5] ~ c3@4 [c3,g4,d#5]@2 d#5 ~@3 [f4,d5]@2 [d#4,g4,a#4]@2 [d#4,a#4]@2 [f4,a4] ~@3 a#3@2 ~ a#3 ~@6 c4 ~@3 f3@2 [a#3,d4,f4,a#4]@2 [d4,a#4] ~@3 [c4,f4,a4]@2 g4@2 ~@7 a4 ~@4 g3@2 g2 [a2,a#2]@3, a2@6 e3 [c4,e4,b4] d2@6 g4@2 [g2,b3,d4] g4@3 g3 b3 d4 g4@9 a#2@4 a#3@2 [d4,f4,a#4] [c4,a4] [d#2,d#3]@4 f4 ~ g4@12 d3 c5@11 g4 [f4,d5] [f2,f3]@4 f3@2 g4@2 a#2 [f4,a#4,d5]@2 f3@3 f3@2 a#2 g3 a#3 d#4 a#2 a3@23 [d3,f4,c5]@2 [g2,d4,f4,a#4]@10, c4@4 a3@20 [f2,f3] g3 a#3 d#4 f3 a3@18 [a3,c4,f4] d2@4 d3 a3@27 c5@15 f4 [a#2,d4]@6 f4 [c4,a4] [d#2,d#3]@4 [d#3,c4,f4]@2 g4 [d3,c4,f4] d2@2 g4@14, ~@6 c5@48 c4@2 g2@3 d#4@4 [g4,d#5] c2@64, ~@3 g4@3 ~ e4@57]/8", // C Cmaj7 C A# F Cm Gm Dm …
  L: "[c3@4 [c3,g4,d#5]@2 d#5 ~@3 [f4,d5]@2 ~@2 d5 ~@7 a4@2 [a#2,a#3,d#4,g4]@3 f4 [a#2,f4]@4 ~@7 f4 ~@12 g3@3 [d3,f4] ~@2 f4@2 ~@2 d4 ~@2 c4@3 ~@4 [b3,d4]@4 ~@2 f4 ~@5 g3@3 ~@3 d#4@2 f2 ~ [a2,c4]@2 [a#2,f3,a#3,d4]@4 [a2,c4,f4]@4 ~@6 d5@2 d#4@2 d#4@2 ~@4 f4@2 ~@4 [d#3,f4]@2, c2, ~@6 g4@10 a#2@4 a#3@4 ~@4 a3@44 b2@4 [g3,b3,d4]@2 [c4,d#4]@2 c3@7 ~ [f2,a3,f4]@4 [a3,d4] g2@3 ~@4 a3@28, ~@7 [f4,d5] f3@4 c5@100 [d#3,g4,d5]@4 g4@12, ~@8 f2@4 [f3,d#4]@3 [d4,f4,a#4]@9 ~@3 g4@5 [a#2,d3]@4 f3 a#3 d4@2 [g#2,c4,f4]@4 f3@2 g4 [c4,d4] g2@7 ~ [g2,b3,g4]@4 [g3,d#4]@2 d3 d#4 c3@4 g3 c4 d#4 g4@33 [g2,d4,g4,a#4]@4 g3@4 d#2@4 [a#4,d5]@2 d#4 d#3 [a4,c5]@2 f4@2 [d#2,a4,c5]@4]/8", // Cm Dm D# A#5 Dm Bm Am A# …
  M: "[c4@2 ~@4 c4@2 ~@2 d3@2 ~@2 d3@2 [c3,d#4]@2 d4 ~ c3@2 f4 ~@7 [f3,a#4]@2 ~@8 [c4,d#4]@4 [d2,c4,d4,f#4]@4 g2@7 [b3,d4] ~ d4 ~ c3 ~ a3 [a3,e4] ~@4 b2 b2@3 d4 ~ c4@3 [e2,g3] f#2 [g2,b3]@2, [d2,a4]@8 [g2,d4,f4]@8 c2@47 a3@3 [f#3,b3,d4]@6 [e2,g3]@4 ~ a3@3, [d3,f4]@4 [d3,f4,c5]@4 ~@4 [g3,a#4]@4 a#3@7 a3@32 g4@2 g4@23, ~ c4@2 ~ c5@36, ~@19 d#4@4 g4 f2 f4 f3@2 [f4,d5]@4 [a#2,d4,f4,a#4]@4 a#3@4 [d3,g4]@15 g3@2 b3 [a3,d4,f#4]@2 c3 [d4,f#4]@2 e4@17]/5", // Cm A#5 Cm D7 Bm A5 Em G …
  N: "[c4@3 ~@3 [d4,e4,g4,c5] ~@3 [c4,e4,b4]@2 [c4,e4,g4]@2 [c4,g4]@2 [d4,a4] ~@6 g3@2 ~@2 [c2,d4] ~@2 d3@2 [b3,d4,g4]@4 [b3,d4,g4]@2 [b3,d4] ~@3 a3@2 [a3,e4]@2 ~ d4@4 ~@2 f#4 [e2,b3]@6 ~ f#2 ~ [e2,g3] ~@2 e3@2 [e4,g4,c5]@2 e4 ~@3 [c4,b4]@2 [d3,c4,e4,g4]@2 [c4,e4] d3 a4 ~@2 g3 ~@10 c4 f4 [a#3,d4]@4 [d4,f4,a#4]@2 ~@4 [c4,f4,a4]@2 [d#3,c4,g4]@2 c4 ~ d3@4 ~@3 f4 [g3,d4,a#4]@2 ~@2 g3@2 [d3,f4,d5] [g4,d#5], ~@3 a2@4 [c4,e4,b4] d3@4 d2@4 g4@11 g3 c2@100, ~@7 c5@54 e3 [g2,b3]@2 a2@6 [e3,g4] [c4,e4,b4] d2@6 g4@2 [g2,b3,d4] g4@3 g3 b3 d4 g4@9 a#2@4 a#3@2 [d4,f4,a#4] [c4,a4] [d#2,d#3]@4 f4 ~ g4@12 d3 [d#4,c5]@5, ~@7 a3@21 [d2,d4,f#4]@4 g2@4 [d3,g3]@2 g4@8 a3@15 a3@3 c4@4 a3@20 [f2,f3] g3 a#3 d#4 f3 a3@18 [a3,c4,f4] d2@4 d3 a3@11, ~@7 g4@5 ~@2 e4@2 g2 d3@3 [d4,b4]@2 d3@2 ~@2 c3 e4@12 [a3,d4,f#4] c3@2 [d4,f#4]@2 c3@2 e4 [f#3,b3]@4 b2 [d4,a4]@2 [e4,g4]@14 ~@2 c5@48 c4@2 g2@7 ~]/8", // C Cmaj7 C C5 D5 Csus2 G Bm …
  O: "c3@4 [c3,g4,d#5]@2 d#5 ~@3 [f4,d5]@2 [d#4,g4,a#4]@2 [d#4,g4,a#4]@2, c2, ~@3 g4@3 ~@2, ~@7 [f4,d5] f3@4 f3@4, ~ f2", // Cm Dm D# Dm
  P: "[[f4,a4] ~@3 a#3@2 ~ a#3 ~@6 c4 ~@3 f3@2 [a#3,d4,f4,a#4]@2 [d4,a#4] ~@3 [c4,f4,a4]@2 g4@2 ~@7 a4 ~@4 g3@2 g2 [a2,a#2]@3 c3@4 [g4,c5,d#5]@2 ~@6 a#4@2 a#4 ~@3 d#4@2 ~@2 d#4@2 ~@7 d#3 c4@2 ~@5 d3 [c4,f4,a4]@3 ~ [g3,d4,f4,a#4]@2 d3 ~ d#4@2 d#4@2 ~@11 d#3 c4 ~@6 d3 [d4,f4,a4]@3 ~@4 [d3,d5], c5@34 g4@18 ~@2 [g4,d#5] [f#4,a4,d5] d2@2 [f#4,a4,d5]@2 d3@3 [g4,a#4,d5] [d#2,d#3]@4 [d#3,g4,a#4,d5]@4 [d#2,g4,a#4,d5]@2 d#4@2 g4@19 d5 [d#2,d#3,g4,a#4]@4 [d#3,g4,a#4,d5]@2 d#4@2 [d#2,g4,a#4,d5]@2 d#4@2 g4@12 c5@3 [d4,f4,a#4] g3@2 c5@2, a#2@8 a#2@3 d#4@4 f4 d4@4 ~@2 f4@2 d#2@4 f4 ~ g4@2 d2@4 [d3,f4]@2 [g2,d4,f4,a#4]@11 ~@3 c2@76, ~ [f4,a#4,d5]@7 ~@2 a#3@2 ~ a3@115, ~@3 f3@3 f3@2 ~ g3@3 a#2@3 ~ a#2@7 [c4,a4] d#3@4 [d#3,c4]@3 [d3,c4,f4]@5 c5@16 ~@2 c5@22 [d#3,a#4,d5]@2 d#4@2 [d2,f4,a4,c5]@2 c4@2 [d3,f4,a4,c5]@2 c4@2 [g2,c5]@6 c5@14 [d#3,a#4,d5]@2 d#4@2 [d2,d3,f4,a4,c5]@2 c4@2 [d3,f4,a4,c5]@2 c4@2 g2@8]/8", // F A# Gm F A#maj7 Cm F Gm7 …
  Q: "[d#3,d#4,a#4]@2 [d#3,d#4,a#4] ~ d#3@2 [a#3,d#4,g4]!2, [d#2,g4]@3 c5@5, ~@7 [d#4,g4,a#4]@5 d#3@4, ~ d#2", // D#5 D#
  R: "[[d3,c4,f4]@2 ~@2 [d3,d4] a4 g3@6 g3@2 d3 [g2,f4] [c3,a#3,d#4,g4]@2 a4 ~ c3@2 ~@6 d3@2 [f4,a#4,d5] ~ d#3@2 d#5 ~@3 a#4@2 d5 a#4 ~@4 f2@2 ~@8 [a#3,d4]@4 [d4,f4,a#4]@2 ~@4 [c4,f4,a4]@2 [d#3,c4,g4]@2 c4 ~ d3@4 ~@3 f4, a3@64 d#3@4 f4 ~ g4@6 d3 a3 c4@2, d2@4 c5@18 g4 [f4,a4] [d2,d3] [a#4,d5]@5 ~ [g4,a#4,d5] d#2@3 g4 d#3@4 [d#4,g4]@4 f3@4 [f3,a#3,d#4,g4] f2 f3 f2 [f3,c4,f4,a4] f2 f3 f2 a#2@4 a#3@2 [d4,f4,a#4] [c4,a4] d#2@7 [a3,c4,f4] d2@8, ~@2 g4@14 ~@3 [d#4,g4,a#4]@4 c5@12 c5@5 f2@2 c5@38, ~@6 [g2,d4,f4,a#4]@9 ~ c2@64]/5", // Dm7 D G7 Cm7 A# F Cm F …
  S: "[[g3,d4,a#4]@2 ~@2 g3@2 [d3,f4,d5] ~ c3@4 [c3,g4,d#5]@2 d#5 ~@3 [f4,d5]@2 [d#4,g4,a#4]@2 [d#4,a#4]@2 [f4,a4] ~@3 a#3@2 ~ a#3 ~@6 c4 ~@3 f3@2 [a#3,d4,f4,a#4]@2 [d4,a#4] ~@3 [c4,f4,a4]@2 g4@2 ~@7 a4 ~@4 g3@2 g2 [a2,a#2]@3 c3@4 [c3,g4,d#5]@2 d#5 ~@3 [f4,d5]@2 ~@2 d5 ~@7 a4@2 [a#2,a#3,d#4,g4]@3 f4 [a#2,f4]@4 [a#3,d4]@4 [d4,f4,a#4]@2 ~@4 [c4,f4,a4]@2 [d#3,c4,g4]@2 c4 ~ d3@4 ~@3 f4, g2@7 ~ c2@52 [d3,f4]@2 [g2,d4,f4,a#4]@10 c2@52 d3 a3 c4@2, ~@2 d3@4 ~@9 [f4,d5] f2@6 g4@17 f4 [a#2,d4]@6 f4 [c4,a4] [d#2,d#3]@4 [d#3,c4,f4]@2 g4 [d3,c4,f4]@3 g4@18 ~@2 g4@6 [f3,d#4]@3 [d4,f4,a#4] a#2@4 a#3@4 ~@3 g4@5 a#2@4 a#3@2 [d4,f4,a#4] [c4,a4] [d#2,d#3]@4 f4 ~ g4@10, ~@3 c5@21 c5@32 d2@4 c5@19 [f4,d5] [f2,f3]@4 c5@44, ~@3 d#4@4 [g4,d#5]@5 ~@2 g4@2 f3@4 f3@4 a#2 [f4,a#4,d5]@2 f3@3 f3@2 a#2 g3 a#3 d#4 a#2 a3@63 a3@19 [a3,c4,f4] d2@8]/8", // Gm Dm Cm Dm D# D#5 F A# …
  T: "[[g3,d4,a#4]@2 ~@2 g3@2 [d3,f4,d5] ~ c3@4 [c3,g4,d#5]@2 d#5 ~@3 [f4,d5]@2 [d#4,g4,a#4]@2 [d#4,a#4]@2 [f4,a4] ~@3 a#3@2 ~ a#3 ~@6 c4 f4 ~@3 f4 [d4,f4,a#4]@2 ~@4 c4@2 [d#3,c4,g4]@2 c4 ~@6 [d3,a4] ~@4 g3@2 g2 ~ a#2@2 ~@4 [g4,d#5]@2 ~@4 [f4,d5]@2 ~@4 a#2 ~@4 d5 ~ a#5 ~@4 g5@2 a5 ~@3 d4 ~@4 d5, g2@7 ~ c2@52 c4@2 [g2,d4,f4,a#4]@7 a2@3 c3@6 [c3,d#5] g4@8 [d4,f4]@2 f3 c4 d4 c5@2 f5@2 [d#3,c5,a5] a#3 f4 g4@4 f5 d3 a3@2 d#4 [f4,a4,f5]@2 d#5@2, ~@2 d3@4 ~@9 [f4,d5] f2@6 g4@18 a#2@4 a#3@2 [d4,f4,a#4] [c4,a4] d#2@2 [f4,a4]@4 g4 f4@3 g4@18 c2@36, ~@3 c5@21 c5@31 c4 d2@4 c5@19 [f4,d5] f2@4 [f3,d#4,c5] d5 a#4@26, ~@3 d#4@4 [g4,d#5]@5 ~@2 g4@2 f3@4 f3@4 a#2 [f4,a#4,d5]@2 f3@3 f3@2 a#2 g3 a#3 d#4 a#2 a3@62 a#5@4 c5@9]/7", // Gm Dm Cm Dm D# D#5 F A# …
  U: "[~@2 a#4@2 [g3,a#3]@3 ~ [d#4,g4]@4 [g4,d#5]@2 ~@4 [f4,d5]@2 ~@8 g4@2 ~@4 f4@2 c5@2 d5@2 [d5,f5,a#5]@16 ~@8, g2@7 a#4@2 ~@5 g4@9 f4 a#2@32 ~@8, [f4,c5] c5@4 c5@4 ~@7, ~@8 [c2,c3]@7 [f4,d5]@3 ~@4 d5 a#4@7 f4@2 a#4@4 ~@28, ~@14 d#5@2 f2@4 [f2,d#4]@3 d4@31 ~@10]/4", // Gm D# Cm Dm A# F5 C Dm …
})).s("gm_epiano2").gain(0.47).pan(0.3)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@2 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE G AF I AG AH AI AJ AK AL AM AN R AO T AP AQ AR
  AS AT AU AV AW AV AX AY AZ BA BB BC BD BE BF BG BH@2 BI BJ BK BL BF BM BN@2 BO@2 ~@4
>`.pickRestart({
  A: "c2@4 d2@4 d#2@2 f2 g2 f2@4", B: "a#2@3 f2", C: "a#1@3 ~ g#2@4", D: "g2@2 g1 g2", E: "c2@8 b1@6 d2 b1",
  F: "c2@5 ~ c2 a#1 a1@4 f2@4", G: "a#2@4 a2@4 g2@4 ~ f#2 f2 e2", H: "d#2!2", I: "d2@6 a2 d2 g2@4 g1@4",
  J: "c2@6 d2 d#2 f2@5 ~ f2@2", K: "a#2@8 d2@7 ~", L: "g2@5 ~ g2@2 c2@8", M: "b1@5 ~ c2 d2 e2@8", N: "a2@3 a2 d2@3 d2",
  O: "g2@6 b1 d2 c2@4 d2@3 ~", P: "[e2,f#2] ~@5 g2@2 c2@8, g2@5 ~@11", Q: "b1@4 f#2@2 e2@4 ~@2 e2 f#2 g2@2",
  R: "a2@3 a1 d2@2 d2@2", S: "g2@5 ~ g2 f2 d#2@4 f2@3 ~", T: "a#2@5 ~ a#2@2 d#2@6 f2 d#2", U: "d2@4 g2@3 g1",
  V: "c2@6 d2 d#2 f2@4 f2@4", W: "a#2@6 d2 f2 d#2@4 f2@4", X: "a#1@3 a#2 d#2@4", Y: "d2@4 a2@2 g2@8 d#2 d2",
  Z: "c2@3 ~ f2@2 f2@2", AA: "a#2@5 ~ a#2@2 a#2@5 ~ f2@2", AB: "a#2@8 g#2@6 ~ g#2", AC: "g2@7 d2 g1@4 g2@4",
  AD: "c2@3 g2 b1@2 g2@2", AE: "c2@4 ~@2 c2 a#1 a1@4 f2@3 [g2,a2]", AF: "d#2@8 d#2@6 f2 d#2", AG: "c2@4 ~ d2 d#2 f2@9",
  AH: "a#2@3 a#2 d2@2 d2@2", AI: "g2@3 g2 c2@4", AJ: "b1@6 c2 d2 e2@6 f#2 g2", AK: "a2@4 a1@4 d2@3 ~ d2@4",
  AL: "g2@6 b1 d2 c2@4 d2@2 e2 f#2", AM: "g2@5 ~ g2@2 c2@6 d2 c2", AN: "b1@6 e2@6 e2 f#2 g2@2", AO: "g2@7 g2 f2@4 f2@4",
  AP: "d2@8 g2@4 g1 a1 a#1@2", AQ: "c2@6 c3 c2 f2@3 ~ f2@4", AR: "a#2@6 d2 f2 d#2@4 f2@3 g2",
  AS: "a#2@5 ~ a#2@2 d#2@8, a2 ~@15", AT: "d2@4 a2 d2 g2@4 g1@2 g1 a1 a#1@2", AU: "c2@5 ~ c2@2 d2@4 d2@4",
  AV: "d#2 d#3 d#2 d#3 d#2 d#3 d#2 d#3", AW: "d2@2 d3@2 d2@2 d3 d2 g2@3 ~ g2@2 g1@2",
  AX: "d2@2 d3@2 d2@2 d3 d2 g2@3 ~ g2@3 f2", AY: "d#2@4 d#2@4 d#2@5 ~ d#2@2", AZ: "d2@3 ~ a2 d2 g2@5 ~ g2@4",
  BA: "c2@6 c3 c2 d2@4 d3@2 d2@2", BB: "~ d#2@5 d#3 d#2 f2@4 f1@4", BC: "f2 f3@2 f2 f3@2 f2 f3 a#2@4 ~@2 a#2@2",
  BD: "d#2@6 f2 d#2 d2@6 a2 d2", BE: "g2@4 g1 a1 a#1@2 c2@6 c3 g2", BF: "f2@4 f2@4 a#2@6 d2 f2",
  BG: "d#2@2 f2@2 a#1@3 a#2", BH: "[d#2@4 d#2@4 d2@4 a2 d2 g2@6 g1 a1 a#1@2 c2@5 ~ c2@2]/2",
  BI: "f2@3 ~ f2@4 a#2@5 ~ a#2@2", BJ: "d#2@4 f2@3 [g2,a2] a#2@5 ~ a#2@2", BK: "d#2 d2",
  BL: "g2@4 g1 a1 a#1@2 c2@4 c3@2 c2@2", BM: "d#2@4 f2@2 ~ [d2,d#2] a#1@6 a#2@2, ~@8 c2 ~@7",
  BN: "[d#2@8 d2@4 a2@2 g2@6 g1 a1 a#1@2 c2@5 ~ c2@2]/2", BO: "[f2@3 ~ f2@4 a#2@12 ~@12]/2",
})).s("gm_electric_bass_finger").gain(0.56)

// other · string ensemble 1 · "strings"
const string_ensemble_1 = note(`<
  ~@8 A B C D@2 E F G H E I J K L M N O L P Q R S ~@3 T@3 U V E F W X E F Y K Z@2 AA O L AB AC AD AE AF AG AH AI AJ AK@2
  AL AM@3 AN@3 AO AL AM@3 AN@3 ~@5
>`.pickRestart({
  A: "~@8 a#4!2 ~@6", B: "d5@4 g4@8 a4 ~ c5@2, ~@14 a#4 ~", C: "c5@4 f5@2 d#5 d5 c5@4 a#4@4",
  D: "[g4@10 f4@2 d5@2 c5 a#4@16 ~]/2", E: "g5@2 f#5 e5", F: "d5", G: "c5@8 ~ d5@3 b4@4", H: "c5 d5@7 c5@4 d5@4",
  I: "d5@6 e5@7 ~ c5 b4", J: "a4 d5", K: "c5 b4@7 ~@8", L: "a#5@2 a5 g5", M: "f5", N: "g5@2 f5 d5", O: "d#5 f5@13 ~@2",
  P: "f5@6 g5@9 ~", Q: "d#5@7 ~ f5@4 d#5@3 ~", R: "d5@4 a#4@2 a4@2 g4@4 f4@3 d#4", S: "d4@7 ~@9",
  T: "[~@14 d5@10 c5@4 f5@10 d#5 d5 c5@4 a#4@4]/3", U: "g4@3 f4", V: "a#4@9 ~@7", W: "e5@2 d5 b4", X: "c5 d5@15",
  Y: "c5@2 d5 b4", Z: "[a#5@8 a5@4 g5@3 f5@9 ~ d5@7]/2", AA: "d#5@4 g5@3 f5@5 d5@4", AB: "f5@4 c6@2 a#5@6 d5 d#5 f5 ~",
  AC: "d#5@4 g5@2 d5@5 ~ f#5@3 ~", AD: "g5", AE: "f5 ~", AF: "g5@7 ~", AG: "f5@7 ~", AH: "g5@13 ~@3",
  AI: "a5@3 g5@3 ~@2", AJ: "d#5 f5", AK: "[g5@7 ~ a#5@12 a5@4 a#5@8]/2", AL: "a5@4 g5@3 f5@9",
  AM: "[d5@8 d#5@4 g5@2 g5 f5@5 d5@2 d5@2 d#5 f5@13 ~@2 a#5@8]/3",
  AN: "[a5@4 g5@3 f5@5 c6@2 a#5@8 d5@2 d#5@4 g5@2 g5 f5@5 d#5@2 f5 d5@9]/3", AO: "~ a#5",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · epiano1 · "e-piano2"
const epiano1 = note("<A@3 B C ~@69 D@2 E@2 F@4>".pickRestart({
  A: "[~@4 c5 d5 ~ a#5 ~@4 g5@2 a5 ~@3 f4 ~@3 a4@2 [d4,a#4]@3 [d#4,c5]@3 [f4,d5] ~ [c2,c3]@3 [d5,d#5] [a#4,f5]@2 [f4,a#4] ~ d#2 ~@2 g3 f4 g4 a#4@2, a#2@8 ~@3 [g4,a#5]@5 ~@3 g4@5 ~@7 [g4,d#5]@4 ~@4 [f4,a#4]@5 ~@4, a#4@3 d4@5 ~ a#3@6 ~@2 a3@2 ~@23 f3@2 [f3,a#3,d#4]@4, ~ f3@3 ~@4 [d#3,c5,a5]@7 ~ d3@8 [g2,g3]@7 ~@5 [d2,d3]@4 ~ a#2@3 ~@4, ~@2 c4@2 ~@2 f5@2 ~@2 f4@5 [c5,f5]@9 ~@24]/3", // Gm Cm Dm C D#maj7 A#5 Gm Cm …
  B: "[d4,f4,a#4]@3 a#4 d4@7 d4 c4 a#3 f3 d#3, [a#2,f3,a#3]@13 ~@3", C: "[a#2,d3]@7 ~@9",
  D: "[~@13 a4 ~@4 g3@2 g2 ~ a#2@2 ~@8, ~@8 d2@6 g2@6 ~ a2@3 ~@8, ~@5 g4@2 [d4,f4,a#4]@5 ~@4, ~@6 [d3,c4,c5] ~@9]/2", // A# D7
  E: "[~@8 a#2 ~@3 c5 d5 ~ a#5 ~@4 g5@2 a5 ~@3 d4 ~@4 d5, ~@7 a#4@23 d#5@2, ~@7 f4@11 f4 [g4,a#5]@4 c5@9, ~@7 d4@3 c4@2 ~@2 f5@2 ~ a#3@6 f5@5 [f4,a4,f5]@4, ~@9 f3@2 d4@5 [d#3,c5,a5]@7 ~ d3 a3@2 d#4@5]/2", // Gm F Adim
  F: "[[f4,c5]@2 a#4@2 [g3,a#3,c5]@3 ~ [d#4,g4]@4 [g4,d#5]@2 ~@4 [f4,d5]@2 c5@2 ~@6 g4@2 ~@4 f4@2 c5@2 d5@2 [d5,f5,a#5]@16 ~@8, g2@7 a#4@2 ~@5 [g4,d#5]@2 f2@4 [f2,d#4]@3 d4@31 ~@10, ~@8 [c2,c3]@7 [f4,d5]@3 ~@4 d5@2 a#2@32 ~@8, ~@23 a#4@9 a#4@4 ~@28, ~@23 f4@7 f4@4 ~@30]/4", // F5 C7 D# Cm Dm A# Cm F7 …
})).s("gm_epiano1").gain(0.37).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@9 A@9 B@3 A@3 B@2 C B A@5 C@2 B A C A C B A@4 B A@3 C@3 B@6 D A@2 E C@2 B@2 F G B@2 C B@2 C B H B ~@5
>`.pickRestart({
  A: "x ~@6 x!2 ~@7", B: "x!2", C: "x ~@7 x ~@6 x", D: "x ~@5 x ~@5 x!2 ~@2", E: "x ~@3 x!5 ~@6 x", F: "x ~@3 x ~@2 x",
  G: "~@7 x!2 ~@7", H: "x ~@6 x!2 ~@6 x",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  ~@13 A B A@3 C A B A@3 B@2 A@2 ~ A@10 D A B A B A B A@12 E F A G A@3 H A@3 H A@3 D A@2 I ~@5
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@7 x ~ x!2", D: "~@4 x ~@2 x ~@4 x ~@3", E: "~@2 x ~@4 x",
  F: "x!2 ~ x", G: "~@3 x", H: "~@4 x ~ x!2 ~@4 x ~@3", I: "~ x ~@2",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@8 A ~@3 B ~@5 B ~ C ~@3 B ~ A ~@14 A ~@3 D ~@3 A ~@11 E ~@3 F ~@3 E ~@12
>`.pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@14 x!2", D: "~@12 x!3 ~", E: "~@6 x!2 ~@8", F: "~@7 x ~@8",
})).gain(0.45)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A ~@3 B ~@5 B ~ C ~@3 B ~@16 D ~ A ~ E ~@3 B ~@11 F ~ G ~ H ~@3 I ~@12
>`.pickRestart({
  A: "~@15 x", B: "~@13 x ~@2", C: "~@3 x", D: "~@6 x!2", E: "~@7 x ~@2 x ~@5", F: "~@3 x!2 ~ x ~@9", G: "~@7 x ~@8",
  H: "~@5 x ~@10", I: "x ~@2 x ~@12",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct("<~@6 A ~@11 A ~@21 B ~@2 C ~@17 D ~@3 B ~@3 E ~@12>".pickRestart({
  A: "~@15 x", B: "~@7 x ~@8", C: "~@3 x ~@4", D: "~ x ~@3 x ~@10", E: "~@5 x ~@10",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@8 A ~@3 B ~@5 C ~ D ~@3 B ~@16 D ~@3 E ~@3 D ~@11 F ~ G ~ H ~@2 I ~@13
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~@2", C: "~@3 x", D: "~@9 x ~@6", E: "~ x ~@2 x ~@5 x ~@5", F: "x!2 ~ x ~@12", G: "~@5 x!2 ~@9",
  H: "~ x ~@14", I: "~@10 x ~@2 x ~@2",
})).gain(0.45)

// drums · ride
const ride = s("rd").struct(`<
  ~@8 A@2 B C@2 A@5 D A E A@5 D A F A@8 G A G A H A I A J A@5 I A K@4 L M A@2 N A@3 O H L A P A@6 B ~@5
>`.pickRestart({
  A: "x!4", B: "x!3 ~", C: "x!2", D: "x ~ x!2 ~@2 x!2", E: "x ~ x ~ x ~@2 x", F: "~ x ~@2",
  G: "x ~@3 x ~@3 x ~@3 x!3 ~", H: "x ~ x ~ x ~ x!2", I: "x ~@3 x ~@3 x ~@3 x ~@2 x", J: "x ~@3 x ~@3 x ~@3 x!4",
  K: "~ x ~ x ~ x ~ x", L: "~ x!3", M: "x ~ x!2 ~@2 x ~", N: "x ~@3 x!5 ~@3 x ~@3", O: "x ~@3 x ~@2 x!2 ~@3 x ~@3",
  P: "x ~@3 x ~ x!3 ~@3 x ~@3",
})).gain(0.4)

stack(epiano2, bass, string_ensemble_1, epiano1, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, ride)

More by Whitney Houston