Strudelify
Mmm Mmm Mmm cover art

1993 · God Shuffled His Feet

Mmm Mmm Mmm

Crash Test Dummies

KeyE♭ majorTempo95 bpm
0:00/0:00
// Mmm Mmm Mmm — Crash Test Dummies
// 95 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 47, 4/4 at bar 48) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 91 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/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 · "Ac.Piano"
const piano = note(`<
  A B C@2 D@4 E@6 F@2 G A B C@2 ~@13 A B C@2 A B C@2 H I H J@3 K@2 L@8 M@3 N O@3 N P@4 Q@4 R@2 S@6 T@4 U@4 ~
>`.pickRestart({
  A: "d4@4 f4@4 bb4@4 f4@4 c5@13 ~@3", B: "d4@4 f4@3 ~ bb4@4 f5@4 c5@13 ~@3",
  C: "[[eb4,ab4]@16 [d4,f4]@16 ~ eb4@15 [d4,f4]@15 ~, bb4@31 ~, ~@2 ab4 ~]/2", // Ab5 Dm
  D: "[~@12 eb5@4 ~@12 eb5@3 ~@29 eb5@3 ~@13 c5@3 ~@12 eb5@4 ~@13 bb3@3 ~@13 eb5@4, c3@16 [bb2,bb4]@16 g4@4 eb4@12 g2@15 [ab2,ab4]@16 ~@4 eb4@12 ~@4 bb3@8 ~@4 g4@5 eb4@12, ~ c5@16 ~@3 bb3@12 bb4@8 g4@8 ~@4 g3@12 ~@3 ab3@12 eb3@16 [bb2,bb4,f5]@16 ~ eb3@16, ~ eb5@7 g4@8 eb5@12 ~@3 eb3@13 bb4@20 c5@12 ~@4 g4@16 ~@15 bb4@17, ~ g4@3 c4@12 f4@8 f4@8 eb5@16 ~@8 g4@8 ~@7 eb5@8 ~ eb5@7 bb4@8 ~@8 d5@8 eb5@9 g4@8]/4", // Bb Ab Bb5
  E: "[~@28 ab4@3 ~@12 bb4@4 ~@13 eb5@3 ~@12 bb3@4 ~@12 eb4@4 ~@12 ab5@4 ~@12 g5@4 ~@45 bb2@3 ~@13 gb5@4, [ab2,c5]@31 f5@8 f5@8 eb5@12 ~@25 eb4@7 ~@4 c5@8 c5@9 ~@3 eb4@12 bb4@8 bb4@16 ~ bb4@16 bb4@7 b4@4 b3@13, eb5@12 eb5@11 eb5@9 ~@3 bb4@8 ~@4 g4@8 g4@8 bb4@8 ~ bb4@7 bb4@8 bb4@8 ab5@12 ~@4 g5@12 ~@4 f5@12 f5@32 f5@4 eb5@16 ~, ab4@8 ab4@12 ab4@8 ~@3 bb2@16 [eb3,bb4]@16 [bb2,f5]@17 ~@19 ab4@12 bb4@8 bb4@8 bb2@16 ~ bb2@16 bb2@12 ~@3 gb5@9 b4@8, ~@4 ab3@11 ab3@17 ~@3 bb3@12 ~@4 eb4@13 ~@4 bb3@7 ~@4 [eb3,g5]@16 ab3@16 eb3@17 ~@3 bb3@16 ~ bb3@8 bb3@8 bb3@12 b2@16]/6", // Ab Eb5 Bb5 Eb
  F: "[~@3 eb5 ~@11 ab2, [eb3,bb4]@8 [b2,eb5]@9 ~ ab3@6 ab3@4 ab3@4, eb5@12 ~@4 gb5@12 gb5@6 ~@9 [ab4,bb4]@20 ~, g4@7 g4@9 b4@8 b4@10 ~@5 eb4@12 eb4@13, ~@3 eb4@13 ~@4 b3@11 ab2@28 ~@5]/2", // Eb5 B Absus2
  G: "~@24 ab3@4 ab2 ~@3, ab2@7 ~, bb4@16 ab3@3 bb4@10 ~@3, eb5@8 ab4@21 ~@3, ab4@4 ab3@7 eb5@18 ~@3", H: "[f5,ab5,c6]",
  I: "[eb5,g5,bb5]@16 [d5,f5,bb5]@15 ~", // Eb Bb
  J: "[[eb5,g5,bb5]@15 ~@57 [ab3,bb3,d4]@4 eb3@2 ~@14 eb5@4, ~@15 [d5,f5,bb5]@61 ~@5 c5@15, ~@32 [ab3,bb3,d4]@8 [ab3,bb3,d4]@8 [ab3,bb3,d4]@8 [ab3,bb3,d4]@8 [ab3,bb3,d4]@8 ~@9 eb5@7 g4@8, ~@9 eb3@2 eb3@2 eb3@2 eb3@2 eb3@2 ~ c3@4, ~@27 g4 c4@4]/3", // Eb Bb7 Bb Bb7
  K: "[~@12 eb5@3 ~@29 eb5@3 ~@13 c5@3 eb3, [bb2,bb4]@16 g4@4 eb4@12 g2@15 [ab2,ab4]@16 ~, eb5@12 ~@3 eb3@13 bb4@20 c5@12 ~@4, f4@8 f4@8 eb5@16 ~@8 g4@8 ~@7 eb5@8 ~, ~@4 bb3@12 bb4@8 g4@8 ~@4 g3@12 ~@3 ab3@12 ~]/2", // Bb Ab
  L: "[~@11 eb5@4 ~@13 bb3@3 ~@13 eb5@4 ~@28 ab4@3 ~@12 bb4@4 ~@13 eb5@3 ~@12 bb3@4 ~@12 eb4@4 ~@12 ab5@4 ~@12 g5@4 ~@45 bb2@3 ~@13 gb5@4 ~@12 eb5@4, g4@16 ~@3 bb3@8 ~@4 g4@5 eb4@12 ~@4 ab3@11 ab3@16 f5@8 f5@8 eb5@12 ~@25 eb4@7 ~@4 c5@8 c5@9 ~@3 eb4@12 bb4@8 bb4@16 ~ bb4@16 bb4@7 b4@4 b3@13 [eb3,bb4]@16, eb5@11 ~@12 d5@8 eb5@9 g4@8 ab4@8 ab4@12 ab4@8 ~@3 bb2@16 [eb3,bb4]@16 [bb2,f5]@17 ~@19 ab4@12 bb4@8 bb4@8 bb2@16 ~ bb2@16 bb2@12 ~@3 gb5@9 b4@8 g4@7 g4@9, ~@3 eb4@12 [bb2,bb4,f5]@16 ~ eb3@16 [ab2,c5]@32 ~@3 bb3@12 ~@4 eb4@13 ~@4 bb3@7 ~@4 [eb3,g5]@16 ab3@16 eb3@17 ~@3 bb3@16 ~ bb3@8 bb3@8 bb3@12 b2@17 ~@2 eb4@13, ~@7 bb4@8 ~@16 bb4@17 eb5@12 eb5@11 eb5@9 ~@3 bb4@8 ~@4 g4@8 g4@8 bb4@8 ~ bb4@7 bb4@8 bb4@8 ab5@12 ~@4 g5@12 ~@4 f5@12 f5@32 f5@4 eb5@16 ~ eb5@12 ~@4]/8", // Eb5 Bb5 Ab Eb
  M: "[~@44 ab2@4 ~@24 ab3@4 ab2 ~@3 d4@4 f4@4 bb4@4 f4@4, [b2,eb5]@18 ~@2 ab3@12 ab3@8 ab3@8 ab4@4 ab3@7 eb5@18 ~@19, gb5@12 gb5@6 ~@9 [ab4,bb4]@20 ~ bb4@16 ab3@3 bb4@10 ~@19, b4@8 b4@10 ~@5 eb4@12 eb4@13 eb5@8 ab4@21 ~@19, ~@4 b3@11 ab2@28 ~@5 ab2@28 ~@20]/3", // B Absus2
  N: "c5@13 ~@3 d4@4 f4@3 ~ bb4@4 f5@4",
  O: "[c5@13 ~@3 [eb4,ab4]@16 [d4,f4]@16 ~ eb4@15 [d4,f4]@15 ~ d4@4 f4@4 bb4@4 f4@4, ~@8 bb4@31 ~@9, ~@3 ab4 ~@2]/3", // Ab5 Dm
  P: "[c5@13 ~@3 [eb4,ab4]@16 [d4,f4]@16 ~ eb4@15 [d4,f4]@15 ~ [f5,ab5,c6]@32 [eb5,g5,bb5]@16, ~@8 bb4@31 ~@25, ~@3 ab4 ~@4]/4", // Ab5 Dm Fm Eb
  Q: "[[d5,f5,bb5]@15 ~ [f5,ab5,c6]@32 [eb5,g5,bb5]@15 ~@17 [ab3,bb3,d4]@8 [ab3,bb3,d4]@8 [ab3,bb3,d4]@8 [ab3,bb3,d4]@8 [g3,bb3,eb4]@8 [g3,bb3,eb4]@8, ~@63 [d5,f5,bb5]@49 ~@16]/4", // Bb Fm Eb Bb7 Eb Bb
  R: "[[g3,bb3,eb4]@2 [g3,bb3,eb4] ~ [f5,ab5,c6]@8 [eb5,g5,bb5]@4]/2", // Eb Fm Eb
  S: "[[d5,f5,bb5]@15 ~ [f5,ab5,c6]@32 [eb5,g5,bb5]@15 ~@18 [ab3,eb4]@7 [ab3,bb3,eb4]@8 [ab3,bb3,eb4]@8 [ab3,bb3,eb4]@8 [g3,bb3,eb4]@7 ~ g3@7 [g3,bb3,eb4]@8 ~ [g3,bb3,eb4]@7 ~ [f5,ab5,c6]@32 [eb5,g5,bb5]@16, ~@63 [d5,f5,bb5]@49 ~@80, ~@80 bb3@8 ~@31 [bb3,eb4]@8 ~@65]/6", // Bb Fm Eb Ab5 Absus2 Eb Fm Eb …
  T: "[[d5,f5,bb5]@15 ~ [f5,ab5,c6]@32 [eb5,g5,bb5]@15 f5@17 [f5,ab5,c6]@32 [eb5,g5,bb5]@16, ~@63 [d5,bb5]@49 ~@16]/4", // Bb Fm Eb Fm Eb Gm
  U: "[[d5,f5,bb5]@15 ~ [f5,ab5,c6]@32 [eb5,g5,bb5]@15 [d5,f5,bb5]@64 ~]/4", // Bb Fm Eb Bb
})).s("gm_piano").gain(0.31)

