Strudelify

Breaking Up Is Hard to Do

Neil Sedaka

KeyB majorTempo117 bpm
0:00/0:00
// Breaking Up Is Hard to Do — Sedaka Neil
// 117 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 67 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(117/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 · piano · "A.PIANO 1"
const piano = note(`<
  ~@5 A B C D E F G H I@2 J K L M N O P@2 Q R ~@9 L M N O P@2 Q R ~@9 L M N O P@2 Q S T U V W X Y Z ~
>`.pickRestart({
  A: "b2@4 [b3,d#4,f#4]@2 b2@2 [b3,d#4,g#4] ~ [b3,d#4,g#4] ~@5, ~@4 g#2 ~@3", // B G#m
  B: "~@2 [b3,e4,g#4] ~ [e4,g#4]@2 [e2,b3] ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [f#2,e4,g#4]@2 b3 ~, e2@4 b3 ~@3 f#2@2 ~@2 b3 ~@3", // E E5 E C#m
  C: "[b2,b3,d#4,f#4]@3 ~ [b2,b3,d#4,f#4]@2 b2@2 [e2,b3,e4,g#4] ~ [e2,b3]@2 ~@2 [b3,e4,g#4] ~, ~@10 [e4,g#4] ~@3 e2@2", // B E E5 E
  D: "[b2,b3,d#4,f#4] ~@7", E: "~@4 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~ [b4,d#5,f#5] ~@5, b2@7 ~ g#2@7 ~",
  F: "[b4,d#5,f#5] ~ [b4,e5,g#5] ~@5 f#2@5 ~@3, e2@3 [c#5,e5]@3 ~@2", // B E C#m
  G: "~@4 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~ [b4,d#5,f#5] ~@3 g#2@2, b2@7 ~ g#2@5 ~@3", // B
  H: "[b4,d#5,f#5] ~ [b4,e5,g#5] ~@5 f#2@7 ~, e2@3 [c#5,e5]@3 ~@2", // B E C#m
  I: "[[b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5] ~@3 [a#4,g5]@2 [a#4,c#5,d#5,g5] ~@3 a#2 ~@5 [g#4,b4,d#5]@3 ~ [g#4,b4,d#5]@3 ~ [g#4,d#5]@2 ~@2, b2@7 ~ a#2@5 ~@3 g#2@7 ~ g#2@6 ~@2, ~@8 [c#5,d#5] ~@5 [b4,d#5,g#5]@4 ~@10 b4 ~@3]/2", // B D# D#7 G#m G#5 C#sus2 G#m
  J: "[f3,g#3,b3,d#4]@4 [f3,g#3,b3,d#4] ~@3 [f3,g#3,b3] ~ [f3,g#3,b3,d#4]@3 ~@3, ~@4 d#4 ~@3", // Fm7b5 Fdim Fm7b5
  K: "[e3,f#3,a#3,c#4] ~@7", L: "~@4 [b4,d#5,f#5] ~@3 [d#5,f#5]@2 [b4,d#5,f#5] ~@3 g#2@2, b2@7 ~ g#2@5 ~@3, ~@8 b4 ~@7",
  M: "[b4,d#5,f#5] ~ [b4,e5,g#5] ~@5 f#2@7 ~, e2@6 [c#5,e5]@5 ~@5", // B E C#m
  N: "~@4 [b4,d#5,f#5] ~@3 [d#5,f#5]@2 [b4,d#5,f#5] ~@5, b2@8 g#2@7 ~, ~@8 b4 ~@7", // B D#m B
  O: "[b4,d#5,f#5] ~ [b4,e5,g#5] ~@5 f#2@6 ~@2, e2@6 [c#5,e5]@5 ~@5", // B E C#m
  P: "[[b4,d#5,f#5]@2 ~@2 [b4,d#5,f#5] ~@3 [a#4,g5]@2 [a#4,c#5,d#5,g5] ~@9 [g#4,b4,d#5]@2 ~@2 [g#4,b4,d#5]@3 ~ [g#4,d#5]@2 ~@2, b2@7 ~ a#2@6 ~@2 g#2@8 ~@8, ~@8 [c#5,d#5] ~@5 [b4,d#5,g#5]@4 ~@10 b4 ~@3]/2", // B D# D#7 G#m G#5 C#sus2 G#m
  Q: "[f3,g#3,b3,d#4]@4 [f3,g#3,b3,d#4] ~@3 [e3,c#4]@2 [e3,f#3,a#3,c#4]@2 ~@2 [e3,f#3,a#3,c#4] ~, ~@8 [f#3,a#3] ~@7", // Fm7b5 C#m F#7 F#
  R: "[d#3,f#3,b3] ~@7", S: "~@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 b2 ~ g#2@4 [b3,d#4,g#4]@2 ~@2, b2@5 ~@11",
  T: "[b3,g#4]@2 ~@2 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4] ~ [b3,e4,g#4] ~ f#2@2 [b3,d#4,f#4]@2, e2@7 ~@9, e4 ~@15", // E B
  U: "~@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 b2 ~ b3 ~ [b3,d#4,g#4]@2 ~@4, b2@4 ~@4 g#2@5 ~@3", // B G#m
  V: "~@2 [b3,e4,g#4] ~ [b3,e4,g#4]@2 ~@6 f#2@3 ~, e2@7 ~@9", // E
  W: "~@2 [b3,d#4,f#4] ~ [b3,d#4] ~ b2 ~ [b3,g#4] ~ [b3,d#4,g#4]@2 ~@2 g#2 ~, b2@4 f#4@2 ~@2 g#2@5 ~@3", // B E G#m
  X: "~@2 [b3,e4,g#4] ~ [e4,g#4] ~@7 [a#3,c#4]@2 ~@2, e2@7 ~ f#2@6 ~@2, ~@4 b3@2 ~@6 f#4 ~@3", // E A#m
  Y: "~@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 b2 ~ [b3,d#4,g#4] ~ [b3,d#4,g#4]@2 ~@2 g#2 ~, b2@4 ~@4 g#2@5 ~@3", // B G#m
  Z: "~@2 [b3,e4,g#4] ~ [e4,g#4] ~@4 f#4 [a#3,c#4,f#4]@2 ~@2 f#2 ~, e2@7 ~ f#2@5 ~@3, ~@2 b3 ~@5", // E F#
})).s("gm_piano").gain(0.38).pan(0.6)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@5 A B C D E F G H I J K L G M N O P Q R S T U V W X Y Z AA AB G M N AC P Q R S AD AE AF@2 AG AH Z AI AJ N AK N AK AL
  AM R N AN N AK N AK N AK ~
