Strudelify

Just Squeeze Me

Ellington

KeyC majorTempo110 bpm
0:00/0:00
// Just Squeeze Me — Ellington
// 110 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 99 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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
const piano = note(`<
  A B C D E@2 F G H I J@2 K L M N H I J@2 K L M N O P Q R S@3 T H U V@2 W X Y Z AA AB AC ~ AD ~ AE AF AG AH AI AJ AK@2
  AL AM AN AO AP@2 AQ AR AS@2 A B C D E@2 F G A B C D E@2 F G AT AO AP@2 AQ AR AS@2 A B C D E@2 AU AV@3 AW
>`.pickRestart({
  A: "f3@4 f2 ~ a5@3 ~@3 a5@3 ~@3 a#5@3 ~@3, a5 ~@11",
  B: "~@4 f3@2 f2 ~@5 [f3,a5]@4 [f2,c5] ~@5 [a4,d#5] ~, c6@12 g#5 ~@11", C: "d5@4 [f3,c5] ~@5 c6 ~@5 f2 ~@7, c#5 ~@23",
  D: "~@4 [f3,d#5] ~ d5@4 c5 ~ f2@2 ~@2 c6 ~@7, ~@4 a4@2 c#5 ~@17", // F7
  E: "[c#5 ~@5 c3 ~@3 [g4,c5] ~@11 [a4,d5] ~@5 [g3,g4,c5] ~@7 [g4,c5] ~@3 c3 ~ [f4,a#4]@4 [g4,c5] ~, [a4,d5]@9 ~@13 g2@6 ~@20]/2", // C5 D5 C5 A#5 C5 D5
  F: "~@4 [f2,f3] ~@7 [f2,f3,g#4] ~@3 c5 ~@7, ~@4 a4 ~@3", // F Fm
  G: "~@4 [g4,c5]@2 [c#3,g3] ~@5 g4@3 ~ c3@2 c2@6, ~@4 g#4 ~ f4@3 ~@7 c4 ~@7", H: "[f2,a3,c4,f4] ~@11",
  I: "~@6 a#3 ~@2 [b3,f4]@2 c4, ~@12 f4 ~@11", J: "[[f2,a3]@2 ~@20 [f#2,a3,c4,d#4]@17 ~ [a3,c4,d#4] ~@7, f4 ~@47]/2",
  K: "[g2,f3,a3,a#3,d4]@2 ~@14 [f3,a3,a#3,d4] ~@7", L: "~@5 [c2,d3,e3,g3,a#3]@6 ~",
  M: "~@4 [f2,f3,g3,c4] ~@11 [d3,a4,d5]@8, ~@16 g#4 ~@7", // Fsus2 D5
  N: "~@4 [g2,f4,a4,b4,d5]@7 ~@5 [c2,a#3,f4,g4,c5] ~@5 [c2,a#3,f4,g4,c5] ~", // G7 Csus4
  O: "[f2,a4,c5]@4 [f1,a4,c5] ~@17 f2@2, g#4 ~@23", P: "f1@4 [f2,a4,c5,d#5,g5]@7 ~ [a4,c5,d#5,g5] ~@11, ~@6 f1 ~@5",
  Q: "~@16 a#2@2 a#1@4 a#2 ~, ~@10 [g#3,c4,d4,f4]@9 ~@5", // Dm7b5
  R: "~@4 [g#4,c5,d5] ~@7 [g#4,c5,d5,f5]@3 ~ [g#4,c5,f5] ~@7, ~@2 g5 ~@5 a#1@4", // Dm7b5 Fm
  S: "[g2@3 ~ g1 ~ [f3,a3,b3,d4]@3 ~ [f3,a3,b3,d4] ~@5 g2@2 g1@3 ~ [f4,a4,d5]@6 ~ f4 ~@6 g1@4 g2 ~@11 g2@2 g1@6 ~@4 [f4,a4,a#4,d5] ~ g2@6, ~@11 b4@2 ~ b4 ~@8 [f4,a4,a#4,d5]@9 ~@4, ~@22 g1 ~@37 d2@6 ~@6]/3", // Bm7b5 Dm A#maj7
  T: "~@4 [d4,f4,g4,c5] ~@3 [d4,f4,g4] ~ c2@2 c3@4 g2@2 c2@5 ~, c2@3 g2@2 ~ [d4,f4,g4,c5]@5 ~", // Dm7 G7 Dm7
  U: "~@4 b5 c6@3 g5@2 ~@2 [a#3,f5]@3 ~ f5 ~ [b3,f4]@4 c4@2, ~@12 f4 ~@11", // A#5 Bdim
  V: "[[f2,a3]@2 ~@26 d5@4 f5 ~@4 f#5 ~@2 [a3,c4,d#4] ~@7, f4 ~@21 [f#2,a3,c4,d#4]@17 ~@9, ~@28 c#5 ~@8 g5@11]/2", // F Adim F#dim
  W: "[g2,f3,a3,a#3,d4]@2 ~@14 [f3,a3,a#3,d4] ~ c#5 d5@3 f5 ~, f5 ~@2", // Gm7 A#maj7
  X: "~@2 c5@3 ~@5 [c2,d3,e3,g3,a#3]@12 ~@2, ~@6 c5@7 ~@11", // C7
  Y: "~@4 [f2,f3,g3,c4] ~@5 c5 ~@2 a#4@2 b4 ~ c5 d5@2 ~@4, ~@6 a4 ~ d3@4", // Fsus2
  Z: "c5@2 ~@2 d5 ~@2 f5@2 ~ g5 ~@2 e5@2 ~ [c2,a#3,f4,g4,c5] ~@5 [c2,a#3,f4,g4,c5] ~, ~@4 [g2,f4,a4,b4]@7 ~@2 d#5 ~@2 e5@2 ~@6", // Csus4 G7
  AA: "~@10 c#4 ~@5 c4 ~@7", AB: "~@10 c#5 ~@5 f5 ~@7", AC: "~@4 f3 ~@7 f3@2 ~@10", AD: "~@4 f3 ~@11 f3 ~@7",
  AE: "~@6 [f4,c5]@2 ~@14 [c4,d4] ~", AF: "~@4 [c4,d4] ~@19", AG: "f1@3 ~@13 f4 ~@7", AH: "~@10 c#5 ~@13",
  AI: "~@4 f#5 ~@13 f5@2 ~@4", AJ: "~@5 a5 ~@2 c#5 ~@3", AK: "[c#5 ~@21 [g3,f4]@12 ~@8 f4@3 ~@3]/2",
  AL: "~@4 f3@2 ~@4 [f4,a#4] ~@5 g4@7 ~", AM: "f4 ~@7",
  AN: "c5@4 [f3,a3,c4,d#4] ~@5 f1 ~ [f3,a3,c4,d#4]@4 ~@8, b4 ~@3 f5@2 ~@18", // F7
  AO: "c5@4 [f3,a3,c4,d#4] ~@5 f1 ~ [f3,a3,c4,d#4]@3 ~ [f3,d#4] ~@7, b4 ~@3 f5@2 ~@18", // F7
  AP: "[c#5 d5@3 g5@2 [a#3,c4,f4]@3 ~ [a#3,c4,f4] ~@11 c#4 ~ c#5 d5@3 g5@2 [c4,f4] ~@17, a#1@2 ~@9 [d4,g4]@4 ~@9]/2", // A#sus2 F5 G5
  AQ: "[g2,d5]@4 [f3,a3,b3,d4] ~@5 g2 ~ [f3,a3,b3,d4]@3 ~@7 [f4,a4,d5] ~, c#5 ~@3 g5@2 ~@18", // G5 Bm7b5 Dm
  AR: "c#5 d5@3 [f4,b4,f5] ~@5 [f3,a3,b3,d4]@5 ~ [f3,b3,d4] ~@7", // Fdim Bm7b5 Bdim
  AS: "[[g2,f3,a#3,d4]@4 ~@2 [g2,f3,a3,c4]@3 ~ [f3,a#3,d4] ~@11 [c3,a#3,d4,f4,a4]@11 ~ [c2,a#3,d4,e4,g4]@12 ~@2]/2", // Gm7 F A# Dm7 C7
  AT: "c5@4 [f3,a3,c4,d#4] ~@5 f1 ~ [f3,a3,c4,d#4]@4 ~@8, ~@2 f5 ~@9", AU: "[f1,f2,f4,c5] ~@23",
  AV: "[~@22 [f2,g3]@12 ~ g3 b3 [d4,e4] g3@2 ~@3 g4@3 d4@3 d5@3 ~ a4@3 g5@3 ~ d5@4 d6@7 [f5,g5,a5], ~@11 [f1,a3,b3,d4]@7 ~@2 f2@13 ~@3, ~@34 f2@4 b3 ~@2 f1@25 ~@6]/3", // Fsus2 Dsus2 F Bm7b5
  AW: "[a#4,c5,d5,e5] [f4,g4,a4] [c4,d4,e4] [g3,a3,a#3] [d3,e3,f3] [a2,a#2,c3] [e2,f2,g2] f1@2 ~@15", // C7 F C Gm Dm Am Em
})).s("gm_piano").gain(0.45)

