Strudelify
Total Eclipse of My Heart cover art

1983 · Faster Than the Speed of Night

Total Eclipse of My Heart

Bonnie Tyler

KeyA♭ majorTempo65 bpm
0:00/0:00
// Total Eclipse of My Heart — Bonnie Tyler
// 65 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 3 "#PIPE ORG1" Pipe Org 1 -> church organ
// note: Full arrangement: all 74 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 2"
const piano = note(`<
  A B C D E F G H@2 I J@8 K@3 L M N@2 O P Q@2 R S T U V W X Y@2 ~@7 Z@4 AA@7 AB AC@3 AD@8 AE@5 ~
>`.pickRestart({
  A: "~@21 f4@6 db5@6 ~@6 c5@7 ~@2, ~@5 bb3@7 ~@4", B: "~@3 bb4@7 ~@18 db5@6 ~@6 c5@7 ~, ~@5 bb3@7 ~@4",
  C: "~@5 bb4@7 ~@11 f4@6 db5@6 ~@6 c5@7, ~@17 bb3@21 ~@10", D: "~@5 bb4@7 ~@18 c5@6 ~@6 bb4@6, ~@17 ab3@21 ~@10",
  E: "~@6 ab4@7 ~@11 f4@6 db5@6 ~@6 c5@6, ~@6 bb3@7 ~@3", F: "~@6 bb4@7 ~@12 eb4@6 c5@6 ~@6 bb4@5, ~@6 ab3@7 ~@3",
  G: "~@7 ab4@7 ~@12 ab4@6 f5@6 ~@6 eb5@4, ~@20 db4@21 ~@7",
  H: "[~@8 db5@7 ~@18 eb5@6 ~@6 db5@7 ~@5 b4@7 ~@11 ab4@6 f5@6 ~@6 eb5@3, ~@20 b3@21 ~@28 db4@21 ~@6]/2",
  I: "~@9 db5@7 ~@12 gb4@6 eb5@6 ~@6 db5@2, ~@7 b3@7 ~@2",
  J: "[~@10 b4@7 ~@5 [ab4,e5]@6 e4@6 [b4,ab5]@8 ~@4 [b4,ab5]@7 ~@6 [a4,b4,e5]@11 ~ [a4,e5]@11 ~@9 db3@3 ~ e4@8 [b4,e5,ab5]@3 e4@12 [e4,a4,b4,ab5]@10 ~@2 [e4,a4,b4]@11 ~@3 [e4,a4]@3 [e4,a4]@2 ~@4 [a3,b3,e4]@6 [gb3,a3,b3,gb4]@6 ~ ab2@8 [ab3,c5,ab5]@2 ~ [ab4,eb5]@5 ~ [eb4,c5]@5 ~@6 [ab4,ab5]@3 [bb4,bb5]@6 ~@3 g5@6 db3@5 ~@6 ab3@6 [db2,db3,db4,f4,ab4]@6 [g4,g5]@6 [ab4,ab5]@2 ~@4 [eb3,g3,bb3]@5 [g2,g3,g4]@3 ~@9 c3@2 ~ [c3,eb3]@2 ~@3 ab4@3 ~ ab5@6 [g4,g5]@5 [ab4,ab5]@3 ~@3 c3@5 ~ [c2,c3,g5]@5 ~ db3@5 f3@2 ~ ab3@2 ~ db3@5 ~ [db3,ab4,ab5]@6 [g4,g5]@6 [ab4,ab5]@2 ~@4 g3@5 [g2,g3]@3 [g4,g5]@2 ~ [g4,g5]@3 ~@3 c3@2 ~ eb3@2 ~ ab3@5 ~ [ab2,ab3,ab4,ab5]@6 [c5,ab5,c6]@2 ~ c6@2 ~ bb4@2 ~, ~@22 e3@24 a3@42 b2@3 ~@3 e3@23 ~ e3@23 e3@23 ~ [eb3,ab3,c4,eb4,ab4]@9 ~@3 [ab2,eb3,ab3]@10 ~ f3@15 ~@9 [ab3,db4,f4,ab4]@8 [db4,f4,ab4]@9 ~@15 [bb4,bb5]@7 ~@4 [g4,g5]@5 ~ [ab4,ab5]@7 ~@8 ab4@3 ~@11 [bb4,bb5]@8 g4@6 [ab4,ab5]@10 ~@23 [bb4,bb5]@9 ~@8 [ab4,ab5]@15 ~@8 ab5@6 ~, ~@46 e4@36 ~@6 [db4,e4,b4]@6 ab4@12 ~@76 ab4@6 [g4,g5]@4 ~@25 db3@6 ~@12 eb3@12 ~@23 [c3,eb3,ab3]@11 ~@35 [f3,ab3,db4]@12 ~@12 [eb3,bb3]@10 ~@13 [c3,eb3,c4]@11 ~@3 c5@3 bb5@2 ~@2, ~@70 b4@11 ~@8 a4@6 b4@6 ~@46 b4@6 ~@36 f2@15 ~ [f2,f3,g4]@6 ~ db2@17 ~@6 eb2@16 ~@7 [ab2,ab3]@9 ~@15 [f2,f3]@17 ~@6 db2@12 ~@11 [eb2,eb3]@12 ~@11 [ab2,ab3]@12 ~@12 [f2,f3]@9]/8", // Dbm E Asus2 A5 E Esus4 A5 Asus2 …
  K: "[~@5 ab5@2 ~ [g4,g5]@3 [f4,f5]@3 f4@3 ~@6 [ab3,f5]@3 [db3,ab5]@5 [db2,db3,ab4,ab5]@6 ~@6 [ab4,ab5]@2 ~@10 db5@5 ~@3 db3@3 [ab2,db3,ab3]@3 [ab2,db3,ab3]@3 [ab2,db3,ab3]@3 [ab2,db3,ab3]@2 ~ [ab2,db3]@2 [ab2,db3,ab3]@2 ~@4 [bb2,eb3]@3 [bb2,eb3,bb3,bb5,eb6,g6]@3 [bb2,eb3,bb3]@3 [bb2,eb3,bb3]@3 [bb2,eb3,bb3]@2 [bb2,eb3,bb3]@3 ~ [g4,g5]@2 ~@3 ab3@3 [c3,ab3,c4]@3 [c3,ab3,c4]@3 [c3,ab3,c4]@2 ~ ab3@2 ~@3 [c3,ab3,c4]@2 ~@4 [d3,bb3]@3 [d3,bb3,d4,bb4,c5,bb5]@3 [d3,bb3,d4]@3 [d3,bb3,d4]@3, [ab4,ab5]@5 ab4@6 ~@26 [g4,g5]@6 ~@3 [bb4,bb5]@14 [ab4,db5]@5 ~ [ab4,db5,ab5]@5 ~ ab5@5 ~ [ab4,db5,ab5]@6 bb5@5 ~@6 [bb5,eb6,g6]@6 ~@6 ab4@4 ~ [ab4,c5,ab5]@5 ~ [bb4,d5,bb5]@5 ~@6 bb4@6 ~@3 [bb4,d5,bb5]@6, ~@2 f3@12 ~@6 f3@5 ~ [f3,ab3,db5]@10 ~@2 eb3@10 ~ [eb3,bb3,eb4]@11 ~ ab5@5 ~@6 [db6,f6]@8 ~@3 [bb2,eb3,bb3]@3 ~@17 [bb2,eb3,bb3]@2 ~@15 [c3,c4]@3 [c3,ab3,c4]@2 ~@4 [d3,bb3,d4]@3 ~@12, ~@2 [c3,ab3]@6 [c2,c3]@6 [db2,db3,ab4,db5]@11 ~@12 eb2@10 ~@30 ab3@2 ~@4 [bb4,eb5]@6 ~@17 [c5,ab5]@4 ~@14 [c5,ab5,c6]@6 bb5@5 ~@9]/3", // G F Db Db5 Ab Db5 Eb5 Eb …
  L: "[d3,bb3,d4]@2 [d3,bb3,d4]@3 [d3,bb3,d4]@2 ~ [bb2,bb3,bb4,bb5]@2 ~ [bb2,bb3,f4,bb4,c5,d5,f5]@3 [c3,c4]@2 ~ d3@5 ~ [bb3,ab4,ab5]@2 [f2,f3,f4,f5]@6 [ab2,eb3,ab3]@3 eb3@3 [ab2,eb3,ab3,c4,c5]@3 [ab2,eb3,ab3,c4,c5]@2 ~ [c4,c5]@5, ~@16 [d4,bb4,bb5]@6 bb2@2 ~@7 [c4,c5]@5 ~@6 [ab2,eb3,ab3]@5 ~", // Gm Bb C Bb7 F Ab5 Ab C …
  M: "~ [c5,c6]@5 ~ [bb4,bb5]@5 [bb2,eb3,bb3]@3 [bb2,eb3,bb3,bb4]@2 ~@3 [bb2,eb3,bb3]@3 [bb2,eb3,bb3]@3 [bb2,eb3,bb3]@2 ~@4 f3@3 [c3,f3,c4]@2 ~ [c3,f3,c5,ab5,c6]@2 ~@3 [c3,ab3,c4]@3 [c3,ab3,c4]@2, [eb3,ab3,c4]@5 ~ [bb2,eb3,bb3]@5 ~@6 [bb2,eb3,bb3]@3 ~@17 ab3@3 [c3,f3,ab3]@3 ~@5, ~@18 bb4@5 ~@6 [c5,ab5,c6]@6 ~@6 [ab5,c6,ab6]@6 ~", // C Bb Eb5 F5 Fm Ab Eb5 Fm …
  N: "[~ [c3,ab3,c4]@3 [bb1,f2,bb2]@3 [bb1,f2]@3 [bb1,f2,bb2]@2 ~ [f2,c4,c5]@2 ~@3 [bb1,f2,bb2]@3 [bb1,f2,bb2,d5]@3 [bb1,f2,bb2,d5,ab5]@3 [bb1,f2,bb2,bb4,d5,ab5]@2 ~ [bb1,f2,bb4,d5,ab5]@3 [bb1,f2,bb2,bb4,d5,ab5]@2 ~ [bb4,d5,ab5]@2 ~ ab5@2 [bb1,f2,bb2,bb4,d5,ab5]@3 [bb1,f2,bb2,bb4,d5,ab5]@3 [bb1,f2,bb2,bb4,d5,ab5]@2 ~ [ab3,c4,ab4,c5,eb5,ab5]@11 ~ [ab2,eb3,ab3]@5 [eb5,ab5,c6]@3 ~@6 [eb5,ab5,c6]@2 ~ [eb5,g5,bb5]@4 ~@2 [c5,eb5,ab5,c6]@5 [eb3,ab3,c4]@5 ~, ~@4 [bb3,bb4]@6 ~@2 [bb1,bb2]@3 d5@5 ~@41 [eb5,ab5,c6]@6 ~@3 [eb5,ab5,c6]@5 ~@21, ~@15 [bb1,f2,bb2]@3 ~@11 bb2@3 ~@3 [bb1,f2,bb2]@3 [bb1,f2,bb2,bb4,d5]@3 ~@55, ~@16 d4@5 ~@28 [eb3,eb4]@12 ~@6 [ab2,eb3,ab3]@5 ~ [bb2,eb3,bb3]@6 ~@5 [eb3,ab3,c4]@6 ~@6]/2", // Fm Bb5 F5 Bb5 Bb Bb7 Ab Ab5 …
  O: "[f3,ab3]@6 ~ db3@2 [db3,ab3]@2 ~ [db3,f3,ab3,db4,db5,f5,ab5,db6]@6 ~@6 [eb3,c4]@5 ~ [eb3,bb3,c4,eb4,f4,g4,bb4]@6 [eb2,bb2,eb3,bb3,eb4,f4,ab4]@6 [eb2,bb3,eb4,g4,bb4]@6, [db4,db5,f5,ab5,db6]@12 ~@9 [eb4,ab4,c5]@7 ~@20, ~@6 f3@2 ~ f3 ~@8 db3@6 ~@24", // Fm Db5 Db Cm Cm7 Ebsus4 Eb Db …
  P: "[bb3,eb4,ab4,bb4]@11 ~ [bb3,eb4,ab4,bb4]@10 ~@2 [eb4,ab4,c5,eb5]@10 ~@2 [eb4,c5,eb5]@5 ~ [eb4,ab4,c5,eb5]@6, ab1@35 bb4@6 ~@7, ab2@24 [f2,f3]@23 ~", // Ebsus4 Ab Cm Ab F
  Q: "[~ c3@9 ~@2 [e3,e4,g4,bb4,c5]@9 ~@3 [db4,f4,ab4,db5]@9 ~@3 [db4,f4,ab4,db5]@10 ~@2 [db4,f4,ab4,db5]@9 [db3,ab3]@3 db3@3 ab3@3 ~@3 ab3@3 [bb3,db4,f4,ab4]@10 ~@11 bb3@3, [e4,g4,bb4,c5]@9 ~@15 [db2,db3]@34 ~@2 [db2,db4,f4,ab4]@5 ~ [c2,c3,c4,eb4,g4,ab4]@6 bb1@24, ~@12 bb2@3 bb2, ~@84 [bb3,db4,f4,ab4]@11 ~]/2", // C7 Db Db5 Bbm7 C7 Db Abmaj7 Bbm7
  R: "~@18 [db4,eb4,g4,bb4]@6 ~ [c4,eb4,ab4]@11 [c4,eb4,ab4]@6 eb3@6, eb2@22 ~@3 ab2@23, eb3@9 ~ eb3@14 ~@24, ~ bb3@23 ~@18 ab3@3 ~@3, ~ [db4,eb4,g4]@17 ~@30", // Eb7 Ab Eb7
  S: "[g4,eb5]@5 ~ [ab4,eb5]@2 ~ [bb4,eb5]@5 ~@4 f3@5 ~ [db3,ab3,ab4]@12 ab3@3 ~@3 db3@3 ~@3, ~@15 [g4,eb5]@7 ~@17 [db4,f4,ab4]@9", // Cm Ab5 Eb5 Db5 Cm Db
  T: "~@6 [eb4,ab4]@3 eb4@3 ~@3 ab4@3 ab3 ~@2 ab3@3 ~ ab3@4 ~@7 [c4,eb4,c5]@6 ab4@6, [eb4,g4]@5 ~@4 bb4@5 ~ eb4 ~@8 [eb4,c5]@10 ~@14, [db3,db4]@3 ~@15 [eb3,eb4,g4]@6 ab2@23 ~, ~ eb3@11 [g3,db4]@7 ~ bb3@2 ~@26", // Ab5 Cm Eb Cm Db Eb Gdim
  U: "~ [ab4,c5]@8 c5@3 [eb4,bb4]@5 ~ [eb4,ab4]@6 [c4,e4,g4,bb4]@7 ~@5 [e3,e4,g4,bb4,c5]@7 ~@2 c3@3, [f2,eb4]@5 ~@7 c3@6 ~@6, ~ c4@6 ~@41", // Ab Eb5 Ab5 C7 F7
  V: "~ db2@8 ab3@3 [db4,f4,ab4]@3 [db3,ab3]@3 ~@3 c3@3 [ab3,db4,f4,ab4]@10 ~@8 bb2@4 ~@2, [ab3,db4,f4,ab4] ~ db2@2 ~@4, ~@9 [c4,eb4,g4,ab4]@2 ~@7 [ab3,db4,f4,ab4]@5 ~, ~@19 c2@5 bb1@23 ~", // Db Db5 Db Abmaj7 Db
  W: "[e4,g4]@12 ~@6 [bb4,db5,e5,g5]@5 ~ [ab2,ab3,eb4,ab4,c5]@11 ~@7 [ab4,c5,ab5]@5 ~, eb3@23 ~@13 ab3@11 ~, db4@3 ~@5, bb4@7 ~@41", // Em Bbdim Ab
  X: "~@2 [ab4,ab5] [bb4,bb5] ~@2 c4 ~ [ab4,db5,f5,ab5]@3 ~ db4@2 ~ [eb4,bb4], f3@23 ~ db3@17 ~@7, [g4,bb4,g5]@6 ~@6 f4@11 ~@25, ~@3 c4@12 [g4,g5]@6 ~@12 ab4@10 ~@5", // Ab Bb Db Eb5 Gm G
  Y: "[[eb5,g5]@5 ~ ab5@2 ~ [eb5,bb5]@5 ~ [ab4,eb5,ab5]@3 [bb3,g5]@5 ~ [eb5,ab5]@6 db6@5 ~ c6@5 ~ [c5,ab5]@6 [ab4,eb5]@6 [eb4,c5]@6 [eb3,ab3,db4,eb4,ab4,bb4]@5 ~ [c3,ab3,c4,eb4,ab4]@6 ~@24, bb4@3 ~@6 bb4@3 ~@11 ab2@37 ~@36, ~@23 c5@7 ~@66, ~@2 ab3@3 ~@3]/2", // Eb Eb5 Ab5 Eb Ab5 Fm Ab5 Cm …
  Z: "[~@18 [ab4,e5]@6 e4@6 [b4,ab5]@8 ~@4 [b4,ab5]@7 ~@5 [a4,b4,e5]@11 ~ [a4,b4,e5]@8 [db4,e4,a4,b4]@3 [db4,e4,a4,b4]@6 ~@3 db3@3 ~ b4@5 ~@3 [b4,e5,ab5]@3 ~@6 e2@2 e3@3 ~ [a4,b4,ab5]@9 [e4,a4,db5]@3 [e4,a4,b4]@11 ~@3 [e4,a4]@3 [e4,a4]@2 ~@4 [a3,b3,e4]@6 e4@2 ~ gb4@3 [ab2,ab3,ab4,eb5,ab5]@3 [ab2,ab3,ab4,eb5,ab5]@3 [ab4,eb5,ab5]@3 [ab4,eb5,ab5]@3 [ab3,ab4,eb5,ab5]@3 [c-1,ab3,ab4,eb5,ab5]@3 [ab2,ab3,ab4,ab5]@2 ~ eb5 ~@7 [ab4,ab5]@3, ~@18 e3@23 ~ a3@41 b2@3 ~@3 e2@17 ~@60 [ab2,ab3] ~@2 [ab2,ab3] ~@2 ab2 ~@7 [ab2,ab3,ab4,ab5]@3 ~ f2@8, ~@42 e4@32 ~@9 [e4,b4]@6 ab4@12 ~@41 b4@6 ~@30 eb5 ~@4 [g4,g5]@4 ~@5, ~@84 [db4,a4]@6 e4@11 e4@12 ~@41 [gb3,a3,b3]@6 ~@23 f3@9, ~@95 e3@14 ~@4 e3@23 e3@23 ~@33]/4", // Dbm E Asus2 A E A Esus4 A5 …
  AA: "[[bb4,bb5]@6 ~@3 g5@6 db3@5 ~@6 ab3@6 [db2,db3,db4,f4,ab4]@6 [g4,g5]@6 [ab4,ab5]@2 ~@4 [eb3,g3,bb3]@5 [g2,g3,g4]@3 ~@9 c3@2 ~ [c3,eb3,ab4,eb5]@3 ~@3 ab4@3 ab5@6 [g4,g5]@5 [ab4,ab5]@3 ~@3 c3@5 ~ [c2,c3,g5]@5 ~ db3@5 f3@2 ~ ab3@3 db3@5 ~ [db3,ab4,ab5]@6 [g4,g5]@6 [ab4,ab5]@2 ~@4 g3@5 ~@3 [g4,g5]@2 ~ [g4,g5]@3 ~@3 c3@2 ~ eb3@2 ~ ab3@5 ~ [ab2,ab3,ab4,ab5]@6 [c5,ab5,c6]@2 ~ c6@2 ~ bb4@2 ~@6 ab5@2 ~ [g4,g5]@3 [f4,db5,ab5,db6]@3 ~@9 ab3@2 ~@4 ab3@2 [db2,db3,ab4,ab5]@6 ~@6 [ab4,ab5]@2 ~@10 db5@5 ~@3 db3@3 [ab2,db3,ab3]@3 [ab2,db3,ab3]@3 [ab2,db3,ab3]@3 [ab2,db3,ab3]@2 ~ [ab2,db3]@2 [ab2,db3,ab3]@2 ~@4 [bb2,eb3]@3 [bb2,eb3,bb3,bb5,eb6,g6]@3 [bb2,eb3,bb3]@3 [bb2,eb3,bb3]@3 [bb2,eb3,bb3]@2 [bb2,eb3,bb3]@3 ~ [g4,g5]@2 ~@3 ab3@3 [c3,ab3,c4]@3 [c3,ab3,c4]@3 [c3,ab3,c4]@3 [c3,ab3,c4]@2 ~@3 [c3,ab3,c4]@2 ~@4 [d3,bb3]@3 [d3,bb3,d4,bb4,c5,bb5]@3 [d3,bb3,d4]@3 [d3,bb3,d4]@3 [d3,bb3,d4]@2 [d3,bb3,d4]@3, ~@8 [f2,f3,g4]@6 ~ db2@17 ~@6 eb2@16 ~@7 [ab2,ab3]@9 ~@3 [c4,eb4]@6 ab4@3 ~@11 [bb4,bb5]@8 g4@6 [ab4,ab5]@10 ~@2 [f3,ab3,db4]@12 ~@12 [eb3,bb3]@10 ~@13 [c3,eb3,c4]@11 ~@3 c5@3 bb5@2 ~@4 f3@12 ~@6 f3@5 ~ f3@8 ~@4 eb3@10 ~ [eb3,bb3,eb4]@11 ~ ab5@5 ~@6 [db6,f6]@8 ~@3 [bb2,eb3,bb3]@3 ~@17 [bb2,eb3,bb3]@2 ~@18 [c3,ab3,c4]@2 ~@4 [d3,bb3,d4]@3 ~@17, ~@15 [ab3,db4,f4,ab4]@8 [db4,f4,ab4]@9 ~@15 [bb4,bb5]@7 ~@4 [g4,g5]@5 ~ [ab4,ab5]@6 ab5@6 ~@64 [bb4,bb5]@9 g3@4 ~@4 [ab4,ab5]@15 ~@8 ab5@6 ~ [ab4,ab5]@5 ab4@6 ~@6 [ab4,db5,f5,ab5]@6 [db5,f5,ab5,db6]@6 ~@8 [g4,g5]@6 ~@3 [bb4,bb5]@14 [ab4,db5]@5 ~ [ab4,db5,ab5]@5 ~ ab5@5 ~ [ab4,db5,ab5]@6 bb5@5 ~@6 [bb5,eb6,g6]@6 ~@6 ab4@4 ~ [ab4,c5,ab5]@5 ~ [bb4,d5,bb5]@5 ~@6 bb4@6 ~@3 [bb4,d5,bb5]@8 ~@3, ~@20 db3@6 ~@12 eb3@12 ~@23 [c3,eb3,ab3]@11 ~ [f2,f3]@17 ~@6 db2@12 ~@11 [eb2,eb3]@12 ~@5 g2@4 ~@2 [ab2,ab3]@12 ~@12 [f2,f3]@11 [c3,ab3]@6 [c2,c3]@6 [db2,db3]@10 ~@2 db3@5 ~@6 eb2@10 ~@30 ab3@2 ~@4 [bb4,eb5]@6 ~@17 [c5,ab5]@4 ~@14 [c5,ab5,c6]@6 bb5@5 ~@14]/7", // Bb Db G Ab Eb G Ab G …
  AB: "[d3,bb3,d4]@2 ~ [bb2,bb3,bb4,bb5]@2 ~ [bb2,bb3,f4,bb4,c5,d5,f5]@3 [c3,c4]@2 ~ d3@5 ~ [bb3,ab4,ab5]@2 [f2,f3,f4,f5]@6 [ab2,eb3,ab3]@3 eb3@3 [ab2,eb3,ab3,c4,c5]@3 [ab2,eb3,ab3,c4,c5]@2 ~ [c4,c5]@5 ~ [c5,c6]@4, ~@11 [d4,bb4,bb5]@6 bb2@2 ~@7 [c4,c5]@5 ~@6 [ab2,eb3,ab3]@5 ~ [eb3,ab3,c4]@5", // Gm Bb C Bb7 F Ab5 Ab C …
  AC: "[~@2 [bb4,bb5]@5 [bb2,eb3,bb3]@3 [bb2,eb3,bb3,bb4]@2 ~@4 eb3@2 [bb2,eb3,bb3]@3 [bb2,eb3,bb3]@2 ~@4 f3@3 [c3,f3,c4]@2 ~ [c3,f3,c5,ab5,c6]@2 ~@3 [c3,ab3,c4]@3 [c3,ab3,c4]@2 ~ [c3,ab3,c4]@3 [bb1,f2,bb2]@3 [bb1,f2]@3 [bb1,f2,bb2]@2 ~ [f2,c4,c5]@2 ~@3 [bb1,f2,bb2]@3 [bb1,f2,bb2,d5]@3 [bb1,f2,bb2,d5,ab5]@3 [bb1,f2,bb2,bb4,d5,ab5]@3 [bb1,f2,bb2,bb4,d5,ab5]@3 [bb1,f2,bb2,bb4,d5,ab5]@2 ~ [bb4,d5,ab5]@2 ~ ab5@2 [bb1,f2,bb2,bb4,d5,ab5]@3 [bb1,f2,bb2,bb4,d5,ab5]@3 [bb1,f2,bb2,bb4,d5,ab5]@3 [bb1,bb2,bb3,bb4]@2 ~ [c3,c4,c5]@2 ~ [d3,d4,d5]@2 [eb2,eb3,eb4,eb5]@2 ~ [f2,f3,f4,f5]@2 ~ [g2,g3,g5]@2 ~ [ab2,ab4,ab5]@2 ~ bb2@2 ~ [ab2,eb3,ab3,c5,eb5,ab5,c6]@11 ~ ab3@5 [eb5,ab5,c6]@3 ~@6 [eb5,ab5,c6]@2, ~ [bb2,eb3,bb3]@5 ~@6 [bb2,eb3,bb3]@3 [bb2,bb3]@3 ~@14 ab3@3 [c3,f3,ab3]@3 ~@9 [bb3,bb4]@6 ~@2 [bb1,bb2]@3 [bb1,f2,bb2]@3 ~@17 [bb1,f2,bb2]@3 [bb1,f2,bb2,bb4,d5]@3 ~@11 c2@2 ~ d2@2 ~@27 [ab2,eb3,eb5,ab5,c6]@6 [ab2,eb3,ab3]@5 ~ [bb2,eb3,bb3]@5, ~@13 bb4@5 ~@6 [c5,ab5,c6]@6 ~@6 [ab5,c6,ab6]@6 ~@16 d5@5 ~@73 [eb5,ab5,c6]@5 ~@3, ~@59 d4@5 ~@43 g4 ~ ab3@2 ~ [bb3,bb4,bb5]@3 ~@29]/3", // Bb Eb5 F5 Fm Bb5 F5 Bb5 Bb …
  AD: "[~ [eb5,g5,bb5]@4 ~@2 [eb5,ab5,c6]@5 [eb3,ab3,c4]@5 ~ [f3,ab3]@6 [db3,f3]@2 ~ [db3,ab3]@2 ~ [db3,f3,ab3,db4,db5,f5,ab5,db6]@6 ~@5 [eb3,c4]@5 ~ [eb3,bb3,c4,eb4,f4,g4,bb4]@6 [eb2,bb2,eb3,bb3,eb4,f4,ab4]@6 ~ [bb3,bb4]@5 ~ [bb3,eb4,bb4]@11 ~@6 f3@6 [eb4,ab4,c5,eb5]@10 ~@2 [eb4,bb4,eb5]@6 [eb4,ab4,eb5]@6 [bb3,c4,e4,g4]@6 g3@5 ~ [bb3,c4,e4,g4]@4 ~@2 [bb3,c4,e4,g4,bb4]@5 ~ [db4,f4,ab4]@11 ~@7 ab3@5 ~ [db4,f4,ab4]@9 [db3,ab3]@3 [db4,f4,ab4]@5 ~ [c3,c4,eb4,g4,ab4]@6 ~@6 ab3@6 ~@6 bb2@6 ~ g4@9 [eb3,g4]@14 ~@6 ab3@6 ~ [eb4,ab4,c5]@5 eb3@6 [g4,eb5]@5 ~ ab4@2 ~ bb3@3 ~@3 [eb4,g4,bb4]@6 db3@3 ab3@12 ~@3 db4@2 ~ [ab3,db4,f4]@3 eb3@3 ~ [db4,e4,g4,bb4]@9 [e4,g4]@12 ~@14 [c4,eb4,c5]@6 ab4@6 [eb4,g4,bb4]@6 eb4@3 ~@10 c3@2 db3@3 ~ [db3,ab3,db4,f4]@6, ~@6 [eb3,ab3,c4,c5]@6 ~@6 [db4,db5,f5,ab5,db6]@9 f3 ~@8 db3@6 ~@17 [eb2,eb4,g4]@6 ab1@37 ~@107 eb2@22 ~@3 ab2@24 ~@47 db3@2 ~@22 ab2@23 ~ f2@24 ~@7, ~@39 [eb4,ab4,c5]@7 ~@19 ab2@24 [f2,f3]@23 ~ c3@24 db3@32 ~@4 db3@3 ~@9 bb2@18 ~@6 eb3@9 ~@51 f3@12 db3@3 ~@9 ab3@5 ~@8 eb3@22 ~@2 ab3@17 ~@18 f3@12 ~@7, ~@65 ab4@11 ~ [bb3,eb4,ab4,bb4]@10 ~@50 ab3@6 ~@6 [db4,f4,ab4]@11 ~@25 [bb3,db4,f4,ab4]@10 ~@2 [bb3,db4,f4,ab4]@11 ~@2 [bb3,db4]@23 ~@48 [db4,f4]@17 ~@31 [eb4,c5]@10 ~@24 [eb4,f4,bb4]@9 [eb4,g4]@6 ~@6, ~@210 e4@17 ~@6 [eb4,ab4,c5]@7 ~@26 [f4,bb4,eb5]@6 ~@112]/8", // Eb Ab Fm Db Db5 Db Cm Cm7 …
  AE: "[~@5 db3@6 [ab3,db4,f4]@6 [db4,e4,g4,bb4]@7 ~@9 ab3@3 bb3@4 ~@14 [ab4,c5,ab5]@10 ~@2 [eb4,g5]@5 [ab4,ab5]@3 ~@9 c4@3 db4@3 f5@12 ~@6 f4@3 ~@18 c5@9 [eb4,c5]@12 ~@3 g5@8 ~ ab5@15 ~@2 c4@4 ~@18 eb5@8 ~ [bb3,g4,db5]@9 [eb4,c5]@8 ~@14, ~@17 eb3@24 [eb4,c5]@10 ~@14 f4@12 ~ f4@11 db3@21 eb4@13 ~@2 eb4@12 ~@57 g4@9 ~@37, ~@27 [g3,db4,e4,g4,bb4]@14 ab2@23 ~@11 [c5,bb5]@6 ~@23 eb5@9 db5@14 ~@34 c5@6 ~@9 g5@8 ~@56, ~@42 ab3@17 ~@6 [g4,c5,eb5]@6 ~@3 eb5@6 [g4,g5]@8 ~ ab4@9 ~@3 db4@11 ~@10 g4@15 ~@48 [ab4,f5]@15 ~@40, ~@107 ab3@6 eb3@24 [ab2,eb3,ab3]@24 f3@24 ~@12 db4@6 ~@37]/5", // Db Dbdim Ab Eb Ab Cm Gdim Cm …
})).s("gm_piano").gain(0.3)

