Strudelify

Let There Be Love

Nat King Cole

Tempo120 bpm
0:00/0:00
// Let There Be Love — Nat King Cole
// 120 bpm, 4/4, key unknown. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 81 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D E F G H A B C D I J K@2 L M N O 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 AO AP ~ AP ~
  AP ~ AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD ~ BE ~ BE ~ BE ~ BF@4 ~@2
>`.pickRestart({
  A: "a1 b1", B: "c#2 d2", C: "c#2 g2", D: "f#2@6 c#2@3 ~ c#2 c2", E: "b1@12 b1@10 f#2 ~", F: "e2@6 e1@5 ~",
  G: "a1 f#1", H: "b1@2 f#1 a1@2 a1 g#1@3 f#1@3", I: "b1@6 b1@5 f#2", J: "e2@6 e2@5 ~", K: "[a1@6 d2@5 g2@2 ~@11]/2",
  L: "c2@2 d2!2", M: "e2 d2", N: "c2@2 e2 a#1", O: "a1@5 ~ a#1@2 a1 ~@3", P: "d2@5 ~ d2@2 g1 a1!2 g#1",
  Q: "g1@6 g1@3 b1@2 ~", R: "c2@5 c2 e1@6", S: "f1@5 f1 g1@3 b1@2 ~", T: "c3@8 e2 ~ d#2 ~ d2@6 f2@6", U: "e2 f2",
  V: "e2@4 ~ e2 a#2@3 e2@3", W: "a2@5 g2 f2@3 e2@3", X: "d2!2", Y: "g2!2", Z: "~@3 c2 ~@8", AA: "~@11 g2",
  AB: "c2@3 g2@2 e2 d2@3 f2@2 f2", AC: "e2@3 g2@2 ~ f2@2 ~ f2@2 ~", AD: "e2@2 ~ e2@2 ~ a#2@3 e2@3", AE: "a2 b2 c#3 a2",
  AF: "d2@3 e2@3 g#2@3 g#1@2 d2", AG: "g2@3 ~@3 g2@6 c#2@4 ~@2 c#2@4 ~@2", AH: "c2@2 ~ c2@2 ~ f1@2 ~ f1@3",
  AI: "c2 a1 g1 b1", AJ: "c3@3 g2@3 e2@3 f2 ~ f2", AK: "e2@2 ~ e2@2 ~ g2@2 e2 a#1@2 a#1",
  AL: "a1@3 b1@3 c#2@2 g2 a#2@3", AM: "a2@3 e2@3 c#2@2 b1 a1@3", AN: "d2@2 d2 e2@3 f2@2 f2 f#2@3", AO: "g2 ~@5",
  AP: "~@12 f2@9 ~ c2@2", AQ: "~@11 f2", AR: "c#2 f2 d#2 f#2", AS: "f2@3 g#2@2 g#2 f#2@3 d#2@3",
  AT: "f2@2 ~ f2@2 ~ b2@3 f2@2 ~", AU: "a#2@3 c2@2 a#1 c#2@2 c#2 d2@2 f2", AV: "d#2@3 f2@3 f#2@3 a#2@2 a#2",
  AW: "g#2 d#2 c2 g#1", AX: "c#2 f2 a#1!2", AY: "d#2 ~ d#2 c#2@3 c2@3 g#1@3", AZ: "c#2@3 c#2@3 d#2@2 ~ d#2@3",
  BA: "f2@2 ~ f2@3 f#2@3 f#2@3", BB: "f2@2 ~ c3@3 g#2@3 f2@3", BC: "a#2@3 a#1@3 f2@3 a#1@2 ~",
  BD: "d#2@3 f2@3 f#2@3 g2@2 g#2", BE: "~@12 f#2@9 ~ c#2@2", BF: "[~@12 f#2@33 ~@2 c#2@33 ~@16]/4",
})).s("gm_acoustic_bass").gain(0.35)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~ A ~ B ~@3 C D ~@3 E ~@2 F ~ G ~ H I J K L M N ~ O ~@5 P ~@3 Q ~ R ~ S T U ~@11 V ~ W X Y Z AA AB AC ~ AD ~ AE ~@13
>`.pickRestart({
  A: "~@12 [f#4,a4,d5]@8 ~@2 [g#4,b4,e5] ~", B: "~@12 [b4,c#5,e5]@8 ~@2 [e4,f#4,e5] ~", C: "~@16 [a#3,e4,c#5] ~@7",
  D: "~@4 [b3,f#4,a4,d5] ~@11 [e3,g#4,c#5] ~@7", E: "~@4 [f#3,e4,a#4] ~@11 [e3,f#3,e4,f#4] ~@7, ~@15 c#5@2 ~@7",
  F: "~@4 a5 ~@19", G: "~@12 [a3,c4,f4] ~@9 [b3,d4] ~, ~@21 g4@2 ~", H: "~@8 [a#3,g4] ~@3, ~@16 [d4,e4] ~@7",
  I: "~@4 [g3,a3,c#4,f4] ~@19", J: "~@16 [f3,a3,c4,e4] ~@7", K: "[f3,a3,b3,d4] ~@23",
  L: "~@3 [b3,c4] [g3,e4] ~@11 [g3,e4] ~@7", M: "~@3 d4 [a3,c4,f4] ~@10 b3 [e4,b4] ~@7",
  N: "~@12 [a3,c4,f4] ~@9 [b3,d4,g4] ~", O: "~@10 [a#3,d4,e4] ~@11 [g3,a3,e4] ~, ~@9 g4@2 ~@13",
  P: "~@12 [a3,c4,f4] ~@9 [b3,d4] ~, ~@11 g4", // F Bm
  Q: "~@9 [f4,g#4] [c5,d5] ~@5 [f4,g#4,c5]@2 ~@3 g4 [d4,f4,b4] ~, ~@9 d4@2 ~@4 d4@2 ~@7", R: "~@4 [g3,c4,e4] ~@19",
  S: "~@16 [a3,c4,f4] ~@7", T: "~@4 [b3,d4,g4] ~@19", U: "~@10 [g3,a3,c#4,e4] ~@10 c#5 [g4,a4,e5] ~, ~@5 a4 ~@6",
  V: "~@12 [a#3,c#4] ~@9 [c4,d#4,g#4]@2, ~@6 f#4 ~@5", W: "~@4 [g#3,c4,f4] ~@17 [g#3,a#3,f4] ~, ~@11 d4",
  X: "~@10 [g#3,a#3,f4] ~@11 [f#4,a#4]@2, ~@10 a#4@2 ~@10 [a#3,c#4] ~", Y: "~@22 [g#2,f#3,c4,f4,c5] ~",
  Z: "~@16 [f#3,c4,f4,c5] ~@7", AA: "~@4 [c#3,c#4,f4,g#4] ~@19", AB: "~@21 [f#3,f4] c5 ~, ~@21 c4@2 ~",
  AC: "~@10 [c#3,d#4,f4,g#4,c#5] ~@5 [d#3,c#4,f#4,a#4] ~@4 [c4,d#4,g#4] f3 ~", // C# D#m7 G#
  AD: "~@10 [g#3,a#3,d4,f#4] ~@7 [g#3,a#3,d4,f#4]@3 ~ [g#3,a#3,f4] ~", // Daug A#7
  AE: "~@3 a#4 [d#3,c#4,f#4] ~@7 [c#4,f4,g#4] ~@5 [f#3,c#4,f#4] ~@3 [g#2,c#4] [f#3,a#3]", // D#m7 C# F#5 C#5 F#
})).s("gm_piano").gain(0.25)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note("<~@3 A ~@3 B C ~@14 D E ~@2 F ~@30 G H I ~ H ~@2 J ~ K ~@13>".pickRestart({
  A: "~@12 g4@8 ~@2 a#4 ~", B: "~@16 [g4,a#4] ~@7", C: "~@16 [f5,g#5] ~@7", D: "~@15 c#4 a#3 ~@7", E: "~@16 g#4 ~@7",
  F: "~@22 c#4 ~", G: "~@10 d4 ~@13", H: "~@22 a4 ~", I: "~@16 a4 ~@7", J: "~@22 d4 ~", K: "~@12 f3 ~@5 a#3 ~@5",
})).s("gm_piano").gain(0.15)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@9 A@3 B C@2 ~@2 D E F@2 G H I@2 J@2 K@2 L@3 ~ M N O P Q R ~@2 D S T U ~@2 V ~ V ~ V ~ V ~ W X Y@2 Z@2 AA@2 AB AC AD
  AE ~@2 AF ~ AF ~ AF ~ AG@2 AH@3 ~
