Strudelify
Babe cover art

1987 · Cornerstone

Babe

Styx

KeyD majorTempo82 bpm
0:00/0:00
// Babe — Styx
// 82 bpm, 4/4, key D 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: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 6 "tk6" fretless bass (copy of ch 2 "tk2" electric bass finger)
// note: Full arrangement: all 85 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/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 · "tk1"
const epiano2 = note("<A@8 B@7 C@7 D E F G H I F H G J@3 K L M N@7 O@8 P@6 Q@4 R@4 S T U V@5 W@2 X@5 Y@4>".pickRestart({
  A: "[~@25 d5@3 [a4,b4,d5,f#5]@19 [a4,d5]@13 ~@15 d5@3 ~ [b4,d5,e5]@19 ~@28 d5@3 [b4,d5,f#5]@19 a4@12 ~@16 d5@3 [a3,g4,b4,d5]@20 a3@12 a3@7 e4@5 ~@2 e4@5 a3@13 a3@6 ~ [a3,b3,d4,f#4]@19 [a3,b3,d4,f#4]@13 [a3,b3,d4,f#4]@20 [a3,b3,d4,f#4]@19 ~@7 d3@6 [e3,b3,d4,e4]@19 [g3,b3,d4,e4]@19 ~@7 e3@5, ~@9 a4@18 ~ [d2,d3]@51 e2@50 [d2,d3]@44 e5@6 e4@13 ~@7 [e4,b4,d5]@20 ~@11 [d3,b3,d4,f#4]@19 ~ d3@25 ~@7 d3@33 ~@38 e3@26 ~@5, ~@12 d5@10 e5@6 ~@19 b4@22 f#5@3 e5@6 e3@38 g5@3 f#5@4 e5@6 ~@19 f#5@19 g5@12 ~@205, ~@15 g5@12 ~@33 a4@19 g4@12 ~@7 [g4,b4,d5]@31 ~@31 a4@10 f#5@9 ~@39 [a3,g4,a4,c#5]@13 ~@90 [a3,b3,d4,f#4]@13 g3@13 ~@26 [g3,b3,d4,e4]@11, ~@18 f#5@9 ~@20 f#5@16 d5@3 g5@12 ~@20 e5@12 a4@18 ~ a4@13 ~@6 [b4,d5]@31 a2@51 d2@52 d2@52 e2@50]/8", // Bm7 D5 E7 Bm G Bm7 E7 Em7 …
  B: "[~@2 [b3,d4]@19 [b3,d4]@20 [a2,a3,c#4,e4]@13 a3@12 a3@6 ~ [a3,b3,d4,f#4]@19 a3@6 ~ [d3,a3]@6 [b3,d4,f#4]@19 ~@20 [a3,b3,d4,f#4]@13 [e3,g3,b3,d4,e4]@19 [b3,d4,e4]@19 ~@7 e3@6 ~ [b3,d4]@19 [g3,b3,d4]@20 [a2,a3,c#4,e4]@12 [b2,a3,b3,d4,f#4]@19 ~ a3@13 a3@6 [a3,b3,d4,f#4]@13 g3@13 ~@7 d3@4, ~@2 a2@39 ~@13 d2@51 d2@52 e2@52 a2@39 ~@32 b2@32 [g2,b3,d4,f#4]@24, ~@2 g3@12 ~@7 g3@13 ~@20 [d3,b3,d4,f#4]@19 d3@26 ~@6 d3@32 ~ d3@13 ~@25 e3@26 ~@110 d3@19 ~@5, ~@92 [b3,d4,f#4]@13 a3@5 ~@15 [a3,b3,d4,f#4]@19 ~@32 g3@6 ~@14 [g3,b3,d4,e4]@13 g3@13 ~@58 [b3,d4,f#4]@19 ~@26 g3@11]/7", // Bm A Bm7 D5 Bm Bm7 Em7 E7 …
  C: "[~@2 [a3,c#4,e4,a4]@13 ~@7 e3@6 g3@13 g3@6 ~ [g3,b3,d4,f#4]@19 ~@6 d3@7 [a3,c#4,e4,a4]@13 [a3,c#4,e4,a4]@13 [g3,b3,d4,g4]@13 [a3,c#4,e4,a4]@13 a3@8 ~@5 a3@6 [b3,d4,f#4]@19 ~@7 d3@6 ~ [b3,d4]@19 ~@19 a3@6 ~ a3@6 [g3,b3,d4,e4]@13 ~@7 e3@6 [g3,b3,d4,e4]@13 [g3,b3,d4,e4]@13 [d2,d3,a3,b3,d4,f#4]@19 b3@18 b3@11 ~, ~@2 a2@26 g2@52 [a2,e3]@26 [a2,e3]@26 d2@52 d2@52 ~@12 [g3,b3,d4,e4]@13 ~@75, ~@2 e3@19 ~@7 d3@45 ~@59 [d3,b3,d4,f#4]@19 d3@26 ~@6 [a3,f#4]@19 ~ [a3,b3,d4,f#4]@19 [b3,d4,f#4]@13 e3@19 ~@82, ~@15 [a3,c#4,e4,a4]@13 [b3,d4,f#4]@20 ~@19 [g3,b3,d4,f#4]@13 ~@71 a3@13 ~@7 [a3,b3,d4,f#4]@13 d3@32 d3@19 e2@26 a2@26 ~@19 [d2,d3,a3,d4,f#4]@29 ~]/7", // A Gmaj7 A G A Bm Em7 Bm7 …
  D: "[a2,g3,b3,d4,e4]@3 ~@3 [a2,g3,b3,d4,e4]@12 [a2,g3,b3,d4,e4]@18 [a2,g3,b3,d4,e4]@11 ~", // Em7
  E: "d3@2 d3 d3@2 ~@2 d3, d2@47 ~, [a3,d4,f#4,a4]@18 [a3,c#4,e4,a4]@18 [a3,c#4,e4,a4]@11 ~, ~@5 d3@2 ~", // D A
  F: "d3@2 d3 d3@2 ~@2 d3, d2, [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2, ~@5 d3@2 ~", // G
  G: "[b2,b3,d4,f#4]@17 ~ [a3,c#4,e4]@18 [a3,c#4,e4]@12, ~@3 a2@5", // Bm A
  H: "[b2,b3,d4,f#4]@3 [a3,c#4,e4]@3 [a3,c#4,e4]@2, ~@3 a2@5", // Bm A
  I: "d3@2 d3 a3@3 ~ d3, [d2,a3,d4,f#4,a4]@3 [d2,c#4,e4,a4]@5, ~@3 d3@4 ~, ~@3 a3", // D A
  J: "[[g2,g3,b3,d4,f#4]@88 ~@2 [d2,d3,a3,b3,f#4]@24 a3@12 ~@3 d4@3 g4@3 f#4@3 ~@3 d4@3, ~@19 d2@5, ~@19 [d3,b3,d4,f#4]@3 d3@2, ~@21 a3 ~ e4]/3", // Gmaj7 Bm7 Bm
  K: "[g3,b3,d4,e4] ~@5 [e2,e3,g3,b3,d4,e4]@12 ~@12 a3@6 g4@3 f#4@3 ~@3 d4@3, [e2,e3]@2 ~@16 [e2,e3,g3,b3,d4,e4]@19 ~@5 e4@6", // Em7 E Em7
  L: "[d2,d3,a3,b3,d4,f#4]@6 a3@4 a3@2 g4 f#4 e4 d4, ~@3 [d2,d3,b3,d4,f#4]@3 ~@2", // Bm7 Bm
  M: "[g3,b3,d4] ~@5 [a2,g3,b3,d4]@12 [a2,g3,b3,d4]@18 [a2,a3,c#4,e4]@12, a2 ~@23", // G A
  N: "[[a#3,d4,f4]@23 [c4,e4,g4]@24 [a#3,d4,f4]@23 [c4,e4,g4]@23 ~ [a1,a2,a3,d4,f#4]@17 [a1,a2,b3,d4,g4]@29 ~ [a1,a2,a3,d4,f#4]@17 [a1,a2,b3,d4,g4]@29 ~ [a#3,d4,f4]@23 [c4,e4,g4]@23 [a#3,d4,f4]@23 ~ [c4,e4,g4]@23 [a1,a2,g3,b3,d4]@18 [a1,a2,a3,c#4,e4]@29 [a1,a2,b3,d4,g4]@8, [a#1,a#2]@47 [a#1,a#2]@46 ~@94 a#1@47 [a#1,a#2]@47 ~@55, ~@94 a#2@23 ~@51]/7", // A# C A# C D G D G …
  O: "[~@10 [a1,a2,c#4,e4,a4]@28 ~ d3@12 d3@6 d3@12 ~@12 d3@6 d3@12 d3@6 d3@12 ~@12 d3@6 [b2,b3,d4,f#4]@17 ~ [a3,c#4,e4]@18 [a3,c#4,e4]@12 [b2,b3,d4,f#4]@18 [a3,c#4,e4]@18 [a3,c#4,e4]@12 d3@12 d3@6 a3@18 ~@6 d3@6 d3@12 d3@6 d3@12 ~@12 d3@6 [b2,b3,d4,f#4]@18 [a3,c#4,e4]@18 [a3,c#4,e4]@12 [b2,b3,d4,f#4]@9, ~@39 d2@47 ~ d2@48 ~@96 [d2,a3,d4,f#4,a4]@18 [d2,c#4,e4,a4]@30 d2@48 ~@57, ~@39 [a3,d4,f#4,a4]@18 [a3,c#4,e4,a4]@18 [a3,c#4,e4,a4]@11 ~ [b3,d4,g4]@18 [b3,d4,g4]@18 [b3,d4,g4]@12 ~@132 a3@12 [b3,d4,g4]@18 [b3,d4,g4]@18 [b3,d4,g4]@12 ~@57, ~@23 d3@4 ~@12 d3@4 ~@8 a2@10 ~@6 a2@10 ~@6 d3@8 ~@12 d3@4 ~@8 a2@10 ~@3]/8", // A Bm A Bm A Bm A Bm …
  P: "[~@9 [a3,c#4,e4]@18 [a3,c#4,e4]@12 [g2,g3,b3,d4,f#4]@88 ~@2 [d2,d3,a3,b3,f#4]@24 a3@12 ~@3 d4@3 g4@3 f#4@3 ~@3 d4@3 [g3,b3,d4,e4] ~@5 [e2,e3,g3,b3,d4,e4]@12 ~@12 a3@6 g4@3 f#4@3 ~@3 d4@3 [d2,d3,a3,b3,d4,f#4]@18 a3@12 a3@6 g4@3 f#4@3 e4@3 d4@3 [g3,b3,d4] ~@5 [a2,g3,b3,d4]@3, ~@9 a2@30 ~@114 d2@30 [e2,e3]@2 ~@16 [e2,e3,g3,b3,d4,e4]@19 ~@29 [d2,d3,b3,d4,f#4]@18 ~@21, ~@153 [d3,b3,d4,f#4]@18 d3@12 ~@96 a2@2 ~@7, ~@55 a3@2 ~@2 e4@2 ~@14 e4@2 ~@19]/6", // A Gmaj7 Bm7 Em7 Bm7 G E Em7 …
  Q: "[~@9 [a2,g3,b3,d4]@18 [a2,a3,c#4,e4]@12 [d3,d4]@12 ~ d4@6 [d4,f#4,a4,b4]@18 ~@6 d2@6 [f#4,a4,b4]@19 ~@25 d3@6 [e3,d4]@12 ~@6 d4@6 ~@19 e3@6 a2@5, ~@39 d2@43 ~@6 d2@49 ~ e2@50 ~@4, ~@39 [f#4,a4,b4]@19 ~@18 [a4,b4]@12 d4@4 ~@15 [d4,f#4,a4,b4]@18 [d4,f#4,a4,b4]@12 ~ [e4,g4,b4]@18 [e4,g4,b4]@18 ~ [d4,e4,g4,b4]@13 ~@4, ~@52 d3@18 ~@18 d3@12 ~@19 d3@13 ~@18 e3@19 e3@12 ~@11]/4", // G A D Bm7 B7 E7 B7 Asus2 …
  R: "[~ [a3,b3,d4,g4]@2 ~@4 b3@12 ~@7 a3@6 [a2,a3,c#4,e4,a4]@12 [d4,f#4,a4,b4]@18 [f#4,a4,b4]@19 ~@6 [d2,d4]@6 d3@18 ~@25 d3@6 [e2,e4,g4,b4]@19 [d4,e4,g4]@18 [d4,e4,g4,b4]@13, ~@7 [a2,d4,g4]@25 ~@12 d2@43 ~@6 d2@25 d4@24 e3@12 ~@7 e3@12 ~@19, ~@7 a3@18 ~@19 d3@12 ~@6 [d3,d4]@12 ~@19 b4@31 d2@19 ~@18 [e2,b3]@31, ~@19 b3@13 ~@61 [f#4,a4]@49 d4@6 ~@44, ~@93 d4@4 ~@15 d3@18 b4@12 ~@50]/4", // G A Bm7 B7 D Em Em7 Dsus4 …
  S: "~@6 [a3,b3,d4,g4]@12 a2@13 a2@6 [a2,a3,c#4,e4,a4]@11, a2@3 [a3,b3,d4,g4]@3 ~@2", // G A G
  T: "~ [b3,d4,f#4]@18 b3@12 ~ b3@6 ~@6 b2@4, ~ b2@43 ~@4, ~@19 [d4,f#4]@18 ~ [b3,d4,f#4]@10", // Bm D Bm
  U: "~@2 g3@12 ~ g3@12 [a3,c#4,e4,a4]@12 [a3,c#4,e4,a4]@9, ~@2 [g2,d4,f#4,b4]@25 a2@21", // A Gmaj7
  V: "[~@3 [b3,d4,f#4]@19 ~@18 [b3,d4,f#4]@12 [a3,c#4,e4,a4]@12 ~ [a3,c#4,e4,a4]@12 [a2,a3,b3,d4,g4]@13 [a2,a3,c#4,e4,a4]@12 a3@13 ~@35 b3@3 ~@19 [b3,d4,f#4]@19 [a3,b3,d4,f#4]@13 [g3,b3,d4,e4]@13 ~@7 e3@6 [a2,g3,b3,d4]@10, ~@3 g2@49 a2@25 ~@25 d2@38 f#4@6 a5@7 [d3,b3,d4,f#4]@6 a3@7 d3@32 ~@6 e2@26 ~@10, ~@3 g3@13 ~@6 [b3,d4,f#4]@18 ~@62 [b3,d4,f#4]@19 d4@26 a3@6 d2@52 ~@12 [g3,b3,d4,e4]@13 ~@10, ~@34 g3@18 ~@50 d3@19 b3@19 d6@64 e3@19 ~@17, ~@115 a3@6 f#4@13 e6@71 ~@35]/5", // Bm A G A Bm Bm7 Em7 G …
  W: "[~@10 a2@6 d3@13 ~@7 d5@17 ~@13 d5@4 [g4,d5]@6 d5@13 ~@7, ~@3 [g3,b3,d4]@13 d2@44 f#5@3 e5@7 e3@13 ~@13, ~@8 [a4,b4,d5,f#5]@10 b4@17 [b4,e5]@10 ~@3, ~@15 d6@20 ~@13, ~@30 d3@6 [a4,f#5]@17 d5@3 [d3,g5]@14 e2@26]/2", // G5 G Bm7 E5 D G5
  X: "[~@13 e3@13 ~ [b4,d5]@20 ~@30 d5@3 [b4,d5,e5]@20 ~@14 g5@20 d5@20 ~@31 d5@3 ~ [g4,b4,d5,e5]@22 ~@24 e4@5, ~@27 d2@53 g4@4 ~@27 a5@24 ~@19 d5@24 f#5@4 e5@6 a2@52, ~@47 d5@13 a6@10 f#5@4 e5@6 e3@13 ~@75 a4@21 a3 ~@50, ~@54 e6@27 ~@26 b5@27 ~@20 f#5@21 g5@14 ~@51, ~@63 d5@4 [d3,g5,f#6]@13 e2@54 d2@55 ~@51]/5", // Bm E7 Em7 Gmaj7
  Y: "[~@14 a3@24 ~@69 d6@74 ~@11, ~@14 [d2,d3,d4]@47 f#3@28 a5@92 ~@11, ~@14 f#4@40 ~ f#4@23 f#5@96 ~@18, ~@14 b3@31 b3@25 d5@96 ~@26, ~@19 a3@13 a4@48 ~@16]/4", // D
})).s("gm_epiano2").gain(0.33).pan(0.3)