// bass · fretless bass
const bass = note(`<
  ~@20 A B C D E F@2 G@2 H I J K L M N O P M Q R S T U V W X Y Z AA AB AC@3 AD AE AF AG AH AI AJ AK AL AM AN AK AO AP AQ
  AR AS AT AU@3 AR AS AT AV AW AX AR AS AT AY AR AS AT AZ ~@2
>`.pickRestart({
  A: "ab1@16 bb1@15 ~", B: "c2 bb1", C: "eb1 g1", D: "ab1@17 eb2@15",
  E: "bb1@11 ~ d2@3 ~ eb2@3 ~ d2@3 c2@3 ~@2 bb1@3 ~", F: "[ab1@31 bb1@16 eb1@16 ~]/2",
  G: "[bb1@16 eb1@15 ab1@17 eb2@13 ~@3]/2", H: "bb1@13 ~@19", I: "bb1@13 ~@3 b1@13 ~@3", J: "eb2@15 ~ b1@15 ~",
  K: "ab1@13 ~@19", L: "ab1@17 ~@15", M: "g1@5 ~ g1@2 d2@5 ~ d2@2", N: "g1@10 ~@2 g1@4 d2@9 ~@3 d2@4",
  O: "ab1@5 ~ ab1@2 bb1@5 ~ bb1@2", P: "ab1@9 ~@3 ab1@4 bb1@8 ~@4 bb1@4", Q: "g1@10 ~@2 g1@4 d2@9 ~@3 g2@4",
  R: "ab2@2 g2@2 f2@2 eb2@2 bb2@5 ~ g2@2", S: "ab2 g2 f2 eb2 c3@2 bb2@2", T: "f1@8 ~@4 f1 ~@3 f1@13 ~@3",
  U: "eb1@9 ~@3 ab1@4 bb1@10 ~@2 bb1@4", V: "f1@9 ~@3 f1 ~@3 f1@10 ~@2 f1@4", W: "eb1@9 ~@3 ab1@4 bb1@10 ~@2 bb1@3 ~",
  X: "ab1@9 ~@3 g1@4 ab1@9 ~@3 c2@4", Y: "~@8 ab2@7 ~ c2@16, eb2@11 ~@21", Z: "bb1 eb1", AA: "g1 ab1",
  AB: "~ eb2@15 bb1@11 ~ d2@3 ~", AC: "[eb2@3 ~ d2@3 c2@3 ~@2 bb1@3 ~ ab1@31 bb1@16 eb1@16 ~ bb1@16]/3",
  AD: "eb1@15 ab1@17", AE: "eb2@13 ~@3 bb1@13 ~@3", AF: "~@16 bb1@13 ~@3", AG: "b1@13 ~@3 eb2@15 ~",
  AH: "b1@15 ~ ab1@13 ~@3", AI: "~ ab1", AJ: "~@8 g1@5 ~ g1@2", AK: "d2@5 ~ d2@2 g1@5 ~ g1@2",
  AL: "d2@9 ~@3 d2@4 ab1@10 ~@2 ab1@4", AM: "bb1@5 ~ bb1@2 ab1@6 ab1@2", AN: "bb1@6 bb1@2 g1@5 ~ g1@2",
  AO: "d2@9 ~@3 g2@4 ab2@4 g2@4 f2@4 eb2@4", AP: "bb2@5 ~ g2@2 ab2@2 g2@2 f2@2 eb2@2",
  AQ: "g2@3 ~ f2@4 eb2@4 d2@3 ~ f1@8 ~@4 f1 ~@3", AR: "f1@13 ~@3 eb1@9 ~@3 ab1@4",
  AS: "bb1@10 ~@2 bb1@4 f1@9 ~@3 f1 ~@3", AT: "f1@10 ~@2 f1@4 eb1@9 ~@3 ab1@4",
  AU: "[bb1@10 ~@2 bb1@3 ~ ab1@24 c2@4 d2@4 eb2@26 ~@6 f1@8 ~@4 f1 ~@3]/3",
  AV: "bb1@10 ~@2 bb1@3 ~ ab2@9 ~@3 ab2@2 ~@2", AW: "ab2@11 ~ f2@4 g2@10 ~@2 g2@2 ~@2", AX: "g2@11 ~@5 f1@8 ~@4 f1 ~@3",
  AY: "bb1@10 ~@2 bb1@3 ~ f1@8 ~@4 f1 ~@3", AZ: "bb1@10 ~@2 bb1@3 ~@17",
})).s("gm_fretless_bass").gain(0.46)