// chords · piano · soft notes
const piano_soft = note("<~@29 A ~@10 B C D E F G H I J K L M N@2 O P ~@41 Q R>".pickRestart({
  A: "~@4 [a4,c#5] ~@19", B: "f1@4 f2 ~@5 [d4,g4]@6 f4 ~@7", C: "~@10 g5@2 [c5,f5]@3 ~ c5 ~@7, ~@10 d5 ~@13",
  D: "~@4 [g3,c4] ~@7 [g3,c4]@3 ~@3 [f4,g4,c5]@3 ~ [f4,g4,c5] ~", E: "~@4 f2 ~ f1@3 ~@15",
  F: "~@4 [g2,a#3,d4] ~@7 [g2,f3,a3,c4]@4 [g2,a#3,d4] ~@7", G: "~@10 [c2,c3,c4,d4,f4,a4]@5 ~ [c2,c3,c4,d4,f4,a4] ~@7",
  H: "~@6 g4@2 ~@14 g4 ~", I: "~@4 g4 ~@5 [c4,d4,g4]@5 ~ c4 ~@5 f2@2", J: "~@16 [g4,c5] ~@3 [g4,a4,d5] ~@3",
  K: "[f4,g4,c5]@3 ~@7 [d5,g5]@5 ~ [c5,f5] ~@7", L: "~@4 [g5,c6]@13 ~ a#5@2 ~@4, ~@4 b5 ~@19",
  M: "[e5,a5]@2 ~@4 d5 ~@2 c5 ~@2", N: "[d5@4 g4 ~@17 [a#4,d5]@6 [a4,c5]@2 a#4@3 ~ [e4,c5] ~ a4@3 ~@7 f4 ~]/2",
  O: "~@2 f2 ~@5", P: "~@4 e4@2 d4@2 c#4 ~ c4@12 ~@2", Q: "~@22 a#5 ~", R: "~@7 d2 ~@16",
})).s("gm_piano").gain(0.25)