// chords · epiano2 · "tk1" · soft notes
const epiano2_soft = note(`<
  ~ A B@2 C D E F G ~@2 H@2 ~@5 I ~@13 J@2 ~@20 K@2 ~@3 L M N ~ O ~ P ~@2 Q@2 ~ R@2 S ~ T@5 U@2 ~@3
>`.pickRestart({
  A: "~@43 g4@5", B: "[~@23 a4@3 ~@22]/2", C: "e4@7 g4@19 ~@22", D: "~@35 d3@6 ~@7", E: "~@27 d3@13 ~@8",
  F: "~@11 g3@6 ~@31", G: "~@14 g3@6 ~@14 g3@7 ~@7", H: "[~@7 d3@6 ~@32 g3@6 ~@27 g3@6 ~@12]/2", I: "~@10 a3@3 ~@11",
  J: "[~@7 d4@4 ~@5]/2", K: "[~@11 d4@8 ~@13]/2", L: "~@7 [d4,f#4]@3 ~@2, ~@11 d3@9 ~@4",
  M: "~@5 d3@18 ~@25, ~@5 d4@6 ~@37", N: "~ d4 ~ d4@2 ~@3",
  O: "~@8 d3@6 ~@13 d4@6 [f#4,a4,b4]@12 ~@3, ~@9 d3@6 ~, ~@11 d4@2 ~@3", P: "~@11 e3@6 ~@12 e3@13 e3@6, ~@5 d4@12 ~@31",
  Q: "[~@45 a3@6 ~@13 g3@18 ~@14]/2", R: "[~@38 d3@19 a3@6 ~@26 a3@6 ~, ~@38 a3@13 ~@45]/2", S: "~@6 d3@7 ~@35",
  T: "[~@2 a4@21 ~@32 g4@20 a4@7 ~@26 d3@7 ~@54 [g4,b4,d5,e5]@13 a4@3 ~@18 b4@34 ~@3, ~@7 a5@8 ~@33, ~@35 e3@26 ~@14 d3@13 d3@20 ~@34 e3@20 e3@20 d3@13 ~ d3@41 ~@3, ~@42 [b4,d5,e5,f#5]@33 ~@7 a4@13 [a4,b4]@34 ~@6 g4@13 ~ [g4,b4,d5,e5]@20 ~@13 [b4,f#5]@21 ~@37, ~@42 g4@6 g5@26 ~ f#5@20 f#5@23 ~@71 a4@13 a4@13 ~@25]/5", // Em7 Bm Asus2 Em7 B5
  U: "[~@17 a3@14 ~@17, ~@2 a3@15 ~@31, ~@19 [g4,b4,d5,e5]@44 ~@33]/2", // Em7
})).s("gm_epiano2").gain(0.16).pan(0.3)

