Strudelify

I Understand

Nat King Cole

KeyF majorTempo89 bpm
0:00/0:00
// I Understand — Nat King Cole
// 89 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 52 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(89/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 · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~ A B C D E F G ~ A B C D H I J K L M N O P Q R S T U V W X@2 Y Z ~@8 AA AB AC AD AE AF AG AH@2 ~@2
>`.pickRestart({
  A: "~ [f3,b3,d4]@7 ~@5 [f3,b3,d4]@7 ~@4 [f3,b3]@8 ~@5 [f3,b3,d4]@7 ~@4", // Bdim Fdim Bdim
  B: "~ [f3,d4]@7 ~@5 [f3,bb3,d4]@7 ~@4 [e3,d4]@7 ~@5 [e3,bb3,d4]@8 ~@4", // Dm Bb E7 Em7b5
  C: "e3@8 ~@4 [e3,a3,c4]@8 ~@17 [e3,a3,c4]@8 ~@3", // Am
  D: "~ [e3,c4]@8 ~@4 [e3,a3,c4]@6 ~@6 d4@8 ~@3 [ab3,b3,d4]@8 ~@4, ~@3 [ab3,b3] ~@2", // C Am Abdim Abm
  E: "f3@6 ~@6 [f3,b3,d4]@8 ~@5 b3@5 ~@6 [f3,b3,d4]@7 ~@5, ~@4 f3 ~@3", // Bdim
  F: "[f3,bb3,d4]@7 ~@5 [f3,bb3,d4]@7 ~@5 [e3,bb3,d4]@8 ~@4 [e3,bb3,d4]@8 ~@4", // Bb Em7b5
  G: "~ [e3,a3]@7 ~@5 [e3,a3,c4]@8 ~@24 [e3,a3,c4]@3", // A5 Am
  H: "~ [b3,d4]@8 ~@4 [f3,b3,d4]@8 ~@4 [f3,b3,d4]@8 ~@3 [f3,b3,d4]@9 ~@3", // Bm Bdim
  I: "~ [f3,d4]@7 ~@5 f3@9 ~@3 f3@8 ~@3 [e3,bb3,c4]@9 ~@3, ~@12 [b3,d4]@9 ~@3 [b3,d4]@8 ~@16", // Dm C7 Bm
  J: "[e3,a3,c4]@9 ~@4 [e3,c4]@7 ~@4 [e3,a3,c4]@9 ~@4 [e3,a3,c4]@11, ~@3 a3@2 ~@7", // Am C Am
  K: "~@8 g3@13 ~@3 [eb3,gb3,a3,db4]@10 ~@3 [eb3,gb3,a3,db4]@7 ~@4, ~@7 [eb3,a3,d4]@14 ~@27", // Ebm7b5 D
  L: "[f3,a3,d4]@8 ~@4 [f3,a3,d4]@9 ~@4 [f3,a3,d4]@9 ~@3 [f3,a3,d4]@7 ~@4", // Dm
  M: "[g3,b3,db4]@9 ~@3 [g3,b3,db4]@8 ~@4 [g3,b3,db4]@8 ~@5 [g3,b3,db4]@7 ~@4", // Dbm7b5
  N: "~ c4@8 ~@3 [d3,gb3,c4]@9 ~@3 [d3,c4]@9 ~@4 [d3,gb3,c4]@9 ~@2, [d3,gb3] ~@5", // D7 D
  O: "d3@9 ~@4 [d3,c4]@8 ~@4 c4@7 ~@4 [d3,gb3,c4]@7 ~@5, ~@3 gb3@2 ~ [d3,gb3]@2 ~@4", // D7 D
  P: "[f3,b3,d4]@9 ~@4 [f3,b3,d4]@7 ~@5 [f3,b3,d4]@7 ~@5 d4@8 ~@3, ~@9 [e3,bb3]@2 ~", // Bdim Edim
  Q: "~ e3@9 ~@3 [e3,a3,c4]@6 ~@6 c4@9 ~@2 [gb3,c4,eb4]@8 ~@4, [a3,c4]@10 ~@14 [gb3,eb4]@9 ~@15", // Am Cdim Am Ebm
  R: "[f3,b3]@9 ~@4 [f3,d4]@9 ~@2 [f3,b3,d4]@8 ~@5 [f3,b3,d4]@6 ~@5, ~@4 b3@3 ~@9", S: "[e3,bb3,d4]@7 ~@41",
  T: "[f3,b3,d4]@9 ~@3 [f3,b3,d4]@9 ~@4 [f3,b3,d4]@8 ~@4 [f3,b3,d4]@9 ~@2", // Bdim
  U: "~ [f3,bb3,d4]@8 ~@3 [f3,bb3,d4]@9 ~@3 [e3,bb3,d4]@8 ~@4 [e3,bb3,d4]@9 ~@3", // Bb Em7b5
  V: "~@12 [e3,ab3,b3]@9 ~@4 [e3,ab3,b3]@7 ~@5 [e3,ab3,b3]@6 ~@5", // E
  W: "a3@7 ~@5 [e3,a3,c4]@8 ~@4 [e3,a3,c4]@8 ~@4 [e3,a3,c4]@6 ~@6", // Am
  X: "[[g3,e4]@7 ~@5 [g3,c4,e4]@7 ~@5 [c4,eb4]@6 ~@6 [gb3,c4,eb4]@8 ~@4 f3@8 ~@4 [f3,bb3,d4]@9 ~@3 [e3,bb3,db4]@9 ~@3 [e3,bb3,db4]@8 ~@4, ~@47 bb3@8 ~@41]/2", // C Cm Cdim Bb Bbdim
  Y: "[e3,c4]@8 ~@4 [e3,a3,c4]@8 ~@5 e3@7 ~@4 [e3,a3,c4]@8 ~@4, ~@3 [a3,c4] ~@2", Z: "[e3,a3,c4]@5 ~@43",
  AA: "[f3,b3,d4]@8 ~@4 [f3,b3,d4]@8 ~@4 [f3,b3,d4]@8 ~@5 [f3,b3,d4]@8 ~@3", // Bdim
  AB: "[bb3,d4]@8 ~@5 d4@8 ~@3 [e3,bb3,d4]@9 ~@3 [e3,bb3,d4]@8 ~@4, ~@4 [f3,bb3]@3 ~@9", // Bb Em7b5 Bb5
  AC: "e3@8 ~@4 [e3,a3,c4]@8 ~@5 [e3,a3,c4]@7 ~@5 c4@8 ~@3, ~@9 [e3,a3]@2 ~", // Am A5
  AD: "~ [e3,c4]@8 ~@3 [e3,a3,c4]@8 ~@5 [e3,c4]@7 ~@4 [e3,a3,c4]@6 ~@6, ~@24 a3@7 ~@17", // C Am C Am
  AE: "~ g3@8 ~@3 [g3,c4,eb4]@9 ~@3 [gb3,c4,eb4]@9 ~@15, c4 ~@5", AF: "~@16 [f3,e4]@7 ~, ~@31 b3@14 ~@3",
  AG: "[f3,bb3,d4]@9 ~@4 [f3,bb3,d4]@8 ~@3 [g3,bb3,d4]@8 ~@4 [g3,bb3,d4]@7 ~@5", // Bb Gm
  AH: "[[e3,a3,c4]@9 ~@3 [e3,a3,c4]@8 ~@4 [f3,bb3,d4]@9 ~@3 [f3,bb3,d4]@8 ~@3 [g3,c4,e4]@8 ~@4 [g3,c4,e4]@8 ~@5 [ab3,db4,f4]@9 ~@15]/2", // Am Bb C Db
})).s("gm_electric_guitar_jazz").gain(0.14).pan(0.2)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~ A B C D E ~ F ~ A B C D G H ~@4 I J ~@2 K ~@3 L M N O P ~@10 Q@2 P R ~@6
>`.pickRestart({
  A: "~@25 d4@7 ~@16", B: "~ bb3@7 ~@16 bb3@7 ~@17", C: "[a3,c4]@8 ~@17 e3@8 ~@15, ~@8 [a3,c4]@3 ~@5", D: "~ a3@8 ~@39",
  E: "[b3,d4]@6 ~@19 d4@5 ~@18", F: "~ c4@7 ~@40", G: "~ f3@8 ~@39", H: "~ b3@7 ~@40", I: "~@8 gb3@3 ~@5",
  J: "~ c4@8 ~@39, gb3@3 ~@13", K: "d4@3 ~@13", L: "~ b3@5 ~@42, [e3,ab3] ~@7", M: "~ [e3,c4]@7 ~@40", N: "c4@7 ~@41",
  O: "d4 ~@5", P: "a3 ~@5", Q: "[~ f3@8 ~@39 c4@8 ~@40, ~@47 a3@9 ~@40]/2", R: "eb4 ~@5",
})).s("gm_electric_guitar_jazz").gain(0.08).pan(0.2)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D E F G@2 H I J K L M N O P Q R S T U V W X Y O Z AA AB AC AD AE AF J AG AH AI AJ ~ L AK AL AM AN AO AP AQ AR
  ~ AS
