Strudelify
Working for the Weekend cover art

1995 · Get Lucky

Working for the Weekend

Loverboy

KeyB minorTempo147 bpm
0:00/0:00
// Working for the Weekend — Loverboy
// 147 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 133 bars on a 16-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): OVERDRIVE.
setcpm(147/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 · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~ A B A B C B A D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK B AK B AL B AM AN AO AP
  AQ AR AS@2 AT AU AV AW AX AY K AZ BA BB BC BD BE BF BG BH BI BJ W X Y BK AA BL AC AD AE BM AG AH AI AJ AK B AK B AL B
  BN@2 BO@2 BP@2 BQ@2 AM AN AO AP AQ AR AS@2 AK B AK B AL B AK B AK B AK B AL B AM AN AO AP AQ BR@4 BS
>`.pickRestart({
  A: "~ [b2,f#3,b3]!2 [b2,f#3] f#3!2 [f#3,b3] [b2,f#3,b3], ~@4 b2@3 ~, ~@2 b3 ~", B: "~ e2 f2 f#2 a2 e2 f2 f#2",
  C: "~ [b2,f#3]!4 f#3 [f#3,b3] [b2,f#3,b3], ~ b3@2 ~ b3@2 ~@2, ~@5 b2@2 ~", D: "~ e2 f2 f#2 a2 e2 f2 a2",
  E: "[b2,f#3]@4 f#3@2 f#3 ~ [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 ~@2, ~@2 [b2,b3]@2 ~ b3@3", // B5 B
  F: "[b2,f#3,b3]@2 [b2,f#3]@2 b2@2 f#3!2 ~@2 b2@2 [b2,f#3,b3]@2 ~@2, ~@3 b2@2 ~@3, ~@3 b3 ~@4", // B5
  G: "[g2,d3]@4 [g2,d3,g3]@2 d3 ~ [g2,d3]@2 [g2,d3]@2 ~@2 [g2,d3]@2, ~@5 g3@2 ~", // G5
  H: "[d3,g3]@2 d3@2 [g2,d3]@2 [g2,d3,g3]@2 g2 ~ f#2@2 g2@2 a2@2, g2 ~@3", // G5
  I: "b2@2 [b2,f#3,b3] ~ b2 [b2,f#3,b3] b2!2, ~@3 f#3@2 ~ f#3@2", // B5
  J: "[b2,f#3,b3] [b2,f#3]!3 b2 [b2,f#3] [b2,f#3,b3] ~, ~@3 b3@2 ~@3", K: "[g#2,d#3,g#3]@3 [g#2,d#3,g#3]@4 ~",
  L: "[e2,b2,e3]@6 [e2,b3]@9 ~, ~@6 [b2,e3]@7 ~@3", // E5
  M: "[b2,f#3,b3]@2 [f#3,b3] f#3 b2 f#3!2 b2, ~@2 b2@2 ~ b3@3, ~@5 b2@2 ~", // B5
  N: "[f#3,b3]@2 f#3@2 b2@2 b2@4 b2@2 ~ f#3 ~@2, b2@2 ~ f#3@3 [b2,b3] ~, ~@3 b3 ~@4", // B5 B
  O: "[g2,d3,g3]@4 [g2,d3,g3]@2 d3 ~ g2@2 d3@2 d3@2 [g2,d3]@2, ~@5 g3@3, ~@10 g2 ~@5", // G5
  P: "[g2,d3] g2 [g2,d3] [g2,d3,g3] ~ f#2 g2 a2, g3@3 ~@5", // G5
  Q: "b2@4 [b2,f#3]@2 f#3@2 [b2,f#3]@2 ~ b2 [b2,f#3]@2 b2@2, ~@2 b3@3 b3@2 ~, ~@5 f#3 ~@2", // B5
  R: "[b2,b3]@4 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 f#3!2 ~@2, f#3@2 ~@4 b3@6 [b2,b3]@3 ~", // B B5 B
  S: "[g#2,d#3,g#3]@6 [g#2,d#3,g#3]@9 ~", T: "[e2,b2,e3]@3 [e2,b2,e3,b3]@4 [c#3,g#3,c#4]",
  U: "[d3,a3,d4]@2 [d3,a3,d4] [d3,a3]!5, ~@10 d4@5 ~", // D5
  V: "[a3,d4]@2 a3@2 [d3,a3]@2 [d3,a3,d4]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3]@3 ~, d3@4 ~@8 d4 ~@3", // D5
  W: "[g2,d3]@2 g2@2 d3@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@3 ~ g2@2, g3!2 ~@2, ~@4 g2 ~@11", // G5
  X: "g2@2 f#2@2 f#2@2 e2@2 e2@2 f#2@2 g2@2 a2 ~", Y: "[d3,a3]@2 [d3,a3,d4] [d3,a3] d3 [a3,d4] a3 [d3,a3], ~@5 d3@2 ~",
  Z: "[d3,a3] d3 [d3,a3] [a3,d4] a3 [d3,a3]!2 [g2,d3], d4@6 d3@4 ~@2 d4 ~@3", // D5 G5
  AA: "[g2,d3,g3]@2 [g2,d3]!3 [g2,d3,g3]@2 [g2,d3,g3], ~@2 g3@3 ~@3", // G5
  AB: "~@2 [e3,a3]@2 [e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3] ~ b2@2 c#3@2, ~ a2@2 ~@5", // A5
  AC: "[d3,a3]@2 [d3,a3]!3 [d3,a3,d4] [d3,a3]!2, ~@2 d4@3 ~@3", // D5
  AD: "[a3,d4]@2 a3 ~ [d3,a3]@2 [d3,a3,d4]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3,d4] ~ [g2,d3]@2, d3 ~@3", // D5 G5
  AE: "[d3,g3] ~ [g2,d3]!2 [g2,d3,g3] g2!3, g2 g3 ~@2", AF: "g2@2 f#2@2 f#2@2 e2@2 e2@2 f#2@2 g2 ~ a2@2",
  AG: "d3@2 [a3,d4] a3 [d3,a3]!3 d3, ~@2 d3@2 ~ d4@3", // D5
  AH: "[d3,a3,d4]@2 d3@2 [d3,a3]@2 [d3,a3,d4]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3,d4]@2 f#2 ~", // D5
  AI: "[g2,d3,g3] g2 [g2,d3]!3 g2@2 [g2,d3], ~@2 g3@3 g3@3, ~@5 d3 ~@2", AJ: "[g2,d3,g3] ~@7",
  AK: "~ [b2,f#3,b3] [b2,f#3] b2 f#3!3 [b2,f#3,b3], ~@4 b2@3 ~, ~@2 b3 ~", // B5
  AL: "~ [b2,f#3] b2 [b2,f#3]!2 f#3 [f#3,b3] [b2,f#3,b3], ~ b3@2 ~ b3@2 ~@2, ~@5 b2@2 ~", // B5
  AM: "[g2,d3,g3]@2 d3!2 [g2,d3,g3] g2 a2 b2, ~ [g2,g3] ~@2", // G5 G
  AN: "c3@4 [g3,c4]@2 g3@2 [c3,g3]@2 [g3,c4]@2 g3@2 [c3,g3,c4] ~, ~@2 c3@2 ~ c3@2 ~", // C5
  AO: "[g2,d3,g3]@4 [g2,d3,g3]@2 [g2,d3]@2 [g2,d3]@2 g2@2 a2 ~ b2@2, ~@2 g3 ~", // G5
  AP: "c3@4 [g3,c4]@2 ~@2 c3@2 g3@2 [g3,c4]@2 [c3,g3,c4] ~, ~@2 c3@2 ~ c3@2 ~", // C5
  AQ: "[g2,d3,g3]@2 [g2,d3,g3]!2 g2!2 a2 b2, ~@8 d3 ~@7", // G5
  AR: "c3@4 [c3,g3]@4 c3@2 g3@2 g3@2 [c3,g3] ~, ~@2 c4 ~@2 [c3,c4]@2 ~", // C5 C
  AS: "[[b2,f#3]@2 f#3!2 b2 [f#3,b3]!3 [f#3,b3] ~@7, ~@2 b3@3 ~@11, ~@2 b2@2 ~ b2@2 b2@2 ~@7]/2", // B5
  AT: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ b2 ~", // B5
  AU: "~@4 [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [a#2,f3] ~ [a2,e3] ~ [g#2,d#3] ~", // B5 A#5 A5 G#5
  AV: "[g2,d3] ~ g2 ~ d3 ~ [g2,d3] ~ d3 ~@3 [g2,d3] ~@3", AW: "~@4 d3@2 ~@2 [g2,d3] ~ [g#2,d#3] ~ a2 ~ [a#2,f3] ~",
  AX: "[b2,f#3] ~ f#3 ~ f#3 ~ [b2,f#3] ~@3 [b2,f#3] ~ f#3 ~@3", // B5
  AY: "[b2,f#3] ~ [b2,f#3] ~@3 b2 ~@3 f#3 ~ [b2,f#3] ~ b2 ~", AZ: "[e2,b2]@6 [b2,e3]@7 ~@3, ~@3 e2@5",
  BA: "[b2,f#3,b3]@2 b2 ~ [b2,f#3]@2 b2 ~@3 [b2,f#3] ~ [b2,f#3] ~ b2 ~", // B5
  BB: "[b2,f#3] ~@3 b2 ~ b2 ~ [b2,f#3,b3]@2 [a#2,f3] ~ [a2,e3] ~ [g#2,d#3] ~", // B5 A#5 A5 G#5
  BC: "[g2,d3] ~ d3 ~ d3 ~ [g2,d3] ~@3 [g2,d3] ~ [g2,d3] ~@3", // G5
  BD: "~@4 [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g#2,d#3] ~ [a2,e3] ~ [a#2,f3] ~", // G5 G#5 A5 A#5
  BE: "[b2,f#3] ~ [b2,f#3] ~ [f#3,b3] ~ b2 ~@3 [b2,f#3] ~ b2 ~ b2 ~", // B5
  BF: "[b2,f#3] ~@3 f#3 ~ [b2,f#3,b3] ~ f#3 ~ f#3 ~ [b2,f#3] ~ b2 ~", // B5
  BG: "[g#2,d#3]@2 g#2 [g#2,d#3,g#3]@3 [g#2,d#3,g#3] ~, g#3@3 ~@5", // G#5
  BH: "e2@2 [e2,b2] [e2,b2,e3]!2 [e2,b2] [e2,b2,e3]!2, e3@3 ~@5, b2 ~@7", BI: "d4@2 [d3,a3,d4] [d3,a3]!5, ~@10 d4@5 ~",
  BJ: "[a3,d4]@2 a3@2 [d3,a3]@2 [d3,a3,d4]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3,d4] ~@3, d3 ~@3", // D5
  BK: "[d3,a3]@2 d3@2 [d3,a3]@2 [a3,d4]@2 a3@2 [d3,a3]@2 [d3,a3,d4] ~ [g2,d3]@2, d4@3 d3@2 ~@3", // D5 G5
  BL: "~@2 [e3,a3]@2 [e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3] ~ b2@2 c#3 ~, ~ a2@2 ~@5", // A5
  BM: "g2@2 f#2@2 f#2@2 e2@2 e2@2 f#2@2 g2 ~ a2 ~", BN: "[[g2,d3]@15 ~, g3@27 ~@5]/2", BO: "[[b2,b3]@15 ~]/2",
  BP: "[[g2,d3,g3]@15 ~]/2", BQ: "[[b2,f#3,b3]@31 ~]/2",
  BR: "[c3@2 [c3,g3]@2 c3 g3!2 [b2,f#3]@24 ~, ~@2 c4 ~@2 [c3,c4]@2 ~@25]/4", BS: "[b2,f#3,b3] ~@7",
})).s("gm_overdriven_guitar").gain(0.38).pan(0.4)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  ~@5 A ~@3 B C D E ~ F ~ G H I J K L M ~@2 N O P ~ Q R ~@2 S T ~@2 U V W ~ X ~ X ~ Y ~@2 Z AA AB AC AD F ~ AE AF AG AH
  AI AJ ~ AK AL AM AN AO AP AQ ~ AR N O P ~ Q R ~@2 S T ~@2 U V W ~ X ~ X ~ Y ~@3 AS@2 ~@5 Z AA AB AC AD F ~ X ~ X ~ Y ~
  X ~ X ~ X ~ Y ~@2 Z AA AB AC AT ~@4
>`.pickRestart({
  A: "~@3 b3 ~@4", B: "b3@2 ~@5 b2", C: "~@2 f#3 ~ f#3!2 ~@2", D: "g3@2 ~ g3@2 ~ g2 ~, ~@6 g2 ~@9", E: "~ g3@2 ~@5",
  F: "~@4 f#3 ~@3", G: "b3@3 ~@5", H: "~@4 f#3 ~@2 f#3", I: "~@2 f#3 ~@5", J: "~@4 d3 ~ g2 ~, ~@3 g3@2 ~@3",
  K: "~ d3 ~@6", L: "~@7 f#3", M: "~ f#3 ~@6", N: "~@6 d4@2 ~@7 d4", O: "~@5 d4 ~ [g2,d3]", P: "~@8 g3@2 g3@3 ~@3",
  Q: "~@4 a3 ~@3, ~@3 d4@2 ~@3", R: "~@2 a3@2 ~@6 d4@2 ~@3 g3", S: "~@6 d4 ~", T: "~@2 d4 ~@2 d4 ~ g3", U: "~@7 a3",
  V: "~ a3 ~@6", W: "~ d3 ~@4 d3 ~", X: "~@2 b3 f#3 ~@2 b3 ~", Y: "~@2 f#3 b3 ~@4", Z: "~@6 c4 ~", AA: "~@3 g3 ~@4",
  AB: "~@6 g3@2 g3@2 ~ c4 ~@4", AC: "~@8 g3@3 ~@5", AD: "~@6 c4@2 g3@2 ~@4 c4 ~", AE: "~@14 f#3 ~",
  AF: "[b2,f#3] ~ [b2,f#3] ~ b3 ~ b3 ~ b3 ~ a#3 ~ a3 ~@3", AG: "~@2 d3 ~ [g2,g3] ~@3 g2 ~ [g2,d3] ~ g3 ~ g2 ~",
  AH: "[g2,d3] ~ [g2,d3] ~ g2@2 [g2,d3] ~ g3 ~ g#3 ~ a3 ~ a#3 ~", // G5
  AI: "b3 ~ b2 ~ [b2,b3] ~@3 [b2,f#3] ~@3 b2 ~ [b2,f#3] ~", AJ: "b3 ~@3 [b2,f#3] ~ [f#3,b3] ~ [b2,f#3]@2 b2 ~ b3 ~@3",
  AK: "e3@6 b3@9 ~", AL: "~@4 b3@2 ~@2 b2 ~ b3 ~ b3 ~ f#3 ~", AM: "~@2 [b2,f#3] ~ f#3 ~ f#3 ~@5 a3 ~ g#3 ~",
  AN: "g3 ~@3 g3 ~@3 [g2,d3] ~@3 g3 ~ [g2,d3] ~", AO: "[g2,d3] ~ [g2,d3] ~ g3 ~@3 g3 ~@3 a3 ~ a#3 ~",
  AP: "b3 ~@5 f#3 ~ [b2,f#3] ~ b3 ~ f#3 ~ f#3 ~", AQ: "b3 ~ [b2,f#3] ~ b2 ~@3 b2 ~ b2 ~@5", AR: "~@5 e3 ~@2",
  AS: "[f#3@15 ~]/2", AT: "~@3 c4 g3 ~@3",
})).s("gm_overdriven_guitar").gain(0.22).pan(0.4)

