Strudelify
Dancing in the Moonlight cover art

Dancing In The Moonlight

Dancing in the Moonlight

King Harvest

KeyE♭ majorTempo135 bpm
0:00/0:00
// Dancing in the Moonlight — King Harvest
// 135 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 · "E.PIANO 1"
const epiano1 = note(`<
  A B C@2 D E F G H I J@2 K L M@2 N O P@2 H Q R@2 S T U@2 V W@3 X Y@4 Z AA AB AC AD AE AF AG AH@2 AI AJ AK@4 AL@3 AM AN
  AO@2 H AP AQ@2 AR AS AT AB AU AV@3 AW AX AY@3 AV@3 AW AX AY@3 AV@3 AW AX AZ@3 A B C@2 D E F G BA
>`.pickRestart({
  A: "~@2 c6 ~ eb6 c6 ~ bb5, c5, ~ g5@4 ~ g5@2, ~@3 g6@5",
  B: "f5@2 [c6,eb6]@4 f5@2 [c6,eb6]@3 ~ [c6,eb6]@2 a3@2, f3@2 ~ f3@3 ~@2", // Cm
  C: "[c6@2 d6@2 c6 ~ [c6,f6]@2 d6 ~ [c6,f6]@2 bb5@2 ~@4 bb5@2 ~@2 [eb4,g6]@2 f6@2 bb5@2 d6@2 [d4,f6]@2, bb3@12 ~@4 eb4@5 ~@3 d4@4 ~@4, f6@2 ~@5 [eb6,g6]@2 ~ eb6@2 ~@4]/2", // F5 Eb Dm Eb
  D: "eb6 ~ g5@2 bb5@2 g6@2 eb6@2 bb5@2 g5@2 bb5 ~, c4@3 c5",
  E: "f5 [c6,eb6]@2 f5 [c6,eb6] ~ eb6 a4, f4@5 ~ f4@6 c6 ~@3", // Cm
  F: "~@2 d6@2 c6 ~ c6@2 d6 ~ [c6,f6]@2 bb5 ~ [d4,d6,g6]@2, bb4@3 ~, [c6,f6]@2 ~ f6@2 ~@3", // F5 G5 F5
  G: "~@2 [d6,g6]@4 ~@2 [g4,d6,g6]@3 ~ [g4,g6]@4, ~ d4@3 ~@2 d6 ~", H: "[c4,g5,eb6]@3 ~@13",
  I: "f4@4 [ab4,c5,eb5]@6 f4@2 [ab4,c5,eb5] ~ a3@2, f3@13 ~@3", // Ab
  J: "[[c5,f5]@2 d5@2 bb4 ~ [c5,f5]@2 d5@2 [c5,f5]@2 bb4@2 ~@8 [eb4,g5]@2 f5@2 ~@2 d5@2 [d4,f5]@2, bb3@13 ~ g5@4 bb4@4 ~@2 d4@4 ~@4, ~@8 eb4@2 eb5@2 ~ bb4@2 ~]/2", // F5 Eb Dm
  K: "eb5 g4 bb4 g5 eb5 bb4 g4 bb4, c4@7 ~", L: "ab4@2 [c5,eb5]@3 ~ ab4@2 [c5,eb5]@3 ~ [c5,eb5]@2 a3@2, f3@3 ~",
  M: "[[c5,f5]@2 d5@2 bb4 ~ [c5,f5]@2 d5@2 [c5,f5]@2 bb4 ~@5 bb4@2 ~@2 [eb4,g5]@2 f5@2 bb4@2 d5@2 [d4,f5]@2, bb3@13 ~ [eb5,g5]@4 ~@2 eb5@4 ~@8, ~@8 eb4@3 ~ d4@2 ~@2]/2", // F5 Eb Dm Eb
  N: "eb5 ~ bb5 g6 eb6 bb5 g5 bb5, c4@13 ~@3, ~@2 g5@5 ~@9",
  O: "ab5@2 [c6,eb6]@4 ~@2 [c6,eb6]@3 ~ [c6,eb6] ~ a3@2, f3@3 ~, ~@3 ab5@2 ~@3", // Cm
  P: "[[c6,f6]@2 d6@2 c6 ~ [c6,f6]@2 d6 ~ [c6,f6]@2 bb5 ~@5 bb5@2 ~@2 [eb4,g6]@2 f6@2 bb5@2 d6@2 [d4,f6]@2, bb3@13 ~ [eb6,g6]@4 ~@2 eb6@4 ~@8, ~@16 eb4@5 ~@3 d4@4 ~@4]/2", // F5 Eb Dm Eb
  Q: "ab4@2 [c5,eb5]@4 ab4@2 [c5,eb5]@2 ~@2 [c5,eb5] ~ a3@2, f3@11 ~@5", // Cm
  R: "[[c5,f5]@2 d5@2 c5 ~ [c5,f5]@2 d5 ~ [c5,f5]@2 bb4 ~@5 bb4@2 ~@2 [eb4,g5]@2 f5@2 ~@2 d5@2 [d4,f5]@2, bb3@5 ~@2 [d4,eb5,g5]@2 ~@3 d4@2 ~@2, ~@8 eb4@2 eb5@2 ~ bb4@2 ~]/2", // F5 Eb Dm Ebmaj7
  S: "eb5 ~ bb4 [c4,g5] eb5 bb4 g4 bb4, c4@4 ~@6 c4@5 ~, ~@2 g4@5 ~@9", // C5
  T: "ab4@2 [c5,eb5]@4 ab4@2 [c5,eb5]@2 ~@2 [c5,eb5] ~ a3@2, f3@9 ~@7", // Cm
  U: "[[c5,f5]@2 d5@2 c5 ~ [c5,f5]@2 d5 ~ [bb3,c5,f5]@2 bb4 ~@5 bb4@2 ~@2 [eb4,g5]@2 f5@2 ~@2 d5@2 [d4,f5]@2, bb3@7 ~@7 [d4,eb5,g5]@4 ~@2 eb5@4 ~@2 bb4@4 ~@2, ~@16 eb4@5 ~@3 d4@4 ~@4]/2", // F5 Bbsus2 Eb Dm Ebmaj7
  V: "eb5 ~ bb4 [c4,g5] eb5 [c4,bb4] g4 bb4, c4 ~@3, ~@2 g4@5 ~@9", // C5 C7
  W: "[[c4,ab4]@2 ~@2 c4@2 bb3@2 ~@2 ab4@2 [c5,eb5] ~ [d5,f5]@4 [bb3,c5]@2 [d4,d5] ~ [d4,d5,f5]@4 [c4,c5]@2 [bb3,bb4]@2 d4 ~@3 bb4@2 ~@2 [eb4,g5]@2 f5@2 ~@2 d5@2 [d4,f5]@2, ~@4 [c5,eb5]@7 ~@3 c5 ~@7 c5 ~@7 [eb5,g5]@4 ~@2 eb5@4 ~@2 bb4@4 ~@2, ~@8 c4@4 eb4@4 ~@16 eb4@5 ~@3 d4@5 ~@3]/3", // Fm Cm Dm Bbsus2 D Dm C Bb …
  X: "eb5 ~ bb4 g5 eb5 bb4 g4 bb4, c4@13 ~@3, ~@2 g4@5 ~@9",
  Y: "[ab4@2 ~@2 [c5,eb5]@6 ab4@2 [c5,eb5] ~ a3@2 ~@2 c5@2 d5 ~ [d5,f5]@4 c5@2 bb4@2 [eb5,g5]@4 bb4@2 [eb5,g5] ~ [d5,f5]@4 bb4@2 [d5,f5] ~ [c5,eb5]@4 ~@2 bb4@2 g5@2 eb5@2 bb4@2 g4@2 bb4 ~, f3@12 ~@2 [d5,f5]@5 ~@3 c5 ~@27 g4@4 ~@10, ~@14 c5 ~ bb3@11 ~@3 eb4@8 d4@8 c4@15 ~@3]/4", // Cm Dm Eb Dm Cm Dm
  Z: "ab4@3 ~ [c5,eb5]@6 ab4@2 [c5,eb5] ~ a3@2, f3@9 ~@7, ~ ab4 ~@2", // Cm
  AA: "[c5,f5]@2 d5@2 c5 bb4 c5@2 d5@2 c5@2 bb4 ~ d4@2, bb3 ~, ~@6 f5@5 ~@5", // F5
  AB: "g5 ~@2 [eb4,g5] f5 bb4 d5 [d4,f5], eb4 eb5 ~@2, ~ bb4@2 ~ d4@2 ~@2", // Eb Dm
  AC: "eb5 ~ bb4 [c4,g5] eb5 [c4,bb4] g4 c4, c4 ~@3, ~@2 g4@4 ~@8 bb4 ~", // C5 C7
  AD: "f3@4 ~@2 f3@4 [g3,ab4]@2 [c5,eb5] ~ [a3,c5,f5]@2, ab4 ~ [c5,eb5]@3 ~ ab3 ~", // Abmaj7 Cm F Cm
  AE: "d5@2 c5 ~ [c5,f5]@2 d5 ~ [c5,f5]@2 d5@2 bb4 ~ d4@2, bb3@5 ~ bb3@5 ~@5", // F5
  AF: "g5 ~ eb5 [eb4,g5] f5 ~ d5 [d4,f5], eb4 ~ d4 ~, ~ bb4@2 ~@2 bb4@2 ~", // Eb Dm
  AG: "eb5 ~ bb4 [c4,g5] eb5 [c4,bb4] g4 bb4, c4@5 ~@11, ~@2 g4@5 ~@9", // C5 C7
  AH: "[ab4@2 ~@2 [ab4,c5,eb5]@4 f4@2 ab4@2 [c5,eb5] ~ a3@2 ~@2 c5 ~@3 c5 ~@3 c5@2 bb4@2 d4@2, f3@11 ~@3 [d5,f5]@4 ~@14, ~@14 c5 ~ bb3@5 ~ [bb3,d5,f5]@6 ~@4]/2", // Ab Cm Dm Bb
  AI: "g5 ~@2 [eb4,g5] f5 ~ d5 [d4,f5], eb4@2 eb5@2 ~ bb4@2 ~, ~ bb4@2 ~ d4@2 ~@2", // Eb Dm
  AJ: "eb5 ~ bb4 [c4,g5] eb5 bb4 g4 bb4, c4@5 ~@5 c4@5 ~, ~ g4@2 ~@5", // C5
  AK: "[ab4@2 ~@2 [c5,eb5]@6 [ab3,ab4]@2 [c5,eb5] ~ [d5,f5]@6 c5 ~ [d5,f5]@4 [c4,c5]@2 [d4,bb4]@2 [eb5,g5]@4 bb4@2 [eb5,g5] ~ [d5,f5]@4 bb4@2 [d5,f5] ~ [c5,eb5]@4 g4@2 bb4@2 g5@2 eb5@2 bb4@2 g4@2 bb4@2, f3@5 ~ a3 bb3@6 ~@2 eb4@4 d4@4 c4@6 c4@2 ~, ~@14 c5 ~@7 c5 ~@41]/4", // Cm Ab Cm Dm C Gm Eb Dm …
  AL: "[ab4@2 ~@2 [ab4,c5,eb5]@4 ~@2 ab4@2 [c5,eb5] ~ [a3,c5]@2 ~@4 c5 ~ [d5,f5]@4 c5@2 bb4 ~@9 [eb4,g5]@2 f5@2 ~@2 d5@2 [d4,f5]@2, f3@11 ~@5 bb3@10 ~@4 [d4,g5]@4 bb4@4 ~@2 d4@4 ~@4, ~@8 f4@4 ~@2 [d5,f5]@6 ~@2 c5 ~@9 eb4@4 eb5@4 ~@2 bb4@4 ~@2]/3", // Ab Cm Am Dm Eb Dm G5 Dm
  AM: "eb5@2 g5@2 bb5 ~@3 eb6@2 bb5@2 g5@2 bb5@2, c4@4 ~ c4@3, ~@3 g6@2 ~@3",
  AN: "ab5 ~ [c6,eb6]@2 ab5 [c6,eb6] ~ [a3,c6,f6], f3@3 ~", // Cm F
  AO: "[d6@2 c6 ~ c6@2 d6@4 [bb3,c6]@2 bb5 ~ d4@2 ~@4 eb6@2 [eb4,g6]@2 d6@2 bb5@2 d6@2 [d4,f6]@2, bb3@8 ~@8 eb4@5 ~@3 [d4,f6]@4 ~@4, ~@4 f6@7 ~@3 [eb6,g6]@4 bb5@4 ~@10]/2", // Bbsus2 Eb Dm Eb
  AP: "f4@2 ~@2 [ab4,c5,eb5]@6 f4@2 [ab4,c5,eb5] ~ a3@2, f3@3 ~", // Ab
  AQ: "[[c5,f5]@2 d5@2 c5 ~ d5@4 c5@2 bb4@2 ~@8 [eb4,g5]@2 f5@2 ~@2 d5@2 [d4,f5]@2, bb3@5 ~@2 [d4,eb5,g5]@2 ~ eb5@2 ~@4, ~@3 f5@3 ~@3 bb4@2 ~@2 bb4@2 ~, ~@6 c5 ~@9 eb4@5 ~@3 d4@4 ~@4]/2", // F5 Eb Dm Ebmaj7
  AR: "eb5@2 ~@2 bb4@2 g5@2 eb5@2 bb4@2 g4@2 bb4 ~, c4@4 ~@2 c4@7 ~@3, ~ g4@2 ~@5",
  AS: "ab4 [c5,eb5]@2 ab4 [c5,eb5] ~ eb5 a3, f3@11 ~ c5 ~@3", // Cm
  AT: "[c5,f5]@2 d5@2 c5 ~@2 d5@3 [c5,f5]@2 bb4@2 d4@2, bb3@11 ~@5, ~@6 [c5,f5]@3 ~@7", // F5
  AU: "[c4,eb5] ~@3 eb5 bb4 [c4,g4] bb4, ~ g4@2 [c4,g5]@2 ~@3, ~ bb4 ~@2", // Cm C5
  AV: "[ab4@2 ~@2 [c5,eb5]@6 ab4@2 [c5,eb5] ~ [a3,c5]@2 ~@2 c5 ~ [d5,f5] ~ [d5,f5]@4 c5@2 bb4 ~ d4@2 ~@6 [eb4,g5]@2 f5@2 ~@2 d5@2 [d4,f5]@2, f3@12 ~@2 [d5,f5]@5 ~@3 c5 ~@7 [eb5,g5]@4 bb4@4 ~@2 d4@4 ~@4, ~@8 bb3@5 ~@3 eb4@2 eb5@2 ~ bb4@2 ~]/3", // Cm Am Dm Eb Dm Eb
  AW: "eb5@2 ~@2 bb4@2 g5@2 eb5@2 bb4@2 g4@2 bb4 ~, c4@8 ~@2 c4@5 ~, ~ g4@2 ~@5",
  AX: "ab4 [c5,eb5]@2 ab4 [c5,eb5] ~ eb5 a3, f3@3 ~, ~@2 ab4 ~@9 c5 ~@3", // Cm
  AY: "[~@2 d5@2 c5 ~ [d5,f5]@4 [c4,c5]@2 d4@2 [eb5,g5]@3 ~ g5@2 ~@2 g5@2 f5@2 ~@2 d5@2 f5@2 eb5@2 g4@2 bb4@2 g5@2 eb5@2 bb4@2 g4@2 bb4@2, bb3@10 ~@4 eb4@8 d4@8 c4@7 ~ c4@9 ~, [c5,f5]@4 ~@2 c5 ~@5 bb4 ~@5 eb5 ~ eb5@4 ~@2 bb4@4 ~@18]/3", // Dm C Eb F5
  AZ: "[~@2 d5@2 c5 ~ [d5,f5]@4 [c4,c5]@2 d4@2 [eb5,g5]@3 ~ g5@2 ~@2 g5@2 f5@2 ~@2 d5@2 f5@2 eb5@2 g4@2 bb4@2 g5@2 eb5@2 c6@5 ~, bb3@10 ~@4 eb4@8 d4@8 c4@7 ~ c4@9 ~, [c5,f5]@4 ~@2 c5 ~@5 bb4 ~@5 eb5 ~ eb5@4 ~@2 bb4@4 ~@18]/3", // Dm C Eb F5
  BA: "[c5,g5,eb6]@7 ~, c4@3 ~@13", // Cm
})).s("gm_epiano1").gain(0.33).pan(0.6)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@4 A B C D E F G H I J K H L M N H E J K O I J P H Q R@2 H S T@4 M K O U J P V W X@2 H Y Z@4 AA@2 H AB AC AD V E J K
  O AE AF K V AG AH AI H AJ AK@4 AH AI H AJ AK@4 AH AI H AJ AL@4 ~@4 A B C D AM