>`.pickRestart({
  A: "b1@4 ~@2 b1@2 g#1@5 ~ g#1@2", B: "e1@4 ~@2 e1 ~ f#1@3 ~ f#1@3 ~", C: "b1@4 e1@2 ~ e1", D: "b1@3 ~@13",
  E: "b1@3 ~@3 b1@2 g#1@4 ~@2 g#1@2", F: "e1@5 ~ e1 ~ f#1@5 ~ f#1 ~", G: "b1@5 ~ b1@2 g#1@4 ~@2 g#1@2",
  H: "e1@5 ~ e1@2 f#1@4 ~@2 f#1@2", I: "b1@5 ~ b1@2 a#1@4 ~@2 a#1@2", J: "g#1@2 ~ g#1 d#2@2 g#1@2",
  K: "c#2@4 ~@2 c#2 ~ c#2@4 ~@2 c#2@2", L: "f#1@5 ~@11", M: "e1@2 ~ e1 f#1@3 ~", N: "b1@2 ~ b1 g#1@2 ~ g#1",
  O: "e1@4 ~@2 e1@2 f#1@5 ~ f#1@2", P: "b1@5 ~ b1@2 a#1@5 ~ a#1@2", Q: "g#1@5 ~ g#1@2 d#2@4 g#1@3 ~",
  R: "c#2@2 ~ c#2 f#1@2 ~ f#1", S: "b1 ~@7", T: "b1@4 ~@2 b1 ~ e2@5 ~ e2 ~", U: "b1@4 ~@2 b1 ~ e2@6 b1 ~",
  V: "a1@5 ~ a1 ~ e2@5 ~ e2 ~", W: "a1@5 ~ a1 ~ e2@6 a1 ~", X: "a1@5 ~ a1 ~ d2@4 ~@2 d2 ~",
  Y: "a1@4 ~@2 a1 ~ d2@6 a1 ~", Z: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~", AA: "f#1@3 ~ f#1@3 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  AB: "f#1 ~@7", AC: "e1@4 ~@2 e1@2 f#1@3 ~ f#1@4", AD: "b1@5 ~ e2 ~ e2@6 b1 ~", AE: "b1@6 e2 ~ e2@6 b1 ~",
  AF: "a1@6 e2 ~ e2@6 a1 ~", AG: "a1@6 d2 ~ d2@6 a1 ~", AH: "a1@5 ~ d2 ~ d2@6 a1 ~",
  AI: "f#1@3 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~", AJ: "f#1 ~@15", AK: "e1@4 ~@2 e1@2 f#1@3 ~ f#1@3 ~",
  AL: "b1@2 ~ b1 a#1@2 ~ a#1", AM: "g#1@4 ~@2 g#1@2 d#2@4 g#1@3 ~", AN: "e1@5 ~ e1@2 f#1@3 ~ f#1@4",
})).s("gm_acoustic_bass").gain(0.33)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@9 A@2 B@2 C D E F G@2 A@2 H D I J K L M N O P Q R@2 G@2 A@2 H D I J K L M N O P S R@2 G@2 A@2 H D I T@2 U@2 V@2 W@2
  X
>`.pickRestart({
  A: "[b3@3 ~ b3@2 f#3@2 g#3@2 b3@4 g#3@9 ~ f#3 ~ f#3@2 g#3@2 a#3@2]/2",
  B: "[b3@3 ~ b3@2 f#3@2 g#3@2 b3@4 g#3@7 ~@3 f#3 ~ f#3@2 g#3@2 a#3@2]/2", C: "b3@3 ~ b3 ~ b3@2 a#3@2 a#3@3 ~ a#3@2",
  D: "g#3 ~", E: "[c#3,f3,b3,d#4]@3 ~ [c#3,f3,b3,d#4]@5 ~ [c#3,b3,d#4]@5 ~, ~@5 f3 ~@2", F: "[c#3,f#3,a#3,c#4] ~@7",
  G: "[b3@2 ~@2 b3@2 f#3@2 g#3@2 b3@4 g#3@9 ~ f#3 ~ f#3@2 g#3@2 a#3@2]/2", H: "b3@4 b3@2 b3@2 a#3@2 a#3@3 ~ a#3@2",
  I: "[c#3,f3,b3,d#4]@3 ~ [c#3,f3,b3,d#4]@2 ~@2 [c#3,f#3,a#3,c#4] ~ [c#3,f#3,a#3,c#4]@4 ~@2", // C#7 F#
  J: "[b2,d#3,f#3,b3]@3 ~@13", K: "~@4 [f#4,a4]@2 [f#4,a4]@2 [e4,g#4]@2 d4@2 b3 d4 e4 ~, [f#4,a4] ~@3, ~ b3@3 ~@4",
  L: "[f#4,a4]@2 [f#4,a4] [e4,g#4]@2 d4 b3 d4", M: "~@2 [a3,c#4]@2 e4 ~@3 e4 ~@5 f#4 ~, ~@2 g#4 c#4, ~@5 e4@2 ~",
  N: "[c#4,f#4]@2 [c#4,e4]@2 [a3,c#4,f#4] ~@3 [a3,c#4,e4,g#4]@2 ~@2 [a3,c#4,e4,g#4]@2 ~@2", // F#5 C#m F#m Amaj7
  O: "[e4,g4]@2 a3@2 c4@2 [e4,g4]@2 [d4,f#4]@2 c4@2 a3 ~ d4@2, ~@13 c4@2 ~", // Em D
  P: "[e4,g4] a3 c4 [e4,g4] [d4,f#4] c4 a3 c4", Q: "[g3,b3]@2 [g3,b3,d4,g4] ~ [g3,b3,d4]@2 [g3,b3,d4,g4] ~",
  R: "[f#4@2 f#4@2 [a#3,c#4,f#4]@2 ~ [c#4,f#4]!4 [a#3,c#4,f#4] [a#3,c#4,f#4]@2 ~ f#4 [a#3,c#4,f#4]@2 ~@14, f#3@6 [f#3,a#3,c#4,f#4]@2 [f#3,a#3]@3 f#3@7 ~@14, [a#3,c#4]@2 ~@5 [a#3,c#4,f#4] ~@8]/2", // F# F#5 F# A#m F#
  S: "[g3,b3]@2 [g3,b3,d4] ~ [g3,b3,d4]@2 [g3,b3,d4] ~", // G
  T: "[b3@2 ~@2 b3@2 f#3@2 g#3@2 b3@3 ~ g#3@8 ~@2 f#3 ~ f#3@2 g#3@2 a#3@2]/2",
  U: "[b3@3 ~ b3@2 f#3@2 g#3@2 b3@3 ~ g#3@8 ~@2 f#3 ~ f#3@2 g#3@2 a#3@2]/2",
  V: "[b3@3 ~ b3@2 f#3@2 g#3@2 b3@2 ~@2 g#3@9 ~ f#3 ~ f#3@2 g#3@2 a#3@2]/2",
  W: "[b3@3 ~ b3@2 f#3@2 g#3@2 b3@2 ~@2 g#3@8 ~@2 f#3 ~ f#3@2 g#3@2 a#3@2]/2", X: "b3@3 ~@13",
})).s("gm_acoustic_guitar_nylon").gain(0.31).pan(0.3)