// chords · pad warm · "Synth Strings"
const pad_warm = note("<~@17 A@4 B@8 C@2 D E F G@8 H@2 I@2 J@2 ~@10 K@6 L@4 M@4 N@6 O@2 P@8 ~@3>".pickRestart({
  A: "[[g3,bb3,d4,f4]@14 ~ [a3,d4]@16 [g3,bb3,d4,f4]@16 [a3,d4,f4]@16 [eb3,ab3,bb3]@16 ~ [d3,f3]@15 [eb3,ab3,bb3]@17 [d3,f3,bb3]@16, ~@14 f4@17 ~@48 bb3@15 ~@34]/4", // Gm7 D5 Gm7 Dm Ebsus4 Dm Ebsus4 Bb
  B: "[[g3,c4,eb4]@15 [f3,bb3,eb4]@16 [g3,bb3,eb4]@32 [ab3,c4,eb4]@16 [g3,bb3,eb4]@16 ~ f4@15 [g3,bb3,eb4]@16 [ab3,c4,eb4]@32 [bb3,d4,f4]@16 [g3,bb3,eb4]@16 [bb3,d4,f4]@16 ~ g4@15 [c4,eb4,ab4]@16 [bb3,eb4,g4]@17, ~@95 [bb3,d4]@17 ~@95 [bb3,eb4]@16 ~@33]/8", // Cm Ebsus2 Eb Ab Eb Ab Bb Eb …
  C: "[[bb3,d4,f4]@48 ~ [b3,eb4,gb4]@15]/2", D: "[g3,bb3,eb4]@15 [b3,eb4,gb4]@16 ~", E: "eb3 ~@3 eb3@28, [ab3,bb3,d4]",
  F: "[ab3,bb3,eb4]", // Absus2
  G: "[[g3,bb3,d4,f4]@15 [a3,d4,f4]@16 ~ [g3,f4]@15 [a3,d4,f4]@16 [eb3,ab3,bb3]@16 [d3,f3,bb3]@16 [eb3,ab3,bb3]@16 [d3,f3,bb3]@12 ~@5, ~@31 [bb3,d4]@16 ~@81]/4", // Gm7 Dm G7 Dm Ebsus4 Bb Ebsus4 Bb
  H: "[[c4,f4,ab4]@31 [eb4,g4,bb4]@16 [d4,f4,bb4]@17]/2", // Fm Eb Bb
  I: "[[c4,f4,ab4]@31 ~ bb4@15 [d4,f4,bb4]@17, ~@31 [eb4,g4]@33]/2", J: "[[ab3,bb3,eb4]@5 ~@3]/2",
  K: "[~@16 [eb3,ab3,d4]@31 ~ [eb3,ab3]@32 [g3,bb3,d4,f4]@14 ~ [a3,d4]@16 [g3,bb3,d4,f4]@16 [a3,d4,f4]@16 [eb3,ab3,bb3]@16 ~ [d3,f3]@15 [eb3,ab3,bb3]@17, ~@47 eb4@32 ~@15 f4@17 ~@48 bb3@15 ~@18]/6", // Ab Ab5 Gm7 D5 Gm7 Dm Ebsus4 Dm …
  L: "[bb3@16 [g3,bb3,d4,f4]@14 ~ [a3,d4]@16 [g3,bb3,d4,f4]@16 [a3,d4,f4]@16 [eb3,ab3,bb3]@16 ~ [d3,f3]@15 [eb3,ab3,bb3]@17, [d3,f3]@30 f4@17 ~@48 bb3@15 ~@18]/4", // Gm7 D5 Gm7 Dm Ebsus4 Dm Ebsus4 Dm
  M: "[~@16 [c4,f4,ab4]@31 [eb4,g4,bb4]@16 [d4,f4,bb4]@17 [c4,f4,ab4]@31 ~ bb4@15 [d4,f4,bb4], [d3,f3,bb3]@48 ~@63 [eb4,g4]@16 ~]/4", // Fm Eb Bb Fm Bb Eb
  N: "[~@16 [ab3,bb3,d4]@31 ~ g3@32 [c4,f4,ab4]@31 [eb4,g4,bb4]@16 [d4,f4,bb4]@17 [c4,f4,ab4]@31 ~ bb4@15 [d4,f4,bb4], ~@47 [bb3,eb4]@33 ~@95 [eb4,g4]@16 ~]/6", // Bb7 Fm Eb Bb Fm Bb Eb5 Eb
  O: "[~ [ab3,bb3,eb4]@2 [g3,bb3,eb4]]/2", // Absus2 Eb
  P: "[~@16 [c4,f4,ab4]@31 [eb4,g4,bb4]@16 [d4,f4,bb4]@17 [c4,f4,ab4]@31 ~ bb4@15 [d4,f4,bb4]@17 [c4,f4,ab4]@31 [eb4,g4,bb4]@16 [d4,f4,bb4]@17 [c4,f4,ab4]@31 ~ bb4@15 [d4,f4,bb4], ~@111 [eb4,g4]@33 ~@95 [eb4,g4]@16 ~]/8", // Fm Eb Bb Fm Bb Fm Eb Bb …
})).s("gm_pad_warm").gain(0.26)