// bass · acoustic bass
const bass = note(`<
  A@3 B C D E F G H I J K L M N G H I J K L M N O P Q R S T U V G H I J K L M N A@3 B C D E F A@3 B C D E F W X Y Z AA
  AB AC AD A@3 B C D E F A@3 B C D E F W X Y Z AA AB AC AD A@3 B C D AE AF@2 AG@2
>`.pickRestart({
  A: "f2 a2 g2 e2", B: "f2 a2 g2 a2", C: "c2@3 d2@3 g2@3 d2@2 g2", D: "g1 a1 c2 d2", E: "f2 d2 a2 g#2",
  F: "g2 c#2 c2 f#2", G: "f1@3 c2@3 f2@3 a2@2 f2", H: "g2@3 e2@3 f2@3 e2@2 f2", I: "f1@3 c2@3 e2@3 f2@2 e2",
  J: "d2 c2 f#2 d2", K: "g2@3 d2@3 e2@3 f2@2 g2", L: "c2 d2 e2 c2", M: "f2@2 c2 f1@3 g1@3 a1@3",
  N: "d2@3 f#2@2 g2 c2@3 d2@3", O: "f1@3 c2@3 f2@3 c2@2 f1", P: "d#2 c2 a2 b1", Q: "a#1@3 d2@3 f2@3 a#1@2 d2",
  R: "g#2 g2 f2 g2", S: "g1@3 b1@3 f2@3 g2@2 b1", T: "b2 f2 g2 d2", U: "g2@3 a2@3 a#2@3 d3@2 g2", V: "c3 g2 c2 g2",
  W: "f1@3 c2@2 f1 f2@3 c2@3", X: "d#2 c2 a1 b1", Y: "a#1@3 f2@2 a#1 g#2@3 g2@3", Z: "f2@3 c3@2 f2 a#2 f2 a#1 g#1@3",
  AA: "g1 g2 d2 e2", AB: "b1@3 g1@3 a1@3 b1@2 a1", AC: "c2 d2 a2 g2", AD: "c2@3 g2@3 c3 g2 c2 d2@3", AE: "f1 ~@3",
  AF: "[~@11 f1@5 c2@3 f2@2 c2@3]/2", AG: "[f1@13 ~ f2@13 ~@3 f1@6 ~@12]/2",
})).s("gm_acoustic_bass").gain(0.45)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@2 B C D@2 B E F G H@2 I J K L M N O P Q R S T U@2 V@2 W@2 X Y Z AA@2 AB AC Y AD AE AF@4 I AG B AH AI@4 AJ@2 AK AL
  AM@4 AN@2 AO AE AP@3 AQ AR@2 B AS AT@4 AU@2 B AS AV@2 AW@2 AX AY AZ BA BB@2 BC@2 BD@2 ~@5