// chords · pan flute
const pan_flute = note(`<
  ~ A@2 B@2 A@2 C D E F G F H I J K E L M N H O P Q R S T U V W X Y Z E AA AB AA AC AD AE AF AG AH AI AJ AK W X AL Z E L
  AB L AC AD AE A@2 B@2 AM ~@4
>`.pickRestart({
  A: "[[b3,d#4,f#4,b4]@2 [b3,d#4,f#4,b4]!3 [b3,d#4,f#4,b4]@2 [b3,e4,g#4,b4]@3 ~@2 [a#3,c#4,f#4,a#4]!2 [b3,f#4,g#4,b4] [a#3,c#4,f#4,a#4]]/2", // B E F# G#m7 F#
  B: "[[b3,d#4,b4]@2 [b3,d#4,f#4,b4]!2 [d#4,f#4,b4] [b3,d#4,f#4,b4]@2 [b3,e4,g#4,b4]@3 ~@2 [a#3,c#4,f#4,a#4]!2 [b3,f#4,g#4,b4] [a#3,c#4,f#4,a#4]]/2", // B E F# G#m7 F#
  C: "[b3,d#4,f#4,b4]@4 [c#4,e4,g#4,c#5] [b3,d#4,f#4,b4] [c#4,e4,g#4,c#5]@2", // B C#m B C#m
  D: "[b3,d#4,f#4,b4] ~ f#4@2 f#4@2 [e4,f#4]@2", E: "[d#4,f#4]@7 [d#4,f#4]",
  F: "[d#4,f#4] [e4,g#4]@2 [e4,g#4] [c#4,e4]@4", G: "~@2 [d#4,f#4]!4 f#4 [d#4,f#4]",
  H: "~@2 [b3,d#4]!2 [a#3,d#4]@3 [a#3,d#4]", I: "[b3,d#4] [a#3,c#4]@2 [a#3,c#4] [g#3,b3]@3 [g#3,c#4]",
  J: "[b3,d#4]!2 [a#3,c#4]!2 [g#3,b3]@2 [b3,d#4]!2", K: "[a#3,c#4] ~ f#4@2 f#4@2 [e4,f#4]@2",
  L: "[d#4,f#4] [e4,g#4]@2 [e4,g#4] [c#4,e4]@2 ~@2", M: "~@2 [d#4,f#4]!4 [d#4,f#4]@2",
  N: "[d#4,f#4]@2 [e4,g#4]!2 [c#4,e4]@2 ~@2", O: "[b3,d#4] [a#3,c#4]@2 [a#3,c#4]@2 [g#3,b3]@2 [g#3,c#4]",
  P: "[b3,d#4]!2 [a#3,c#4]!2 g#3 f#3!2 e3, ~@2 b3 c#4", Q: "[d#3,b3]@3 ~@3 f#3@2 b3@2 c#4@2 d4@2 e4@2",
  R: "f#4@3 e4 e4@3 ~", S: "f#4@2 e4@2 f#4@2 f#4@4 e4@5 ~", T: "~@2 c#4 e4!2 c#4@2 e3",
  U: "c#4@2 e4@2 f#4@2 e4@2 f#4@2 e4@3 ~@3", V: "~@2 e4@2 e4 d4@2 a3", W: "e4 d4 e4 d4@3 ~ c4",
  X: "b3!2 c4!2 d4!2 e4!2", Y: "f#4!2 e4!2 d#4!2 c#4@2", Z: "~ f#4!2 [e4,f#4]",
  AA: "[d#4,f#4] [e4,g#4]@2 [e4,g#4] [c#4,e4]@3 ~", AB: "~@2 [d#4,f#4]!6",
  AC: "~ [b3,d#4] [b3,d#4]@2 [a#3,d#4] [a#3,d#4]@2 [a#3,d#4]", // B D#5
  AD: "[b3,d#4]@2 [a#3,c#4] [a#3,c#4]@2 [g#3,b3]@2 [g#3,c#4]", AE: "[b3,d#4]!2 [a#3,c#4]!2 g#3 f#3!3, ~@2 b3 c#4",
  AF: "[f#3,b3] ~@2 f#3 b3 c#4 d4 e4", AG: "f#4@4 e4@3 ~", AH: "f#4 e4 f#4 e4@3 ~@2", AI: "c#4@2 e4!2 c#4@3 e3",
  AJ: "c#4@2 e4@2 f#4@2 e4@2 f#4@2 e4@5 ~", AK: "e4@4 d4@3 a3", AL: "f#4!2 [e4,f#4]!2 [d#4,f#4]!2 [c#4,f#4]@2",
  AM: "[b3,d#4] ~@3", // B
})).s("gm_pan_flute").gain(0.2).pan(0.6)

