Strudelify
Stuck on You cover art

1991 · Can't Slow Down

Stuck on You

Lionel Richie

KeyF majorTempo67 bpm
0:00/0:00
// Stuck on You — RICHIE LIONEL
// 67 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 6, 4/4 at bar 6, 2/4 at bar 37, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 53 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(67/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 · fretless bass
const bass = note(`<
  ~@5 A B C D E F G H E H E H E I C D E F G D E H E J I K L M I N O P Q R E S E I E S E T@2 U V W@2 ~
>`.pickRestart({
  A: "f1@6 ~ f1 a1@8", B: "bb1@6 ~ bb1 c2@7 ~", C: "f1@6 ~ f1 a1@4 ~ f1 g1 a1", D: "bb1@8 c2@6 ~ c2",
  E: "f1@6 ~ f1 a1@6 ~ a1", F: "bb1@6 ~ bb1 c2@5 c2 ~ c2", G: "f1@6 ~ f1 a1@4 ~ f1 a1 c2", H: "bb1@7 ~ c2@6 ~ c2",
  I: "bb1@6 ~ bb1 c2@6 ~ c2", J: "bb1@7 ~ c2@5 ~ f1 ~", K: "f2@5 e2@2 ~ d2@5 a1@2 ~", L: "bb1@6 ~ bb1 c2@4 ~ c2!3",
  M: "f2@5 e2@2 d2@2 e2@2 f2@3 d2@2", N: "f2@4 e2@4 d2@7 ~", O: "c2@3 d2@12 ~", P: "c2@3 d2@5 bb1@4 ~ bb1 ~ bb1",
  Q: "~ bb1@4 ~@2 bb1 bb1@7 ~", R: "c2@12 ~ c2 c2@2", S: "bb1@6 ~ bb1 c2@4 ~ c2 ~ c2",
  T: "[bb1@6 ~ bb1 c2@15 ~ f1@6 ~ f1]/2", U: "a1@6 ~ a1 bb1@8", V: "~@2 c2@13 ~", W: "[~@2 f1@11 ~@3]/2",
})).s("gm_fretless_bass").gain(0.45)

