Strudelify
Hot Girls in Love cover art

We Are The '80s

Hot Girls in Love

Loverboy

KeyE majorTempo154 bpm
0:00/0:00
// Hot Girls in Love — Loverboy
// 154 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 152 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): MUTED GTR.
setcpm(154/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, A@4 for four bars: edit a riff to change every repeat.

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~ A@4 B@8 C@2 D E F G H I J G K I L I L I M I N O@5 P@8 Q R S R T I U I V G K W X Y U I U I Z AA@5 AB@8 Q AC AD AC
  AE@8 AF@5 AG@4 AH AI@3 AJ@4 AK@4 AL@4 AB@8 Q AM AN AM AO AP AN AM AO AP AN AM AO AP AN AM AO AP AN AM AO AP AN AM AO
  AP AN AM AQ@2
>`.pickRestart({
  A: "[~@14 [c#3,g#3]@4 [c#3,g#3]@2 [c#3,g#3,c#4]@2 ~@4 [c#3,g#3,c#4]@2 ~@2 b3@2 c#4@2 [c#3,g#3]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 c3@2 [a2,e3,a3]@4 [a2,e3]@2 [a2,e3,a3]@2 ~@2 [a2,e3] ~ [a2,e3,a3]@2 ~@2 [a2,e3,a3]@2, ~@7 c#4@3 ~@5 [c#3,g#3]@2 ~@15]/4", // C#5 A5 C#5
  B: "[[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3] ~@3 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3] ~ c#3@4 c#3@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 ~@2 c#4 ~ c#4@2 [g#3,c#4]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 ~@2 a3@2 a3@2 [a2,e3]@2 [a2,e3,a3]@2 ~@2 a2 ~ [a2,e3]@3 ~ [a2,e3,a3]@4 e3@2 [e3,a3]@2 ~@2 [a2,e3,a3]@4 [a2,e3,a3]@2 [c#3,c#4]@4 [c#3,c#4]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3,c#4] ~ [c#3,g#3,c#4]@2 ~@2 b3@2 ~@2 g#3@2 [g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 ~@2 a3@2 ~@2 a2@2 [a2,e3,a3]@2 ~@2 [a2,e3,a3] ~ [a2,e3,a3] ~@3 [a2,e3,a3]@2, ~@2 a3@2 ~@3 [g#3,c#4]@3 ~@5 c#3@3 ~@5 [a2,e3]@2 ~@8 a2@2 ~@12 [c#3,g#3]@2 c#3@2 ~@4 e3@3 ~@6, ~@30 g#3@4 ~@24 a3 ~@19 g#3@6 ~@12 c#4@4 ~@10 a2@4 ~@14, ~@28 a3 ~@3]/8", // A5 C#5 A5 C# C#5 A5 C#5 A5 …
  C: "[[a2,e3,a3]@2 e3@2 [e3,a3]@2 ~@2 [a2,e3,a3]@4 [a2,e3,a3]@2 [e2,b2,e3]@4 [b3,e4] ~@3 [e2,b2,e3]@2 [b3,e4]@4 b2@2 e2@2, ~ a2@2 ~@4 c#4 ~@8]/2", // A5 E5
  D: "b2 c#3@2 d3@2 b2@3", E: "[e2,e3]@2 [b3,e4] ~@5 [b3,e4]@4 b2@2 e2@2, b2@3 [e2,b2,e3]@2 ~@3", F: "b2 c#3 e2 d3@4 ~",
  G: "[e2,b2] ~ [e2,b2,e3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2,e3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  H: "[e2,b2,e3]@2 [e2,b2,e3] ~@3 [e2,b2,e3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~, ~ e1@2 ~@5", // E5
  I: "[e2,b2] ~ [e2,b2,e3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2,e3]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  J: "[e2,b2,e3]@2 [e2,b2,e3] ~@4 e2 [e2,b2]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~, ~@3 [b2,e3] ~@4", // E5
  K: "[e2,b2,e3]@2 [e2,b2] ~@3 [e2,b2,e3]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  L: "[e2,b2,e3]@2 [e2,b2,e3] ~@3 [e2,b2,e3]@2 [e2,b2]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  M: "[e2,b2,e3]@2 [e2,b2,e3] ~@3 [e2,b2,e3] ~ [e2,b2]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  N: "[e2,b2,e3]@2 [b2,e3] ~@3 [e2,b2,e3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  O: "[[e2,b2] ~ [e2,b2,e3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2]@2 b2@2 [e2,b2] ~ [e2,b2] ~@3 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,g#2,b2]@2 [e2,f#2,b2] ~ [e2,b2] ~ [c#3,g#3]@4 [c#3,g#3]@2 [c#3,g#3,c#4]@2 ~@4 [c#3,g#3,c#4]@2 ~@2 b3@2 c#4@2 [c#3,g#3]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 c3@2 [a2,e3,a3]@4 [a2,e3]@2 [a2,e3,a3]@2 ~@2 [a2,e3] ~ [a2,e3,a3]@2 ~@2 [a2,e3,a3]@2, ~@5 e3@2 e3@2 ~@6 c#4@3 ~@22, ~@10 e2 ~@19 [e2,b2] ~@15 [c#3,g#3]@4 ~@30]/5", // E5 E Esus2 E5 C#5 A5 E5 C#5
  P: "[[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3] ~@3 [a2,e3,a3]@6 c#3@4 c#3@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 ~@2 c#4 ~ c#4@2 [g#3,c#4]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 ~@2 a3@2 a3@2 [a2,e3]@2 [a2,e3,a3]@2 ~@2 a2 ~ [a2,e3]@3 ~ [a2,e3,a3]@4 e3@2 [e3,a3]@2 ~@2 [a2,e3,a3]@4 [a2,e3,a3]@2 [c#3,c#4]@4 [c#3,c#4]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3,c#4] ~ [c#3,g#3,c#4]@2 ~@6 g#3@2 [g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 ~@2 a3@2 ~@2 a2@2 [a2,e3,a3]@2 ~@2 [a2,e3,a3] ~ [a2,e3,a3] ~@3 [a2,e3,a3]@2, ~@2 a3@2 ~@3 [g#3,c#4]@3 ~@5 c#3@3 ~@5 [a2,e3]@2 ~@8 a2@2 ~@12 [c#3,g#3]@2 c#3@2 ~@4 e3@3 ~@6, ~@30 g#3@4 ~@24 a3 ~@19 g#3@6 ~@12 c#4@4 ~@10 a2@4 ~@14, ~@28 a3 ~@3]/8", // A5 C#5 A5 C# C#5 A5 C#5 A5 …
  Q: "[a2,e3,a3] ~@7", R: "[e2,b2]@2 [e2,b2]@2 [e2,c#3] ~ [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,c#3] ~ e2@2",
  S: "b2 c#3@2 d3@2 e3@2 c#3", T: "b2 g2@2 e2@4 ~",
  U: "[e2,b2,e3]@2 [e2,b2,e3]@2 ~@2 [e2,b2,e3]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  V: "[e2,b2,e3]@2 [e2,b2,e3]@2 ~@3 e2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~, ~@3 [b2,e3] ~@4", // E5
  W: "[e2,b2] ~ [e2,b2,e3]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2,e3]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  X: "[e2,b2,e3]@2 [e2,b2,e3]@2 ~@2 [e2,b2,e3]@2 [e2,b2]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  Y: "[e2,b2] ~ [b2,e3] e2 [e2,b2] ~ [e2,b2] ~ [e2,b2,e3]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  Z: "[e2,b2,e3]@2 [b2,e3]@2 ~@2 [e2,b2,e3]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  AA: "[[e2,b2] ~ [e2,b2,e3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2]@2 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~@3 [e2,b2,e3]@2 [e2,b2]@2 [e2,b2]@2 [e2,g#2,b2] ~ [e2,f#2,b2] ~ [e2,b2] ~ [c#3,g#3]@4 [c#3,g#3]@2 [c#3,g#3,c#4]@2 ~@4 [c#3,g#3,c#4]@2 ~@2 b3@2 c#4@2 [c#3,g#3]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 c3@2 [a2,e3,a3]@4 [a2,e3]@2 [a2,e3,a3]@2 ~@2 [a2,e3] ~ [a2,e3,a3]@2 ~@2 [a2,e3,a3]@2, ~@5 e3@2 e3@2 ~ e3@2 ~@3 c#4@3 ~@5 [c#3,g#3]@2 ~@15]/5", // E5 E Esus2 E5 C#5 A5 C#5
  AB: "[[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3] ~@3 [a2,e3,a3]@6 c#3@4 c#3@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 ~@2 c#4 ~ c#4@2 [g#3,c#4]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 ~@2 a3@2 a3@2 [a2,e3]@2 [a2,e3,a3]@2 ~@2 a2 ~ [a2,e3]@3 ~ [a2,e3,a3]@4 e3@2 [e3,a3]@2 ~@2 [a2,e3,a3]@4 [a2,e3,a3]@2 [c#3,c#4]@4 [c#3,c#4]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3,c#4] ~ [c#3,g#3,c#4]@2 ~@2 b3@2 ~@2 g#3@2 [g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 ~@2 a3@2 ~@2 a2@2 [a2,e3,a3]@2 ~@2 [a2,e3,a3] ~ [a2,e3,a3] ~@3 [a2,e3,a3]@2, ~@2 a3@2 ~@3 [g#3,c#4]@3 ~@5 c#3@3 ~@5 [a2,e3]@2 ~@8 a2@2 ~@12 [c#3,g#3]@2 c#3@2 ~@4 e3@3 ~@6, ~@30 g#3@4 ~@24 a3 ~@19 g#3@6 ~@12 c#4@4 ~@10 a2@4 ~@14, ~@28 a3 ~@3]/8", // A5 C#5 A5 C# C#5 A5 C#5 A5 …
  AC: "[e2,b2]@2 [e2,b2,e3]@2 [e2,c#3] ~ [e2,b2]@2 [e2,b2,e3]@2 [e2,b2]@2 [e2,c#3] ~ e2@2", AD: "b2 c#3 ~ d3@4 ~",
  AE: "[b2 c#3 ~ d3@3 ~ f#2@2 f#2 g#2!2 a2!2 c#3 b2@2 b2 b2@2 b2!2 c#3 f#2@2 f#2 g#2!2 a2!2 c#3 b2@2 b2 b2@2 b2!2 c#3 f#2@2 f#2 g#2!2 a2!2 c#3 b2@2 b2 b2@2 b2!2 c#3 f#2@2 f#2 g#2!3 a2 c#3 b2]/8",
  AF: "[~ b2 b2@2 b2!2 c#3 f#2@2 f#2 g#2!2 a2!2 c#3 b2@2 b2 b2@2 b2!2 c#3 f#2@2 f#2 g#2!2 a2!2 c#3 b2@2 b2 b2@2 b2!3 c#3]/5",
  AG: "[f#2!2 g#2!2 a2!2 c#3 b2@2 b2 b2@2 b2!2 c#3 f#2@2 f#2 g#2!2 a2!2 c#3 b2@2 b2 b2@2 b2@2 b2@2]/4", AH: "b2 ~@7",
  AI: "[[e2,b2] b2 ~@4 e2 e2@2 ~ [b2,e3]@3 [e2,b2,e3]@2 b2@2 b2 a#2!2 a2!2 g#2!2, e3@2 [b2,e3]@3 b2@5 ~@14, ~@2 e2@6 e2@4 ~@2 c#5 ~@3 e2@8 ~@22, ~@5 e3@2 e3@3 ~@14]/3", // E5
  AJ: "[b2@2 ~@2 e3@2 b2@4 e3@2 e2@2 [a2,e3]@4 ~@2 e3@4 ~@2 [e3,a3]@2 ~@2 [e3,a3]@4 e3@2 e3@2 [a2,a3]@4 a2@2 e3 ~ b2@4 ~@2 a#2@2 a#2@2 a2@2 a2@2 g#2@2 g#2@2, e2 e2@2 ~@13, ~ b2@2 e3 ~ b2@2 ~@2 a2@3 a2@3 a2@3 ~@7 b2@2 ~@5, ~@6 a3 ~@7 a3@6 a3@6 ~@8 a3@4 e3@6 ~@2 f#3@6 ~@12]/4", // A5 A
  AK: "[~@3 [b2,e3]@2 [b2,e3] ~ [e3,a3]@2 e3 ~@2 a2 [a2,e3]@2 e3@2 ~ a2 [e3,a3]@2 [e3,a3]@2 [b2,f#3]@2 [b2,f#3]!7, b2@3 ~@4 a2@3 a2@2 ~@3 [a2,a3]@3 ~ a2@4 ~@9, e2@4 e2@9 ~@9 e3@4 ~@8 e3@4 ~@26, ~ e3@2 ~@6 a3@3 ~@11 b3@7 ~@2]/4", // E5 A5 B5 A
  AL: "[[b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 g#2@2 f#2@2 e2@2 [c#3,g#3]@4 [c#3,g#3]@2 [c#3,g#3,c#4]@2 ~@4 [c#3,g#3,c#4]@2 ~@2 b3@2 c#4@2 [c#3,g#3]@2 [c#3,g#3,c#4]@2 ~@2 [c#3,g#3] ~ [c#3,g#3,c#4]@2 c3@2 [a2,e3,a3]@4 [a2,e3]@2 [a2,e3,a3]@2 ~@2 [a2,e3] ~ [a2,e3,a3]@2 ~@2 [a2,e3,a3]@2, ~@7 c#4@3 ~@5 [c#3,g#3]@2 ~@15]/4", // B5 C#5 A5 C#5
  AM: "[e2,b2]@2 [e2,b2,e3]@2 [e2,c#3] ~ [e2,b2]@2 [e2,b2,e3]@2 [e2,b2]@2 [e2,c#3]@2 e2@2", // E5 C#m E5 C#m
  AN: "[e2,b2]@2 [e2,c#3]@2 e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~, ~@6 d3@4 e3@5 ~", // E5 C#m
  AO: "[e2,b2]@2 [e2,c#3]@2 e2 ~ e2 ~ e2 ~ [e2,b2]@2 [e2,b2]@2 [e2,b2] ~, ~@3 d3@3 ~@2", // E5 C#m E5
  AP: "[e2,b2] ~ [e2,b2,e3] ~ [e2,c#3] ~ [e2,b2]@2 [e2,b2,e3]@2 [e2,b2]@2 [e2,c#3]@2 e2@2", // E5 C#m E5 C#m
  AQ: "[[e2,b2] g#2 g2 [e2,e3]@11 ~@2]/2", // E5 E
})).s("gm_overdriven_guitar").gain(0.22).pan(0.4)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A@2 B C D@2 B C D@2 B C E@2 F G F G F G F G F G F G F G F G F H I@2 J C D@2 B C D@2 B C K G F G F G F G F G F G F G
  F G F G F H I@2 J C D@2 B C D@2 B C K G F G L@8 M@3 N@6 O G P@2 Q R S@2 Q R T@2 U@2 J C D@2 B C D@2 B C K G F G F G F
  G F G F G F G F G F G F G F G F G F G F G V@2
>`.pickRestart({
  A: "[~@4 g#1 f#1 e1 c#2@2 c#2!7]/2", B: "c#2!7 a1", C: "a1!8", D: "[a1!4 g#1 f#1 e1 c#2@2 c#2!7]/2",
  E: "[a1!5 g#1 f#1 e1@2 e1!7]/2", F: "e1!5 g1!2 f#1", G: "e1!8", H: "e1@2 e1@2 e1@2 e1@2 e1 ~ g1@2 g1@2 e1@2",
  I: "[e1!4 g#1 f#1 e1 c#2@2 c#2!7]/2", J: "c#2!7 g#1", K: "a1@3 ~@13",
  L: "[e1!5 g1!2 f#1@2 f#1 g#1!2 a1!2 c#2 b1@2 b1 b1@2 b1!2 c#2 f#1@2 f#1 g#1!2 a1!2 c#2 b1@2 b1 b1@2 b1!2 c#2 f#1@2 f#1 g#1!2 a1!2 c#2 b1@2 b1 b1@2 b1!2 c#2 f#1@2 f#1 g#1!2 a1!2 c#2 b1]/8",
  M: "[~ b1 b1@2 b1!2 c#2 f#1@2 f#1 g#1!2 a1!2 c#2 b1@2 b1 b1@2 b1!3 c#2]/3",
  N: "[f#1!2 g#1!2 a1!2 c#2 b1@2 b1 b1@2 b1!2 c#2 f#1@2 f#1 g#1!2 a1!2 c#2 b1@2 b1 b1@2 b1!2 c#2 f#1@2 f#1 g#1!2 a1!2 c#2 b1@3 b1@2 b1@2 b1@2]/6",
  O: "b1 ~@7", P: "[e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 b1@4 b1@2 a#1@2 a#1@2 a1@2 a1 ~ g#1@2 g#1@2]/2",
  Q: "e1@2 e1@2 e1@2 e1@2 e1@2 e1 ~ g1@2 e1@2", R: "a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1 ~ g1@2",
  S: "[a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 b1@4 b1@2 a#1@2 a#1@2 a1@2 a1 ~ g#1@2 g#1@2]/2", T: "[a1!7 b1@2 b1!7]/2",
  U: "[b1!4 g#1 f#1 e1 c#2@2 c#2!7]/2", V: "[e1!3 e1@11 ~@2]/2",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@50 A B A C D E F G H I J K L M N O@8 P@4 Q ~@74>".pickRestart({
  A: "~ [b4,e5,b5] ~@2 [a4,e5,a5] ~@3", B: "[b4,e5,b5] ~@2 [b4,e5,b5] ~@4", C: "[e4,b4,d5]@3 ~@3 [e4,b4,d5]@3 ~@7",
  D: "~@2 [e5,b5,d6]@3 ~@3 [e5,a5,c#6]@2 ~@6", // E7 A
  E: "[e5,b5,d6]@3 ~ [e5,b5,e6]@2 [e5,b5,d6]@5 [g5,a5,c6] [c5,e5,f5] c5 ~@2, ~@4 d6 ~@7 d5@2 ~@2", // E7 E5 E7 Am7 Fmaj7
  F: "~@2 [e5,g#5,d6]@3 ~@3 [e5,g5,c#6]@2 ~@6", G: "[b4,d5]@2 [e4,b4,d5]@2 ~@2 [e4,b4,d5]@5 ~@5, e4 ~@15",
  H: "~@2 [e5,b5,d6]@2 ~@4 [e5,a5,c#6]@2 ~@2 c5 e5 [f5,g5,a5] [b5,c6,d6], ~@6 d5 ~", // E7 A F Bm
  I: "[b5,e6] ~ [b5,e6]@2 ~@2 [b5,e6]@2 ~@2 [b5,e6]@2 [b5,d6]@2 ~@2", J: "~@2 [e5,b5,d6]@2 ~@4 [e5,a5,c#6]@3 ~@5",
  K: "e4 [e4,d5] ~ [e4,b4,d5]@3 ~@2, b4 ~@3, d5 ~@15", // E7
  L: "~@2 [e5,b5,d6]@2 ~@4 [e5,a5,c#6]@2 ~@2 [g4,a4,b4] [c5,d5,e5] [f5,g5,a5] [b5,c6]", // E7 A G C F Cmaj7
  M: "e6 b5 [b5,e6]@2 ~@5 c#6 [c6,d6] [g5,a5,b5] [b4,c5,d5,e5,f5] a4 ~@2, ~@2 d6 ~@3 [b5,e6]@5 ~@5", // E5 Csus2 G Bdim E5
  N: "~@2 [e5,b5,d6]@2 ~@4 [e5,a5,c#6]@2 ~@5 e4", // E7 A
  O: "[[b4,d5] ~ [e4,b4,d5]@2 ~@2 [e4,b4,d5]@4 f#4@2 e4@2 [e5,g#5,c#6]@31 ~ [e5,a5,c#6]@31 ~ [e5,g#5,c#6]@31 ~ [e5,a5,c#6]@18]/8", // Bm E7 C#m A C#m A
  P: "[~@14 [e5,g#5,c#6]@31 ~ [e5,a5,c#6]@17 ~]/4", Q: "[e5,a5,c#6]@3 ~@13",
})).s("gm_rock_organ").gain(0.33)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A ~@3 B ~@3 B C ~@2 D E F E G H I H J H I H K H I H J H I H L ~@3 A ~@3 B C ~@7 H I H J H I H K H I H J H I H L ~@3
  A ~@3 B C ~@24 M N ~ O P Q ~ R P S ~ T ~@3 A ~@3 B C ~@3 U ~ U ~ U ~ U V U ~ U ~ U ~ U ~ U ~ U ~ U ~ U V U ~ U W ~
