Strudelify

everybody talks

Amy Parikka

KeyE♭ majorTempo160 bpm
0:00/0:00
// everybody talks — Amy Parikka
// 160 bpm, 4/4, key Eb 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: Transcription provider: pdmx. https://musescore.com/score/309771; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/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.

// other · glockenspiel
const glockenspiel = note(`<
  A@4 B C@3 D C@3 E F G@3 H I J K@2 L M N@2 O@2 P Q R@2 S T@2 U V W@2 U V X Y U@2 Z ~ AA@2 AB@2 AC AB AA@2 AD@2 AB AC
  AA@2 AE@2 AF AG AH@2 AI AJ ~ AK ~ AK ~ AK ~ AK AL AM ~@2 AN AM AO AP@2 AQ@2 AR AS AR AT AU@2 AV AW AX@2 AY@6 AZ BA
  AP@2 BB BC BD@2 BE@2
>`.pickRestart({
  A: "[~@4 [g5,bb5]@8 [g5,bb5]@8 [bb5,bb6]@8 db7 [db7,eb7]@2 [db7,eb7]]/4", B: "[db7,eb7]!2 ~ eb7",
  C: "[d7!2 c7!2 bb6 c7@2 g6@2 g5 eb6 g6 f6 eb6@2 f6@3 eb6 bb6@2 g6 ~@2]/3", D: "~@5 eb6 eb7@2",
  E: "~@4 g6 bb5 eb6 bb6", F: "c7 eb6@2 d7 c7 d6 f6 bb6",
  G: "[g6 bb5 eb6 bb6@2 ab6@2 g6@2 f6@4 bb5 ab5 eb6@2 bb5@3 ab6@2 ab6@2]/3", H: "ab6@2 ab6 g6 ab6 g6 ab6 g6",
  I: "ab6@2 ab6 g6 ab6 g6 ab6@2", J: "ab6 g6 ab6 g6 ab6@3 eb7", K: "[gb7 f7 eb7 ab6 f7@2 g7@3 g6@4 g6 bb6 eb7]/2",
  L: "gb7 f7 eb7!2 f7@2 g7@2", M: "f7@2 ab6@3 ab6 c7 eb7", N: "[gb7 f7 eb7!2 f7@2 f7@3 ab6@3 g7@2 ab6 eb7]/2",
  O: "[gb7 f7 eb7!2 f7@2 f7@3 ab6@3 g7@2 g6@2]/2", P: "gb7 f7 eb7!2 bb7@2 g7@2", Q: "f7@5 g6 eb7!2",
  R: "[gb7 f7 eb7!2 f7@2 eb7@3 ab6@3 f7@3 ab6]/2", S: "gb7 f7 eb7 gb7 f7@2 bb6@2",
  T: "[eb7@2 g6@3 eb6 g6 bb6@2 eb6@3 ~ bb6 ~@2]/2", U: "bb6!3 ~@2 bb6 ~@2", V: "bb6!3 ~@2 ab6 ~@2",
  W: "[ab6!3 ~@2 [c6,ab6] [eb6,eb7] [bb6,bb7]@2 [c6,c7] [g6,g7]@2 ~ bb6 ~@2]/2", X: "ab6!3 ~@2 ab6 ~@2",
  Y: "ab6!3 ~@2 bb6 ~@2", Z: "bb6!3 ~@5", AA: "eb6@2 eb6@2 eb6!2 eb6@2", AB: "ab5@2 ab5@2 ab5!2 ab5@2",
  AC: "bb5@2 bb5@2 bb5!2 bb5@2", AD: "g6@2 g6@2 g6!2 g6@2", AE: "[eb7 d7@2 c7@2 bb6@2 c7@4 bb6 g6@3 bb6]/2", AF: "g6",
  AG: "~@7 d7", AH: "[eb7 c7@2 eb7@2 c7@2 eb7@3 c7 eb7 eb7@2 f7@2]/2", AI: "f7 g7@2 f7@2 ~@3", AJ: "~@3 bb6@4 ~",
  AK: "~@2 ab6 g6", AL: "eb6 ~@3", AM: "g5", AN: "eb6", AO: "g5@2 ~ eb7 gb7 f7 eb7 ab6",
  AP: "[f7@2 g7@3 g6@4 g6 bb6 eb7 gb7 f7 eb7!2]/2", AQ: "[f7@2 g7@2 f7@2 ab6@3 ab6 c7 eb7 gb7 f7 eb7!2]/2",
  AR: "f7@2 f7@3 ab6@3", AS: "g7@2 ab6 eb7 gb7 f7 eb7!2", AT: "g7@2 g6@2 gb7 f7 eb7!2",
  AU: "[bb7@2 g7@2 f7@5 g6 eb7!2 gb7 f7 eb7!2]/2", AV: "f7@2 eb7@3 ab6@3", AW: "f7@3 ab6 gb7 f7 eb7 gb7",
  AX: "[f7@2 bb6@2 eb7@2 g6@3 g6 bb6 eb7@3 ~@2]/2", AY: "[f6 g6@2 f6 g6@2 f6 g6@2 f6 g6@2 ab6@2 g6@2]/2",
  AZ: "bb6@4 g5 bb5 d6 eb6", BA: "g6 bb6 d7 eb7 gb7 f7 eb7 ab6", BB: "f7 g7 f7 ab6", BC: "~@2 ab7 g7",
  BD: "[f7 g7@2 f7 g7@2 f7 g7@2 f7 g7@2 ab7@2 g7@2]/2", BE: "eb7/2",
})).s("gm_glockenspiel").gain(0.4)

