Strudelify

When Your Lover Has Gone

Nat King Cole

KeyG minorTempo110 bpm
0:00/0:00
// When Your Lover Has Gone — Nat King Cole
// 110 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 107 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 · piano · "A.PIANO 1"
const piano = note(`<
  A B C D@5 E@2 F G@3 H I@2 J@2 K L@2 M N@2 O P@4 Q@5 R S T U@2 V W X@2 Y Z AA@2 AB AC@2 AD AE@3 AF AG@3 AH AI@2 AJ AK@2
  AL@2 AM@2 AN AO AP AQ@4 AR@2 AS AT@2 AU AV AW@2 AX AY AZ@3 BA BB@3 BC BD BE BF BG BH BI@2 BJ BK@4
>`.pickRestart({
  A: "~@7 a3@10 [b3,eb4,g4]@15, ~ f2@31, ~@3 [bb3,d4,f4]@5 ~@8", B: "~@3 [g3,bb3,c4,eb4] ~@3 [a3,c4,d4,f4]@9, f2",
  C: "~@6 g3@7 [bb3,db4,e4,g4,bb4]@19, f2, ~@5 [c4,d4,f4,a4]@8 ~@19", // Bbdim Dm7
  D: "[~@5 [g3,bb3,eb4,f4]@8 db4 ~@10 gb4@6 ~@16 a4@3 [c4,d4,f4,a4]@7 ~ [a3,db4]@5 ~ f2@7 bb1@10 f2@6 eb2@2 ~ [e2,gb4]@5 ~@15 a4@3 ~@8 ab4@5 ~@12 g4@5 eb2@8 bb2@2 ~ d2@4 ~ db2@2, f2@30 [bb2,a3]@26 ~@57 [g3,f4]@13 ~@16 [f3,db4,g4]@17 ~, ~@13 [eb3,a3,g4]@17 ~@8 bb1@18 [b1,ab4]@6 ~@32 eb2@32 [e2,db4,ab4]@16 ~@18, ~@15 d4@15 [c4,d4,f4]@19 ~@7 eb4@2 ~@4 [a3,c4,d4,g4]@25 ~ [ab3,d4]@5 ~ [g3,db4,f4]@18 [eb3,db4,a4]@14 ~@34]/5", // Eb Dm7 A Esus2 Bbmaj7 G7 Gm7b5 Am7b5 …
  E: "[~@6 [d4,bb4,d5]@2 g4 ~@8 e3@7 [db2,db5]@5 ~ [e3,bb3,e4,a4]@10 [d2,f3,c4,f4]@8 [eb2,gb3,c4,eb4,gb4]@8 [e2,g3,c4,e4,g4]@8, ~ c2@23 ~@40, ~@6 gb4 ~@22 c5@35]/2", // Gm Db A Dm7 Cdim C
  F: "gb3@15 ~@12 db5@5, eb2, [c4,f4,bb4,d5]@21 d5@3 g6@8, ~ gb3, ~@11 [c4,f4,bb4]@5", // Bb Fsus4
  G: "[~ gb4@12 ~@11 eb5@6 ~@11 d5@5 ~@10 a4@6 ~@15 g2@3 ~@13 e3@3, [a2,g3,db4,bb4,db5]@12 ~ [ab2,gb3,c4,f4,a4]@17 [bb2,f3,a3,d4,g4,a4,c5,f5]@17 ~@15 bb4@34, ~@21 d5@9 ~@8 eb5@8 [a2,gb3,c4,gb4,c5]@16 [d4,g4]@19 ~@15, ~@62 g2@15 ~@3 f2@16, ~@69 [f3,bb3]@11 ~@6 [ab3,eb4,g4]@10]/3", // Gdim F Bbmaj7 Gbdim G5 Bb5 Abmaj7
  H: "~@6 gb4 ~@20 bb4@5, e2@25 d4@7, ~@3 [g3,d5]@13, ~@6 bb4@15 c5@11, ~@6 d4 g4@25", // G5
  I: "[[db4,f4,a4]@8 ~@14 e3@3 [g3,bb3,db4,e4]@5 ~@8 f3@2 ~ f3@4 ~ f3@7 ~@7 g4@4, g3@12 ~@15 f3@5, ~@4 a2@11 ~@17, ~@14 [bb3,db4,e4,g4]@11 ~@5 [a3,bb3,d4,f4]@34]/2", // Dbaug Gdim Bbdim Bbmaj7
  J: "[~ f4@7 f4@6 ~@8 f3@8 ~@2 d2@6 d3 ~ gb2@8 g2@6 [f3,b3,f4]@2 db2@6 g2@2, ~ f2@29 f4@22 ~@12, ~ [a3,db4,eb4,a4]@13 [a3,db4,eb4,f4,a4]@16 [gb3,c4]@19 ~@15]/2", // Fdim Ebm7b5 Aaug Gbdim
  K: "[c2,bb3]@3 c3 [gb2,ab3]@3 ~@4 [f1,db4,eb4,g4]@5, eb4@15 ~@17, g3@3 ~@3 g3 ~@7 [f2,a3]@18", // C7 Gbsus2 Eb7 F
  L: "[~@14 [c4,d4,f4,a4]@3 ~@2 [c4,d4,f4,a4]@2 ~@4 [b3,db4,eb4,ab4]@5 ~@15 [f2,g2]@3 ~@6 [ab3,d4,gb4,bb4]@8 bb2@2, bb2@3 e2, [a3,bb3]@17 ~@13 [bb3,d4,f4,g4]@18 ~@16, [d4,f4]@7 ~@25, ~@4 bb1@12 ~@3 bb1@5 ~@8]/2", // Dm7 Abm Fsus2 Daug Bbmaj7 Gm7 Dm
  M: "~@6 [g3,db4,f4,a4]@3 ~@8 [db4,f4]@5 bb2@2 [e2,d4,ab4]@5 ~@3, ~ eb2@23 ~@8, ~@16 a4@7 ~ ab3@3 ~@5", // Dbaug Db E7
  N: "[~ d4@6 [eb2,g4]@2 ~@5 [eb2,g3,db4]@6 ~ f3@5 [db2,f3,b3]@5 ~@29 db5@4, [e2,ab3,ab4]@6 ~ [g3,db4] ~@6 g4@34 [bb3,d4,bb4]@6 d5@3 g3@7, ~@20 [d2,c4]@6 ~@5 g3@17 d5 g4@15, ~@31 bb3@9 e3@24, ~ c2]/2", // Eb Eb7 Db7 E Gdim Bb D7
  O: "~ [e3,bb3,d4,g4]@7 ~ [d3,a3,c4,f4]@7 ~ [gb3,eb4]@7 [e2,g3,c4,e4,g4]@8, ~ c5@31, ~@16 gb4@7 ~@9", // Em7b5 Dm7 Ebm C
  P: "[~@6 [c4,f4,bb4,d5]@11 ~@8 db5@5 ~@11 c5@5 ~@11 eb5@5 c3@2 ~@8 d5@6 ~@11 c5@5 [g2,g4]@8 ab3@2 g3@5 ~@9 [c4,eb4,gb4]@10, eb2@30 ~ [a2,g3,db4,gb4,bb4,db5]@15 [ab2,gb3,c4,f4,a4]@15 ~@17 [a2,gb3,c4,e4,gb4]@16 ~@34, ~@6 gb3@25 ~@31 [d3,bb3,g4,a4,f5]@16 ~@16 d4@16 gb3@18, ~@17 [c4,f4,bb4,d5]@14 ~@23 d5@8 ~@24 d5@8 bb4@34]/4", // Bb G Cdim Gb F Gbm7b5 Gm7 Bb
  Q: "[f4@13 f4@3 ~@8 gb4@5 db4@8 ~@5 g4@5 ~@8 b3@6 ~@9 e3@10 e4@2 g4@4 bb4@2 ~ c5@5 ~@10 [gb3,bb4]@5 ~ [a3,eb4,gb4]@10 [gb3,c4,eb4,a4]@5 ~ d4@10 [ab2,gb3,c4,f4,ab4]@8 [g2,f3,b3,e4,g4]@8 [g2,f3,b3,e4,g4]@8, [bb2,f3,a3,c4,d4]@16 ~ [a2,g3,db4,f4]@12 [ab2,eb3,gb3,gb4]@18 [g2,c4]@14 e2@19 ~@80, ~@37 c4@10 g4@33 gb4 ~@79, ~@48 f3@14 ~@7 [g3,bb3,d4]@11 bb3@14 [bb3,e4,ab4,db5]@15 ~@16 [g3,f4,bb4]@10 ~@25]/5", // Gb Ebdim Gbdim Fm Em Bbmaj7 Aaug Ab7 …
  R: "[gb2,e3,bb3,eb4,gb4]@8 [gb2,e3,bb3,eb4,gb4]@7 ~ [f2,a3,d4,f4]@6 gb2@2 g2@6 a2@2, ~@16 eb3 ~@15", // Ebm Dm
  S: "~@6 [c4,d4,f4] ~@7 [d4,f4,g4] ~@3 [a3,d4,a4]@2 ~@5 [ab3,bb3,d4,f4]@2 ~@5, ~@6 [a4,c5]@2 ~@6 [bb3,bb4]@2 ~@2 f4 ~@5 ab4@3 ~@5", // Dm7 G7 D5 Bb7 Am Bb
  T: "[g3,bb3,d4,f4,g4]@3 ~@5 [bb3,d4,f4,a4]@4 ~@5 g4@4 ~@2 a3@2 ~@5 [c4,db4,f4,g4] ~, ~@16 [bb3,d4,f4,bb4]@5 ~ a4@2 ~@6 c5@2", // Gm7 Bbmaj7 Csus4 Bb
  U: "[~@14 [b3,f4,g4]@2 ~ [bb3,f4,bb4]@2 ~@6 [a3,a4]@5 ~ [g3,g4]@2 ~@31, ~@13 [db4,b4]@2 ~@49]/2", // G7 Bb5 A G Db7
  V: "~@16 [d4,e4,g4,bb4,d5]@5 bb3@2 ~ [db4,e4,g4,bb4,db5]@6 c4@2, ~@30 g4 ~", // Em7b5 Dbdim
  W: "~@6 [a3,a4]@2 ~ [ab3,ab4]@5 ~@3 [g3,d4,g4]@3 ~@5 [a3,e4,a4]@4 ~@3, ~@6 [bb3,d4,e4]@7 ~@12 [bb3,d4]@2 ~@5", // A Ab G5 A5 Em7b5 Bb
  X: "[~ eb4 gb4 ~@4 [eb4,gb4,bb4] ~@2 [db4,eb4]@4 ~ [c4,gb4,bb4] ~@7 [bb3,eb4,gb4,bb4]@12 ~@19 [f4,gb4,c5,f5]@3 ~@5 [eb4,gb4,bb4,c5] ~, ~ bb3@5 ~ c4@2 ~ [gb4,bb4]@2 ~@3 eb4@2 ~@47, ~ bb4@3 ~@5 db5@3 ~@42 bb4 ~@7 eb5@2]/2", // Ebm Dbsus2 Cm7b5 Ebm F Cm7b5 Gb
  Y: "~@2 [d4,f4,g4,d5]@3 ~@9 [f4,g4,bb4,d5] ~@3 [c4,gb4,a4]@3 ~@9 [eb4,gb4,a4] ~, ~@7 [c4,d4] ~@7 c4", // G7 Gm7 Gbdim Ebdim Csus2
  Z: "~@2 g4@2 ~@9 bb4 [d4,f4,g4] ~@2 [a3,d4,f4,a4]@3 ~@9 a4 a3@2, ~ [bb3,f4,bb4]@3 ~@10 bb3@2 ~@14 d4 ~", // G7 Dm Bb5
  AA: "[~ [g3,d4,g4]@3 ~@10 g3@2 ~ [a3,bb3,d4,e4]@5 gb3@2 ~ [ab3,d4,e4]@5 [g3,d4,e4,g4]@12 ~@7 [c4,db4,e4,g4,c5]@6 ~@2 [c4,e4,g4]@5 [bb3,db4,bb4]@2, ~@16 a4@5 ~@3 ab4@4 ~@29 db4@3 ~@2 e4 ~]/2", // G5 Asus4 E7 Em7 C Bbm
  AB: "~@2 [a3,c4,f4,a4]@4 ~@3 [bb3,f4,bb4]@3 ~@3 f3@2 ~@13 [gb3,db4,gb4]@2, ~@14 [bb3,d4,f4]@2 ~@14 [a3,eb4] ~", // F Bb5 Gb5 Bb Adim
  AC: "[~@2 [g3,c4,eb4]@3 ~@4 [a3,c4,eb4,a4]@3 ~@3 [f3,db4,eb4]@2 ~@8 [f3,a3,db4,eb4,f4]@4 ~@2 [f3,g3,bb3,d4] ~@14 [f3,b3] ~@2 [f4,f5]@5 ~@3 [f4,f5]@5 ~@2, ~ g4@3 ~@10 f4@3 ~@14 f4@2 ~@31]/2", // Cm Adim Db Faug Gm7 Fdim F
  AD: "~ [f4,f5]@5 ~@3 [f4,f5]@5 [a3,eb4] ~@3 d5@4 bb4@2 ~ f4@4 ~ eb4@2, ~@14 eb5@3 ~@15", // F Adim
  AE: "[~ d4@5 f4@3 ~ g4@3 ~ bb4@3 ~@2 g4@4 ~@2 g4@4 ~ g4@8 ~@9 bb4 ~ g4@5 bb4@2 ~ d5@4 ~ f5@2 ~ [g4,g5]@4 ~ db5@2 ~ bb4@5 ~@3 g4@5 bb4@2 ~ db5@4 ~@3, ~@19 d4@12 ~@17, ~@38 [g3,a3,bb3]@21 ~@3 [g3,db4]@34, ~@23 d5 ~@24]/3", // G Gm Gdim
  AF: "~ [g4,g5]@5 db5@3 bb4@2 ~ g4@2 bb4@2 ~ db5@2 ~ g5@2 ~@3 eb5@2 ~ f5 ~ [gb4,gb5]@2, ~@22 [f3,b3,eb4]@7 ~@3, ~@22 b4@3 ~@7, ~@23 bb3@7 ~@2", // G Gb Fm7b5
  AG: "[~ [g4,g5]@11 ~@5 [d5,d6]@4 ~@4 [db5,db6]@3 ~@2 [c5,c6]@5 ~@2 [e3,a3,bb3,d4] c5 ~@2 bb4@5 a4@3 ~ g4@4 [e3,a3,bb3,d4] ~@3 bb4@3 ~ c5@2 ~ db5@4 ~ bb4@3 b4@4 ~@9 [gb3,bb3,db4,f4] ~@9, [e3,d4]@33 ~@4 e5@2 ~@15 a4@2 ~@6 [gb3,bb3,db4,f4]@16 c5@18]/3", // G D Db C Dsus2 Gbmaj7 E7 Gbmaj7
  AH: "~@9 ab5@4 ~ g5@2 ~@2 gb5@4 bb5@2 ~@6 eb5@2, [c4,f4]@31 ~, ~ [gb3,ab3,bb3]@31", // F5 Gb
  AI: "[~@7 [f3,bb3,d4] ~@17 f5@2 eb5@2 d5 ~@3 bb4@4 ~ d5@7 ~ ab4 g4 ~ gb4@4 ~ bb4@2 ~ f4@4 ~ eb4@2, ~ d5@15 ~ [gb3,c4,f4]@12 ~@2 c5@2 ~@12 a4@2 ~@17, ~@32 [a3,d4]@13 ~@3 c4@13 ~@3]/2", // Bb F D5
  AJ: "d4@6 [g3,a3,bb3] ~@13 d5 ~ e5@2 ~ gb5@2 e5@2 ~ d5@2, ~@17 [g3,b3,d4,gb4]@13 ~@2", // Gm Gmaj7
  AK: "[~@4 db5@2 ~ eb5@2 f5@2 ~ eb5@2 ~ db5 ~@4 c5@2 ~ d5@2 e5@2 ~@7 bb4@4 d5@2 ~ a4@4 ~ ab4@2 ~ g4@5 bb3 ~@2 gb4@6 ~, ~ [db4,f4]@15 ~@15 b4@2 ~@13 d5@5 ~@13, ~ [gb3,ab3,bb3]@7 ~ [f3,a3,c4,e4]@6 ~ d4@11 ~@5]/2", // Db Gb Fmaj7
  AL: "[~ f4@5 f3@2 ~@8 db4 [d4,eb4,gb4,a4,b4,d5]@6 c4@2 ~ [eb4,gb4,a4,d5]@4 ~ [bb3,d4,g4] f4 ~@16 [g5,g6]@4 ~@2 eb6@2 ~@2 b5@3 g5@2, ~@15 c4@2 ~@8 d4@4 ~@2 bb4@2 ~@31]/2", // B7 D Gm G
  AM: "[~@2 c6@3 ~@2 bb5@2 ~@5 ab5@2 ~@2 a5@3 ~@2 ab5@2 ~ g5@3 ~@2 gb5@2 ~ f5@2 ~@3 bb3@2 a4 d4@2 ~@3 [bb3,d4,bb4]@2 ~@3 a3@2 ~@4 f4@3 ~@3, ~@17 [a3,eb4]@10 ~@3 bb3@5 ~@6 [c4,f4,c5]@3 ~@3 [f4,g4] ~@3 [d4,a4]@2 ~@11, ~@31 [a3,d4]@5 ~@21 [ab3,d4,ab4]@4 ~@3]/2", // Bb Adim F5 Fsus2 D5 Abdim
  AN: "~ [g3,g4]@5 eb3 ~@2 [gb3,a3]@4 ~ [f3,bb3,d4] ~@15 [c4,db4,f4,g4,c5]@2, ~@4 [db4,gb4]@2 ~ f4 ~@8", // G Gbm Bb Csus4 Gb5
  AO: "~@7 [c4,f4,g4]@2 ~@5 [b3,g4,b4]@2 ~ [bb3,db4,f4,g4,bb4]@3 ~@12, ~@6 [db4,c5]@2 ~@6 [db4,f4] ~@17", // Csus4 Em Gm7b5 Dbmaj7 Db
  AP: "~ [a3,bb3,db4,f4,a4]@3 ~@5 [ab3,db4,f4,ab4]@5 ~ [g3,db4,g4]@2 ~@13 [db4,e4,gb4,bb4,db5]@2, ~@7 bb3 ~@8", // Bbm Db Gdim Gb7
  AQ: "[~ [e4,g4,bb4,d5]@9 bb4@2 g4@2 e4 ~@2 ab4@2 a4@5 ~ ab4@5 ~@20 g4@5 bb4@2 ~ d5@3 ~@2 eb5@3 ~ f5@3 ~ eb5@2 ~@2 bb4@4 gb4@2 ~ f4 ~ f4@2 eb4@2 ~ f4@13 [bb3,c4] gb3 ~@6 gb5@2 ~@2 ab5 ~ gb5@2 db5@2 a4@2 ab4@2 gb4 ~ f4 ~, ~ d4@23 ~@7 g4@12 ~@20 db4@13 ~@7 gb4@2 ~@43, ~@17 d5@5 ~@3 d5@18 ~@85, ~@38 [e3,bb3,d4]@20 ~@5 [gb3,bb3]@26 ~@39]/4", // Em7b5 Bbsus2 Em7b5 Gb
  AR: "[eb4 ~ d4@6 ~@2 d4 ~ f4@2 ~ c5 ~@2 c5@2 bb4 ~ d5 ~ c5 ~@2 eb5@2 d5 ~@3 bb4@2 d5 ~ a4 ab4 ~ g4@19 ~@5, [a3,bb3]@13 ~ a4@2 [gb3,c4]@14 ~@2 [a3,d4]@11 ~@21, ~@26 f5@2 ~@3 c5@2 ~@31]/2", // Bbmaj7 Gbdim D5
  AS: "~@5 bb4@2 g4 ~@2 a4@2 e4 ab4@2 ~ e4 g4@11 ~@4, ~ [e3,a3]@29 ~@2, ~@2 d5 ~@13", // A5
  AT: "[~@6 e4 ~ db4 c4@3 ~ eb4 ~@2 e4@2 gb4 g4 ~@2 a4 ~ bb4 c5@2 db5 ~ d5 ~@5 d5 ~ eb5 ~ c5 ~ d5 ~ bb4 ~@17 f5 ~ g5, ~@7 eb4@2 ~@3 db4@2 ~@9 db4@5 ~@3 eb5@2 ~ f5@2 ~@28, ~@24 g3@6 ~@2 [a3,bb3,d4]@31 ~]/2", // Bbmaj7
  AU: "~ gb5@2 ab5@2 gb5@2 db5 a4 ~ ab4@2 gb4@2 ~ f4 ~ eb4@2 ~ a3@2 ab3@2 gb3 ~ f3 ~@2 db3 a2 ~, ~ a3@16 ~@11 eb3@2 ~@2, ~ eb4@13 ~@5 db4@2 ~@11",
  AV: "~@2 f2@8 ~@10 eb4 ~@2 g4 ~ ab4 ~ bb4@2 ~ g4 f4, ab2 ~@10 f4 ~@4, ~ gb2@2 ~@29",
  AW: "[~ eb4@5 g4@3 d4@5 db4@3 c4 ~@4 [d4,eb4,gb4,d5]@3 [db4,bb4,db5]@5 ~ f4@2 ~@7 d4@6 ~ g3@2 ~ [a3,d4,f4]@5 g3 ~ [ab3,bb3,d4,f4,ab4]@4 ~@2 [g3,bb3,d4,f4,g4], ~@22 a4 ~@7 [c4,d4,a4]@3 ~@5 [bb3,a4]@8 ~@3 [bb3,a4]@4 ~@11, ~@19 db4 ~@12, ~@39 [a3,f4]@8 ~@17]/2", // D Gb Dm Bb7 Gm7 D7 Bbmaj7 Dm
  AX: "~@17 [bb3,c4,d4,f4,a4] ~@14, ~@8 [d5,a5] ~@7, ~@17 f5@2 ~@13", // Bbmaj7 D5
  AY: "[g3,db4,f4,a4,db5,f5,a5]@5 ~@2 [g3,a4,db5] ~@6 [db4,f4,a4,db5,f5,a5] ~@2 [g3,a5]@2 ~@13, ~@14 g3@2 ~ [f4,db5] ~@14", // Dbaug A7 Dbaug Gsus2 Db
  AZ: "[~@6 [ab3,d4,ab4,db5,ab5]@2 ~@2 [g4,g5]@3 ~@2 [g4,db5] ~@9 [db4,gb4,bb4,db5]@5 [d4,d5]@4 e4 ~ [e4,g4,d5] ~@2 [e4,g4] d4 ~@8 [d4,e4,g4,bb4,d5]@5 bb3@2 ~ [db4,e4,g4,bb4,db5]@5 bb4 [c4,e4]@2 ~@8 [g3,bb3,d4,e4,g4]@4 ~ [g3,d4,e4,g4]@3 ~ [d4,a4]@2 ~@2 [a3,d4,e4] ~@2 [bb3,e4,g4,bb4]@3 ~@2 [e4,g4,bb4] ~, ~@9 [db4,db5]@4 ~@2 g3@2 ~@8 e4@3 ~@2 bb4@10 ~@23 g4 ~@14 bb3 ~@2 a3@3 ~@10 bb3@2, ~@30 [e4,g4]@3 ~@5 d5@3 ~@44 a4@2 ~@9]/3", // Db G Gdim Gb D Em7 Em Em7b5 …
  BA: "~@2 gb4 ~@10 [d4,bb4,d5]@2 ~@2 [d4,gb4,d5]@3 ~@10 [db4,eb4,gb4,bb4,db5]@2, ~ [d4,d5]@3 ~@9 [eb4,gb4] ~@2 bb4@3 ~@13", // Gm D Ebm7 D Ebm
  BB: "[~@3 [db4,eb4,bb4,db5]@4 ~@2 [c4,eb4,gb4,bb4]@4 ~@2 [c4,gb4]@6 ~ [eb4,gb4,bb4] ~@2 eb4@5 [f4,g4,bb4,d5,f5]@13 ~@3 c4@2 [eb4,gb4,d5]@3 ~@3 bb3@2 [gb4,a4]@3 ~@3 [bb3,d4,f4,g4]@14 ~@4 [bb3,c4,eb4,gb4]@12 ~@4, ~@3 gb4@2 ~@9 [eb4,bb4,c5]@7 ~ [d4,d5]@2 ~ eb5@3 ~@20 [d4,a4]@5 ~@3 c4@5 ~ bb4@30 ~@4]/3", // Eb7 Cm7b5 Cdim Ebm Gm7 Ebm Gbm Gm7 …
  BC: "~@6 [ab3,d4,g4,c5,f5]@8 ~@3 [g3,db4,g4,b4,db5,f5]@3 ~@10 [gb3,ab3,bb3,db4,gb4,bb4,db5,eb5,gb5]@2", // Dm7b5 G7 Ebm7
  BD: "~@3 [bb3,gb4,bb4,gb5]@2 ~@3 g5@4 ~@2 bb4@2 b4@14 a3@2, ~ db4 ~@14, ~@3 gb3 ~@10 [f3,b3,g4,e5,g5]@18", // Ebm Em
  BE: "~@17 gb4 g4@3 ~ bb4@2 ~ c5@4 ~ [g3,bb4]@2, ~ e3@30 ~, ~@3 [bb3,d4]@11 ~@2, ~@7 a3@20 ~@5", // Gm Bb
  BF: "~ [bb3,e4,ab4,db5]@5 ~ ab3@2 ~@5 [a3,g4,c5]@16 ~@2, ~@6 bb4@3 ~@5 eb4@12 ~@6", // Bbm7b5 Am7
  BG: "~@6 [f3,a3,c4,d4,d5,f5,a5,d6]@7 ~@3 a5 [f3,a3,c4]@2 ~@5 [gb3,bb3,c4,f4,g5,e6,g6]@3 ~@5, ~@8 [f5,c6] ~@7, ~@17 d4 ~@14", // Dm7 F C7 F5
  BH: "~ [f3,b3,eb4,ab5,eb6,ab6]@5 ~ [f3,b3,eb4,f5] ~@6 [f3,b3,eb4,g5,b5,eb6,g6]@16 bb3@2", // Fm7b5 Ebaug
  BI: "[~@6 [bb3,d4]@11 [gb3,gb4] g4@3 ~@2 bb4 ~@2 bb3@4 ~ [db4,e4,g4,bb4,db5]@8 bb3 ~ [db4,e4,g4,bb4,db5]@4 ~@2 db4@2 bb3@5 ~ [eb4,gb4,a4]@3 ~@4 [d4,f4,g4,bb4]@2, ~ e3@16 ~@8 c5@4 ~@17 [e4,g4]@5 ~@3 [c4,c5]@3 ~@5 bb3 ~, ~@6 g3@5 ~@7 g3@8 ~@20 db5@2 ~@16, ~@47 bb4 ~ bb4@3 ~@12]/2", // Bb Gb Dbdim Ebdim Gm7 Em C
  BJ: "~@6 [bb2,bb3]@2 ~ db4@2 [d3,d4]@2 ~ [f3,f4] ~ [eb3,eb4]@4 ~ [g3,g4]@3 [bb3,bb4]@4 ~ c5@2 ~, ~@8 db3@2 ~@19 c4 ~@2", // Bb D F Eb G Bb
  BK: "[db5 ~@2 db5@2 [bb3,bb4]@2 [c4,c5]@3 g3@2 [bb3,bb4]@2 ~@10 [ab3,c4,d4,g4,d5,e5,g5,bb5]@75 ~@29, db4@2 d4@3 ~@5 g4 ~@12 ab4@75 ~@30, ~ d5@2 ~@125]/4", // Bb C Bb C7
})).s("gm_piano").gain(0.4).pan(0.8)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  A B ~@2 C ~ D@2 ~@3 E ~@10 F ~@2 G ~ H I ~@4 J ~@3 K L ~ M N O@2 P Q R@2 S T ~@6 U V@2 W ~ X ~ Y Z ~@3 AA AB ~ AC ~
  AD@2 ~ AE@2 AF ~@3 AG AH ~ AI AJ AK AL@2 AM AN AO ~@2 AP ~@11