// chords · piano · "A.PIANO 2" · soft notes
const piano_soft = note(`<
  A@5 B@6 C ~@7 D E F G H ~ I ~@3 J K L M N O P@2 ~@17 Q R S T U ~ V ~@3 W X Y Z AA AB@4 ~
>`.pickRestart({
  A: "[~@45 eb4@6 ~@6 db4@6 ~@7 f4@7 ~@17 eb4@7 ~@6 db4@6 ~@30 eb4@6 ~@6 db4@6 ~@6 eb4@7 ~@18 eb4@7 ~@5 eb4@5 ~@22 bb3@9, ~@33 f4@6 ~@43 f4@6 ~@43 f4@6 ~@43 eb4@6 ~@42 f4@6 ~@6, ~@36 bb3@27 ~@22 bb3@27 ~@22 bb3@27 ~@22 ab3@27 ~@30]/5",
  B: "[eb4@6 ~@6 db4@6 ~@31 eb4@6 ~@6 eb4@6 ~@31 ab4@6 ~@6 ab4@6 ~@6 gb4@7 ~@18 gb4@7 ~@5 eb4@5 ~@31 ab4@6 ~@6 ab4@6 ~@31 gb4@6 ~@6 gb4@6 ~@26, ~@37 eb4@6 ~@43 ab4@6 ~@43 gb4@6 ~@42 ab4@6 ~@43 gb4@6 ~@50, ~@40 ab3@27 ~@22 db4@27 ~@22 b3@27 ~@21 db4@27 ~@22 b3@27 ~@26]/6",
  C: "~@34 e4@5 ~@9", D: "~@13 [ab2,db3]@2 [ab2,ab3]@3 ~@20 bb3@3 ~@7, ~@6 ab3 ~@17",
  E: "~@11 ab3@2 [c3,c4]@3 ~@20 d4@3 ~@9, ~@10 [c3,c4]@3 ~@35", F: "~@34 [ab2,ab3]@3 ~@11",
  G: "~@12 bb4@3 ~@14 [c3,f3,ab3]@3 [c3,ab3]@3 [c5,ab5,c6]@3 ~@10", H: "~@7 bb2@3 bb4@3 ~@8 [bb4,ab5]@2 ~ bb4@2 ~@22",
  I: "~@24 bb3@5 ~@19", J: "~@6 bb2@2 ~@22 ab3@5 ~@10 ab3@3", K: "~@2 ab3@2 ~@2 ab3@2 ~@7 eb3, f3@3 ~@5, c4!2 ~@2",
  L: "~@12 eb3@6 ~ db4@5 [c4,ab4]@10 ~@2 ab4@6 ab3@6, ~@4 eb4 ~@11", M: "~@7 c4@5 ~@30 c4@3 ~@3, ~ f3@24 ~@23",
  N: "~@2 db3@2 ~@11 ab2", O: "eb2@23 ~@25, bb3@19 ~@29",
  P: "[~@18 ab4@3 db4@4 ~@5 ab3@9 db5@3 ~@6 eb3@9 ~@3 eb3@6 ~@5 ab4@8 ~@17, ~@14 ab3@4 ~@2 bb4 ~@11]/2",
  Q: "~@8 [ab2,db3]@2 [ab2,ab3]@3 ~@20 bb3@3 ~@12, ~@7 ab3@2 ~@39", // Db5 Ab
  R: "~@6 ab3@2 [c3,c4]@3 ~@20 d4@3 ~@14, ~@5 [c3,c4]@3 ~@40", S: "~@29 [ab2,ab3]@3 ~@16",
  T: "~@7 bb4@3 ~@14 [c3,f3,ab3]@3 [c3,ab3]@3 [c5,ab5,c6]@3 ~@15", U: "~@2 bb2@3 bb4@3 ~@8 [bb4,ab5]@2 ~ bb4@2 ~@27",
  V: "~@41 bb3@5 ~@2", W: "~@14 bb3@3 ~@6 bb2@2 ~@10 eb4@6 ~@7",
  X: "~@11 ab3@2 ~ ab3@3 ~@6 [ab3,f4,eb5]@2 ~@10 eb3 ~@12, ~@17 f3@12 ~@19", Y: "~@27 [db4,bb4]@9 ~@5 [c4,ab4]@7",
  Z: "~@5 ab4@6 ab3@6 ~@6 f3@5 ~ c4@11 ~@8, ~@23 ab4@3 ~@22", AA: "~@8 ab3@3 ~@3 db3@4 ~@23 [c4,ab4]@7",
  AB: "[~@11 ab3@6 ~@7 eb4@6 ~@17 f4@3 ab4@15 ~@6 g4@2 ~@10 bb3@3 ab3@3 ~@6 ab4@6 eb4@6 ~@3 eb4@3 ~@21 db4@3 ~@6 ab3@12 ~@3 db4@3 eb3@9 [f3,bb3]@7 ~@6 ab3@3 [ab2,eb3,eb4,ab4]@6, ~@17 f3@24 ~@66 c4@6 f4@8 ab4@15 ~@43 [eb4,c5]@6 ~@7, ~@119 c5@17 ~@56, ~@125 f4@12 ~@18 ab3@8 ~@17 bb3@7 ~@5, ~@131 db3@6 db3@24 ~@16 eb3@9 ~@6]/4", // Bb5 Ab5 Cm
})).s("gm_piano").gain(0.15)