>`.pickRestart({
  A: "[[c4,f4] [c4,e4], a4]/2", B: "[c4,f4,a4]", C: "[c4,e4,a4]", D: "[[c4,a4] [a#3,d4,g4]@2 [c4,e4,g4]]/2",
  E: "[g3,a#3,d4,f4] [c4,e4,g4]", F: "a4 g4, [c4,c5]", G: "a4@5 ~ f4@6, [c4,c5]",
  H: "[[c4,f4,a4] [c4,g4] [d#4,f#4,a4]@2, c5]/2", I: "[d4,g4,a#4]", J: "[c4,e4,a#4]", K: "f4@2 g4 f4, [c4,c5]@3 ~",
  L: "[b3,d4,f4] [a#3,c4,g4]", M: "f4 a4, [c4,c5]", N: "g4@11 ~ f4@12, [c4,c5]", O: "[c4,g4,c5] [c4,f4,a4,c5]",
  P: "[d#4,f#4,a4,c5]", Q: "[a#3,d4,f4]", R: "[c4,e4,g4]", S: "f4@2 g4 f4, [c4,c5]", T: "[b3,d4,f4] [c4,e4,g4]",
  U: "[[f4,c5]@24 c5@12 c5@11 ~, c4, ~ d#4]/2", V: "[g#3,d4,f4]/2", W: "[f4,a4,d5]/2", X: "[f4,a#4,d5]",
  Y: "[e4,g4,c5]", Z: "[c4,f4,c5]", AA: "[[f4,a4]@12 g4@11 ~ f4@12 a4@12, c5, c4 c4]/2", AB: "[d#4,f#4,c5]@23 ~",
  AC: "c5 a#4, [d4,g4]", AD: "[c4,d4,f4,c5]", AE: "[d4,f4,a4] [c4,e4,g4]",
  AF: "[f4@12 a4@12 g4@12 f4@23 ~ e4@12 [c4,f4]@12 [d4,f#4,c5]@12, c5@7 ~, c4@3 ~]/4", AG: "[d4,a#4] [c4,e4,a4], g4",
  AH: "[d4,a#4] [c4,e4], g4@23 ~", AI: "[~@12 a4@6 g4@6 ~@12 f4@6 e4@6 g4@6 a4@17 ~ f4@24, c4, f4@3 ~ c5@12]/4",
  AJ: "[a#3@23 ~ a#3@12 g3@12, [e4,g4]]/2", AK: "[c4,f4]", AL: "[a#3,d4,f4] [g3,c4,e4]",
  AM: "[f4 d#4 a3 [a#3,d4], c4@3 ~, a4 f4]/4", AN: "[a4@23 ~ d5@11 ~ b4@5 ~ b4@6, [d4,f4]]/2", AO: "[d4,f4,a#4]",
  AP: "[[f4,a4]@12 g4@12 [f4,a4]@12 g4@12 f4@5 ~@7 g4@6 f4@6, c4, ~ c5, ~@27 f4@4 ~@5]/3", // F
  AQ: "[f4,a4]@12 ~@6 a4@5 ~, c4, ~ c5", AR: "[[a#3,d4,g4]@3 [c4,e4,g4]]/2", AS: "[a#3,d4,f4] [c4,e4,g4]",
  AT: "[g4 ~@3 a4@2 e4@2 f4@2 a4 g4 [f4,a4]@4, c4, ~ f4@3 ~@12, ~@2 c5@11 ~@3]/4", // F
  AU: "[a4 g4@2 [c4,e4,g4], [a#3,d4]@3 ~]/2", AV: "[~ c5@2 [c4,d#4,f4], [c4,f4]@3 ~]/2",
  AW: "[~@2 c4 ~@2 a#3@3, f4@47 ~, a3@5 ~@3, ~@3 d4@5]/2", AX: "[d4,f4,a4]", AY: "[d4,f4,g4]", AZ: "~ f4, [a#3,d4]",
  BA: "a4 g4, [c4,e4]", BB: "[~ a4 e4 f4, c4, f4 ~]/2", BC: "[f3@5 f4@3, c4]/2",
  BD: "[[d4,a4]@2 [c4,g4]@3 ~ [c4,e4,c5]@2]/2", // D5 C5 C
})).s("gm_synth_strings_1").gain(0.15).pan(0.4)

// other · muted trumpet
const muted_trumpet = note(`<
  A B A B C@2 D@2 ~@33 E ~ E F G F G F G F G F G F G H@2 I@2 J@2 K L A B A B C@2 D@2 A B A B C@2 D@2 H@2 I@2 J@2 K L A B
  A B C@2 M N@4