>`.pickRestart({
  A: "~@17 ab3@15", B: "~@7 gb3@9", C: "~@25 eb3@2 ~@5", D: "[~@30 gb3@15 ~@19]/2", E: "~@8 c5@5 c5@16 ~@3",
  F: "~@17 g3@6 ~@9", G: "~@17 [eb2,c4]@7 ~@8", H: "~@14 c5@15 ~@3", I: "~@14 c5@11 ~@7", J: "~@7 c5@5 ~@4",
  K: "~@8 a3@3 ~@12 [d4,f4] ~@8", L: "~@17 db4@3 ~@5 [bb3,db4,f4]@4 ~@2 [db4,f4], ~@17 g4 ~@12 bb3@2",
  M: "~@15 [e4,c5], ~@30 bb4 ~", N: "~@9 e4 ~@6, ~@17 bb3@3 ~@12", O: "[~ db4 ~@5 c5 ~@7 c5@2 ~@6 db4@12 ~@29]/2",
  P: "~@2 bb4@2 ~@15 eb4 ~@10 c5 ~, ~@18 c5@3 ~@11", Q: "~ d4 ~@14",
  R: "[~ [bb3,e4]@2 ~@21 bb3@4 ~@2 bb3@11 ~@14 a3@2 c5@3 ~@2 g4@2]/2", // Bbdim
  S: "~@2 g4@3 ~@5 g4 ~@4 g3@2 ~@15, ~@9 c4@3 ~@20", T: "~@2 bb3@2 ~@11 a3@2 ~@15", U: "[a3,bb3]",
  V: "[~@3 a5@3 ~@24 ab3@16 ~@9 ab3 ~@8]/2", W: "~@13 f5@2 ~", X: "bb3@12 ~@5 gb3@12 ~@3", Y: "~@14 c5 ~",
  Z: "e3@21 ~@11, bb3@9 ~@7", AA: "~@20 f4@2 ~@3 bb3@3 ~@4", AB: "~ [bb3,d4,f4]@4 ~@9 g3 ~@17",
  AC: "~@9 bb3@4 ~@2 f4@2 ~@15", AD: "[~@34 ab3@23 ~@7, ~@31 f4@10 ~@23]/2", AE: "[~@31 bb3@11 ~@22]/2",
  AF: "~@9 e4 ~@22, ~ [bb3,d4]@28 ~@3", AG: "~@18 b3@2 ~@7 ab4 ~@4", AH: "~@25 [eb4,gb4]@4 ~ c5@2", AI: "~@17 c5 ~@14",
  AJ: "~@6 [db4,f4] [f5,a5] ~@9 a4@2 ~@13, ~@17 db4 ~@14", AK: "~@10 g3@3 ~@2 [db4,g5] ~@16",
  AL: "[~@2 g4 ~ d4 ~@26 c5@2 ~@16 e4@3 ~@12]/2", AM: "~@2 eb4 ~@14 eb4@2 ~@13, ~ bb4@2 ~@29", AN: "~@9 c5@4 ~@19",
  AO: "~@24 [eb4,c5]@3 ~@5", AP: "~@3 [ab3,eb5]@2 ~@27, ~@3 db5 ~@28",
})).s("gm_piano").gain(0.24).pan(0.8)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@36 A B C D E F@2 G H I J K L M N O@2 P Q R S T U V W X Y Z AA AB AC AD AE AB AF AG AH AI AJ AK AL AM AN AO AP AQ AR
  AS AT AB AU AV AW AX@2 AY AZ X BA BB BC BD BE BF BG BH BI BJ@4
>`.pickRestart({
  A: "bb2@8 f2@8 d2@5 eb2@2 ~ e2@8", B: "f2 bb1 f2 e2", C: "eb2 g2 ab2 a2", D: "bb2@8 eb2@8 eb3@8 db2@7 ~",
  E: "c2 c3 d2 eb2", F: "[e2@4 g2@4 c2@3 db2 d2@3 eb2@5 f2@4 gb2@4 g2@4]/2", G: "ab2@8 ~ c3@8 eb3@7 e3@8",
  H: "~ f3@8 d3@8 a2@7 gb2@8", I: "g2 bb2 g2 f2", J: "e2@8 g2@8 d2@7 ~ db2@8", K: "c2@8 g2@5 ab2@3 a2@8 db2@7 ~",
  L: "d2 d3 g2 gb2", M: "~ f2@7 f1@8 ~ g1@7 a1@8", N: "bb1@6 f2@2 gb2@8 ~ g2@5 d2@2 ~ db2@7",
  O: "[c2@5 ~ eb2@2 e2@5 ~ f2@8 ab2@2 ~ a2@5 bb2@5 ~@3 bb2@3 d2@7 eb2@8 e2@8]/2",
  P: "f2@8 g2@8 a2@7 ~ bb2@2 db3@2 ~ d3@3", Q: "eb3@8 g2@9 ab2@7 a2@8", R: "~ bb2@8 eb2@7 bb2@5 eb2@3 d2@5 ~ db2@2",
  S: "c2@3 c3 e2@4 f2@4 gb2@4", T: "g2 c2 g2 d2", U: "eb2@8 ~ f2@7 gb2@5 ~ bb2@2 a2@8",
  V: "ab2@8 gb2@8 ~ f2@7 ~ eb2@2 d2@2 c2@2 ~", W: "bb1@8 d2@8 gb2@5 ~ a2@2 ab2@8", X: "g2 bb2 gb2 bb2",
  Y: "f2@8 bb2@8 a2@7 ~ a2@8", Z: "~ ab2@6 ~@2 ab2@7 g2@2 ~ f2@2 ~ d2@2 b1@5 g2@2 ~", AA: "c2@6 g2@2 d2@8 eb2@7 ~ e2@8",
  AB: "f2 gb2 g2 a2", AC: "bb2@8 db3@8 d3@8 ~ b2@7", AD: "~ c3@8 bb2@7 a2@6 f2@3 g2@5 a2@2",
  AE: "~ bb2@7 d2@8 eb2@7 ~ e2@8", AF: "bb2@5 ~ eb3@2 g2@8 ab2@8 a2@8", AG: "bb2@8 eb2@8 d2@7 ~ db2@8",
  AH: "c2@6 c3@2 d2@8 eb2@8 ~ e2@7", AI: "~ g2@7 a2@8 ~ bb2@7 e2@8", AJ: "eb2 f2 gb2 g2",
  AK: "~ ab2@7 bb2@8 c3@8 db3@8", AL: "d3 bb2 a2 gb2", AM: "g2@8 bb2@5 g2@3 ~ f2@7 bb2@6 f2@2",
  AN: "~ e2@5 c3@2 d2@8 c2@8 d2@8", AO: "e2 c2 db2 e2", AP: "f2 bb1 d2 eb2", AQ: "~ f2@7 a2@8 c3@8 db3@8",
  AR: "d3@4 c3@4 b2@3 ~ b2@4", AS: "c3@8 bb2@7 ~ a2@5 ~ f2@2 g2@5 ~ a2@2", AT: "bb2@2 ~ bb2 d2@4 eb2@4 e2@4",
  AU: "bb2@3 eb3 g2@4 ab2@4 a2@4", AV: "bb2@8 eb2@8 db2@7 ~ bb2@8", AW: "c2@3 c3 d2@4 eb2@4 e2@4",
  AX: "[bb2@8 b2@8 c3@8 e2@5 c3@2 eb2@8 f2@9 bb2@8 a2@8]/2", AY: "ab2@8 gb2@8 f2@8 ~ eb2@2 d2@3 c2@2",
  AZ: "bb1@7 ~ d2@8 gb2@8 a2@8", BA: "f2@8 d3@5 ~ bb2@2 a2@8 a1@8", BB: "ab2@6 ~@2 ab2@8 ~ g2@7 b1@7 ~",
  BC: "c2@6 b2 ~ d2@9 eb2@7 e2@8", BD: "f2 gb2 g2 eb2", BE: "d2@5 d3@2 eb2@8 ~ f2@8 gb2@8", BF: "g2 ab2 a2 b2",
  BG: "~ c3@8 bb2@8 a2@8 g2@7", BH: "~ gb2@8 eb2@8 f2@8 a1@5 bb1@2",
  BI: "~@6 bb1@3 d2@4 f2@2 ~@2 eb2@4 g2@3 bb2@4 ~ c3 ~@2", BJ: "[d3@5 bb2@2 ~ c3@4 bb2@2 ~@10 bb1@84 ~@20]/4",
})).s("gm_acoustic_bass").gain(0.29).pan(0.1)