// bass · acoustic bass · "ACOU BASS"
const bass = note("<~@10 A@8 B@4 C D@2 E F ~@2 G H I J K L M N@2 O@7 P@2 Q R@4 S T@3 U V@3 W@2 ~@12>".pickRestart({
  A: "[~@16 b3@3 ~@3 e3@17 ~ e3@5 ~ a3@41 ~ db4@3 ~@3 e3@17 ~ e3@5 ~ a3@41 e2@6 ab2@16 ~ ab2@5 ~ f2@17 ~@7 db2@17 db2@3 ~@3 eb2@17 g2@5 ~ ab2@16 ~@2 ab2@5 ~ f2@16 ~ c2@5 ~ db2@16 ~@7 eb2@16 ~ g2@5 ~@2 ab2@14 ~@3 ab2@5 ~ f2@9, ~@205 f2@17 ~@10 db2@4 ~@85 db2@17 ~@46, ~@117 d2 ~@74]/8",
  B: "[~@8 c2@5 ~ db2@14 ~@3 db2@5 ~@2 eb2@22 f2@2 ~ f2@3 f2@3 f2@3 f2@2 f2@3 ~ f2@2 f2@3 g2@3 g2@3 g2@2 ~ g2@2 ~ g2@3 g2@2 g2@3 g2@3 f2@3 f2@3 f2@3 f2@2 ~ f2@2 f2@3 eb2@3 db2@3 bb1@3 bb1@2 ~ bb1@3 bb1@2 ~ bb1@2 bb1@2 ~ bb1@2 ~ bb1@3 bb1@3 bb1@2 ~ c3@2 d3@5 ~@2 ab2@2 f2@4 ~@2 ab2@3 ab2@3 ab2@3 ab2@2 ab2@2 ~ ab2@3, ~@9 db2 ~@38, ~@37 d2@2 ~@135 g2@3 ~@15]/4",
  C: "ab2@3 ab2@3 g2@2 ~ g2@3 g2@2 ~ g2@2 g2@3 g2@3 g2@2 ~ g2@3 f2@3 f2@3 f2@2 f2@2 ~ f2@3 f2@3 eb2@2",
  D: "[~ db2@3 bb1@3 bb1@2 ~ bb1@2 bb1@2 ~ bb1@3 bb1@2 ~ bb1@2 ~ bb1@3 bb1@3 bb1@2 ~ bb1@2 bb1@2 ~ bb1@3 bb1@2 ~ bb1@2 ~ bb1@3 c2@6 c2@2 c2@2 ~ c3@5 ~ c2@4 ~@2 bb1@6 bb1@3 bb1@3 c2@5 ~ c2@5]/2",
  E: "db2@6 db2@3 db2@3 db2@5 ~ db2@5 ~ eb2@24", F: "ab1@15 ~", G: "~@18 eb4@3 ~@3 ab3@22 ~@2",
  H: "f3@22 ~@2 db3@16 ~@2 f3@5 ~", I: "eb3@9 ~@3 g3@9 ~@3 ab3@23 ~", J: "f3@22 ~@2 c3@21 ~@3",
  K: "db3@17 ~ c3@6 bb2@22 ~@2", L: "eb2@21 ~@3 ab2@22 ~@2", M: "f2@23 ~ db3@23 ~",
  N: "[eb3@9 ~@3 g3@10 ~@2 ab3@36 eb2@11 ~ bb1@16 ~@2 f1@5 ~, ~@11 gb3@2 ~@83]/2",
  O: "[bb1@15 f1 ~ bb1@6 ab1@14 ~@4 eb3@5 ~ ab3@11 ~ ab3@6 eb3@5 ~ bb1@13 ~@4 bb1@5 ~ bb1@15 f1@2 bb1@6 ~ ab1@13 ~@4 eb2@5 ~ ab2@10 ~@2 ab2@5 ~ eb2@6 db2@14 ~@4 ab1@5 ~ db2@9 ~@3 db2@11 b1@16 ~@2 gb1@5 ~ b1@11 ~ eb2@5 ~ gb2@6 db2@15 ~@2 ab1@5 ~ db2@12 ab3@6 db4@5 ~ b3@11 gb3@5 ~ gb3@5 ~@2 b3@5]/7",
  P: "[~@6 b3@5 ~ gb3@6 e2@6 e3@6 b2@11 ~ a1@12 e3@5 ~@7 ab3@5 a2@7 ~@2 db3@2 ~ db2@2 ~ eb2@2 ~ e2@7, ~@59 a1@18 ~@19]/2",
  Q: "~@5 e3@5 ~ b2@5 a1@12 a3@6 e3@6 a3@5 e3@3",
  R: "[e3@4 a3@6 e2@6 ab2@17 ~ ab2@5 f2@17 eb2@5 ~@2 db2@17 db2@3 ~@3 eb2@17 g2@5 ~ ab2@14 ~ ab2@2 ~ ab2@5 ~ f2@16 ~ eb2@5 ~ db2@16 ~@7 eb2@13, ~@83 db2@4 ~@85 db2@17 ~@3, ~@85 d2@2 ~@105]/4",
  S: "~@4 g2@5 ~@2 ab2@5 ~@3 ab2@2 ~ ab2@2 ~ ab2@2 ~ ab2@2 ~ ab2@2 ~ f2@14",
  T: "[~@3 eb2@5 ~ db2@14 ~@3 db2@5 ~ eb2@22 ~ f2@2 ~ f2@3 f2@3 f2@3 f2@3 f2@3 f2@2 f2@3 g2@3 g2@3 g2@2 ~ g2@2 ~ g2@3 g2@2 g2@3 g2@3 f2@3 f2@3 f2@3 f2@2 ~ f2@2 f2@3 f2@3 c2@3 bb1@3 bb1@2 ~ bb1@3 bb1@2 ~ bb1@3 bb1@2 bb1@2 ~]/3",
  U: "bb1@3 bb2@2 ~ c3@3 ~@6 c3@2 ab2@3 f2@3 g2@3 ab2@3 ab2@3 ab2@3 ab2@2 ab2@2 ~ ab2@3 ab2@3 ab2@2",
  V: "[~ g2@2 ~ g2@3 g2@2 ~ g2@2 g2@3 g2@3 g2@2 ~ g2@3 f2@3 f2@3 f2@2 f2@2 ~ f2@3 f2@3 f2@3 c2@3 bb1@2 ~ bb1@2 ~ bb1@2 bb1@2 ~ bb1@3 bb1@2 ~ bb1@2 ~ bb1@2 bb1@3 bb1@2 ~ bb1@2 ~ bb1@2 ~ bb1@2 ~ bb1@2 ~ bb1@2 ~ bb1@5 c3@2 ~ d3@2 ~ eb3@3 f3@3 g3@2 ~ ab3@2 bb3@3 ~ c2@2 ~ c2@2 c2@2 ~ c2@2 ~ c2@5 ~ c2@2 c2@3 bb1@2 ~ bb1@2 ~]/3",
  W: "[bb1@2 ~ bb1@2 ~ c2@5 ~ c2@2 ~ c2@3 db2@2 db2@2 ~ db2@2 ~ db2@2 ~ db2@5 ~ db2@5 ~ eb2@6 bb1@5 ~ eb2@6 ~@6 ab1@23 ~@8]/2",
})).s("gm_acoustic_bass").gain(0.55)

