Strudelify
Rock Your Baby cover art

Rock Your Baby

Rock Your Baby

George McCrae

KeyE♭ majorTempo120 bpm
0:00/0:00
// Rock Your Baby — George McCrae
// 120 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · epiano1 · "+DETUNE EP"
const epiano1 = note(`<
  ~@3 A B C D@2 E F G@2 H I J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q R S@2 T@2 U@2 V@2 W@2 X Y Z@2 AA@2 AB@4 AC@2 AD@2 AE@2 AF AG
  AH@2 AI@2 AJ@2 T@2 U@2 V@2 AK@4 AC@2 AD@2 AK@4 AC@2 AL@2 ~@3
>`.pickRestart({
  A: "~@3 eb6", B: "f6@11 ~ eb6@4", C: "f6 g6@2 f6@2 eb6 f6@2", D: "[f6 g6@2 g6@10 ~ eb5@2]/2", E: "f5@11 ~ eb5@4",
  F: "f5 g5@2 f5@2 eb5 f5@2", G: "[f5 g5@2 g5@10 ~ [eb4,eb5]@2]/2", H: "[f4,f5]@11 ~ [eb4,eb5]@4",
  I: "[f4,f5] [g4,g5]@2 [f4,f5]@2 [eb4,eb5] [f4,f5]@2", // F G F Eb F
  J: "[[f4,f5]@2 [g4,g5]@4 ~@25 [c5,d5,e5,f5], ~@6 g5@23 [d4,e4,f4] [g4,a4,b4]@2, ~@3 g4@11 [a3,b3,c4]@2, ~@13 [c3,d3,e3]@3, ~@27 [f3,g3]@5]/2", // F G Dm7 Dm G Am C Fsus2
  K: "[[g5,ab5] ~@15 [ab4,c5,eb5]@12 [ab4,c5,eb5]@4, ~@15 c4@17, ~ [ab3,f4,f5]]/2", // Abmaj7 Ab Db
  L: "[[bb3,g4,bb4]@11 [g4,bb4]@3 [g4,bb4,eb5]@2, [eb3,eb4], eb5@7 ~, ~@11 bb3@5]/2", // Eb Gm Eb
  M: "[f5@4 ~@4 [c4,f4,ab4,c5]@3 ~ f4@2 [eb4,f4,ab4,c5]@2, ab3@31 ~, [c4,f4,ab4,c5]@16 eb4@7 ab4@5 ~@4, ~@4 f5@7 f5@5, ~@22 c5 c4@8 ~]/2", // Fm Fm7 Fm
  N: "[bb4@6 ~@6 eb4@11 ~@8 [f3,g3,a3], [eb3,bb3,eb5]@23 ~@4 [b4,c5,d5] [g4,a4] [d4,e4,f4] [b3,c4]@2, eb4@6 ~@7 [e5,f5,g5]@3, g4@8 g4@15 ~@2 [a5,b5,c6,d6]@7, ~@6 bb4@17 ~ [e6,f6]@8]/2", // F Eb5 Bm Gsus2 Dm Cmaj7 Em D7 …
  O: "[e3 ~@15 bb4@12 [c4,eb4,g4,bb4]@4, [c3,g3], [c4,eb4,g4]@7 ~]/2", // Cm7 C5 Cm
  P: "[[eb4,f4]@2 ~ a4, [f3,c4], a4@3 ~, ~@16 [a3,eb4,f4,c5]@15 ~]/2", Q: "[ab3,c4,eb4,ab4]",
  R: "~@8 c5@7 ~, [ab3,c4,eb4,ab4]", // Ab
  S: "[[f3,bb3,d4,f4,bb4]@8 [g3,bb3,d4,g4]@8 [ab3,bb3,d4,f4,ab4]@9 ~@3 f3 [e3,f3,g3,a3] [b3,c4,d4,e4,f4] [g4,a4], bb2@12 ~ [d4,e4,f4]@2 ~, ~@27 [g3,a3,b3,c4]@3 ~@2, ~@14 [a2,b2,c3,d3] ~]/2", // Bb Gm Bb7 Fmaj7 Bdim Gsus2 Dm Cmaj7 …
  T: "[[c4,eb4,f4,ab4]@15 ~ [ab4,c5]@7 ~@5 c5@4, ab3@23 c5 f5@8, ~@15 c4@17, ~ [eb4,f4], ~@23 [ab4,eb5]@9]/2", // Fm7 Ab Ebsus2 Ab5
  U: "[[bb3,bb4,eb5]@15 ~ eb5@12 [g4,bb4,eb5]@4, [eb3,eb4], g4@7 ~, ~@15 bb4@13 ~@4, ~@16 [bb3,g5,bb5]@15 ~]/2", // Eb5 Eb
  V: "[[ab4,c5,f5]@3 ab4@5 ab4@3 ~ f4@2 [eb4,f4,ab4,c5]@2, [c4,f4]@22 c5 [c4,ab4]@8 ~, ab3@16 ab3@15 ~, ~@6 eb5@25 ~, ~@3 [c5,f5]@8 f5@5]/2", // Fm Fm7 F5 Fm F5
  W: "[bb4@3 ~@7 bb3@6, [eb3,eb5], bb3 g4, eb4@2 g4 eb4@5, g4@3 bb4@13]/2", X: "[g3,c4,g4,bb4,c5,eb5], c3 ~@15",
  Y: "bb4@3 ~@3 [bb3,f5]@2, [g3,c4,g4,c5,eb5], ~@6 bb4@9 ~", // Bb5 Cm
  Z: "[[f3,c4,f4,a4]@8 [a4,c5,eb5,f5]@3 c5@3 c5@2, eb4@31 ~, ~ [f3,c4,f4], ~@11 [a4,eb5,f5]@5]/2", // F F7 F5 F7
  AA: "[c5@6 ~@16 c5@7 ~ f5@2, f5@11 ~@5, [ab3,c4,f4] [ab3,c4,eb4,f4], ab4@8 ab4@14 [ab4,f5]@9 ~, ~@6 c5@16 ~@7 c5@2 ~]/2", // Fm Fm7 Db
  AB: "[[f3,bb3,d4,f4,bb4]@8 [g3,bb3,d4,g4]@8 [ab3,bb3,d4,f4,ab4]@9 ~@3 f3 [e3,f3,g3,a3] [b3,c4,d4,e4,f4] [g4,a4] [c4,f4,c5,eb5,f5]@15 ~ [f4,c5,eb5]@7 ~ c5@4 c5@4, [bb2,d5]@24 ~@2 [d4,e4,f4]@4 ~ ab4@15 ~ c4@17, ~@27 [g3,a3,b3,c4]@3 ~@2 ab3@24 [ab4,eb5]@8, ~@28 [a2,b2,c3,d3]@2 ~@17 ab4@8 f4@8 ~, ~@48 f5@15 ~]/4", // Bb Gm Bb7 Fmaj7 Bdim Gsus2 F7 Bb …
  AC: "[[bb3,eb4,g4,bb4]@8 g4@2 ~ bb4@2 ~ eb5@2, eb3@13 bb4@3, eb5@22 bb3@9 ~, ~@16 eb4@15 ~, ~@16 [bb3,bb4]@4 [g3,g4]@11 ~]/2", // Eb Bb G
  AD: "[[ab3,f4,ab4,c5]@8 ab4@3 ~@3 [ab4,c5,eb5,f5]@2, c4@31 ~, [eb5,f5]@16 eb4@6 ab4@2 eb4@7 ~, ~@16 [ab3,f4]@15 ~, ~@4 c5@3 ~]/2", // Fm Fm7 Ebsus2 Db
  AE: "[bb4@6 ~@14 bb3@4 ~@6 b4 [f4,g4,a4], eb3@29 [e5,f5,g5,a5] [c5,d5]@2, eb5@25 ~ [b6,c7]@6, bb3@8 g4@4 eb4@4 g4@9 ~@3 [b5,c6,d6,e6]@4, [eb4,g4]@6 bb4@20 ~ [f6,g6,a6]@5]/2", // F Fmaj7 Csus2 Cmaj7 Eb F
  AF: "[g3,c4,eb4,g4], [c3,e4] ~@15", // Cm C
  AG: "g4@2 g4 [c4,eb4,g4,c5]@3 [bb3,c4,eb4,g4,c5]@2, [g3,bb4]@15 ~, [c4,eb4]@3 ~@5", // Cm Cm7 Gm Cm
  AH: "[~@8 [eb4,f4]@3 ~@3 c4@2, [f3,c4,eb4,f4,a4] [f3,a4], ~@6 c5@25 ~, ~@4 c4@3 ~, ~@11 [eb4,f4]@5]/2", // Ebsus2 F7 F Ebsus2
  AI: "[eb4@6 ~@6 c4@3 ~ [f4,ab4]@10 ~@4 [f4,g4] e4, [ab3,f4,ab4] [ab3,eb4], c4@12 ~@3 c4@10 ~@3 [f5,g5,a5,b5,c6,d6]@4, ~@6 eb4@10 ~@11 [e6,f6]@3 a4@2, ~@29 [b4,c5,d5,e5]@3]/2", // Fm Fsus2 Db Ab5 Dm7 Fmaj7 Cmaj7
  AJ: "[[f3,bb3,d4,f4,bb4]@8 [g3,bb3,d4,g4]@8 [ab3,bb3,d4,f4,ab4]@8 ~@6 [d4,e4,f4] [g4,a4], bb2@15 [b3,c4], ~@24 [bb3,d4,f4,bb4]@7 ~, ~@7 [a2,b2,c3,d3], ~@29 [e3,f3,g3,a3]@3]/2", // Bb Gm Bb7 Dm Gsus2 Cmaj7 Bb D7 …
  AK: "[bb4@6 ~@14 bb3@11 ~ [c4,f4,c5,eb5,f5]@15 ~ [f4,c5,eb5]@7 ~ c5@4 c5@4, [eb3,eb5]@31 ab4@15 ~ ab4@8 f4 [ab4,eb5]@8, bb3@16 g4@16 ~@15 c4@17, eb4@8 g4@4 eb4@20 ab3@31 ~, g4@6 bb4@26 ~@16 f5@15 ~]/4", // F7 Eb Ab5
  AL: "[[ab3,f4,ab4,c5]@8 ab4@3 ab4@3 ~@2, c4@31 ~, [eb5,f5]@16 eb4@9 ~@7, ~@16 [ab3,f4]@15 ~, ~@4 c5@3 ~]/2", // Fm Ebsus2 Db
})).s("gm_epiano1").gain(0.27)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@2 A@2 B C D E F G D E F G D E H I J K H I J L M N O P Q R S T H I J K H I J L M N O P Q R S T H I J K H I J L M N O
  P Q R S T H I J K H I J K H I J K H I J K H I J K H U ~@3
