Strudelify

Mighty Quinn

The Hollies

KeyB majorTempo92 bpm
0:00/0:00
// Mighty Quinn — The Hollies
// 92 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 146 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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 · piano
const piano = note("<~@52 A@2 B@2 C@2 D@2 E F ~@4 G H I J I K I K I K L ~ M ~@3 N ~ N ~ O ~@59>".pickRestart({
  A: "[[b3,d4,f#4]@11 ~ [b3,d4,f#4] ~ [b3,e4,g#4]@14 d4 ~ c#4 b3]/2", // Bm E
  B: "[b3@10 ~@2 [b3,d4,f#4]@2 [b3,e4,g#4]@13 ~@2 e4 d4 c#4, ~@14 d4 ~]/2", // Bm E
  C: "[[b3,d4,f#4]@10 b3@2 [d4,f#4] ~ [b3,e4,g#4]@13 ~ d4 ~ c#4 b3]/2", D: "[b3@11 ~ [b3,e4,g#4] ~ [b3,e4,g#4]@17 ~]/2",
  E: "[c#4,e4,g#4]@8 ~@4 [c#4,e4,g#4] ~ e4 ~", F: "[c#4,e4,g#4]@11 ~@5",
  G: "[b3,d4,f#4] ~@5 [b3,d4,f#4] ~@7 [b3,d4,f#4] ~", H: "[b3,e4,g#4] ~ [b3,e4,g#4] ~@3 [b3,e4,g#4] ~@7 [b3,e4,g#4] ~",
  I: "[b3,d4,f#4] ~ [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@9", J: "~@8 [b3,e4,g#4]@4 [b3,e4,g#4] ~@3",
  K: "~@8 [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", L: "[a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~@3 [a#3,c#4,f#4] ~@9",
  M: "[b3,d4,f#4] ~ [b3,d4,f#4] ~@13", N: "~@10 [b3,d4,e4,f#4] ~@5", O: "~@10 [b3,e4,g4] ~@5",
})).s("gm_piano").gain(0.59).pan(0.6)