// drums · kick
const kick = s("bd").struct(`<
  ~@36 A B C A C D A E F C B C B A@2 E A@2 C A D C B E A C A E A C B E B@2 A B A B C E A C B@3 A C E F A@2 B C A C E A
  C@2 E C B@2 E A B C B ~@3
>`.pickRestart({
  A: "x ~@6 x ~@7 x", B: "x ~@6 x ~@8", C: "~@7 x ~@8", D: "~@3 x ~@7 x ~@3 x", E: "x ~@12 x ~@18",
  F: "x ~@12 x ~@15 x ~@2",
})).gain(0.07)

// drums · rim
const rim = s("rim").struct("<~@36 [~@3 x]!68 ~@3>").gain(0.46)

// drums · snare
const snare = s("sd").struct(`<
  ~@37 A ~@5 B ~@2 A ~ A ~@2 B ~@6 A B ~@3 B C ~ A B A@2 ~ A ~ A ~ B C ~ A@3 ~@2 B ~@3 A ~@3 B D ~@2 B ~ A@2 B ~ A ~ E
  ~@3
>`.pickRestart({
  A: "~@3 x ~@12", B: "~@29 x ~@2", C: "~@15 x", D: "~@3 x", E: "x ~@5 x ~ x ~@4 x ~@5 x ~ x ~@2 x ~@7",
})).gain(0.2)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@44 A ~@19 B ~@11 B ~@7 C ~@7 B ~@14>".pickRestart({
  A: "~@5 x ~@2 x ~@15 x ~@2 x ~@4", B: "~@11 x ~@4", C: "~@5 x ~@2 x ~@12 x ~@2 x ~@7",
})).gain(0.07)

