Strudelify
Maniac cover art

1983 · High Life

Maniac

Michael Sembello

KeyE♭ minorTempo144 bpm
0:00/0:00
// Maniac — Michael Sembello
// 144 bpm, 4/4, key Eb minor. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 167 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(144/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 · epiano2 · "Accompaniment"
const epiano2 = note(`<
  ~@4 A B C@2 A B C@2 D E F G H I J K D E F G H I J K ~@8 D B L@2 D B M N O B P Q D B ~@4 D E F G H I J K D E F R S I J
  K ~@8 D B L@2 D B T N D B P Q D B ~@2 U V W X U V W X U V W X U V W X D Y F Z H I J AA D Y AB Z H I J AA ~@8 D B C@2 D
  B T N AC B P Q D B ~@2 D B L@2 D AD M AE D B L@2 D AD M AE ~
>`.pickRestart({
  A: "[c4,d4,e4,g4]", B: "[g4,a4,c5,d5]", C: "[[b4,d5]@3 a4 [e4,a4]@4, g4 ~@11 d5@20]/2", D: "[g4,b4,c5]",
  E: "db5@4 db5 gb5 db5 gb5, [g4,b4]", F: "[e4,d5], g4 ~@15", G: "eb5@2 eb5 gb5 eb5 gb5 eb5 gb5, [g4,b4]",
  H: "[gb4,d5], g4 ~@15", I: "[gb4,a4,d5]", J: "[g4,c5,d5]", K: "[e4,gb4,b4] [eb4,gb4,b4]",
  L: "[[g4,b4,d5]@3 a4 [e4,a4]@4, ~@3 d5@5]/2", M: "[g4,b4,d5]", N: "[d5,g5,b5]@3 [c5,e5,a5]@3 [b4,d5,g5]@2",
  O: "[g4,c5], b4 ~@3", P: "[g4,b4,d5]@12 [g4,b4] ~@3", Q: "[e4,a4,d5]",
  R: "eb5@2 eb5 gb5 eb5 gb5 eb5 gb5, b4, g4 ~@15", S: "[gb4,g4,d5]", T: "[b4,d5], g4 ~@15",
  U: "[b3,c4,g4]@2 ~ [b3,c4,g4]@2 [b3,c4,g4]@2 ~ [b3,c4,g4]@2 ~ [b3,c4,g4]@2 [b3,c4,g4]@2 ~", // Cmaj7
  V: "[b3,c4,gb4]@2 ~ [b3,c4,gb4]@2 [b3,c4,gb4]@2 ~ [b3,c4,gb4]@2 ~ [b3,c4,gb4]@2 [b3,c4,gb4]@2 ~", // B
  W: "[a3,b3,gb4]@2 ~ [a3,b3,gb4]@2 [a3,b3,gb4]@2 ~ [a3,b3,gb4]@2 ~ [a3,b3,gb4]@2 [a3,b3,gb4]@2 ~", // B7
  X: "[b3,d4,e4]@2 ~ [b3,d4,e4]@2 [b3,d4,e4]@2 ~ [b3,d4,e4]@2 ~ [b3,d4,e4]@2 [b3,d4,e4]@2 ~", Y: "[g4,b4,db5]",
  Z: "[g4,b4,eb5]", AA: "[gb4,b4,e5] [gb4,b4,eb5]", AB: "[e4,g4,d5]", AC: "[g4,c5], b4 ~@15", AD: "[a4,c5,d5]",
  AE: "[d5,g5,b5]@3 [c5,e5,a5]@3 [c5,d5,g5]@2", // G Am Csus2
})).s("gm_epiano2").gain(0.42).pan(0.4)

// chords · piano
const piano = note("<~@94 A B C D B@2 C D B@2 C D B@2 C D ~@57>".pickRestart({
  A: "c5@2 ~ [b4,c5]@2 [b4,c5]@2 ~ [b4,c5]@2 ~ [b4,c5]@2 [b4,c5]@2 ~", // Cmaj7
  B: "[b4,c5]@2 ~ [b4,c5]@2 [b4,c5]@2 ~ [b4,c5]@2 ~ [b4,c5]@2 [b4,c5]@2 ~", // Cmaj7
  C: "[a4,b4]@2 ~ [a4,b4]@2 [a4,b4]@2 ~ [a4,b4]@2 ~ [a4,b4]@2 [a4,b4]@2 ~", // Asus2
  D: "[b4,d5]@2 ~ [b4,d5]@2 [b4,d5]@2 ~ [b4,d5]@2 ~ [a4,d5]@2 [g4,d5]@2 ~", // Bm D5 G5
})).s("gm_piano").gain(0.6).pan(0.2)