// bass · slap bass 1
const bass = note(`<
  A B A C A D A E F G H I F G H I F G H I F G J K L M N O L P Q R F G H I F G H I F G J K L M N O L S Q R T@2 U V T@2 U
  V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO ~@3 AP ~ AP ~ AP ~@11 AQ@2 AR@2 AS AT AU AV AW AX AY AZ@2 BA
  BB@3 BA BB@3 BA BC BD BE BF BG BH BI BJ BK BL ~@16
>`.pickRestart({
  A: "b1@5 ~ b1 ~ a#1@5 ~ a#1 ~", B: "g#1@5 ~ g#1 ~ f#1@3 ~ f#1 g#1 b1 ~", C: "g#1@4 ~@2 g#1 ~ f#1@5 ~@3",
  D: "g#1@5 ~ g#1 ~ f#1@3 ~ f#1 g#1 a#1 ~", E: "g#1@5 ~ f#1 ~@3 f#1 ~ a1@2 ~@2", F: "b1 ~@3 b1@6 f#1 ~ d2@4",
  G: "b1@2 ~@8 f#1 ~ a1@4", H: "b1 ~@3 b1@4 ~@2 f#1 ~ d2@3 ~", I: "b1 ~@3 f#1 ~ a1@4 f#1 ~ a1@3 ~",
  J: "b1 ~@3 b1@4 ~@4 f#1@4", K: "e1 ~@3 e1@4 ~@2 f#1 ~ a1@3 ~", L: "b1@5 ~ f#1@2 b1 ~@3 b1@3 ~",
  M: "f#1@5 ~ a#1 ~ b1@5 ~ f#1@2", N: "b1@5 ~ b1 ~ a#1@4 ~@2 a#1 ~", O: "g#1@4 ~@2 g#1 ~ f#1@4 a#1@4",
  P: "f#1@4 ~@2 a#1@2 b1 ~@3 b1@3 ~", Q: "b1@4 ~@2 b1 ~ a#1@4 ~@2 a#1 ~", R: "g#1@5 ~ g#1 ~ f#1@4 ~@4",
  S: "f#1@4 ~@2 a#1@2 b1@2 ~@2 b1@3 ~", T: "[b1 ~ b1@2 ~@2 b1!2 ~@6 b1 b1@2 ~ b1@2 ~@2 b1!2 ~@6 b1!2]/2",
  U: "b1 ~ b1@2 ~@2 b1!2 ~@6 b1 ~", V: "b1 ~ b1@3 ~ b1!2 ~@8", W: "c#2 ~ c#2 ~ c#2 ~ c#2!2 ~@2 e2 ~@2 c#2 e2 ~",
  X: "c#2 ~ c#2 ~ c#2 ~ c#2!2 ~@2 c#2 ~@3 c#2 ~", Y: "b1 ~ b1 ~ b1 ~ b1 b1@3 f#1@2 a1@2 b1 ~",
  Z: "e2 ~ e2 ~ e2 ~ e2 d#2@2 ~ d#2 ~ c2@2 d#2 ~", AA: "f#2 ~ f#2 ~ b1 d2 ~ g#1 a#1 ~ c#2 ~ d2@2 b1 ~",
  AB: "c#2 ~ c#2 ~ c#2 ~ c#2 c#2@3 a1 ~ b1@2 c#2 ~", AC: "b1@2 a1@2 g1@2 f#1 ~ e1@2 f#1@2 g1 ~ a1 ~",
  AD: "b1@2 d2@2 c#2@2 e2@2 d2 ~ c#2@2 b1 ~ a1 ~", AE: "b1@2 e1@2 g1@2 f#1@2 e1@2 f#1@2 a1 ~ b1@2",
  AF: "d2@2 b1@2 e2@2 b1 ~ f#2 ~ f#2 e2 d2 c#2 b1 a1", AG: "b1 ~ b1 ~ e1@2 g1@2 a1 ~ b1@2 c#2@2 d2 ~",
  AH: "e1@2 g1@2 f#1@2 g1@2 a1 b1 c#2 d2 e2 f#2 g2 ~", AI: "f#2@2 f#2 e2 d2 ~ d2 c#2 b1 ~ b1 a1 g1@2 f#1 ~",
  AJ: "e1!2 g1 [e1,a1] e1!2 g1 [e1,a1] e1!2 g1 [e1,g1] a1 b1 c#2 d2", AK: "c#2 ~ c#2 ~ b1@2 a1 ~ b1@2 c#2@2 d2@2 e2@2",
  AL: "f#2@2 d2@2 c#2@2 b1 ~ a1@2 g1 ~ e1@2 d1 ~", AM: "e1@2 g1@2 a1@2 b1@2 c#2@2 d2@2 e2@2 g2 ~",
  AN: "e2!2 ~ e2!3 ~ e2!3 ~ e2 f#2!2 ~ f#2", AO: "b1 ~ b1 ~@13", AP: "~@10 b2 ~@5", AQ: "[~@2 b1@3 ~ b1@2]/2",
  AR: "[~@2 d2 e2@2 ~ d2 b1@12 ~@5 b1@8]/2", AS: "~@2 d2 e2@2 ~ d2 b1@9", AT: "~@2 d2 e2@3 d2 b1@3 ~@2 b1@4",
  AU: "~@2 d2 e2@2 ~ d2 f#2@2 ~ f2 ~ e2 ~ d2 ~", AV: "c#2@2 c2 ~ b1 ~ a1 ~ f#2 ~ f2 ~ e2 ~ d2 ~",
  AW: "c#2 ~ c2 ~ b1 ~ a1 ~ f#2@2 f2 ~ e2 ~ d2 ~", AX: "c#2 ~ c2 ~ b1 ~ a1 ~ f#1!8", AY: "f#1!8 b1 ~@7",
  AZ: "[~@8 b1 ~@3 b1@6 f#1 ~ d2@4 b1@2 ~@6]/2", BA: "~@2 f#1 ~ a1@4 b1 ~@3 b1@4",
  BB: "[~@2 f#1 d2@3 ~@2 b1 ~@3 f#1 ~ a1@4 f#1 ~ a1@3 ~ b1 ~@3 b1@6 f#1 ~ d2@4 b1@2 ~@6]/3",
  BC: "~@4 f#1@4 e1 ~@3 e1@4", BD: "~@2 f#1 ~ a1@3 ~ b1@5 ~ f#1@2", BE: "b1 ~@3 b1@3 ~ f#1@5 ~ a#1 ~",
  BF: "b1@5 ~ f#1@2 b1@5 ~ b1 ~", BG: "a#1@4 ~@2 a#1 ~ g#1@4 ~@2 g#1 ~", BH: "f#1@4 a#1@4 b1@5 ~ f#1@2",
  BI: "b1 ~@3 b1@3 ~ f#1@4 ~@2 a#1@2", BJ: "b1 ~@3 b1@3 ~ b1@4 ~@2 b1 ~", BK: "a#1@4 ~@2 a#1 ~ g#1@5 ~ g#1 ~",
  BL: "f#1 ~@3",
})).s("gm_slap_bass_1").gain(0.44)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A B C D A E F G ~@8 H I J K L M N O P Q R O S T U V ~@4 H I J K L M N O P Q R O S T U V ~@61 W X Y Z AA AB AC AD AE AF
  AG AH AI AJ AK AH AL ~@16