// bass · acoustic bass · "ACOU BASS" · soft notes
const bass_soft = note("<~@10 A B C D ~ E ~ F ~@3 G ~@7 H@2 I ~ J K ~ L ~@13 M ~ N ~@3 O ~@4 P ~@12>".pickRestart({
  A: "~@21 g3@2 ~@20 f3 ~ g3 ab3 ~, ~@9 bb3 ab3 ~@11 gb3 ~, ~@19 a3@2 ~@27",
  B: "~@45 a3 ~@2, ~@21 c4 bb3 ~, ~@43 b3@2 ~@3", C: "~@19 f3 ~ [g3,ab3] ~@26, ~@10 gb3 ~@13", D: "~@43 [gb2,g2] ~@4",
  E: "~@40 g2 gb2 ~@6", F: "~@37 g2 gb2 ~@9", G: "~@29 gb2 ~@18",
  H: "[~@23 b3 ~@23 g3 gb3 ~@47, ~@21 [db4,d4]@2 ~@73, ~@11 c4 ~@11 ab3@11 ~@14]/2", I: "~@23 gb3, ~@46 g3 ~",
  J: "~@23 b2 ~@24", K: "~@47 gb2, ~@23 g2", L: "~@4 e3 f3 ~@18", M: "~@35 g2 gb2 ~@11", N: "~@16 ab2@2 ~@14 g2 ~@15",
  O: "~@2 bb2 ~@9", P: "~@11 db2 c2@2 b1 bb1 ~ a1 ~@30, ~@5 d2 ~@18",
})).s("gm_acoustic_bass").gain(0.24)