// bass · electric bass finger · "tk2"
const bass = note("<~@20 A@2 B C D E@2 F G E@2 H@3 I F J K@8 L@5 M@8 N@8 O P Q R S T U V@8 W@3 ~>".pickRestart({
  A: "[~@47 d2@18 ~ d2@30]/2", B: "a1@4 ~@2 a1@11 ~ a1@30", C: "d2@16 ~@2 d2@29 ~", D: "d2@17 ~ d2@30",
  E: "b1@17 ~ a1@30", F: "d2@17 ~ d2@29 ~", G: "d2@8 ~ d2@15", H: "[~@45 d2@11 ~ d2@14 ~, g1@2 ~]/3",
  I: "e2@3 ~@3 e2@11 ~ e2@30", J: "a1@3 ~@3 a1@10 ~@2 a1@18 a2@12",
  K: "[a#1@45 ~@2 a#1@45 ~@2 a1@16 ~ a1@16 ~@2 a1@3 b1@3 d2@6 a1@16 ~ a1@29 ~ a#1@46 a#1@46 ~ a1@17 ~ a2@29 a1@47 d2@9]/8",
  L: "[~@9 d2@29 ~ d2@17 ~ d2@30 b1@17 ~ a1@30 b1@17 ~ a1@30 d2@17 ~ d2@29 ~ d2@9]/5",
  M: "[~@9 d2@30 b1@17 ~ a1@30 b1@17 ~ a1@30 ~@90 d2@22 ~@2 d2@28 ~@2 e2@3 ~@3 e2@11 ~ e2@30 d2@17 ~ d2@29 ~ a1@3 ~@3 a1@3, ~@45 g1@32 ~@51]/8",
  N: "[~@9 a1@18 a2@12 d2@17 ~@2 d2@29 ~@2 d2@17 ~ d2@23 ~@2 d2@6 e2@18 e2@23 ~@2 e2@6 a1@17 ~ a1@24 ~ a1@6 d2@17 ~@2 d2@24 a1@6 d2@17 ~@2 d2@23 ~ a1@6 ~ e2@17 ~ e2@25 a1@5 ~]/8",
  O: "a1@17 ~ a1@23 ~@2 a1@5", P: "~ b1@47", Q: "~@2 g1@18 ~ g1@6 a1@21", R: "~ g1@15", S: "~@5 a1@43", T: "~ d2@7",
  U: "~@3 d2@13", V: "[~@12 e2@26 a1@26 d2@53 ~ e2@53 d2@53 e2@54 d2@54 ~ a1@51]/8", W: "[~@14 d2@101 ~@29]/3",
})).s("gm_electric_bass_finger").gain(0.38)