>`.pickRestart({
  A: "a4 ~ a4 ~ a4 ~ a#4 ~", B: "c5@9 ~ c5@12 ~@2, b4 ~@23", C: "[c5@5 a#4@8 ~ c5@3 ~ c5@2 ~ c5@2 ~]/2",
  D: "[c5@9 ~ a4@32 ~@6, b4 ~@47]/2", E: "~@9 d4 ~@2 d4 e4 d4@2 ~ d4@6 ~, ~@8 c#4 ~@3", F: "~@21 d4 ~@2",
  G: "d4 e4 d4@2 ~ d4@6 ~@13, ~@2 c#4 ~@9", H: "[~@10 [g3,d#4]@7 ~@5 [a3,d#4]@8 ~@4 [g3,d#4]@9 ~@5]/2",
  I: "[[a#3,d4]@7 ~@3 [a3,d4]@8 ~@4 [a#3,d4]@9 ~@3 [a3,d4]@9 ~@5]/2", // A# D5 A# D5
  J: "[[b3,d4]@5 ~@5 [a3,d4]@8 ~@4 [b3,f4]@9 ~@3 [a3,d4]@10 ~@4]/2", K: "~@4 [d4,e4,a4] ~@7 [d4,g4,a4] ~@11",
  L: "~@4 [d4,g4] ~@7 [d4,g4]@2 ~@10", M: "f4 ~@5", N: "[~@23 g5@33 ~@3 g5@22 ~@15]/4",
})).s("gm_muted_trumpet").gain(0.39)

// other · brass section
const brass_section = note(`<
  A B C D E F G ~@34 H ~ H I J I J I J I J I J I J K@2 L@2 M@2 N O A B C D E P G ~ A B C D E P G ~ K@2 L@2 M@2 N O A B C
  D E P Q R@4
