Strudelify

Sweet Love

Lionel Richie

KeyD♭ majorTempo101 bpm
0:00/0:00
// Sweet Love — RICHIE LIONEL
// 101 bpm, 4/4, key Db 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: duplicate parts dropped: ch 15 acoustic bass (copy of ch 2 slap bass 1)
// note: Full arrangement: all 88 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(101/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 · clavinet
const clavinet = note(`<
  A@8 B C@2 D@2 E@2 F G H@4 I@4 J@5 K@8 L@3 M@5 N@6 O@3 P@2 Q@3 R@6 S@4 T@4 U@4 V W@8 ~
>`.pickRestart({
  A: "[~@27 [gb2,f3,gb3,bb3,db4]@18 ~@3 [db2,gb3,bb3]@4 gb2@4 [f3,ab3,c4,eb4]@26 ~@2 [f3,ab3,c4,eb4]@4 db3@4 ~ [gb2,f3,gb3,bb3,db4]@19 ~ [db2,f3,gb3,bb3,db4]@4 gb2@4 [f3,ab3,c4,eb4]@26 ~@2 [f3,ab3,c4,eb4]@4 db3@5 [gb2,f3,gb3,bb3,db4]@18 ~@2 [db2,f3,gb3,bb3,db4]@4 gb2@4 [db3,ab3,eb4]@29 [f3,ab3]@4 db3@4 [f3,gb3,bb3,db4]@8 ~@4 [ab3,c4,eb4]@7 ~@5 [eb2,eb3,gb3,bb3,db4]@9, ~@48 [f3,db4]@3 ~@5 db3@28 ~@37 db3@28 ~@37 [f3,c4]@26 ~@3 [c4,eb4]@3 ~@5 gb2@11 ~ [f2,f3]@10 ~@11]/8", // Gbmaj7 Gb Fm7 Gbmaj7 Fm7 Gbmaj7 Dbsus2 Fm …
  B: "~@4 [bb3,db4,eb4,gb4] ~@3 [ab2,bb3,db4,eb4,gb4]@17 ~@7, ~@2 ab2 ~@13", // Ebm7
  C: "[[gb2,f3,gb3,bb3,db4]@20 [db2,f3,gb3,bb3,db4]@4 gb2@4 [f3,ab3,c4,eb4]@25 ~@3 [f3,ab3,c4,eb4]@4 db3@4, ~@7 db3@7 ~@2]/2", // Gbmaj7 Fm7
  D: "[[gb2,f3,gb3,bb3,db4]@19 ~ [db2,f3,gb3,bb3,db4]@4 gb2@4 [db3,f3,eb4]@28 [f3,ab3,c4,eb4]@4 db3@4, ~@28 [ab3,c4]@25 ~@11]/2", // Gbmaj7 Db Fm7 Ab
  E: "[[gb2,f3,gb3,bb3,db4]@20 [db2,f3,gb3,bb3,db4]@4 gb2@3 ~ [f3,ab3,c4]@26 ~@2 [f3,ab3,c4,eb4]@4 db3@4, ~@7 [db3,eb4]@7 ~@2]/2", // Gbmaj7 Fm Fm7 Dbsus2
  F: "[gb2,f3,gb3,bb3,db4]@11 ~ [f2,f3,ab3,eb4]@10 ~@2 [eb2,eb3,gb3,bb3,db4]@7 ~, ~@12 c4@7 ~@13", // Gbmaj7 Fm7 Ebm7
  G: "~@4 [ab2,eb3,gb3,bb3] ~@3 [eb3,gb3,bb3]@6 ~@2 ab3@4 bb3@4 gb4@4 ab3@3 ~, ~@8 ab2@23 ~", // Ebm
  H: "[ab4@8 f4@4 ab4@4 f4@4 eb4@4 ~@4 [c4,eb4]@18 ~@6 [c4,eb4,ab4]@5 ~@3 [bb3,db4,gb4]@20 ~@4 gb3@3 ~ [f3,ab3]@4 [gb3,bb3]@19 ~@5 gb3@4 [bb3,db4]@4 gb3 ~@3, ~@24 ab4@23 ~@81]/4", // Cm Ab Gb Fm Gb Bbm
  I: "[[db4,f4,ab4]@19 ~ [db4,f4,ab4]@2 ~@6 [c4,eb4,ab4]@22 ~@2 [c4,eb4,ab4]@4 ~@4 [bb3,db4,gb4]@19 ~@5 gb3@4 ab3@3 ~ [gb3,bb3,db4]@29 ~@7]/4", // Db Ab Gb
  J: "[[f4,ab4]@8 f4@2 ab4@4 f4@2 ~@4 f4@6 ~@2 [c4,eb4,ab4]@22 ~@2 [c4,eb4,ab4]@4 ~@4 [b3,eb4,gb4]@29 ~@3 [gb3,bb3,db4,f4]@61 ~@7, db4@13 ~@67, ~@16 ab4@9 ~@135]/5", // Fm Ab B Gbmaj7
  K: "[~@15 bb4@4 bb3@4 ~@5 [ab3,c4,eb4]@24 ~@3 ab4@4 db3@4 [f3,gb3,bb3,db4]@25 ~@3 [f3,ab3,c4,eb4]@31 db3@4 ~@4 bb3@4 bb4@4 ~@8 bb4@5 ~@3 [ab3,c4,eb4,ab4]@25 ~@3 [ab3,c4,eb4,ab4]@4 db3@4 ~@3 bb3@4 bb4@5 ~@7 bb4@5 ~@4 [c4,f4]@25 ~@2 [ab3,c4,eb4,f4]@4 db3@3 ~ gb2@3, ~@27 f3@25 ~@74 gb2@25 ~@3 db3@28 ~@8 gb2@25 ~@2 [db3,ab3]@28 ~@11, ~@138 bb3@13 ~@51 bb3@13 ~@41, ~@142 db4@8 ~@56 db4@8 ~@3 eb4@25 ~@14]/8", // Ab Gbmaj7 Fm7 Ab F5 Fm7 Db5
  L: "[~ bb3@4 bb4@4 ~@8 bb4@5 ~@3 [db3,f3,ab3,c4,eb4]@29 ~@6 [gb2,f3,gb3,bb3,db4]@10 ~@2 [f2,f3,ab3,c4]@9 ~@3 [eb2,eb3,gb3,bb3,db4]@9 ~@3, ~@3 bb3@4 ~@25, ~@13 db4@8 ~@51 eb4@5 ~@19]/3", // Dbmaj7 Gbmaj7 Fm Ebm7
  M: "[[ab2,eb3,gb3,bb3,db4] ~@3 [ab2,eb3,gb3,bb3,db4]@8 ab3@4 bb3@4 db4@6 ~@2 f4@18 ~ [ab3,db4,f4]@5 ~@4 [ab3,c4,eb4]@21 ~@2 [ab3,c4,eb4]@5 ~@3 [gb3,b3,eb4]@21 ~@3 [gb3,b3,eb4]@5 ~@3 [gb3,bb3,db4]@41, ~@27 [ab3,db4]@18 ~@115]/5", // Ebm7 Db Ab B Gb Db5
  N: "[~@26 [bb3,eb4,g4]@19 ~ [bb3,eb4,g4]@5 ~@3 [bb3,d4,f4]@22 ~@2 [bb3,d4,f4]@4 ~@4 [ab3,c4,eb4]@26 ~ [ab3,c4] eb4 ~@2 [ab3,c4,eb4]@28 ~@8 [bb3,eb4,g4]@19 ~ [bb3,eb4,g4]@4 ~@4 [bb3,d4,f4]@11]/6", // Eb Bb Ab Eb Bb
  O: "[~@12 [bb3,d4,f4]@4 ~@4 [ab3,c4,eb4]@26 ~@2 eb4 ~@3 [ab3,c4,eb4]@32 ~@8 eb4@4]/3", // Bb Ab
  P: "[bb4@4 eb4@14 ~ bb4@26 ~@6 eb4@8 ab3@5]/2",
  Q: "[~@3 eb4@8 ab3@4 eb4@4 ab3@4 c4@18 ~@2 c4@4 ab3@8 eb4@19 bb4@5 eb4@3 d4@14]/3",
  R: "[~@10 bb4@4 d3@4 [eb3,ab3,c4,eb4]@24 ~@3 bb3 g3 ~@3 [eb3,ab3,c4]@19 eb4@4 c4@4 ab3@4 c4@4 ~ g3@23 ~@4 [bb3,d4,f4]@28 ~@4 [ab3,c4,eb4]@47, ~@85 [bb3,eb4]@23 ~@84]/6", // Ab Bb Ab Eb5
  S: "[~@8 ab3@4 c4@4 eb4@3 ~ [g3,bb3,eb4]@23 ~@5 [bb3,d4,f4]@28 ~@4 [c4,eb4]@42 ~ eb4@4 ab3, ~@4 eb4@7 ~@68 ab3@42 ~@7]/4", // Eb Bb Cm
  T: "[~@3 c4@4 ~@4 c4@4 ab3@4 eb4@31 ~@8 bb4@4 ~@4 f4@4 bb4@4 d3@4 ab2@27 ~ [eb3,eb4]@4 [ab3,c4,eb4,ab4]@18, ~@7 eb4@7 ~@48 d4@8 ~@58]/4", // Eb Ab
  U: "[~@2 c4@4 eb4 ~@2 eb4@4 c4 ~@3 g4@16 bb4@4 g4@4 bb4@2 ~@2 [d4,f4,bb4]@28 ~@4 [c4,eb4,ab4]@51, ~@17 eb4@25 ~@86, ~@17 bb4@14 ~@97]/4", // Bb Ab
  V: "~ [eb4,g4], ~@16 bb4@13 ~@3", // Eb
  W: "[bb4@4 g4@4 bb4@2 ~@2 [d4,f4,bb4]@29 ~@2 [c4,eb4,ab4]@60 ~@8 g4@16 bb4@4 g4@4 bb4@2 ~@2 [d4,f4,bb4]@29 ~@2 [c4,eb4,ab4]@61 ~@25, ~@111 eb4@24 ~@121, ~@111 bb4@13 ~@132]/8", // Bb Ab Bb Ab
})).s("gm_clavinet").gain(0.15).pan(0.9)