// other · synth strings 1 · "tk3"
const synth_strings_1 = note(`<
  ~@20 A@2 B C@2 D E F@2 D@2 G@3 H I B ~@7 J@3 K L@3 M N@2 O@2 P@2 Q@8 ~ R S T U V@8 ~@6
>`.pickRestart({
  A: "[~@47 d6@42 ~ d6@3 e6@3]/2", B: "a6@47 ~", C: "a6/2", D: "f#6@2 b6 a6@5", E: "f#6@12 b6@6 a6@29 ~",
  F: "[a6@95 ~]/2", G: "[f#6@44 ~ [d6,a6]@27]/3", H: "e6@47 ~", I: "[d6,a6]@47 ~",
  J: "[~@39 [a5,a6]@95 ~ [f#5,f#6]@9]/3", K: "~@3 [b5,b6]@6 [a5,a6]@29 ~ [f#5,f#6]@9",
  L: "[~@3 [b5,b6]@6 [a5,a6]@29 ~ [a5,a6]@96 [f#5,f#6]@9]/3", M: "~ [b5,b6]@2 [a5,a6]@10 [f#5,f#6]@3",
  N: "[~ [b5,b6]@2 [a5,a6]@10 [f#5,f#6]@19]/2", O: "[~@11 [d5,d6]@18 [e5,e6]@3]/2",
  P: "[~@11 [d5,d6] [e5,e6] [a5,a6]@19]/2", Q: "[~@13 [a5,a6]@115]/8", R: "~ [f#5,f#6]@47",
  S: "~@2 [f#5,f#6]@24 ~ [e5,e6]@21", T: "~ [f#5,f#6]@15", U: "~@5 [e5,e6]@43", V: "[~ [a5,a6]@63]/8",
})).s("gm_synth_strings_1").gain(0.21).pan(0.8)