// chords · church organ · "#PIPE ORG1"
const church_organ = note("<~@37 A@8 B@4 ~@9 C@4 ~@12>".pickRestart({
  A: "[~@24 bb3@6 c4@3 db4@30 c4@2 db4@6 eb4@12 db4@11 ~ c4@12 bb3@11 bb3@6 c4@3 db4@31 c4@2 db4@6 eb4@12 db4@11 c4@12 bb3@11 ~ db4@6 eb4@3 f4@30 eb4@2 f4@6 gb4@12 f4@11 ~ eb4@12 db4@11 ~ db4@6 eb4@3 f4@30 eb4@2 f4@5 gb4@12 ~ f4@11 eb4@6, ~@24 [bb1,bb2,f3]@47 [ab1,ab2,eb3]@47 [bb1,bb2,f3]@47 ~ [ab1,ab2,eb3]@47 [db2,db3,ab3]@47 [b1,b2,gb3]@47 [db2,ab3]@47 [b1,b2,gb3]@30, ~@308 db3@47 ~@29]/8", // Bb5 Ab5 Bb5 Ab5 Db5 B5 Db5 B5
  B: "[~@6 db4@12 e4@6 gb4@3 ab4@13 ~ ab4@12 e4@35 ~ e4@7 gb4@2 ab4@13 ~ ab4@12 ~ e4@35 ~@32, ~@18 [e1,e2,b2]@23 [a1,a2,e3]@47 [e1,b2]@25 ~@79, ~@89 e2@23 [a1,a2,e3]@48 ~@32]/4", // E5 A5 E5 A5
  C: "[~@22 [bb1,bb2]@2 ~ c2@2 [d2,d3]@3 [eb2,eb3]@3 [f2,f3]@3 [g2,g3]@3 [ab2,ab3]@3 [bb2,bb3]@5 [c3,c4]@3 [d3,d4]@3 [eb3,eb4]@3 [f3,f4]@3 [g3,g4]@2 ~ ab4@2 [bb3,bb4]@4 [c4,eb4,ab4,c5]@22 [bb3,eb4,f4,bb4]@12 [c4,eb4,ab4,c5]@11 ~ [f4,ab4,db5]@23 ab4@6 g4@5 ~@2 [f4,ab4]@5 ~ g4@5 [c4,eb4,ab4,c5]@24 ~@7, ~@24 c3@3 ~@34 ab3@3 ~@49 db4@23 ~ [bb3,eb4,eb5]@24 ~@31, ~@137 bb4@13 ~@5 bb4@6 ~@31]/4", // Bb D Eb F G Ab Bb C …
})).s("gm_church_organ").gain(0.36)

