Strudelify

Don't Chain My Heart

Toto

KeyB minorTempo107 bpm
0:00/0:00
// Don't Chain My Heart — Toto
// 107 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 126 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): DistorGui.
setcpm(107/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.

// bass · electric bass finger · "FingrdBas"
const bass = note(`<
  ~ A B C D A B C D A B C D A B C D A B C E F G H I J K L M@2 F N O P F Q R S A T U V A T U W X Y Z AA F G H AB J AC AD
  AE@2 F AF AG P F AH AI AJ AK AL AM AN AO AP AQ AR@2 A T U V A T AS AT AU Y AV AA F G H AW J AX AY AZ@2 BA BB BC P BA
  BD BE BF F BG O BH BA BI BJ BK F N O BL BA BM BJ BK F BN BO BP ~
>`.pickRestart({
  A: "b1 ~ b1 ~ b1 ~ b1@3 ~ f#1 a1", B: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@4 ~@2 d2@5 ~", C: "e2 ~ e2 ~ e2 ~ e2@3 ~ b1 d2",
  D: "e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@4 ~@2 d2@5 ~", E: "e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2 ~ e2@4 d2@5 ~",
  F: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@6 b1 ~ b1@2 d2@2", G: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ a1@2 a1@2",
  H: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@6 a1 ~ b1@2 d2@2", I: "e2 ~ b1 ~ e1@2 ~@2 e1@2 ~@2 e2@6 b1 ~ d2@4",
  J: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@6 b1 ~ d1@2 d1@2", K: "d1 ~ a1 ~ d2@2 ~@2 d2@2 ~@2 d2@6 a1 ~ a1@2 e2@2",
  L: "a2@2 ~@2 a1@2 ~@2 a1@2 ~@2 e2@2 a1@2 c#2@2 ~@3 [a1,a#1] [b1,c2,c#2] [d#2,e2,f2], ~@18 d2@5 ~", // A#maj7
  M: "[[f#1,f#2]@22 ~@2 [f#2,d3]@23 ~, ~@23 f#1@24 ~]/2", N: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ d2@2 e2@2",
  O: "e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@6 e2 ~ e2@2 g1@2", P: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 a1 ~@3 a1@2 ~@2 a1@3 ~",
  Q: "d2 ~ d2 ~ d2 ~ d2@3 f#2@3, ~@18 e2 ~@5", R: "e2 b1 e1 ~ e2 ~ e1@3 e1 f#1 g1",
  S: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 a1@4 a1 ~ f#1@4 a1@2", T: "b1 ~ b1 ~ b1 ~ b1@2 ~ d2@3",
  U: "e2 ~ e2 ~ e2 ~ e2@3 e1@2 f#1", V: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@4 g1 ~@2 a1 ~@2 a1@2, ~@9 g1 ~@2",
  W: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@2 a1@3 ~ a1@2", X: "b1 ~ b1 ~ b1 ~ b1@3 f#1!2 a1",
  Y: "b1 ~ b1 ~ b1 ~ b1@2 ~@3 e1, ~@3 d2", Z: "e1 ~ e1 ~ e1 ~ e1@3 e1@2 f#1",
  AA: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@2 ~ a1 ~@2 a1@2, ~@9 g1 ~@2", AB: "e2@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@5 ~ f#1@6",
  AC: "d1@2 ~@2 d1@2 ~@2 d1@2 ~@2 d1@6 d1 ~ d1@2 a1@2",
  AD: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@5 ~ a1@2 e2@2 b1 [c2,c#2,d#2], ~@11 f#2", // Cm
  AE: "[[f#1,f#2]@22 ~@2 [f#2,d3]@23 ~, [e2,f2] ~@22 f#1@24 ~]/2", AF: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 f#2@5",
  AG: "e2 ~ b1@2 e1@2 ~@2 e1@2 ~@2 e1@6 e1 ~ e1@2 g1@2", AH: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ d2@2 f#2@2",
  AI: "e2 b1 e2 ~ e2 ~ e2@3 e1 f#1 g1", AJ: "g1@3 ~ g1@2 ~@2 g1@2 g1@2 f#1@3 ~ f#1@2 ~@2 f#1@4",
  AK: "e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@6 e1 ~ f#1@2 a1@2", AL: "b1@3 ~ b0@2 ~@2 b0@2 ~@2 b0@6 b0@3 ~ g1@2",
  AM: "a1@3 ~ a1@2 ~@2 a1@2 ~@2 a1@6 a1@3 ~ a1@2", AN: "g1@3 ~ g1@2 g1@3 ~ g1@2 g1@5 ~ a1@3 ~ d2@2",
  AO: "e2 ~ b1@2 e2@2 ~@2 e2@2 ~@2 e2@6 e2 d2@4 ~", AP: "b1@2 c3 ~ c3@2 b2@2 b1 ~ b1@2 b2@5 g1 f#1@3 ~@3",
  AQ: "a1@2 ~@2 a1@2 ~@2 a1 ~ a1@2 a1@6 a1@2 c#2@2 b1 [c2,c#2,d2], ~@11 e2",
  AR: "[[d#2,f2] ~@11 f#2@11 ~@7 f#1@6 f#1@6 f#1@5 ~, f#2@4 ~@2 f#2@6 ~@12 [f#2,d3]@23 ~, f#1@3 ~ f#1@6 f#1@13 f#1@6 ~@19]/2", // D#sus2 D
  AS: "e2 ~ b1 ~ e1@2 ~@2 e1@2 ~@2 e1@5 ~ e1 ~ e1 ~ f#1@2", AT: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@2 a1@2 a1@2 a1@2",
  AU: "b1 ~ b1 ~ b1 ~ b1@3 b0 f#1 a1", AV: "e2 ~ b1@2 e1@2 ~@2 e1@2 ~@2 [e1,e2]@6 e1@4 f#1@2",
  AW: "e2 ~ b1 ~ e1@2 ~@2 e1@2 ~@2 e1@5 ~ g1@5 ~", AX: "d1 ~ d1 ~ d1 ~ d1@3 d1@2 e2",
  AY: "a2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2@4 a2@2 a1@2 c#2@2 c#2 [d2,d#2,f2], ~@11 e2", // Dm
  AZ: "[[f#1,f#2]@22 ~@2 f#2@23 ~, ~@23 f#1@24 ~]/2", BA: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@6 b1 ~ b1@2 d1@2",
  BB: "d1@2 ~@2 d1@2 ~@2 d1@2 ~@2 d1@3 ~ d1@2 f#1@3 ~ f#1@2", BC: "e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@6 e1 ~ e1@2 g1@2",
  BD: "[d2,a2]@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 a1 ~ a1@2 b1@2", BE: "a1 ~ a1 ~ a1 ~ a1@3 e1 f#1 g1",
  BF: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 b1 ~ b1@2 ~@3 a1@2 ~ f#1@2, ~@9 b1 ~@2",
  BG: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ e2@2 f#2@2", BH: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 a1 ~@3 a1@2 ~@2 d2@2 a1@2",
  BI: "d1 ~ d1 ~ d1@2 ~@2 d1@2 ~@2 d1@6 d1@2 b1 ~ b1@2", BJ: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  BK: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 f#1@3 ~ e1@3 ~ d1@3 ~", BL: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 a1 ~@3 a1@2 ~@2 a1@2 ~@2",
  BM: "d1 ~ d1 ~ d1@2 ~@2 d1@2 ~@2 d1 d1@2 ~@3 d1@2 ~@2 b1@2", BN: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ d2@2 g1@2",
  BO: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@6 g1 ~ g1@2 g1@2", BP: "g1 ~@3 g1@2 ~@2 g1@2 ~@2 a1 ~@3 a1@2 ~@2 a1@2 ~@2",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · piano · "Piano 2"
const piano = note(`<
  ~@21 A B C D A B C E F G H I J G K I L A M N O P Q R S T U V W A B C X A B C E Y Z AA I AB AC@2 I AD AE AF AG AH@2
  AI@2 AJ AK AL AM N AN AO AP@2 S T AQ V AR A AS C AT AU AV C AW AX Z AA I AB AC@2 AY AZ BA BB I BC@3 AY BD BA BB I BE
  BF@2 AY BD BA BB BG BE BH
>`.pickRestart({
  A: "[b1,b2,b3,d4,f#4,b4]@11 ~", B: "[d2,d3,a3,d4,f#4,a4]@11 ~", C: "[a3,c#4,e4,a4]@23 ~, [a1,a2]@7 ~",
  D: "[e2,e3,b3,d4,e4,g4]@3 ~", E: "[f#1,f#2,f#3,b3]@23 ~, [c#4,f#4]@7 ~",
  F: "~@6 [b3,b4]@3 ~ [f#3,a#3,d4]@2 [d4,d5]@3 ~ [f#3,a#3,d4]@2 [e4,e5]@4 [f#3,a#3,d4]@2, [f#1,f#2]@23 ~, [f#3,a#3,d4,f#4]@3 ~@5", // B F#aug D F#aug E F#aug F# F#aug
  G: "[b1,b2]@17 ~ [b1,b2]@2 a3 ~ [d4,f#4] ~, [d4,f#4]@7 ~, b3@9 ~@2 b3", // B D
  H: "~@4 a3@2 ~@2 a3@3 ~ [a3,d4]@10 ~@2, [d3,f#4]@11 ~, d4 ~, a3 ~@5, ~ d2@21 ~@2", // D5 D
  I: "d4@2 d4 ~ e3 d4 [e3,b3,d4]@3 ~@2 b3, [e4,g4]@11 ~, [e2,b3]@6 e2@5 ~, e3 ~@2 [e3,g3,d4]", // E7 Em E5 Em7
  J: "g1@3 ~@3 [g2,a3]@5 ~ [a1,a2,e3,a3,c#4]@4 e3 ~@2 b3@5, d3@5 ~@4 [a2,a3,c#4]@3, [g2,g3,a3,d4]@6 g3 ~@11 e4@4 ~@2, ~@4 g1@6 ~@6 a1@7 ~", // Gsus2 A Gsus2
  K: "~@4 a3@2 ~@2 a3@3 ~ [a3,d4]@6 [a3,d4,f#4]@6, d3@7 ~, f#4@17 ~@7, d4 ~, a3 d2@21 ~@2", // D5 D
  L: "g1 ~ d3 [g2,b3,b4]@2 ~ e3 ~@2 [e3,a3]@3, [g2,g3,a3,b3]@6 ~@6 [a2,a3,b3]@5 ~@7, ~ d4@2 ~@2 [d4,d5]@2 [e4,e5]@3 ~@2, ~@2 g1@3 ~@3 a2@4", // G A5 G Asus2 D E
  M: "~@5 [a3,d4], ~@4 [f#3,b3] ~, ~@3 [d2,d3]", N: "[e2,e3]@23 ~, [b3,e4]@3 ~",
  O: "[g1,g2]@3 [a1,a2], [g3,a3,d4]@23 ~", P: "[f#3,b3]@2 e3@2 [f#3,b3]@19 ~, [b1,b2]@23 ~, ~@2 a3 ~@21",
  Q: "[b1,b2]@14 ~ [f#3,b3]@3 ~@2 [a3,d4]@3 ~, ~@18 [d2,d3]@5 ~", R: "[e2,e3,b3,e4]@19 ~@5",
  S: "[g3,a3,d4]@5 ~ [g1,g2,d3,g3,d4]@3 [a1,a2,e3,a3,c#4]@3, [g1,g2] ~", // Gsus2 G5 A G
  T: "[f#3,b3]@15 ~@3 b2@2 f#3 ~ b2@2, [b1,b2]@3 ~, ~@15 [b3,d4]@4 ~@5, ~@4 [d3,g#3] [d3,g#3,b3,d4]", // B5 B Bm Ddim G#dim
  U: "[b1,b2,d3,f#3,b3,d4]@2 [b1,b2] [d2,d3,a3,d4]", V: "[e2,e3]@11 ~, [b3,e4]@3 ~, g#3@2 ~",
  W: "g3@3 ~ g3@3 ~ g3@3 ~ [g1,g2,g3,a3,d4]@6 ~ a3@5, [g1,g2,a3,d4]@11 ~@7 [a1,a2,c#4]@6, ~@9 g3 ~@2", // Gsus2 A
  X: "~@10 [f#3,f#4]@2 [a4,a5]@3 ~ [b4,b5]@3 ~ [d5,d6]@3 ~, [e2,e3,b3,d4,e4,g4]@3 ~", // F# A B D Em7
  Y: "~@6 [b3,b4]@3 ~ d4@2 [d4,d5]@4 ~@2 [e4,e5]@4 [f#3,a#3,d4]@2, [f#1,f#2]@23 ~, [f#3,a#3,d4,f#4]@3 a#3@2 ~@3, ~@10 f#3@6 [f#3,a#3,d4]@5 ~@3", // B D E F#aug F# F#aug
  Z: "[b1,b2]@17 ~ [b1,b2]@2 a3 ~ [b3,d4]@2, [d4,f#4]@21 ~ f#4 ~, b3@3 ~", // B Bm D
  AA: "a3@4 a3@2 ~@2 a3@3 ~ [a3,d4]@10 ~@2, [d2,d3,f#4]@11 ~, d4 ~", // D5 D
  AB: "g1@3 ~@3 [g2,a3]@5 ~ [a1,a2,e3,a3,c#4]@4 e3 ~@2 b3@5, d3@5 ~@4 [a2,e3,a3,c#4]@3, [g2,g3,a3,d4]@6 g3 ~@17, ~@4 g1@6 ~@6 a1@7 ~", // Gsus2 A Gsus2
  AC: "[[b1,b2]@17 ~ [b1,b2]@2 a3@2 ~@6 a3@2 ~@2 a3@3 ~ [a3,d4]@6 [a3,d4,f#4]@6, [d4,f#4]@21 ~ f#4@20 ~@6, b3@18 ~@4 d4@11 ~@15, ~@11 a3@3 ~@10, ~@8 [d2,d3]@7 ~]/2", // B D5 D
  AD: "g1@3 ~ d3@2 ~@2 f#4@2 a4@2 b4@2 [d4,d5] ~ [e4,e5] ~ [f#4,f#5]@2 [a4,a5] ~ [b4,b5] ~, [g2,g3,a3,b3]@3 [g2,b3]@2 ~ [a2,e3,a3]@2 a2@4, ~@4 g1@6 ~@2 b3 ~@5 [e3,a3]@6", // D E F# A B G A5
  AE: "[g3,b3,d4]@6 [d4,e4,g4,a4,b4]@13 ~@5, [e2,e3]@23 ~", // G Em7 E
  AF: "[b3,d4,f#4]@12 [b3,d4,f#4]@4 [b3,b4]@3 ~ b4@3 ~, [b1,b2], ~@20 b3 ~@3", AG: "[a1,a2,b3,c#4,e4,a4]@11 ~",
  AH: "[[g3,a3,d4]@10 d3@2 [e3,e4] ~ [e4,e5] ~ [f#4,f#5] ~@3 a5@3 ~ e3@15 ~@3 [b4,b5]@3 ~ [b4,b5]@2, [g1,g2]@23 ~ e2@21 ~@3, ~@10 d4 ~@7 [d3,d4]@2 ~@4 e5@10 ~@14, ~@19 a4@3 ~ [b4,b5]@11 ~@6 [e3,b3]@7 ~]/2", // Gsus2 E F# B G D B E5
  AI: "[[b1,b2,b3,d4,f#4]@17 ~ [b4,b5]@3 ~@3 [a1,a2]@18 [a4,a5]@5 ~, ~@22 [a4,a5]@19 ~@7]/2", // Bm B A
  AJ: "[f#3,c#4,f#4]@8 [a3,a4] [b3,b4] [d4,d5] ~, [f#1,f#2]@23 ~, b3@7 ~@5", // F#5 A B D F#
  AK: "~@2 a3@2 [b3,b4] ~ d4@2 [e4,e5] ~ [f#4,f#5] ~ [a4,a5]@2 [b4,b5] ~ [d5,d6] ~ [e5,e6] ~ [f#5,f#6] ~ [a5,a6] ~, [f#1,f#2]@23 ~, [f#3,a#3,f#4]@3 a#3@2 ~@3, d4@6 ~@4 f#3@6 [f#3,a#3,d4]@5 ~@3, ~@2 a4 ~@3 d5 ~@3 d4@2 ~@12", // B E F# A B D E F# …
  AL: "[b5,b6]@3 ~@11 e6 f#6 a6 f#6 [f#6,a6] a6 f#6 [f#6,a6] a6 f#6, [b1,b2]@11 ~", // B F#m B
  AM: "[f#6,a6] a6 f#6 f#6@2 [f#6,a6] ~@2 b5@2 ~@2 [b2,f#3,b3]@5 ~ [d2,d3,a3,d4]@6, ~@3 a6 ~@2 [e6,f6]@2 ~@16, ~@7 d6@2 ~@15", // F#m B5 D5 Fmaj7
  AN: "[g1,g2,g3,a3]@3 [a1,a2,a3,c#4], d4@2 ~", AO: "[b1,b2]@23 ~, [f#3,b3]@19 ~@5",
  AP: "[[b1,b2]@14 ~ [f#3,b3]@3 ~@2 [a3,d4]@3 ~ [e3,b3,e4]@19 ~@5, ~@18 [d2,d3]@5 e2@19 ~@6]/2", // B B5 D5 E5 D
  AQ: "[b1,b2,d3,f#3,b3,d4]@6 ~@2 [f#3,b3,f#4] ~ [a3,d4,a4]@2, ~@2 [b1,b2] [d2,d3]", // Bm B5 D5 B D
  AR: "[g1,g2,g3,a3,d4]@11 ~ [g1,g2,a3,d4]@6 [a1,a2,e3,a3,c#4]@6", // Gsus2 A
  AS: "[a3,a4]@2 a4 ~ a3@2 ~@14 a3@4, [d2,d3,d4,f#4]@11 ~", // A D
  AT: "~@16 a3@2 d5@2 d4 ~ [b4,b5] ~, [e2,e3,b3,d4,e4,g4]@18 d4 ~@3 b3@2", // B Em7
  AU: "[b3,b4]@15 ~ [b3,b4]@6 ~@2, [b1,b2,d4,f#4]@11 ~", AV: "[d2,d3,a3,d4,f#4,a4]@11 [f#3,a3,d4]",
  AW: "~@10 [a4,a5] ~ b5@6 ~@6, [f#1,f#2,f#3,b3]@23 ~, [c#4,f#4]@7 ~, ~@3 b4 ~@2", // A B5 F#5
  AX: "~@6 [b3,b4]@3 ~ d4@2 [d4,d5]@4 ~@2 [e4,e5]@4 b3@2, [f#1,f#2]@23 ~, [a#3,d4,f#4,a#4]@3 a#3@2 ~@3, ~@10 f#3@6 [f#3,a#3,d4]@5 ~@3", // B D E F# A#aug F#aug
  AY: "[a2,a3]@2 a2 ~ a2@2 [a1,a2,a3]@5 ~, [e3,c#4]@23 ~, a1 ~, ~@3 a3@2 ~@7", // A C#m
  AZ: "g1@3 ~@5 [a3,a4]@4 ~@2 [e3,a3]@2 ~@4 [e4,e5]@4, [g3,a3,d4]@3 g2@2 ~ [a2,b3,b4]@2 a2@4, g2@2 g1@3 ~@4 [e3,a3]@3, ~@3 [f#3,f#4]@4 ~@9 [d4,d5]@4 ~@4", // A A5 E Gsus2 Asus2 A5 F# D
  BA: "[b1,b2]@17 ~ [b1,b2]@2 a3 ~ [b3,d4]@2, [d4,f#4]@21 ~ f#4 ~, b4@15 ~@3 b4@5 ~", // B Bm D
  BB: "a3@4 a3@2 ~@2 a3@3 ~ [a3,d4]@10 ~@2, [d2,d3,f#4,a4]@11 ~, d4 ~", // D5 D
  BC: "[g1@3 ~@3 [a3,d4,d5]@6 [a1,a2,e3,a3,c#4]@4 e3 ~ [e4,e5]@3 ~@3 [b1,b2]@17 ~ [b1,b2]@2 a3@2 ~@6 a3@2 ~@2 a3@3 ~ [a3,d4]@6 [a3,d4,f#4]@6, d3@10 ~@14 d4@21 ~ d4@11 ~@15, [g2,g3,a3,d4]@3 g2@2 ~@4 [a2,e3,a3,c#4]@3 b3@9 ~@2 a3@3 ~@10, ~@4 g1@6 ~@6 a1@7 ~@25 [d2,d3]@21 ~@3, ~@6 g3 ~@15 [f#4,f#5]@23 ~ f#4@20 ~@6]/3", // D5 A E B D5 D Gsus2 A …
  BD: "[g1,b3,d4,f#4]@2 g3@2 [a3,c#4,e4]@2 g3@2 [a4,a5] ~ [b4,b5]@2 e5@2 d5 ~ b4@2 e5@2 d5@2 b4@2, g2@4 g1@6 ~@2 d#5 ~@11, ~@3 g2@2 ~ a2@2 a2@4", // Gmaj7 A B
  BE: "g1@3 ~@3 g2@4 e5@2 ~@4 e3 ~ d5@3 ~ e5@2, d3@5 ~@4 [a2,e3,a3,c#4]@3, [g2,g3,a3,d4]@3 [a3,d4,d5]@3 ~ b4@2 ~@3, ~@4 g1@6 ~@2 [a1,a2,e3,a3,c#4]@4 a1@7 ~, ~@6 g3 ~@17", // A Gsus2 D5 A
  BF: "[[b1,b2]@17 ~ [b1,b2]@2 a3@2 ~@6 a3@2 ~@2 a3@3 ~ [a3,d4]@6 [a3,d4,f#4]@6, d4@21 ~ f#4@20 ~@6, b3@18 ~@4 d4@11 ~@15, ~@11 a3@3 ~@10, ~@8 [d2,d3]@7 ~]/2", // B D5 D
  BG: "g2@6 g2@5 ~, [g3,a3,b3,d4]@11 ~", BH: "[b1,b2]@17 ~@7, d4@7 ~, b3@19 ~@5",
})).s("gm_piano").gain(0.3).pan(0.7)

// chords · distortion guitar · "DistorGui"
const distortion_guitar = note("<~@22 A B ~@2 A B ~@23 A B ~@2 A B ~@32 A ~@3 A ~@32>".pickRestart({
  A: "f#2@23 ~", B: "e3@23 ~",
})).s("gm_distortion_guitar").gain(0.45).pan(0.7)

// chords · overdriven guitar · "OverdrGui"
const overdriven_guitar = note(`<
  ~@4 A B@4 ~@3 C@3 ~ D ~@3 E F G H I F G H J K L M N O L M N O ~@3 P@3 ~ Q R@2 ~@2 F G H I F G H J K L M N O L M N S T
  U V@2 W X Y Z AA ~ AB AC AD AE AF AG@2 AH@2 AI AJ F G AK AL F G AK AM K L M N O L M AN O L M N O L M AN O L M AO@2
  AP@8 ~
>`.pickRestart({
  A: "~@16 [d4,a4]@2 e4@2 f4 e4 [b3,d4] ~", // D5 Bm
  B: "[~@16 a3@2 b3@2 d4@2 b3@18 ~@2 [b2,e3]@2 d3@2 e3@15 ~@6 f#3 ~@2 e3@14 ~@6 [d3,f#3,d4,a4]@3 ~ [d3,b3,d4,f#4,b4]@2, ~@66 e3@2 ~@2 d3 ~@25]/4", // E5 D Bm
  C: "[~@16 f#3@2 [d3,a3,d4]@3 ~ [a3,d4]@26 ~@4 b3@6 a3@2 ~@12, ~@11 d3@14 ~@11]/3", // D5
  D: "~@15 g4@2 ~ d4@2 e4 ~@3, ~@14 [d4,a4]@3 ~@7", E: "~@14 b3 ~ b3 ~ f#4@3 ~@3", F: "[f#3,b3]@23 ~",
  G: "[d3,a3]@23 ~", H: "~ e4@23, [a3,c#4]@23 ~", I: "~ e4@22 ~, [e3,g3,b3]@11 ~", J: "~ f#4@22 ~, [f#3,b3,c#4]@11 ~",
  K: "[f#3,a#3,d4,f#4]", // F#aug
  L: "b2@2 ~@2 [b3,d4,f#4]@2 ~@4 b3@2 b2@8 ~@2 f#3 ~, f#2@23 ~, f#3@8 ~@4 [f#3,b3,d4,f#4]@11 ~, [b3,d4,f#4]@2 ~ b3@2 ~@7, ~ b2@3 [b2,f#3]@2 ~@4 b2@2", // Bm B5
  M: "d3@2 ~@2 [a3,d4,f#4]@2 ~@4 a3@2 d3@8 ~@2 f#3 ~, f#2@23 ~, [a3,d4,f#4]@4 ~@2 a3@4 ~@2 [f#3,a3,d4,f#4]@11 ~, f#3 ~ d3@6 [d3,f#3]@4 ~@8 d3@4", // D
  N: "b2@2 ~@2 [g3,b3,e4]@2 ~@4 g3@2 b2@8 ~@2 e3 ~, e2@23 ~, e3@8 ~@4 [e3,g3,b3,e4]@11 ~, [g3,b3,e4]@2 ~ g3@2 ~@7, ~ b2@3 [b2,e3]@2 ~@4 b2@2", // Em E5
  O: "d3 ~ [a3,d4] [d3,g3,a3,d4,g4]@3 [a2,e3,a3,c#4,e4,a4]@3 [a2,e3,a3,c#4,e4,a4]@3, g2 ~, g3 ~@3, [a3,d4,g4] ~@5, ~ d3@2 ~@9", // D5 Dsus4 A Dsus4
  P: "[~@16 f#3@2 [d3,a3,d4]@3 ~ [d3,a3,d4]@50]/3", Q: "~@12 [d4,a4]@2 ~ d3 a3 ~@3 a3 ~@3, ~@7 g4 ~@4",
  R: "[b3 ~ e3 a3 ~@3 [f#3,b3] ~@4 [f#3,b3]@30 ~@6]/2", // B5
  S: "d3 ~ [a3,d4] [d3,g3,a3,d4,g4]@3 [f#2,d3,f#3,a3,d4,f#4]@3 [f#2,d3,f#3,a3,d4,f#4]@3, g2 ~, g3 ~@3, [a3,d4,g4] ~@5, ~ d3@2 ~@9", // D5 Dsus4 D Dsus4
  T: "~@6 [d4,e4,g4,b4]@7 ~@5 d4@6", U: "b3@2 ~@2 f#3 ~@3 f#3 ~@3 [a3,d4]@12",
  V: "[~@10 c#4@2 a3@2 ~@2 c#4@7 ~ d4@23 ~, ~@14 [a3,e4]@9 [g3,b3]@24 ~]/2", // A5 G
  W: "~@14 e3 ~ e3@2 [e4,a4]@2 g4@2 [d3,a3]@2", X: "~@6 f#3@2 a3@2 f#3@2 [a3,d4]@7 ~ f#4@4",
  Y: "e4@6 d4@3 ~ c#4@14, a3", Z: "[f#2,c#3,f#3,b3,c#4,f#4]@11 ~", AA: "[f#2,a#2,f#3,a#3,d4,f#4]",
  AB: "~@10 e4@2 f4@2 ~@2 b3@2 e4@3 ~ d4@2, ~@7 e4 ~@4, ~@15 d4@2 ~@7", AC: "e4@3 ~ e4@11 d4 b3 [g3,a3] e3@2 ~@4",
  AD: "~@4 e4@2 e4@5 ~ d4@2 b3@2 a3@2 a4@2 e4 ~ d4@2", AE: "~@2 a4@2 e4 ~ d4 ~ b3 ~ a3@2 a4@2 e4 ~ d4 ~ b3@2 a3 ~ b3 ~",
  AF: "e4@2 ~@2 d4@8 b3@2 a3@2 b3@7 ~",
  AG: "[b3 ~ b3 ~@3 e5@3 ~@3 e5@3 ~ d5@2 b4@9 b4@4 ~ b4@3 ~ b4@4 b4@3 ~ b4@3 ~]/2",
  AH: "[b4@6 b3 ~ b3 ~ b5@8 ~@4 e5@4 d5@4 b4@4 b4@8 d5@4 ~@2]/2",
  AI: "~@3 f#4 d5 b4@2 ~ b4@2 d5 ~ b4 d5 b4 ~ b4 a4 b4 a4 ~ b4 d5 b4, ~@15 a4@2 ~@3 [f#4,a4]@2 ~@2", // F#m
  AJ: "a4@2 b4@2 b4@2 f4@2 e4 d4 ~ b3 a3@2 ~ e4 b3 ~ e4@2 d4@4", AK: "[a3,c#4,e4]@23 ~", AL: "[e3,g3,b3,e4]@11 ~",
  AM: "[f#3,b3,c#4,f#4]@11 ~", // F#sus4
  AN: "a2@2 ~@2 [a3,c#4,e4]@2 ~@4 a3@2 a2@8 ~@2 e3 ~, e2@23 ~, e3@8 ~@4 [e3,a3,c#4,e4]@11 ~, [a3,c#4,e4]@2 ~ a3@2 ~@7, ~ a2@3 [a2,e3]@2 ~@4 a2@2", // A A5
  AO: "[b2@2 ~@2 [g3,b3,e4]@2 ~@4 g3@2 b2@8 ~@2 e3 ~ d3@2 ~@2 [a3,d4]@2 [d3,g3,a3,d4,g4]@6 [f#2,c#3,f#3,a3,c#4,e4]@6 [f#2,e3,a3,c#4,e4,a4]@5 f#2, e2@23 g2@12 ~@13, e3@8 ~@4 [e3,g3,b3,e4]@11 ~ [a3,d4,g4]@4 ~@20, [g3,b3,e4]@2 ~ g3@2 ~@7 g3@3 ~@9, ~ b2@3 [b2,e3]@2 ~@4 b2@2 ~ d3@2 ~@9]/2", // Em D5 Dsus4 F#m7 Em Dsus4 Em E5
  AP: "[b2@2 ~@2 [b3,d4,f#4]@2 ~@4 b3@2 b2@8 ~@2 f#3 ~ d3@2 ~@2 [a3,d4,f#4]@2 ~@4 a3@2 d3@8 ~@2 f#3 ~ a2@2 ~@2 [a3,c#4,e4]@2 ~@4 a3@2 a2@8 ~@2 e3 ~ d3@2 ~@2 [a3,d4]@2 [d3,g3,a3,d4,g4]@6 [a2,e3,a3,c#4,e4,a4]@6 [a2,e3,a3,c#4,e4,a4]@5 ~ b2@2 ~@2 [b3,d4,f#4]@2 ~@4 b3@2 b2@8 ~@2 f#3 ~ d3@2 ~@2 [a3,d4,f#4]@2 ~@4 a3@2 d3@8 ~@2 f#3 ~ b2@2 ~@2 [g3,b3,g4]@2 ~@4 g3@2 b2@8 ~@2 d3 ~ d3 ~@3 [a3,d4]@2 [d3,g3,a3,d4,g4]@6 [a2,e3,a3,c#4,e4,a4]@6 [a2,e3,a3,c#4,e4,a4]@6, f#3@8 ~@4 [f#3,b3,d4,f#4]@11 f#2@23 ~ e2@23 ~ g2@12 ~@12 f#2@23 ~ f#2@23 ~ g2@23 ~ g2@12 ~@13, [b3,d4,f#4]@4 ~@2 b3@4 ~@14 [a3,d4,f#4]@4 ~@2 a3@4 ~@2 [f#3,a3,d4,f#4]@11 ~ e3@8 ~@4 [e3,a3,c#4,e4]@11 ~ [a3,d4,g4]@4 ~@20 [b3,d4,f#4]@4 ~@2 b3@4 ~@14 [a3,d4,f#4]@4 ~@2 a3@4 ~@16 b2@6 [b2,d3]@4 ~@8 b2@4 ~@2 d3@4 ~@18, ~@2 b2@6 [b2,f#3]@4 ~@8 b2@4 f#3 ~ d3@6 [d3,f#3]@4 ~@8 d3@4 [a3,c#4,e4]@4 ~@2 a3@4 ~@14 g3@6 ~@18 f#3@8 ~@4 [f#3,b3,d4,f#4]@11 ~ f#3 ~@11 [f#3,a3,d4,f#4]@11 ~ [g3,b3,g4]@4 ~@2 g3@4 ~@14 g3@6 ~@18, ~@50 a2@6 [a2,e3]@4 ~@8 a2@4 ~@2 d3@4 ~@20 b2@6 [b2,f#3]@4 ~@8 b2@4 ~@2 d3@6 [d3,f#3]@4 ~@8 d3@4 d3@8 ~@4 [d3,g3,b3,g4]@11 ~ [a3,d4,g4]@4 ~@20]/8", // Bm D A D5 Dsus4 A Bm D …
})).s("gm_overdriven_guitar").gain(0.35).pan(0.2)

// chords · rock organ · "Organ 3"
const rock_organ = note(`<
  ~@5 A ~@2 B ~@16 C D@2 E F G H I J K L M N ~@19 O F P Q R S P Q R T U V W X Y Z W AA AB AC@2 AD AE AF@2 AG@2 AH@2 AD
  AI AJ AK@3 Z AL@2 AM AB AN@2 AO@2 AP@3 AQ AR@2 AO@2 AP@3 AS@3 AO@2 AP@3 AT AU AV@2 AW ~
>`.pickRestart({
  A: "[d5,e5,f#5,b5]@3 f5 c5 b4 ~@18", B: "~@11 f6 f#6@6 [f6,g6] ~ f#6 d6 b5 ~, ~@12 e6 ~@5 e6@2 ~ e6@2 ~",
  C: "[a4,d5]@15 ~ a4@4 g#4@3 ~, ~@2 d5", D: "[~ [a4,d5]@22 ~ e4@24, ~@23 a4@24 ~]/2", E: "[c#5,f#5,b5]@11 ~",
  F: "[a#5,d6,f#6]@23 ~", G: "[f#5,b5,d6]@7 ~@5 [f#5,b5,d6]@5 ~ [f#5,b5,d6]@5 ~",
  H: "[f#5,a5,d6]@4 [f#5,a5] ~@5 [f#5,a5,d6]@7 ~ [f#5,a5,d6]@5 ~", // D F#m D
  I: "[g5,b5,e6]@4 [g5,b5] ~@7 [g5,b5,e6]@6 ~@2 [g5,b5,e6]@4", J: "[g5,a5,d6]@11 ~ [e5,d6]@5 ~ [e5,c#6]@6, ~ a5",
  K: "[f#5,b5,d6]@4 b5 ~@7 [f#5,b5,d6]@5 ~ [f#5,b5,d6]@5 ~", // Bm
  L: "[f#5,a5,d6]@4 [f#5,a5] ~@5 [f#5,a5,d6]@8 [f#5,a5,d6]@6", // D F#m D
  M: "[g5,b5,e6]@4 g5 ~@5 [g5,b5,e6] ~@2 [g5,b5,e6] ~@4 b5@5 ~, ~@17 [g5,e6]@5 ~@2", // Em C
  N: "[g5,a5,d6]@12 [e5,a5,c#6]@6 ~@3 d6 b5@2, ~@9 e6!2 ~, ~@19 f6@2 ~@3", O: "[f#5,b5,c#6]@23 ~",
  P: "[f#5,b5,d6]@6 ~@8 [f#5,b5,d6] ~@3 [f#5,b5,d6]@6", Q: "[f#5,a5,d6]@6 ~@8 [f#5,a5,d6] ~@3 [f#5,a5,d6]@5 ~",
  R: "[g5,b5]@14 [g5,b5,e6] ~@3 [g5,b5,e6]@5 ~, e6 ~@3", S: "[g5,a5,d6]@12 [e5,a5,d6]@5 ~ [e5,a5,c#6]@6",
  T: "[b4,d5,e5,g5]@6 [b4,e5,g5]@6 [a4,f#5]@5 ~ [a4,d5,f#5]@6, ~@6 d5@11 ~@7", U: "[g5,b5,e6]",
  V: "[b5,d6,f#6]@17 ~ [b5,d6,f#6]@5 ~", W: "[a5,c#6,e6]@23 ~", X: "[g5,b5,d6]@3 [g5,b5,d6]", Y: "[g5,b5,e6]@23 ~",
  Z: "[f#5,b5,d6]", AA: "[b5,c#6,f#6]", AB: "[a#5,d6,f#6]", AC: "[f#4@35 ~ f#4@5 ~ [a4,d5]@6, b4@41 ~@7]/2",
  AD: "[b4,e5]", AE: "d5@3 c#5, a4", AF: "[[f#4,b4]@7 [a4,d5]]/2",
  AG: "[e5@24 ~@11 f6 f#6@5 f6 e6@2 f#6 d6 b5 ~, b4@7 [a4,c#5], ~@4 d5@3 ~, ~@36 e6 ~@5 g6 ~@2 e6@2 ~]/2", // A
  AH: "[f#4@6 f#4 [a4,d5], b4@7 ~]/2", AI: "[a4,d5]@3 [a4,c#5]", AJ: "[f#5,b5,d6]@23 ~",
  AK: "[d6@17 ~ e6@3 f#6 e6 ~@18 e6@3 f#6 e6 ~@2 [e5,g5]@18 [e5,g5]@6, [f#5,a5]@22 d6@2 [e5,a5]@23 e6@24 ~, ~@23 e6@17 ~@6 d6@26]/3", // Em F#m A5
  AL: "[[f#5,a5,d6]@18 e6@3 f#6 [d6,e6] ~ e5@24, ~@18 [f#5,a5]@5 [a5,e6]@25]/2", AM: "[b5,c#6,f#6]@23 ~",
  AN: "[f#5@5 ~ f#5@5 ~ f#5 ~ [f#5,b5,d6]@3 ~ [f#5,b5]@6 f#5@5 ~ f#5@5 ~@3 [a5,d6]@4 [f#5,a5,d6]@6, [b5,d6]@2 ~ d6@3 ~@2, ~@24 a5@12 f#5@5 ~@7]/2", // Bm B5 D5 D Bm
  AO: "[[g5,e6]@5 ~ e6@6 g5 ~ [g5,e6]@4 [g5,e6]@5 ~ [g5,d6]@6 g5@5 ~ [e5,a5]@6 [e5,a5,c#6]@6, b5@6 ~ b5@11 ~@6, ~@6 g5@5 ~@19 d6@12 ~@6]/2", // C G5 A5 A
  AP: "[[f#5,b5,d6]@5 ~ [b5,d6]@6 f#5 ~ [f#5,d6]@4 ~@6 a5@5 ~ [a5,d6]@6 f#5 ~ [f#5,a5,d6]@4 [f#5,d6]@5 ~ [c#6,e6]@6 [c#6,e6]@6 ~@2 [c#6,e6]@4 [a5,c#6,e6]@6, ~@6 f#5@5 ~@3 b5@10 ~@18 a5@11 ~ a5@5 ~ a5@5 ~@7, ~@18 [f#5,d6]@11 ~ f#5@5 ~@37]/3", // Bm D D5 D C#m A D
  AQ: "[g5,d6]@5 ~ g5@5 ~ [f#5,a5]@12, b5, ~ d6@3", // G5 F#m
  AR: "[[f#5,d6]@5 ~ [f#5,b5,d6]@6 f#5 ~ [f#5,b5,d6]@3 ~ [f#5,b5]@6 f#5@5 ~ f#5@5 ~@3 [a5,d6]@4 [f#5,a5,d6]@6, b5 ~@17 d6@18 ~@12, ~@24 a5@12 f#5@5 ~@7]/2", // D Bm B5 D5 D
  AS: "[[f#5,b5,d6]@3 ~ [e5,a5,c#6]@3 ~ [d5,g5,b5]@4 ~ f6@2 ~ b5@2 ~@3 d6 b5!2 d6@6 [f#5,b5,d6]@6 f#5 ~ [f#5,b5,d6]@3 ~ [f#5,b5]@6 f#5@5 ~ f#5@5 ~@3 [a5,d6]@4 [f#5,a5,d6]@6, ~ a6 ~@4, ~@12 e6@3 d6@3 e6@2 e6@2 ~ f#5@6 ~@19 a5@12 f#5@5 ~@7, ~@19 f6@2 ~@21 d6@18 ~@12]/3", // Bm A G Bm B5 D5 D
  AT: "[f#5,b5,d6]@3 ~ [e5,a5,c#6]@3 ~ [d5,g5,b5]@4 ~ f6@2 ~ b5@2 ~@3 d6 b5@2, ~ a6, ~@12 e6@3 d6@3 e6@2 e6@2 ~@2, ~@19 f6@2 ~@3", // Bm A G
  AU: "[f#5,d6]@23 ~, b5 ~@23", AV: "[[f#5,a5]@24 [g5,b5]@23 ~, d6@47 ~]/2", AW: "[g5,a5,d6]@11 ~ [e5,a5,c#6]@12",
})).s("gm_rock_organ").gain(0.25).pan(0.6)

// chords · pad poly · "Polysynth"
const pad_poly = note("<~@38 A@2 B C A@2 D C E@2 F@2 ~@76>".pickRestart({
  A: "[[f#3,b3]@11 [a3,d4]]/2", B: "~ [b3,e4]@23", C: "[a3,d4]@3 [a3,c#4]", D: "[b3,e4]", E: "[[f#3,b3]@7 [a3,d4]]/2",
  F: "[[b3,e4]@23 ~ a3@18 [a3,c#4]@6, ~@23 d4@18 ~@7]/2", // E5 A
})).s("gm_pad_poly").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~ A@4 B@24 C B@28 D B@7 E B@8 F B@19 D ~ B@7 E B@7 G B@7 ~ B@4 ~>".pickRestart({
  A: "x!4", B: "x!2", C: "~@2 x ~@2 x ~@2 x ~@2 x", D: "x", E: "x ~@7 x ~@2 x", F: "~@2 x ~@2 x ~@6", G: "x!4 ~@2",
})).gain(0.4)

// drums · snare
// … 114 more lines

More by Toto