>`.pickRestart({
  A: "[[c#4,e4] d4 [c#4,e4,a4] [d4,f#4] [c#4,e4] [d3,g3,b3,g4], [e3,a3]@5 ~]/3", B: "[c#3,f#3,a#3,f#4]",
  C: "[[d3,f#3,d4] [e3,e4], a3]/2", D: "[g3,c4,e4] [a3,d4,f4]", E: "[g3,c4,g4] [f3,d4,f4]",
  F: "[[g3,c4] [a#3,e4] [a3,c#4,e4,c5]@2, [e3,g4]]/2", G: "[d3,f3,a3]", H: "[b2,d3,g3]",
  I: "[g3 ~ [d3,f3] [d3,g3,b3], [c3,e3] ~, ~ a3@2 ~]/2", J: "[g3,c4,e4] [f3,a3,d4]",
  K: "[[g3,a#3,d4]@6 [a#3,e4]@6 [a3,c#4,e4]@11 ~, g4@23 ~]/2", // Gm A#dim A
  L: "[[f3,a3]@24 [g3,b3]@23 ~ [c3,e3,g3]@4 ~@20, [d3,f4]@47 e4@4 ~@21]/3", M: "~ [c4,e4,g4] [d4,f4,a4]@2",
  N: "[e4,g4,c5] [d4,f4,a4]", O: "[e4,g4]@2 f4 [e4,e5], g5@3 ~, ~ a#4", P: "[f4,a4,c6]@11 ~",
  Q: "[f4,g#4,c5,c6]@3 [d4,f4]", R: "[g4,b4,d5]@3 ~", S: "[c4,e4,g4] [a3,d4,f4]", T: "[c#4,e4] [d4,g4], a3",
  U: "f#4@5 e4@7, [a3,c#4,b5]", V: "~@12 [f3,a3,c4,d#4]@6 ~@2 [e3,g3,c4]@3 ~", W: "[c#3,f3,g#3] [d#3,f#3,a#3]",
  X: "[f3,g#3,c4] [f#3,a#3,c#4]", Y: "[[f3,b3] d#4 ~ f#4, g#3, ~ d4]/2",
  Z: "[[f4,g#4] [d#4,f#4] [f4,g#4] [d#4,f#4], c#4]/2", AA: "[[c#4,f4,g#4] [d4,g#4] [c#4,f#4]@2, ~ c#5@3]/2",
  AB: "[f4,g#4,c#5,f5] [f#4,a#4,d#5,f#5]", AC: "g#4 f4 [a#4,d#5,f#5,a#5]@2, [c5,f5,g#5] ~",
  AD: "[g#5,c6] [f5,g#5] [d#4,f#4,d#5,f#5]@2, [f4,g#4] ~", AE: "[a#3,d4,f4,a#4,c#6]",
  AF: "~@3 [f#3,a#3,c#4]@2 [f3,g#3], ~ c#3", AG: "[~@2 [c#3,f#3,a#3,c#4]@5 ~]/2", AH: "[c#3,f3,g#3,c#4]/3",
})).s("gm_string_ensemble_2").gain(0.22)

// chords · piano · "A.PIANO 1"
const piano_2 = note(`<
  A B C D E F G H I J@3 K L M N@2 O P Q R S T U V@2 W X Y Z AA AB AC@2 AD AE AF@2 AG AH@2 AI@2 AJ AK AL AM AN AO AP AQ
  AR AS@2 AT AU AV AW AX AY AZ@2 BA BB BC BD BE BF BG BH@2 BI@2 BJ ~ BK BL@5
