Strudelify
All Night Long cover art

1991 · Can't Slow Down

All Night Long

Lionel Richie

KeyB majorTempo108 bpm
0:00/0:00
// All Night Long — RICHIE LIONEL
// 108 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 162 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(108/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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@2 A B C D E F E G H@2 I J@2 K L M N G O@2 P G Q R N G S N T@2 U@2 V@2 W@5 X@5 Y@8 Z@5 AA@2 AB@2 AC@2 AD@2 AE AF@3
  AG@3 AH AI@3 AJ AK ~ AL ~ AM ~@7 AN AO AP AQ@2 AR@2 AS@2 AT@2 AU@2 AO G AV N@2 G I N@2 G AW N@2 AX AW AY AZ@2 BA@2
  BB@2 BC@4 BD@4 BE@8 BF@8 BG@8 BH@3 BI
>`.pickRestart({
  A: "f#4@3 f#4, [b3,c#4]", B: "[b3,c#4,e4]@15 b3", C: "c#4@6 d#4@9 a3, [b3,f#4]", D: "[a3,b3,c#4,e4]@15 b3",
  E: "[b3,c#4,d#4,f#4]@15 a3", F: "a3 ~@12 c#4@2 ~, e4, c#4@13 ~@3, b3@11 b3@5, ~ a4", G: "[a3,b3,c#4,e4]",
  H: "[c#4 ~ [b3,c#4,e4]@2, [b3,f#4]@17 ~@15, ~@8 d#4@9 ~@15, ~@15 a3@2 ~@15]/2", I: "[b3,e4,g#4]",
  J: "[b3@7 ~ [c#4,d#4,f#4]@8, [c#4,d#4,f#4] ~, ~@7 b3@9]/2", K: "b3@7 b3, [a3,c#4,e4]",
  L: "~@6 e4@9 b3, [b3,g#4], e4@5 ~@11, ~@3 b4@13", M: "~@13 b4@3, [b3,c#4,d#4,f#4], ~@5 [c#5,f#5]@3",
  N: "[b3,c#4,d#4,f#4]", O: "[b3@15 ~ [c#4,d#4,f#4]@15 b3, [e4,g#4]@17 ~@15, ~@15 b3@16 ~]/2",
  P: "c#4@3 d#4@13, [b3,f#4]", Q: "~@3 e4@5, [b3,g#4], e4@3 ~@5, ~@3 b4@13", R: "b3@7 b3, [d#4,f#4]",
  S: "e4@3 ~@3 g#4@9 b3, [b3,b4], g#4@3 ~@5, ~@3 e4@13", // B
  T: "[[b3,d#4] ~@3 [e4,g#4] ~@26 c#4, f#4 ~ b3 ~ [b3,c#4,e4]@8 e5@3 a3, ~@4 a3@7 c#5@5, ~ b5, ~@19 b4@13]/2", // B E C#m7
  U: "[[a3,e4]@2 ~@2 [b3,e4,g#4]@2 ~ [b3,c#4] ~@23 d#4, c#4 ~@7 [c#4,d#4,f#4]@16 b5@6 b3@2, ~@4 b3@7 c#5@5, ~ f#5, ~@19 b4@13]/2", // A5 E Bsus2 D#m7
  V: "[[b3,d#4] ~@3 [b3,e4,g#4]@2 ~@25 c#4, f#4 ~@3 [b3,c#4,e4]@8 a4@3 a3, ~@4 a3@7 e5@5, ~ a5, ~@19 b4@13]/2", // B E C#m7
  W: "[[a3,c#4,e4]@2 ~@2 [b3,g#4]@2 ~ c#4 ~@31 c#4 ~@29 b3@3 [b3,e4,g#4]@8, ~@4 e4 ~@3 [c#4,d#4,f#4]@16 b5@3 c#6@3 f#6@2 b6@6 b3@2 [b3,c#4,d#4,f#4]@16 e4@11 e4@5 ~@8, ~@8 b3@13 b4@19 ~@14 a3@2 [a3,c#4]@17 ~@7, ~@16 f#5@24 ~@24 a4@9 ~@7, ~@19 c#5@21 ~@15 b3@14 ~@11]/5", // A E D#m7 B A
  X: "[~@6 b3@2 c#4@5 ~@8 b4@3 ~@14 a3@2 b3@14 b3@2 e4@3 ~@3 e4@9 b3 [c#4,d#4,f#4]@8, ~@8 [b3,f#4]@16 [b3,d#4,f#4]@17 ~@15 [b3,g#4]@16 b3 ~@7, ~@13 d#4@11 ~@16 [a3,c#4,e4]@16 ~@3 b4@13 ~@8]/5", // D#m7 B5 B E A
  Y: "[~@23 b3 b3@14 b3@2 e4@3 ~@12 b3 [b3,c#4,d#4,f#4]@16 ~@15 a3 b3@14 b3@2 e4@3 ~@3 e4@9 b3 [b3,c#4,d#4,f#4]@8, ~@6 b3@2 [b3,d#4,f#4]@16 ~@16 b3@15 ~@17 [b3,c#4,d#4,f#4]@17 ~@15 [b3,g#4]@16 ~@8, ~@7 c#4@17 ~@16 g#4@17 ~@71, ~@22 a3@2 [a3,c#4,e4]@16 ~@3 b4@14 ~@50 b4@13 ~@8, ~@46 e4@11 ~@31 [a3,c#4,e4]@16 ~@24]/8", // B E A
  Z: "[~@6 b3@2 [b3,c#4,d#4,f#4]@16 [a3,b3,c#4,e4]@16 ~@6 e4@9 b3 [b3,d#4,f#4]@16 [b3,d#4,f#4,b4] ~@3 [e4,f#4,g#4,b4] ~@3, ~@40 [b3,g#4]@16 c#4 ~@19 b3@2 ~@2, ~@8 e4 ~@7, ~@43 b4@13 ~@24]/5", // B A B E
  AA: "[b3@16 a3@7 [a3,c#4] [a3,c#4,e4,a4]@2 ~@2 [b3,e4,g#4]@2 ~@2, [c#4,e4,a4]@3 ~]/2", // A E A
  AB: "[d#4@9 ~@14 d#4 [b3,d#4,f#4] ~@3 [b3,g#4]@2 ~@2, b3@11 b3 ~@4, f#4@12 ~ f#4@11 ~@8, ~@10 d#4@13 ~@5 e4 ~@3, ~@2 b4 ~]/2", // B E
  AC: "[[a3,b3,e4]@8 ~@15 c#4 [a3,e4]@2 ~@2 [b3,e4]@2 ~@2, c#4@13 c#4@9 a3@2 ~@8, ~@8 a4@16 ~@4 g#4 ~@3, ~@11 b3@13 c#4 ~@7, ~@2 e4 ~]/2", // Asus2 A5 E5
  AD: "[~@19 b6@13, [b3,d#4,f#4] f#6, ~@3 b4@13, ~@5 f#5@11, ~@13 b5@19]/2", // B
  AE: "[b3,d#4]@3 [c#4,e4]@2 ~ c#4 ~ [e4,g#4]@2 ~ [d#4,f#4]@2 [c#4,e4]@2 ~, ~@5 [d#4,f#4]@2 ~@9", // B C#m E D#m C#m D#m
  AF: "[[b3,d#4]@2 ~ [c#4,e4]@2 ~@17 e4@18 [b3,d#4]@3 [c#4,e4]@3 d#4@2, ~@3 [a3,c#4]@16 ~@5, ~@7 e5@13 ~@4, ~@2 b4@3 ~, ~@19 a4@21 ~@6 f#4 ~]/3", // B C#m B C#m A
  AG: "[[e4,g#4]@2 ~ [d#4,f#4]@2 ~ [c#4,e4]@2 [b3,d#4]@2 ~ [c#4,e4]@3 [a3,c#4]@32 ~@2]/3", // E D#m C#m B C#m A
  AH: "[b3,d#4]@3 [c#4,e4]@2 [d#4,f#4]@2 ~ [e4,g#4]@3 [d#4,f#4]@2 ~ [c#4,e4]@2", // B C#m D#m E D#m C#m
  AI: "[~ d#4@2 [c#4,e4]@3 [a3,c#4]@32 ~@2 [b3,d#4]@2 ~ [c#4,e4]@2 d#4@2 ~, b3@3 ~@42 f#4 ~@2]/3", // C#m A B C#m
  AJ: "[e4,g#4]@2 ~ [d#4,f#4]@2 e4@2 ~ [b3,d#4]@2 ~ [c#4,e4] ~@3 e4, ~@5 c#4 ~@10", // E D#m B C#m
  AK: "[e4,g#4,b4]@3 [e3,d#4,f#4,b4] ~@4 [e4,g#4,b4]@3 [d#4,f#4,b4] ~@4", // E B E B
  AL: "[e4,g#4,c#5]@3 [d#4,f#4] ~@4 [e4,g#4,c#5]@3 [d#4,f#4] ~@4", // C#m D#m C#m D#m
  AM: "[e4,g#4,b4]@3 [d#4,f#4,b4] ~@4 [e4,g#4,b4]@3 [d#4,f#4,b4] ~@4", // E B E B
  AN: "[e4,g#4,c#5]@3 [d#4,f#4,b4] ~@4 [e4,g#4,c#5]@2 ~ [d#4,f#4,b4] ~@4", AO: "[b3,d#4,f#4]",
  AP: "~@11 b4@5, [a3,c#4,e4], ~ a5", // A
  AQ: "[~@6 f#4@2 ~@15 d#4 [b3,d#4,f#4,b4] ~@3 [b3,e4,g#4,b4] ~@3, [f#3,d#4]@12 f#5 b5 d#6@2 f#6@6 b3@2 ~@8, b3@11 d#5@13 ~@8, ~ f#4@2 ~, ~@5 b4@7 ~@4]/2", // B E D#m
  AR: "[c#4@10 ~@13 c#4 [a3,c#4,e4]@3 ~ [b3,e4,g#4]@3 ~, a3@11 a3 ~@4, [b3,e4]@13 [b3,e4]@11 ~@8, ~@5 [c#4,a4]@7 ~@4, ~@2 [c#5,a5] ~]/2", // A E E5 F#m
  AS: "[~@16 d#5@7 [b3,d#4] [b3,d#4,f#4,b4]@3 ~ [b3,g#4]@3 ~, [b3,d#4,f#4]@24 ~@4 e4 ~@3, ~ b5@2 ~, ~@11 f#5@13 ~@8, ~@7 b4@5 ~@4]/2", // B E B
  AT: "[~@16 c#5@7 [a3,c#4] [c#4,e4]@2 ~@2 [b3,e4,g#4]@3 ~, [a3,b3,c#4,e4]@3 ~, ~@5 a5@7 ~@4, ~@13 b4@11 ~@8]/2", // A C#m E A
  AU: "[~@11 b6@5, [b3,d#4,f#4] f#6, ~@3 b4@13, ~@9 f#5@23, ~@3 b5@5]/2", // B
  AV: "~@3 e4@5, [b3,g#4], e4@5 ~@11, ~@3 b4@13", AW: "e4@3 ~@3 e4@10, [b3,g#4], ~@3 b4@13",
  AX: "~@7 b3, [a3,c#4,e4], b3@7 ~, ~@3 a4", AY: "[b3,c#4,d#4,f#4]@15 b3",
  AZ: "[[b3,d#4,f#4,b4] ~@3 [b2,b3,e4,g#4,b4] ~@18 b4@9, ~ [a3,b3,c#4,e4]@3, ~@17 a5@15, ~@5 e5@3]/2", // B E A
  BA: "[[a3,c#4,e4]@2 ~@2 [b3,e4,g#4]@2 ~@18 b5@7 [b3,d#4], ~ [b3,d#4,f#4]@3, ~@17 b4@15, ~@19 c#5@13, ~@11 f#5@5]/2", // A E B
  BB: "[[b3,d#4,f#4] ~@3 [e4,g#4,b4] ~@19 a6@8, b4 ~ b3 ~ [b3,c#4,e4,a4]@12, ~@7 a3@9, ~@5 e6@3, ~@11 a5@5]/2", // B E A
  BC: "[[c#4,e4]@2 ~@2 [e4,g#4] ~@34 b3 ~@16 [b3,c#4,e4]@8, a3 ~@3 b3@2 ~@2 [b3,d#4,f#4]@14 b5@2 d#6@3 f#6@3 b6@8 a3@2 a3@24, ~@14 b4@26 [b3,c#4]@11 a4@13, ~@9 f#5@11 ~@4 e5@8, ~@20 d#5@20 e4@10 e4@3 b4@11]/4", // C#m E C#m7 B Bsus2
  BD: "[~@5 b4@3 ~@16 b4@16 ~@16 [b3,c#4,e4]@8, e5@8 ~@10 f#5@22 e4@10 e4 a4@13, ~ e4@3 [b3,c#4,d#4,f#4]@16 a3@12, ~@3 a4@5 ~@7 b4@9 ~@16 [b3,c#4]@14 b4@10, ~@21 b5@19 ~@8 e5@16]/4", // C#m7 B Bsus2
  BE: "[~@6 b4@2 ~@31 b3 ~@30 a4@2 ~@30 b4@2 ~@13 b4@11, e5@4 [b3,c#4,d#4,f#4]@8 b5@7 a3 [a3,b3,c#4]@16 [b3,c#4,d#4]@16 [a3,b3,c#4]@12, ~@2 e4@7 ~@10 b4@21 e4@10 e4@16 e5@6 f#4@10 f#4@16 f#5@6 e4@10 e4@14, ~@3 a4@6 ~@7 f#5@24 ~@8 e5@5 b4@20 ~@7 f#5@5 c#5@20 ~@7 e5@16, ~@21 c#5@19 ~@11 a4@17 e4@5 ~@10 b4@17 f#4@5 ~@10 a4@13]/8", // B A B A
  BF: "[~@3 a4 ~@14 b3@2 ~@8 e4@8 ~@8 b5@8 [a3,b3,c#4,e4]@12, ~@2 e5@6 b3@21 b4@3 f#4@8 e4@16 ~@72, ~ e4 [c#4,d#4]@8 [a3,b3,c#4]@8 [b3,c#4,d#4,f#4]@8 ~@6, ~@4 f#4@5 f#4@4 f#5@7 ~@21 f#5@11 ~@12, ~@16 f#5@3 b4@2 c#5@19 ~@13 a4@19 ~@14 b4@18 ~@24]/8", // A C#sus2 A B
  BG: "[~@24 b5@16 ~@13 b4@3 ~@13 b4@3 ~@13 c#5@3 ~@13 c#5@3 ~@13 b4@3 [a3,b3,c#4,e4]@8, ~ [b3,c#4,d#4,f#4]@4 [a3,b3,c#4]@2 [a3,b3,c#4]@2 [b3,c#4,d#4]@2 [b3,c#4,d#4]@2 [a3,b3,c#4]@2 ~, ~@9 f#5@11 e4@5 e4@3 e4@5 e4@3 f#4@5 f#4@3 f#4@5 f#4@3 e4@5 e4@3 ~@4, ~@21 b4@20 ~@7 e5@9 ~@7 e5@8 ~@8 f#5@8 ~@8 f#5@8 ~@8 e5@8 ~@8, ~@51 a4@6 ~@10 a4@5 ~@11 b4@5 ~@11 b4@5 ~@11 a4@5 ~@8]/8", // A B A B A
  BH: "[~@5 b4@3 ~@13 c#5@3 ~@13 c#5@3 [a3,b3,c#4,e4]!4 ~ [a3,b3,c#4,e4] ~ [a3,b3,c#4,e4], e5 ~ f#5 ~ f#5 ~, ~ e4@3 [b3,c#4,d#4]@8 [b3,c#4,d#4]@8 ~@4, ~@3 a4@5 f#4@10 f#4@6 f#4@10 f#4@6 ~@8, ~@19 b4@5 ~@11 b4@5 ~@8]/3", // A B
  BI: "[a3,b3,c#4,e4]!4 ~@12", // A
})).s("gm_epiano2").gain(0.32)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@2 A B C D C E C F A G H I A G H I A G H J A G H K A G H C L M N O P M N Q R@8 S@8 T@5 U V W X U V W Y Z AA M AB AC@2
  AD Z AA M AB AE AF AG AF AH AF AH ~@6 AI@2 U AJ AK U V W X U V W Y A G H I A G H J A G H K A G H C L M N O P M N Q AL
  M N O P M N Q AL M N O P M N Q AL M N O P M N Q AL M N O P M N Q AM AN
>`.pickRestart({
  A: "b1", B: "a1@13 ~ a1!2", C: "b1@15 ~", D: "a1@15 a1", E: "a1@14 a1!2", F: "a1@13 ~ a1@2", G: "a1@7 b1", H: "c#2",
  I: "b1@11 f#2 ~ f#2 g#2@2", J: "b1@6 f#1 g#1", K: "b1@3 f#2", L: "b1@3 ~ b1@3 ~ a1@6 ~ a1", M: "a1@7 ~ a1@6 ~ a1",
  N: "a1@3 a1!2 ~ a1 ~ b1@6 ~ b1", O: "b1@7 ~ b1@6 ~ b1", P: "b1@3 ~ b1@4 a1@6 ~ a1", Q: "b1@7 ~ b1@8",
  R: "[g#2@4 f#2@4 b1@16 a1@14 b1@2 c#2@16 b1@11 f#2 ~ f#2 g#2@2 b1@16 a1@14 b1@2 c#2@16 b1@8]/8",
  S: "[~@3 f#2 ~ f#2 g#2@2 b1@16 a1@14 b1@2 c#2@16 b1@12 f#1@2 g#1@2 b1@16 a1@14 b1@2 c#2@16 b1@8]/8",
  T: "[~@4 f#2@4 b1@16 a1@14 b1@2 c#2@16 b1@15 ~ b1@3 ~ b1@3 ~]/5", U: "a1@6 ~ a1 a1@7 ~",
  V: "a1@6 ~ a1 a1@3 a1!2 ~ a1 ~", W: "b1@6 ~ b1 b1@7 ~", X: "b1@6 ~ b1 b1@3 ~ b1@4", Y: "b1@2 g#2 f#2",
  Z: "b1@2 ~ c#2@2 ~ d#2@2 e2@2 ~ d#2@2 ~ c#2@2", AA: "b1@2 ~ c#2@2 ~ a1@8 ~ a1", AB: "a1@6 ~ a1 b1@2 ~ c#2@2 ~ d#2@2",
  AC: "[e2@2 ~ d#2@2 ~ c#2@2 b1@2 ~ c#2@2 ~ a1@8 ~ a1 a1@7 ~]/2", AD: "a1@6 ~ a1 a1@6 ~ a1",
  AE: "e2@2 ~ d#2@2 ~ c#2@2 b1@2 ~ c#2@2 ~ b1@2", AF: "a1@3 g#1 ~@4 a1@3 g#1 ~@4", AG: "~@12 a1 ~ a1 ~",
  AH: "b2!2 ~ b1 ~@2 b2 ~@3 b1 ~ b2 ~ b1 ~", AI: "[a1@3 g#1 ~@4 a1@3 g#1 ~@3 b1@14 ~ b1 ~]/2",
  AJ: "g#1@6 ~ g#1 g#1@7 ~", AK: "g#1@6 ~ g#1 d#2@3 ~ g#1@4", AL: "g#2@4 f#2@4 a1@6 ~ a1",
  AM: "g#2@4 f#2@4 a1!4 ~ a1 ~ a1", AN: "a1!4 ~@12",
})).s("gm_electric_bass_finger").gain(0.26)