// chords · pan flute · soft notes
const pan_flute_soft = note("<~@3 A ~@7 B ~@48 A ~ C@2 D@2 ~>".pickRestart({
  A: "f#4@2 ~@2 b3 ~@3", B: "~@6 d#4 ~",
  C: "[[f#4,b4]@2 [b3,d#4,f#4,b4]!3 [b3,d#4,f#4,b4]@2 [b3,e4,g#4,b4]@3 ~@2 [a#3,c#4,f#4,a#4]!2 [b3,f#4,g#4,b4] [a#3,c#4,f#4,a#4]]/2", // B5 B E F# G#m7 F#
  D: "[[b3,d#4,f#4,b4]@2 [b3,d#4,f#4,b4]!3 [b3,d#4,f#4,b4]@2 [b3,e4,g#4,b4]@3 ~@6]/2", // B E
})).s("gm_pan_flute").gain(0.05).pan(0.6)

// other · tremolo strings · "TREMOLOSTR"
const tremolo_strings = note("<~@25 A B ~@2 C D E F G ~@8 A B ~@2 C D E F G ~@16>".pickRestart({
  A: "[f#4,a4] [e4,g#4]", B: "[f#4,a4]@8 [e4,g#4]@7 ~", C: "[e4,g4] [d4,f#4]", D: "[e4,g4]@8 [d4,f#4]@7 ~",
  E: "~@9 b3 c4 d4 ~ f#4 g4 a4, ~@4 a3 ~ e4 ~", F: "f#4!2 g#4!2 a#4!2 b4!2 c#5!2 d#5!2 e5!2 f5!2", G: "f#5 ~@15",
})).s("gm_tremolo_strings").gain(0.38).pan(0.8)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@9 A B A B C D E F G H I B J K L M N O P@2 Q R S T U V H I B J K L M N O P@2 Q R S T U V H I B J K L I B V H I B I B
  ~