>`.pickRestart({
  A: "[f#3,b3,d#4,f#4] ~@3 [f#3,b3,d#4,f#4]@3 ~ [a#3,g#4] [a#3,f#4]@2 ~ [a#3,d#4]@2 c#4 ~", // B A#7 D#m D#5
  B: "[e3,g#3,b3] ~ [e3,g#3,b3]@3 ~ [d#3,f#3,b3]@5 ~ f#3 g#3 b3 ~", C: "[f#3,b3,d#4]@6 ~@2 [f#3,a#3,c#4]@5 ~@3",
  D: "[g#3,b3,e4]@2 d#4 ~ [g#3,c#4] ~ [f#3,b3]@6 ~@4", // E C#5 B5
  E: "[e3,g#3,b3] ~ [e3,g#3,b3]@3 ~ [d#3,f#3,b3]@4 ~@2 f#3 g#3 b3 ~", F: "[f#3,b3,d#4]@3 ~ [f#3,a#3,c#4]@3 ~",
  G: "[g#3,b3,e4]@2 d#4 ~ [e3,c#4] ~ [f#3,b3]@5 ~@5", // E C#m B5
  H: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~ [g#3,b3,d4,e4] ~@3 [g#3,b3,d4,e4]@3 ~", // B E7
  I: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~ [f#3,b3,d4,e4] ~@3 [g#3,b3,d4,e4]@3 ~", // B Bm E7
  J: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@4 [g#3,b3,e4]!2 ~@2 [g#3,b3,e4]@3 ~", // B E
  K: "[f#3,b3,d#4] ~@3 f#3@2 a3@3 ~ f#3 ~ a3@3 ~", // B
  L: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~ [g#3,b3,e4]!2 ~@2 [g#3,b3,e4]@3 ~", // B E
  M: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~ [g#3,b3,e4] ~@3 [g#3,b3,e4]@3 ~", // B E
  N: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~ [f#3,a#3,c#4] ~ [f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4] ~", // B F#
  O: "[e3,g#3,b3] ~@3 [e3,g#3,b3]@3 ~ [d#3,f#3,b3] ~@3 [d#3,f#3,b3]@3 ~", // E B
  P: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@5 ~ [f#3,b3,d#4]!2 ~@2 [f#3,b3,d#4] ~", // B
  Q: "[f#3,a#3,c4,c#4] ~@3 [f#3,a#3,c#4]@5 ~ [f#3,g#3,b3,d#4] [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~, ~@4 c4 ~@11", // F# G#m7 B
  R: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~ [f#3,a#3,c#4]!2 ~@2 [f#3,a#3,c#4]@3 ~", // B F#
  S: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4]@4 ~@2 [f#3,b3,d#4]!2 ~@2 [f#3,b3,d#4] ~, ~@4 c#4 ~@11", // B
  T: "[f#3,a#3,c#4] ~@3 [f#3,a#3,c#4]@4 ~@2 [f#3,b3,d#4]!2 ~@2 [f#3,b3,d#4] ~", // F# B
  U: "[e3,f#3,a#3,b3,c#4,d#4] ~@3 [f#3,b3,d#4]@3 ~ [f#3,a#3,c#4]!2 ~@2 [f#3,a#3,c#4]@3 ~", // D#m7 B F#
  V: "[e3,g#3,b3] ~@3 [e3,g#3,b3]@3 ~ [d#3,f#3,b3] ~@7", W: "~@8 [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~",
  X: "[g#3,b3,d4,e4] ~@3 [g#3,b3,d4,e4]@3 ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~", // E7 B
  Y: "[f#3,b3,d4,e4] ~@3 [g#3,b3,d4,e4]@3 ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@4", // Bm E7 B
  Z: "[g#3,b3,e4]!2 ~@2 [g#3,b3,e4]@3 ~ [f#3,b3,d#4] ~@3 f#3@2 a3@2", // E B
  AA: "~@2 f#3 ~ a3@3 ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~", // B
  AB: "[g#3,b3,e4]!2 ~@2 [g#3,b3,e4]@3 ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~", // E B
  AC: "[g#3,b3,e4] ~@3 [g#3,b3,e4]@3 ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~", // E B
  AD: "[f#3,a#3,c#4] ~ [f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4] ~ [e3,g#3,b3] ~@3 [e3,g#3,b3]@3 ~", // F# E
  AE: "[d#3,f#3,b3] ~@3 [d#3,f#3,b3]@3 ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@4", // B
  AF: "~@2 [f#3,b3,d#4]!2 ~@2 [f#3,b3,d#4] ~ [f#3,a#3,c4,c#4] ~@3 [f#3,a#3,c#4]@4, ~@12 c4 ~@3", // B F#
  AG: "~@2 [f#3,g#3,b3,d#4] [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@3 ~", // G#m7 B
  AH: "[f#3,a#3,c#4]!2 ~@2 [f#3,a#3,c#4]@3 ~ [e3,g#3,b3] ~@3 [e3,g#3,b3]@3 ~", // F# E
  AI: "[d#3,f#3,b3] ~@3 [d#3,f#3,b3]@3 ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@4, ~@12 c#4 ~@3", // B
  AJ: "~@2 [f#3,b3,d#4]!2 ~@2 [f#3,b3,d#4] ~ [f#3,a#3,c#4] ~@3 [f#3,a#3,c#4]@4", // B F#
  AK: "~@2 [f#3,b3,d#4]!2 ~@2 [f#3,b3,d#4] ~ [e3,f#3,a#3,b3,c#4,d#4] ~@3 [f#3,b3,d#4]@3 ~", AL: "[d#3,f#3,b3] ~@15",
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · rock organ
const rock_organ = note(`<
  A B C D A B A D E F E G F@3 G H F I J F I A D K L M N O L A D E F E G H F I J F I A D K L M N O L A D P@2 Q@2 P@2 R@2
  S@2 T U V W V W V X V W V W V X Y Z ~@19 AA@2 AB AC@2 AD@2 AE AF AG AH AI AJ D AK AL@2 AK N AM@2 N AN AO AP@2 AQ AR
  AS@2 AT AO AP@2 AQ AU AS@2 AT AO AP@2 AV ~@6