// other · piano · "Ac.Piano"
const piano_2 = note("<~@80 A B A C D@2 A C ~@3>".pickRestart({
  A: "~@3 [ab4,ab5]", B: "[g4,g5] [f4,f5] ~@2", C: "[g4,g5]@4 [f4,f5]@5 ~@7",
  D: "[~@32 [g4,g5]@8 [f4,f5]@9 ~@15, ~@24 [ab4,ab5]@17 ~@23]/2", // G F Ab
})).s("gm_piano").gain(0.41)

// chords · acoustic guitar nylon · "Ac.Guitar"
const acoustic_guitar_nylon = note(`<
  A@2 B C D E F G H I J K L@2 M N O A@2 B C D E F G H I J K L@2 M N O A@2 B C A@2 B C P Q R S T@2 U@2 V W@2 X Y Z@2 AA
  AB@3 AC AD AE AF AC AD AE AG@2 AH@2 AI@4 AH@2 AJ@4 AH@2 AK@2 AH@2 AL@3
>`.pickRestart({
  A: "~@3 g3 ~@3 a3, g1 d2, ~ g3@2 ~@3 [d4,f4]@2, ~@2 [bb3,d4,f4]@2 ~ a3@2 ~", // Dm Bb
  B: "~@3 eb3 ~@3 f3, ab1@17 ~@7 [d3,bb3]@8, ~ eb3@2 ~ bb1@4, ~@8 [ab3,bb3]@9 ~@3 f3@8 ~@4", // Gm Absus2
  C: "~@12 eb3@4 ~@12 d3@3 ~, ab1@17 ~@7 [f3,bb3]@8, ~ eb3@2 ~ bb1@4, ~@2 [ab3,bb3]@2 ~ d3@2 ~", // Bb5 Absus2
  D: "~@3 g3 ~@3 f3, c2 bb1, ~ g3@2 ~@2 f3@2 ~, ~ [c4,eb4] ~ [bb3,eb4]", // Cm Eb5
  E: "~@7 g3, eb2, ~ g3@2 g3@2 g3@2 ~, ~ [bb3,eb4]@2 [bb3,eb4], ~ g2", // Eb5
  F: "~@3 ab3 ~@3 g3, ab1 eb2, ~ ab3@2 ~@2 g3@2 ~, ~ [c4,eb4] ~ [bb3,eb4]", // Cm Eb5
  G: "~@3 bb3 ~@3 g3, bb1@17 ~@7 [bb3,eb4]@8, ~ bb3@2 ~ eb2@4, ~@8 [d4,f4]@9 ~@3 g3@8 ~@4", // Eb5 Dm
  H: "~@7 ab3, ab1!2, ~ ab3@2 ab3@2 ab3@2 ~, ~ [c4,eb4]@2 [c4,eb4]", // Cm
  I: "~@3 bb3 ~@3 g3, bb1 eb2, ~ bb3@2 ~@2 g3@2 ~, ~ [d4,f4] ~ [bb3,eb4]", // Dm Eb5
  J: "~@3 bb3 ~@3 bb3, bb1 eb2, ~@4 bb3@8 ~@7 bb3@8 ~@5, ~@7 d4@8 ~@8 eb4@8 ~, ~ f4 ~ g4",
  K: "~@3 c4 ~@3 bb3, ab2@17 ~@6 eb4@9, ~ c4@2 ~ eb2@4, ~@8 [eb4,ab4]@9 ~@3 bb3@8 ~@4, ~@3 g4", // Ab5
  L: "[~@11 bb3 ~@3 gb4, bb1!2 bb1 [b1,eb4], ~@4 bb3@8 bb3@8 bb3@8 bb3@7 bb3@8 ~@5 b3@8 b3@8, ~@8 [d4,f4]@16 [d4,f4]@15 [d4,f4]@9 gb4@12 ~@4, ~@13 b2@3]/2", // B Dm
  M: "~@3 eb4 ~@3 gb4, [eb2,bb3] [b1,eb4], eb4@3 ~ gb4@3 ~, g3!2 b3!2, ~@4 eb3@13 ~@3 b2@12", // Eb5 B
  N: "~@7 eb3, ab2!2, ~@4 eb3@8 eb3@7 eb3@8 ~@5, ~@7 ab3@16 ~ [ab3,bb3,d4]@8, ~ [bb3,d4]@2 ~", // Bb7 Bb
  O: "~@7 eb3, ab2!2, ~ eb3@2 eb3@2 eb3@2 ~, ~ [ab3,bb3,eb4]@2 [ab3,bb3,eb4]", // Absus2
  P: "~@13 f3@7 ~@8 f3@3 ~, f1@31 ~, ~ f3@2 ~@2 f3@2 ~, ~@8 [ab3,c4]@16 [ab3,c4]@7 ~", // Ab
  Q: "~@3 eb3 ~@3 f3, eb2@17 ~@7 [bb3,d4]@8, ~ eb3@2 ~ bb2@4, ~@2 [g3,bb3]@2 ~ f3@2 ~", // Bb Gm
  R: "~@3 f3@2 ~@2 f3, f2, ~ f3@2 ~@2 f3@2 ~, ~ [ab3,c4]@2 [ab3,c4]", // Ab
  S: "~@3 eb3 ~@3 f3, eb2@2 ~ [bb3,d4], ~ eb3@2 ~ bb2@4, ~@2 [g3,bb3]@2 ~ f3@2 ~", // Bb Gm
  T: "[~@12 eb3@3 ~@29 eb3@4 ~@12 g3@4, ab2@15 ~ ab2@15 ab2@16 ~ c2@16, ~@4 eb3@8 ~@8 eb3@8 eb3@5 ~@3 eb3@8 ~@12 [c4,eb4]@8, ~@8 [ab3,bb3,d4]@7 ~@9 [ab3,bb3,d4]@9 ~@7 [ab3,bb3,d4]@8 ~@4 g3@8 ~@4]/2", // Cm Bb7
  U: "[~@3 f3 ~@7 g3 ~@3 ab3, bb1 eb2@2 ab1, ~ f3@2 ~@2 g3@2 g3@2 g3@2 ~@2 ab3@2 ~, ~ [bb3,eb4] ~ [bb3,eb4]@2 [bb3,eb4] ~ [c4,eb4], ~@2 g2 ~]/2", // Eb5 Cm
  V: "~@3 g3 ~@3 bb3, eb2@17 ~@7 [d4,f4]@8, ~ g3@2 ~ bb1@4, ~@8 [bb3,eb4]@9 ~@3 bb3@8 ~@4", // Dm Eb5
  W: "[~@3 g3 ~@7 ab3 ~@3 bb3, eb2 ab1 ab1 bb1, ~ g3@2 ~@2 ab3@2 ab3@2 ab3@2 ~@2 bb3@2 ~, ~ [bb3,eb4] ~ [c4,eb4]@2 [c4,eb4] ~ [d4,f4]]/2", // Eb5 Cm Dm
  X: "~@3 g3 ~@3 bb3, eb2 bb1, ~@4 g3@8 ~@11 d4@8 ~, ~@2 [bb3,eb4]@2 ~ bb3@2 ~, ~@3 f4", // Eb5
  Y: "~@3 bb3 ~@3 c4, eb2@17 ~@15, ~@3 bb3@8 ~@5 ab2@16, ~@7 eb4@8 ~@5 c4@8 ~@4, ~ g4 ~ [eb4,ab4]", // Ab5
  Z: "[~@3 bb3 ~@11 bb3, eb2@17 ~@47, ~ bb3@2 ~ bb1@4 bb1@4 bb1@4, ~@7 eb4@9 ~@4 bb3@8 bb3@8 bb3@8 bb3@7 bb3@8 ~@5, ~@8 g4@9 ~@7 [d4,f4]@16 [d4,f4]@15 [d4,f4]@9]/2", // Dm
  AA: "~@3 gb4 ~@3 eb4, [b1,eb4] [eb2,bb3], gb4@3 ~ eb4@3 ~, b3!2 g3!2, ~ b2@3 ~ eb3@3", // B Eb5
  AB: "[~@3 gb4 ~@7 eb3 ~@7 eb3 ~@3 g3, [b1,eb4]@2 ~ [bb3,d4]@2 ~@6 [bb3,d4,f4], gb4@12 ~@11 ab3@16 ~ [ab3,bb3,d4]@8 ~@8 [ab3,bb3,eb4]@16 [ab3,bb3,eb4]@8 ~@4 g3@8 ~@4, b3@8 b3@8 ~@4 eb3@8 eb3@7 eb3@8 ~@9 eb3@8 eb3@8 eb3@8 ~@20, ~ b2@3 ab2@4 ab2@4 ab2@4 ab2@4 g1@4]/3", // B Bb Bb7 Absus2
  AC: "~@3 a3 ~@3 g3, d2 g1, ~ a3@2 ~@2 g3@2 ~, ~ [d4,f4] ~ [bb3,d4,f4]", // Dm Bb
  AD: "~@3 a3 ~@3 eb3, d2@17 ~@7 [ab3,bb3]@8, ~ a3@2 ~ ab1@4, ~@2 [d4,f4]@2 ~ eb3@2 ~", // Absus2 Dm
  AE: "~@3 f3 ~@3 eb3, bb1 ab1, ~ f3@2 ~@3 [ab3,bb3]@2, ~@8 [d3,bb3]@9 ~@3 eb3@8 ~@4", // Absus2 Gm
  AF: "~@3 d3 ~@3 g3, bb1 g1, ~ d3@2 ~@3 [bb3,d4,f4]@2, ~@2 [f3,bb3]@2 ~ g3@2 ~", // Bb Bb5
  AG: "[~@12 d3@4 ~@13 f3@7 ~@8 f3@3 ~@13 eb3@4, bb1@16 f1@31 ~ eb2@16, ~@4 d3@8 ~@12 [ab3,c4]@16 [ab3,c4]@7 ~@9 [g3,bb3]@8, ~@2 [f3,bb3]@2 ~ f3@2 ~@2 f3@2 ~@2 eb3@2 ~]/2", // Ab Gm Bb5
  AH: "[~@3 f3 ~@3 f3@2 ~@2 f3 ~@3 eb3, bb2@17 ~@7 [ab3,c4]@16 [ab3,c4]@8 ~@8 [g3,bb3]@8, ~ f3@2 ~ f2@8 eb2@4, ~@2 [bb3,d4]@2 ~ f3@2 ~@2 f3@2 ~@2 eb3@2 ~]/2", // Ab Gm Bb
  AI: "[~@44 ab3@4 ~@28 g3@2 ~@15 f3@7 ~@8 f3@3 ~@13 eb3@4, bb2@36 ab3@4 [bb3,d4]@8 ~@8 [bb3,eb4]@16 [bb3,eb4]@7 ~@9 [ab3,c4]@16 [ab3,c4]@7 ~@9 [g3,bb3]@8, ~ f3@2 f3@9 ~ g3@2 g3@2 g3@2 ~@2 f3@2 ~@2 f3@2 ~@5, ~@8 [bb3,d4]@12 ab3@4 [bb3,d4]@4 ab3@5 ab2@16 ~@15 eb3@14 ~@38 eb3@8 ~@4, ~@16 ab1@32 eb2@31 ~ f1@31 ~ eb2@16]/4", // Bb Eb5 Ab Gm Bb
  AJ: "[~@44 bb3@3 ~ f3 ~@19 g3@4 ~@3 g2@5 ~@13 f3@7 ~@8 f3@3 ~@13 eb3@4, bb2@47 g1@34 ~@31 eb2@16, ~@4 f3@8 f3@8 ab2@4 ab3@4 [bb3,eb4]@4 ab2@15 g3 bb3@4 g3@4 bb3@25 ~@7 [ab3,c4]@16 [ab3,c4]@7 ~@9 [g3,bb3]@8, ~@8 d4@40 eb4@12 eb4@12 [g3,eb4]@9 ~@3 f3@8 ~@8 f3@8 ~@8 eb3@8 ~@4, ~@8 bb3@8 ab1@20 ab3@4 eb4@8 g2@12 g3@4 g2@11 ~@5 f1@31 ~@17]/4", // Eb5 Ab Gm Cm
  AK: "[~@29 f3@7 ~@8 f3@3 ~@13 eb3@4, bb2@3 eb2, ~@4 f3@8 f3@8 f3@4 [ab3,c4]@12 f3@4 [ab3,c4]@7 ~@5 eb3@8 ~@4, ~ [bb3,d4]@5 ~ [g3,bb3], ~@16 f1@31 ~@17]/2", // Ab Bb Gm
  AL: "[~@3 f3@16 ~@5, bb2@2 ~, ~ f3@2 ~@21, ~ [bb3,d4]@8 ~@3]/3", // Bb
})).s("gm_acoustic_guitar_nylon").gain(0.36)

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