>`.pickRestart({
  A: "[g2@31 ~]/2", B: "f2@15 ~", C: "f2@12 ~@2 bb1 c2", D: "eb2 ~@2 bb1 eb2 ~@2 bb1 eb2 ~@2 bb1 eb2 ~ bb1 c2",
  E: "eb2 ~@2 bb1 eb2 ~@2 bb1 eb2 ~@2 bb1 eb2 ~ eb2 f2", F: "ab2 ~@2 eb2 ab2 ~@2 eb2 ab2 ~@2 eb2 ab2 ~ eb2 f2",
  G: "ab2 ~@2 eb2 ab2 ~@2 eb2 ab2 ~@2 eb2 ab2 ~ bb1 c2", H: "ab2 ~@2 ab2 ~ ab2 eb2 f2 ab2 ~@5 eb2 f2",
  I: "ab2 ~@2 ab2 ~ ab2 eb2 f2 ab2 ~@5 bb1 c2", J: "eb2 ~@2 eb2 ~ eb2 bb1 c2 eb2 ~@5 bb1 c2",
  K: "eb2 ~@2 eb2 ~ eb2 bb1 c2 eb2 ~@5 eb2 f2", L: "eb2 ~@2 eb2 ~ eb2 bb1 c2 eb2 ~@5 eb2 d2",
  M: "c2 ~@2 c2 ~ c2 g1@2 c2 ~@5 g1 bb1", N: "c2 ~@2 c2 ~ c2 g1@2 c2 ~@5 c2 eb2",
  O: "f2 ~@2 f2 ~ f2 c2 d2 f2 ~@5 c2 eb2", P: "f2 ~@2 f2 ~ f2 c2 d2 f2 ~@5 f2!2",
  Q: "ab2 ~@2 ab2 ~ ab2 eb2!2 ab2 ~@5 eb2 f2", R: "ab2 ~@2 ab2 ~ ab2 eb2!2 ab2 ~@5 ab2 a2",
  S: "bb2 ~@2 bb2 ~ bb2 f2 ab2 bb2 ~@5 f2 g2", T: "bb2 ~@2 bb2 ~ bb2 f2 ab2 bb2 ~@5 eb2 f2",
  U: "ab2 ~@2 ab2 ~ ab2 eb2 f2 ab2 ~@5 bb1 ~",
})).s("gm_electric_bass_finger").gain(0.57)

// chords · electric guitar clean · "+CHORUS GT"
const electric_guitar_clean = note(`<
  ~@6 A B ~ C ~ D E F G H I J K L M N O P Q R S T U V W X I J K L M N O P Q R S T U V W X I J K L M N O P Q R S T U V W
  X I J K L M N O P I J K L M N O P I J K L M Y@4