// bass · slap bass 1
const bass = note(`<
  A B C D E@2 F@2 G H ~ I J I ~ K L M N@3 O@4 P@5 Q R@2 S@2 T D U D V@2 W@4 X@2 Y@2 Z AA AB AC AD AE@7 AF@8 AG@6 AH AI
  AJ AK AL AM AN AO@3 AP AQ ~
>`.pickRestart({
  A: "~@27 gb2@3 ~@2", B: "~@15 db2@3 ~@6 db3@3 ~@5", C: "~@28 gb2@3 ~", D: "~@17 db2@3 ~@5 db3@3 ~@4",
  E: "[~@30 gb2@4 ~@16 db2@3 ~@5 db3@3 ~@3]/2", F: "[~@31 gb2@10 ~@2 f2@9 ~@3 eb2@9]/2", G: "~@4 ab2 ~@3 ab2@17 ~@7",
  H: "gb2@3 ~@17 db2@4 ~@4 db3@3 ~", I: "gb2@3 ~@17 db2@3 ~@5 db3@3 ~",
  J: "~@16 db3 eb3 db3 eb3 [db3,eb3] db3 eb3 db3 eb3 db3 [db3,eb3] eb3 db3 ~@3", K: "gb2@11 ~ f2@10 ~@2 eb2@8",
  L: "~@4 ab2 ~@3 ab2@21 ~@3", M: "db2@8 db3@4 db2 ~@3 db2 ~@3 db2@4 ~@4 c2@4",
  N: "[~@4 c2@4 c2@8 ~@4 c2@4 ~@4 gb1@12 gb2 ~ gb2 ~@3 gb1 ~ gb1 ~@3 gb1@4 db2 ~@3 gb1@7 ~ gb1@4 gb2@5 ~ gb1 ~ gb1@4 gb2@2 ~@2 ab1 ~ ab1@2 ab2@3 ~]/3",
  O: "[db2@10 ~@4 db2 ~ db2 ~@3 db2@4 ~@4 c2@12 c3@3 ~@3 c2 ~ c2 ~@3 c2@5 ~@3 gb1@12 gb2 ~ gb2 ~@3 gb1 ~ gb1 ~@3 gb1@4 db2@4 gb1@8 gb1@4 gb2@5 ~ db2 ~ gb1 ~@3 gb2@4 ab1 ~ ab1 ~ ab2@4]/4",
  P: "[db2@12 ~@2 db2 ~ db2 ~@3 db2@4 ~@4 c2@11 ~ c3@5 ~ c2 ~ c2 ~@3 c2@4 ~@4 b1@12 b2@5 ~ b1 ~ b1@2 ~@2 b1@4 ~@4 gb1@66 ~@2]/5",
  Q: "gb2@3 ~@16 db2@3 ~@5 db3@2 ~@3",
  R: "[~@7 eb3@2 f3@2 ~@4 eb3@8 ~@4 db3 ~@3 gb2@3 ~@17 db2@3 ~@5 db3@3 ~@2, ~@15 db3 ~@48]/2",
  S: "[~@16 eb3@2 ~@4 db3@4 ~@4 gb2@4 ~@16 db2@3 ~@5 db3@3 ~@3, ~@15 db3@2 ~@47]/2",
  T: "~@6 eb3@2 f3@2 ~@4 eb3@11 ~ db3 ~@3 gb2@2", U: "~@5 db3@2 eb3@2 ~@4 db3@11 ~ db3 ~@3 gb2@3",
  V: "[~@5 eb3@2 f3@2 ~@4 eb3@11 ~@4 gb2@9 ~@3 f2@9 ~@3 eb2@9 ~@3]/2",
  W: "[ab2 ~@3 ab2@21 ~@3 db2@8 db3@6 db2 ~ db2 ~@3 db2@5 ~@3 c2@11 c3@6 ~ c2!2 ~@3 c2@4 ~@4 b1@12 b2@4 b1@4 b2@4 b1@3 ~@5 gb1@9]/4",
  X: "[~@3 gb1@4 gb1@4 gb1@4 gb1@4 gb1@4 gb1@4 gb1@3 gb1@4 ~ gb1@3 gb1@4 g1@4 g1@4 ab1@4 ab1@4 bb1@6]/2",
  Y: "[~@2 bb2@6 bb1 ~ bb1@3 ~ bb1@8 bb1@8 bb1@4 bb1@7 ~ bb1@8 bb1@4 ab1@10]/2",
  Z: "~@2 ab2@6 ab1!2 ~@3 ab1@4 eb2@2 ~@2 ab1@8 ab1@3", AA: "~ ab2@5 ~ ab1 ~ ab1@2 ~@2 ab1@4 c2@4 d2@4 eb2@7",
  AB: "~ eb3@6 eb2 ~ eb2@4 eb2@5 ~@3 d2@11", AC: "~ d3@5 ~ d2 ~ d2@4 d2@7 ab1@12",
  AD: "ab2@6 ab1 ~ ab1@4 ab1@4 eb2@2 ~@2 ab1@8 ab1@4",
  AE: "[ab2@8 ~@4 ab1@3 ~ bb1@2 c2@2 d2@4 eb2@27 bb1@32 ab1@28 eb2@4 ab1@35 ~ eb2@27 bb1@31 ~ ab1@14]/7",
  AF: "[~@14 eb2@4 ab1@35 eb2@28 bb1@32 ab1@27 eb2@4 ab1@35 ~ eb2@28 bb1@31 ab1@17]/8",
  AG: "[~@11 eb2@4 ab1@35 ~ eb2@27 bb1@32 ab1@28 eb2@4 ab1@8 ab1@4 ab1@4 ab1@4 ab1@4 ab1@4 ab1@3 ab1@4 ~ eb2@14]/6",
  AH: "~ eb2@4 eb2@4 eb2@4 d2@4 ~@4 d2@4 d2@5 ~@2", AI: "~ d2@2 ~@2 d2@4 ~@4 ab1@5 ~@3 ab1@4 ab1@4 ab1@3",
  AJ: "~ ab1 ~@3 ab1@4 eb2@4 ab1@5 ~@3 ab1@4 ab1@7", AK: "ab1 ~@4 ab1@3 bb1@4 c2@4 eb2@15 ~",
  AL: "eb2@4 eb2@4 eb2@4 d2@3 ~@5 d2@4 d2@4 ~@4", AM: "d2@2 ~@2 d2@4 ~@4 ab1@5 ~@3 ab1@3 ab1@9",
  AN: "~@3 ab1@4 eb2@4 ab1@7 ~ ab1@3 ~ ab1@8 ~",
  AO: "[~@3 ab1@4 bb1@3 ~ bb1@4 ~@4 eb3 ~@3 eb3@7 ~ eb2@3 ~ eb2@4 eb2@4 d2@5 ~@3 d2@3 ~ d2@6 ~@2 d2@2 ~@2 d2@5 ~@3 ab1@9 ~@2 ab1@9 ~, ~@5 eb2@5 ~@22]/3",
  AP: "~@2 ab1@4 eb2@4 ab1@7 ~ ab1@3 ~ ab1@8 ~@2", AQ: "~@2 ab1@4 bb1@3 ~ bb1@5 ~@17",
})).s("gm_slap_bass_1").gain(0.38)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  A@2 B@2 C@2 D@2 E F G H I J K L M N@4 O@4 P@5 Q R@2 S@2 T@2 U@2 V@2 W@5 X@5 Y@4 Z@2 ~ AA AB@3 AC AD AE AF AG AH AI@2
  AJ AK AL AM AN@7 AO@6 ~