// other · xylophone
const xylophone = note(`<
  ~@4 A B@3 C B@3 D E F@3 G H I J@2 K L M@2 N@2 O P Q@2 R S@2 T U V W T U V X Y@2 Z ~ AA@2 AB@2 AC AB AA@2 AD@2 AB AC
  AA@2 AE@2 AF AG AH@2 AI AJ AK@8 AL ~@6 AA@2 AB@2 AC AB AA@2 AD@2 AB AC AA@2 AM@6 AN AO AP@2 AQ AR AM@2 AS@2
>`.pickRestart({
  A: "~@3 eb5", B: "[f5!2 eb5!2 d5 d5@2 bb4@2 g4 bb4 g5 c5 eb5@2 c5@3 eb5 c5@2 c5 ~@2]/3", C: "~@5 eb5 g5@2",
  D: "~@4 g5 bb4 eb5 bb5", E: "c6 eb5@2 d6 c6 d5 f5 bb5",
  F: "[g5 bb4 eb5 bb5@2 c5@2 bb4@2 f5@4 bb4 ab4 eb5@2 bb4@3 f5@2 f5@2]/3", G: "f5@2 ab5 g5 f5 g5 f5 g5",
  H: "f5@2 f5 g5 f5 g5 f5@2", I: "f5 g5 f5 g5 f5@3 ab5", J: "[gb6 ab5!3 ab5@2 g5@3 g5@4 g5 bb5 eb6]/2",
  K: "gb6 f6 eb6!2 ab5@2 ab5@2", L: "ab5@2 ab5@3 ab5 c6 eb6", M: "[ab5 f6 eb6!2 ab5@2 ab5@3 ab5@3 c6@2 ab5 eb6]/2",
  N: "[ab5 f6 eb6!2 ab5@2 ab5@3 ab5@3 g5@2 g5@2]/2", O: "bb5 f6 eb6!2 bb5@2 bb5@2", P: "bb5@5 g5 bb5!2",
  Q: "[gb6 f6 bb5!2 ab5@2 ab5@3 ab5@3 ab5@3 ab5]/2", R: "gb6 f6 eb6 gb6 ab5@2 ab5@2",
  S: "[g5@2 g5@3 eb5 g5 bb5@2 eb5@3 ~@2 [eb6,bb6]!2]/2", T: "[eb6,bb6]!4 ~@2 [eb6,bb6]!2",
  U: "[eb6,bb6]!4 ~@2 [eb6,ab6]!2", V: "[eb6,ab6]!4 ~@2 [eb6,ab6]!2", W: "[eb6,ab6]!4 ~@2 [eb6,bb6]!2",
  X: "[eb6,ab6]!4 ~@2 [d6,bb6]!2", Y: "[d6,bb6]!4 ~@2 [d6,bb6]!2", Z: "[d6,bb6]!4 ~@4", AA: "~ eb5!3 ~ eb5!3",
  AB: "~ ab4!3 ~ ab4!3", AC: "~ bb4!3 ~ bb4!3", AD: "~ g5!3 ~ g5!3", AE: "[ab5 d6@2 c6@2 eb5@2 c6@4 bb5 g5@3 bb5]/2",
  AF: "g5", AG: "~@7 d6", AH: "[ab5 c6@2 eb6@2 c6@2 ab5@3 c6 ab5 ab5@2 f6@2]/2", AI: "ab5 ab5@2 ab5@2 ~@3",
  AJ: "~@3 bb5@4 ~", AK: "eb5 eb6!3 eb5 eb6!3", AL: "eb5 ~@3",
  AM: "[g4 bb4!2 g4 bb4!2 ab5 bb5@2 bb4 bb4@2 bb4@2 bb4@2]/2", AN: "bb4", AO: "~@3 eb6 gb6 ab5!3",
  AP: "[ab5@2 g5@3 g5@4 g5 bb5 eb6 gb6 f6 eb6!2]/2", AQ: "ab5!4", AR: "bb5 bb4 bb4@2 bb4@2 bb4@2", AS: "bb4/2",
})).s("gm_xylophone").gain(0.3)