// drums · kick
const kick = s("bd").struct(`<
  ~@13 A B C D E F G H I J K L M N ~@2 O ~@6 P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO ~@12
>`.pickRestart({
  A: "~@21 x ~@16 x ~@5 x ~@3", B: "~@14 x ~@5 x ~@16 x ~@5 x ~@4", C: "~@2 x!2 ~@2 x!2",
  D: "~@11 x ~@5 x ~@16 x ~@5 x ~@7", E: "~@3 x ~ x ~@5 x ~ x ~@2", F: "~@8 x ~@5 x ~@16 x ~@5 x ~@10",
  G: "~@12 x ~@11 x ~@2 x ~ x ~@2 x ~@2 x ~@8 x ~@2 x",
  H: "~@2 x ~ x ~@2 x ~@2 x ~@11 x ~ x ~@2 x ~@2 x ~@2 x ~@8 x ~@2 x ~ x",
  I: "~@2 x ~@2 x ~@2 x ~@11 x ~@4 x ~@5 x ~@10 x ~@2 x ~@2",
  J: "x ~@2 x ~@2 x ~@8 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@10 x ~@2 x ~@2 x ~",
  K: "~ x ~@2 x ~@7 x ~@2 x ~@2 x ~@2 x ~@2 x ~@8 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x",
  L: "~@2 x ~@5 x ~ x ~@8 x ~@5 x ~@5 x ~@2 x ~@7 x ~@5", M: "x!4 ~@2 x ~ x ~@2 x!4 ~", N: "x", O: "~@25 x ~@22",
  P: "~ x", Q: "~@4 x ~@2 x", R: "x ~@16 x ~@5 x ~@17 x ~@5 x", S: "~@16 x ~@6 x ~@16 x ~@5 x ~",
  T: "~@8 x ~@2 x ~@8 x ~@3", U: "~@7 x ~@5 x ~ x", V: "~@7 x ~@2 x ~@11 x ~", W: "~@20 x ~@16 x ~@5 x ~@4",
  X: "~@13 x ~@5 x ~@17 x ~@5 x ~@4", Y: "~@3 x ~@2 x!2", Z: "~@11 x ~@6 x ~@16 x ~@5 x ~@6", AA: "~@11 x ~@5 x ~@30",
  AB: "~@16 x ~@22 x ~@8", AC: "~@9 x ~@5 x ~@16 x ~@5 x ~@9", AD: "~@7 x ~@5 x ~@17 x ~@5 x ~@10",
  AE: "~@6 x ~@5 x ~@16 x ~@5 x ~@12", AF: "~@4 x ~@5 x ~@5 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x!2 ~@13",
  AG: "~@3 x ~@5 x ~@16 x ~@5 x ~@15", AH: "~@7 x ~@11 x ~@2 x ~ x ~@2 x ~@2 x ~@8 x ~@2 x ~@2 x ~ x",
  AI: "~@2 x ~@2 x ~@11 x ~ x ~@2 x ~@2 x ~@2 x ~@8 x ~@2 x ~@2 x ~ x ~@2",
  AJ: "x ~@2 x ~@22 x ~@10 x ~@2 x ~@2 x ~@2 x ~",
  AK: "~ x ~@8 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@10 x ~@2 x ~@2 x ~@2 x ~@2 x", AL: "~@7 x ~@2 x ~@2 x ~@2 x ~@2 x ~@28",
  AM: "~@20 x ~@4 x ~@2 x ~@8 x ~@8 x ~", AN: "~ x ~@2 x ~@7 x ~@8 x ~@2 x ~@2 x ~@5 x ~@14", AO: "~@17 x ~@30",
})).gain(0.4)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@19 A B C D E ~@30 F G H I J ~@15>".pickRestart({
  A: "~@15 x ~@2 x ~@2 x ~@16 x ~@2 x ~@6", B: "~@13 x ~@2 x ~@2 x ~@16 x ~@2 x ~@8", C: "~@34 x ~@2 x ~@2 x ~@7",
  D: "~@9 x ~@2 x ~@19 x ~@2 x ~@2 x ~@9", E: "~@7 x ~@2 x ~@16 x ~@2 x ~@17",
  F: "~@10 x ~@2 x ~@2 x ~@16 x ~@2 x ~@11", G: "~@8 x ~@2 x ~@2 x ~@16 x ~@2 x ~@13", H: "~@29 x ~@2 x ~@2 x ~@12",
  I: "~@4 x ~@2 x ~@19 x ~@2 x ~@2 x ~@14", J: "~@2 x ~@2 x ~@16 x ~@25",
})).gain(0.24)