// bass · synth bass 1
const bass = note(`<
  ~@4 A B C D E B C D F D@3 G H A I J D K D H A H L M@2 I N O A P Q A B D@2 R B D S A B D@2 A B M@4 T D K D U A@2 P K D
  J S H V A W X M P N A@2 N P A B D@2 A B Y C A B D@2 Z AA M@2 AB AC AD@2 AB AC AD@2 AB AC AD@2 AB AC AE@2 T AF J@2 AG
  A@2 P D@4 O AH AI AJ M@2 I P A@2 P@2 A B AK D AL B D S A B D@2 AL B M@2 A B D@2 A B D AM AL B D AM Z AA AK AN AO
>`.pickRestart({
  A: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", B: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  C: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2 e2 ~ e2 ~", D: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  E: "e2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", F: "e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2 ~ e2 ~ e2 ~",
  G: "c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2 ~", H: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2 ~",
  I: "b1 ~ b1 ~ b1 ~ b1@2 b1 ~ b1 ~ b1 ~ b1 ~", J: "e2 ~ e2 ~ e2 ~ e2@2 e2 ~ e2 ~ e2 ~ e2 ~",
  K: "e2 ~ e2@2 e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", L: "b1 ~ b1 ~ b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1 ~",
  M: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", N: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1@2 b1 ~ b1 ~",
  O: "c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~", P: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  Q: "b1 ~ b1@2 b1 ~ b1 ~ b1@2 b1 ~ b1 ~ b1 ~", R: "c2 ~ c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  S: "e2 ~ e2 ~ e2@2 e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", T: "e2 ~ e2 ~ e2 ~ e2@2 e2 ~ e2@2 e2 ~ e2 ~",
  U: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2@2", V: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2",
  W: "b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1 ~ b1 ~ b1 ~", X: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1 ~ a1 ~ a1 ~",
  Y: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2 e2 ~ e2@2", Z: "c2 ~ c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2 ~ c2 ~",
  AA: "d2 ~ d2 ~ d2 ~ d2 ~ d2@2 d2 ~ d2 ~ d2 ~", AB: "g1@5 ~@9 gb1@2", AC: "~@2 d2 ~ e2 ~ gb2 ~ g2 ~ a2 ~ b2 ~ a2 ~",
  AD: "[gb2@3 ~@11 e1@4 ~@2 e1@5 ~ gb1@5 ~]/2", AE: "[gb2@3 ~@11 e1@4 ~@2 e1@5 ~ gb1@4 ~@2]/2",
  AF: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2 e2 ~", AG: "c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  AH: "c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2 ~ c2@2 c2 ~", AI: "c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2@2 c2 ~",
  AJ: "b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1 ~ b1@2 b1 ~", AK: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2",
  AL: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 c2 ~", AM: "e2 ~ e2@2 e2 ~ e2 ~ e2 ~ e2@2 e2 ~ e2 ~",
  AN: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2 e2 ~@3", AO: "~@12 e1 ~@3",
})).s("gm_synth_bass_1").gain(0.51)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A B C D A B C D ~@16 E F G H I J I K A B C@2 A B C@2 A B C@2 A B C@4 ~@16 E F G H I J I K A B C@2 A B C@2 A B C@2
  A B C@2 ~@32 E F G H I J I K A B C@2 A B C@2 A B C@2 A B C@2 A L C D A B C D A L C M A B C D ~