// bass · electric bass finger · "FINGERDBA"
const bass = note(`<
  ~ A B A B A B A B C D E F G H I J G D E F G H I K L M E N L O P Q L R P N L S E T A B A B A B U V U W U X G B G Y E Z
  AA H AB J G Y E Z G H AB AC L M E N L O P Q L R P N L S E T A B A B A B AD AE AF AG AH P H AI AJ AK U AL U X G B A B A
  B A B A B A B A B A B U AM U AN U AO@4 AP
>`.pickRestart({
  A: "~@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", B: "b1 e1 f1 f#1 a1 e1 f1 f#1",
  C: "a1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", D: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1@2 e1@2 f#1@2",
  E: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", F: "g1 ~ g1 ~ g1 ~ g1 ~ g1@2 e1@2 f#1@2 a1@2",
  G: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", H: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1@2 f#1@2",
  I: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 f#1", J: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2 a1@2",
  K: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2 b1@2 c#2@2", L: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2 b1@2 a1@2",
  M: "d2 ~ d1 ~ d1 ~ d1 ~ d1 ~ d2@2 e1@2 f#1@2", N: "g1@2 f#1 ~ f#1@2 e1 ~ e1@2 f#1@2 g1@2 a1@2",
  O: "d2 ~ d1 ~ d2 ~ d2 ~ d2 ~ d2@2 e1@2 f#1@2", P: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2",
  Q: "~@2 a1 ~ a1 ~ a1 ~ a1 ~ a1@2 b1@2 c#2@2", R: "d2 ~ d2 ~ d2 ~ d1 ~ d2 ~ d2@2 e1@2 f#1@2",
  S: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2 e1@2 f#1@2", T: "g1 ~@7", U: "g1@3 ~ g1@3 ~ g1@4 a1@2 b1@2",
  V: "c2@3 ~ c2@4 d2@2 e1@2 f1@2 f#1@2", W: "c2@2 ~@2 c2 ~ c2 ~ c2@4 b1@2 a1@2",
  X: "c2@3 ~ c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2@2", Y: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 a#1@2 a1@2 g#1@2",
  Z: "g1 ~ g1 ~ g1 ~ g1 ~ g1@2 g#1@2 a1@2 a#1@2", AA: "b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  AB: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1@2", AC: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2",
  AD: "g1@3 ~ g1@3 ~ g1@3 ~ g1 ~ e1@2", AE: "g1@3 ~ g1@3 ~ g1@2 e1@2 f#1@2 g1@2", AF: "b1@3 ~ b1@3 ~ b1@3 ~ b1@2 f#1@2",
  AG: "b1@2 ~@2 b1@3 ~ b1 ~ b1@2 c#2@2 d2@2", AH: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1@2",
  AI: "b1 ~ b1 ~ b1 ~ b1 ~ b1@2 e1@2 f1@2 f#1@2", AJ: "g1@3 ~ g1@3 ~ g1@2 g1@2 a1@2 b1@2",
  AK: "c2@3 ~ c2@4 c2@2 e1@2 f1@2 f#1@2", AL: "c2@2 ~@2 c2@3 ~ d2@2 e1@2 f1@2 f#1@2",
  AM: "c2@3 ~ c2@4 c2 ~ c2@2 b1@2 f#1@2", AN: "c2@2 d2 e2@3 f#2 g2", AO: "[c2@3 ~ c2 ~ c2 ~ c2 ~ c2@2 c2 ~ b1@49 ~]/4",
  AP: "b1 ~@7",
})).s("gm_electric_bass_finger").gain(0.49)