// other · xylophone
const xylophone_2 = note(`<
  ~@4 A B C D E B C D E B C D F G@2 H I J K L M N O J P Q R M S J T U@3 V W@4 X Y Z AA AB@2 AC@2 AD AE AD AF AG@2 AD AH
  AI@2 AJ@2 AK@2 AJ@2 AL AM AN@8 AO ~@5 AA AB@2 AC@2 AD AE AD AF AG@2 AD AH AP@2 AQ@2 AR@2 AS@2 AT@2 AQ@2 AR@2 AS@2 AU@2
>`.pickRestart({
  A: "~@6 [eb6,bb6]!2", B: "[eb6,bb6]!4 ~@2 [eb6,bb6]!2", C: "[eb6,bb6]!4 ~@2 [eb6,ab6]!2",
  D: "[eb6,ab6]!4 ~@2 [eb6,ab6]!2", E: "[eb6,ab6]!4 ~@2 [eb6,bb6]!2", F: "[eb6,ab6]!4 ~@2 [d6,bb6]!2",
  G: "[d6,bb6]!4 ~@2 [d6,bb6]!2", H: "[d6,bb6]!4 ~@4", I: "~@5 eb5!3", J: "~ eb5!3 ~ eb5!3", K: "~ eb5!3 ~ ab4!3",
  L: "~ ab4!3 ~ ab4!3", M: "~ ab4!3 ~ bb4!3", N: "~ bb4!3 ~ ab4!3", O: "~ ab4!3 ~ eb5!3", P: "~ eb5!3 ~ g5!3",
  Q: "~ g5!3 ~ g5!3", R: "~ g5!3 ~ ab4!3", S: "~ bb4!3 ~ eb5!3", T: "~ eb5!3 ~ eb5 g5@2",
  U: "[bb5!2 g5!2 f5 f5@2 d5@2 g4 bb4 g5 c5 eb5@2 c5@3 eb5 c5@2 c5 ~@2]/3", V: "~@5 gb5 gb5@2",
  W: "[gb5!5 gb5@2 gb5@2 gb5 c6!2 ab5@2 c6 ab5@2 c6@2 c6@2 c6@4 ab5@3 d5@2 d5@2]/4", X: "d5@2 bb4@2 bb4 ab5 bb4 g5",
  Y: "ab5@2 bb4 g5 bb4 g5 bb4@2", Z: "bb4 g5 bb4 g5 bb4@4", AA: "~@3 eb6 gb6 ab5!3",
  AB: "[ab5@2 g5@3 g5@4 g5 bb5 eb6 gb6 f6 eb6!2]/2", AC: "[ab5@2 ab5@2 ab5@2 ab5@3 ab5 c6 eb6 ab5 f6 eb6!2]/2",
  AD: "ab5@2 ab5@3 ab5@3", AE: "c6@2 ab5 eb6 ab5 f6 eb6!2", AF: "g5@2 g5@2 bb5 f6 eb6!2",
  AG: "[bb5@2 bb5@2 bb5@5 g5 bb5!2 gb6 f6 bb5!2]/2", AH: "ab5@3 ab5 gb6 f6 eb6 gb6",
  AI: "[ab5@2 ab5@2 g5@2 g5@3 eb5 g5 bb5@2 eb5@3]/2", AJ: "~ ab4!7", AK: "~ eb5!7", AL: "~ bb4!7",
  AM: "~ bb4!2 [bb4,bb5] ~ bb4!3", AN: "[g4 bb4!2 g4 bb4!2 ab5 bb5@2 bb4 bb4@2 bb4@2 bb4@2]/2", AO: "bb4 ~@3",
  AP: "[ab5@2 ab5@2 g5@2 g5@3 g5 bb5 eb6@3 ~@2]/2", AQ: "g5 g6!3 g5 g6!3", AR: "ab5 ab6!3 ab5 ab6!3",
  AS: "bb4 bb5!3 bb4 bb5!3", AT: "eb5 eb6!3 eb5 eb6!3", AU: "bb4/2",
})).s("gm_xylophone").gain(0.3)