// chords · reed organ · "tk5"
const reed_organ = note("<~@23 A B C D A B E C F@2 ~@4 G@7 H@2 I J K@2 L M N@3 ~@30>".pickRestart({
  A: "[f#4,d5]@18 [e4,c#5]@19 ~@11, a4@37 ~@11", // D C#m
  B: "[d4,g4,b4]@2 [d4,g4,b4] [d4,g4,b4]@3 [d4,g4,b4]@2 [d4,g4,b4]@2 [d4,f#4,a4]@2 [b3,d4,g4]@2 [a3,c#4,e4]@2", // G D G A
  C: "[b3,d4,f#4]@6 [d4,f#4,b4]@3 [c#4,e4,a4]@8 ~@7", D: "[b3,d4,f#4]@2 [d4,f#4,b4] [c#4,e4,a4]@2 ~@3",
  E: "[b3,d4,f#4]@4 [d4,f#4,b4]@2 [c#4,e4,a4]@7 ~@3", F: "[[b3,d4,f#4]@5 ~@3]/2",
  G: "[[d4,f4,a#4]@24 [e4,g4,c5]@23 [d4,f4,a#4]@23 [e4,g4,c5]@23 ~ [d4,f#4,a4]@17 [d4,g4,a4]@29 ~ [d4,f#4,a4]@17 [d4,g4,a4]@25 ~@5 [d4,f4,a#4]@23 [e4,g4,c5]@23 [d4,f4,a#4]@23 ~ [e4,g4,c5]@23 [b3,d4,g4,a4]@18 [c#4,e4,a4]@29 [b3,d4,g4,a4]@8]/7", // A# C A# C D Dsus4 D Dsus4 …
  H: "[~@10 [c#4,e4,a4]@11 ~ g4@5 f#4@6 e4@6 [f#4,d5]@18 [e4,c#5]@21 ~@9 [d4,g4,b4]@6 [d4,g4,b4]@3, ~@13 a4@13 ~@6]/2", // A D C#m G
  I: "[d4,g4,b4]@3 [d4,g4,b4]@2 [d4,g4,b4]@2 [d4,f#4,a4]@2 [b3,d4,g4]@2 [a3,c#4,e4]@2 [b3,d4,f#4]@3", // G D G A Bm
  J: "~ [d4,f#4,b4]@2 [c#4,e4,a4]@6 ~@4 [b3,d4,f#4]@3", // Bm A Bm
  K: "[~@3 [d4,f#4,b4]@6 [c#4,e4,a4]@11 ~@19 [f#4,d5]@18 [e4,c#5]@21 ~@9 [d4,g4,b4]@6 [d4,g4,b4]@3, ~@13 a4@13 ~@6]/2", // Bm A D C#m G
  L: "[d4,g4,b4]@3 [d4,g4,b4] [d4,g4,b4]@3 [d4,f#4,a4]@2 [b3,d4,g4]@2 [a3,c#4,e4]@2 [b3,d4,f#4]@3", // G D G A Bm
  M: "~ [d4,f#4,b4]@2 [c#4,e4,a4]@7 ~@3 [b3,d4,f#4]@3", // Bm A Bm
  N: "[~@3 [d4,f#4,b4]@6 [c#4,e4,a4]@16 ~@14 [b3,d4,f#4]@60 ~@45]/3", // Bm A Bm
})).s("gm_reed_organ").gain(0.3).pan(0.4)

