Strudelify
Hello cover art

Tuskegee

Hello

Lionel Richie

KeyA minorTempo69 bpm
0:00/0:00
// Hello — Lionel Richie
// 69 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 65 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(69/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(`<
  ~@11 A B C D E F G H I@2 J K L M A N O P Q R S T U V W F X Y Z@2 AA K L AB AC AD AC AE AF AG AH AI AJ V W AK X AL AM@3
  AN AO ~
>`.pickRestart({
  A: "a2@16 g2@15 ~", B: "f2@11 ~ g2@2 ~@2 a2@7 ~ a1@4 b1@2 c#2@2", C: "d2@8 g1@6 a1 b1", D: "c2@16 f1@15 ~",
  E: "a#1@7 ~ e1@4 e2@2 e1@2", F: "a1@8 b1@8 c2@8 b1@7 ~", G: "d2@5 ~ d2 ~ g1@6 a1 b1",
  H: "c2@10 ~@2 c2 ~@3 f1@10 ~@2 f1@3 ~", I: "[a#1@14 ~@2 e2@7 ~ e1@28 ~@8 f#1@2 g#1 ~]/2", J: "a1@31 ~", K: "~@7 e2",
  L: "a2@9 ~@7", M: "~@3 e2", N: "f2@16 g2@8 f2@6 e2 ~", O: "a2 g2", P: "f2@15 ~ g2@8 f2@6 e2 ~",
  Q: "a2@14 a2@2 g2@13 ~ g2@2", R: "f2@12 ~@2 f2@2 g2@7 ~ f2@6 e2@2", S: "a2@12 a2@2 ~@2 g2@11 ~ g2 ~@3",
  T: "f2@11 ~ g2@2 ~@2 a2@7 ~ a1@3 ~ b1@2 c#2@2", U: "d2@8 d3@6 g1@2 g1 ~@3 g1@8 a1 ~ b1@2",
  V: "c2@8 c3@6 f1@2 f1 ~@3 f1@8 ~@2 f1 ~", W: "a#1@10 ~@2 a#1@4 e1@7 ~ e2@4 e1@4", X: "d2@4 d3@3 g1!2 ~ g1@4 a1 b1",
  Y: "c2@8 c3@6 c2 ~ f2@2 c2@2 f1@8 f1@2 ~@2", Z: "[a#1@4 a#2@4 e2@4 e1@17 ~ f#1 g#1]/2", AA: "a1@23 ~@9",
  AB: "~@24 e2@7 ~", AC: "a1 g1", AD: "f1@16 g1@8 f1@6 ~ e1", AE: "f1@16 g1@8 f1@6 ~ e2",
  AF: "a1@14 ~ a1 g1@2 ~ g2 ~@11 g1", AG: "f1@2 ~ f1@10 ~@2 f1 g1@3 ~ g2@4 f1@6 ~ e1",
  AH: "a1@9 ~@2 a2 ~@4 g1@12 ~@3 g1", AI: "f1@11 ~ g1@2 ~@2 g1@2 a1@6 a1@3 ~ b1@2 c#2@2",
  AJ: "d2@8 d3@6 g1 ~ g1 ~@3 g1@8 a1@2 b1@2", AK: "a1 b1 c2 b1", AL: "c2@8 c3@5 ~ c2 ~ f2@2 c2@2 f1@8 f1@2 ~@2",
  AM: "[a#1@8 a#2@6 ~@2 e2@2 ~@2 e1@38 ~@2 f#1@2 g#1@12 ~@4 a1@2 g1@11 g1@2 ~@3]/3", AN: "f1@6 f1 ~ g1@4 f1@4",
  AO: "a1",
})).s("gm_fretless_bass").gain(0.29)

// chords · piano
const piano = note(`<
  ~ A B C D E F G F G H I J K L M N K O P Q R S T U E F G F G V W J K L X Y Z O AA AB AC B T U E F G F G H I J K L AD Y
  Z O AA Q AE AF AG ~
