Strudelify
Mr. Roboto cover art

1983 · Kilroy Was Here

Mr. Roboto

Styx

KeyE♭ minorTempo145 bpm
0:00/0:00
// Mr. Roboto — Styx
// 145 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 166 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GTHARMONIC.
setcpm(145/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 · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@9 A@3 B ~@10 C D E F G@2 H I J G H K J G L M N@2 L O P Q D C P Q J@2 G@2 H I J G H K J G L M N@2 L O R S T@2 R S U
  ~@47 V W D@2 V X V X Y@2 Z@18 AA ~@10 J N@5
>`.pickRestart({
  A: "c6 db6 c6 db6 c6 db6 c6 db6", B: "c6@2 db6@2 c6@2 db6@3 ~@7", C: "[gb5,bb5,eb6]@3 ~ [gb5,bb5,eb6]@2 ~@10",
  D: "[gb5,bb5,eb6]@3 ~ [gb5,bb5,eb6]@3 ~@9", E: "[gb5,bb5,eb6]@3 ~ [gb5,bb5,eb6]@2 ~@8 [gb5,bb5,eb6] ~",
  F: "[gb5,bb5,f6]@3 ~ [gb5,bb5,eb6]@3 ~@9", G: "[gb5,bb5,eb6,f6]@3 ~ [gb5,bb5,eb6]@3 ~@9",
  H: "[f5,ab5,db6]@3 ~ [f5,ab5,db6]@2 ~@10", I: "~@4 [f5,ab5,db6]@3 ~ [f5,ab5,db6]@2 ~@2 [f5,a5,d6]@2 ~@2",
  J: "[gb5,bb5,eb6,f6]@3 ~ [gb5,bb5,eb6]@2 ~@10", K: "~@4 [f5,ab5,db6]@2 ~@2 [f5,ab5,db6]@3 ~ [f5,a5,d6]@2 ~@2",
  L: "[f5,ab5,db6] ~ [f5,ab5,db6] ~@5", M: "~@2 [f5,ab5,db6] ~ [f5,ab5,db6] ~ [f5,a5,d6] ~",
  N: "[gb5,bb5,eb6,f6] ~ [gb5,bb5,eb6] ~@5", O: "[f5,ab5,db6]@3 ~ [f5,ab5,db6]@3 ~ [f5,ab5,db6]@3 ~ [f5,ab5,db6]@2 ~@2",
  P: "[b2,eb3,gb3]", Q: "[db3,f3,ab3]@7 ~", R: "[b2,eb3,gb3,eb4,eb6]", S: "[db3,f3,ab3]@7 ~, [f4,f6]",
  T: "[f4,gb5,bb5,eb6]@3 ~ [eb4,gb5,bb5,eb6]@3 ~@9", // Ebm
  U: "[eb6,g6] ~ [eb6,g6] ~ [g4,eb6,g6] ~ [g4,eb6,g6] ~ [g4,eb6,g6] ~ [g4,eb6,g6] ~ [g4,eb6,g6] ~ [g4,eb6,g6]@2, g4 ~@7", // Eb Cm
  V: "[gb5,b5,eb6]", W: "[ab5,db6,f6]@15 ~", X: "[ab5,db6,f6]", Y: "[[g5,bb5,eb6]@25 ~@7]/2",
  Z: "ab6 ab5 ab3 ab2 ab6 ab5 ab3 ab2", AA: "ab6 ab5 ab3 ab2 ab6 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.25).pan(0.8)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@2 A@2 B@2 A@2 C D@2 E F@3 G@6 H@2 I@4 J I K L M I K N I@2 K O I@2 K@2 P@2 I M P@2 J@2 Q J K N J Q K R I@2 K N I J S
  T U V W M P@2 X Y@3 Z@3 AA@3 AB@2 I@2 AC I@8 AD AC I K AE AF I S K AG M AE AH I Q AI AH AD AJ AK AL AM AN K S P AO M@2
  U P@2 AP AQ AR ~@15 AS@6 AT@3 AU@3 AV@2 AW AX AW@4
>`.pickRestart({
  A: "[f2, f1 ~@31]/2", B: "[gb2, gb1 ~@31]/2", C: "gb2, gb1 ~@15", D: "gb1 gb2", E: "gb1 gb2 gb1 gb2",
  F: "[gb1@4 gb2@4 gb1@2 ~@2 bb1@2 ab1@6 db2@2 c2@6 ab1@2 gb1@5 ~ gb1@3 ~ gb1@3 ~ gb1@3 ~]/3",
  G: "[gb1@3 ~ gb1@3 ~ gb1@3 ~ bb1@2 ab1@6 db2@2 c2@6 ab1@2 gb1@5 ~ gb1@3 ~ gb1@3 ~ gb1@3 ~]/3",
  H: "[gb1@2 ~@2 gb1@3 ~ gb1@3 ~ bb1@2 ab1@6 db2@2 c2@6 db2@3 ~]/2", I: "eb1@3 ~ eb1@3 ~ eb1@3 ~ eb1@3 ~",
  J: "eb1@3 ~ eb1@3 ~ eb1@2 ~@2 eb1@3 ~", K: "db1@3 ~ db1@3 ~ db1@3 ~ db1@3 ~", L: "db1@3 ~ db1@3 ~ db1@2 ~@2 d1@3 ~",
  M: "eb1@2 ~@2 eb1@3 ~ eb1@3 ~ eb1@3 ~", N: "db1@3 ~ db1@3 ~ db1@3 ~ d1@3 ~", O: "db1@3 ~ db1@2 ~@2 db1@3 ~ d1@2 ~@2",
  P: "b0@3 ~ b0@3 ~ b0@3 ~ b0@3 ~", Q: "eb1@3 ~ eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2", R: "db1@3 ~ db1@2 ~@2 db1@3 ~ d1@3 ~",
  S: "db1@2 ~@2 db1@3 ~ db1@3 ~ db1@3 ~", T: "db1@2 ~@2 db1@3 ~ db1@3 ~ db1@2 ~@2", U: "b0@3 ~ b0@2 ~@2 b0@3 ~ b0@3 ~",
  V: "b0@3 ~ b0@3 ~ b0@2 ~@2 b0@3 ~", W: "eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ eb1@3 ~",
  X: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~",
  Y: "[eb1@2 ~@10 bb1@2 ab1@6 db2@2 c2@6 ab1@2 gb1@5 ~ gb1@3 ~ gb1@3 ~ gb1@3 ~]/3",
  Z: "[gb1@3 ~ gb1@3 ~ gb1@3 ~ bb1@2 ab1@6 db2@2 c2@6 ab1@2 gb1@5 ~ gb1@3 ~ gb1@2 ~@2 gb1@3 ~]/3",
  AA: "[gb1@3 ~ gb1@2 ~@2 gb1@3 ~ bb1@2 ab1@6 db2@2 c2@6 ab1@2 gb1@5 ~ gb1@2 ~@2 gb1@2 ~@2 gb1@3 ~]/3",
  AB: "[gb1@2 ~@2 gb1@3 ~ gb1@3 ~ bb1@2 ab1@5 ~ db2@2 c2@6 db2@3 ~]/2", AC: "eb1@3 ~ eb1@2 ~@2 eb1@3 ~ eb1@3 ~",
  AD: "eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2", AE: "db1@3 ~ db1@3 ~ db1@2 ~@2 db1@3 ~",
  AF: "eb1@2 ~@2 eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2", AG: "eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~",
  AH: "db1@3 ~ db1@3 ~ db1@2 ~@2 db1@2 ~@2", AI: "db1@3 ~ db1@2 ~@2 db1@3 ~ db1@3 ~",
  AJ: "eb1@2 ~@2 eb1@3 ~ eb1@3 ~ eb1@2 ~@2", AK: "db1@3 ~ db1@3 ~ db1@3 ~ db1@2 ~@2",
  AL: "db1@2 ~@2 db1@3 ~ db1@2 ~@2 db1@2 ~@2", AM: "eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ eb1@2 ~@2",
  AN: "eb1 ~ eb1 ~ eb1 ~ eb1 ~", AO: "b0@3 ~ b0@3 ~ b0@3 ~ b0@2 ~@2", AP: "b0@3 ~ b0@3 ~ b0@2 ~@2 b0@2 ~@2",
  AQ: "eb1@2 eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~", AR: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1@2 ~@6",
  AS: "[~@10 d2@2 eb2@2 ab1@36 ~@10 bb1@2 ab1@6 db2@2 c2@6 ab1@2 gb1@5 ~ gb1@3 ~ gb1@3 ~ gb1@3 ~]/6",
  AT: "[gb1@3 ~ gb1@3 ~ gb1@3 ~ bb1@2 ab1@5 ~ db2@2 c2@6 ab1@2 gb1@5 ~ gb1@3 ~ gb1@3 ~ gb1@3 ~]/3",
  AU: "[gb1@3 ~ gb1@2 ~@2 gb1@3 ~ bb1@2 ab1@6 db2@2 c2@6 ab1@2 gb1@5 ~ gb1@3 ~ gb1@3 ~ gb1@3 ~]/3",
  AV: "[gb1@3 ~ gb1@3 ~ gb1@3 ~ bb1@2 ab1@6 db2@2 c2@6 db2@3 ~]/2", AW: "eb1@3 ~ eb1@3 ~@9", AX: "eb1@2 ~@2 eb1@3 ~@9",
})).s("gm_fretless_bass").gain(0.44)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth_2 = note(`<
  ~@23 A@6 B C A@2 B C A@2 B C A@2 B@2 D@2 A@2 D@2 A@4 B C A@2 B C A@2 B C A@2 B@2 D@2 A@2 D@2 E F ~@10 A@14 B@2 A@2 B@2
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 D@2 A@2 D@4 G H ~@35
>`.pickRestart({
  A: "eb2 eb3 eb2 eb3 eb2 eb3 eb2 eb3", B: "db2 db3 db2 db3 db2 db3 db2 db3", C: "db2 db3 db2 db3 db2 db3 d2 d3",
  D: "b1 b2 b1 b2 b1 b2 b1 b2", E: "eb2!8", F: "eb2 ~@7", G: "eb3!8", H: "eb3!5 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.27)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C@2 D@2 E@2 F@7 G@6 H@2 I ~@18 J K L M N O P Q ~@16 R K S T U V W X Y@3 G@6 H@2 Z ~@3 AA@2 AB@2 AC@2 AB@2 AD@2
  AE@2 AD@2 AE@2 AD@2 AE@2 AD@2 AE@2 AD@2 AE@2 AD@2 AE@2 ~@28 AF@3 AG@6 AH@3 AI@3 AJ ~
>`.pickRestart({
  A: "f2@2 f2@2 f2 ~ f2 ~ f2@3 ~ f2@2 f2@2", B: "~@2 f2@3 ~ f2 ~ f2@3 ~ f2@3 ~",
  C: "[[bb3,g4,bb4,eb5]!5 [bb3,f4,bb4,d5] ~ bb3 bb3 [bb3,g4,bb4,eb5]@2 [bb3,f4,bb4,d5] [bb3,g4,bb4,eb5]@2 [bb3,f4,bb4,d5] ~, ~@7 [g4,bb4,eb5]@2 ~@7]/2", // Eb Bb Eb Bb Eb Bb Eb
  D: "[[eb4,gb4,bb4,eb5]@2 [db4,gb4,bb4,db5]@2 [c4,f4,ab4,c5] [db4,f4,ab4,db5] [eb4,f4,ab4,eb5] [db4,gb4,bb4,db5]@7 ~@2]/2", // Ebm Gb Fm Db Fm7 Gb
  E: "[[bb3,g4,bb4,eb5]!5 [bb3,f4,bb4,d5] ~ [bb3,g4,bb4,eb5]@2 [bb3,g4,bb4,eb5]@2 [bb3,f4,bb4,d5] [bb3,g4,bb4,eb5]@2 [bb3,f4,bb4,d5] ~]/2", // Eb Bb Eb Bb Eb Bb
  F: "[[eb4,gb4,bb4,eb5]@2 [db4,gb4,bb4,db5]@2 [c4,f4,ab4,c5] [db4,f4,ab4,db5] [eb4,f4,ab4,eb5] [gb4,bb4,db5,gb5]@29 ~@2 bb3 ab3@3 db4 c4@3 ab3 gb3@3 [db4,gb4,bb4]!3 [eb4,ab4,c5] ~ [db4,gb4,bb4]]/7", // Ebm Gb Fm Db Fm7 Gb Ab Gb
  G: "[[db4,gb4,bb4]!3 [eb4,ab4,c5] ~@2 bb3 ab3@3 db4 c4@3 ab3 gb3@3 [db4,gb4,bb4]!3 [eb4,ab4,c5] ~ [db4,gb4,bb4]]/3", // Gb Ab Gb Ab Gb
  H: "[[db4,gb4,bb4]!3 [eb4,ab4,c5] ~@2 bb3 ab3@3 db4 c4@3 db4@2]/2", I: "eb4 ~@3", J: "~@3 eb4 gb4!2 f4@2", K: "b3",
  L: "~@3 db4 gb4!2 f4@2", M: "eb4@3 ~@13", N: "~@4 gb4 gb4@2 f4", O: "b3@3 ~", P: "~@6 db4@2 gb4@3 gb4@2 f4@3",
  Q: "eb4@9 ~@7", R: "~@5 db4@2 ~ gb4@3 gb4@2 f4@3", S: "~@6 b3@2 gb4@2 gb4@3 f4@2 ~", T: "eb4 bb4@3",
  U: "~@8 gb4@3 gb4@3 f4@2", V: "b3@7 ~", W: "~@6 b3@2 gb4@3 gb4@2 f4@3", X: "eb4",
  Y: "[~@12 bb3@2 ab3@6 db4@2 c4@5 ab3@2 ~ gb3@6 [db4,gb4,bb4]@2 [db4,gb4,bb4]@2 [db4,gb4,bb4]@2 [eb4,ab4,c5]@2 ~@2 [db4,gb4,bb4]@2]/3", // Gb Ab Gb
  Z: "eb4@5 ~@11", AA: "[[f3,f4]!4 [f3,f4]@2 [eb3,eb4] [f3,f4]@2 [f3,f4]@2 [eb3,eb4] [f3,f4]@2 [eb3,eb4]@2]/2",
  AB: "[f3,f4]!2 eb2!2 ~@4", // F
  AC: "[[f3,f4]!3 [eb3,eb4] [f3,f4]@2 [eb3,eb4] [f3,f4]@2 [f3,f4]@2 [eb3,eb4] [f3,f4]@2 [eb3,eb4]@2]/2", // F Eb F Eb F Eb F Eb
  AD: "[[eb2,f3,f4]!3 [eb2,eb3,eb4] [eb2,f3,f4]@2 [eb2,eb3,eb4] [eb2,f3,f4]@2 [eb2,f3,f4]@2 [eb2,eb3,eb4] [eb2,f3,f4]@2 [eb2,eb3,eb4] ~]/2", // Ebsus2 Eb Ebsus2 Eb Ebsus2 Eb Ebsus2 Eb
  AE: "[[db2,f3,f4]!3 [db2,eb3,eb4] [db2,f3,f4]@2 [db2,eb3,eb4] [db2,f3,f4]@2 [db2,f3,f4]@2 [db2,eb3,eb4] [db2,f3,f4]@2 [db2,eb3,eb4] ~]/2", // Db Dbsus2 Db Dbsus2 Db Dbsus2 Db Dbsus2
  AF: "[~@6 bb4 ab4@3 db5 c5@3 ab4 gb4@3 [db4,gb4,bb4]!3 [eb4,ab4,c5] ~ [db4,gb4,bb4]]/3", // Gb Ab Gb
  AG: "[[db4,gb4,bb4]!3 [eb4,ab4,c5] ~@2 bb4 ab4@3 db5 c5@3 ab4 gb4@3 [db4,gb4,bb4]!3 [eb4,ab4,c5] ~ [db4,gb4,bb4]]/3", // Gb Ab Gb Ab Gb
  AH: "[[db4,gb4,bb4]@2 [db4,gb4,bb4]@2 [db4,gb4,bb4]@2 [eb4,ab4,c5]@2 ~@4 bb4@2 ab4@6 db5@2 c5@6 db4@2 eb4@7 ~@7 db4@4]/3", // Gb Ab
  AI: "eb4!2 ~@2", AJ: "eb4@4 eb4@3 ~@9",
})).s("gm_piano").gain(0.32).pan(0.6)

// other · pad poly · "POLYSYNTH"
const pad_poly = note("<~@9 A@3 B ~@121 C@4 D@6 E@3 ~ F G ~@16>".pickRestart({
  A: "c5 db5 c5 db5 c5 db5 c5 db5", B: "c5 db5 c5 db5 ~@4",
  C: "[~@12 bb5 ~ ab5@6 db6 ~ c6@5 ~ ab5 ~ gb5@27 ~@3 bb5 ~ ab5@2]/4",
  D: "[~@4 db6 ~ c6@6 ab5 ~ gb5@26 ~@4 bb5 ~ ab5@6 db6 ~ c6@6 ab5 ~ gb5@28 ~@2 bb5 ~ ab5@2]/6",
  E: "[~@4 db6 ~ c6@6 ab5 ~ gb5@26 ~@8]/3", F: "~@2 ab4 ~ ab4 ~ ab4 ~ ab4 ~ ab4 ~ ab4 ~ ab4 ~",
  G: "ab4 ~ ab4 ~ ab4 ~ ab4 ~ ab4 ~@7",
})).s("gm_pad_poly").gain(0.36).pan(0.2)

// other · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note("<~@54 A ~@2 B@2 ~@3 A ~@2 C@2 ~@69 D E ~ D E ~ D E ~ D E ~@19>".pickRestart({
  A: "~ db5 eb5 db5 ab5 eb5 db5 eb5", B: "[~@14 db5@3 eb5@3 db5@2 eb5@2 ab5@2 eb5@2 db5@2 eb5@2]/2",
  C: "[~@7 db5@2 eb5 db5 eb5 ab5 eb5 db5 eb5]/2", D: "~@2 ab6 ~ eb6 ~ db6 ~ gb5 ~ ab6 ~ eb6 ~ db6 ~",
  E: "gb5 ~ ab6 ~ eb6 ~ db6 ~ gb5 ~@7",
})).s("gm_lead_3_calliope").gain(0.31).pan(0.1)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@2 A@2 B@2 A@2 C@4 D@7 E@4 F ~@19 G H ~@2 G H ~@18 G H ~@2 G H I J@7 E@4 ~@36 K L ~@2 K M N O P@2 ~@15 Q@7 R@7 ~@6
>`.pickRestart({
  A: "[f2,f3]/2", B: "[gb2,gb3]/2",
  C: "[gb2@4 ~@11 gb3, gb3@23 ~ gb3@15 ~ gb3@10 ~@2 gb3@6 ~@6, ~@16 gb2@15 ~ gb2@15 ~ gb2@7 ~ gb2@7 ~]/4",
  D: "[~@4 gb3@4 gb2 ~@3 bb3@2 ab3@6 db4@2 c4@6 ab3@2 gb3@28 ~@2 bb3@2 ab3@6 db4@2 c4@6 ab3@2 gb3@27 ~@3 bb3@2 ab3@2, gb2 ~@15]/7",
  E: "[~@2 db4 c4@3 ab3 gb3@14 ~ bb3 ab3@3 db4 c4@3 db4@2]/4", F: "eb4@3 ~@13", G: "b2@3 b2", H: "db3@15 ~",
  I: "[g3,bb3,eb4]!8", // Eb
  J: "[[g3,bb3,eb4]@2 ~@10 bb3@2 ab3@6 db4@2 c4@6 ab3@2 gb3@28 ~@2 bb3@2 ab3@6 db4@2 c4@6 ab3@2 gb3@27 ~@3 bb3@2 ab3@2]/7", // Eb
  K: "[b2,gb3,b3]", L: "[db3,ab3,db4]@7 ~", M: "[db3,ab3,db4]@13 ~@2 [b2,gb3,b3]",
  N: "[b2,gb3,b3]@13 ~@2 [db3,ab3,db4]", O: "[db3,ab3,db4]@15 ~",
  P: "[[eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3,eb4]@2 [eb3,bb3]@2 [eb3,bb3] [eb3,bb3,eb4]!4 ~@3, eb4@4 ~@2 eb4@3 ~@7]/2", // Eb5
  Q: "[~@10 [d3,d4]@2 [eb3,eb4]@2 [ab2,ab3]@43 ~@3 bb3@2 ab3@6 db4@2 c4@6 ab3@2 gb3@28 ~@2 bb3@2 ab3@2]/7", // D Eb Ab
  R: "[~@4 db4@2 c4@6 ab3@2 gb3@27 ~@3 bb3@2 ab3@6 db4@2 c4@6 ab3@2 gb3@28 ~@2 bb3@2 ab3@6 db4@2 c4@6 db4@4]/7",
})).s("gm_distortion_guitar").gain(0.4).pan(0.4)

// other · epiano1 · "E.PIANO 1"
const epiano1 = note("<~@43 A B ~@2 A B ~@18 C D ~@2 E F G H ~@61 I J ~ I J ~ I J ~ I K ~@19>".pickRestart({
  A: "~@3 b3, b2, ~@4 [gb3,eb4]@11 ~", B: "f4 db4 gb4 ab3", C: "eb4@4 eb5@4 b4@4 gb4@3 ~", D: "f5@4 db5@4 ab4@7 ~",
  E: "~ eb5 b4 gb4", F: "f5 db5 ab4 ~",
  G: "[g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~", // Eb
  H: "[g4,bb4,eb5] ~@15", I: "~@2 bb5 ~ ab5 ~ gb5 ~ eb5 ~ bb5 ~ ab5 ~ gb5 ~", J: "eb5 ~ bb5 ~ ab5 ~ gb5 ~ eb5 ~@7",
  K: "eb5 ~ bb5 ~ ab5 ~ gb5@2 eb5 ~@7",
})).s("gm_epiano1").gain(0.38)

// other · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  ~@44 A ~@3 A ~@19 A ~@3 A ~@18 B C ~@2 B@2 ~ D E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 G@2 H I ~@2 H J K L M@2 ~@35
>`.pickRestart({
  A: "f4@2 db4@5 ~ f4@2 db4@2 ab3@2 f3@2", B: "~@8 [bb4,eb5,f5] ~@2 [bb4,eb5,f5] ~ [bb4,eb5,f5] ~@2",
  C: "~@8 [bb4,eb5,f5] ~@2 [bb4,eb5,f5] ~ [bb4,eb5,f5]@2 ~", D: "~ eb6 bb5 gb6", E: "[f6@5 db6 bb5 gb6]/2",
  F: "[f6@5 eb6 bb5 gb6]/2", G: "[f6@5 ~@3]/2", H: "~ eb6 b5 gb6", I: "f6@4 db6@4 ab5@7 ~", J: "f6@15 ~",
  K: "~ gb5 b5 gb6", L: "f6", M: "[eb6@25 ~@7]/2",
})).s("gm_drawbar_organ").gain(0.27).pan(0.8)

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

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

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

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

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

// drums · high tom
const high_tom = s("ht").struct("<~@5 [x!3 ~@2 x ~ x!3 ~ x ~@4] ~@160>").gain(0.33)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~ A ~ A ~ A B@2 C D E ~ F E ~ F E ~ F G A ~@19 A ~ A ~ A ~ A ~@17 A ~ A ~ A ~@2 F E ~ F E ~ F E ~ F G A ~@35 A ~
  H@2 ~@21 I ~@2 F E ~ F E ~ F E ~ F G A ~@5
>`.pickRestart({
  A: "x", B: "~ x", C: "~ x ~ x", D: "~@2 x ~ x ~@2 x", E: "~@3 x ~@3 x", F: "~@7 x", G: "~@3 x ~@4", H: "~@2 x!2",
  I: "~@5 x!3",
})).gain(0.38)

// drums · triangle
const triangle = s("triangles:30").struct("<~@131 [x!8]!15 [x!5 ~@3] ~@19>").gain(1.91)

// … 4 more lines

More by Styx