>`.pickRestart({
  A: "[~@27 [bb3,db4,f4]@8 [f4,bb4]@3 ~@26]/2", // Bbm Bb5
  B: "[~@8 [c4,f4,ab4]@2 ~@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@4 [c4,f4] ~@3 db4@8 ~ [db4,f4]@2 ~@25, ~@16 ab3@9 ~@3 bb3@11 ~@25, ~@16 ab4 ~@19 bb4@3 ~@25]/2", // Fm F5 Fm F5 Db
  C: "[~@9 [c4,f4,ab4]@2 ~@2 [f4,ab4]@2 [f4,ab4]@2 [c4,f4,ab4]@2 ~ c4 [ab3,c4,f4,ab4]@5 ~@4 f4@8 [f4,bb4]@2 ~@24, ~@13 c4@4 ~@2 [f4,ab4]@2 ~@9 [bb3,db4]@11 ~@23]/2", // Fm Bb5 Fm Bbm
  D: "[~@10 ab4 f4 ~@3 [c4,f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [ab3,c4,f4,ab4]@4 [c4,f4] ~@4 bb4@8 ~@4 ab4@9 ~@3 [bb3,db4,gb4]@8, ~@19 c4@4 ~@8 [bb3,db4,f4]@9 ~@3 [c4,eb4]@9 ~@12]/2", // Fm F5 Gb Bbm Cm
  E: "~@4 [bb3,db4,gb4] ~@3 [bb3,db4,gb4]@14 ~@6 [bb3,db4,gb4,bb4] ~@3", F: "f4@4 [f4,bb4] ~@11, [bb3,db4]@11 ~@21",
  G: "~@12 [f4,ab4] ~@3 [c4,f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [ab3,c4,f4,ab4]@4 [c4,f4] ~@3, ~@5 c4 ~@2", // Fm F5
  H: "f4@7 ~ [f4,bb4]@2 ~@22, [bb3,db4]@11 ~@21", // Bb5 Bbm
  I: "~@12 [c4,f4,ab4] ~@3 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 ~@2 [c4,f4,ab4]@4 ~@4, ~@8 ab3@3 [c4,f4,ab4] ~@4, ~@23 ab3@5 ~@4", // Fm
  J: "[bb3,db4,f4]@7 ~ [db4,f4,bb4]@2 ~@22", // Bbm
  K: "~@6 [c4,f4,ab4] ~ [f4,ab4]!2 [c4,f4,ab4]!2 [c4,f4,ab4]@2 ~@2, ~@4 ab3@3 ~, ~@4 c4 ~@3", // Fm
  L: "[bb3,db4,f4,bb4]@2 ~ [ab3,c4,eb4,ab4]@2 ~ [gb3,bb3,db4,gb4]@2", M: "~@2 [bb3,db4,gb4] ~ [gb3,bb3,db4,gb4]@11 ~",
  N: "[[db4,f4,ab4,db5]@24 [f4,ab4] ~@3 [c4,eb4,c5]@28 ~@4 [bb3,db4,gb4,bb4]@24 ~@4 [ab3,db4,f4]@4 [bb3,db4,gb4]@28 ~@8, ~@28 ab4@23 ~@77]/4", // Db Fm Cm Gb Db Gb
  O: "[[db4,ab4,db5]@24 [f4,ab4] ~@3 [c4,eb4,c5]@28 eb4 ~@3 [bb3,db4,gb4,bb4]@24 ~@4 [ab3,db4]@4 [bb3,db4,gb4]@29 ~@7, f4@5 ~@2 ab4@6 ~@19]/4", // Db5 Fm Cm Gb Db5 Gb
  P: "[[f4,ab4,db5]@24 [f4,ab4] ~@3 [c4,eb4,ab4,c5]@28 ~@4 [b3,eb4,gb4,b4]@28 [eb4,gb4] ~@3 [bb3,db4,gb4,bb4]@65 ~@3, db4 ~@7]/5", // Db Fm Ab B Ebm Gb
  Q: "f4@7 ~ bb4@3 ~@21, [bb3,db4]@11 ~@21, ~@7 f4@3 ~@22", // Bbm
  R: "[~@11 [c4,f4,ab4] ~@3 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@4 [c4,f4] ~@3 db4@8 [db4,f4,bb4]@2 ~@23, ~@19 ab3@9 ~@3 bb3@11 ~@22, ~@19 ab4 ~@44]/2", // Fm F5 Fm F5 Bbm
  S: "[~@10 [c4,f4,ab4] ~@4 [f4,ab4] [f4,ab4]@2 ~ ab4 ~ c4 [ab3,c4,f4,ab4]@5 ~@4 f4@7 [f4,bb4]@2 ~@24, ~@14 c4@4 [c4,f4]@2 [f4,ab4]@2 ~@8 [bb3,db4]@11 ~@23]/2", // Fm Bb5 F5 Fm Bbm
  T: "[~@10 [f4,ab4] ~@3 [c4,f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [f4,ab4]@2 [ab3,c4,f4,ab4]@4 [c4,f4] ~@3 f4@7 [f4,bb4]@2 ~@25, ~@18 c4@4 ~@8 [bb3,db4]@11 ~@23]/2", // Fm F5 Bb5 Bbm
  U: "[~@9 [c4,f4,ab4] ~@3 [c4,f4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [c4,f4,ab4]@2 [ab3,c4,f4,ab4]@4 ~@4 [bb3,db4,f4]@7 ~ [db4,f4,bb4]@2 ~@25, ~@13 ab3@8 ~@43, ~@13 ab4 ~@50]/2", // Fm F5 Fm Bbm
  V: "[~@9 [c4,f4] ~@3 ab4 ~ f4@2 ~@2 [c4,f4] ~ ab4@3 ~@5 [f4,bb4]@8 ~@4 ab4@8 ~@4 [bb3,db4,gb4]@9 ~@2, ~@8 ab4@2 ~@2 ab3@12 ~@4 [bb3,db4]@8 ~@4 [ab3,c4,eb4]@8 ~@4 gb3@9 ~@3, ~@13 c4@4 [c4,f4,ab4]@2 ~ [c4,f4]@4 ~@40, ~@13 f4@2 ~@49, ~@7 ab4 ~ ab4 ~@22]/2", // F5 Bb5 Gb Bbm Ab Fm F5
  W: "[[bb3,db4,gb4] ~@3 [bb3,db4,gb4]@22 ~@2 [f4,ab4,db5]@24 [f4,ab4,db5] ~@3 [ab4,c5]@27 [eb4,ab4,c5] ~@3 [eb4,gb4,b4]@28 [eb4,gb4,b4] ~@3 [bb3,db4,gb4,bb4]@41, ~@27 db4@26 ~@2 [c4,eb4]@29 ~@76]/5", // Gb Db Ab B Gb Cm
  X: "[~@26 [bb3,eb4]@24 [eb4,g4] ~@3 [bb3,d4,f4]@28 [d4,f4] ~@3 [ab3,c4,eb4]@24 ~@4 eb4 ~@3 eb4@29 ~@6 [bb3,eb4,g4]@7, ~@26 g4@20 ~@67 [g3,bb3]@2 ~@2 [ab3,c4]@29 ~@14]/5", // Eb5 Eb Bb Dm Ab Eb Gm Ab
  Y: "[~@17 [bb3,eb4] ~@3 [bb3,d4,f4]@27 [bb3,d4,f4] ~@4 eb4@24 ~@3 [g3,bb3,eb4] ~@4 ab3@33 ~@10, ~@52 [ab3,c4]@24 ~@8 [c4,eb4]@33 ~@11]/4", // Eb5 Bb Eb Ab Cm
  Z: "[~@19 bb3 ~ c4 bb3@16 ~ c4 ~@11 bb3@2 c4 bb3@8 ~@2]/2", AA: "~@22 eb4@8 bb3 ~",
  AB: "[~@10 c4@2 ~@6 bb3@22 ~@10 eb3@20 g3@4 c3 ~@7 eb3@7 f3@4 ~@3]/3",
  AC: "~ c3 ~@3 f3 ~ g3@6 eb3@3 ~ c3 ~@7 g3 ~@3 bb3@2 ~", AD: "~@5 c4@3 ~@21 c4@2 bb3",
  AE: "~@5 bb3@3 ~@18 c3@2 ~ eb3@3, ~@25 bb2@2 ~@5", AF: "c3@2 ~@15 eb3@11 ~@4",
  AG: "bb3 ~@3 c4@2 bb3@2 ~@4 c4@4 c4@4 bb3@4 ~@8", AH: "~@8 c4 ~ c4 ~ c4 ~@3 c4@2 bb3@10 ~@4",
  AI: "[~@23 bb2@2 ~@2 eb3@3 ~ eb3@14 ~@10 bb2 b2 c3@2 eb3 ~@4, ~@13 c3 ~@18]/2",
  AJ: "~@3 f3@2 eb3@2 c3 ~@3 c4@2 bb3 ~@5 bb3 ~@7 bb3 ~@4", AK: "~@13 c4 bb3 ~",
  AL: "~@2 bb3 ~@7 bb3 ~@3 g3 ~@7 bb2@2 c3@2 eb3 ~@3 c3 ~", AM: "~@2 eb3@2 ~@18 bb2@2 c3@2 eb3 ~@3 c3 ~",
  AN: "[~@2 eb3@2 ~@14 g4@23 [eb4,g4] ~@3 [bb3,d4,f4]@28 [bb3,d4,f4] ~@3 [ab3,c4,eb4]@23 ~@5 [bb3,eb4] ~@3 [c4,eb4]@30 ~@5 [bb3,eb4,g4]@24 [eb4,g4] ~@3 [bb3,d4,f4]@27 ~ [bb3,d4,f4] ~@3 c4@20, ~@17 [bb3,eb4]@25 ~@66 ab3@30 ~@65 ab3@21]/7", // Eb Bb Ab Eb5 Cm Eb Bb Eb5
  AO: "[~@7 [g3,bb3] eb4 ~@2 [ab3,c4,eb4]@30 ~@6 [bb3,eb4,g4]@24 [eb4,g4] ~@3 [bb3,d4,f4]@27 [bb3,d4] f4 ~@3 [c4,eb4]@24 ~@3 [g3,bb3,eb4] ~@3 [ab3,c4,eb4]@28 ~@26, ~@53 ab3@12 ~@31]/6", // Gm Ab Eb Bb Cm Eb Ab
})).s("gm_electric_guitar_jazz").gain(0.12).pan(0.1)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@2 A@2 B@2 C D E F G ~@2 H ~@2 I ~@8 J K L ~@3 M@2 N@2 O ~@2 P ~@2 Q ~@14 R@2 ~@2 S T ~ U V W X ~@2 Y Z@2 AA ~@4 AB
  ~@2 AC ~@7
>`.pickRestart({
  A: "[~@7 ab3 ~@6 f4@4 ~@14]/2", B: "[~@13 ab3@8 ~@9 bb4@7 ~@27]/2", C: "~@11 c4 ~@2 ab3@8 ~@10",
  D: "~@11 ab3@9 ~@3 gb3@9", E: "~@4 gb3 ~@3 gb3@14 ~@10", F: "bb4@7 ~@25", G: "~@12 c4 ~@3 ab3@8 ~@8",
  H: "~@4 bb3 ~@11", I: "~@2 gb3 ~@13", J: "~@24 [db4,db5] ~@7", K: "~@24 ab4 ~@7", L: "~@24 b4 ~@7",
  M: "[~@17 ab3@2 ~@12 f4@8 ~@25]/2", N: "[~@14 ab3@8 ~@9 bb4@7 ~@26]/2", O: "~@10 c4 ~@3 ab3@8 ~@10",
  P: "~@5 bb3@2 ~@25", Q: "gb3 ~@31", R: "[~@11 g3@2 ~@18 g3@2 ~@31]/2", S: "~@10 g3@4 f3@3 ~@15",
  T: "~@14 eb3 ~@14 g3@3", U: "~ g3@2 ~@29", V: "~ g3@2 ~@6 g3 ~@3 g3 ~@18", W: "~@2 eb3 ~@13",
  X: "~@8 g3@2 ~@14 g3@3 ~@5", Y: "~@31 c3", Z: "[~@15 g3 ~@7 g3@2 ~@6 g3@2 ~@2 c4@4 ~@23 g3 ~]/2", AA: "~@3 g3 ~@12",
  AB: "~@8 g3 ~@23", AC: "~@11 eb4@21",
})).s("gm_electric_guitar_jazz").gain(0.06).pan(0.1)