// drums · low tom
const low_tom = s("lt").struct("<~@84 [~@27 x ~@4] ~@22>").gain(0.07)

// drums · hihat
const hihat = s("hh").struct("<~@36 [x!4]!67 [x!2 ~ x] ~@3>").gain(0.46)

// drums · mid tom
const mid_tom = s("mt").struct("<~@43 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7>".pickRestart({
  A: "~@21 x ~@10",
})).gain(0.26)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@44 A ~@19 B ~@11 B ~@15 C ~@14>".pickRestart({
  A: "~@21 x ~@10", B: "~@3 x", C: "~@15 x",
})).gain(0.07)

// drums · crash
const crash = s("cr").struct("<~@44 A ~@19 A ~@11 A ~@7 A ~@7 A ~@7 A ~@2 B ~@3>".pickRestart({
  A: "x", B: "~@3 x",
})).gain(0.26)

// drums · ride
const ride = s("rd").struct(`<
  ~@36 A@2 B A B C A D E B A B A@6 B A C B D A@2 B A D E B A@8 B D E B A@4 B F E A@3 B A B D E B@2 A B A@2 D E A B G ~@3
>`.pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", B: "x ~@2 x!2 ~@3 x ~@3 x ~@3", C: "x ~@3 x ~@3 x ~@2 x!2 ~@3",
  D: "x ~@3 x ~@2 x!2 ~@3 x ~@3", E: "~@4 x ~@2 x!2 ~@3 x ~@2 x", F: "x ~@7 x ~@4 x ~@2 x ~@7 x ~@7",
  G: "x ~@3 x ~@2 x ~@8",
})).gain(0.39)

stack(piano, piano_soft, bass, kick, rim, snare, snare_soft, low_tom, hihat, mid_tom, mid_tom_soft, crash, ride)

More by Nat King Cole