>`.pickRestart({
  A: "g5 c5 gb5 c5 g5 c5 gb5 c5", B: "g5 d5 gb5 d5 g5 d5 gb5 d5", C: "g5 b4 gb5 b4 g5 b4 gb5 b4",
  D: "g5 b4 gb5 b4 e5 b4 gb5 b4", E: "g5 db5 g5 db5", F: "g5 db5 g5 c6", G: "g5 eb5 g5 eb5", H: "g5 eb5 g5 c6",
  I: "g5 e5 g5 e5", J: "g5 e5 g5 c6", K: "eb5", L: "g5 d5 gb5 d5 g5 e5 gb5 d5", M: "g5 b4 gb5 b4@2 b4 gb5 b4",
})).s("gm_electric_guitar_clean").gain(0.6).pan(0.9)

// chords · brass section
const brass_section = note(`<
  ~@35 A@3 B C D@3 E@3 F G H@4 ~@5 I ~@19 J@3 K L M@3 N@3 O P Q@4 ~@42 R S ~@3 T ~@3 U ~@3 V@3 W X Y@7 Z AA@4 AB
>`.pickRestart({
  A: "[~@10 [e4,e5] ~ [gb4,gb5] ~ [e4,g4,g5]@6 [d4,gb4,gb5]@2 [c4,e4,e5]@2 ~@3 [gb4,a4,a5]@9 [e4,g4,g5]@2 [d4,gb4,gb5]@2 ~@2 [b3,e4,e5]@3 ~ [b3,e4,e5]@2, ~@10 c4@2 ~ d4@2 ~@33]/3", // E Gb Em D C Gbm Em D …
  B: "~@2 [b3,e4,e5] [d4,d5] [g3,b3,b4]@6 ~@6, ~@4 a3 ~@11", C: "~@5 [g3,e4,e5] [a3,gb4,gb5] [b3,g4,g5]",
  D: "[~@2 [b3,g4,g5]@3 ~ [b3,g4,g5]@3 ~ [b3,g4,g5]@3 ~ [b3,g4,g5]@4 ~@2 [gb4,gb5]@2 ~ a3@3 [b3,e4,e5]@3 ~ [e4,e5]@13 ~@5, ~@18 a3@4 [gb4,gb5]@3 ~@5 b3@15 ~@3]/3", // Em Gb E5 E Gb
  E: "[~@5 [c4,e4,e5] [d4,gb4] [e4,g4,g5]@3 [d4,gb4,gb5] [c4,e4,e5] ~@2 [gb4,a4,a5]@4 [e4,g4,g5] [d4,gb4,gb5] ~ [b3,e4,e5] ~ [b3,e4,e5], ~@12 gb5 ~@35]/3", // C D Em D C Gbm Em D …
  F: "~@2 [b3,e4,e5] [a3,d4,d5] [b3,b4]@5 ~@7, ~ g3@2 ~", G: "~@5 [c4,e4,e5] [gb4,gb5] [e4,g4,g5], ~@12 d4 ~@3",
  H: "[~@2 [e4,g4,g5]@3 ~ [e4,g4,g5]@3 ~ [e4,g4,g5]@3 ~ [e4,g4,g5]@4 [d4,gb4,gb5]@3 ~ [d4,gb4,gb5]@4 [db4,e4,e5]@3 ~ [db4,e4,e5]@34]/4", // Em D Dbm
  I: "~@2 [b3,e4]!2 [b3,d4]!2 [g3,b3] ~ [b3,d4] ~ [b3,d4] [b3,e4] ~@4", // E5 Bm G Bm E5
  J: "[~@10 [b3,g4,e5]@2 gb5 [b3,g4] [e4,c5,g5]@6 [c4,g4,gb5]@2 [c4,g4,e5] ~@5 [gb4,d5,a5]@8 [d4,a4,g5]@2 [d4,a4,gb5] ~@3 [a3,gb4,e5] ~@3 [b3,g4,e5]@2]/3", // Em C D Dsus4 D Gbm7 Em
  K: "~@2 [b3,g4] [b3,e4,g4,d5] [g3,e4,b4]@3 ~@9, ~ e5 ~@6", L: "~@10 [b3,g4,e5]@2 [b3,g4,gb5] ~ [e4,g5,c6]@2",
  M: "[~@2 [e4,g5,c6]@3 ~ [e4,g5,c6]@3 ~ [e4,g5,c6]@2 ~@2 [d4,a4,g5]@5 ~ [d4,a4] ~ [d4,a4,gb5]@2 ~@2 [a3,gb4,e5]@3 ~ [b3,g4,e5]@18, ~@10 gb5 ~@13]/3", // C Dsus4 D5 D Gbm7 Em
  N: "[~@12 gb5 [b3,g4] [e4,g5,c6]@4 [c4,g4,gb5] ~ [c4,g4,e5] ~@9 [gb4,a5,d6]@4 [d4,a4,g5]@2 [d4,a4] ~@9 [b3,g4,e5]@2, ~@5 e5 ~@12 gb5 ~@5, ~@11 [b3,g4]@2 ~@35]/3", // Em C D Dsus4 D5 Em
  O: "~@2 [b3,g4,e5] [b3,e4,d5,g5] [g3,b4,e5]@3 ~@9", P: "~@10 [b3,g4,e5]@2 gb5 [b3,g4] [e4,c5,g5]@2",
  Q: "[~@2 [e4,c5,g5]@3 ~ [e4,c5,g5]@2 ~@2 [e4,c5,g5]@2 ~@2 [d4,a4,g5]@6 [d4,a4,gb5] ~ [d4,a4,gb5]@3 ~ [a3,gb4,e5]@3 ~ [db4,a4,e5]@33 ~]/4", // C Dsus4 D Gbm7 A
  R: "~@8 [b3,e4] [b3,d4] g3 ~ [b3,d4] ~ [b3,d4] [b3,e4]", S: "~@4 [b3,e4] [b3,d4] g3 ~ [b3,d4]@2 [b3,e4] ~@5",
  T: "[g4,b4]!2 [e4,a4] ~ [e4,g4] ~ [e4,a4] b4@2 ~@7, ~@7 g4 ~@8", // G A5 Em A5
  U: "[b3,e4] [b3,d4] g3 ~ [b3,d4] ~ [b3,d4] [b3,e4] ~@8", // E5 Bm E5
  V: "[~@10 [b3,e4]@2 gb4@2 [e4,g4]@6 [c4,gb4]@2 e4@2 ~@4 [gb4,a4]@8 [d4,g4]@3 [d4,gb4] ~@2 [a3,e4]@2 ~@2 [b3,e4]@2, ~@12 b3 ~@9 c4 ~@25]/3", // E5 Em Cdim Gbm G5 D A5 E5
  W: "~@2 [b3,e4] [b3,d4] ~ g3@5 ~@6, ~@4 b3@5 ~@7", X: "~@10 [g3,b3,e4]@2 ~ [g3,b3] [c4,e4,g4]@2, ~@6 gb4 ~",
  Y: "[~@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~ [a3,d4,g4]@6 [a3,d4,gb4]@2 [a3,d4,gb4]@2 ~@2 [gb3,a3,e4]@3 ~ [g3,b3,e4]@21 ~@7 [b3,g4,e5]@2 gb5 [b3,g4] [e4,c5,g5]@6 [c4,g4,gb5]@2 [c4,g4,e5] ~@6 [gb4,d5]@7 [d4,a4,g5]@2 gb5 [d4,a4] ~@2 [a3,gb4,e5] ~@4 b3@2 ~ [b3,g4,e5] [b3,e4,g4,d5] [g3,e4,b4]@9 ~@3, ~@76 a5@8 ~@10 [g4,e5]@3 ~@15]/7", // C Dsus4 D Gbm7 Em C D Dsus4 …
  Z: "~@10 [b3,g4,e5]@2 ~ [b3,g4] [e4,g5,c6]@2, ~@6 gb5 ~", // Em C
  AA: "[~@2 [e4,g5,c6]@3 ~ [e4,g5,c6]@3 ~ [e4,g5,c6]@2 ~@2 [d4,a4,g5]@5 [d4,a4,gb5]@2 ~ [d4,a4,gb5]@2 ~@2 [a3,gb4,e5]@3 ~ [b3,g4,e5]@34, ~@14 c6 ~@49]/4", // C Dsus4 D Gbm7 Em
  AB: "~@12 [b3,g4] ~@3, ~@6 e5 ~", // Em
})).s("gm_brass_section").gain(0.42)

// other · overdriven guitar
const overdriven_guitar = note("<~@28 A B@2 C@2 D@3 ~@34 A B@2 C@2 D@3 ~@89>".pickRestart({
  A: "~@8 g5@2 ~ g5@2 ~ g5@2", B: "[~@2 g5@2 ~@2 g5@3 ~ g5@3 ~ g5@5 ~@6 g5@2 g5@2 ~ g5@2]/2",
  C: "[~@2 g5@3 ~ g5@6 ~ e5@2 e5@7 ~@2 g5@2 ~ g5@2 ~ g5@2]/2",
  D: "[~@2 g5@3 ~ g5@3 ~ g5@3 ~ g5@4 g5@2 gb5@2 e5@4 g5@2 e5@16 ~@4]/3",
})).s("gm_overdriven_guitar").gain(0.68)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@53 A B C@3 D@2 E@2 ~@24 F G H@2 ~@4 I@2 J@2 I@2 J@2 I@2 J@2 I@2 K@2 ~@23 L@3 M N O@3 P@3 Q R S@3 T ~@2 U V ~@3 W X Y
  ~ Z ~@2 AA AB ~
>`.pickRestart({
  A: "~@12 [b2,b3]@2 [g3,g4] ~", B: "[gb3,gb4]@3 ~ [gb3,gb4]@2 [e3,e4] [gb3,gb4]@3 ~@2 [gb3,gb4] ~ [e3,e4] [gb3,gb4]",
  C: "[~ g4@2 [gb3,gb4]@2 [e3,e4]@5 ~@3 [g3,g4]@2 [gb3,gb4]@3 ~@2 [gb3,gb4]@2 ~ [gb3,gb4]@2 [g3,g4]@2 [gb3,gb4]@2 [e3,e4]@8 ~@7 [b2,b3]@2 [e3,e4]@2, ~ g3 ~@10 [b2,b3]@2 ~@8 [e3,e4]@2 ~@24]/3", // Gb E G Gb G Gb E B …
  D: "[[d3,d4]@3 ~ [d3,d4]@2 ~ [d3,d4]@3 ~@2 [d3,d4]@2 [c3,c4] [d3,d4]@2 [e3,e4]@2 [d3,d4]@2 [d3,d4]@5 ~@4 [c4,c5]@2, ~@3 [c3,c4] ~@12]/2", // D C D E D C
  E: "[[c4,c5]@2 ~ [e4,e5]@2 [c4,c5]@2 ~ [e4,e5]@2 [b3,b4]@2 ~ [b3,b4]@13 ~@6]/2", F: "~@4 [e4,g4] [d4,gb4] [b3,e4]@2",
  G: "~@4 [gb4,a4] [e4,g4] [d4,gb4]@2", H: "[~@8 [g4,b4] [gb4,a4] [e4,g4] [b3,e4] [e4,g4] ~ [b3,e4]@5 ~@13]/2",
  I: "[[g2,g3]@3 ~@4 [gb2,gb3]@2 [d2,d3] [e2,e3] [gb2,gb3] [g2,g3] [a2,a3] [b2,b3] [a2,a3]]/2", // G Gb D E Gb G A B …
  J: "[[gb2,gb3]@4 ~@10 [e2,e3]@5 ~ [e2,e3]@6 [gb2,gb3]@6]/2", // Gb E Gb
  K: "[[gb2,gb3]@4 ~@10 [e2,e3]@5 ~ [e2,e3]@6 [gb2,gb3]@5 ~]/2", // Gb E Gb
  L: "[~@10 [b3,e4]@2 gb4@2 ~ e4@4 ~ b3@2 [b3,e4]@4 ~ [gb4,a4]@7 ~ g4@2 ~ [d4,gb4]@3 ~ [a3,e4]@2 ~@2 b3@2, ~@12 b3 ~ g4@4 ~ gb4@2 ~@14 d4 ~@9 e4@2 ~]/3", // E5 Gbm D A5
  M: "~ [b3,e4] [b3,d4] ~ [g3,b3]@5 ~@7", N: "~@10 [b3,e4]@2 ~ b3 [e4,g4]@2, ~@6 gb4 ~",
  O: "[~@2 [e4,g4]@3 [e4,g4]@4 [e4,g4]@4 [d4,g4]@6 ~ [d4,gb4]@2 d4@3 ~ [a3,e4]@4 [b3,e4]@10 ~@8, ~@22 gb4 ~@25]/3", // Em G5 D A5 E5
  P: "[~@10 [g4,b4,e5]@2 [g4,b4] ~ [c5,e5,g5]@6 [g4,c5,gb5]@2 [g4,c5] ~@5 [d5,gb5,a5]@8 [a4,d5,g5]@2 [a4,d5,gb5] ~@3 [gb4,a4,e5] ~@2 bb4 b4@2, ~@12 gb5@2 b4 ~@7 e5@2 ~@21 [g4,e5]@3]/3", // Em G C C5 D Dsus4 D Gbm7 …
  Q: "~ [g4,b4,e5] [e4,g4,d5] ~ [e4,g4]@6 ~@6, ~@2 b4@7 ~@7", // Em Em7 Em
  R: "~@10 [g4,b4,e5]@2 gb5 [g4,b4] [c5,e5,g5]@2, ~@14 b4 ~", // Em G C
  S: "[~@2 [c5,e5,g5]@2 ~@2 [c5,e5,g5]@3 ~ [c5,e5,g5]@3 ~ [a4,d5,g5]@6 [a4,d5,gb5]@2 ~ [a4,d5,gb5]@3 [gb4,a4,e5]@3 ~ [a4,db5,e5]@18, ~@14 [c5,e5] ~@33]/3", // C Dsus4 D Gbm7 A C
  T: "[db4,e4,a4]@7 ~", // A
  U: "~@8 [b3,e4,b4,e5] [b3,d4,d5] [g3,g4] ~ [b3,d4,b4,d5] ~ [b3,d4,b4,d5] [b3,e4,b4,e5], ~@9 b4@2 ~@5", // E5 Bm G Bm E5
  V: "~@4 [b3,e4,b4,e5] [b3,d4,b4,d5] [g3,g4] ~ [b3,d4,b4,d5]@2 [b3,e4,b4,e5] ~@5", // E5 Bm G Bm E5
  W: "[g4,b4,g5,b5]!2 [e4,a4,e5,a5] ~ [e4,g4,e5,g5] ~ [e4,a4,e5,a5] [g4,b4,g5,b5]@2 ~@7", // G A5 Em A5 G
  X: "~@4 [e4,g4,e5,g5] [d4,gb4,d5,gb5] [b3,e4,b4,e5]@2", Y: "~@4 [gb4,a4,gb5,a5] [e4,g4,e5,g5] [d4,gb4,d5,gb5]@2",
  Z: "[g4,b4,g5,b5] [b3,gb4,a4,gb5,a5] [e4,g4,e5,g5] [e4,b4,e5] [e4,g4,e5,g5] ~ [e4,b4,e5]@5 ~@5, ~@4 b3@5 ~@7", // G B7 Em E5 Em E5
  AA: "~@4 [b4,e5,b5,e6] [b4,d5,b5,d6] [g4,g5] ~ [b4,d5,b5,d6] ~ [b4,d5,b5,d6] [b4,e5,b5,e6] ~@4", // E5 Bm G Bm E5
  AB: "[b4,e5,b5,e6] [b4,d5,b5,d6] [g4,g5]@2 [b4,d5,b5,d6] ~ [b4,e5,b5,e6]@4 ~@6", // E5 Bm G Bm E5
})).s("gm_string_ensemble_1").gain(0.46).pan(0.8)