>`.pickRestart({
  A: "~@4 g#2 f#2 e2 ~", B: "~@4 g#2 f#2 ~@2", C: "~@2 g#3 ~@13", D: "~@5 g#2 f#2 ~",
  E: "~@4 c#3@3 ~ d3@2 e2@2 c#3@2 ~@2", F: "~@5 e3@2 e2", G: "~@7 e2", H: "~@2 c#3 ~ d3 ~ c#3 ~", I: "~ c#3 ~ d3@2 ~@3",
  J: "~ c#3 ~ d3@3 ~@2", K: "a#2 c#3 ~ d3@4 ~", L: "b2 c#3 ~ d3 ~@4", M: "~@3 e2 ~@4", N: "e2 ~@2 e2!2 ~ e2 ~",
  O: "~ e2 ~@2 e2 ~@3", P: "a2 ~@2 a2 ~@2 a2 ~", Q: "a2 ~ a2 ~ a2 ~ a2 ~", R: "~@4 e2 ~ e2 ~", S: "a2!2 ~@2 a2 ~ a2 ~",
  T: "~@4 b2 ~@3", U: "~@4 d3 ~@3", V: "a#2 ~@7", W: "~ g2@2 ~@5",
})).s("gm_electric_guitar_muted").gain(0.26).pan(0.6)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@2 A ~@3 B ~ C ~@25 A ~@3 B ~ C ~@25 A ~@3 B ~ C ~@38 A ~@3 B ~ C ~@34
>`.pickRestart({
  A: "~@8 [c#3,g#3] ~@7", B: "~@2 g#3 ~@13", C: "~@8 e3 ~@7",
})).s("gm_electric_guitar_muted").gain(0.15).pan(0.6)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@2 A@4 B@2 C@2 D@2 E@2 F G H I J K L H M H N H O P Q R S T U@2 V@2 A@2 B@2 C@2 D@2 W@2 F G H X J K L H M H N H O P Q
  R S T Y Z V@4 B@2 C@2 D@2 W@2 F G H AA AB AC AB AC AB AC AB AC AB AC AB AC AB AC AB AD AE ~@12 V@2 A@2 B@2 C@2 D@2 W@2
  AF AG AF I AF AG AF I AH AG AI I AI AG AI I AJ AG AK I AL AM@2 I AN AG AO AP ~