>`.pickRestart({
  A: "~@4 e4 ~ c#5@2 ~@2 e4 ~ d5@2 ~@2 e4 ~ d#5@3 ~ a4 ~", B: "d#5 e5@2 ~ e5 ~@19",
  C: "~@4 a4 ~ c#5@2 ~ d5 ~@2 a5@2 ~ e5 d5 ~ [e5,a5]@2 ~@2 d5 ~, ~@12 e5 ~@11", D: "c5 c#5 ~ a4 ~@20",
  E: "~@4 a4 ~ c5 c#5 ~ d5 ~@2 d#5 ~ e5 ~ c#5 ~ d5 ~ c#5 ~@3",
  F: "a5@2 ~@2 a5@4 e5@2 d5 ~ [e5,a5]@2 ~@2 [d5,f#5] ~@7, e5 ~@3 e5@2 ~@18", // A5 D
  G: "~@4 c6 c#6@3 ~ d6@3 c#6@2 b5 e5 ~@2 [d#5,a5]@2 ~ d5 a5 ~", H: "c5 c#5@2 ~ a4@2 ~@6 a4@3 ~ a4 ~@5 e4 ~",
  I: "a4@2 ~@4 b4@2 ~@2 e4 ~ c#5@2 ~@2 e5 ~ f#5@2 ~@2 a4@2, ~@12 c5 ~@11",
  J: "[~@6 [a4,a5]@3 ~@3 [a4,a5]@3 ~ [a4,a5]@2 ~@4 d#5 ~ e5 ~ f#5 e5 a4 ~ [d#5,a5]@2 ~@2 [d5,a5] ~ d5@2 ~@2 c5@2 ~@4 a4@10 ~@2 a4 ~ c5 c#5@2 ~ e5 ~ f#5@2 ~@2 g5@2, ~@22 a5@7 ~@43]/3", // A D#dim D5
  K: "~@4 g5@2 d5@2 d#5 ~ e5@2 f5 ~ f#5 ~ c#6@2 f#5@3 ~@3", L: "~@10 a5@5 ~ f5 e5 d5@2 ~ d#5 ~@2",
  M: "e5@2 ~ c5 ~@2 c#5@2 ~ a4 ~@2 e4@2 ~@2 d#4@2 d4@2 ~@2 c4@2, ~@22 a4 ~",
  N: "[c#4 ~@5 [c4,e4,f#4,a4]@4 ~ [b3,d4,f4]@3 ~@10]/2", O: "[d#5,f#5] [e5,g5]@2 ~ [e5,g5] ~@17 c5 ~",
  P: "[d#5,f#5] g5@2 ~ [f5,a5] ~ [d#5,f#5] e5 ~ a5 f5 ~ d#5 e5 ~ [f5,a5] ~@2 d#5 e5 ~@2 a5 ~, ~ e5 ~@4 g5@2 ~@4 g5@2 ~@3 g5@3 ~@4", // D#m F D#m F
  Q: "[d#5,g5] e5@2 ~ c5 ~@19", R: "~@4 a#5@2 ~@2 g#5 g5 e5 ~ a5@2 ~@2 f5@2 d5@2 ~ d#5@2 ~, ~@16 g5 ~@7",
  S: "e5@2 ~ a4@2 ~@7 a4 ~@11", T: "~@4 g5@4 ~@4 f#5 f5 [g5,a5] f5 c5 ~ d#5@2 ~@2 e5 ~, ~@4 f#5 ~@5 c6@4 ~@10",
  U: "c5@3 ~ c5 ~ [d#5,f#5]@2 ~@2 [e5,g5]@3 ~ e5 ~ c5 ~ [d#5,f#5]@2 ~@2 [e5,g5]@2", // D#m Em D#m Em
  V: "[~@2 e5@2 c5 ~ d#5 e5@2 ~ f5@3 d5 ~ g4 ~ [f#4,c5]@3 ~ [f4,c5] ~@2 d#4 e4@9 ~@14, ~@14 c5@2 ~@7 c5@11 ~@14]/2", // F#dim F5
  W: "~@4 g4 ~ c5@2 ~ d5 ~@2 e5@2 ~@2 g5 ~ a5@2 ~@4, ~@12 d#5 ~@11",
  X: "~@9 g5 a#5 ~ d6@2 ~@2 d6@2 a#5@2 ~@4, ~@12 e6 ~@11", Y: "c#6@2 ~ a5 ~@2 e6@2 ~@16",
  Z: "~@4 d5@3 ~@3 f5 ~ g5@2 ~@4 f#5 f5@2 ~@3, ~@4 c#5 ~@7 f#5 ~@3 c6@5 ~@3",
  AA: "e5@2 g5 e5 ~ c5 a4@2 ~ c5 g4 ~ [f#4,c5]@2 ~@2 f4 ~ d#4@2 ~@2 e4@2, ~@15 c5@2 ~@7", // F#dim
  AB: "c4@3 ~ c4@2 ~@4 [c4,d4] ~ d#4 e4@2 ~@3 [f4,a4]@2 ~@4, ~@6 g4 ~@5", // Csus2 F
  AC: "[[d#4,f#4] e4 ~@2 [f4,a4]@3 g4 f4 ~ c4 d#4 ~ e4 c4 ~ a#3 g3 f#3@2 f3 e3 ~@2 c4@3 c3@2 ~@11 [c5,c6] ~@7, g4@2 ~@16 c4@5 e3@3 ~@22]/2", // D#m F C
  AD: "c6@2 ~@2 c6 ~ c5 ~@2 [c5,c6] ~ c5 c6 ~ c5 ~ c5 ~@7, c5 ~@23", // C
  AE: "~@4 c5 f#5 c6 ~ g5 c5 ~ f#5 c6 ~ f5 c5 ~ [f#5,c6] ~ g5 ~ c5 ~@2, ~@4 c6 ~@7", // F#dim
  AF: "[f#5@2 ~ c5 ~ [f#5,c6] ~ g5@2 c5 ~@2 g#5 a5 ~@2 c6@2 c5@3 ~ c5@6 ~@12 g#5 g5 f5@3 ~ g#5 ~, c6 ~@11 c6@3 ~@24 c6@2 ~@7]/2", // F#dim
  AG: "g5 ~, f#5 ~@23",
  AH: "[~@4 c5 ~ [e5,g5]@2 ~@2 [f5,a5] ~ d#5 f5 e5 c5 ~@2 a4@3 c5@2 ~ f#4 ~@2 f4 ~@2 d#4 e4 ~@2 c4 ~ a3 ~@2 g3@3 ~@6, ~@6 [d#5,f#5] ~@5 g5@2 ~@7 g4 ~ c5@5 ~@20]/2", // Em F D#m
  AI: "[~@10 c6@2 ~@4 [c5,c6] ~@5 c6@4 ~@2 [c5,c6] c5 c6 c5 [c5,c6] c6@2 ~ [d5,d6]@2 ~@2 e6@2 ~@6, ~@10 c5 ~@11 c5@2 ~@16 e5 ~@7]/2", // C D
  AJ: "~@10 a5@6 ~@2 d#6 d6@2 ~@3, ~@10 e6@5 ~ a6@5 ~@3, ~@10 d#6 ~@13", AK: "c#6@3 ~ a5@2 ~@4 a5@2 ~@12",
  AL: "~@3 d6@2 ~@7 [c5,c6]@2 ~@4 [a4,a5]@2 ~@4, ~@3 d5 ~@20", AM: "[f#4,f#5] g4@2 ~@21, g5 ~@7",
  AN: "~@12 [c3,d#3,f3,a3]@9 ~ [c3,e3] ~, ~@11 g3", // F7 C
  AO: "~@4 g3 ~ e4@2 ~ f4@2 ~@2 c4@2 g3@2 [f#3,c4]@3 ~ [f3,c4] ~@2, ~@6 d#4 ~@17", // F#dim F5
  AP: "e3@2 ~@10 [c3,f3,a3]@9 ~ [e3,g3] ~, d#3 ~@23", // F Em
  AQ: "~@4 [f#4,g4] ~@5 c4 ~ [f#4,c5]@2 ~@2 [f4,c5]@3 g4 f4 c4 ~ d#4, ~@2 c5 ~@9", // Gmaj7 F#dim F5
  AR: "~@3 c4@2 ~@7 [c3,d#3,f3,a3]@9 ~ g3@2, ~@22 e3 ~", // F7
  AS: "[~@4 c4 ~ f#4 ~ g4 c4 ~@2 [f#4,c5] f4@2 c4 ~@2 d#4 e4@2 g4@2 c4@3 ~ c4@2 ~@7 [d#3,f3,a3]@9 ~ [c3,e3,g3]@2, ~@7 c5@2 ~@12 f4 ~@14 c3@7 ~@5]/2", // F#dim F7 C
  AT: "~@3 f5 ~@2 f#5 ~@2 g#5 ~@2", AU: "c#6@2 ~@10 c#6@2 ~@2 c#6 ~@7", AV: "c#6 ~@4 c#6 ~@2 c#6 ~@3",
  AW: "c#6@2 ~@2 c#6 ~@7 c#6@2 ~@3 c#6@2 ~ c#6@2 ~@2", AX: "c#6@2 ~@10 c#6@2 ~@2 c#6@2 ~@3 g5 f#5 ~",
  AY: "f5@4 c#5@2 ~@6 c#5@3 ~@3 c#5@3 ~@3, e5 ~@23",
  AZ: "[~@6 [f5,g5] g#5@2 ~ a#5 ~ g#5@2 ~@2 e5 ~ f5@2 ~@2 c#5@8 c#6@2 ~@4 c#6@3 ~@3 d#6@3 ~@3]/2", // Fsus2
  BA: "e6@2 ~@4 d#6@2 ~@2 d#6 c#6@2 ~@3 g5 ~ g#5@2 ~@2 g5 ~, ~@9 f6@2 ~@13",
  BB: "f#5@2 ~ e5 ~ f5@3 ~ c#5@5 ~@2 c#5@3 ~@5", BC: "~@4 c#5@2 e5 f5@2 ~ g#5@2 a#5@2 ~@2 g#5 ~ a#5@2 ~@4",
  BD: "~@2 c7 ~ c7 ~ [c6,c7] ~ [c6,c7] ~ [c6,c7] ~, ~@4 c6 ~@3 c6 ~@15", // C
  BE: "[c6,c7]@4 ~ [a#5,a#6]@2 ~@2 [a#5,a#6]@3 a#6 [a#5,a#6] a#5 a#6 a#5 a#6 [a#5,a#6] a#5 a#6 ~@3", // C A#
  BF: "~@12 f5@3 ~ g#5@4 ~@2 a#5@2", BG: "g#5 ~@7", BH: "[~@12 [c#3,f#3,a#3]@9 ~@2 f3@3 ~@22, ~@22 c#3@3 ~@23]/2",
  BI: "[~@12 [c#3,f#3,a#3]@9 ~@2 [c#3,f3]@2 ~@23]/2", BJ: "~@12 [c#3,f#3,a#3]@9 ~ [c#3,f3,g#3]@2",
  BK: "~@12 f#3@5 c#3!2 ~@3 c#3!2, ~@3 [e3,a#3]@2 ~, ~@3 c#3 ~@2", // Edim
  BL: "[~ c#3 ~@3 a#3 ~@2 a#3 ~@3 c#3 a#3!2 c#3 ~ c#3 c#3@2 ~@4 e3 ~@2 b2@3 ~ g#3 ~ g#3 g#3@2 ~@8 [g5,g#5] ~ [g#5,b5] ~@2 [g#5,b5] ~ [g#5,b5] g#5 b5 [g#5,b5] ~ [c#5,f#5,a#5] ~@2 [c#5,e5] f5 ~@2 b4 g#4 g4 f#4 ~ e4 ~@2 f#4 ~ e4 ~ c#4 g#3 ~ [g3,c#4]@2 f#3 c#4@2 [e3,c#4]@2 ~ e3 f3@2 ~@4 c#3@14 ~@13, ~@23 b2@3 c#2@82 ~@12, ~@25 f3@12 ~@49 c#4@21 ~@13, ~@25 g#3@3 ~@16 b5@2 ~@5 c#5@3 c#5@2 ~@3 g#5@2 ~@59]/5", // G#maj7 G#m F# C#m Gdim C#m
})).s("gm_piano").gain(0.23).pan(0.9)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft_2 = note(`<
  ~ A B ~ C D ~@4 E ~@2 F G H@2 ~@6 I J ~ K L ~@3 M N O P Q R ~@3 S ~ T ~@5 U V ~ W X ~@2 Y Z ~ AA ~@7 AB AC ~ AD@2 AE ~
  AF ~ AG AH AI AJ AK@2