// chords · overdriven guitar
const overdriven_guitar_2 = note("<~@109 A B@2 C@2 D E F G H I J K@2 L M N@2 ~@40>".pickRestart({
  A: "~@7 g4", B: "[~ g4 gb5@4 e5 ~ e5 b4@6 b4, gb5@2 ~@5 b4@2 ~@7]/2",
  C: "[~ b4 gb5@3 e5 d5 e5 d5 b5@3 b5 a5 [g5,b5] [e5,a5], gb5@2 ~@5 b5@2 ~@7]/2", // G A5
  D: "[e5,g5]@2 e5@2 [e5,g5]@2 e5@2 g5@2 e5@2 g5 ~@3", E: "~@4 d5 b4 d5 [b4,d5]",
  F: "b4@2 ~ b4 [a4,b4]@2 ~ b4 a4@2 [g4,b4]@2 a4@2 b4@2, d5 ~ d5@2 ~@2 g4@2 ~@8", G: "a4 b4@7",
  H: "g4 gb4 g4 c5 g4 gb4 [g4,c5] [gb4,c5] g4 [gb4,c5] [g4,c5] gb4 [g4,c5] [gb4,c5] g4 [gb4,db5]", // C5 Gbdim C5 Gbdim Gb5
  I: "[g4,c5] gb4 [g4,db5] [gb4,db5] g4 [gb4,db5] [g4,db5] gb4 [g4,db5] [gb4,db5] g4 [gb4,db5] [g4,db5] gb4 [g4,db5] [gb4,db5]", // C5 Gdim Gb5 Gdim Gb5 Gdim Gb5
  J: "g4 [gb4,d5] [g4,db5] gb4 [g4,d5] [gb4,d5] g4 [gb4,d5] [g4,d5] gb4 [g4,d5] [gb4,d5] g4 [gb4,d5] [g4,d5] gb4", // D Gdim G5 D G5 D G5
  K: "[[g4,eb5] [gb4,d5] g4 [gb4,eb5] [g4,eb5] gb4 [g4,eb5] [gb4,eb5] g4 gb4 eb5 gb4 a4@12 b4@2 a4@2 [g4,b4]@2 [d4,a4]@2, ~@2 a4 ~@5]/2", // Cm D Ebm Cm Ebm G D5
  L: "g4 d4 e4@4 ~ a4, e4 ~@3", M: "~ a4 b4@3 a4 g4 a4, b4 ~@3", N: "[g4 a4@3 b4@2 b4@5 ~@5]/2",
})).s("gm_overdriven_guitar").gain(0.37)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@113 [~@7 x] ~@52 [x!3 ~@6 x ~@6]>").gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  A@4 B A@2 C B A@2 C B A@6 C B A@2 D B A@2 E B A@7 B A@6 F G A@4 D H@3 I B A@5 J A B A@2 K A@3 L H@8 ~@16 M A B N M A B
  L M A B O M A B P B A@2 Q B A@2 E B A@2 R B A@2 S B A T A@4 U ~@32 V