>`.pickRestart({
  A: "[b4,d#5,f#5]@7 ~ [a#4,c#5,f#5]@7 ~", B: "[g#4,b4,e5]@7 ~ [f#4,b4,d#5]@7 ~", C: "[b4,d#5,f#5]@8 [a#4,c#5,f#5]@7 ~",
  D: "[g#4,b4,e5]@7 ~ [f#4,b4,d#5]@8", E: "[f#4,b4,d#5]@8 [g#4,b4,e5]@7 ~", F: "[f#4,b4,d#5] [g#4,b4,e5]",
  G: "[f#4,b4,d#5] ~@3 f#4@2 a4@4 f#4 ~ a4@2 ~@2", H: "[f#4,b4,d#5]@7 ~ [g#4,b4,e5]@8",
  I: "[f#4,b4,d#5]@7 ~ [g#4,b4,e5]@7 ~", J: "[f#4,b4,d#5]@3 ~ [b3,f#4]@2 [c#4,a4]@4 f#4@2 [c#4,a4] ~@3, ~@10 b3 ~@5",
  K: "[f#4,b4,d#5]@15 ~", L: "[f#4,a#4,c#5]@7 ~ [f#4,b4,d#5]@7 ~", M: "[b4,d#5,f#5] [a#4,c#5,f#5]",
  N: "[g#4,b4,e5]@8 [f#4,b4,d#5]@7 ~", O: "[f#4,b4,d#5]@11 ~ [f#4,b4,d#5]@4",
  P: "[[b4,d5,f#5]@11 ~ [b4,d5,f#5]@2 [b4,e5,g#5]@18]/2", Q: "[[b4,d5,f#5]@6 [b4,d5,f#5] [b4,e5,g#5]@9]/2",
  R: "[[b4,e5,g#5]@6 [b4,e5,g#5] [b4,e5,g#5]@9]/2", S: "[[c#5,e5,g#5]@7 ~]/2", T: "[b4,d5,f#5]@15 ~",
  U: "[b4,e5,g#5]@7 ~ [b4,d#5,g#5]@8", V: "[b4,d5,f#5]", W: "[b4,e5,g#5]@15 ~", X: "[b4,e5,g#5]",
  Y: "[a#4,c#5,f#5]@15 ~", Z: "[a#4,c#5,f#5]@3 ~",
  AA: "[~@8 b4@10 [a4,d5] [b4,e5]@2 ~ [a4,d5] [f#4,b4]@9, ~@8 f#4@13 ~@11]/2", AB: "~ [f#4,b4]",
  AC: "[~@2 [a4,d5] [b4,e5]@3 [a4,d5] [f#4,b4]@12 ~@5 [f#4,b4]@8]/2", AD: "~@2 [a4,d5] [b4,e5]@2 ~ [a4,d5] [f#4,b4]@9",
  AE: "~@2 [a4,d5] [b4,e5]@3 [a4,d5] [f#4,f#5]@2 ~ [f4,f5]@2 [e4,e5]@2 [d4,d5] ~", // D5 E5 D5 F# F E D
  AF: "[c#4,c#5]@2 [c4,c5]@2 [b3,b4]@2 [a3,a4] ~ f#5@2 f5@2 e5@2 d5 ~", AG: "c#5@2 c5 ~ b4@2 a4@2 f#5@2 f5 ~ e5 ~ d5 ~",
  AH: "c#5@2 c5 ~ b4@2 a4 ~ f#4!8", AI: "f#4!8 b4 ~@7", AJ: "~ [f#4,b4,d#5]", AK: "[g#4,b4,e5] [f#4,b4,d#5]",
  AL: "[[g#4,b4,e5]@7 ~ [f#4,b4,d#5] ~@3 f#4@2 a4@4 f#4 ~ a4@2 ~@2 [f#4,b4,d#5]@7 ~]/2", // E B
  AM: "[[g#4,b4,e5]@7 ~ [f#4,b4,d#5]@3 ~ [b3,f#4]@2 [c#4,a4]@4 f#4@2 [c#4,a4] ~@3 [f#4,b4,d#5]@8, ~@18 b3 ~@13]/2", // E B B5 F#m B
  AN: "[g#4,b4,e5]@7 ~ [b4,d#5,f#5]@7 ~", AO: "[a#4,c#5,f#5]@7 ~ [g#4,b4,e5]@7 ~",
  AP: "[[f#4,b4,d#5]@8 [f#4,b4,d#5]@15 ~ [f#4,a#4,c#5]@7 ~]/2", AQ: "[f#4,b4,d#5]@7 ~ [b4,d#5,f#5]@8",
  AR: "[a#4,c#5,f#5] [g#4,b4,e5]", AS: "[[f#4,b4,d#5]@7 ~ [f#4,b4,d#5]@11 ~ [f#4,b4,d#5]@4 [f#4,a#4,c#5]@7 ~]/2",
  AT: "[f#4,b4,d#5]@7 ~ [b4,d#5,f#5]@7 ~", AU: "[a#4,c#5,f#5]@8 [g#4,b4,e5]@7 ~", AV: "[f#4,b4,d#5]@7 ~@9",
})).s("gm_rock_organ").gain(0.66).pan(0.4)

// chords · overdriven guitar
const overdriven_guitar = note("<~@24 A B C D E F G H ~@12 A B C D E F G H ~@70 I J K L M N O P ~@16>".pickRestart({
  A: "~@10 f#4 g#4 b4 ~ [b4,c#5] ~", B: "c#5@7 ~ d#5@2 [d#5,e5,f#5] ~ [d#5,e5,f#5] ~ d#5 c#5",
  C: "b4@7 ~ f#4 g#4 [b4,c#5] ~ [b4,c#5,d5] ~ [c#5,d5] ~", // Bsus2 Bm Dmaj7
  D: "[c#5,f5] ~@3 [d5,d#5,f5] c#5 b4 g#4 b4 ~ [b4,c#5,d#5] ~ [b4,c#5,d#5] ~ [b4,c#5] g#4, d5@3 ~@13", // C# Dm B Bsus2
  E: "b4@7 ~@4 g#4 b4@2 c#5 b4, ~@5 f#4 ~@2", F: "c#5@7 ~ d#5@2 f#5 ~ g#5 f#5 d#5 ~",
  G: "b4@7 ~ f#5@3 ~ [d#5,e5,f#5,g#5] f#5 d#5 c#5", H: "[a#4,b4] ~ [a#4,b4,c#5] ~ [c5,d5] c#5 b4 g#4 b4@5 ~@3",
  I: "~@2 f#4 g#4 b4 ~ [b4,c#5] ~ c#5@7 ~", J: "d#5@2 [d#5,e5,f#5] ~ [d#5,e5,f#5] ~ d#5 c#5 b4@7 ~",
  K: "f#4 g#4 [b4,c#5] ~ [b4,c#5,d5] ~ [c#5,d5] ~ [c#5,f5] ~@3 [d5,d#5,f5] c#5 b4 g#4, ~@8 d5@3 ~@5", // Bsus2 Bm Dmaj7 C# Dm
  L: "b4 ~ [b4,c#5,d#5] ~ [b4,c#5,d#5] ~ [b4,c#5] g#4 b4@7 ~", M: "~@3 g#4 b4@2 c#5 b4 c#5@7 ~, ~ f#4 ~@6",
  N: "d#5@2 f#5 ~ g#5 f#5 d#5 ~ b4@7 ~",
  O: "f#5@3 ~ [d#5,e5,f#5,g#5] f#5 d#5 c#5 [a#4,b4] ~ [a#4,b4,c#5] ~ [c5,d5] c#5 b4 g#4", P: "b4@5 ~@11",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.6)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@56 A@2 B@2 C@2 D E F ~ G D H I J K L M L N L ~ J ~@3 O ~ O ~ P ~@3 Q@5 R@5 S@3 T U V W X Y ~@37
>`.pickRestart({
  A: "[[f#3,b3]@13 ~ b3@18]/2", B: "[[b3,e4]@13 ~ b3@18]/2", C: "[c#4@15 ~]/2", D: "b3", E: "b3@7 ~ [g#3,b3,d#4]@8",
  F: "[f#3,b3]@15 ~", G: "[f#3,b3,d4]@15 ~", H: "[f#3,b3,d4]", I: "[b3,e4]@15 ~", J: "[b3,d4,f#4] ~ [b3,d4,f#4] ~@13",
  K: "[b3,e4] ~@7 [b3,e4]@5 ~@3", L: "[b3,d4,f#4] ~ [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@9",
  M: "~@8 [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~, ~@8 d#4 ~@7", N: "~@8 [b3,e4,g#4]@4 [b3,e4,g#4]@3 ~",
  O: "~@10 [b3,d4,f#4] ~@5", P: "~@10 [b3,e4,g4] ~@5", Q: "[~ b2@9]/5", R: "[~@8 b2@48 b2@15 ~ b2@8]/5",
  S: "[~@2 d3 e3@3 d3 b2@15 ~@2 b2@10 d3 e3@2 ~ d3 b2@9]/3", T: "~@2 d3 e3@3 d3 b2@9",
  U: "~@2 d3 e3@3 d3 f#3@3 f3@2 e3@2 d3@2", V: "c#3@2 c3 ~ b2@2 a2 ~@3 f3@2 e3@2 d3@2",
  W: "c#3@2 c3@2 b2@2 a2 ~ f#3@2 f3@2 e3@2 d3@2", X: "c#3@2 c3@2 b2@2 a2 ~ f#2!8", Y: "f#2!8 b2 ~@7",
})).s("gm_lead_2_sawtooth").gain(0.4).pan(0.8)