// chords · ocarina
const ocarina = note(`<
  A@3 B@2 C@4 ~@7 D E@3 D F@2 G D H@5 ~@4 I@2 J@2 K@2 L M@5 N@4 O@4 ~@20 P@4 Q@2 R@4 S@2 ~@2
>`.pickRestart({
  A: "[~@31 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 ~ [f3,ab3,c4]@4 [eb3,gb3,bb3]@4 [f3,ab3,db4]@16 [db3,f3,ab3]@12 ~@12]/3", // Gb Fm Ebm Db
  B: "[~ [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [f3,ab3,c4]@4 [eb3,gb3,bb3]@4 [bb3,db4]@4 [f3,ab3,db4]@24 ~@11]/2", // Gb Fm Ebm Bbm Db
  C: "[~@2 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [f3,ab3,c4]@4 [eb3,gb3,bb3]@4 [f3,ab3,db4]@12 ~ [ab3,db4,f4]@4 [f3,ab3,db4]@4 [db3,f3,ab3]@12 [db3,f3,ab3]@4 [f3,ab3,db4]@4 [gb3,bb3,db4]@8 [f3,bb3,db4]@4 [bb3,db4]@4 [gb3,eb4]@20 ~@25]/4", // Gb Fm Ebm Db Gb Bbm Ebm
  D: "~@4 ab3 bb3 db4@2", E: "[[db4,f4,ab4]@7 [c4,eb4,ab4]@7 [c4,eb4,ab4] [bb3,db4,gb4]@7 ~@2]/3",
  F: "[[db4,f4,ab4]@7 [c4,eb4,ab4]@7 [c4,eb4,ab4]!2]/2", G: "[bb3,db4,gb4]@3 ~",
  H: "[[db4,f4,ab4]@28 [c4,eb4,ab4]@32 [b3,eb4,gb4]@32 [bb3,db4,gb4]@59 ~@9]/5", // Db Ab B Gb
  I: "[~ [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [gb3,bb3,db4]@2 [f3,ab3,c4]@2 [eb3,gb3,bb3]@2 [f3,ab3,db4]@8 [db3,f3,ab3]@7 ~@4]/2", // Gb Fm Ebm Db
  J: "[~@2 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@8 [gb3,bb3,db4]@3 [f3,ab3,db4]@32 ~@3]/2", // Gb Db
  K: "[~@5 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [gb3,bb3,db4]@4 [f3,ab3,db4]@4 [db3,gb3,bb3]@4 [f3,ab3,db4]@16 [eb3,ab3,c4]@8 [ab3,bb3,db4]@8 [f3,bb3,db4]@4 [gb3,bb3,db4]@3]/2", // Gb Db Gb Db Ab Bbm7 Bbm Gb
  L: "~ [gb3,bb3,db4]@3 [f3,ab3,db4]@4 [f3,ab3,db4]@4 [f3,ab3,db4]@4 [c4,eb4]@8 [db4,eb4,gb4]@4 [db4,eb4,gb4]@4", // Gb Db Cm Ebm7
  M: "[~@12 ab3@4 bb3@4 db4@8 [db4,f4,ab4]@28 [c4,eb4,ab4]@31 [b3,eb4,gb4]@28 ~@4 [gb3,db4,gb4]@41]/5", // Db Ab B Gb5
  N: "[~@13 [eb4,g4,bb4]@14 [d4,f4,bb4]@11 ~@3 [d4,f4,bb4]@2 [d4,f4,bb4]@2 [c4,eb4,ab4]@13 ~@6]/4", // Eb Bb Ab
  O: "[~@9 bb3@4 c4@4 eb4@6 ~@2 [eb4,g4,bb4]@28 [d4,f4,bb4]@22 ~@6 [d4,f4,bb4]@4 [d4,f4,bb4]@3 [c4,eb4,ab4]@26 ~@14]/4", // Eb Bb Ab
  P: "[~@18 [eb4,g4,bb4]@27 [d4,f4,bb4]@22 ~@6 [d4,f4,bb4]@4 [d4,f4,bb4]@4 [c4,eb4,ab4]@26 ~@21]/4", // Eb Bb Ab
  Q: "[bb3@2 c4@2 eb4@3 ~ [eb4,g4,bb4]@14 [d4,f4,bb4]@10]/2", // Eb Bb
  R: "[~@8 [d4,f4,bb4]@4 [d4,f4,bb4]@4 [c4,eb4,ab4]@26 ~@21 bb3@4 c4@4 eb4@6 ~@2 [eb4,g4,bb4]@28 [d4,f4,bb4]@21]/4", // Bb Ab Eb Bb
  S: "[~@7 [d4,f4,bb4]@3 [d4,f4,bb4]@4 [c4,eb4,ab4]@26 ~@24]/2", // Bb Ab
})).s("gm_ocarina").gain(0.07).pan(0.3)