>`.pickRestart({
  A: "[~@4 f#4@2 ~@4 e4@2 ~@4 f#4@2 ~@2 f#4@2 e4@5 ~@5, ~ [c#4,e4]@2 ~ [c#4,f#4]@2 ~ [c#4,e4]@2 ~ c#4@4 ~@2]/2", // C#m F#5 C#m
  B: "[~@4 f#4@2 ~@4 e4@2 ~@4 f#4@2 ~@2 f#4@2 e4@7 ~@3, ~@2 [c#4,e4]@4 ~@2 [c#4,f#4]@4 ~@2 [c#4,e4]@4 ~@2 c#4@9 ~@3]/2", // C#m F#5 C#m
  C: "[~@4 f#4@2 ~@4 e4@2 ~@2 e4@2 g4@2 ~@2 g4@2 e4@5 ~@5, ~@2 [c#4,e4]@4 ~@2 [c#4,f#4]@4 ~@2 c#4@5 ~ c#4@8 ~@4]/2", // C#m F#5
  D: "[~@4 f#4@2 ~@4 e4@2 ~@2 e4@2 f#4@2 ~@2 f#4@2 e4@5 ~@5, ~@2 [c#4,e4]@4 ~@2 [c#4,f#4]@4 ~@2 c#4@5 ~ c#4@8 ~@4]/2", // C#m F#5
  E: "[~@2 e4@2 f#4@2 ~@2 f#4@2 e4@2 ~@2 e4@2 f#4@2 ~@2 f#4@2 e4@5 ~@3 [e2,b2] ~, ~@2 c#4@4 ~@2 c#4@4 ~@2 c#4@4 ~@2 c#4@9 ~@3]/2", // E5
  F: "~ [e2,b2]!2 ~@3 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~@5", G: "b2@2 c#3@4 e2@6 ~@2 [e2,b2] ~, e2@3 d3@5",
  H: "[e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~", // E5
  I: "[e2,b2]@2 c#3@4 d3@9 ~, ~@2 e2@2 ~@2 e2 ~@9", J: "[e2,b2] ~ [e2,b2] ~@3 b2 ~ [e2,b2] ~ e2 ~@5",
  K: "[e2,b2] ~ [e2,b2] ~@3 b2 ~ [e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~", L: "[e2,b2] ~ [e2,b2] ~@3 b2 ~ [e2,b2] ~@5 b2 ~",
  M: "[e2,b2] ~ [e2,b2] ~@5 [e2,b2] ~ e2 ~@3 [e2,b2] ~", // E5
  N: "[e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~@3 e2 ~", // E5
  O: "[e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~ [e2,b2] ~ e2 ~@3 [e2,b2] ~", // E5
  P: "[e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~@5", // E5
  Q: "[e2,b2] ~ [e2,b2] ~@5 [e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~", // E5
  R: "~@2 [e2,b2] ~@3 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~", S: "b2 ~ [e2,b2] ~@5 [e2,b2] ~@7",
  T: "e2 ~ [e2,b2] ~@3 [e2,b2] ~ [e2,b2] ~ [e2,b2] ~@3 [e2,b2] ~", // E5
  U: "[~@2 [e2,b2] ~@5 [e2,b2] ~ b2 ~@3 [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 g#2@2 f#2@2 e2@2 ~@2]/2", // E5
  V: "[~@2 e4@2 f#4@2 ~@2 f#4@2 e4@2 ~@2 e4@2 f#4@2 ~@2 f#4@2 e4@5 ~@5, ~ c#4@2 ~ c#4@2 ~ c#4@2 ~ c#4@4 ~@2]/2",
  W: "[~ e4 f#4 ~ f#4 e4 ~ e4 f#4 ~@7, ~ c#4@2 ~ c#4@2 ~ c#4@2 ~@7]/2", X: "[e2,b2]@2 g2@4 e2@9 ~",
  Y: "~@2 [e2,b2] ~@5 [e2,b2] ~ b2 ~@5", Z: "~ [e2,b2]!3 g#2 f#2 e2 ~",
  AA: "[e2,b2]@2 c#3@4 d3@8 [c#3,f#3] ~, ~@2 e2@2 ~@2 e2 ~@9", // E5 F#5
  AB: "[c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [c#3,f#3] ~ [b2,f#3] ~", // F#5 B5
  AC: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [c#3,f#3] ~", // B5 F#5
  AD: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~", AE: "[b2,f#3] ~@7",
  AF: "~@2 [b3,e4]@3 ~@3 [b3,e4]@3 ~@5", AG: "b2 c#3@2 d3@5, e2@3 e2@3 ~@2", AH: "~ [b3,e4] ~@2 [b3,e4] e4 ~@2",
  AI: "~ [b3,e4] ~@2 [b3,e4]!2 ~@2", AJ: "~@2 [b3,e4]@2 e3@2 [b3,e4]@2 [b3,e4]@2 [b3,e4] ~ [b3,e4] ~@3",
  AK: "~@2 [b3,e4]@2 ~@2 [b3,e4]@2 [b3,e4]@2 b3@2 [b3,e4]@2 b3 ~, ~@2 e3@3 ~@3", // E5
  AL: "~@2 [b3,e4]@2 ~@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 e4 ~, ~ e3 ~@2", // E5
  AM: "[b2@2 c#3@4 e2@6 ~@2 [b3,e4]@4 [b3,e4]@2 [b3,e4]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4] ~@2 b3 [b3,e4] ~, e2@3 d3@5 ~@8]/2", // E5
  AN: "~@2 [b3,e4]@2 ~@2 [b3,e4]@2 [b3,e4]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4] ~, ~@2 e3@3 ~@3", // E5
  AO: "~@2 [b3,e4]@2 e3@2 [b3,e4] ~ [b3,e4]@4 [b3,e4]@4", AP: "[e2,b2]@2 g#3@2 g3@2 [e2,e3]@9 ~",
})).s("gm_distortion_guitar").gain(0.24).pan(0.6)

// chords · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft = note(`<
  ~@18 A B C ~ D ~ E ~ F G H I J K L ~@17 A B C ~ D ~ E ~ F G H I J K L ~@66 M ~@9 N ~ O ~ P ~@6
