Strudelify
Three Times A Lady cover art

Encore

Three Times A Lady

Lionel Richie

KeyA♭ majorTempo71 bpm
0:00/0:00
// Three Times A Lady — RICHIE LIONEL
// 71 bpm, 3/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: ch 11 "SYN BASS 2" named as a bass, played on synth bass 1 (its synth brass 2 patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 87 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(71/3)

// 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 · "FINGERBASS"
const bass = note("<~@19 A B C D E F G@6 H@6 I@3 ~ J@5 K@2 L M@8 N@5 O@2 P@4 Q@4 R@6 S@2 T@5 ~@2>".pickRestart({
  A: "~@40 eb2@7 ~", B: "ab2@47 ~", C: "g2@47 ~", D: "gb2@39 ~ gb2@7 ~", E: "f2@39 ~ f2@7 ~", F: "bb2@47 ~",
  G: "[ab2@46 ~ eb2@38 ~ eb2@7 db2@38 ~ db2@7 ~ ab2@46 ~ g2@46 gb2@38 ~ gb2@7 ~ f2@8]/6",
  H: "[~@31 f2@7 ~ bb2@46 ab2@45 ~ eb2@37 ~ eb2@7 db2@37 ~ db2@7 ~ c2@37 ~ c2@7 bb1@21]/6",
  I: "[~@17 ab1@7 ~ ab1@91 ~@28]/3", J: "[~@13 eb2@7 ~ ab1@83 eb2@7 ~ ab1@83 eb2@7 ~ ab1@37]/5",
  K: "[ab1@7 ~ ab1@37 ~ eb2@7 ab1@37 ~ ab1@5]/2", L: "~@3 eb2@37 ~ eb2@7",
  M: "[ab1@37 ~ ab1@7 ~ ab1@37 ~ eb2@7 ab1@37 ~ ab1@7 ~ eb2@37 ~ eb2@7 ab1@37 ~ ab1@7 ~ ab1@37 eb2@7 ~ ab2@37 ~ ab2@7 eb3@37 ~ eb2@7 ~ ab2@20]/8",
  N: "[~@18 ab2@7 ab2@37 ~ eb2@7 ~ ab2@37 ~ ab2@7 eb3@37 ~ eb2@7 ~ ab2@37 ab2@7 ~ ab2@33]/5",
  O: "[~@5 eb2@7 ab2@43 ~@2 ab3@29 c2@4 ~ db2@4 ~]/2",
  P: "[eb2@4 ~ ab1@14 ~ ab1@66 eb2@7 ~ ab1@14 ab1@66 ~ eb2@7 ab1@10]/4", Q: "[~@5 ab1@66 eb2@7 ~ ab1@93 ~@20]/4",
  R: "[~@19 eb2@7 ~ ab1@44 g1@44 ~ gb1@37 ~ gb1@7 f1@37 ~ f1@7 bb1@44 ~ ab1@37]/6",
  S: "[ab1@7 ~ eb2@37 eb2@7 ~ db2@37 db2@6]/2", T: "[~ c2@37 ~ c2@7 bb1@44 ~ ab1@134 ~@15]/5",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · piano · "PIANO1"
const piano = note(`<
  ~ A B C D E F G H I F C D J K L H I M@2 N O P Q R S@6 T@4 U@8 V@5 W X@6 Y@6 Z@4 AA@3 AB AC@4 AD@7 AE@2 AF@5
>`.pickRestart({
  A: "ab4@7 ~ eb4@7 ~ bb4@7 ~ eb4@7 ~ eb5@7 ~ eb4@7 ~, ab2@47 ~",
  B: "~@40 eb4@7 ~, [ab2,ab4]@47 ~, ~ eb4@2 eb4@2 ~, ~@16 bb4@31 ~, ~@32 eb5@15 ~", // Ab
  C: "~@32 c5@8 c5@7 ~, ab2@47 ~, c5@24 bb4@23 ~, ~@8 eb4@39 ~, ~@16 ab4@31 ~",
  D: "~@40 eb5@7 ~, [gb2,c5]@47 ~, ~@8 eb4@16 eb4@23 ~, ~@16 gb4@31 ~, ~@32 db5@15 ~", // Gbdim
  E: "~@40 f2@7 ~, f2@5 ~, ab4@32 ab4@15 ~, ~@8 c4@16 c4@23 ~, ~@16 f4@31 ~",
  F: "~@40 eb4@7 ~, e2@32 bb4@15 ~, bb4@24 ab4@23 ~, ~@8 c4@39 ~, ~@16 e4@31 ~",
  G: "~@40 [ab2,bb4]@7 ~, ab2@5 ~, c5@16 c5@31 ~, ~@8 eb4@16 eb4@23 ~, ~@32 ab4@15 ~", // Absus2
  H: "~@40 bb4@7 ~, [gb2,db5]@47 ~, ~@8 eb4@16 eb4@23 ~, ~@16 c5@31 ~, ~@32 gb4@15 ~", // Gb5
  I: "~@40 f2@7 ~, f2@32 bb4@15 ~, ab4@24 ab4@23 ~, ~@8 c4@39 ~, ~@16 f4@31 ~",
  J: "~@40 [f2,eb4]@7 ~, eb5@47 ~, f2@32 c5@15 ~, ~ eb4@2 eb4@2 ~, ~@16 db5@31 ~", // F7
  K: "~@40 eb4@7 ~, [e2,bb4]@47 ~, ~@16 ab4@31 ~", // Edim
  L: "~@40 eb4@7 ~, ab2@47 ~, c5@16 c5@31 ~, ~ eb4@2 eb4@2 ~, ~@32 ab4@15 ~",
  M: "[~@32 bb4@15 ~@41 [eb2,eb4]@7 ~, e2@95 ~, bb4@24 ab4@23 ~ bb4@47 ~, ~@8 c4@39 ~@49, ~@16 e4@31 ~@49]/2", // Eb
  N: "~@40 c4@7 ~, c5@47 ~, ~ c4@2 c4@2 ~, ~@16 [eb4,ab4]@16 [eb4,ab4]@15 ~", // Ab5
  O: "~@40 bb3@7 ~, c5@47 ~, ~ bb3@2 bb3@2 ~, ~@16 [eb4,g4]@16 [eb4,g4]@15 ~", // Eb
  P: "~@40 db4@7 ~, [gb4,bb4]@16 [gb4,bb4]@16 [gb4,bb4]@15 ~, ~ db4@2 db4@2 ~", // Gb
  Q: "~@40 db4@7 ~, bb4@47 ~, f4@16 [f4,ab4]@16 [f4,ab4]@15 ~, ~ db4@2 db4@2 ~", // Fm
  R: "~@40 db4@7 ~, [f4,ab4]@16 [f4,ab4]@16 [f4,ab4]@15 ~, ~ db4@2 db4@2 ~", // Fm
  S: "[~@39 c4@7 ~@40 bb3@7 ~@39 bb3@7 ~@40 c4@7 ~@40 bb3@7 ~@39 db4@7 ~ [f4,ab4]@8, [eb4,ab4]@16 [eb4,ab4]@15 [eb4,ab4]@15 ~ [eb4,g4]@15 [eb4,g4]@16 [eb4,g4]@15 [eb4,g4]@16 [eb4,g4]@15 [eb4,g4]@15 ~ [eb4,ab4]@16 [eb4,ab4]@15 [eb4,ab4]@15 ~ [eb4,g4]@15 [eb4,g4]@16 [eb4,g4]@15 [gb4,bb4]@16 [gb4,bb4]@16 [gb4,bb4]@15 ~@8, ~@8 c4@15 c4@16 ~@15 bb3@16 bb3@16 ~@15 bb3@16 bb3@15 ~@16 c4@15 c4@16 ~@16 bb3@15 bb3@16 ~@15 db4@16 db4@15 ~@16]/6", // Fm Ab5 Eb Ab5 Eb Gb
  T: "[~@31 db4@7 ~@40 db4@7 ~@38 ab4@7 ~@39 bb3@7 ~@8 bb3@8, db4@15 db4@16 ~@16 db4@15 db4@16 ~@15 ab4@15 ab4@15 ~@8 [eb4,g4,bb4]@15 [eb4,g4,bb4]@15 [eb4,g4,bb4]@15 [eb4,g4,bb4]@15 ~, ~@8 [f4,ab4]@15 [f4,ab4]@15 ~ [f4,ab4]@15 [f4,ab4]@16 [f4,ab4]@15 [c5,eb5]@15 ~ [c5,eb5]@15 [c5,eb5]@15 ~@7 bb3@15 ~ bb3@15 ~@23]/4", // Eb Fm Cm
  U: "[~@22 bb3@7 ~@39 bb3@7 ~@38 bb3@7 ~@31 c4@15 g3@8 ~@15 g3@8 g3@8 g3@7 ~ f3@8 ~@32 f3@7 ~ [f3,ab3,db4]@47 ~@39 eb4@7 ~@23 eb4@7, [eb4,g4,bb4]@15 [eb4,g4,bb4]@15 [eb4,g4,bb4]@15 eb4@30 ~@46 [eb4,ab4]@45 eb4@31 ~@16 db4@32 ~@64 [ab4,c5]@15 [ab4,c5]@15 [ab4,c5]@15 [g4,c5]@15 [g4,c5]@15, ~@7 bb3@15 ~@15 bb3@15 ~ bb3@15 ~@15 bb3@15 bb3@15 ~@8 c4@22 bb3@22 ~ bb3@16 bb3@15 [bb3,eb4]@15 ~@104 eb4@15 ~ eb4@15 ~@15 eb4@15 ~@7, ~@45 [g4,bb4]@15 [g4,bb4]@15 [g4,bb4]@15 [g4,bb4]@15 ~ [g4,bb4]@15 ~@7 eb3@37 ~@56 f3@16 f3@16 ~@131, ~@136 ab3@30 ~@8 g3@15 ~@24 ab3@16 ab3@16 [ab3,db4]@15 ~@124]/8", // Db Eb Ab5 Ab C5 Eb5 Gm Db5
  V: "[~@8 eb4@7 ~@39 db4@7 ~@38 eb4@7 ~@38 eb4@7 ~@39 eb4@7 ~@23 db4@8 ~@7 ab3@5, ~ [g4,c5]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 ~ [ab4,c5]@15 [ab4,c5]@15 [ab4,c5]@15 [g4,c5]@15 [g4,c5]@15 [g4,c5]@15 [f4,bb4]@15 ~ bb4@27, ~@23 db4@15 db4@15 ~@16 eb4@15 eb4@15 ~@15 eb4@15 eb4@15 ~@16 eb4@15 eb4@15 ~@15 db4@15 ~@8 [db4,f4]@12, ~@71 f4@5 ~@4]/5", // C5 Bb5 Ab C5 Bb5 Db
  W: "~@41 ab3@7, ~@3 [ab3,db4]@15 ab3@23 ~@7, ~@10 f3@15 ~ f3@22, ~@6 db4@5 [db4,f4]@5", // Db5 Db
  X: "[~@38 eb4@7 ~@39 eb4@7 ~@38 db4@7 ~@39 eb4@7 ~@38 eb4@7 ~@38 eb4@7 ~@9 db4@7, [ab4,c5]@15 [ab4,c5]@15 ~ [ab4,c5]@15 [g4,c5]@15 [g4,c5]@15 [g4,c5]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 ~ [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 [ab4,c5]@15 [ab4,c5]@15 [ab4,c5]@15 ~ [g4,c5]@15 [g4,c5]@15 [g4,c5]@15 [f4,bb4]@15, ~@8 eb4@15 eb4@15 ~@15 eb4@15 eb4@15 ~@16 db4@15 db4@15 ~@15 eb4@15 eb4@15 ~@16 eb4@15 eb4@15 ~@15 eb4@15 eb4@15 ~@23]/6", // Ab C5 Bb5 Ab C5 Bb5
  Y: "[~@23 db4@7 ~@38 eb4@7 ~@39 eb4@7 ~@38 eb4@7 ~@39 db4@7 ~@38 eb4@7 ~@23 eb4@8, [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 ~ [f4,bb4]@15 [f4,bb4]@15 [ab4,c5]@15 [ab4,c5]@15 [ab4,c5]@15 [g4,c5]@15 [g4,c5]@15 ~ [g4,c5]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@15 ~ [ab4,c5]@15 [ab4,c5]@15, ~@8 db4@15 ~@15 eb4@15 eb4@15 ~@15 eb4@15 ~ eb4@15 ~@15 eb4@15 eb4@15 ~@15 db4@15 db4@15 ~@16 eb4@15 eb4@15 ~@15 eb4@15 ~@8]/6", // Bb5 Ab C5 Bb5 Ab
  Z: "[~@7 eb4@7 ~@39 eb4@7 ~@37 db4@7 ~ [eb4,f4,bb4]@44 [eb4,ab4,c5]@15 [ab4,c5]@15 ~@7 eb4@6, [ab4,c5]@15 [g4,c5]@15 [g4,c5]@15 [g4,c5]@15 [f4,bb4]@15 [f4,bb4]@15 [f4,bb4]@14 ~@60 eb4@22 ~@6, ~@23 eb4@15 eb4@15 ~@15 db4@15 db4@14 ~@82 [ab4,c5]@13]/4", // Ebsus2 Ab C5 Bb5 Ab
  AA: "[~@38 eb4@7 ~ [f4,ab4]@14 ~@22 db4@7 ~@38 db4@7 [eb4,ab4,c5]@10, ~ c5@30 ~@113, ~ g4@15 bb4@29 ~@45 ab4@29 ab4@14 ~@11, ~@9 eb4@14 eb4@15 ~@8 db4@22 db4@14 ~@15 db4@15 db4@15 ~@17, ~@16 g4@15 [g4,c5]@14 ~@15 [f4,ab4]@15 [f4,ab4]@14 ~ f4@15 [f4,bb4]@29 ~@10]/3", // Fm Ab C5 Fm Bb5
  AB: "~@5 eb4@7 ~@15 eb4@7 ~@8 eb4@6, ~@5 [ab4,c5]@15 [ab4,c5]@14 [g4,c5]@14, ~@4 eb4@5 ~@7", // Ab C5
  AC: "[~@23 eb4@7 ~ [db4,f4,ab4]@15 [db4,f4,ab4]@62 [db4,f4,ab4]@15 ~ [db4,f4,ab4]@46 ~@16 [ab4,c5,eb5]@6, ~ bb4@29 ~@162, ~ g4@15 [g4,c5]@14 ~@141 [ab4,c5,eb5]@15 ~@6, ~@8 eb4@15 ~@155 eb4@14]/4", // Db Ab C5 Ab
  AD: "[~@16 eb4@7 ~@38 eb4@7 ~@38 f5@7 ~@8 db5@7 ~@23 db4@7 ~@37 f4@7 ~@38 eb4@7 ~@38 eb4@7 ~@38 eb4@6, ~ eb4@15 ~@7 [g4,bb4]@15 [g4,bb4]@15 [g4,bb4]@14 ~ gb4@22 ~ gb4@22 [f4,ab4]@15 [f4,ab4,db5]@15 [f4,ab4,db5]@14 ~ f4@22 f4@15 ~@15 eb4@15 eb4@15 ~@15 eb4@15 eb4@15 ~@15 eb4@15 eb4@15 ~@6, ~@9 [ab4,c5,eb5]@14 eb5@44 ~ bb4@15 [bb4,gb5]@15 [bb4,gb5]@14 ~@24 db4@15 ~@7 [ab4,db5]@15 [ab4,db5,f5]@15 [ab4,db5,f5]@14 ~ [ab4,c5,eb5]@15 [ab4,c5,eb5]@15 [ab4,c5,eb5]@14 ~ [g4,bb4,eb5]@15 [g4,bb4,eb5]@15 [g4,bb4,eb5]@14 ~ [g4,bb4,eb5]@14 [g4,bb4,eb5]@15 [g4,bb4,eb5]@14, ~@31 eb4@15 eb4@15 ~@15 f5@30 ~@7 eb5@44 ~@8 db4@37 ~@134]/7", // Gm Fm Db Ab Ebm Db5 Db Ab …
  AE: "[~@39 [eb4,g4,c5]@52 ~@5, ~ [g4,bb4,eb5]@15 [bb4,eb5]@29 ~@51, ~@3 eb4@5 eb4@5 ~@19, ~@8 g4@11 ~@29, ~@31 db5@14 ~@51]/2", // Cm Eb Eb5
  AF: "[~@32 eb4@7 ~@38 bb5@7 ~@31 c7@96 ~@29, ~@10 ab3@29 ~@16 c5@15 ab5@14 ~ c6@96 ~@59, ~@17 bb3@22 ~@8 bb4@37 ~@16 ab6@96 ~@44, ~@25 c4@14 ~ ab4@44 ~@23 bb6@96 ~@37, ~@31 eb5@11 ~@4 eb6@48 ~@26]/5",
})).s("gm_piano").gain(0.4)

// chords · acoustic guitar nylon · "NYLONGTR"
const acoustic_guitar_nylon = note(`<
  ~@20 A B C D E F@5 G@3 H I J@4 ~ K@2 ~@29 L M ~ N O@3 P Q R@2 S@3 ~@2
>`.pickRestart({
  A: "~@8 c4@7 ~@9 c4@7 ~@9 c4@7 ~, ab4@15 ~ eb4@15 ~ ab4@15 ~",
  B: "~@8 bb3@7 ~@9 bb3@7 ~@9 bb3@7 ~, g4@15 ~ eb4@15 ~ g4@15 ~",
  C: "~@8 ab3@7 ~@9 ab3@7 ~@9 ab3@7 ~, gb4@15 ~ eb4@15 ~ gb4@15 ~",
  D: "~@8 ab3@7 ~@9 ab3@7 ~@9 ab3@7 ~, f4@15 ~ db4@15 ~ f4@15 ~",
  E: "~@8 bb3@7 ~@9 bb3@7 ~@9 bb3@7 ~, f4@15 ~ db4@15 ~ f4@15 ~",
  F: "[~@8 ab3@7 ~@8 ab3@7 ~@9 ab3@7 ~@8 bb3@7 ~@9 bb3@7 ~@9 bb3@7 ~@8 bb3@7 ~@9 bb3@7 ~@8 bb3@7 ~@9 c4@7 ~@8 c4@7 ~@9 c4@7 ~@9 bb3@7 ~@8 bb3@7 ~@9 bb3@7 ~@7, ab4@15 ~ eb4@15 ab4@15 ~ g4@15 eb4@15 ~ g4@15 g4@15 ~ db4@15 g4@15 ~ ab4@15 ~ eb4@15 ab4@15 ~ g4@15 eb4@15 ~ g4@15 ~@7]/5",
  G: "[~ bb3@7 ~ gb4@15 ~ gb4@9 ~@6 f4@23 ~@8 [db4,f4]@15 ~ [db4,f4]@15 [db4,f4]@15 ~ [db4,f4]@15 [c4,eb4]@7 ~@4]/3", // Db Cm
  H: "~@5 ab4@30 eb4@13", I: "~@2 g4@14 ~ bb4@14 ~ eb4@14 ~@2",
  J: "[g4@14 ~ bb4@14 ~ eb4@14 ~ g4@14 ~ bb4@14 ~ eb4@14 ~ g4@14 ~@2 bb4@7 ~@8 [c4,eb4,ab4]@45 ~@26]/4", // Ab
  K: "[~@21 f5@47 ~@28]/2", L: "~@28 f5@14 eb5 f5@5", M: "~@3 eb5@7 ~ c5@7 ~ bb4@7 ~@22",
  N: "~@20 gb4@7 ~ bb3@7 eb4@7 ~ bb3@5",
  O: "[~@2 gb4@7 ~ bb3@7 f4@7 ~ ab3@7 db4@7 ~ ab3@7 f4@7 ~ ab3@7 f4@7 bb3@7 ~ db4@7 bb3@7 ~ f4@7 bb3@7 ~ eb4@7 ab3@7 ~ c4@7 ab3@7 ~ eb4@7]/3",
  P: "c4@7 ~ eb4@14 ~ g4@14 ~ bb4@10", Q: "~@5 eb4@14 g4@14 ~ bb4@14",
  R: "[~ eb4@14 ~ g4@14 ~ bb4@7 ~@8 [g4,bb4,eb5]@14 ~ [eb4,g4,bb4]@14 ~ [g3,bb3,eb4]@14 ~@6]/2", // Eb
  S: "[~@40 ab4@89 ~@15, ~@17 ab3@111 ~@16, ~@25 c4@104 ~@15, ~@2 eb4@6 ~]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.25)

// other · overdriven guitar · "ODGTR"
const overdriven_guitar = note("<~@56 A@5 B@3 ~@23>".pickRestart({
  A: "[~@28 eb5@45 bb4@45 ~ db5@45 f4@45 ~ eb5@30]/5",
  B: "[eb5@7 eb5@7 ~ eb5@7 ~ db5@7 db5@7 ~ c5@7 c5@7 ~ bb4@7 [db4,f4,bb4]@43 ~@41]/3", // Bbm
})).s("gm_overdriven_guitar").gain(0.35)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@2 A@2 ~@7 B@2 C D E ~ F@2 G ~@13 H@5 I@7 J@2 K@2 L@5 M@8 N@2 O@8 ~@8 P@6 ~
>`.pickRestart({
  A: "[~@40 eb4@7 ~ eb4@47 ~, eb6@95 ~]/2", B: "eb4@31 ~ db4@7 ~ eb4@7 ~", C: "ab4@15 ~ f4@15 ~ ab4@15 ~",
  D: "bb4@7 ~ e4@7 ~ db4@7 ~ c4@7 ~ bb3@7 ~ ab3@7 ~", E: "eb3@47 ~", F: "[ab4@95 ~]/2", G: "ab5@47 ~",
  H: "[~@35 bb5@90 ~ c6@44 ~ eb6@44 ~@2 ab5@22 bb5]/5",
  I: "[~@7 ab5@14 ~ eb4@30 ~ eb4@14 ~@2 db4@31 ~ db4@15 ~ db4@31 ~@17 ab4@44 ~ g4@44 ~@2 [db4,f4]@80, ~@22 g5@46 ~ f5@95 ~ eb4@90 ~@81]/7", // Db
  J: "[~@11 ab4@44 ~ g4@40, ~@11 eb4@85]/2", K: "[~@5 f4@44 ~@2 ab4@45, ~@5 db4@90 ~]/2",
  L: "[c6@44 ~@2 c6@14 ~ db6@14 ~ eb6@14 ~ bb5@37 ~ c6@6 ~@2 bb5@14 ~ eb5@29 ~ [ab4,c6]@44 ~@2 [g4,c6]@12, eb4@90 ~ [db4,f4]@90 ~ eb4@58, ~@23 g4@22 ~@75]/5", // Ab C5 Db
  M: "[~@3 db6@14 ~ eb6@6 ~ bb5@6 ~@2 bb5@44 ~ eb6@25 ~@2 db6@3 ~ c6@3 bb5@3 ~ ab5@3 ~ f5@3 ~ bb5@6 ~ bb5@6 ~@32 g4@44 ~@2 [db4,f4]@90 ~ ab4@44 ~ g4@33, ~@33 db4@82 ~@9 eb4@90 ~@92 eb4@78, ~@33 f4@52 ~@54 ab5@67 ~@178, ~@13 ab4@15 ~@36]/8", // Db
  N: "[~@57 db6@14 c6@14 ~ db6@10, ~@4 [db4,f4]@17 ~@11]/2", // Db
  O: "[~@5 ab4@43 ~ g4@43 ~@2 [db4,f4]@87 ~ ab4@43 ~ g4@43 ~@2 [db4,f4,f6]@92 ~@21, ~@5 eb6@264 ~@115, ~@5 eb4@87 ~@90 eb4@87 ~@115]/8", // Db
  P: "[~ eb4@4 f4@4 eb4@4 ~@3 eb4@4 f4@4 eb4@4 ~@3 eb4@4 f4@4 ~@3 f4@4 [eb4,eb6]@44 ~ [eb5,ab5,c6]@163 ~@34, ~@13 f4@5 ~@10 f4@5 ~@6 eb4@5 ~@244, ~@31 bb5@14 ~@243]/6", // Eb Ab
})).s("gm_string_ensemble_1").gain(0.3)

// other · pizzicato strings · "PIZSTRINGS" · Ab Cm
const pizzicato_strings = note(`<
  ~@11
  [[ab4,c5]@4 ~@4 eb4@4 ~@4 [ab4,c5]@3 ~@5 eb4@4 ~@4 [ab4,c5]@4 ~@4 eb4@4 ~@4]
  [[c5,eb5]@3 ~@5 gb4@4 ~@4 [c5,eb5]@4 ~@4 gb4@4 ~@4 [c5,eb5]@3 ~@5 gb4@4 ~@4]
  [eb5@4 ~@4 eb4@4 ~@4 db5@3 ~@5 eb4@4 ~@4 c5@4 ~@4 eb4@4 ~@4]
  [~@16 db5@4 ~@4 c5@4 ~@4 bb4@3 ~@5 ab4@4 ~@4]
  ~@72
>`).s("gm_pizzicato_strings").gain(0.35)

// other · vibraphone
const vibraphone = note(`<
  ~@8
  [~@10 bb5 ~]
  [ab5 ~@11]
  ~@5
  [eb4@4 ~@12 c5@3 ~@29]
  [db5@3 ~@13 c5@4 ~@20 bb4@4 ~@4]
  [ab4 ~@11]
  ~@69
>`).s("gm_vibraphone").gain(0.35)

// other · flute
const flute = note("<~@2 A@2 ~@13 B C D ~@28 E F ~@37>".pickRestart({
  A: "[bb5@43 ~@5 eb6@47 ~, ~@45 bb5@2 db6@2 ~@47, ~@23 c6 ~@24]/2", B: "~@24 ab5@7 ~ bb5@15 ~",
  C: "bb5@23 ~ ab5@7 ~ bb5@15 ~", D: "bb5@47 ~", E: "~@45 [eb5,f5] g5 bb5", F: "eb6@15 ~",
})).s("gm_flute").gain(0.3)

// bass · synth bass 1 · "SYN BASS 2"
const bass_2 = note("<~@33 A@6 ~@2 B@2 C@4 D E F@5 G@3 ~@2 H I@2 ~@16 J@2 K@6 ~>".pickRestart({
  A: "[~@35 eb3@37 ~ eb3@7 db3@37 ~ db3@7 ~ c3@37 ~ c3@7 ~@15 eb5@30 ~ ab2@45 ~@26, ~@19 bb2@5 ~@8]/6",
  B: "[~@21 ab3@45 ab3@14 ~ ab3@7 ~@8]/2", C: "[~@16 ab3@45 eb3@45 ~ ab3@45 ab3@14 ~ ab3@7 ~@18]/4", D: "~@5 ab3@43",
  E: "~ eb3@15", F: "[ab3@45 ~ ab3@14 ~ ab3@7 ~@23 ab3@45 ~ eb3@45 ab3@45 ~ ab3@12]/5",
  G: "[~@3 ab3@7 ~@23 ab3@45 eb3@37 ~@24 eb5@2 ~@3, ~@139 ab4 ~@4]/3", H: "~@35 f4@13",
  I: "[~@2 db4@14 ~@2 eb4@45 ~@33]/2", J: "[~@8 eb3@37 eb3@7 ~ db3@37 db3@6]/2",
  K: "[~ c3@37 ~ c3@7 bb2@44 ~ ab2@160 ~@37]/6",
})).s("gm_synth_bass_1").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@20 A@2 B@2 A C D E F G H I J K L M N O ~@3 P ~ Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN Z AO AP
  ~@2 AQ AR AS AT AU AV AW AX AY ~@6
>`.pickRestart({
  A: "x", B: "x ~@4 x", C: "x ~@46 x", D: "~@38 x ~@6 x ~@2", E: "~@9 x ~ x", F: "~@43 x ~@4", G: "~@41 x ~@6",
  H: "~@4 x!2", I: "~@31 x ~@7 x ~@8", J: "~@37 x ~@10", K: "~@35 x ~@12", L: "~@25 x ~@6 x ~@15",
  M: "~@11 x ~@3 x ~@8", N: "~@20 x ~@6 x ~@20", O: "~@17 x ~@7 x ~@22", P: "~@13 x ~@7 x ~@26", Q: "~ x!2 ~@3",
  R: "~@6 x ~@6 x ~@34", S: "~@3 x ~@7 x ~@36", T: "x ~@3 x ~@18 x", U: "~@5 x ~@37 x ~@4", V: "~@3 x ~@37 x ~@6",
  W: "x ~@18 x ~@3 x", X: "~@36 x ~@6 x ~@4", Y: "~@33 x ~@7 x ~@6", Z: "~@31 x ~@6 x ~@9", AA: "~@7 x ~ x ~@2",
  AB: "~@25 x ~@7 x ~@14", AC: "~@23 x ~@6 x ~@17", AD: "~@5 x ~ x ~@4", AE: "~@18 x ~@6 x ~@22",
  AF: "~@15 x ~@7 x ~@24", AG: "~@13 x ~@6 x ~@27", AH: "~@5 x ~@3 x ~@14", AI: "~@7 x ~@7 x ~@32",
  AJ: "~@5 x ~@6 x ~@35", AK: "~@3 x ~@12", AL: "~@5 x ~@14 x ~@27", AM: "~@19 x ~@3 x", AN: "~ x ~@2",
  AO: "~@5 x ~@42", AP: "~@23 x ~@7 x ~@16", AQ: "~@19 x ~@7 x ~@20", AR: "~@23 x ~@24", AS: "~@5 x ~@6",
  AT: "~@10 x ~@6 x ~@30", AU: "~@7 x ~@6 x ~@33", AV: "~@11 x ~@36", AW: "x ~@7 x ~@36 x ~@2", AX: "~@5 x ~@36 x ~@5",
  AY: "~ x ~@46",
})).gain(0.22)

// drums · rim
const rim = s("rim").struct(`<
  ~@20 A ~ A ~ A ~ B ~ C ~ D ~ E F ~@7 G ~ H ~ I ~ J ~ K ~ L ~ M ~ N O P Q R S T U ~@9 V ~ R ~ W ~ X ~ A ~@6
>`.pickRestart({
  A: "~ x ~", B: "~@7 x ~@16", C: "~ x ~@2", D: "~@3 x ~@12", E: "~ x ~@6", F: "~@5 x ~@6", G: "~@3 x",
  H: "~@31 x ~@16", I: "~@13 x ~@10", J: "~@7 x ~@8", K: "~@5 x ~@10", L: "~@5 x ~@18", M: "~@5 x ~@42", N: "x",
  O: "~@43 x ~@4", P: "~@5 x", Q: "~@19 x ~@4", R: "~@35 x ~@12", S: "~@11 x ~@4", T: "~@5 x ~@2", U: "~@9 x ~@6",
  V: "~@7 x", W: "~@29 x ~@18", X: "~@23 x ~@24",
})).gain(0.22)

// drums · snare
const snare = s("sd").struct(`<
  ~@63
  [~@9 x ~@13 x ~@24]
  [~@5 x ~@14 x ~@27]
  [~ x ~@44 x ~]
  [~@2 x ~@4 x]
  [~@19 x ~@4]
  [~@5 x ~@28 x ~@13]
  ~@18
>`).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<~@2 [~@2 x!34 ~ x!5 ~ x!3 ~ x] x ~@60 x ~@22>").gain(0.11)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~@19 B A@4 C D E F G H I J K L M N O P Q R S T U V W X Y T Z V AA X AB T AC AD AE X K AF AG AH AI AJ AK AL AM AN AO
  AP AQ AR AS K AT AU W X AV AW ~@6
>`.pickRestart({
  A: "x!3", B: "~ x!2", C: "x ~@15 x ~@14 x ~@15 x", D: "~@14 x ~@15 x ~@14 x ~@2", E: "~@13 x ~@14 x ~@15 x ~@3",
  F: "~@12 x ~@14 x ~@15 x ~@4", G: "~@10 x ~@15 x ~@14 x ~@6", H: "~@9 x ~@15 x ~@14 x ~@7",
  I: "~@8 x ~@14 x ~@15 x ~@8", J: "~@6 x ~@15 x ~@14 x ~@10", K: "~@5 x ~@14 x ~@14 x ~@12",
  L: "~@2 x ~@14 x ~@14 x ~@15", M: "x ~@4 x ~@9 x", N: "~@2 x ~@4 x", O: "~@5 x ~@14 x ~@3",
  P: "~@7 x ~@14 x ~@15 x ~@9", Q: "~@5 x ~@31 x ~@10", R: "~@5 x ~@42", S: "~@3 x", T: "~ x ~@4 x ~@4 x ~@4",
// … 46 more lines

More by Lionel Richie