// chords · marimba
const marimba = note(`<
  A B@4 C@3 D E@3 F G H@3 I J K@3 L@4 M@2 N O P@3 Q@2 R@3 S T@4 U J V W X@2 Y@2 Z AA AB AC AD@2 AE AF AG AH AI@2 AJ AK
  AL@2 AM AN AO@8 AP AQ AR AS AT AU AV X@2 Y@2 Z AA AB AC AD@2 AE AF AG AW AX@2 AY@2 AZ BA BB BC BD@2 BE BF AZ BA BG@2
>`.pickRestart({
  A: "~@4 eb3 eb3@2 eb3",
  B: "[eb3@2 eb3@2 eb3 eb3@2 eb3 eb3@2 eb3@2 eb3 eb3@2 eb3 eb3@2 eb3@2 eb3@6 bb2@2 eb3@2 eb4 eb3, ~@4 g4@8 g4@8 g4 ~@9 g4@2]/4",
  C: "[bb4!2 [eb3,g4] [f3,g4] f4 ~ g4 g3 g3!2 [bb3,g4] [g3,g4] c4 ~ ab4 ab3 ab3@2 [eb4,ab4] ab3 ~ c4 ab4 eb4, eb4 ~ g3 ~@3 ab3 ~@3 ab3 ~, ~@5 f4@2 d4@2 ~@4 eb4@2 c4@3 ~ c4@2 ~@3]/3", // Eb Fsus2 Eb G Ab5
  D: "ab3@2 ab4 ab3 ~ eb4!2 eb3, ~@2 eb3 g4",
  E: "[bb4!2 [eb4,g4] [eb3,g4] f4 ~ g4 g3 g3!2 [bb3,g4] [g3,g4] c4 ~ ab4 ab3 ab3@2 [eb4,ab4] ab3 ~ c4 ab4 eb4, eb3 ~ g3 ~@3 ab3 ~@3 ab3 ~, ~@5 f4@2 d4@2 ~@4 eb4@2 c4@3 ~ c4@2 ~@3]/3", // Eb G Ab5
  F: "ab3@2 ab4 ab3 g4 bb3 eb4 [g3,bb4], ~@2 eb3 ~", G: "c5 eb4!2 [g3,d5] c5 d4 [f4,g4] [eb4,bb4], eb3 ~ g3 ~",
  H: "[g4 bb3 [eb4,g4] eb4 ~@2 ab4 eb4 ~@2 ab4 eb4 ~ bb3 [ab3,ab4] ~@3 ab4 eb4 [bb2,ab4]@2 [bb2,ab4]@2, g3@2 ~ bb4@2 c4@2 bb3@2 f4@4 ~@2 eb4@2 bb3@3 ~@4, ~@2 ab3 ~ ab3 ~ ab3 ~ ab3 ~@3]/3", // Eb Ab Bb7
  I: "[bb2,ab4]@2 [bb2,ab4] [bb2,g4] ab4 g4 [bb2,ab4] [bb2,g4], ~@2 bb2 ~", // Bb7 Eb Bb7 Eb
  J: "[bb2,ab4]@2 [bb2,ab4] [bb2,g4] ab4 g4 bb2!2, ~@2 bb2 ab4", // Bb7 Eb
  K: "[ab4 g4 [bb2,ab4] [bb2,g4] bb2@2 ~ ab4 gb5 f5 eb5 ab4 [eb3,f5]@2 eb3 bb3 ~@2 eb4 bb3 ~ g4 [eb3,bb4] [bb3,eb5], bb2@2 ~@2 ab4@3 ~@7 bb4@3 g4@4 ~@3, ~@3 bb2@2 bb2 ~@2 eb4 ~ eb3 ~]/3", // Bb7 Eb Ebsus2 Eb5
  L: "[gb5 f5 [eb4,eb5] [bb3,eb5] c5@2 ~@2 c5@2 ~ eb4 ~ ab4 c5 eb5 gb5 f5 [ab3,eb5]!2 f5@2 ~ bb2 ~@2 bb2 bb3 g5@2 ab4 [ab3,eb5], eb4@2 ~@2 ab3@3 ab3@3 ~@2 ab3@3 ab3@3 ~@2 [bb2,bb3]@3 ~ bb3@2 ~@2 ab3@3 ~, ~@6 c5@2 ~@2 ab4@3 ~@9 f5@3 ab4@3 ~@4]/4", // Eb Eb5 Ab5 Bb
  M: "[gb5 f5 [ab3,eb5]!2 bb4@2 ~ eb3 ~@2 bb3 eb4 bb4@2 ~ eb3, ab3@2 ~@2 [eb3,eb4]@3 ~ eb4@2 ~@2 [eb3,eb4]@3 ~, ~@6 bb4@3 ab4@3 ~@2 g4@2]/2", // Ab5 Eb
  N: "gb5 f5 [eb3,eb5] [eb4,eb5] d5@2 ~ g3, eb4@2 ~@2 [g3,g4]@3 ~, ~@3 d5", // Eb G
  O: "g4@2 d4 g4!2 ~ eb5 [g3,eb5], f5@5 g4@2 ~, ~@4 g3@3 ~", // Cm
  P: "[gb5 f5 [g3,eb5] [g4,eb5] c5@2 ~ ab3 ab4 ~ ab3 ab4 [bb2,ab3]@2 ~ ab4 gb5 f5 [bb2,eb5] [bb3,gb5] f5@2 ~ g3, g4@2 ~@2 [ab3,ab4]@3 ~@7 [bb2,ab3]@4 ~@2 [g3,g4]@3 ~, ~@6 eb5@3 ab4@2 ~ f5@3 ~@7 bb4@2]/3", // Cm Bb7 Eb5 Ebm Ab Bb7 G
  Q: "[[g4,bb4]@2 [d4,g4] g4 ~ eb4 g4 g3 ~@2 d4 g4 ~ eb4!2 eb3, ~@4 g3@3 ~ g4@2 ~@4 g4@2, ~@4 g4@2 ~ bb4@2 eb4@3 eb3@2 ~@2]/2", // Gm G5
  R: "[f4!2 eb4 [eb3,eb4] d4 ~ g4 g3 g3!2 [bb3,g4] [g3,g4] c4 ~ ab4 ab3 ab3@2 [eb4,ab4] ab3 ~ c4 ab4 eb4, eb3@2 ~@2 g3@2 ~ bb3@2 ~@3 ab3@2 ~@6 ab3@2 ~@2, ~@5 d4@2 ~@6 eb4@2 c4@3 ~ c4@2 ~@3]/3", // Eb G Ab5
  S: "ab3@2 ab4 ab3 ~ gb4 eb4 eb3, ~@2 eb3 gb4",
  T: "[gb4!2 [eb4,gb4] [eb3,gb4] gb4 ~ g4 g3 ~ gb4 [g4,c5] [g3,c5] [ab3,ab4]@2 [ab3,c5] ab3 ~@2 ab3!2 ~@2 ab3 eb3 ~@2 ab3!2 [bb2,bb3]@2 [bb3,d4]@2, eb3 ~ g3 ~ g3 ~@3 ab3 ~ ab3 ~ ab3 ~@3, ~@5 gb4@2 gb4@2 ~@6 ab4@2 c5@2 ab4@2 ab4@4 ab4@3 ~@4]/4", // Ebm C5 Ab Bb
  U: "bb3@2 ~ bb2 ab4!2 [bb2,ab4] [bb2,g4], bb2@3 ~ bb2@2 ~@2, ~ bb3 ~@2", // Bb7 Eb
  V: "ab4 g4 [bb2,g4]!2 bb2@2 [bb2,ab3]@2, bb2 ~ ab4@2", W: "~@3 ab4 gb5 f5 eb5 ab4, ~@3 bb2",
  X: "[[eb3,f5]@2 eb3 bb3 ~@2 eb4 bb3 ~ g4 [eb3,bb4] [bb3,eb5] gb5 f5 [eb4,eb5] [bb3,eb5], ~@2 bb4@3 g4@4 ~@3 eb4@2 ~@2, ~@2 eb4 ~ eb3 ~@3]/2", // Ebsus2 Eb5 Eb Eb5
  Y: "[c5@2 ~@2 c5@2 ~ eb4 ~ ab4 c5 eb5 gb5 f5 [ab3,eb5]!2, ab3@3 ab3@3 ~@2 ab3@3 ab3@3 ~@2, ~@2 c5@2 ~@2 ab4@3 ~@7]/2", // Ab5
  Z: "f5@2 ~ bb2 ~@2 bb2 bb3, [bb2,bb3]@3 ~ bb3@2 ~@2, ~@2 f5@3 ab4@3", // Bb
  AA: "g5@2 ab4 [ab3,eb5] gb5 f5 [ab3,eb5]!2, ab3@3 ~ ab3@2 ~@2", // Ab5
  AB: "bb4@2 ~ eb3 ~@2 bb3 eb4, [eb3,eb4]@3 ~ eb4@2 ~@2, ~@2 bb4@3 ab4@3", // Eb
  AC: "bb4@2 ~ eb3 gb5 f5 [eb3,eb5] [eb4,eb5], [eb3,eb4]@3 ~@5, ~ g4 eb4 ~", // Eb
  AD: "[d5@2 ~ g3 g4@2 d4 g4 g4 ~ eb5 [g3,eb5] gb5 f5 [g3,eb5] [g4,eb5], [g3,g4]@3 ~@5 g3@3 ~@5, ~@2 d5@2 f5@5 g4@2 ~ g4@2 ~@2]/2", // Cm G
  AE: "c5@2 ~ ab3 ab4 ~ ab3 ab4, [ab3,ab4]@3 ~@5, ~@2 eb5@3 ab4@2 ~", // Ab
  AF: "[bb2,ab3]@2 ~ ab4 gb5 f5 [bb2,eb5] [bb3,gb5], f5@3 ~@5, ~ [bb2,ab3]@2 ~", // Bb7 Eb5 Ebm Bb7
  AG: "f5@2 ~ g3 [g4,bb4]@2 [d4,g4] g4, [g3,g4]@3 ~@5, ~ bb4 ~@2", // Gm G5 G
  AH: "~ eb4 g4 g3 ~@2 d4 g4, g3@3 ~ g4@2 ~@2, g4@2 ~ bb4@2 eb4@3",
  AI: "[eb5 ~@5 eb3 ab4 ab3@3 [ab3,bb4] ab4@2 eb3 [ab4,bb4], ab3@2 ab3@2 ab4@2 ~@6 g4@3 ~, ~ d5@2 c5@2 bb4@2 c5@4 ~@5]/2", // Absus2
  AJ: "eb3@3 eb3 eb4@2 bb2 eb3, g4", AK: "eb3@3 eb3 eb4@2 bb2 [eb3,d5]",
  AL: "[eb5 c5@2 ab3 ~@2 eb3 ab4 ~@2 c5 [ab3,eb5] [ab4,eb5]@2 eb3 ab4, ab3@3 eb5@2 c5@2 eb5@3 ~@4 f5@2, ~@4 ab4@2 ~@2 ab3@3 ~@5]/2", // Ab5
  AM: "f5 ~ bb3 f3 bb2@2 ab3 f3, bb2 ~@3, ~ g5@2 f5@2 ~@3", AN: "bb2@2 bb3 f3 bb2@2 ab3 f3, ~@3 bb4@4 ~",
  AO: "[g3 bb3 [bb3,eb4] [g3,bb3] bb3!2 [bb3,eb4] ~@2 bb3 [bb3,eb4] bb3 [eb3,bb3]@2 [bb3,eb4] bb3, eb3@2 ~@2 eb3@2 ~ bb3@2 ~@7, ~@4 eb3 ~@3]/2", // Eb5 Gm Eb5
  AP: "~ eb4!7, bb3 ~@3", AQ: "d4!8", AR: "ab3!8, c4@2 c4@3 ~@3", AS: "ab3!8, ~ c4@6 ~", AT: "eb4!8",
  AU: "d4!8, f4 ~@3", AV: "d4 ~@2 bb4 gb5 f5 eb5 ab4, ~@3 bb2",
  AW: "g4 ~ bb4 g3 g4@2 d4 g4, g3@3 ~@5, ~ g4@2 eb5@3 ~@2",
  AX: "[~ bb3!2 g3 bb3!2 [bb3,d4] g4 ~ bb3 ~ g3 [bb3,eb4]@2 [g3,bb3]@2, [g3,g4]@3 ~ g4@2 ~ bb3@2 ~ bb3@2 ~@4, ~@8 g3@3 ~@5]/2", // Bb Eb5 Gm G
  AY: "[g3 bb3!2 [g3,ab3] bb3!2 [eb3,bb3] ab3 ~ bb3 ~ ab3 [ab3,bb3]@2 ab3!2, ab3@3 ~ ab3@2 ~ bb3@2 ~ bb3@2 ~@2 bb3@2, ~@8 ab3@3 ~@5]/2", // Abmaj7 Eb5 Absus2
  AZ: "[g3,bb3] bb3!2 [bb2,g3] bb3!2 [f3,bb3] bb3, bb2@3 ~@5", // Gm Eb Bb5
  BA: "bb3!2 ~ bb2 bb3@2 [f3,bb3] bb3, bb2@3 ~@5, ~ bb3 ~@2", BB: "[eb3,eb4]@3 eb3 eb4@2 bb3 eb4, g3",
  BC: "g3@3 [g3,bb4] gb5 f5 [bb3,eb5] [eb4,ab4], ~@2 eb4 ~", // Gm Eb5 Ab5
  BD: "[f5@2 ~ eb3 ~@2 bb3 eb4 ~ g4 bb4 [g3,eb5] gb5 f5 eb5!2, [eb3,eb4]@3 ~ eb4@2 ~@2 g3@3 ~@3 g3@2, ~@2 bb4@3 g4@4 ~@3 eb4@2 ~@2]/2", // Cm Eb
  BE: "c5@2 ~ ab3 [ab3,c5]@2 eb3 ab3, ab3@3 ~@5, ~ c5 ~ ab4", // Ab
  BF: "bb3!2 ~ ab3 [bb3,ab4]@2 ab3 ab4, ab3@3 ~@5, ~ bb3 ~ bb3", BG: "[g3,eb4]/2",
})).s("gm_marimba").gain(0.3)

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