// drums · snare
const snare = s("sd").struct(`<
  ~@12 A B C D E F G H I J K L M N ~@11 O P Q R S T U V W X Y ~ Z AA AB AC AD AE AF AG AH AI AJ AK ~@13
>`.pickRestart({
  A: "~@15 x", B: "~@2 x!2 ~ x ~@5 x ~@4", C: "~@8 x ~@22 x ~@16", D: "~ x ~@3 x ~@2", E: "~@5 x ~@22 x ~@19",
  F: "~@4 x ~@22 x ~@20", G: "~@2 x ~@22 x ~@22", H: "~ x ~ x ~@3 x ~@16 x ~@22 x", I: "~@22 x ~@22 x ~@2",
  J: "~@43 x ~@4", K: "~@9 x ~@10 x ~@3", L: "~@15 x ~@22 x ~@2 x ~@2 x ~@2 x", M: "~@13 x ~@23 x ~@10", N: "~ x ~@2",
  O: "~@6 x!2 ~@4 x ~@3", P: "~@11 x ~@23 x ~@12", Q: "~@17 x ~@6", R: "~@5 x ~@11 x ~@6", S: "~@11 x ~@4",
  T: "~@9 x ~@22 x ~@15", U: "~@31 x ~@16", V: "~@7 x ~@23 x ~@16", W: "~@5 x ~@2", X: "~@6 x ~@22 x ~@18",
  Y: "~@5 x ~@23 x ~@18", Z: "~@3 x ~@22 x ~@21", AA: "~ x ~@23 x ~@22", AB: "x ~@22 x ~@23 x",
  AC: "~@22 x ~@2 x ~ x ~@3 x ~@13 x ~@2", AD: "~@5 x ~@5 x", AE: "~@19 x ~@22 x ~@5", AF: "~@17 x ~@22 x ~@7",
  AG: "~@6 x ~@16 x ~@14 x ~@9", AH: "~@13 x ~@21 x ~@12", AI: "~@10 x ~@28 x ~@5 x ~@2",
  AJ: "x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@13 x ~@11 x ~@4", AK: "~ x ~ x ~ x!3",
})).gain(0.48)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@21 A ~ B ~@13 C ~@14 D ~@5 E ~@15>".pickRestart({
  A: "~@22 x!2 ~ x ~@22", B: "~@27 x ~@2 x ~@2 x ~ x ~@12", C: "~@5 x ~@10", D: "~@16 x ~@2 x ~@28",
  E: "~@22 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@5 x ~@5",
})).gain(0.24)