>`.pickRestart({
  A: "x!8", B: "~ x!7", C: "x!7 ~", D: "x!5 ~ x ~", E: "x!5 ~@3", F: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2", G: "~ x!5 ~ x",
  H: "~ x ~ x", I: "~@2 x ~ x!4", J: "x!2 ~@2 x ~ x ~ x ~ x ~ x ~ x ~", K: "x ~ x!3 ~ x ~", L: "x!3 ~ x!2 ~ x",
  M: "~ x!6 ~", N: "x ~ x!6", O: "x!2 ~ x!3 ~ x", P: "x ~@2 x ~ x!3", Q: "x!3 ~@5",
  R: "x ~ x ~ x ~ x ~ x ~@2 x ~@2 x ~", S: "x!3 ~ x ~@2 x", T: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", U: "x!6 ~@2", V: "x!4",
})).gain(0.51)

// drums · mid tom
const mid_tom = s("mt").struct("<~@109 [~@14 x!2] ~@56 [~@3 x!2 ~@5 x!3 ~@3]>").gain(0.56)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@7 A ~@3 A ~@7 A ~@3 B ~@3 C ~@15 A ~@5 B ~@10 D ~@4 E ~@3 F ~@27 D ~@3 G ~@3 H ~@3 I ~@3 F ~@3 C ~@3 J ~@3 K ~@7 J
  ~@33
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~ x", C: "~@5 x ~@2", D: "~ x ~@6", E: "~@2 x ~@7 x ~@2 x ~@2", F: "~@3 x ~@4",
  G: "~@3 x ~@2 x ~", H: "~ x ~ x", I: "~ x ~@2 x ~@3", J: "~@3 x", K: "~@3 x ~ x ~@2",
})).gain(0.51)

// drums · high tom
const high_tom = s("ht").struct("<~@109 [~@12 x!2 ~@2] ~@3 [~@10 x!2 ~@4] ~@52 [~@5 x!4 ~@7]>").gain(0.56)

// … 40 more lines