// chords · lead 2 sawtooth · soft notes
const lead_2_sawtooth_soft = note("<~@56 A@2 B@2 C@2 D E F G ~ H ~ I ~ J ~@33 K ~@40>".pickRestart({
  A: "[d4@13 ~ [g#3,e4]@18]/2", B: "[g#3@13 ~ [g#3,e4]@18]/2", C: "[[g#3,e4]@31 ~]/2", D: "[f#3,d4]",
  E: "[g#3,e4]@7 ~@9", F: "d4@7 ~", G: "[g#3,b3,e4]", H: "[g#3,e4]", I: "g#3@15 ~", J: "~@8 g#4@5 ~@3",
  K: "~@8 f#3 ~@7",
})).s("gm_lead_2_sawtooth").gain(0.25).pan(0.8)

// other · lead 1 square
const lead_1_square = note(`<
  ~@9 A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@20 B C D@2 ~@13 E F G H I H J K L M N O ~@23 P@2 ~@2 P@2 ~@26
>`.pickRestart({
  A: "~ [b4,d5,f#5]@3", B: "b4@7 ~ d4@8", C: "b3 e4 d4 d#4@4 ~",
  D: "[g#4@2 b4@2 d5@2 c#5@4 b4 ~ a4@7 ~ f#4@2 a4@2 f#4 b4@6 ~]/2", E: "b4 c#5 d5 ~ f#5 ~ b4 ~ c#5 ~ d5 ~ c#5 ~ b4 ~",
  F: "f#5 e5 d5 c#5 b4 ~ e4 ~ f#4 ~ g4 ~ f#4 ~ e4 ~", G: "e4 f#4 g4 a4 b4 ~ e4 ~ f#4 ~ g4 ~ f#4 ~ e4 ~",
  H: "b4!2 a4 b4 ~ f#4 a4 b4!2 ~@7", I: "b4!2 a4 b4 ~ f#4 a4 b4 c#5 d5 c#5 b4 a4@2 f#4 ~",
  J: "b4!2 a4 b4 ~ f#4 a4 b4 f#5 g5 f#5 e5 d5 ~ b4 ~", K: "e5!2 d5 e5 ~ b4 d5 e5!2 ~@7",
  L: "e5!2 d5 e5 ~ b4 d5 e5 f#5 g5 f#5 e5 d5@2 b4 ~", M: "a#4 ~@3 b4 ~@3 c#5 ~@3 e4 ~ e4 ~",
  N: "f#4 ~@3 g4 ~ g4 ~ c#4 ~@3 d4!4", O: "e4!2 ~@2 b3!2 c#4!2 ~@8", P: "[~@12 [b4,d5,f#5]@13 ~@7]/2",
})).s("gm_lead_1_square").gain(0.4).pan(0.3)