// drums · clap
const clap = s("cp").struct(`<
  ~@49
  [~@3 x ~@22 x ~@21]
  [~@2 x ~@22 x ~@22]
  [x ~@22 x ~@23 x]
  [~@22 x ~@22 x ~@2]
  [~@21 x ~@22 x ~@3]
  ~@20
>`).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@13 A ~@5 B ~ C ~ D E F ~@11 G ~ H ~@8 I ~@3 J ~ K ~@3 L M ~@14>".pickRestart({
  A: "~@5 x ~@10", B: "~@7 x ~@40", C: "~@8 x ~@2 x ~@13 x ~@22", D: "~@30 x ~@4 x ~@2 x ~@2 x ~@2 x ~@2 x",
  E: "~ x ~@22", F: "~@8 x ~@3 x!3 ~", G: "~@6 x!2 ~@8", H: "~@11 x ~@5 x ~ x ~@28", I: "~@10 x ~@2 x ~@20 x ~ x ~@11",
  J: "~@19 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@14", K: "~ x!2 ~@21", L: "~@10 x ~ x ~ x!2",
  M: "x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@27",
})).gain(0.4)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@21 A ~ B ~@13 C ~@14 D ~@5 E ~@15>".pickRestart({
  A: "~@7 x ~@16", B: "~@9 x ~ x ~@4", C: "~@5 x ~@10", D: "~ x ~", E: "~@22 x ~@2 x ~@2 x ~@4 x ~@5 x ~@8",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~ B ~@3 C ~@13 D E F G H I J ~ K L ~@7 M ~@3 E N ~@12>".pickRestart({
  A: "~ x ~ x ~@44", B: "~@17 x ~@2 x ~@27", C: "~@6 x ~@4 x ~@4", D: "~@11 x ~@36", E: "~@47 x",
  F: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@28", G: "~@19 x ~@4", H: "~@4 x ~@2 x ~@16", I: "~@22 x ~@2 x ~@22",
  J: "x!3 ~ x!2 ~@10", K: "~@34 x ~@2 x ~@2 x ~@5 x ~", L: "~@19 x ~@2 x ~@5 x ~@19", M: "~@9 x ~@10 x ~@27",
  N: "~@8 x ~@2 x ~@36",
})).gain(0.56)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@40 A ~@2 B A ~@11 C ~@4 B ~@12>".pickRestart({
  A: "~@15 x", B: "~@5 x ~@42", C: "~@14 x ~@2 x ~@30",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@29 A B@6 C ~@26 D E F G H E H ~@4>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2", D: "~@41 x ~@6", E: "~@17 x ~@24 x ~@5", F: "~@18 x ~@22 x ~@6",
  G: "~@18 x ~@24 x ~@4", H: "~@3 x ~@3 x",
// … 85 more lines

More by Bonnie Tyler