// chords · epiano2
const epiano2 = note("<~@17 A B A C A B D B E B A F G H I J K L M N@2 O P B A Q A B A R@2 S T@4>".pickRestart({
  A: "[c4,f4,a4]@7 ~ [c4,e4,a4]@7 ~", B: "[d4,f4,bb4]@7 ~ [c4,e4,g4]@7 ~",
  C: "[d4,f4,bb4]@5 [d4,f4,bb4] ~ [c4,e4,g4]@8 ~", D: "[c4,f4,a4]@5 ~ [c4,f4,a4] ~ [c4,e4,a4]@7 ~",
  E: "[c4,f4]@7 ~ [c4,e4]@7 ~, a4@15 ~", F: "[d4,f4,bb4]@8 ~ [c4,e4,g4]@4 ~ [c4,f4,a4] ~",
  G: "[d4,f4,bb4]@7 ~ [e4,g4]@5 ~ [e4,g4,bb4] ~, ~@4 c5@3 ~", H: "[f4,a4,c5]@4 ~ [e4,g4,c5]@3 [f4,a4,d5]@7 ~",
  I: "[f4,bb4,d5]@7 ~ [e4,g4,c5]@7 ~", J: "[f4,a4,c5]@4 ~ [e4,g4,c5] ~ [f4,a4,d5] ~ [e4,g4,c5] ~ [f4,a4,c5]@4 ~",
  K: "[f4,bb4,d5]@5 ~ [f4,bb4,d5] ~ [e4,g4,c5]@7 ~", L: "[f4,a4,c5]@3 ~ [e4,g4,c5]@3 ~ [f4,a4,d5]@7 ~",
  M: "[e4,g4,c5]@3 d5@6 e5@2 d5@4 ~, ~@3 [f4,a4]@12 ~", // C F
  N: "[[e4,g4,c5]@3 [f4,a4,d5]@5 [f4,bb4,d5]@16 [f4,bb4,d5]@7 ~]/2", O: "[e4,g4,c5]@13 ~ [d4,g4,bb4] ~",
  P: "[c4,f4,a4]@8 [c4,e4,a4]@7 ~", Q: "[d4,f4,bb4]@7 ~ [e4,g4,c5]@4 ~ [d4,g4,bb4] ~@2",
  R: "[[d4,f4,bb4]@7 ~ [c4,e4,g4]@15 ~ [c4,f4,a4]@8]/2", S: "[c4,e4,a4]@7 ~ [d4,f4,bb4]@8",
  T: "[~@2 [e4,g4,c5]@17 ~ [f4,a4,c5]@6 ~@9 c5 ~@2 a5@20 ~@6, ~@31 f5@6 [c5,f5,g5]@21 ~@6, ~@33 g5@4 ~@27, ~@17 a5@2 ~@13]/4", // C F Csus4
})).s("gm_epiano2").gain(0.4)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B C D E F G H I J K L M N O P Q R G S T J K L Q N O P U V W X Y Z AA AB AC@2 AD AE AF AG AH AI AJ AK AL@2 AM@2 AN@3
>`.pickRestart({
  A: "~@4 f4 [g4,c5]@3 ~ c4 a3 [f4,a4]@2 ~ c4 f4, ~ f3, ~@8 f4@2 ~@3 a3@3", // C5 F
  B: "e4 c4 a3 [e4,a4]@2 ~ c4 e4 ~ c4 f3 [d4,f4]@2 ~ c4 d4, e3 d3, ~@5 a3@3 d4@2 ~@3 f3@3", // A5 Dm
  C: "c4 ~@2 e4@2 g3 g4 g3 ~ c4 a3 [f4,a4]@2 ~ c4 f4, c3 ~, ~ g3@3 ~@4 f3@8, ~@2 c4@6 f4@2 ~@3 a3@3", // F
  D: "~ c4 a3 [e4,a4]@2 ~ c4 e4 d4 ~ c4 [d4,f4]@2 ~ c4 [d4,f4], e3 d3, e4@2 ~@3 a3@3 ~ f3@2 ~@2 f3@3", // A5 Dm
  E: "c4 ~ c4 d4@2 g3 [c4,e4] g3 [c3,c4] ~ c4 e4@2 ~@2 e4, c3@4 ~@3 d4, ~ g3@3 ~@5 g3@3 ~ c4@2 ~", // C
  F: "~ c4 a3 [f4,a4]@2 ~ c4 f4 ~ c4 a3 [e4,a4]@2 ~@2 e4, f3 e3, f4@2 ~@3 a3@3 e4@2 ~@3 a3@3, ~@7 c4", // F A5
  G: "~ bb3 f3 [d4,f4]@2 ~ bb3 [d4,f4] e4 c4 g3 [e4,g4]@2 ~ c4 [e4,g4], d3 c3, d4@2 ~@3 f3@3 ~@5 g3@3", // Dm Em
  H: "f4 c4 a3 [f4,a4]@2 ~ c4 ~ e4 c4 a3 [c4,a4]@2 ~@2 e4, f3@7 f4@2 ~@4 a3@3, ~@5 a3@3 e3@8, ~@7 c4", // F
  I: "d4 ~ bb3 c4@2 d4@2 ~@3 c4 d4 e4 d4 c4 g3, d3@8 c3@5 ~@3, ~ f3@3 ~@5 g3@5 ~@2",
  J: "~ c4 a3 [f4,a4]@2 ~ c4 ~@2 c4 a3 [c4,a4]@2 ~ c4 e4, f3@7 f4@2 ~@7, f4@2 ~@3 a3@3 e3@8, ~@8 e4@2 ~@3 a3@3", // F
  K: "~ bb3 f3 [d4,f4]@2 ~@2 f4 e4 ~ c4 [e4,g4]@2 ~ c4 e4, d3 c3, d4@2 ~@3 f3@3 ~ g3@2 ~@2 g3@3, ~@3 bb3 ~@4", // Dm Em
  L: "f4 c4 a3 [f4,a4]@2 ~ c4 f4 e4 c4 a3 [e4,a4]@2 ~ c4 e4, f3 e3, ~@5 a3@3 ~@5 a3@3", // F A5
  M: "~@2 bb3 c4@2 d4@2 f4 c3 g3 c4 d4 e4 d4 c4 g3, d3 ~, d4 ~@7, ~ f3@2 ~@13",
  N: "~ c4 a3 [f4,a4]@2 ~ c4 f4 ~ c4 ~ [e4,a4]@2 ~ c4 e4, f3 e3, f4@2 ~@3 a3@3 e4@2 a3@2 ~ a3@3", // F A5
  O: "~ bb3 f3 [d4,f4]@2 ~@2 d4 c4 ~ c4 [c4,e4]@2 ~ d4 e4, d3 c3, d4@3 ~@2 f3@3 ~ g3@2 ~@2 g3@3, ~@3 bb3 ~@4", // Dm C
  P: "~ c4 ~ [f4,a4]@2 ~ c4 f4 ~ c4 a3 [e4,a4]@2 ~ c4 e4, f3 e3, f4@2 a3@2 ~ a3@3 e4@2 ~@3 a3@3", // F A5
  Q: "~ bb3 f3 [d4,f4]@2 ~ bb3 [d4,f4] e4 c4 g3 [e4,g4]@2 ~ c4 e4, d3 c3, d4@2 ~@3 f3@3 ~@5 g3@3", // Dm Em
  R: "[f3,f4] c4 a3 [f4,a4]@2 ~ c4 f4 ~ c4 a3 [e4,a4]@2 ~@2 e4, ~@5 a3@3 e3@8, ~@8 e4@2 ~@3 a3@3, ~@7 c4", // F A5
  S: "f4 c4 a3 [f4,a4]@2 ~ c4 f4 e4 c4 a3 [c4,a4]@2 ~@2 e4, f3 e3, ~@5 a3@3 ~@5 a3@3, ~@7 c4", // F
  T: "d4 ~ c4 d4@2 ~ d4 f3 c4 ~ c4 d4 e4 d4 c4 g3, d3 c3, ~ f3@3 ~ f3@2 ~@2 g3@5 ~@2",
  U: "d4 bb3 f3 [d4,f4]@2 ~ bb3 d4 e4 c4 ~@3 g3 [a3,f4]@2, bb2 c3, ~@5 f3@2 ~@3 g3@2 e4@2 ~@2, ~@11 c4@3 ~@2", // Dm
  V: "f4 d4 bb3 [d4,f4]@2 ~ bb3 [d4,f4] e4 c4 g3 [e4,g4]@2 ~ c4 g4, bb2 c3, ~@5 f3@3 ~@5 g3@3", // Dm Em
  W: "f4 c4 ~ f4@2 ~@2 e4 [d4,f4] ~ d4 f4@2 ~ d4 [c3,e4], f3@5 [e3,g3]@3 d3@8, ~@2 a3@2 ~@2 c4@2 ~ a3@3 ~ a3@2 ~", // Dm C Em
  X: "~ bb3 f3 [d4,f4]@2 ~ bb3 [d4,f4] e4 c4 g3 [e4,g4]@2 ~@2 e4, bb2 c3, d4@2 ~@3 f3@2 ~@6 g3@3, ~@7 c4", // Dm Em
  Y: "f4 ~ c4 f4@2 ~@2 e4@2 ~ c4 e4@2 ~ c4 f4, f3@4 ~ e3@9 ~@2, ~ a3@2 ~@2 g3@2 ~@2 g3@2 ~@2 a3@3, ~@3 c4 ~@4",
  Z: "[d4,f4] bb3 f3 [d4,f4]@2 ~ bb3 [d4,f4] e4 c4 g3 [e4,g4]@2 ~ c4 g4, bb2 c3, ~@5 f3@3 ~@5 g3@3", // Dm Em
  AA: "f4 c4 ~ f4 e4 ~ c4 e4@2 ~ d4 f4@2 ~ d4 f4, f3@4 e3@3 d3@9, ~@2 a3@2 ~ g3@2 ~@2 a3@2 ~@2 a3@3",
  AB: "~ c4 g3 f4@2 ~ d4 f4@2 ~ c4 d4@2 e4 ~ c4, [c3,e4]@3 d3@13, ~@5 a3@2 ~@2 a3@7, ~@7 d4", // C
  AC: "[~@2 g3 [d4,f4]@2 ~ c4 [c3,d4] ~ bb3 f3 [d4,f4]@2 ~ c4 ~@3 bb3 d4@2 ~ bb3 c4 d4 ~ bb3 d4@2 c4 [d4,f4]@2, [c3,e4]@3 d3@4 ~ bb2@7 d4@2 f3@2 f4@5 ~@8, ~ c4@2 ~@2 a3@2 ~ d4@2 ~@3 f3@3 bb2@8 bb2@8, ~@21 f3@3 ~ f3@2 ~@5]/2", // Dm Csus2 Dm C
  AD: "e4 c4 g3 e4@2 ~ c4 d4 ~@2 c4 ~@4 [c4,e4], c3@13 c3@3, ~@3 g4@6 g3@3 ~@2 g3@2, ~@5 g3@3 e4@2 ~ d4@4 ~", // C
  AE: "f4 c4 a3 f4@2 ~ c4 ~ e4 c4 a3 e4@2 ~ c4 e4, f3@7 f4@2 ~@4 a3@3, ~@3 a4@5 ~@3 a4@4 ~, ~@5 a3@3 e3@8",
  AF: "~ bb3 ~ [d4,f4]@2 ~ bb3 ~ e4 c4 g3 ~@4 e4, d3@7 [d4,f4]@2 ~@2 [e4,g4]@3 c4@2, d4@2 f3@2 ~ f3@3 c3@8, ~@13 g3@3", // Dm Em
  AG: "f4 c4 a3 [f4,a4]@2 ~ c4 f4 ~ c4 g3 e4@2 ~ c4 e4, f3 e3, ~@5 a3@3 e4@2 ~ g4@4 ~, ~@13 g3@3", // F
  AH: "~ bb3 f3 [d4,f4]@2 ~ bb3 ~@3 c4 d4 ~ d4 c4 g3, d3@7 d4@2 g3@5 ~@2, d4@2 ~@3 f3@3 c3@8, ~@6 e4 ~", // Dm
  AI: "~ c4 a3 [f4,a4]@2 ~ c4 ~@2 c4 a3 [e4,a4]@2 ~ c4 e4, f3@7 f4@2 ~@7, f4@2 ~@3 a3@3 e3@8, ~@8 e4@2 ~@3 a3@3", // F A5
  AJ: "~ bb3 f3 [d4,f4]@2 ~ bb3 [d4,f4] e4 c4 g3 ~@2 d4 c4 g3, d3 c3, d4@2 ~@3 f3@3 ~@3 [e4,g4]@5", // Dm Em
  AK: "~ c4 ~ [f4,a4]@2 ~ c4 ~@2 c4 a3 ~@2 c4 ~ e4, f3@7 [f4,a4]@2 ~@5 a3@2, f4@2 a3@2 ~ a3@3 e3@8, ~@8 e4@2 ~ [e4,a4]@4 ~", // F A5
  AL: "[~ bb3 f3 [d4,f4]@2 ~ bb3 d4 e4 g3 c4 d4 e4 ~ c4 g3@9 ~ f4 ~ [a3,f4,a4]@2 ~ [c4,f4]@2, d3@2 c3@3 ~ f3@2, d4@2 ~@3 f3@3 ~@5 d4@2 ~@11 c4@3 a3@3]/2", // Dm F5
  AM: "[~ e4 ~ [a3,a4]@2 ~ [c4,e4]@2 ~ d4 bb3 [d4,f4]@2 ~@2 [bb3,d4]@2 ~@2 e4 ~@2 [e4,g4]@6 ~@4, a2@8 bb2@10 c3@11 ~@3, ~@2 c4@3 a3@3 ~@6 f3@4 ~@3 c4@8 ~@3]/2", // A C Dm Bb Em
  AN: "[~@5 [f3,a3,c4,f4,a4]@33 ~@10, ~@4 f2@33 ~@11]/3", // F
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.2)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D E F G H I J K L M N O P Q R S H I J K L M N O P Q T U V W X Y Z@2 AA AB R G H I J K L AC@2 AD@2 AE@3
>`.pickRestart({
  A: "~@9 c4 ~ [f4,a4]@5, ~ f2, ~@8 f4@2 a3@3 ~@3, ~@11 c4 ~@4", // F
  B: "e4 c4 a3 [c4,e4]@5 d4 bb3 ~ [bb3,d4]@5, a2 bb2, ~@5 f3@3", C: "c4@3 d4@3 e4@2 f4 c4 a3 [c4,f4]@5, c3@8 f2@7 ~",
  D: "~ a3 f3 [c4,e4]@3 f4 d4@4 f3@2 c4 bb3@2, [a2,c4]@3 ~@4 bb2@9", E: "c4@2 ~ d4@3 e4@4 f4@2 g4@3 ~, c3",
  F: "~ c4 ~ [c4,f4]@5 ~ a3 ~ [c4,e4]@5, f2@4 [a2,c4] ~@3, f4@2 a3@3 ~@5 e3@6", // F5 C Am
  G: "d4 bb3 f3 [f3,bb3,d4]@4 ~@2 g3 ~ [g3,c4,e4]@4 ~, bb2 c3, ~@8 c4@2 e3@5 ~", // Bb C
  H: "~ c4 a3 [f3,a3,c4,f4]@5 ~ c4 a3 [e3,a3,c4,e4]@5, f2 ~@3 a2@4", // F Am
  I: "~ bb3 ~ [bb3,d4]@5 ~ g3 c4 d4 e4 d4 c4 g3, bb2 c3, ~ f3@3 ~@4", // Bb
  J: "~ a3 f3 [a3,c4,f4]@5 ~ a3 ~ [c4,e4]@5, f2 a2, ~@4 c4 e3@3", // F C
  K: "d4@2 ~ [bb3,d4]@5 ~ g3 ~ [g3,c4]@5, bb2 c3, ~ f3@3 ~ e3@3", // Bb C5
  L: "~ a3 f3 [a3,c4,f4]@5 ~ c4 a3 [e3,a3,c4,e4]@5, f2 a2", // F Am
  M: "~ d4 ~ [bb3,d4]@5 ~ g3 c4 d4 e4 d4 c4 g3, bb2 c3, ~ f3@3 ~@4", // Bb
  N: "c4 a3 f3 [a3,c4,f4]@5 ~ c4 a3 [e3,a3,c4,e4]@5, f2 a2", // F Am
  O: "~ bb3 ~ [bb3,d4]@5 ~ g3 e3 [c4,e4]@2 g3 [bb3,e4]@2, bb2 c3, ~ f3@3 ~@4", // Bb C Bbdim
  P: "~@2 a3 [a3,c4]@2 f3 [a3,c4,f4]@2 ~@2 a3 ~@3 e3@2, f2 f2@3 a2@4, ~ f3@2 ~@6 e3@4 a3@3, ~@11 [c4,e4]@5", // Am F C
  Q: "~ bb3 ~ [bb3,d4]@5 ~@2 g3 [g3,c4]@2 e3 [f3,a3,c4,f4]@2, bb2 c3, ~@2 f3@6 ~ e3@3 ~@4", // Bb C5 F
  R: "~ c4 ~ [c4,f4]@5 ~ a3 ~ [c4,e4]@5, ~@2 a3@3 ~@3 [a2,c4]@2 e3@6", // F5 C Am
  S: "d4 bb3 f3 [f3,bb3,d4]@4 ~@2 g3 ~ [g3,c4,e4]@4 ~, bb2@8 c3@7 ~, ~@8 c4@2 e3@5 ~", // Bb C
  T: "f3 ~ d4 [f4,bb4,d5]@5 ~ e4 g4 [e4,g4,c5,e5]@5, ~ bb3@7 c4@8", // Bb C
  U: "~@2 f4 [f4,a4,c5,f5]@2 [e4,c5,e5]@3 [d4,f4,d5]@3 ~@2 d4 c4@2, f3@7 ~@4 [f4,c5]@5, ~ c4@7 a4@8", // F C Dm F5
  V: "~@2 bb4 [f4,bb4,d5]@5 ~@2 g4 [e4,g4,c5]@4 ~, bb3@7 ~ c4@8, ~ f4@2 ~@6 e4@2 ~@5", // Bb C
  W: "[f3,f4,a4,f5]@5 [e4,g4,c5,e5]@2 ~@2 [e4,g4,c5,e5]@2 [f3,f4,a4,f5]@5, ~@7 [d4,f4,a4,d5]@4 c5@2 ~@3", // F C F Dm
  X: "~ d4 f4 [f4,bb4,d5,f5]@5 e3 ~@2 [e4,g4,c5,e5]@5, bb3@7 ~@2 g3@5 ~@2, ~@5 c4@3", // Bb C
  Y: "~ c4 ~ [a4,c5,f5] [e4,g4,c5,e5]@4 ~@3 [f4,a4,d5]@4 ~, f3@7 ~ d3@6 ~@2, ~@2 f4@2 ~@5 a3@5 ~@2, ~@10 d4@5 ~", // F C Dm
  Z: "[c5 ~@3 d5@2 ~ d5 ~@3 d5@2 ~@2 d5 ~@2 e4 ~@4 c5 ~@7 c5, c4@3 bb3, ~ e4@2 e5@2 ~@3 e5@2 e4@2 ~ f4@3 ~ c5@2 d5@3 a4@2 ~@3 [bb4,d5]@3 f4@2, ~@2 g4@2 ~@2 f4@2 ~ c5@2 ~@3 a4@2 e5@3 ~@2 f4@3 ~@2 f4@2 ~ d4@3]/2", // Bb
  AA: "~ bb3 ~ [f4,bb4,d5,f5]@5 ~@2 bb4 f4@3 d4@2, f3@15 ~, [bb4,d5]@2 d4@3 ~@3 bb3@7 ~, ~@9 f4@2 [bb4,d5]@5", // Bb
  AB: "~ g3 ~@9 [f4,f5]@2 ~ [g4,g5] ~, e3@7 ~ e3@7 ~, ~@2 c4@6 ~ g3@6 ~, ~@3 [e4,c5,e5]@7 c4@2 ~ c4@2 ~, ~@11 c5@4 ~", // F G C
  AC: "[~ d4 ~ [bb3,d4]@5 ~ g3 c4 d4 e4 d4 c4 g3@9 [c4,f4]@5 ~ f4 ~, bb2@8 c3@8 ~@13 c4@2 ~, ~ f3@3 ~@8 [f3,a4]@4]/2", // Bb F5 F
  AD: "[[a3,c4,e4]@5 ~ [c4,e4]@2 [bb3,d4]@6 ~ [bb3,d4,f4]@2 ~ [c3,g3,c4,e4]@13 ~, [e3,a4]@4 d3@5 ~@7, ~@5 a3@3 ~@6 f3@2 ~@16]/2", // Am C Bb C A5
  AE: "[~@2 [f2,c3,f3,a3,c4,f4]@17 ~@5]/3", // F
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(0.8)

// other · overdriven guitar
const overdriven_guitar = note("<~@4 A B ~@7 C@2 D@2 E ~@7 F@2 G@2 H I J K L M N O@2 P Q ~@2 R E ~@3 S@6>".pickRestart({
  A: "~@9 [c5,a5] ~ [bb4,g5] [c5,a5] ~ [a4,f5] ~", B: "[c5,a5]",
  C: "[~@4 g3@2 f3 g3@4 ~ g3@2 f3 d3@9 ~ c3 d3 f3 f3@2 d3 c3]/2",
  D: "[f3@4 a3@2 f3 g3@4 ~ g3@2 f3 d3@9 ~ c3 d3 f3 d3@2 a2 g2]/2", E: "f2 ~",
  F: "[~@4 g3@2 f3 g3@4 ~ g3@2 f3 d3@9 ~ c3 d3 f3 g3@2 d3 c3]/2",
  G: "[f3@4 a3@2 f3 g3@4 ~ g3@2 f3 d3@5 ~ [f4,d5] ~ [e4,c5]@4 d5 c5@2 a4 g4]/2", H: "d5 c5", I: "a4@13 g4 f4 a4",
  J: "d5@8 c5@6 d5 e5", K: "f5@5 e5@2 d5@2 c5@5 a4 c5", L: "[bb4,d5]@8 [e4,c5]@6 ~ bb4, ~@7 g4",
  M: "[f4,a4]@11 g4@2 f4 d4@2", N: "c4@3 d4@13", O: "[c4@3 d4@12 bb4@17]/2", P: "c4 g4 c5 d5@4 e5@4 f5@3 g5@2", Q: "a5",
  R: "~@9 c3 d3 f3 f3@2 d3 c3", S: "[~@12 a3@2 f3 g3@4 ~ g3@2 f3 d3@11 ~ c3 ~ d3 f3 f3@3 ~ d3@2 c3@7 f2@39 ~@5]/6",
})).s("gm_overdriven_guitar").gain(0.45).pan(0.4)

// other · distortion guitar
const distortion_guitar = note("<~@13 A ~ B@2 C ~@6 D ~@2 E@2 F ~@2 G H ~@5 I ~@2 J K ~@9>".pickRestart({
  A: "[c4,a4] ~@3", B: "[~@6 a4 bb4@4 ~ bb4@2 a4 f4@9 ~ f4 a4 c5 d5@2 a4 g4]/2", C: "a4 ~", D: "~@4 c4 d4 f4 c5@7 ~@2",
  E: "[~@4 a4@2 f4 g4@4 ~ g4@2 f4 d4@9 ~ f2@2 g2 a2 [bb2,c3] d3 f3]/2", F: "bb2 ~", G: "~@12 c4@2 a3 g3", H: "bb3 ~",
  I: "f2 ~", J: "~@3 g5", K: "f5 ~",
})).s("gm_distortion_guitar").gain(0.35).pan(0.6)

// other · string ensemble 1
const string_ensemble_1 = note("<A@2 B@2 C D ~@15 E F G H ~@8 I J K L M N O ~@3 P F G Q@7>".pickRestart({
  A: "[~ c4@2 d4]/2", B: "[e4@3 f4@3 g4@2 a4@16 f4@8]/2", C: "c4@3 d4@3 e4@6 f4@2 g4@2", D: "[f4,a4]",
  E: "c6@11 d6 c6 e6@3", F: "d6@8 c6@3 g5@5", G: "a5@3 c6 e6@3 f6", H: "d6 ~", I: "bb5@2 c6 e6", J: "f6 e6 d6@2",
  K: "c4@3 d4@13", L: "c4@3 d4@5 d5@3 f5@3 bb5@2", M: "d6@3 a5@3 f5@10", N: "c5@3 d5@3 ~ e5@3 f5@3 g5@3", O: "c6",
  P: "c6@5 a5 c6 e6", Q: "[d6@8 c6@16 ~@4 a5 g5 f5 g5@5 a5 g5 f5 d5@11 c5@18 [f5,a5]@38 ~@6]/7",
})).s("gm_string_ensemble_1").gain(0.4)

// other · whistle
const whistle = note("<~@2 A@2 B C ~@47>".pickRestart({
  A: "[~@8 a5@12 g5@2 a5 f5@4 ~ d5@4]/2", B: "c5@3 d5@3 e5@4 f5@2 g5@2 d6@2", C: "c6",
})).s("gm_whistle").gain(0.4)

// other · pad halo
const pad_halo = note("<~@4 [c4@3 d4@3 e4@4 f4@2 g4@2 d5@2] c5 ~@47>").s("gm_pad_halo").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@13 A@3 B@2 A@3 B A@6 C D E D F B@3 C G D H@7 B I D J K ~@2>".pickRestart({
  A: "x ~@7 x ~@6 x", B: "x!2", C: "x ~@3 x ~@2 x", D: "x ~@6 x!2 ~@7", E: "x ~@4 x ~@2 x ~@4 x ~@2",
  F: "x ~@4 x ~ x ~ x ~ x ~@3 x", G: "x ~ x ~@4 x!2 ~@7", H: "x ~@6 x!2 ~@6 x", I: "~@8 x ~@6 x", J: "~ x ~@6",
  K: "~ x ~@2",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct("<~@13 [~ x ~ x]!4 [~ x ~@2]!8 [~ x ~ x]!4 ~@5 [~@3 x] [~ x ~ x]!12 ~@6>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@29 [~ x ~ x]!5 [~ x ~@2] ~@18>").gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<~@12 A B@4 C@7 D B@3 E F G H I H@2 J@2 H I B@7 K L M N ~@3>".pickRestart({
  A: "~@7 x", B: "x!8", C: "x!4", D: "x ~@3 x ~@3 x ~@3 x!2 ~ x", E: "x!5 ~@3", F: "~ x!15", G: "x!7 ~ x!5 ~ x!2",
  H: "x!16", I: "x!13 ~ x!2", J: "x!7 ~ x!8", K: "x!3 ~ x ~ x ~ x!3 ~@3 x!2", L: "~@8 x!8", M: "x!12 ~ x!3",
  N: "x ~ x!2 ~ x!3 ~ x ~@6",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct("<~@12 A ~@3 B ~@3 C ~ C@3 ~@5 D ~ E ~@2 F@2 ~ E ~@3 E ~@3 A ~@2 G ~@3>".pickRestart({
  A: "~@3 x", B: "~@13 x ~ x", C: "~@7 x", D: "~@7 x ~@5 x ~@2", E: "~@13 x ~@2", F: "~@7 x ~@8", G: "~@11 x ~@4",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@29 x ~@23>").gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@17 A ~@10 B ~@18 A ~ C D ~@2>".pickRestart({
  A: "x", B: "~@9 x!4 ~ x ~", C: "~ x ~@6", D: "~ x ~@2",
})).gain(0.4)

// drums · shaker
const shaker = s("sh").struct("<~@47 [~@3 x] [~@4 x ~@8 x ~@2] ~@4>").gain(0.4)

stack(
  bass, epiano2, acoustic_guitar_nylon, acoustic_guitar_steel, overdriven_guitar, distortion_guitar, string_ensemble_1,
  whistle, pad_halo, kick, rim, snare, hihat, open_hat, crash, ride, shaker
)

More by Lionel Richie