>`.pickRestart({
  A: "[a3,c4,e4]@7 ~ [c4,e4]@8 [g3,b3,d4,e4]@8 ~@8", B: "[f3,a3,c4,e4] [f3,c4,e4] [g3,b3,d4,e4] [a3,c4,e4]",
  C: "[a3,c4,e4]@7 ~ [a3,c4,e4]@7 ~ [g3,b3,d4,e4]@7 ~ [g3,b3,d4,e4]@7 ~", // Am Em7
  D: "[f3,a3,c4,e4]@7 ~ [f3,a3,c4,e4]@8 [g3,b3,d4,e4]@7 ~ [f3,a3,c4,e4]@7 ~", // Fmaj7 Em7 Fmaj7
  E: "[a3,c4,e4]@8 [a3,c4,e4]@8 [g3,b3,d4,e4]@7 ~ [g3,b3,d4,e4]@8", F: "[f3,a3,c4,e4]!2 [g3,b3,d4,e4] [f3,a3,c4,e4]",
  G: "[a3,c4,e4]!2 [g3,b3,d4,e4]!2", H: "[f3,a3,c4,e4]@7 ~ [f3,a3,c4,e4]@8 [g3,b3,d4,e4]@8 [f3,a3,c4,e4]@8",
  I: "[a3,c4,e4]@8 [a3,c4,e4]@7 ~ [g3,b3,d4,e4]@8 [g3,b3,d4,e4]@8", J: "[f3,a3,c4,e4]!2 [a3,c#4,e4] [a3,c#4,e4,g4]",
  K: "[a3,d4,f4]!2 [b3,d4,g4]!2", L: "[g3,c4,e4]@8 [g3,c4,e4]@8 [a3,c4,f4]@8 [a3,c4,f4]@7 ~",
  M: "[f3,a#3,d4]@8 [f3,a#3,d4]@7 ~ [a3,c4,e4]@7 ~ [g#3,b3,e4]@4 [f#3,a3]@2 [g#3,b3] ~, ~@28 e4 ~@3", // A# Am E F#m G#m
  N: "[a3,c4]@3 [e3,b3]", O: "[g3,c4,e4]@8 [g3,c4,e4]@8 [a3,c4,f4]@7 ~ [a3,c4,f4]@8",
  P: "[a#3,d4,f4]@7 ~ [d4,f4,a#4]@6 ~@2 [e4,a4,c5]@7 ~ [e4,g#4,b4]@8", // A# Am E
  Q: "~@8 [e4,g#4,b4]@8 ~@12 f#4@2 [b3,g#4] ~, ~@28 a3 ~@3", R: "[c4,e4,a4]@7 ~ [c4,e4]@8 [g3,b3,d4,e4]@8 ~@8",
  S: "[f3,a3,c4,e4] [f3,c4,e4] [g3,b3,d4,e4] [f3,a3,c4,e4]", // Fmaj7 Em7 Fmaj7
  T: "[a3,c4,e4]@7 ~ [a3,c4,e4]@7 ~ [g3,b3,d4,e4]@8 [g3,b3,d4,e4]@7 ~", // Am Em7
  U: "[f3,a3,c4,e4]@8 [f3,a3,c4,e4]@8 [g3,b3,d4,e4]@8 [f3,a3,c4,e4]@7 ~", // Fmaj7 Em7 Fmaj7
  V: "[f3,a3,c4,e4]@7 ~ [f3,a3,c4,e4]@8 e4@8 [f3,a3,c4,e4]@8", W: "[a3,c4,e4]@8 [c4,e4]@7 ~ [g3,b3,d4,e4]@8 ~@8",
  X: "[f3,a#3,d4]@8 [f3,a#3,d4]@8 [a3,c4,e4]@6 ~@2 [g#3,b3,e4]@4 [f#3,a3]@2 [g#3,b3] ~, ~@28 e4 ~@3", // A# Am E F#m G#m
  Y: "[e3,a3,c4] [e3,b3,d4] [e3,c4,e4] [e3,a3,b3,d4]", Z: "[a3,d4,f4]!2 [b3,d4,g4] [d4,g4]",
  AA: "[a#3,d4,f4]@7 ~ [d4,f4,a#4]@8 [e4,a4,c5]@8 [e4,g#4,b4]@8", // A# Am E
  AB: "~@24 [e4,g#4,b4]@4 f#4@2 [b3,g#4] ~, ~@28 a3 ~@3", AC: "[c4,a4] [c4,e4] [g3,b3,d4,e4] ~",
  AD: "[f3,a#3,d4]@8 [f3,a#3,d4]@8 [a3,c4,e4]@8 [g#3,b3,e4]@4 [f#3,a3]@2 [g#3,b3] ~, ~@28 e4 ~@3", // A# Am E F#m G#m
  AE: "[c4,a4]@7 ~ [b4,c5,e5]@8 [a4,c5,e5]@8 [a4,c5,e5]@8", AF: "[a4,c5,e5]@8 [a4,c5,e5]@8 [d5,g5,c6]@7 ~ [f5,a5,c6]@8",
  AG: "~@2 a3@2 b3@2 c#4@2 e4@2 a4@2 ~@2 c#5@2 e5@3 ~ a5@7 ~@5, [b5,c#6,e6], ~@12 b4@4 ~@3 c#5@9 ~@4, ~@19 e5@3 ~@10", // C#m7
})).s("gm_piano").gain(0.25).pan(0.4)

// chords · piano · soft notes
const piano_soft = note("<~ A B ~@17 C A D ~@7 E A ~@5 F ~@2 G A B ~@14 F ~@2 C ~@4>".pickRestart({
  A: "~@8 a3@7 ~@9 [g3,b3,d4,e4]@8", B: "~@8 a3@8 ~@8 f3@7 ~", C: "[e4,g#4,b4]@2 ~@2 [e4,g#4,b4]@2 [e4,g#4,b4] ~",
  D: "~ a3 ~@2", E: "~@2 [g3,b3,d4] ~", F: "~@3 b3", G: "[e4,g#4,b4]!3 ~",
})).s("gm_piano").gain(0.15).pan(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A ~@5 B@3 C D E F G H I@2 J@2 ~ A ~@8 K L M N O P Q@2 R@2 ~ A ~@8 K L S N O T U@2 V W X ~
>`.pickRestart({
  A: "[e4,a4,c5]", B: "[~@4 [a4,c5,e5]@35 ~ [c#5,e5]@6 [b4,d5] [c#5,e5], ~@10 a4 ~]/3", C: "[a4,d5,f5] [b4,d5,g5]",
  D: "[c5,e5,g5] [c5,f5], ~@2 a4 ~", E: "[a#4,d5,f5]@2 [a4,c5,e5] [g#4,b4,e5]", F: "~ [b4,d5] [c5,e5] [b4,d5], e4",
  G: "[d5,f5]@12 [c5,e5]@4 [b4,d5]@12 [a4,c5] ~ [b4,d5] ~, a4 g4", H: "[c5,e5]@3 [b4,d5] [f4,a4,c5]@4, g4 ~",
  I: "[[f4,a#4,d5]@8 [e4,a4,c5]@4 b4@18 f#4 g#4]/2", J: "a4/2", K: "[a4,d5,f5]@16 [b4,d5,g5]@12 g4 a4 b4 d5",
  L: "[g4,c5,e5]@8 [a4,c5]@2 c5 a#4 a4 [g4,e5] [f4,d5] [e4,c5], ~ f5", M: "[d4,f4,a#4]@2 [a4,c5,e5] [g#4,b4,e5]",
  N: "[a4,c5]@8 [b4,d5]@8 [c5,e5]@8 e4 f#4 g#4 a4 b4 c#5 d5 e5, e4@24 [b4,d5]@3 ~@5", // Am Bm C Bm
  O: "[d5,f5]@12 [c5,e5]@4 d5@4 d6@2 c6@2 b5@2 a5@2 g5 ~ c6 d6, a4@16 [g4,b4]@13 b5@2 ~", // Dm C G
  P: "[g5,c6,e6]@12 [b5,d6]@4 ~@8 f4 a4 c5 f5 g5 a5 b5 c6, ~@16 [a5,c6]@15 ~, ~@16 f5@11 ~@5", // C Bm Am
  Q: "[[a#5,d6]@8 [e5,a5,c6]@4 [e5,g#5,b5]@17 ~ [f#5,a5] [g#5,b5], f5@3 ~@29]/2", R: "[[e5,a5], c6 ~@3]/2",
  S: "[d4,f4,a#4]@2 [e4,a4,c5] [e4,g#4,b4]", // A# Am E
  T: "[g5,c6,e6]@12 [b5,d6]@4 f5@8 f4 a4 c5 f5 g5 a5 b5 c6, ~@8 c6@7 ~, ~@16 a5@11 ~@5", // C Bm
  U: "[[a#5,d6]@16 [e5,a5,c6]@8 [e5,g#5,b5]@32 ~@4 [f#5,a5] ~ [g#5,b5] ~, f5@3 ~@29]/2", // A# Am E F#m G#m
  V: "[e5,a5,c6] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3", // Am
  W: "[c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [d5,g5,c6]@8 [c5,a5,c6]@8", X: "[c#5,e5,e6]",
})).s("gm_string_ensemble_1").gain(0.22).pan(0.3)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@16 A ~@2 B@2 C@2 D ~@6 E@3 ~@8 F@2 D ~@6 E@3 ~@10 G ~>".pickRestart({
  A: "[a4,c5] ~@3", B: "[~@6 [e4,g#4]@9 ~]/2", C: "[e4,c5]/2", D: "[e4,a4,c5]",
  E: "[~@4 [a4,c5,e5]@36 [c#5,e5]@6 [b4,d5] [c#5,e5], ~@5 a4]/3", F: "[~@8 c5@23 ~]/2", G: "b4",
})).s("gm_string_ensemble_1").gain(0.15).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@3 A@2 ~@6 B C D E@2 F G H@3 I ~@3 J@5 K B C D L@2 F M N O P I ~@3 J@5 K ~@10 Q R S ~
>`.pickRestart({
  A: "[[e4,a4,c5]@39 ~@25]/2", // Am
  B: "~@12 a4@3 ~@13 e4@3 ~, [c5,e5]@7 ~ [c5,e5]@7 ~ [b4,e5]@7 ~ [b4,e5]@7 ~, ~@4 a4@7 ~@9 e4@7 ~@5", // C E5
  C: "~@12 f4@3 ~ [c#5,e5]@4 ~@10 e4@2, [c5,e5]@7 ~ [c5,e5]@7 ~@5 a4@7 ~ a4@4, ~@4 f4@7 ~@11 e5@4 e5@5 ~, ~@24 a5@7 ~", // C#m C
  D: "~@8 [d5,f5]@3 ~ [c5,e5]@3 ~@5 g4@4 [b4,d5]@4 [a4,c5] ~ [b4,d5] ~, [d5,f5]@7 ~@25, ~@4 a4@8 ~@4 [b4,d5]@7 ~@9", // Dm C Bm Am Bm Dm Bm
  E: "[~@8 [c5,e5]@3 ~ [b4,d5]@3 ~@25 [a#4,d5]@4 f4@2 ~@2 [a4,c5]@7 ~ [e3,g#4,b4]@3 ~ [f#4,a4] ~ [g#4,b4]@2, [c5,e5]@7 ~@13 f4@7 ~ f4@7 ~ f4@7 ~@21, ~@4 g4@7 ~@5 [a4,c5]@7 ~ [a4,c5]@7 ~ [a#4,d5]@7 ~@25]/2", // C Bm A# Am E F#m G#m C …
  F: "~@28 e4@3 ~, [a4,c5]@7 ~ [b4,d5]@7 ~ [c5,e5]@7 ~ [b4,d5]@7 ~, ~@4 e4@7 ~ e4@8 e4@7 ~@5", // Am Bm C Bm
  G: "~@8 [d5,f5]@4 [c5,e5]@3 ~@9 [b4,d5]@4 [a4,c5] ~ [b4,d5] ~, [d5,f5]@7 ~@13 g4@7 ~@5, ~@4 a4@7 ~@5 [b4,d5]@7 ~@9", // Dm C Bm Am Bm Dm Bm
  H: "[~@8 [c5,e5]@3 ~ [b4,d5]@3 ~@29 f4@3 ~ [a4,c5]@5 ~@3 [g#4,b4]@36 [f#4,a4] ~ [g#4,b4] ~, [c5,e5]@7 ~@13 f4@7 ~ f4@7 ~ f4@7 ~@53, ~@4 g4@7 ~@5 [a4,c5]@7 ~ [a4,c5]@7 ~ [a#4,d5]@7 ~ [a#4,d5]@7 ~@49]/3", // C Bm Am G#m F#m G#m C Am …
  I: "[e4,a4,c5]@31 ~", // Am
  J: "[~@52 g4@3 ~ f4@3 ~@57 g4@3 ~ f4@3 ~@33 g4@3 ~, [b4,c5,e5]@7 ~ [b4,c5,e5]@7 ~ [b4,d5,e5]@7 ~ [b4,d5,e5]@7 ~ [a4,c5,e5]@7 ~ [a4,c5,e5]@7 ~ [b4,d5,e5]@7 ~ [a4,c5]@7 ~ [b4,c5,e5]@7 ~ [b4,c5,e5]@7 ~ [b4,d5,e5]@7 ~ [b4,d5,e5]@7 ~ [a4,c5,e5]@7 ~ [a4,c5,e5]@7 ~ [b4,d5,e5]@7 ~ [a4,c5]@7 ~ [b4,c5,e5]@7 ~ [b4,c5,e5]@7 ~ [b4,d5,e5]@7 ~ [b4,d5,e5]@7 ~, ~@4 a4@7 ~ a4@7 ~ g4@7 ~ g4@7 ~ f4@7 ~ f4@7 ~@9 g4@7 ~ a4@7 ~ a4@7 ~ g4@7 ~ g4@7 ~ f4@7 ~ f4@7 ~@9 g4@7 ~ a4@7 ~ a4@7 ~ g4@7 ~@5]/5", // Cmaj7 E7 Am E7 Am Cmaj7 E7 Am …
  K: "~@20 g4@3 ~ f4@3 ~ g4@3 ~, [a4,c5,e5]@7 ~ [a4,c5,e5]@7 ~ [b4,d5,e5]@7 ~ [a4,c5]@7 ~, ~@4 f4@7 ~ f4@7 ~@13", // Am E7 Am
  L: "[~@8 [c5,e5]@3 ~ [b4,d5]@3 ~@29 f4@3 ~ [a4,c5]@4 ~@4 [e4,g#4,b4]@3 ~ [f#4,a4] ~ [g#4,b4]@2, [c5,e5]@7 ~@13 f4@7 ~ f4@7 ~ f4@7 ~@21, ~@4 g4@7 ~@5 [a4,c5]@7 ~ [a4,c5]@7 ~ [a#4,d5]@7 ~ [a#4,d5]@7 ~@17]/2", // C Bm Am E F#m G#m C Am …
  M: "~@4 a4@3 ~ [d5,f5]@4 [c5,e5]@3 ~@5 g4@3 ~ [b4,d5]@4 [a4,c5] ~ [b4,d5] ~, [d5,f5]@7 ~@9 [b4,d5]@7 ~@9", // Dm C Bm Am Bm Dm Bm
  N: "~@4 g4@3 ~ [c5,e5]@3 ~ [b4,d5]@3 ~@13 f4@3 ~, [c5,e5]@7 ~@9 [a4,c5]@7 ~ [a4,c5]@7 ~, ~@20 f4@7 ~@5", // C Bm C Am
  O: "~@4 f4@3 ~@5 f4@3 ~ [a4,c5]@7 ~ [g#4,b4]@7 ~, [a#4,d5]@7 ~ [a#4,d5]@7 ~@17", P: "~@28 [f#4,a4] ~ [g#4,b4] ~",
  Q: "[e4,b4]@5 ~@3 [e4,b4]@7 ~ [e4,c5]@7 ~ [e4,c5]@7 ~", R: "[f4,c5]@7 ~ [f4,a4]@7 ~ [f4,c5]@7 ~ [f4,c5]@7 ~",
  S: "[e4,c#5]@7 ~@25", // C#m
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.7)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@44 A B C@2 D E@3 F G ~@11>".pickRestart({
  A: "~@15 e3", B: "a3@2 b3@2 c4@2 d4@2 e4@4 d4@4 c4@3 ~ b3@6 ~@2 b3@3 ~",
  C: "[a3@3 ~ e4@2 d4@9 ~@9 e4@2 a4 ~ e4@2 b4@6 c5@2 a4@5 ~ b4@2 g4@4 a4@2 e4@5 ~ [e4,g4]@2 ~ e4 g4 d4]/2", // Em
  D: "[e4,g4]@3 ~ [c4,e4]@2 ~ [c4,e4]@9 e4@2 g4@2 d4@7 ~@4 d5", // Em C
  E: "[[e4,e5]@4 [f4,f5]@2 ~ [e4,e5]@5 ~@3 [c4,c5] [d4,d5]@4 [e4,e5]@2 [d4,d5]@5 ~@3 [c4,c5]@4 [a3,a4] ~@3 a4@13 ~@5 e4@2 a4@2 e4@2 b4@6 c5@2 a4@5 ~ b4@2 g4@4 a4 ~ e4@10 ~@2, [d#4,d#5] ~@15 [c#4,c#5] ~@20 a3@13 ~@46]/3", // E F E C D E D C …
  F: "c4@16 a2@2 [b2,c3,b3,c4] [c#3,c#4] ~ [e3,e4] ~@2 [a3,a4] ~@2 [c#4,c#5]@2 e4 e5 ~", G: "[f4,f5] ~",
})).s("gm_electric_guitar_jazz").gain(0.4).pan(0.3)

// other · electric guitar jazz · soft notes · D#m
const electric_guitar_jazz_2 = note("<~@47 [~@29 [d4,d#4,f4,f#4] ~ f4] [[d#4,f#4] ~@30 d4] ~@16>")
  .s("gm_electric_guitar_jazz").gain(0.2).pan(0.3)

// chords · vibraphone
const vibraphone = note(`<
  ~ A@2 ~@2 B@2 C@2 D E F G H I J@2 K L M@2 A@2 ~@2 B@2 C@2 N E O P Q ~@11 B@2 C@2 D E R S ~@12