>`.pickRestart({
  A: "~@4 [d#4,f#4,b4] ~ [d#4,f#4,b4] ~@5 [b3,d#4,g#4] ~ [d#4,g#4] ~", // B G#m G#5
  B: "~@4 [e4,g#4] ~ [e4,g#4] ~@5 [f#4,a#4] ~ [f#4,a#4] ~", C: "~@4 [f#4,b4] ~ [f#4,b4] ~@5 [d#4,g4] ~ [d#4,g4] ~",
  D: "~@4 [d#4,g#4] ~ [b3,d#4,g#4] ~@5 [d#4,g#4] ~ [d#4,g#4] ~", E: "~@4 [f4,g#4] ~ [f4,g#4] ~@3 b3@2 g#4 ~@3",
  F: "[c#4,f#4,a#4] ~@15", G: "~@6 [d#4,f#4,b4] ~@5 [b3,d#4,g#4] ~ [d#4,g#4] ~",
  H: "~@4 [e4,g#4] ~ [e4,g#4] ~@5 [c#4,f#4,a#4] ~ [f#4,a#4] ~", // E F#
  I: "~@4 [f#4,b4] ~ [d#4,f#4,b4] ~@5 [b3,d#4,g#4] ~ [d#4,g#4] ~", // B5 B G#m G#5
  J: "~@4 [d#4,f#4,b4] ~ [d#4,f#4,b4] ~@5 [d#4,g4] ~ [d#4,g4] ~", // B D#
  K: "~@4 [b3,d#4,g#4] ~ [d#4,g#4] ~@5 [b3,d#4] ~ [d#4,g#4] ~", L: "~@4 [f4,g#4] ~ [f4,g#4] ~@3 c#4@2 [f#4,a#4] ~@3",
  M: "[d#4,f#4,b4] ~@15", N: "~@4 [d4,f#4,b4] ~@7 [b3,e4,g#4] ~ [b3,e4,g#4] ~",
  O: "~@4 [b3,d4,f#4] ~@7 [b3,e4,g#4] ~ [a#3,e4,g#4] ~", P: "~@4 [c#4,e4,a4] ~@7 [c#4,e4,a4] ~ [c#4,e4,a4] ~",
  Q: "~@4 [c4,e4,a4] ~@7 [a3,d4,f#4] ~ [a3,d4,f#4] ~", R: "~@4 [c4,e4,a4] ~@7 [g#3,d4,f#4] ~ [g#3,d4,f#4] ~",
  S: "~@4 [b3,d4,g4] ~@7 [b3,d4,g4] ~@3", T: "~@4 [a#3,c#4,f#4] ~@7 [a#3,c#4,f#4] ~@3", U: "[a#3,c#4,f#4,a#4] ~@15",
  V: "~@4 [d#4,f#4,b4] ~@7 [b3,d#4,g#4] ~ [d#4,g#4] ~", // B G#m G#5
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.3)

// other · vibraphone
const vibraphone = note("<~@25 A B ~@2 C D ~@2 E ~@8 A B ~@2 C D ~@2 E ~@16>".pickRestart({
  A: "~@8 g#4@5 ~@3", B: "~@4 g#4@3 ~", C: "~@8 f#4@7 ~", D: "~@3 g4 f#4@3 ~", E: "f#4 ~@7",
})).s("gm_vibraphone").gain(0.38).pan(0.1)

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

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

// drums · clap
const clap = s("cp").struct("<~@17 [~@2 x!2 ~@2 x ~]!7 ~@10 [~@2 x!2 ~@4]!7 ~@10 [~@2 x!2 ~@4]!6 ~@10>").gain(0.38)

// drums · hihat
const hihat = s("hh").struct("<~@25 [x!8]!7 [x!6 ~@2] ~@9 [x!8]!6 [x ~ x!6] ~@18>").gain(0.27)

// drums · ride
const ride = s("rd").struct("<~@9 A@7 B A@7 B ~@9 A@6 C B ~@9 A@15 ~>".pickRestart({
  A: "x!8", B: "x", C: "x!7 ~",
})).gain(0.33)

// drums · tambourine
const tambourine = s("tb").struct("<~@9 A@7 ~ A@7 ~ A@7 B ~ A@7 ~ A@7 ~@2 A@15 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.33)

// drums · claves
const claves = s("clave:2").struct("<~@34 [~@3 x]!7 ~@10 [~@3 x]!6 ~@10>").gain(2.14)

// drums · triangle
const triangle = s("triangles:35").struct("<~@25 A@2 ~@2 A@2 ~@11 A@2 ~@2 A@2 ~@19>".pickRestart({
  A: "~@3 x",
})).gain(2.86)

stack(
  piano, bass, acoustic_guitar_nylon, pan_flute, pan_flute_soft, tremolo_strings, electric_guitar_clean, vibraphone,
  kick, snare, clap, hihat, ride, tambourine, claves, triangle
)

More by Neil Sedaka