// other · lead 1 square · "tk7"
const lead_1_square = note("<~@37 A@2 B@2 C D@2 E ~@40>".pickRestart({
  A: "[f4@3 a#4@3 d5@3 a#4@3 f5@3 d5@3 ~@2 f4@3 g4@3 c5@3 e5@3 c5@3 g5@3 e5@3 c5@3 g4@3 f4@3 a#4@3 d5@3 a#4@3 f5@2 d5@4 a#4@3 f4@2 g4@3 c5@3 e5@3 c5@3 g5@3 e5@3 c5@3 g4@3 a4@2, ~@18 a#4@5 ~@73]/2",
  B: "[~ d5@3 ~@2 d5@3 a5@3 f#5@3 d5@3 a4@3 b4@3 d5@3 g5@3 d5@3 a5@3 g5@3 d5@3 b4@3 ~@2 d5@3 f#5@3 d5@3 a5@3 f#5@3 d5@3 a4@3 b4@3 d5@3 g5@3 d5@3 a5@3 g5@3 d5@2 b4@3 f4@3 a#4@2, ~@4 f#5@4 ~@37 a4@4 ~@47]/2",
  C: "~ d5@3 a#4@3 f5@3 d5@3 a#4@3 f4@3 g4@3 c5@3 e5@3 c5@3 g5@2 e5@3 c5@3 g4@3 f4@3 a#4@3",
  D: "[d5@3 a#4@3 f5@3 d5@3 a#4@3 f4@3 g4@3 c5@3 e5@2 c5@3 g5@3 e5@3 c5@3 g4@3 g4@3 b4@3 d5@3 b4@3 g5@3 d5@3 b4@3 g4@3 ~@2 c#5@3 e5@3 c#5@3 a5@3 e5@3 c#5@3 a4@3 g4@3 b4@3 d5@2, ~@65 a4@4 ~@27]/2",
  E: "~ b4@3 g5@3 d5@3 b4@2 g4@3 a4@3 c#5@3 e5@3 c#5@3 a5@3 e5@3 c#5@3 a4@3 ~@9",
})).s("gm_lead_1_square").gain(0.24).pan(0.2)