>`.pickRestart({
  A: "[[e4,a4,c5]@5 ~@3]/2", B: "[~@2 [b4,c5,e5]@43 ~@3 a3@10 ~@6]/2",
  C: "[~@2 [b4,c5,e5]@33 ~@13 b4@5 ~@3 e4@4 ~@4]/2", D: "~@2 [b4,c5,e5]@20 ~@2 b4 ~ c5@2 b4 ~ g4 ~",
  E: "a4@15 ~ g4@8 f4@7 ~", F: "~@4 a4@3 ~ [b4,c5,e5]@4 ~@8 e4@3 ~ [b4,c5,e5]@8, e4 ~@3",
  G: "~@4 f4@3 ~ [a4,c5,e5]@8 [a4,c#5]@12 d5@2 [c#5,e5] ~, ~@16 e5@8 ~@4 b4 ~@3", H: "[a4,d5,f5] [b4,d5,g5]",
  I: "[c5,e5,g5]@16 [a4,c5,f5]@15 ~", // C F
  J: "[[a#4,d5,f5]@7 ~ [a4,c5,e5] ~@7 [a4,c5]@4 [b4,d5]@4 [c5,e5]@4 [b4,d5]@4, ~@24 [g#4,b4,e5]@11 ~@29, ~@32 e4@31 ~]/2", // A# Am Bm C Bm E
  K: "[d5,f5]@12 [c5,e5]@4 [b4,d5]@11 ~ a4@2 b4@2, a4@15 ~ g4@15 ~, ~@28 c5 ~ d5 ~", // Dm C Bm
  L: "[c5,e5]@12 [b4,d5]@3 ~ [a4,c5]@16", M: "[a#4@13 ~@3 [a4,c5]@4 ~@4 [g#4,b4]@15 ~@21 f#4 ~ g#4 ~, d5@5 ~@27]/2",
  N: "~@2 [b4,c5,e5]@20 ~@2 b4 ~ c5 ~ b4 ~ g4 ~", O: "~@4 a4@4 [b4,c5,e5]@11 ~ e4@4 [b4,c5,e5]@8, e4 ~@3",
  P: "~@4 f4@3 ~ [a4,c5,e5]@8 e5@12 d5 ~ e5 ~, ~@16 [a4,c#5]@15 ~", Q: "f5 ~",
  R: "~@4 a4@3 ~ [b4,c5,e5]@3 ~@9 e4@4 [b4,c5,e5]@8, e4 ~@3", S: "~@4 f4@3 ~ [a4,c5,e5]@8 [a4,c#5,e5]@16",
})).s("gm_vibraphone").gain(0.25).pan(0.2)

// other · muted trumpet
const muted_trumpet = note("<~@4 A B ~@18 C B ~@18 D B ~@2 E ~@16>".pickRestart({
  A: "~@16 a4@2 ~ a4 ~ a4 ~@2 a4 ~@2 a4@2 ~ a4 ~", B: "a4 ~@15", C: "~@24 a4 ~@3 a4 ~ a4 ~",
  D: "~@19 a4@2 ~@2 a4!2 ~@2 a4 ~@2 a4 ~", E: "~@31 [e4,e5]",
})).s("gm_muted_trumpet").gain(0.44).pan(0.7)

// other · french horn
const french_horn = note("<~@36 A B C D@3 ~@14 A B C E@3 F G ~>".pickRestart({
  A: "e3 e4", B: "f3@4 f4@5 g3 d4 c4 b3 a3 g3 f3", C: "e3@4 e4@4 ~ f3 c4 b3 a3 g3 f3 e3",
  D: "[d3@8 d4@8 c4@7 ~ b3@41 ~@31]/3", E: "[d3@2 d4@2 c4@2 b3@10 e4 a4 b4 c5 b4 c5 b4 g4]/3",
  F: "f4 e5 d5 c5 c5@2 c5@2", G: "e5",
})).s("gm_french_horn").gain(0.25).pan(0.9)

// other · whistle
const whistle = note("<~@3 A B ~@2 C ~@15 A B ~@2 C ~@2 D E ~@11 A B ~@2 C ~@2 D E ~@13>".pickRestart({
  A: "~@20 a3@4 b3@3 c4@2 d4@2 ~", B: "e4@3 ~ a4@3 b4@3 c5@3 d5@3 e5@4 a5@4 b5@2 c6@2 d6@2 e6 ~",
  C: "~@16 e5 [b4,c5] a4 [e4,e5] c5 [a4,b4] e4 [a4,b4] c5 [c5,e5] b4 [e4,a4] ~@4", // Cmaj7 E Asus2 C A5
  D: "~@24 e5 [b4,c5] a4 [e4,e5] c5 [a4,b4] e4 [a4,b4]", E: "c5 [c5,e5] b4 [e4,a4] ~@28",
})).s("gm_whistle").gain(0.26).pan(0.8)

// other · whistle · soft notes
const whistle_soft = note("<~@7 A B ~@18 A B ~@2 C ~@15 A B ~@2 C ~@13>".pickRestart({
  A: "~@28 c4 [a3,b3] c4 [a3,b3]", B: "e3 ~@31", C: "~@4 c4 [a3,b3] c4 [a3,b3] e3 ~@23",
})).s("gm_whistle").gain(0.05).pan(0.8)

// other · pad new age
const pad_new_age = note("<~ A B C D E ~@15 F G H I E ~@15 J K L M E ~@15 N O P ~>".pickRestart({
  A: "e5 [a4,b4] c5 [d5,e5] a4 [b4,c5] d5 [a4,d5,e5] b4 [b4,c5,d5] e5 [a4,b4,d5] c5 [b4,d5,e5] a4 [b4,c5,d5] [d5,e5] a4 [b4,c5] d5 [a4,e5] b4 [c5,d5] e5 [a4,b4,e5] c5 [d5,e5] [a4,b4,d5] c5 [b4,d5] [a4,b4,c5] c5", // Asus2 Dsus2 Cmaj7 Asus4 Bm Bm7 E7 Bm …
  B: "[d5,e5] a4 [b4,c5] [d5,e5] a4 [b4,c5] d5 [a4,d5,e5] b4 [b4,c5,d5] [a4,c5,e5] [b4,d5] [c5,d5,e5] [a4,b4,e5] [b4,c5] [c5,d5] [a4,e5] b4 [c5,d5] [a4,e5] [b4,c5] [a4,c5,d5] [a4,e5] [a4,b4,d5] [c5,e5] [b4,d5,e5] [a4,b4,c5] [c5,d5] [d5,e5] [a4,b4] c5 d5", // Dsus2 Cmaj7 Dsus2 Cmaj7 Asus4 Bm Am Bm …
  C: "e5 a4 [b4,c5] [d5,e5] a4 [b4,c5] d5 [a4,d5] b4 [b4,c5,d5] [a4,c5,e5] [b4,d5] [c5,d5,e5] [a4,b4,e5] b4 [c5,d5] [a4,e5] b4 [c5,d5] [a4,d5,e5] b4 [b4,c5,d5] c5 [a4,b4,d5] e5 [b4,d5] [a4,b4,c5] c5 [d5,e5] a4 [b4,c5] d5", // Cmaj7 Dsus2 Cmaj7 D5 Bm Am Bm C …
  D: "e5 [a4,b4] c5 [d5,e5] a4 [b4,c5] d5 [a4,c5,e5] b4 [b4,c5,d5] [a4,c5,e5] [b4,d5] [c5,e5] [a4,b4,e5] b4 [c5,d5] [a4,e5] b4 [c5,d5] [a4,d5,e5] b4 [b4,c5,d5] c5 [a4,b4,d5] c5 [b4,d5] [a4,b4,c5] d5 e5 a4 [b4,c5] d5", // Asus2 Dsus2 Cmaj7 Am Bm Am Bm C …
  E: "e5 ~@31",
  F: "e5 [a4,b4] c5 [d5,e5] a4 [b4,c5] d5 [a4,d5,e5] b4 [b4,c5,d5] c5 [a4,b4,d5] c5 [b4,d5,e5] a4 [b4,c5,d5] e5 a4 [b4,c5] d5 [a4,e5] b4 [c5,d5] e5 [a4,b4,e5] c5 [c5,d5] [a4,b4,d5] c5 [b4,d5] [a4,b4,c5] [c5,d5]", // Asus2 Dsus2 Cmaj7 Asus4 Bm Bm7 E7 Bm …
  G: "e5 a4 [b4,c5] [d5,e5] a4 [b4,c5] d5 [a4,c5,e5] b4 [b4,c5,d5] [a4,c5,e5] [b4,d5] [c5,d5,e5] [a4,b4,e5] [b4,c5] [a4,c5,d5] [a4,e5] b4 [c5,d5] [a4,e5] [b4,c5] c5 [d5,e5] [a4,b4,d5] [c5,e5] [b4,d5,e5] [a4,b4,c5] [c5,d5] [d5,e5] a4 [b4,c5] d5", // Cmaj7 Dsus2 Cmaj7 Am Bm Am Bm C …
  H: "e5 a4 [b4,c5] [d5,e5] a4 [b4,c5] d5 [a4,b4,e5] d5 [b4,c5,d5] [a4,c5,e5] b4 [c5,d5,e5] [a4,b4,e5] b4 [c5,d5] [a4,e5] b4 [c5,d5] [a4,c5,e5] b4 [b4,c5,d5] c5 [a4,b4,d5] e5 [b4,d5] [a4,b4,c5] c5 [d5,e5] a4 [b4,c5] d5", // Cmaj7 Dsus2 Cmaj7 Asus2 Bm Am C Asus2 …
  I: "e5 a4 [b4,c5] [d5,e5] [a4,e5] [b4,c5] d5 [a4,b4,e5] e5 [b4,c5,d5] [a4,c5,e5] b4 [c5,d5,e5] [a4,b4,c5] b4 [c5,d5] [a4,e5] b4 [c5,d5] [a4,d5,e5] b4 [b4,c5,d5] e5 [a4,b4,d5] e5 [b4,d5] [a4,b4,c5] c5 [d5,e5] a4 [b4,c5] d5", // Cmaj7 Dsus2 A5 Cmaj7 Asus2 Bm Am C …
  J: "~ [a4,b4] c5 d5 [a4,e5] [b4,c5] d5 [a4,b4,e5] b4 [b4,c5,d5] e5 [a4,b4,d5] e5 [b4,d5,e5] c5 [b4,c5,d5] e5 a4 [b4,c5] d5 [a4,c5,e5] b4 [c5,d5] e5 [a4,b4,d5] c5 [d5,e5] [a4,b4,d5] e5 [b4,d5] [a4,b4,c5] d5", // Asus2 A5 Cmaj7 Asus2 Bm Bm7 E7 Bm …
  K: "e5 a4 [b4,c5] [d5,e5] a4 [b4,c5] d5 [a4,b4,e5] b4 [b4,c5,d5] [a4,c5,e5] b4 [c5,d5,e5] [a4,b4,e5] [b4,c5] [b4,c5,d5] [a4,c5,e5] b4 [c5,d5] [a4,e5] [b4,e5] [c5,d5] [b4,e5] [a4,b4,d5] [c5,e5] [b4,d5,e5] [a4,b4,c5] [c5,d5] [d5,e5] a4 [b4,c5] d5", // Cmaj7 Dsus2 Cmaj7 Asus2 Bm Am C Asus2 …
  L: "e5 a4 [b4,c5] [d5,e5] a4 [b4,c5] d5 [a4,b4,e5] b4 [b4,c5,d5] [a4,c5,e5] b4 [c5,d5,e5] [a4,b4,e5] b4 [c5,d5] [a4,e5] b4 [c5,d5] [a4,c5,e5] e5 [b4,c5,d5] e5 [a4,b4,d5] e5 [d5,e5] [a4,b4,c5] c5 [d5,e5] a4 [b4,c5] d5", // Cmaj7 Dsus2 Cmaj7 Asus2 Bm Am C Asus2 …
  M: "e5 a4 [b4,c5] [d5,e5] a4 [b4,c5] d5 [a4,c5,e5] b4 [b4,c5,d5] [a4,c5,e5] b4 [c5,d5,e5] [a4,b4,e5] b4 [c5,d5] [a4,e5] b4 [c5,d5] [a4,c5,e5] b4 [b4,c5,d5] c5 [a4,b4,d5] e5 [c5,d5] [a4,b4,c5] c5 [d5,e5] a4 [b4,c5] d5", // Cmaj7 Dsus2 Cmaj7 Am Bm Am C Asus2 …
  N: "c5 [a4,b4] c5 [d5,e5] a4 [b4,c5] d5 [a4,e5] b4 [c5,d5] e5 [a4,b4] c5 [d5,e5] a4 [b4,c5] [d5,e5] a4 [b4,c5] d5 [a4,e5] b4 [c5,d5] e5 [a4,b4] c5 [d5,e5] [a4,b4] c5 [d5,e5] [a4,b4] c5", // Asus2 Dsus2 Cmaj7 A5 Csus2 Asus2 Dsus2 Cmaj7 …
  O: "[d5,e5] a4 [b4,c5] [d5,e5] a4 [b4,c5] d5 [a4,e5] b4 [c5,d5] [a4,e5] b4 [c5,d5] [a4,e5] b4 [c5,d5] [a4,e5] b4 [c5,d5] [a4,e5] b4 [c5,d5] e5 [a4,b4] c5 [d5,e5] [a4,b4] c5 [d5,e5] a4 [b4,c5] d5", // Dsus2 Cmaj7 Dsus2 Cmaj7 A5 Csus2 A5 Csus2 …
  P: "[d5,e5] a4 [b4,c#5] [d5,e5] a4 [b4,c#5] d5 [a4,e5] b4 [c#5,d5] [a4,e5] b4 [c#5,d5] [a4,e5] b4 [c#5,d5] [a4,e5] b4 [c#5,d5] [a4,e5] b4 [c#5,d5] e5 [a4,b4] c#5 ~@7", // Dsus2 Bsus2 Dsus2 Bsus2 A5 Dmaj7 A5 Dmaj7 …
})).s("gm_pad_new_age").gain(0.16).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A ~@4 B C@2 D C@5 E F C@12 G H E I C@2 E ~ C J C@5 K L C L M C@2 N O P Q N R C E A ~
>`.pickRestart({
  A: "x", B: "~@7 x", C: "x!2", D: "x ~@2 x!2 ~@3", E: "x ~ x!2", F: "~@15 x", G: "x ~@7 x ~@2 x ~@4",
  H: "x ~@7 x ~@6 x", I: "x ~@2 x ~@7 x ~@3 x", J: "x ~@6 x!2 ~@7", K: "x ~@15 x ~@14 x", L: "x ~@14 x!2 ~@15",
  M: "x ~@15 x ~@5 x!3 ~@7", N: "x ~@3 x!3 ~", O: "x ~@15 x ~@4 x ~ x ~@8", P: "x ~@3 x ~@3 x ~@6 x",
  Q: "x ~@2 x ~@3 x!2 ~@3 x ~@3", R: "~@14 x!2",
})).gain(0.22)

// … 69 more lines

More by Lionel Richie