>`.pickRestart({
  A: "g1@11 ~ b1@12 d2@11 ~ b1@11 ~", B: "g1@10 ~@2 g1@11 ~ c2@10 ~@2 c2@11 ~",
  C: "f1@11 ~ f1@10 ~@2 c2@9 ~@3 c2@10 ~@2", D: "f1@12 a2@11 ~ ab2@10 ~@2 ab2@11 ~",
  E: "g2@10 ~@2 d2@11 ~ b1@11 ~ d2@11 ~", F: "g2@11 ~ g2@11 ~ c2@11 ~ c2@10 ~@2",
  G: "[f2@11 ~ f2@11 ~ g2@11 ~ c2@8 ~ f2@5 ~@46]/2", H: "g2@10 ~@2 d2@10 ~@2 g2@11 ~ d2@11 ~",
  I: "g1@11 ~ g2@11 ~ c2@10 ~@2 c2@11 ~", J: "f2@5 ~ f2@5 ~ c2@5 ~ c2@5 ~", K: "f2@10 ~@2 a2@11 ~ ab2@11 ~ ab2@9 ~@3",
  L: "g2@5 ~ g2@5 ~ d2@5 ~ d2@5 ~", M: "g2@11 ~ g1@11 ~ g2@11 ~ c2@10 ~@2", N: "f2@10 ~@2 f2@10 ~@2 c2@10 ~@2 c2@11 ~",
  O: "f2@5 ~ f2@5 ~ f2@5 ~ f2@5 ~", P: "bb1@10 ~@2 f2@12 bb1@10 ~@2 g1@11 ~", Q: "a1@11 ~ a2@11 ~ a1@10 ~@2 a2@12",
  R: "d2@10 ~@2 d2@10 ~@2 d3@12 d2@9 ~@3", S: "d2@10 ~@2 a2@11 ~ d2@10 ~@2 d2@11 ~",
  T: "g2@9 ~@3 d2@10 ~@2 g2@10 ~@2 c2@10 ~@2", U: "f2@10 ~@2 f2@10 ~@2 d2@10 ~@2 d2@11 ~",
  V: "g1@10 ~@2 g1@11 ~ g2@10 ~@2 g1@8 ~@4", W: "c2 ~@7", X: "g2@11 ~ d2@10 ~@2 g2@11 ~ g1@10 ~@2",
  Y: "c2@11 ~ g2@11 ~ c2@11 ~ c2@11 ~", Z: "f2@5 ~ c2@5 ~ f2@5 ~ f2@5 ~", AA: "a1@10 ~@2 a1@11 ~ d2@10 ~@2 d2@11 ~",
  AB: "g2@10 ~@2 g2@11 ~ c2@9 ~@3 c2@10 ~@2", AC: "f2@12 f3@11 ~ c3@11 ~ a2@10 ~@2", AD: "f2 ~@7",
  AE: "~@8 a1@16 eb2@9 ~@3 d2@10 ~@2", AF: "g2@10 ~@2 g2@10 ~@2 c2@11 ~ e2@10 ~@2",
  AG: "e2@9 ~@3 f2@11 ~ c2@10 ~@2 c2@10 ~@2", AH: "g2@10 ~@2 g2@10 ~@2 d2@10 ~@2 d2@11 ~",
  AI: "c2@10 ~@2 c2@10 ~@2 g2@11 ~ g2@10 ~@2", AJ: "f2@5 ~ f2@5 ~@13", AK: "g2@10 ~@2 g2@10 ~@2 c2@9 ~@3 c2@10 ~@2",
  AL: "f2@10 ~@2 f2@9 ~@3 c2@10 ~@2 c2@9 ~@3", AM: "f2@10 ~@2 a2@11 ~ f2@10 ~@2 f2@11 ~",
  AN: "a2@10 ~@2 a2@9 ~@3 d2@10 ~@14", AO: "~@32 g2@13 ~@3", AP: "c2@10 ~@2 c2@10 ~@2 eb2@9 ~@3 eb2@5 ~@3 e2@4",
  AQ: "f2@9 ~@3 f2@5 ~@3 gb2@4 g2@9 ~@3 g2@5 ~@3 ab2@3 ~", AR: "a2@11 ~ a2@6 ~@2 bb2@27 ~", AS: "~@32 f2@5 ~@11",
})).s("gm_acoustic_bass").gain(0.38)

// other · piano · "A.PIANO 1"
const piano = note("<~@9 A@2 B C D@2 E@2 ~ F G ~@9 H@3 I J ~@9 K@2 ~@3 L@4>".pickRestart({
  A: "[~@44 f5@13 ~@11 d5@10 ~@18]/2", B: "~@7 db5@4 ~@2 d5@7 ~@28", C: "~@12 d5@7 ~@29",
  D: "[~@44 d5@14 ~ e5 f5@8 d5@12 ~@16, ~@29 eb5 ~@18]/2",
  E: "[~@12 c5@3 ~ d5@2 ~@2 eb5@3 ~@2 g5@6 ~ f5@3 ~@2 e5@6 ~ eb5@17 ~@35]/2", F: "~@42 b5@3 bb5@2 ~",
  G: "~ a5@2 ~ g5@2 ~ gb5@2 ~ e5@3 ~ eb5@9 ~@25",
  H: "[[g4,c5,e5]@17 ~@3 [gb4,c5,eb5]@20 ~@4 [f4,a4,bb4,d5]@19 ~@4 [e4,a4,bb4,db5]@21 ~@4 [e4,a4]@38 ~@14, ~@91 [f4,c5]@38 ~@15]/3", // C Cdim Bbmaj7 A A5 F5
  I: "~@4 b4@3 ~ c5@3 ~ e5@4 f5@3 ~ ab5@3 ~ a5@3 ~ b5@3 ~ c6@2 ~@2 e6@3 ~ f6@3 ~ ab6@3 ~", J: "a6 ~@11",
  K: "[c7@8 ~@12 g5@3 ~@3 e5@7 ~@3 e5@6 ~@3 f5@5 ~@46]/2",
  L: "[~@12 c5@4 f5@3 ~ g5@3 ~ ab5@7 ~ a5@3 ~ f5@7 c5@15 ~@2 c5@4 d5@3 ~ f5@3 ~ ab5@7 ~ g5@3 ~ f5@7 ~ c5@85 ~@15]/4",
})).s("gm_piano").gain(0.38).pan(0.7)

// chords · alto sax
const alto_sax = note("<~ A@2 B@2 C@2 D ~@12 E@2 F G H I ~@5 J@2 ~@2 K ~ L M N O ~@2 P ~ Q@2 ~@3 R@2>".pickRestart({
  A: "[~@8 db4@4 d4@6 ~@2 f4@4 g4@6 ~ ab4@4 ~ a4@8 f4@23 d4@11 ~@18]/2",
  B: "[~@8 db4@4 d4@7 ~ f4@4 g4@7 ~ ab4@3 ~ a4@8 ~ f4@23 ab4@9 ~@19]/2",
  C: "[~@7 db4@4 ~ d4@7 f4@4 ~ ab4@7 ~ a4@4 f4@7 ~ d4@14 ~@2 [f4,a4]@7 ~ [e4,ab4]@27 ~]/2", // F E
  D: "~@12 [c4,d4]@4 [a3,d4,f4]@3 ~ [bb3,eb4]@4 [b3,e4,ab4]@7 ~ [c4,a4]@3 ~ [a3,c4,f4]@7 ~ [f3,a3,c4]@4, ~@12 a3@2 ~@5 g4@4 ~@8 f4@3 ~@14", // Csus2 Dm Eb5 E F
  E: "[~@8 [c4,e4,gb4,b4]@8 [c4,e4,gb4,bb4]@6 ~@2 [c4,e4,gb4,a4]@7 ~ [gb3,a3,e4]@7 ~ [gb3,a3,c4,eb4]@7 ~ [a3,b3,d4]@27 ~@3 [a3,b3,d4,f4]@6 [bb3,d4,e4,a4]@6 [g3,bb3,d4,e4]@6, ~@31 c4@7 ~@9 f3@26 ~@23]/2", // Cmaj7 C7 Gbm7b5 Gbm7 Gbdim Bm7 Bm7b5 Bbmaj7 …
  F: "~ a3@23 [gb3,bb3,c4,eb4]@20 [e3,ab3,bb3,db4]@4, [c4,e4,g4] ~", // Cm7b5 Bbm7b5 C
  G: "~ f3@7 [a3,b3,d4,f4]@4 ~ [b3,d4,f4]@35, [a3,b3,d4]@2 ~ a4@9", // Bm7b5 Bdim Bm7
  H: "~@12 [bb3,d4,e4,a4]@6 [a3,db4,eb4,ab4]@6 [ab3,c4,d4,g4]@6 ~ b3@5 [g3,b3,db4,f4]@6 ~ gb3@5, ~@5 [g3,db4,gb4] ~ [bb3,c4,eb4]", // Bbmaj7 Amaj7 Abmaj7 G7 Gb Cm7
  I: "[f3,a3,b3,d4] ~@3", J: "[~@9 e3@4 f3@3 ~ g3@3 ab3@3 ~ a3@4 b3@3 ~ c4@3 ~ e4@3 f4@3 ~ ab4@3 ~ a4@4 ~@45]/2",
  K: "~@8 [e3,g3,a3,c4]@4 [eb4,gb4,ab4,b4]@6 ~ [e4,g4,a4,c5]@4 ~ [e4,g4,a4,c5]@7 ~ [g3,a3,c4]@4 [eb4,gb4,ab4,b4]@6 ~@2 [e4,f4,a4,c5]@4, ~@31 e3@3 ~@14", // Am7 Abm7 Am7 Abm7 Fmaj7
  L: "~@20 c4@4 [db4,e4,ab4,b4]@6 ~ [d4,f4,a4,c5]@12 ~ [b3,eb4,f4,g4]@4", M: "[bb3,d4,e4,g4,a4,c5] ~@5",
  N: "~@18 c4@6 [db4,f4,ab4,c5]@6 ~ g4@5 [b3,eb4,gb4,bb4]@6 ~ [b3,d4,a4]@5, ~@5 [db4,e4,b4] ~ f4", // Dbmaj7 Bmaj7 Bm7 Dbm7
  O: "~ ab4@11 a4@12 [db4,eb4,gb4]@21 ~@3, a3@43 ~@5, [db4,e4] ~", P: "~@9 [g3,a3,c4,e4]@38 ~",
  Q: "[~@9 eb4@2 ~ g4@2 a4@3 c5@3 d5@36 db5@4 d5@4 ~ a4@4 f4@3 g4@23 ~]/2",
  R: "[~@12 [c4,e4,gb4,b4]@7 ~ [c4,e4,gb4,b4]@4 [b3,eb4,f4,bb4]@7 ~@2 b3@3 [bb3,db4,e4,a4]@7 ~ [a3,c4,d4,g4]@37 ~@15, ~@8 [eb4,f4,bb4] ~@15]/2", // Cmaj7 Bmaj7 A Am7 Ebsus2
})).s("gm_alto_sax").gain(0.33).pan(0.3)

// bass · baritone sax · "BARITONSAX"
const bass_2 = note("<~@24 A B ~@13 C D ~@9 E@2>".pickRestart({
  A: "~@12 gb2@6 b1@6 e2@7 a1@5 eb2@6 ab1@6", B: "g1 ~@3", C: "~@18 c3@6 bb2@6 eb3@6 ab2@5 ~ db3@6",
  D: "gb2@20 ~ e2 [c2,d2]@2 b1@21 ~@3", E: "[~@3 d3@3 g2@3 c3@2 f2@9 ~@4]/2",
})).s("gm_baritone_sax").gain(0.33).pan(0.1)

// chords · trumpet
const trumpet = note("<~@27 A B ~@4 C@2 D E F G@2 ~@5 H ~@6>".pickRestart({
  A: "~@21 b3 ~ e4 g4@4 f4@2 g4@4 f4@2 ab4@4 f4@2 ab4@4 f4 ~, ~@11 d4 ~@12", B: "a4@4 g4 [e4,f4] d4 [b3,c4] a3 g3 ~@38",
  C: "[~@8 [e5,a5]@16 [g5,a5]@8 ~@4 [gb5,a5]@7 ~ [f5,a5]@7 ~@5 [d5,g5]@4 [d5,g5]@6 ~@2 [c5,f5]@4 [d5,f5]@6 ~@2 [c5,e5]@4 [b4,e5]@6 ~@2 [ab4,d5]@4]/2", // A5 Gsus2 Gbm F G5 F5 Dm C …
  D: "[e4,f4,a4,e5] ~@5", // Fmaj7
  E: "[ab4,b4,db5,e5]@7 ~ [a4,c5,d5,f5]@3 ~ [a4,c5,d5,f5]@6 ~@2 [g4,a4,c5,e5]@3 ~ [g4,a4,c5,e5]@6 ~@2 [f4,a4,c5,d5]@3 ~ [f4,a4,c5,d5]@6 ~@2 [e4,gb4,a4,c5]@3 ~", // Dbm7 Dm7 Am7 Dm7 Gbm7b5
  F: "[f4,g4,bb4,d5]@3 ~@5", // Gm7
  G: "[~@8 [f4,g4,bb4,d5]@15 ~ [e4,g4,bb4,c5]@10 d5 c5 [e4,gb4,ab4,b4]@7 ~ [e4,f4,a4,c5]@23 ~@29]/2", // Gm7 C7 E Fmaj7
  H: "~@24 bb4@23 ~",
})).s("gm_trumpet").gain(0.33).pan(0.6)

// chords · muted trumpet · "MT TRUMPET"
const muted_trumpet = note("<~@9 A@2 B@2 C@2 D@2 ~@10 E F ~@15 G ~@3 H@4>".pickRestart({
  A: "[~@8 [ab4,b4]@3 ~ [a4,c5,d5]@7 ~ [c5,d5,f5]@4 [c5,d5,f5,g5]@8 [db5,e5,ab5]@3 ~ [d5,a5]@8 [bb4,d5,f5]@22 ~@2 [g4,bb4]@19 ~@9, ~@7 db5@4 ~@8 bb4@4 ~@12 f5@8 ~@24 d5@18 ~@11]/2", // Abm D7 Dm7 Csus4 Dbm D5 Bb Gm
  B: "[~@8 [ab4,b4,db5]@4 [g4,a4,c5,d5]@7 ~ [d5,f5]@4 [bb4,d5,f5,g5]@7 ~ ab5@4 [c5,f5,a5]@8 [a4,c5,d5,f5]@24 [b4,d5,f5,ab5]@28, ~@19 [a4,c5]@4 ~@8 [b4,e5,f5]@5 d5@5 ~@55]/2", // Db7 Gsus4 Dm Gm7 F Dm7 Bdim Am …
  C: "[~@8 f4@4 [g4,b4,d5]@7 [bb4,db5,f5]@4 ~ [b4,g5]@7 [db5,e5,ab5]@4 ~ [d5,a5]@8 [a4,b4,d5]@15 [bb4,eb5] [b4,d5,f5]@6 ~@2 [a4,b4,d5]@16 [g4,bb4,c5]@7 ~@5, ~@7 [bb4,db5]@4 ~@12 d5@7 ~@5 f5@8 ~@16 [c5,db5]@2 ~@35, ~@30 e5 ~@17]/2", // G Bbm Em Dbm D5 Bm7 Eb5 Bdim …
  D: "[~@12 [f4,a4,c5]@4 ~ c5@3 ~ b4@3 [a4,c5,d5,g5]@7 ~ [g4,b4,d5]@3 ~ [gb4,bb4,db5]@7 ~ [f4,a4,c5,eb5]@13 ~@39, ~@16 bb4@5 ~@10 f5@3 ~ e5@8 ~@53, ~@16 [g4,d5]@3 ~ [ab4,db5,eb5]@3 ~@73]/2", // F Am7 G Gb F7 G5 Absus4
  E: "~@21 b4 ~ e5 g5@3 ~ f5@2 g5@3 ~ f5@2 ab5@3 ~ f5@2 ab5@3 ~ f5 ~, ~@11 d5 ~@12",
  F: "a5@4 g5 [e5,f5] d5 [b4,c5] a4 g4 ~@38", G: "~@6 c5@17 ~",
  H: "[~@12 c5@4 f5@3 ~ g5@3 ~ ab5@7 ~ a5@3 ~ f5@7 c5@15 ~@2 c5@4 d5@3 ~ f5@3 ~ ab5@7 ~ g5@3 ~ f5@7 ~ c5@85 ~@15]/4",
})).s("gm_muted_trumpet").gain(0.33).pan(0.6)

// chords · trombone
const trombone = note("<~@6 A ~@9 B C D@2 ~@5 E@2 F ~@3 G ~ H@2 I J K L@2 ~ E@2 ~@2 M N O@3 ~ P>".pickRestart({
  A: "~@12 g3@7 ~ c3@28", B: "~@9 [g3,d4]@15 ~ gb3@23, ~ a3@5, ~@24 db4@23 ~",
  C: "~@13 f3@7 [g3,bb3,d4,f4]@28, ~@3 bb3@2 ~@7", // Gm7
  D: "[gb4@12 f4@12 e4@8 f4@4 ~ gb4@3 ~ e4@3 ~@2 [gb3,c4]@50, [g3,b3,db4]@44 eb4@47 ~@5, ~@15 bb3@16 ~]/2", // Gbdim Dbm7b5
  E: "[~@12 [f3,b3,d4]@8 ~ a3@3 [f3,b3,d4]@7 ~ [a3,d4,f4]@4 [f3,b3,d4]@6 ~@2 [f3,bb3,d4]@24 [g3,bb3,d4]@16 ~@12, ~@5 [d4,f4] ~@18]/2", // Bdim Dm Bdim Bb Gm Dm
  F: "~ [f2,ab3,b3,e4]@5", G: "~@3 c4@13, ~ [f2,g3,a3]@5",
  H: "[~@8 [g3,db4,e4]@15 ~ [g3,c4,eb4]@8 ~@4 [gb3,c4,d4]@7 ~ [f3,a3,bb3,d4]@8 ~@3 [f3,a3,bb3,d4]@3 ~@2 [f3,a3,bb3,d4]@6 ~ [f3,a3,bb3,c4]@3 ~@2 [e3,a3,bb3,d4]@6 ~@2 [e3,a3,bb3,c4]@3 ~ [e3,a3,bb3,c4]@6 ~@2 [e3,ab3,bb3,c4]@3 ~]/2", // Dbdim Cm D7 Bbmaj7 F Dsus2 Am Eaug
  I: "[e3,g3,a3,c4] ~@11", // Am7
  J: "[gb3,ab3,b3,e4]@7 ~@2 g3@3 ~ [g3,a3,c4]@7 [g3,a3,c4,e4]@3 ~@2 g3@6 ~ [f3,a3,c4,d4]@3 ~ [f3,a3,c4,d4]@7 ~ [e3,gb3,a3,c4]@4, ~@8 [a3,c4,f4]@4 f4@7 ~@5 [a3,c4,e4]@7 ~@17", // E Am7 Dm7 Gbm7b5 F Am
  K: "[f3,g3,bb3,d4]@3 ~@5", // Gm7
  L: "[~@8 [f3,a3,bb3,d4]@14 ~@2 [e3,g3,bb3,c4]@10 ~@2 [e3,gb3,ab3,b3]@7 ~ [e3,g3,a3,c4]@22 ~@30]/2", // Bbmaj7 C7 E Am7
  M: "~@7 [g3,c4]@17 [gb3,bb3]@13 ~@11, ~@7 eb4@29 ~@12", N: "~@31 [f3,a3,b3,e4]@16 ~",
  O: "[[f3,g3,bb3,d4]@42 ~ [ab3,g4]@5 [a3,f4]@19 ~ [bb3,d4,f4]@22 ~@2 [c4,e4,g4]@23 ~ [ab3,db4,f4]@25 ~@3, ~@43 [c4,d4]@23 ~ g3@23 ~ g3@23 ~@30]/3", // Gm7 Abmaj7 Dm Bb C Db Csus2
  P: "~@32 [f2,c4]@5 ~@11", // F5
})).s("gm_trombone").gain(0.38).pan(0.6)

// other · tuba
const tuba = note("<~@32 [~@4 d3@3 ~ db3@3 c3@4 bb2@3 ~ a2@4 g2@3 ~ f2@3 ~ e2@4 d2@4 ~ c2@3 ~ bb1@4] [a1 ~@11] ~@18>")
  .s("gm_tuba").gain(0.38).pan(0.7)

// other · piccolo
const piccolo = note(`<
  ~@32
  [~@4 b5@3 ~ c6@3 ~ e6@4 f6@3 ~ ab6@3 ~ a6@3 ~ b6@3 ~ c7@2 ~@2 e7@3 ~ f7@3 ~ ab7@3 ~]
  [a7 ~@11]
  ~@18
>`).s("gm_piccolo").gain(0.38).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@33 [~ x ~ x ~@2] [x!2]!5 x ~@11 [~@2 x]>").gain(0.44)

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

// drums · crash
const crash = s("cr").struct("<~@33 [~ x ~@4] x ~@17>").gain(0.49)

// drums · ride
const ride = s("rd").struct("<~@34 [~@3 x ~ x!2 ~@2 x ~ x] [x ~@2 x ~ x!2 ~@2 x ~ x]!4 [~@3 x ~ x!2 ~@5] ~@12>")
  .gain(0.33)

stack(
  electric_guitar_jazz, electric_guitar_jazz_2, bass, piano, alto_sax, bass_2, trumpet, muted_trumpet, trombone, tuba,
  piccolo, kick, snare, crash, ride
)

More by Nat King Cole