// other · glockenspiel · "tk8"
const glockenspiel = note("<~@37 A@2 B@2 C D@2 E ~@40>".pickRestart({
  A: "[f5@3 a#5@3 d6@3 a#5@3 f6@3 d6@3 ~@2 f5@3 g5@3 c6@3 e6@3 c6@3 g6@3 e6@3 c6@3 g5@3 f5@3 a#5@3 d6@3 a#5@3 f6@2 d6@4 a#5@3 f5@2 g5@3 c6@3 e6@3 c6@3 g6@3 e6@3 c6@3 g5@3 a5@2, ~@18 a#5@5 ~@73]/2",
  B: "[~ d6@3 ~@2 d6@3 a6@3 f#6@3 d6@3 a5@3 b5@3 d6@3 g6@3 d6@3 a6@3 g6@3 d6@3 b5@3 ~@2 d6@3 f#6@3 d6@3 a6@3 f#6@3 d6@3 a5@3 b5@3 d6@3 g6@3 d6@3 a6@3 g6@3 d6@2 b5@3 f5@3 a#5@2, ~@4 f#6@4 ~@37 a5@4 ~@47]/2",
  C: "~ d6@3 a#5@3 f6@3 d6@3 a#5@3 f5@3 g5@3 c6@3 e6@3 c6@3 g6@2 e6@3 c6@3 g5@3 f5@3 a#5@3",
  D: "[d6@3 a#5@3 f6@3 d6@3 a#5@3 f5@3 g5@3 c6@3 e6@2 c6@3 g6@3 e6@3 c6@3 g5@3 g5@3 b5@3 d6@3 b5@3 g6@3 d6@3 b5@3 g5@3 ~@2 c#6@3 e6@3 c#6@3 a6@3 e6@3 c#6@3 a5@3 g5@3 b5@3 d6@2, ~@65 a5@4 ~@27]/2",
  E: "~ b5@3 g6@3 d6@3 b5@2 g5@3 a5@3 c#6@3 e6@3 c#6@3 a6@3 e6@3 c#6@3 a5@3 ~@9",
})).s("gm_glockenspiel").gain(0.24).pan(0.9)

// other · overdriven guitar · "tk9"
const overdriven_guitar = note("<~@37 A@4 B C D E@3 ~@38>".pickRestart({
  A: "[f4@6 a#3@6 d4@5 f4@24 ~@5 f4@7 a#3@5 f4@34 ~@2 f#4@11 d4@2 ~@15 a4@6 ~@4 b4@5 ~ a4@2 ~ f#4@8 ~ e4@2 d4@3 ~@3 g4@23 ~@6 f4@5, ~@111 g4@15 ~@11 a#4@2 ~@10 f4@3 ~@40]/4",
  B: "~@2 a#3@5 d4@5 ~ g4@27 ~@2 f4@6", C: "a#3@5 ~ g4@5 ~ g4@5 ~ g4@21 ~@2 g4@7",
  D: "~@2 f#4@3 e4@5 ~ a4@19 ~ e4@2 ~@2 f#4@2 ~@2 g4@9",
  E: "[f#4@3 e4@4 ~@2 g4@9 c#5@3 d5@3 e5@4 f#5@2 g5@2 ~@2 a5@78 ~@32]/3",
})).s("gm_overdriven_guitar").gain(0.45).pan(0.3)