>`.pickRestart({
  A: "~@2 [g3,bb3,eb4] ~ [g3,bb3] [g3,bb3,eb4] ~ [g3,bb3] [g3,bb3,eb4] ~@2 [eb4,f4,g4,bb4]@2 [g4,bb4] [bb3,eb4] [g3,bb3]", // Eb Gm Eb Gm Eb Gm Eb5 Gm
  B: "~@2 [g3,bb3,eb4] ~ [g3,bb3] [g3,bb3,eb4] ~ [g3,bb3] [g3,bb3,eb4] bb3 [c4,eb4] [eb4,g4] [f4,ab4] eb4 [c4,eb4] ~", // Eb Gm Eb Gm Eb Cm Eb Fm …
  C: "~@2 [c4,eb4,ab4] ~ [c4,eb4] [c4,eb4,ab4] ~ [c4,eb4] [c4,eb4,ab4] ~@2 [c4,eb4,gb4,ab4] ~ [eb4,ab4] ~@2", // Ab Cm Ab Cm Ab Ab7 Ab5
  D: "~ bb3 [c4,eb4] [eb4,g4] [f4,ab4] [g4,bb4] [f4,ab4] [eb4,g4] [f4,ab4] eb4 [c4,eb4] bb3 [c4,eb4] [eb4,g4] c4 bb3", // Cm Eb Fm Gm Fm Eb Fm Cm …
  E: "~@10 [eb4,ab4,eb5] ~ [eb4,ab4] [eb4,ab4,eb5] ~ [eb4,ab4]", // Ab5
  F: "[eb4,ab4,eb5] ~@2 [eb4,ab4,eb5] ~ [eb4,ab4,eb5] ~@3 bb4 [eb4,ab4,eb5] [eb4,ab4,eb5]@2 [eb4,ab4,eb5] ~@2, ~@4 [eb4,ab4,eb5] ~@3", // Ab5
  G: "[bb3,eb4,g4]@5 ~@3 [g3,bb3,eb4] ~ f3 g3 [bb3,eb4] [bb3,eb4,g4] ~ f3", // Eb Eb5 Eb
  H: "g3 [bb3,eb4] g3 [bb3,eb4,g4] ~ f3 g3 [bb3,eb4] g3 [bb3,eb4,g4] ~ g3 [bb3,eb4,g4] ~@3", // Eb5 Eb Eb5 Eb
  I: "[c4,eb4,ab4] ~ [c4,eb4] [c4,eb4,ab4] ~ [c4,eb4] [c4,eb4,ab4] [eb4,ab4] [c4,eb4,ab4] ~ [c4,eb4] [c4,eb4,ab4] ~ [c4,eb4] [c4,eb4,ab4] [eb4,ab4]", // Ab Cm Ab Cm Ab Ab5 Ab Cm …
  J: "[eb4,ab4,c5] ab4 [eb4,ab4] [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@2 [eb4,ab4,c5] [ab4,c5] [eb4,ab4] [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@2", // Ab Ab5 Ab Ab5 Ab
  K: "f3 g3 bb3 [g3,bb3,eb4] ~ [g3,bb3,eb4] ~@2 f3 g3 ~ [g3,bb3,eb4]@2 [g3,bb3,eb4] ~@2", // Eb
  L: "f3 g3 ~ [g3,bb3,eb4]@2 [g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~ [g3,bb3] [bb3,eb4,g4]@2 [bb3,eb4,g4] ~@2", // Eb Gm Eb
  M: "[c4,eb4,ab4]@2 [c4,eb4] [c4,eb4,ab4] ~ [c4,eb4] [c4,eb4,ab4] [eb4,ab4] [c4,eb4,ab4] ~ [c4,eb4] [c4,eb4,ab4] ~ [c4,eb4] [c4,eb4,ab4] [eb4,ab4]", // Ab Cm Ab Cm Ab Ab5 Ab Cm …
  N: "~ eb4 [c4,eb4] [c4,eb4,ab4] ~ [c4,eb4,ab4] ~@2 [eb4,ab4,c5] [ab4,c5] [eb4,ab4] [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@2, [c4,eb4,ab4] ~@7", // Cm Ab Ab5 Ab
  O: "f3 g3 bb3 [g3,bb3,eb4] ~ [g3,bb3,eb4] ~@2 f3 g3 ~ [g3,bb3,eb4] ~ eb4 [f4,ab4] [eb4,g4]", // Eb Fm Eb
  P: "~ [g4,bb4] ~ [f4,ab4] ~ [eb4,g4] ~@2 [g3,bb3,eb4] ~ [g3,bb3] [bb3,eb4,g4]@2 [bb3,eb4,g4] ~ [g3,bb3], [f4,ab4] ~@7", // Gm Fm Eb Gm Eb Gm Fm
  Q: "[c4,eb4,g4]@2 [c4,eb4] [eb4,g4,c5] ~ [eb4,g4,c5] ~ [eb4,g4] [eb4,g4,c5] [g4,c5] [eb4,g4] [eb4,g4,c5] ~ [eb4,g4,bb4] ~ [g4,bb4]", // Cm Eb Cm C5 Eb Cm Eb Gm
  R: "[c4,eb4,g4]@2 [c4,eb4] [eb4,g4,c5] ~ [eb4,g4,c5] ~ [g4,c5] [eb4,g4,c5] [g4,c5] [eb4,g4] [eb4,g4,c5] ~ [eb4,g4,bb4] ~ [g4,bb4]", // Cm C5 Cm C5 Eb Cm Eb Gm
  S: "[c4,eb4,a4]@2 [c4,eb4] [c4,eb4,a4] ~ [c4,eb4,a4] ~ [eb4,a4] [b3,d4,ab4] [eb4,a4] [c4,eb4] [c4,eb4,a4] ~ [c4,eb4,a4] ~ [eb4,a4]", // Adim Cm Adim Ebdim Abdim Ebdim Cm Adim …
  T: "[c4,eb4,a4]@2 [c4,eb4] [c4,eb4,a4] ~ [c4,eb4,a4] ~ [eb4,a4] [b3,d4,ab4] [eb4,a4] [c4,eb4,a4]!2 ~ [c4,eb4,a4] ~ [eb4,a4]", // Adim Cm Adim Ebdim Abdim Ebdim Adim Ebdim
  U: "[c4,eb4,f4,ab4]@2 [c4,eb4,f4] [c4,eb4,f4,ab4] ~ [c4,eb4,f4,ab4] ~ [eb4,f4,ab4] [b3,d4,e4,g4] [eb4,f4,ab4] [c4,eb4,f4] [c4,eb4,f4,ab4] ~@3 [eb4,f4,ab4]", // Fm7 F7 Fm7 Em7 Fm7 F7 Fm7
  V: "[c4,eb4,f4,ab4]@2 [c4,eb4,f4] [c4,eb4,f4,ab4] ~ [c4,eb4,f4,ab4] ~ [eb4,f4,ab4] [b3,d4,e4,g4] [eb4,f4,ab4] [c4,eb4,f4,ab4]!2 ~ [c4,eb4,f4,ab4] ~ [eb4,f4,ab4]", // Fm7 F7 Fm7 Em7 Fm7
  W: "[db4,f4,a4] [d4,bb4] [d4,f4] [d4,f4,bb4] ~ [d4,f4,bb4] ~ [f4,bb4] [db4,f4,a4] [f4,bb4] [d4,f4] [d4,f4,bb4] ~ [d4,f4,bb4] ~ [f4,bb4]", // Dbaug Gm Dm Bb Bb5 Dbaug Bb5 Dm …
  X: "[d4,f4,bb4]@2 [d4,f4] [d4,f4,bb4] ~ [d4,f4,bb4] ~ [f4,bb4] [db4,f4,a4] [f4,bb4] [d4,f4,bb4]!2 ~ [d4,f4,bb4] ~ [f4,bb4]", // Bb Dm Bb Bb5 Dbaug Bb5 Bb Bb5
  Y: "[~ eb4 [c4,eb4] [c4,eb4,ab4] ~ [c4,eb4,ab4] ~@2 [eb4,ab4,c5] [ab4,c5] [eb4,ab4] [eb4,ab4,c5] ~ [ab4,c5]@40 ~@11, [c4,eb4,ab4]@2 ~@11 eb4 ~@50]/4", // Cm Ab Ab5 Ab
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.3)

// chords · electric guitar clean · "+CHORUS GT" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@6 A@2 ~ B ~@2 C ~@3 D E F G D H F I J@2 K L D M N O D E F G D H F I J@2 K L D M N O D E F G D H F I J@2 K L D M N O
  D E F G D H F I D E F G D H F I D E F G D H ~@3
>`.pickRestart({
  A: "~@4 eb4 ~@11", B: "~@4 ab4 ~@11", C: "~@12 eb5 ~@3", D: "~@2 ab4 ~@7 ab4 ~@5", E: "~@2 c5 ~@7 c5 ~@5",
  F: "~@2 g3 ~@7 [g3,bb3] ~@5", G: "~@2 [g3,bb3] ~@7 eb4 ~@5", H: "~@2 ab4 ~@7 c5 ~@5", I: "~@10 eb4 ~@4 eb4",
  J: "~@2 g4 ~@7 c5 ~@5", K: "~@2 a4 ~@7 a4 ~@5", L: "~@2 a4 ~@13", M: "~@2 ab4 ~@13", N: "~@2 bb4 ~@7 bb4 ~@5",
  O: "~@2 bb4 ~@13",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.3)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  ~@4 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@2 D@2 E@2 F@2 A@2 B@2 A@2 B@2 C@2 D@2 E@2 F@2 A@2 B@2 A@2 B@2 C@2 D@2
  E@2 F@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 ~@3
>`.pickRestart({
  A: "[c5,eb5,f5,ab5]/2", B: "[bb4,eb5,g5,bb5]/2", C: "[c5,eb5,g5,c6]/2", D: "[c5,eb5,f5,a5]/2",
  E: "[ab4,c5,eb5,ab5]/2", F: "[bb4,d5,f5,bb5]/2",
})).s("gm_drawbar_organ").gain(0.27).pan(0.6)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~ A@3 B@2 ~ C@3 ~ D@2 ~@76>".pickRestart({
  A: "[~@8 [bb3,eb4,g4]@15 ~, ~@15 [bb2,eb3,g3]@31 ~@2]/3", // Eb
  B: "[~@10 [c5,eb5] c5@3 [ab4,bb4] ab4@3 [eb4,f4] eb4 c4@2 eb4@6 ~@4]/2", // Cm Absus2 Ebsus2
  C: "[~@16 [eb4,ab4]@10 [c5,eb5] c5@3 [ab4,bb4] ab4@3 ~@14, ~@15 c4@10 ~@23]/3", // Ab5 Cm Absus2
  D: "[~@8 [eb4,ab4]@5 ~@3, ~@15 c4@10 ~@7]/2", // Ab5
})).s("gm_electric_guitar_jazz").gain(0.4).pan(0.3)

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

// drums · snare
const snare = s("sd").struct("<~@4 A@27 B A@15 C A@15 B A@22 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@5 x ~@2 x!2 ~", C: "~@4 x ~@5 x ~@2 x ~@2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  A@2 B C B@11 C B@7 C B@3 C B@3 C B D B@5 C B@3 C B@3 C B@7 C B@3 C B@3 C E B@2 C B@3 C B C B D B C B C B C B@3 F ~@3
>`.pickRestart({
  A: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x", B: "x!16", C: "x!14 ~ x", D: "x!11 ~ x!4", E: "x!2 ~ x!13", F: "x!15 ~",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@3 B A@11 B A@7 B A@3 B A@5 C A@5 B A@3 B A@3 B A@7 B A@3 B A@7 B A@3 B A B A C A B A B A B A@4 ~@3
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", B: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x!2", C: "~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@64 x ~@7 x ~@16>").gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<[~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~]!86 ~@3>").gain(0.32)

// drums · congas
const congas = s("conga:13").struct("<[~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~]!86 ~@3>").gain(1.54)

stack(
  epiano1, bass, electric_guitar_clean, electric_guitar_clean_2, drawbar_organ, electric_guitar_jazz, kick, snare,
  hihat, open_hat, crash, tambourine, congas
)