>`.pickRestart({
  A: "~@6 e2 ~@3 b2 ~@3 [e2,b2] ~", B: "~@6 e2 ~@9", C: "~@6 e2 ~@3 [e2,b2] ~@3 e2 ~", D: "~@6 [e2,b2] ~@3 b2 ~@5",
  E: "~@14 b2 ~", F: "~@10 b2 ~@5", G: "~@14 [e2,b2] ~", H: "~@6 [e2,b2] ~@9", I: "[e2,b2] ~@11 b2 ~@3",
  J: "e2 ~@5 [e2,b2] ~@3 [e2,b2] ~@3 [e2,b2] ~", K: "b2 ~@15", L: "[e2,b2] ~@5 [e2,b2] ~@3 e2 ~@5", M: "~@5 b3 ~@2",
  N: "~@14 e4 ~", O: "~@14 b3 ~", P: "~@13 e4 ~@2",
})).s("gm_distortion_guitar").gain(0.14).pan(0.6)

// other · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note("<~@98 A B C D E@4 F@4 G@2 ~@2 H@2 ~@2 I@2 ~@32>".pickRestart({
  A: "~ a3@7", B: "a3@2 b3 ~ a3@4 b3 ~ a3@4 b3 ~", C: "a3@3 ~ b3 ~ a3@7 ~ b2@2",
  D: "~@2 b2 ~ a#2 ~ a#2 ~ a2 ~ a2 ~ g#2 ~ g#2 ~",
  E: "[e2@3 [b3,c4,d4] e4@2 d4@4 e4@3 ~ e4@4 e4@2 d#4@2 d4@2 c#4@2 a3@3 d4 e4@4 e4@2 d#4@2 d4@2 c#4@4 ~@2 b2@4 b2 ~ a#2 ~ a#2 ~ a2 ~ a2 ~ g#2 ~ g#2 ~, ~@30 d#4 ~@33]/4", // Bm
  F: "[e2@3 [b3,c4,d4] e4@2 d4@4 e4@3 ~ e4@4 e4@2 d#4@2 d4@2 c#4@2 a3@3 d4 e4@4 e4@2 d#4@2 d4@2 c#4@4 ~@2 b2@4 b2@2 [d3,d#3]@2 f#3@2 b3 ~ b3@2 [d4,d#4] ~ f#4@2, ~@30 d#4 ~@33]/4", // Bm D#maj7
  G: "[b4@2 f#4@2 b4 ~ b4@4 d#5@3 ~ [c5,d#5]@12 ~@6]/2", H: "[~@5 [c5,d#5] ~ [c5,d#5]@7 ~@2]/2",
  I: "[~@10 [c5,d#5]@2 ~@2 [c5,d#5]@17 ~]/2", // Cm
})).s("gm_distortion_guitar").gain(0.48).pan(0.6)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@2 A B C D A B A E A B A F@3 ~@18 A B A B A B A E A B A G H ~ H ~@17 A B A B A B A E A B A G H ~ H I@8 J@8 K L ~@12 A
  B A B A B A E A B A G H ~ H ~ M ~ M ~ M ~ M ~ M ~ M ~ M ~ M ~ M ~ M ~ M ~ M ~@2
>`.pickRestart({
  A: "~ e4 f#4 ~ f#4 e4 ~ e4", B: "f#4 ~ f#4 e4@5", C: "~@2 e4@2 f#4@3 ~ f#4@2 e4@3 ~ e4@2", D: "f#4@3 ~ f#4@2 e4@10",
  E: "g4 ~ g4 e4@5", F: "[f#4 ~ f#4 e4@21]/3", G: "e4 ~@7", H: "~ [e4,e5] ~@2 [e4,e5] ~@3",
  I: "[~@14 b3@4 c#4@2 f#4@2 ~@2 c#4@2 ~@2 b3 ~ b3@4 c#4@2 e4@2 b3@2 c#4@2 ~@2 b3 ~@5 c#4@2 f#4@2 ~@2 c#4@2 f#4@2 b3 ~ b3@4 c#4@2 e4@2 b3@2 c#4@2 ~@2 b3 ~@5 c#4@2 f#4@2 ~@2 c#4@2 ~@2 b3 ~ b3@4 c#4@2 e4@2 b3@2 c#4@2 ~@2 b3 ~@5 c#4@2 f#4@2 ~@2 c#4@2 ~@2 b3 ~ b3@2, ~@11 b3@2 f#4@2 ~@6 e4@2 b3@3 ~ b3@2 ~@8 e4@2 b3@3 ~ b3@2 f#4@2 ~@6 e4@2 b3@3 ~ b3@2 f#4@2 ~]/8",
  J: "[~@2 c#4@2 e4@2 ~@2 c#4@2 e4@2 b3 ~@5 c#5@2 f#5@2 ~@2 c#5@2 f#5@2 b4 ~ b4@4 c#5@2 e5@2 b4@2 c#5@2 e5@2 b4 ~ b4@4 c#5@2 f#5@2 ~@2 c#5@2 f#5@2 b4 ~ b4@4 c#5@2 e5@2 b4@2 c#5@2 e5@2 b4 ~ b4@4 c#5@2 f#5@2 ~@2 c#5@2 f#5@2 b4 ~ b4@4 c#5@2 e5@2 ~@2 c#5@2 ~@2 b4 ~@5 c#5@2 f#5@2 ~@2 c#5@2 f#5@2 b4 ~ b4@2, ~@3 b3@2 ~@2 b4@3 ~ b4@2 ~@14 b4@2 ~@14 b4@2 ~@6 b4@2 e5@2 b4@3 ~ b4@2 ~@3]/8",
  K: "~ c#5 e5 ~ c#5 e5 b4 c#5, ~@3 b4@2 ~@3", L: "f#5 ~@7", M: "~@2 [e4,e5]@3 ~@3 [e4,e5]@3 ~@5",
})).s("gm_synth_brass_1").gain(0.27).pan(0.4)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note("<~@33 A@3 B@8 C@2 ~@19 A@3 B@8 C@2 ~@32 A@3 B@8 C D ~@29>".pickRestart({
  A: "[~@14 [g#4,e5]@33 ~]/3", B: "[[a4,b4,e5]@29 ~ [g#4,e5]@33 ~]/4", C: "[a4,b4,e5]", D: "[a4,b4]",
})).s("gm_pad_poly").gain(0.18).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C@2 D B C@2 D E C@22 F G C@10 H C@31 H C@4 I C@2 D J C@2 K C@4 K C@2 D L C@11 M C@11 H C@27 N ~
>`.pickRestart({
  A: "~@4 x!4", B: "~@2 x ~ x!2 ~@2", C: "x!2 ~@2 x!2 ~@2", D: "x!2 ~@2 x!2 ~ x", E: "~ x ~@2 x!2 ~@2",
  F: "x!2 ~@2 x ~@2 x", G: "~@4 x!2 ~@2", H: "x", I: "x ~@2 x!3 ~@2", J: "x ~ x ~ x!2 ~@2", K: "x ~@2 x!3 ~ x",
  L: "x ~@2 x", M: "x!8", N: "x!2 ~ x ~@4",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct(`<
  A B C@13 D C E C@26 E ~ C D C F C@26 E ~ C D C@17 G H C@3 I C@3 J C D ~ K C@10 E L C@5 D I M C@9 E C E C I@2 C@4 N ~
>`.pickRestart({
  A: "~@8 x ~ x ~ x!4", B: "x!8 ~@4 x ~@3", C: "~ x ~ x", D: "~@4 x ~@7 x ~ x!2", E: "~@2 x ~@3 x!2",
  F: "~@4 x ~@7 x!4", G: "~@2 x ~@5 x!8", H: "x ~@2 x", I: "~@2 x!2 ~@2 x ~", J: "~@2 x!2 ~@2 x!2", K: "~@3 x", L: "x",
// … 47 more lines

More by Loverboy