// other · string ensemble 1
const string_ensemble_1 = note("<~@28 A B C ~@8 D E F@4 G H@4 I@5 ~@19 J@4 K@2 L M@3 N O@2 ~>".pickRestart({
  A: "~@12 [db5,db6] ~@11 [db5,db6] ~@7", B: "~@4 [db5,db6] ~@15 [db5,db6] ~@3 [db5,db6] ~ [db5,db6] ~ [db5,db6] ~@3",
  C: "[db5,db6] ~@31", D: "~@28 bb4 ~ c5 ~", E: "db5 ~@7 db5 ~ eb5 ~ f5 ~@7 eb5 ~ f5 ~ gb5@4 ~@4",
  F: "[~@4 [gb4,bb4]@21 ~@2 db6@28 eb6@24 f6@4 eb6@3 ~ eb6@29 ~@2 db6@10]/4", // Gb
  G: "~@3 [gb3,gb4] ~@3 db4@2 ~ gb5 gb4 ~@3 gb3 ~@2 db5 db4 ~@2 [gb4,gb5] ~@3 [gb3,gb4]@2 ~@2 [db4,db5] ~, ~@7 db5 ~@6 gb4@2 ~@16", // Gb Db
  H: "[~@2 gb3@2 ~@2 [gb3,gb4]@2 ~@2 [g3,g4]@2 ~@2 [g3,g4]@2 ~@2 ab3@2 ~@2 [ab3,ab4] ~@3 bb3@20 g5 ~ ab5 ~ bb5@4 bb5@23 c6@4 d6@3 ~ eb6@24 d6@4 eb6@2 f6@2 eb6@11, ~@2 gb4 ~@15 ab4 ~@109]/4", // Gb G Ab
  I: "[~@5 c6 ~ d6 ~ eb6@2 d6@2 c6 ~ bb5@2 c6@2 bb5@2 ab5@2 g5 ~ g5@19 f5@4 eb5@4 ~@24 eb6@3 ~ d6@3 ~ eb5@27 ~ f5@4 eb5@35 ~@9, ~@13 f5@8 ~@19]/5",
  J: "[~@18 g5@19 g5@2 ab5@2 bb5@3 ~ f5@24 c6@4 d6@4 eb6@23 ~ d6@2 ~@2 eb6@2 ~ eb6@15 ~ c6@2 d6@2, ~@107 f6@2 ~@19]/4",
  K: "[eb6@2 d6@2 c6@2 bb5@2 c6@2 bb5@2 ab5@2 g5@2 g5@19 ~ c6@2 ~@2 eb6@2 ~@2 d6@20]/2",
  L: "~@3 c6@3 ~ bb5@3 ~@2 c6@20",
  M: "[~@3 d6@2 ~@2 eb6@2 f6@2 c6@17 ~ bb5@2 c6@2 bb5@2 ab5@2 g5@2 ab5@2 g5@2 f5@2 eb5@2 g5@20 ~@3 eb6@2 ~@2 d6@22, ~@67 c6@5 ~@24]/3",
  N: "~ c6@2 bb5 ~ c6@11", O: "[~@2 d6@2 ~@2 eb6@2 f6@2 eb6@35 ~@19]/2",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.4)

// chords · brass section
const brass_section = note(`<
  A ~@8 B ~ C ~ D ~@2 E ~@2 F@2 ~@2 F@2 ~@2 G@3 H ~@2 I J I K L K ~@2 M ~@2 N@2 O@7 P@2 ~@18 Q@7 R@7 ~
>`.pickRestart({
  A: "~@27 [bb4,bb5]@3 ~@2", B: "[db5,f5] ~@19 [db5,f5] ~@7 [c5,eb5] ~@3",
  C: "[db5,f5] ~@19 [db5,f5] ~@7 c5@2 ~@2, ~@28 eb5 ~@3", D: "f5@2 ~@18 [db5,f5] ~@7 c5@2 ~@2, db5 ~@27 eb5 ~@3",
  E: "~@3 gb4 [bb4,db5] ~@3 [bb4,db5]@24, ~@7 gb4@25", F: "[~@7 [gb4,bb4,db5]@9]/2", G: "[~@14 [db5,f5]@33 ~]/3",
  H: "[db5,f5]!2 ~@30", I: "~@30 [db5,f5] ~", J: "~@18 [db5,f5] ~@7 [c5,eb5] ~@5", K: "~@17 [db5,f5] ~@7 [c5,eb5] ~@6",
  L: "~@29 [db5,f5] ~@2", M: "[gb4,bb4,db5] ~@3 [gb4,bb4,db5]@24 ~@4", N: "[~@23 [bb4,db5,gb5]@37 ~@4]/2",
  O: "[~@26 [eb5,g5]@27 ~ [d5,f5]@28 ~@4 [c5,eb5]@28 ~@3 [c5,eb5]@28 ~@8 [eb5,g5]@26 ~@2 [d5,f5]@29 ~@2 [c5,eb5]@12]/7", // Eb Dm Cm Eb Dm Cm
  P: "[~@20 [c5,eb5]@33 ~@11]/2", // Cm
  Q: "[~@14 [ab4,c5,eb5]@35 [eb5,g5]@25 ~@3 [d5,f5]@26 ~@2 [d5,f5] ~@3 [c5,eb5]@27 ~ [d5,f5] ~@3 [c5,eb5]@33 ~@2 [eb5,g5]@26 ~@2 [d5,f5]@20]/7", // Ab Eb Dm Cm Dm Cm Eb Dm
  R: "[~@8 [d5,f5] ~@3 [c5,eb5]@27 [d5,f5] ~@3 [c5,eb5]@33 ~@3 [eb5,g5]@25 ~@3 [d5,f5]@26 ~ [d5,f5] ~@3 [c5,eb5]@25 ~@3 [d5,f5] ~@3 [c5,eb5]@31 ~@23]/7", // Dm Cm Dm Cm Eb Dm Cm Dm …
})).s("gm_brass_section").gain(0.38).pan(0.6)

// other · french horn
const french_horn = note("<~@15 A B ~@4 C@4 D@5 ~@4 E ~ F ~ G H@2 I@5 ~ J@3 K L@4 ~@19 M N@4 O@8 ~>".pickRestart({
  A: "db4@3 c4@3 bb3@2", B: "~@3 bb3 ~@4 bb3@22 ~@2",
  C: "[~@4 f4 ~@2 f4@2 ~@2 ab4@8 gb4@3 ~@2 f4@2 ~ eb4@22 ~@7 c4@2 ~@2 db4@28 ~@4 db4@33 ~@3, ~@5 gb4 ~@58]/4",
  D: "[ab4@60 gb4@31 ~ gb4@63 ~@5]/5", E: "~@2 [db4,f4] ~@29", F: "~@2 [db4,f4] ~@2 [db4,f4] ~@26",
  G: "~ [db4,f4] ~@3 bb3 ~@3 bb3 ~@22", H: "[~@22 db4@2 ab3@4 bb3@12 ab3@12 gb3@11 ~, ~@21 c4@2 ~@41]/2",
  I: "[gb3@2 ~@2 gb3@21 ~@3 db4@27 c4@32 b3@32 bb3@36 ~@5]/5",
  J: "[~@6 g4@2 ab4@2 bb4@8 bb4@3 ~ bb4@16 c5@3 ~ bb4@7 ~ bb4@4 ab4@27 ~@8 ab3@7]/3", K: "~ eb4@16 ~@15",
  L: "[~@5 g4@2 ab4@2 bb4@43 ab4@25 ~@7 ab4@34 ~@10]/4", M: "~@17 g4@12 g4@3",
  N: "[~ bb4@4 ab4@4 g4@4 bb4@32 ab4@27 bb4@4 ab4@36 g4@12 g4@4]/4",
  O: "[bb4@4 ab4@4 g4@4 bb4@31 ab4@28 bb4@4 ab4@36 g4@15 bb4@4 ab4@4 g4@4 bb4@32 ab4@27 bb4@4 ~ ab4@33 ~@21]/8",
})).s("gm_french_horn").gain(0.22).pan(0.7)

// other · synth brass 2
const synth_brass_2 = note("<~@33 A ~@28 B@2 ~@24>".pickRestart({
  A: "~@23 f4@5 ~ c4 bb3@2, ~@14 [db4,eb4] ~", B: "[~@29 c6@2 bb5@2 g5@2 ~@2 bb5@14 ~@13]/2",
// … 173 more lines

More by Lionel Richie