// other · synth brass 1 · "tk11"
const synth_brass_1 = note(`<
  ~@31
  [f#5@3 g5@3 f#5@3 d5@3 b4@6 f#5@3 g5@3 f#5@3 d5@3 b4@16 ~@2]
  [f#5@3 g5@3 f#5@3 d5@3 b4@7 ~@29]
  ~@19
  [~@13 f#5 g5 f#5]
  [d5@3 b4@6 f#5@3 g5@3 f#5@3 d5@3 b4@16 ~@2 f#5@3 g5@3 f#5@3]
  [d5@3 b4@7 ~@38]
  ~@30
>`).s("gm_synth_brass_1").gain(0.17).pan(0)

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

// drums · rim
const rim = s("rim").struct("<~@59 A B C D E F G H I J K L ~@14>".pickRestart({
  A: "~ x ~@5 x ~@4", B: "~@5 x ~@23 x ~@18", C: "~@6 x ~@24 x ~@16", D: "~@7 x ~@24 x ~@15", E: "~@8 x ~@24 x ~@14",
  F: "~@5 x ~@11 x ~@6", G: "~@11 x ~@23 x ~@12", H: "~@12 x ~@24 x ~@10", I: "~@13 x ~@24 x ~@9",
  J: "~@14 x ~@24 x ~@8", K: "~@2 x ~@2 x", L: "~@17 x ~@24 x ~@5",
})).gain(0.38).pan(0.6)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@30 A ~@3 B@2 ~@16 C ~@3 D@2 ~@27>".pickRestart({
  A: "~@10 x!2 ~@4", B: "~@7 x", C: "~@7 x!2 ~@7", D: "~@11 x ~@4",
})).gain(0.27).pan(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@21 A B ~@3 C ~@3 C ~@5 D ~@2 E F ~@2 G H ~@3 I ~@3 I ~@5 J ~@26>".pickRestart({
  A: "~@4 x ~@9 x!2", B: "~@6 x!2", C: "~@7 x", D: "~@15 x", E: "~@5 x ~@8 x ~", F: "~@14 x ~@26 x ~@6",
  G: "~@11 x ~@25 x ~@10", H: "~@4 x ~@4 x ~@2", I: "~@11 x ~@4", J: "~@3 x",
})).gain(0.49).pan(0.6)

// drums · hihat
const hihat = s("hh").struct("<~@58 A B C D E F G H I ~@18>".pickRestart({
  A: "~@23 x", B: "~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6 x ~@5 x", C: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6 x ~@5 x ~@5",
  D: "x ~@5 x ~@5 x ~@5 x ~@6 x ~@5 x ~@5 x ~@5 x ~@4", E: "~ x ~@5 x ~@5 x ~@6 x ~@5 x ~@5 x ~@5 x ~@5 x ~@3",
  F: "~@2 x ~@5 x ~@6 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@2", G: "~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6 x",
  H: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6 x ~@5", I: "x ~@5 x ~@5 x ~@5 x ~@5 x ~@6 x ~@16",
})).gain(0.27).pan(0.6)

// drums · mid tom
const mid_tom = s("mt").struct("<~@20 A B C ~@13 D ~ E F G ~ H I J ~@13 K ~@26>".pickRestart({
  A: "~@47 x", B: "~@2 x ~@5 x ~@18 x ~@2 x ~@5 x ~@11", C: "~@6 x ~@2 x!2 ~@5", D: "~@6 x!2", E: "~@23 x",
  F: "~@7 x ~@2 x ~@13 x ~@2 x ~@5 x ~@2 x ~@2 x ~@8", G: "~@5 x ~@2 x ~@11 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@9",
  H: "~@41 x ~@6", I: "~@2 x ~@2 x ~@14 x ~@2 x ~@4 x ~@2 x ~@2 x ~@11 x ~",
  J: "~ x ~@2 x ~@5 x ~@7 x ~@5 x ~@2 x ~@2 x ~@2 x ~@14", K: "~@9 x ~ x ~@4",
})).gain(0.49).pan(0.6)

// drums · open hat
const open_hat = s("oh").struct("<~@31 A ~@21 B ~@12 C ~@4 D E F ~@11>".pickRestart({
  A: "~@7 x", B: "~@11 x ~@4", C: "~@37 x ~@5 x ~@4", D: "~@25 x ~@3 x ~@4 x ~@4 x ~@3 x ~@3 x", E: "~@39 x ~@3 x ~@4",
  F: "x ~@3 x ~@2 x ~@40",
})).gain(0.16).pan(0.6)

// drums · crash
const crash = s("cr").struct(`<
  ~@21 A B C ~@3 C ~@3 C D ~ C@2 E F G H I D J K L ~@3 M ~@3 M ~ N M@2 O P ~@12 Q ~@13
// … 37 more lines

More by Styx