// other · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note(`<
  ~ A B C B D B D B ~@6 E F G ~@5 E H I J K L I J K M N O P Q R S T U A B V B D B W X Y X Y X Z B ~@6 E F G ~@5 E H I J
  K L I J K M N O P Q R S T U A B AA B D B AB@2 AC@2 AB@2 AC@2 W X Y X Y X Z B A B C B D B D B A B AA B D B W X Y X Y
  AD@2 ~@3
>`.pickRestart({
  A: "~ [f#4,b4]@2 ~ [f4,b4]@2 ~ [e4,b4]", B: "~ e3 f3 f#3 a3 e3 f3 f#3",
  C: "~@2 [f#4,b4]@3 ~@3 [f4,b4]@3 ~@3 [e4,b4]@2", D: "~@2 [f#4,b4]@3 ~@3 [f4,b4]@4 ~@2 [e4,b4]@2",
  E: "b3 c#4 d#4 b3 c#4 d#4 b3 c#4", F: "d#4 b3 c#4 d#4 b3 c#4 d#4 f4", G: "f#4 ~", H: "d#4 b3 c#4 d#4 b3 c#4 d#4 c#4",
  I: "d4@2 a3 d4 e4 a4 d4 e4", J: "a4 d4 e4 d4 f#3 a3 b3 a3", K: "d4 e4 a4 d4 e4 a4 d4 e4",
  L: "a4 d4 e4 a4 d4 e4 a4 e4", M: "a4 d4 e4 g4 d4 e4 g4 e4", N: "d5 a3 d4 a4 a3 d4 d5 a3",
  O: "d4 a4 a3 d4 d5 a3 d4 a4", P: "a3 d4 d5 a3 d4 a4 a3 d4", Q: "d5 a3 d4 a4 a3 d4 d5 ~", R: "a3 d4 a4 a3 d4 a4 a3 d4",
  S: "a4 a3 d4 a4 a3 d4 a4 a3", T: "d4 a4 a3 d4 a4 a3 d4 a4", U: "g3 ~@15",
  V: "~@2 [f#4,b4]@4 ~@2 [f4,b4]@3 ~@3 [e4,b4]@2", W: "[d4,g4,d5]@15 ~", X: "[c4,g4,d5]@15 ~", Y: "[d4,g4,d5]",
  Z: "[b3,f#4,b4]@15 ~", AA: "~@2 [f#4,b4]@3 ~@3 [f4,b4]@3 ~@2 [e4,b4]@3", AB: "[[g3,d4,g4]@31 ~]/2",
  AC: "[a3,d4,f#4,b4]/2", AD: "[[c4,g4,d5]@13 ~ [b3,f#4,b4]@15 ~@3]/2",
})).s("gm_synth_strings_2").gain(0.49).pan(0.7)

// other · pad halo · "HALO PAD"
const pad_halo = note("<~@25 A@3 ~ B@3 ~ C D@2 ~ C E@2 ~@31 F@3 ~ G@3 ~ C D@2 ~ C H@2 ~@47>".pickRestart({
  A: "[~@4 f#4@2 d4@2 f#4@2 d4@3 ~ f#4@4 d4@4 f#4@4 d4@3 ~ f#4@4 b3@8 ~@6]/3",
  B: "[~@4 f#4@2 d4@2 f#4@2 d4@4 f#4@4 d4@4 f#4@3 ~ c#4@4 b3@7 ~@11]/3", C: "~@2 f#4 d4 f#4 d4@2 f#4",
  D: "[~@2 d4@4 f#4@4 d4@3 ~ f#4@4 b3@8 ~@6]/2", E: "[~@2 d4@3 ~ f#4@4 c#4@4 b3@7 ~@11]/2",
  F: "[~@2 f#4 d4 f#4 d4@2 f#4@2 d4@2 f#4@2 d4@2 f#4@2 b3@4 ~@3]/3",
  G: "[~@4 f#4@2 d4@2 f#4@2 d4@4 f#4@4 d4@4 f#4@3 ~ c#4@4 b3@9 ~@9]/3", H: "[~@2 d4@3 ~ f#4@4 c#4@4 b3@8 ~@10]/2",
})).s("gm_pad_halo").gain(0.4).pan(0.4)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~ A ~ B ~ C ~ C ~@7 D E F ~@5 G E H ~@15 A ~ I ~ C ~@15 D E F ~@5 G E H ~@15 A ~ J ~ C ~@17 A ~ B ~ C ~ C ~ A ~ J ~ C
  ~@11
>`.pickRestart({
  A: "~ [f#4,b4]@2 ~ [f4,b4]@2 ~ [e4,b4]", B: "~@2 [f#4,b4]@3 ~@3 [f4,b4]@3 ~@3 [e4,b4]@2",
  C: "~@2 [f#4,b4]@3 ~@3 [f4,b4]@4 ~@2 [e4,b4]@2", D: "g#3 a#3 b3 g#3 a#3 b3 g#3 a#3",
  E: "b3 g#3 a#3 b3 g#3 a#3 b3 g#3", F: "[f#3,b3] ~", G: "g#3@2 a#3 ~ b3@2 g#3@2 a#3@2 b3@2 g#3@2 a#3@2", H: "f#3 ~@3",
  I: "~@2 [f#4,b4]@4 ~@2 [f4,b4]@3 ~@3 [e4,b4]@2", J: "~@2 [f#4,b4]@3 ~@3 [f4,b4]@3 ~@2 [e4,b4]@3",
})).s("gm_synth_strings_1").gain(0.49).pan(0.4)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_2 = note("<~@15 A@3 ~@5 A@3 ~@35 A@3 ~@5 A@3 ~@61>".pickRestart({
  A: "[b3 ~ d#4 b3 ~ d#4 b3 ~ d#4 b3 ~ d#4 b3 c#4 d#4 g#3@3 ~@6, ~ c#4@2 ~ c#4@2 ~ c#4@2 ~ c#4@2 ~@12]/3",
})).s("gm_overdriven_guitar").gain(0.49).pan(0.6)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft_2 = note("<~@17 A ~@7 A ~@37 A ~@7 A ~@61>".pickRestart({
  A: "~@4 f3@7 ~@5",
})).s("gm_overdriven_guitar").gain(0.16).pan(0.6)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_3 = note("<~@47 A@4 B@4 ~@38 C@2 D E F G H I A@4 B@4 ~@14 A@4 J@4 ~@2>".pickRestart({
  A: "[g2@2 g2!2 g2@2 g2!2 g2@2 g3@4 f#3@4 e3@4 d3@4 e3@3 ~ g2@4 g2!2 g2@2 g2!2 g2@2 g3@4 f#3@4 e3@4 d3@10]/4",
  B: "[g2@2 g2!2 g2@2 g2!2 g2@2 g3@4 f#3@4 e3@4 d3@4 e3@4 f#3@19 ~ e2@2 f2@2 f#2@2 a2@2 e2@2 f2@2 f#2@2]/4",
  C: "[b4!2 [g4,b4]!2 ~ b4!3 ~ b4 [d4,g4,b4] [g4,b4]!5 [g4,b4]!2 b4!2 [g4,b4]!2 ~ b4 ~ b4 [g4,b4]@2 ~ b4 [d4,g4,b4] [g4,b4], d4@3 d4@2 ~ d4@3 d4@6 ~, g4 ~ [g4,b4] g4 [g4,b4] ~@4 g4 ~ [g4,b4]!2 ~ [g4,b4] ~]/2", // G
  D: "[d4,f#4,b4] [f#4,b4]!7 b4!2 ~ b4 f#4!2 [f#4,b4]!2, ~ d4!3, ~@4 f#4 [f#4,b4] b4 ~", // Bm B5
  E: "~ b4!3 [f#4,b4]!2 [d4,f#4,b4] [f#4,b4] ~ b4 ~ b4 [f#4,b4]!4, [d4,f#4,b4] d4@2 ~ [d4,f#4,b4]!2 d4@2, ~ f#4 ~@6", // B5 Bm B5 Bm
  F: "b4!2 ~ b4 ~ b4!5 ~ b4!3 ~ b4, d4@2 [d4,g4,b4] d4 d4@2 d4@2, g4 [g4,b4] ~ g4@2 [g4,b4] g4 [g4,b4]", // G
  G: "~ b4 ~ b4 ~ b4 ~ b4 [d4,g4,b4] [g4,b4] ~ b4 [g4,b4]!2 ~ b4, [d4,g4,b4]!4 ~ [d4,g4,b4] d4@2, ~@7 [g4,b4]", // G
  H: "[f#4,b4]!2 ~ b4!3 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4, d4@2 d4@2 [d4,f#4,b4]!4, ~ [f#4,b4] f#4 [f#4,b4] ~@4", // B5 Bm B5
  I: "b4!2 ~ b4 ~ b4 ~ b4 ~ b4 [d4,f#4,b4] [f#4,b4] ~ b4 [d4,f#4,b4] [f#4,b4], d4@2 [d4,f#4,b4]!3 ~ [d4,f#4,b4] ~, f#4 [f#4,b4] ~@6", // Bm B5 Bm B5 Bm B5
  J: "[g2@2 g2!2 g2@2 g2!2 g2@2 g3@4 f#3@4 e3@4 d3@4 e3@4 f#3@33 ~]/4",
})).s("gm_overdriven_guitar").gain(0.33).pan(0.6)

// other · synth drum · "SYNTH DRU"
const synth_drum = note("<~@55 A ~ A ~ A ~@3 A ~ A ~ A ~@65>".pickRestart({
  A: "~@12 d2 ~@3",
})).s("gm_synth_drum").gain(0.49).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~ A@39 B A@45 B A@41 C ~@2 D B>".pickRestart({
  A: "x!4", B: "x", C: "x ~ x ~@2 x!3", D: "~@7 x",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct(`<
  A B@3 C B@3 D B@15 C B@7 C B@7 ~ B@3 E B@9 F B@15 G B@7 C B@7 ~ B@3 E B@9 H B@7 F B@3 C B@3 D B@3 E B@5 I B J ~@3 K
// … 43 more lines

More by Loverboy