>`.pickRestart({
  A: "f3@4 ~@2 f3@4 ~@2 f3@3 ~@3 g3@3 ~@3", B: "a3@9 ~ a3@12 ~@2", C: "f3@4 ~@2 f3@3 ~@3 f3@5 ~ g3@3 ~@3",
  D: "a3@9 ~ a3@11 ~@3", E: "a3@5 g3@7", F: "~@4 a3@8 a3@4 ~@2 a3@3 ~@3", G: "a3@9 ~ f3@14",
  H: "~@9 [d3,d4] ~@2 [d3,d4] [e3,e4] [d3,d4]@2 ~ [d3,d4]@6 ~, ~@8 [c#3,c#4] ~@3", I: "~@21 [d3,d4] ~@2",
  J: "[d3,d4] [e3,e4] [d3,d4]@2 ~ [d3,d4]@6 ~@13, ~@2 [c#3,c#4] ~@9", // D E D C#
  K: "[~@10 [g2,d#3]@7 ~@5 [a2,d#3]@8 ~@4 [g2,d#3]@9 ~@5]/2", // Cm Adim Cm
  L: "[[a#2,d3]@7 ~@3 [a2,d3]@8 ~@4 [a#2,d3]@9 ~@3 [a2,d3]@9 ~@5]/2", // A# D5 A# D5
  M: "[[b2,d3]@5 ~@5 [a2,d3]@8 ~@4 [b2,f3]@9 ~@3 [a2,d3]@10 ~@4]/2", N: "~@4 [d3,e3,a3] ~@7 [d3,g3,a3] ~@11",
  O: "~@4 [d3,g3] ~@7 [d3,g3]@2 ~@10", P: "~@4 a3@7 ~ a3@4 ~@2 a3@3 ~@3", Q: "f3 ~@7",
  R: "[~@47 a3@34 ~@15, ~@11 f2@29 ~@8, ~@11 b3@16 ~@5, ~@38 g3@43 ~@15, ~@21 d4@19 ~@8]/4",
})).s("gm_brass_section").gain(0.44).pan(0.7)

// other · clarinet
const clarinet = note("<A B A B C@2 D ~@57 A B A B C@2 D ~ A B A B C@2 D ~@9 A B A B C@2 E F@4>".pickRestart({
  A: "a3 ~ a3 ~ a3 ~ a#3 ~", B: "c4@9 ~ c4@12 ~@2, b3 ~@23", C: "[c4@5 a#3@8 ~ c4@3 ~ c4@2 ~ c4@2 ~]/2",
  D: "c4@9 ~ a3@14, b3 ~@23", E: "f3 ~@5", F: "[~@23 d4@58 ~@15]/4",
})).s("gm_clarinet").gain(0.29).pan(0.3)

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

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!15 [~@3 x] [~ x ~ x]!3 [~ x ~@2] [~ x ~ x]!74 ~@5>").gain(0.55)

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

// drums · low tom
const low_tom = s("lt").struct("<~@85 [~@2 x] ~@13>").gain(0.37)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@86 [~@2 x] ~@12>").gain(0.49)

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

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

stack(
  piano, piano_soft, bass, synth_strings_1, muted_trumpet, brass_section, clarinet, kick, rim, snare, low_tom,
  pedal_hat, mid_tom, crash, ride
)

More by Ellington