// drums · rim
const rim = s("rim").struct("<~ [x ~@2 x ~@4]!3 ~@110>").gain(0.3)

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

// drums · low tom
const low_tom = s("lt").struct("<~@20 A ~@39 B ~@7 C ~@7 C ~@3 D ~@2 B ~@13 B ~@7 E ~@5 F ~@2>".pickRestart({
  A: "~@2 x!2 ~@4", B: "~@3 x", C: "~@7 x", D: "~@10 x!2 ~@2 x!2", E: "~@14 x!2", F: "~@11 x!3 ~@2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<~@4 A B@3 C B@3 C B@3 C B@2 D ~@14 E B@3 C B@3 C B@2 D ~@68>".pickRestart({
  A: "~@2 x ~ x!4", B: "x!8", C: "x ~@2 x!5", D: "x!5 ~@3", E: "~@2 x ~@2 x!3",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@20 A ~@13 B ~@25 C ~@7 D ~ E ~ E ~ E ~ F ~@20 C ~@7 G ~@5 H ~@2>".pickRestart({
  A: "~ x ~@2", B: "~@5 x ~@10", C: "~@5 x ~@2", D: "~@3 x", E: "~ x", F: "~@4 x!2 ~@2", G: "~@10 x!2 ~@4",
  H: "~@9 x ~@6",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~@5 A ~@7 A ~@12 B ~@5 B ~@6 C ~@4 B ~@3 B ~ B ~ B ~ B ~ B ~@6 B ~@5 B ~@6 C ~@8 B ~@5 B ~
>`.pickRestart({
  A: "~ x", B: "x", C: "~@7 x",
})).gain(0.4)

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

stack(glockenspiel, xylophone, xylophone_2, marimba, kick, rim, snare, low_tom, hihat, mid_tom, crash, ride)