// drums · rim
const rim = s("rim").struct("<~@47 [~@3 x] [~ x ~ x]!12 [~ x ~@2] ~@30>").gain(0.41)

// drums · snare
const snare = s("sd").struct("<~@21 A@4 ~ A@21 B ~@12 C A@3 C A@3 C A@11 D A@7 B ~@2>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "x!2 ~ x",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~@20 A B@4 C B@16 ~@5 D B@20 E ~@22>".pickRestart({
  A: "~@5 x ~@2", B: "x!8", C: "~@6 x!2", D: "~@4 x!4", E: "x!4 ~@4",
})).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct("<~@41 [~@7 x] ~@22 [~@3 x ~@4] ~@3 [~@3 x ~@4] ~@22>").gain(0.46)

// drums · mid tom
const mid_tom = s("mt").struct("<~@33 A ~@3 A ~@3 B ~@18 C ~@3 C ~@3 C ~@22>".pickRestart({
  A: "~@6 x!2", B: "~@4 x!4", C: "~@2 x!2 ~@4",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<~@20 [~@3 x] ~@4 [x!5 ~@3 x!5 ~@3 x!3 ~@13] ~@25 [~ x] ~@39>").gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<~@33 A ~@3 A ~@3 B ~@18 C ~@3 D ~@3 D ~@22>".pickRestart({
  A: "~@5 x!2 ~", B: "~@4 x!3 ~", C: "~ x!2 ~@5", D: "~ x ~@6",
})).gain(0.46)

// drums · crash
const crash = s("cr").struct(`<
  ~@34 A ~@3 A ~@3 A ~ A ~@2 B ~@12 C ~@3 C ~@3 C ~ C ~ C B C ~ C ~ C ~ C ~ C ~ C ~ C ~@4
>`.pickRestart({
  A: "x", B: "~@3 x!2 ~@3", C: "~ x",
})).gain(0.51)

// drums · ride
const ride = s("rd").struct("<~@42 [x!8]!5 [x!4 ~@4] ~@20 [~@4 x!4] [x!8]!19 [x!4 ~@4] ~@2>").gain(0.46)

stack(
  piano, bass, pad_warm, piano_2, acoustic_guitar_nylon, kick, rim, snare, hihat, low_tom, mid_tom, open_hat, high_tom,
  crash, ride
)