// other · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~ A@2 B C D E F@2 G H@2 ~@4 I@4 ~@2 J K@5 L@2 ~@3 M@7 ~@5 N O P Q R ~@2 S P T@5 ~@6 U@2 ~ V W X@2 Y Z AA V AB AC@2
  ~@13 AD AE@3 ~@11 AF@3 ~@2 J AG@7 ~@42
>`.pickRestart({
  A: "[~ d#5, f#5]/2", B: "[c#5,e5]", C: "[b4,d#5]", D: "c#5@4 b4@4 ~ c#5@4 b4@3, e5", E: "~ [d#5,f#5]@15",
  F: "[~ e5@19 ~@12, c#5@5 ~@3]/2", G: "a3", H: "[f#3@25 ~@7]/2",
  I: "[~@4 f#5@49 ~ e5@6 ~@4, ~@4 d#5@53 ~@7, ~@53 c#5@8 ~@3]/4", J: "[d#5,f#5]",
  K: "[[c#5,e5]@18 ~@6 [f#4,b4]@35 ~@2 [d#5,f#5]@9 ~ c#5@9, ~@24 c#5@15 ~@31 e5@10]/5", // C#m B5 D#m
  L: "[~@5 [f#4,b4]@11, ~@10 c#5@11 ~@11]/2", // B5
  M: "[~@8 [b4,d#5]@12 e5@4 a4@28 ~@4 d#5@23 c#5@4 ~@29, ~@20 c#5@32 ~@4 [f#4,b4]@51 ~@5]/7", N: "~@8 c#4@3 b3@3 c#4@2",
  O: "b3@3 ~ c#4@2 b3@2 c#5@3 b4@2 c#5@3", P: "b4@3 c#5@3 b4@2 c#5@3 b4@3 c#5@2", Q: "b4@3 c#5@3 b4@3 c#5@2 b4@3 c#5@2",
  R: "~ b4@3 c#5@2 b4@5 ~@5", S: "~@8 c#5@3 b4@2 c#5@3",
  T: "[b4@3 c#5@3 b4@17 ~@16 e5@16 ~ d#5@16 ~@8, ~@23 a4@17 ~@15 b4@17 ~@8, ~@25 c#5@32 ~@23]/5",
  U: "[[b4,d#5]@19 ~@13]/2", V: "~@11 e6 d#6 b5 f#5 d#6",
  W: "c#6 a5 e5 ~ b5 f#5 d#5 b5 a5 e5 c#5 a5 g#5 d#5 b4 g#5, ~@3 c#6@2 ~@11",
  X: "[f#5 c#5 a4 f#5 e5 f#5 g#5 e5 f#5@14 ~@10]/2", Y: "~@4 d#6 b5 f#5 d#6 c#6 a5 e5 c#6 b5 f#5 d#5 b5, ~@3 e6@2 ~@11",
  Z: "a5 e5 c#5 a5 g#5 d#5 b4 g#5 f#5 c#5 a4 f#5 e5 f#5 g#5 e5", AA: "f#5@15 ~",
  AB: "c#6 a5 e5 c#6 b5 f#5 d#5 b5 a5 e5 c#5 a5 g#5 [b4,d#5] g#5 f#5", // B
  AC: "[~ [a4,c#5] f#5 ~ e5 f#5 g#5 e5 f#5@15 ~@9]/2", AD: "b5 c#6 b5 g#5 a5 b5 a5 f#5 g#5 a5 g#5 e5 f#5 g#5 f#5 d#5",
  AE: "[~@2 b4@3 ~, [a4,c#5]@17 ~@31, ~@15 g#4@25 ~@8]/3", AF: "[[d#5,f#5]@33 [c#5,e5]@8 ~@7]/3",
  AG: "[[c#5,e5]@18 ~@3 [f#4,b4]@32 ~@17 e5@17 ~ [f#4,b4]@24, ~@21 c#5@15 ~@20 [d#5,f#5]@15 ~@41, ~@69 c#5@18 ~ c#5@13 ~@11]/7", // C#m B5 D#m
})).s("gm_synth_strings_1").gain(0.18)

// other · piano · "A.PIANO 3"
const piano = note(`<
  ~@2 A@6 ~@2 B C D E F G@3 H I J K@2 L M N O L M P Q@2 R@2 S@2 T@3 U@2 V@2 W X Y@2 Z@2 AA@2 AB@2 AC@2 AD AE AF AG AH@2
  AI AJ AH@2 AK AL AM AN@3 AO@3 AP AQ@3 AR@2 ~@5 AS AT AU AV AW AX ~ AY AZ BA@2 AH@2 AI AJ AH@2 BB BC ~@7 BD BE BF M BG
  O BH M BI BJ@2 BK@2 BL@2 BM@5 BN BO@2 BP@2 BQ@7 BR@2 ~@17