// other · lead 1 square · soft notes
const lead_1_square_soft = note("<~@79 A B C ~@6 D E F ~@55>".pickRestart({
  A: "~@3 e5 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4", B: "~@5 b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3",
  C: "~@5 a#3 ~ a#3 ~ e3 ~ e3 ~ e3 ~ e3", D: "~ a#4!3 ~ b4!3 ~ c#5!3 ~ e4 ~ e4", E: "~ f#4!3 ~ g4 ~ g4 ~ c#4!3 ~@4",
  F: "~@2 a#3!2 ~@12",
})).s("gm_lead_1_square").gain(0.2).pan(0.3)

// other · lead 3 calliope
const lead_3_calliope = note("<~@90 A@2 B C D E F@8 G ~@41>".pickRestart({
  A: "[~@8 d6@16 d6 b5 e6 b5 f#6 ~ g6 b5]/2", B: "f#6 b5 e6 b5 d6 b5 e6 b5 d6 b5 e6 b5 f#6 b5 g6 b5",
  C: "f#6 ~ g6 b5 a6 b5 b6 ~ e6 ~ g6 ~ b6 ~ g6 b5", D: "e6 ~ g6 ~ b6 ~ g6 b5 e6 ~ f#6 ~ g6 ~ a6 ~",
  E: "b6 ~ a6 ~ g6 b5 a6 b5 b6 b5 f#6 ~ g6 ~ f#6 ~", F: "b6 ~ f#6 ~ g6 ~ f#6 ~ b6 ~ f#6 ~ g6 ~ f#6 ~",
  G: "b6 ~ f#6 ~ g6 ~ f#6 ~@9",
})).s("gm_lead_3_calliope").gain(0.25).pan(0.7)

// other · lead 3 calliope · soft notes
const lead_3_calliope_soft = note("<~@91 A ~ B C D E@8 F ~@41>".pickRestart({
  A: "~@13 b5 ~@2", B: "~ b5 ~@5 b5 ~ b5 ~ b5 ~ b5 ~@2", C: "~ b5 ~ b5 ~ b5 ~@3 b5 ~ b5 ~ b5 ~ b5",
  D: "~ b5 ~ b5 ~@7 b5 ~ b5 ~ b5", E: "~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5", F: "~ b5 ~ b5 ~ b5 ~ b5 ~@8",
})).s("gm_lead_3_calliope").gain(0.1).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A@16 B@2 C D E D C D A@12 B@2 C D E D C D@2 F@3 G F@11 H I J K@3 F@3 L M ~@19 N O A P D Q R S T U V W A@11 X Y Z
  AA AB AC AB AA AD ~@16
>`.pickRestart({
// … 90 more lines

More by The Hollies