>`.pickRestart({
  A: "~@3 c3", B: "f2", C: "bb1@7 d2", D: "~ d2@3 g2@2 db2@2", E: "c2@3 ~@13", F: "f1@6 g1@3 ~ ab1@2 ~@2 a1@2",
  G: "bb1@6 bb1@3 ~ c2@2 ~@2 d2@2", H: "eb2@5 ~ eb2@2 d2@5 ~ d2@2", I: "c2@4 ~@2 eb3@3 ~ c3@4 g2@2",
  J: "f1@5 ~ g1@3 ~ ab1@2 ~@2 a1@2", K: "bb1@5 ~ bb1@3 ~ c2@2 ~@2 d2@2", L: "c2@4 ~@2 c2@2 ~@2 c2@3 ~ g1@2",
  M: "f1@5 ~ g1@2 ~@2 ab1@2 ~@2 a1@2", N: "bb1@2 ~ bb1 ~ c2 ~ d2", O: "eb2@2 ~ eb2 d2@2 ~ d2",
  P: "bb1@4 ~@2 bb1@3 ~ c2@2 ~@2 d2@2", Q: "c2 ~ c2@3 ~ c2@3 ~ c2@4 g1 ~",
  R: "[f1@2 ~@2 f1@5 ~ g1 ~ ab1@2 bb1@6 ~@2 bb1@4 c2@2 d2@3 ~]/2", S: "c2@5 ~ c2@4 g1@3 ~ eb1@2",
  T: "[f1@3 ~ f1@5 ~ g1 ~ ab1@2 bb1@5 ~ bb1@5 ~ c2@2 d2@2 eb2@5 ~ eb2@2 d2@7 ~ c2@5 ~ c2@5 ~ c2@2 ~@2 g1@2]/4",
  U: "c2@3 ~@3 eb3@2 ~@2 c3@4 g2@2", V: "eb2@4 ~@2 eb2@2 d2@5 ~ d2@2", W: "c2 ~ c2 ~ c2@2 g2@2 c3@2 g2@2 c2@3 ~",
  X: "[f1@2 ~@2 f1@5 ~ g1@2 ab1@2 bb1@4 ~@2 bb1@6 c2@2 d2@4]/2", Y: "c2@2 ~ c2@2 c2@2 g1",
  Z: "[f1@2 ~@2 f1@6 g1@2 ab1@2 bb1@5 ~ bb1@6 c2@2 d2@2 eb2@5 ~ eb2@2 d2@4 ~@2 d2@2 c2@4 ~@2 c2@5 ~ c2@2 ~@2 g1@2]/4",
  AA: "[f1@5 ~ g1@4 ab1@2 a1@2 bb1@5 ~ bb1@6 c2@2 d2@3 ~]/2", AB: "c2@5 ~ c2@3 ~ c2@4 g1@2",
  AC: "f1 ~ f1@2 ~ g1 ab1 a1", AD: "bb1@3 ~ bb1@4 ~@2 bb1@2 c2@2 d2@2", AE: "c2@2 ~ eb3 ~ c3@2 g2",
  AF: "f1@6 g1@3 ~ ab1@3 ~ a1@2", AG: "c2@3 ~ c2@2 g2@2 c3@2 g2@2 c2@3 ~", AH: "f1@2 ~@2 f1@5 ~ g1@2 ab1@2 a1@2",
  AI: "bb1@2 ~@2 bb1@6 c2@2 d2@3 ~", AJ: "c2@4 ~@2 c2@3 ~ c2@4 g1@2",
  AK: "[f1@2 ~@2 f1@6 g1@2 ab1@2 bb1@5 ~ bb1@6 c2@2 d2@2 eb2@5 ~ eb2@2 d2@5 ~ d2@2 c2@6 c2@2 g2@2 c3@2 g2@2 c2@3 ~]/4",
  AL: "[f1@2 ~@2 f1@6 g1@2 ab1@2 bb1@5 ~ bb1@6 c2@2 d2@2 eb2@5 ~ eb2@2 d2@5 ~ d2@2 c2@17 ~]/4", AM: "c2@11 ~@5",
})).s("gm_fretless_bass").gain(0.44)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@16 A B@2 C D ~@31 E F G@2 H I J@2 K ~@41>".pickRestart({
  A: "bb4 c5@11 eb5@2 ~@2, eb5@11 ~@5", B: "[gb4@5 ~ f4@3 ~ eb4 ~ f4@10 f4 ~ f4@5 d4 ~@2]/2",
  C: "f4@6 bb4@4 ~ g4 bb4@4", D: "c5@3 ~@13", E: "~@2 eb5@5 ~ eb5@2 [g4,c5]@2 g4@2 eb4 ~, ~ bb4@4 ~@3",
  F: "[f4,ab4]@2 [f4,ab4]@2 eb4@2 [f4,ab4]@5 ~@5", // Fm
  G: "[~@6 [g4,bb4] c5@3 ~@2 g4@2 f4 g4@3 f4@2 eb4@2 g4@3 ~ f4@2 eb4@4, ~@6 eb5@7 ~@9 f4 ~@9, ~@10 bb4@4 bb4@6 ~@2 bb4@7 ~@3]/2", // Gm
  H: "c4@5 ~ bb4@3 ~ bb4@2 g4@2 eb4@2, ~@12 c5 ~@3", I: "[e4,f4,g4,ab4]@2 f4@2 eb4@2 [f4,ab4]@9 ~, ~ ab4@2 ~@5",
  J: "[~@6 bb4 c5@2 ~ [bb4,eb5]@2 g4@2 f4 g4@2 ~@3 eb4@2 f4 g4@2 ~@3 eb4@4, ~@3 eb5@2 ~@2 eb4@3 ~ eb4@3 ~@2, ~@9 f4@2 ~@2 f4@2 ~]/2", // Eb5
  K: "c4 ~@7",
})).s("gm_electric_guitar_jazz").gain(0.44).pan(0.4)

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

// drums · rim
const rim = s("rim").struct("<~@9 A@10 B ~ A@7 ~@9 A@6 B ~@58>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.44)

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

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@9 A@11 B A@23 C ~@7 D A@6 B@2 A@7 ~@34>".pickRestart({
  A: "x!4", B: "x", C: "x!3 ~", D: "~ x",
})).gain(0.33)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 [x ~@3 x!4] x ~@93>").gain(0.27)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@7 [~ x!3 ~@4] ~@94>").gain(0.11)

// drums · high tom
const high_tom = s("ht").struct("<~@59 [~ x ~@2] ~@8 x ~@33>").gain(0.27)

// drums · ride
const ride = s("rd").struct("<~@45 [x!4]!7 [x!2 ~@2] ~@16 [x!4]!23 x ~@9>").gain(0.27)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<A B@2 C@5 D ~@9 E F D G H@6 I C@8 ~@26 J F@2 H@2 D C@23 B ~@9>".pickRestart({
  A: "~@3 x", B: "x!4", C: "x!8", D: "x", E: "x!3 ~@4 x", F: "x ~@6 x", G: "~@3 x!2 ~@2 x", H: "x ~@2 x!2 ~@2 x",
  I: "x ~@2 x!2 ~ x ~", J: "~@7 x",
})).gain(0.55)

stack(epiano1, bass, electric_guitar_jazz, kick, rim, snare, pedal_hat, mid_tom, mid_tom_soft, high_tom, ride, cabasa)