>`.pickRestart({
  A: "[~@12 d#4@3 c#4@26 ~@2 c#4 d#4@3 c#4@2 ~ d#4 e4@2 d#4@2 b3@21 c#4 d#4@2 c#4@17, ~@12 c#4 ~@83]/6",
  B: "~@5 d#4 ~ e4 f#4@5 e4 ~ d#4", C: "d#4 ~ e4@2 ~ c#4@11", D: "~@6 e4!2 g#4@2 ~ g#4@2 g#4@2 ~",
  E: "g#4@2 ~ f#4@3 d#4@10", F: "~@5 b3 ~ b3 b3@5 ~ b3 ~",
  G: "[[a3,b3] c#4@2 b3@2 a3@2 ~ a3@15 ~ e4@2 d#4 e4@2 d#4@2 e4@2 d#4@2 ~ b3@12]/3", // Asus2
  H: "~@4 d#4 e4 f#4 g#4 f#4@5 ~ e4 d#4", I: "e4@2 d#4@2 ~ c#4@11", J: "~@5 e4 ~ e4 g#4@2 ~ g#4@2 g#4@2 f#4",
  K: "[g#4@3 f#4@3 d#4@4 ~ g#4 f#4@2 d#4@5 d#4@3 c#4 ~@4 d#4 d#4@2 c#4 ~]/2", L: "~@3 e4 d#4@2 c#4 ~@4 e4 d#4@2 c#4 ~",
  M: "~@11 e4!2 ~ e4 ~", N: "d#4@3 f#4@2 ~ f#4@4 ~ d#4 d#4@2 c#4 ~, ~@3 e4 ~@12",
  O: "~@3 d#4@3 c#4 ~@4 d#4 d#4@2 c#4 ~", P: "d#4@3 b3@2 c#4@2 ~ b3@6 ~@2", Q: "[f#4 ~@3 g#4 ~@3 e4@23 ~]/2",
  R: "[e4@3 ~ g#4@3 ~ f#4@23 ~]/2", S: "[f#4@3 ~ g#4@3 ~ e4@23 ~]/2",
  T: "[e4@3 ~ g#4@4 f#4@11 c#4 d#4@2 c#4@2 b3@16 ~@5 d#4 ~ e4]/3",
  U: "[f#4@4 ~ e4 d#4 ~ d#4@2 ~ e4@2 c#4@15 ~ e4 ~ e4]/2",
  V: "[g#4@2 ~ g#4@2 ~ g#4 ~ g#4@2 ~ f#4@3 d#4@13 ~@2 b3 ~ b3]/2", W: "b3@5 b3@2 ~ c#4@3 b3@2 a3@2 ~", X: "a3@15 ~",
  Y: "[e4 ~ d#4 e4@2 d#4@2 e4@2 ~ d#4 b3@12 ~@5 d#4 e4 f#4 g#4]/2",
  Z: "[f#4@5 ~ e4 d#4 e4@2 ~ d#4@2 c#4@11 ~@5 e4 ~ e4]/2",
  AA: "[g#4@2 ~ g#4@2 g#4@2 ~ g#4@3 f#4@2 d#4@5 ~ g#4 f#4@2 d#4@5 ~ d#4@2 c#4 ~]/2",
  AB: "[~@4 d#4@2 c#4 ~@4 e4 d#4@2 c#4@4 ~ e4 d#4@2 c#4@10]/2",
  AC: "[~@3 e4!2 ~ e4@2 d#4@2 ~ f#4@2 ~ f#4@5 c#4 d#4@2 c#4 ~@5 d#4@2 c#4 ~]/2", AD: "~@4 d#4@2 c#4 ~@4 e4 d#4@2 c#4@2",
  AE: "~@3 e4 d#4@2 c#4@2 ~@8", AF: "~@2 e4@3 ~ e4@2 d#4@2 ~ b3@3 c#4@2", AG: "b3@7 ~ f#4 ~@3 g#4@2 ~@2",
  AH: "[e4@23 ~ e4@3 ~ g#4@3 ~]/2", AI: "f#4@13 d#4@2 e4", AJ: "f#4@7 ~ f#4@3 ~ g#4@3 ~", AK: "f#4@13 d#4@3",
  AL: "f#4@15 ~", AM: "d#4@2 ~ e4@2 f#4@2 ~ g#4@2 ~ f#4@2 e4@2 ~", AN: "[d#4@3 e4@3 c#4@30 ~@4 d#4@2 ~ e4@2 f#4@2 ~]/3",
  AO: "[g#4@2 ~ f#4@2 ~ e4@2 d#4@2 ~ e4@3 c#4@32 ~@2]/3", AP: "d#4@3 e4@2 f#4 ~@2 g#4@2 ~ f#4@2 e4@2 ~",
  AQ: "[b4@3 d#4@3 c#4@31 ~@3 d#4@3 e4@2 f#4 ~@2]/3", AR: "[g#4@3 f#4@2 e4 ~@2 b4@3 b4@2 ~ g#4 b4@2 ~@15]/2",
  AS: "d#4 ~ d#4 f#4 ~ d#4 ~ c#4 ~ b3 ~ b3 d#4 ~@3", AT: "~@2 b4@6 f#4 g#4 ~ g#4 ~ f#4 ~@2",
  AU: "d#4 ~ d#4 f#4 ~ d#4 ~ c#4 ~ b3 ~ b3 ~@4", AV: "~@2 b4@5 ~ g#4 ~ g#4 f#4@2 e4 d#4 ~",
  AW: "d#4 ~ d#4 f#4 ~ f#4 ~ g#4 ~ g#4 ~ f#4 ~ d#4 ~@2", AX: "~@2 g#4@5 ~ g#4 ~ f#4 g#4 ~ b4 ~@2", AY: "e4 f#4 g#4 a4",
  AZ: "b4@13 ~ b4 ~", BA: "[b4 ~ a4 ~ a4 g#4 ~ g#4@2 f#4@13 ~@2 f#4@3 ~ g#4@2 ~@2]/2",
  BB: "f#4@12 c#4 ~ c#4@2, ~@13 d#4@2 ~", BC: "b3", BD: "~@11 g#4 f#4@2 d#4 ~",
  BE: "~@3 c#4 d#4@2 c#4 ~@4 d#4 d#4@2 c#4 ~", BF: "~@3 e4 d#4@2 c#4 ~@4 e4 d#4 ~ c#4 ~",
  BG: "d#4@2 ~ f#4@2 ~ f#4@4 ~ d#4 d#4@2 c#4 ~", BH: "~@3 e4 d#4 ~ c#4 ~@4 e4 d#4@2 c#4 ~",
  BI: "d#4@2 ~ b3@3 c#4@2 ~ b3@7", BJ: "[f#4 ~@3 g#4 ~@3 e4@24]/2", BK: "[e4 ~@3 g#4@2 ~@2 f#4@14 d#4@2 e4 f#4@7]/2",
  BL: "[f#4@2 ~@2 g#4@2 ~@2 e4@23 ~]/2",
  BM: "[e4@3 ~ g#4@3 ~ f#4@13 d#4@2 ~ f#4@14 ~@2 a4@2 g#4 f#4 ~ f#4 ~ g#4@4 ~ f#4 ~ f#4 ~ a4@2 g#4 f#4 ~ f#4 ~ g#4@4 ~ g#4 ~ g#4 ~ f#4@7 [c#4,d#4]]/5", // C#sus2
  BN: "b3@2 ~@6 b4@4 ~ f#4@2 ~",
  BO: "[b4@2 ~ b4 ~@2 f#4 ~ a4 ~ g#4 f#4 ~ f#4 ~ g#4@4 ~ f#4 ~ f#4 ~ a4 ~ g#4 f#4 ~ f#4 ~ g#4]/2",
  BP: "[~@4 f#4 ~ f#4 ~ f#4@2 ~ [c#4,d#4] ~@20, ~@11 b3@21]/2", // C#sus2
  BQ: "[~@6 d#4 ~ e4@2 d#4 b3@10 d#4@2 ~ e4@2 d#4 b3@11 e4 ~ f#4@2 e4 d#4@10 ~ d#4 ~ e4 f#4@13 d#4 ~ e4@2 d#4 b3@11 d#4 ~ e4@2 d#4 b3@11 e4 ~ f#4@2 e4 d#4@5]/7",
  BR: "[~@6 d#4 ~ e4 f#4@15 ~@8]/2",
})).s("gm_piano").gain(0.32)

// chords · brass section · "BRASS 1"
const brass_section = note("<~@59 A ~ B@2 C ~ D ~@13 E F G H E I ~@6 J ~@52 K L M N O L M N P ~@7 K Q>".pickRestart({
  A: "~@9 [c#5,e5,f#5,b5] ~ [c#5,e5,f#5,b5] [c#5,e5,b5] ~ [c#5,e5,f#5,b5] ~, ~@6 f#5 ~", // C#m7
  B: "~@9 [c#5,d#5,f#5,b5] ~ [c#5,d#5,f#5,b5]!2 ~ [c#5,d#5,f#5,b5] ~", // B
  C: "~@9 [c#5,e5,f#5,b5] ~ [c#5,e5,f#5,b5] [c#5,e5,f#5] ~ [c#5,e5,f#5,b5] ~, ~@6 b5 ~", // C#m7 F#7 C#m7
  D: "~@9 [c#5,d#5,f#5,b5] ~ [c#5,d#5,f#5,b5] [c#5,d#5,f#5] ~ [c#5,d#5,f#5,b5] ~, ~@6 b5 ~", // B D#m7 B
  E: "[e5,g#5,b5]@3 [d#5,f#5,b5] ~@2 b2 ~ [e5,g#5,b5]@3 [d#5,f#5,b5] ~@4", // E B E B
  F: "[f#4,f#5] [g#4,g#5] ~@2 [b4,b5] [c#5,c#6] ~@4 [b4,b5] [a4,a5] [b4,b5] [c#5,c#6] [b4,b5] [c#5,c#6]", // F# G# B C# B A B C# …
  G: "[e5,g#5]@3 [d#5,f#5,b5] ~@2 b2 ~ [e5,g#5,c#6]@3 [d#5,f#5,b5] ~@4", H: "~@6 [d#5,f#5,b5]!2 ~@4 [d#5,f#5,b5] ~@3",
  I: "~@6 [d#5,f#5,b5]!2 ~@4 [d#5,f#5,b5]@2 ~@2", // B
  J: "[e5,g#5,c#6]@3 [d#5,f#5,b5] ~@2 b2 ~ [e5,g#5,c#6]@3 [d#5,f#5,b5] ~@4", K: "~@8 [a5,c#6]!4 ~ [a5,c#6] ~ [a5,c#6]",
  L: "[a5,c#6]!4 ~ [a5,c#6] ~@3 [b4,b5] [c#5,c#6] [a4,a5] [b4,b5] [c#5,c#6] [b4,b5] [a4,a5]", // A B C# A B C# B A
  M: "[b4,b5] ~@2 [a4,a5] [b4,b5] [e5,e6] ~@2 [d#5,d#6]@3 [b4,b5] ~@4", // B A B E D# B
  N: "~ [f#4,f#5] [g#4,g#5] [f#4,f#5] [b4,b5] [c#5,c#6] [b4,b5] [g#4,g#5] [d#5,d#6]@3 [b4,b5] ~@4", // F# G# F# B C# B G# D# …
  O: "~ [d#5,d#6,d#7] ~@6 [a5,c#6]!4 ~ [a5,c#6] ~ [a5,c#6]", P: "~ [d#5,d#6,d#7] ~@14", Q: "[a5,c#6]!4 ~@12",
})).s("gm_brass_section").gain(0.24).pan(1)

// other · steel drums · "STEELDRUMS"
const steel_drums = note("<~@22 A B ~@2 A B ~@22 C D E ~ C F E ~@47 G H I J K L M N O D ~@2 A B ~@44>".pickRestart({
  A: "~@3 d#4@2 ~ c#4 ~@4 e4 d#4@2 c#4 ~", B: "~@3 e4 d#4 ~ c#4 ~@4 e4 d#4@2 c#4 ~", C: "~@12 d#4@2 c#4 ~",
  D: "~@3 e4 d#4@2 c#4 ~@4 e4 d#4@2 c#4 ~", E: "~@3 e4 d#4@2 c#4 ~@9", F: "~@4 d#4@2 c#4 ~@4 e4 d#4@2 c#4 ~",
  G: "~@8 [b3,d#4]@2 ~ [c#4,e4]@2 ~ [d#4,f#4] ~", // B C#m D#m
  H: "~ [d#4,f#4]@2 [c#4,e4]@2 ~ [b3,d#4] c#4 a3 [a3,c#4] c#4 [a3,c#4] a3 [a3,c#4] c#4 [a3,c#4]", // D#m C#m B A
  I: "~@8 g#4@2 ~ [e4,g#4] ~ e4 g#4 ~, ~@8 e4 ~@7", // E
  J: "[e4,g#4] ~ d#4 f#4 ~ [c#4,e4] ~ b3 d#4 [b3,d#4] b3 [b3,d#4] d#4 [b3,d#4] b3 [b3,d#4]", // E C#m B
  K: "~@8 d#4@2 ~ [c#4,e4] ~@2 [d#4,f#4] ~, ~@8 b3 ~@7", // C#m D#m
  L: "[d#4,f#4] ~@2 [c#4,e4] ~ [b3,d#4] ~@2 [a3,c#4] ~ [a3,c#4] c#4 [a3,c#4]!2 a3 [a3,c#4]", // D#m C#m B A
  M: "~@8 [e4,g#4] ~@2 [e4,g#4] ~ e4 g#4 ~", // E
  N: "[e4,g#4] ~@2 [d#4,f#4] ~ [c#4,e4] ~ b3 d#4 [b3,d#4] b3 [b3,d#4] d#4 [b3,d#4]!2 b3", // E D#m C#m B
  O: "~@3 d#4@3 c#4 ~@4 e4 d#4@2 c#4 ~",
})).s("gm_steel_drums").gain(0.26)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A B ~@4 C D ~@21 E ~@16 F G ~@9 H ~@10 I J@2 K L M ~ I N@2 ~@16 H ~@24 E ~@41
>`.pickRestart({
  A: "~@13 f#5 b5 c#6", B: "f#6 ~@15", C: "~@11 [f#4,f#5] [f#5,f#6] [d#5,d#6] [c#5,c#6] [a4,a5]",
  D: "[f#4,f#5] ~@6 [f#4,f#5] [e4,e5] [f#4,f#5] [c#5,c#6] [f#5,f#6] ~@4", E: "[b3,b5] ~@3 [b3,b5] ~@11",
  F: "~@8 f#6!2 e6 f#6 ~@4", G: "~@8 g#6!2 e6 g#6 ~@4", H: "~@8 [b3,b5] ~@3 [b3,b5] ~@3", I: "~@2 a4 b4",
  J: "[c#5@2 g#4@2 f#4@7 ~@5]/2", K: "~@8 e6 d#6 e6 d#6 e6 d#6 ~@2", L: "a4@4 e6 d#6 ~@2 a4@4 g#4@4, ~ b4 ~@2",
  M: "f#4", N: "[a4@4 g#4@4 f#4@23 ~]/2",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.6)

// other · woodblock
const woodblock = note("<A@5 B A@24 C D@28 A@11 E D@2 F A@3 E F A@41 C D@39 F ~>".pickRestart({
// … 86 more lines

More by Lionel Richie