>`.pickRestart({
  A: "c5 c#5@2 ~@21", B: "~@7 f5 ~@4", C: "~@21 a4@2 ~", D: "~@3 f5 ~@8", E: "~@9 c#5 ~@2", F: "~@15 g5 ~@8",
  G: "~@20 a4 ~@3", H: "[a4 ~@10 g4@3 ~@10]/2", I: "~@13 f5 ~@10", J: "~ f5 ~@11 e5 ~@10", K: "~@22 e5 ~",
  L: "~@22 g5 ~", M: "~@22 c4 ~", N: "~@7 a4 ~@16", O: "~@2 a#3 ~@9",
  P: "~@3 c5!2 c6 ~ c6 c5 ~ c6 ~@2 [c5,c6] ~@2 c6 ~@7", Q: "~@13 f#5 c6 ~@4 c6 ~@4", R: "~@2 f5 ~@4 c6@2 ~@15",
  S: "~ f4 ~@22", T: "c5 ~ c5 c6 ~@6 c5 ~@13", U: "~@11 e4@2 d4 ~@10", V: "c4@3 ~@9 d#3@8 ~@4",
  W: "~ e4@2 ~@21, ~ d4 ~@22", X: "~@6 c4 ~@6 f#4 c5 ~@9", Y: "~@22 g#5 ~", Z: "~@23 g#5",
  AA: "~@4 c#6 ~@6 g#5 ~@8 b5 a5 ~@2, ~@19 c#6@3 ~@2", AB: "~@21 a#6 ~@2", AC: "~@11 e5 ~@12",
  AD: "[~@12 e3@9 ~ g#3@4 ~@22]/2", AE: "~@12 e3@9 ~ g#3@2", AF: "~@3 e3@2 ~",
  AG: "~@20 [c#3,e3,f#3] a#3 e3@2, ~@22 a#3 ~", // F#7
  AH: "a#3 e3 [f#3,a#3] [c#3,f#3,a#3] c#3 f#3 [c#3,a#3] [c#3,f#3] ~ c#3 [f#3,a#3] [c#3,a#3] ~@2 c#3 ~ a#3@4 g#3 ~ g#3@2, ~ e3@8 ~@3", // F# F#5 F#
  AI: "~@2 e4 ~ g#3!2 b2 ~ b2 ~ b2@3 ~@8 e4 ~@2, ~@3 c#5", AJ: "~ c#5 ~@12 c#5 ~@6 f4 ~@2",
  AK: "[~@3 f4 ~@15 f3@2 ~@27, ~ f#4@4 ~@10 b3@20 ~@13]/2",
})).s("gm_piano").gain(0.12).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~@31 [~ x ~@2] ~@49>").gain(0.25)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@7 B A@3 B A@3 ~ A@13 C D ~ A@11 E A ~ F ~ F ~ F ~ G ~ A@13 ~ F ~ F ~ F ~ H ~@5
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@6 x ~@2", C: "~ x ~@2", D: "~@23 x", E: "~@2 x!2 ~ x ~@3 x ~@2", F: "~@2 x!2 ~@8",
  G: "x ~@2 x ~ x ~@18", H: "~@5 x ~ x ~@16",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~@16 [~@3 x] ~@14 x!2 ~@48>").gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<~@8 [~ x ~@2] ~@3 [~ x ~@2] ~@31 [~ x ~@2] ~@36>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@15 [~@3 x] ~@14 [~@3 x] ~ [~ x!3] ~@48>").gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@33 x ~@47>").gain(0.2)

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

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@2 A B@2 ~ A B@2 ~ A B A ~ A@2 ~@2 A B@2 ~ A B@2 ~ A B A ~ A ~@3 A B@2 ~ A B A ~ A ~ A B ~@10 A B@2 ~ A B A ~ A ~ A B
  ~@13
>`.pickRestart({
  A: "~@5 x ~@6", B: "~@5 x ~@5 x",
})).gain(0.1)

stack(
  bass, piano, piano_soft, string_ensemble_2, piano_2, piano_soft_2, kick, snare, clap, low_tom, hihat, crash, ride,
  ride_soft
)

More by Nat King Cole