Strudelify
Christmas Song cover art

The Christmas Song

Christmas Song

Nat King Cole

KeyC majorTempo68 bpm
0:00/0:00
// Christmas Song — Nat King Cole
// 68 bpm, 4/4, key C 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 55 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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 E F G H I J K L M N O P Q R S T U V W@2 X@2 Y Z AA AB AC AD AE AF AG AH U V W@2 X@2 Y Z AA AB AC AD AE AF
  AI@4
>`.pickRestart({
  A: "~@5 a1 ~@2 [f3,a3,c4]@4, [c1,c2]@9 ~@3 [d1,d2]@10 ~@2, ~ [e3,g3,b3]@2 ~@3", // F C D Em
  B: "~@5 a1 ~@5 g1, [e1,e2]@9 ~@3 d2@10 ~@2, ~ [g3,b3,d4]@2 d1@2 ~, ~@2 [f3,a3,c4]", // E G F
  C: "~@10 a1@2 ~@10 [d1,d2] ~, [c1,c2]@9 ~@3 [d1,d2]@10 ~@2, ~ [e3,g3,b3]@2 ~ [f3,a3,c4]@2", // D C D Em F
  D: "~@4 [g3,b3,d4]@8 [d1,d2]@4 ~@2 g1@5 ~, [e1,e2]@10 ~@6 [f3,a3,c4]@7 ~", // G D E F
  E: "[e3,g3,b3]@8 [e3,g3,b3]@2 c2@2 f3@6 ~@2 a3@3 ~, [c1,c2]@11 ~ [d2,c4]@11 ~, ~@3 a3@2 ~, ~@18 f3@5 ~", // Em C D7
  F: "g3@4 ~@6 e2@2 a3@4 ~@4 [e2,g3,d4]@2 [d2,f3,c4] ~, e2@5 ~ f2@5 ~, d4@4 d4@2 e4@3 e4@2 ~, ~@2 g3@4 ~@2 a3@3 ~", // Em7 Dm7
  G: "e3@2 ~@3 c2 [b1,a3,d4,e4]@3 ~@2 e4, b3 ~, c2@5 ~@4 [e2,g#3,d4]@3, ~ e3@2 ~@3", // Bm7 E7
  H: "c4@4 ~ a1 f#3@3 ~@2 g#1, g3@2 ~ f#3, a1@5 ~ g#1@5 ~, ~@2 c4 c4@2 c4",
  I: "~@5 [g1,c4] ~@5 [f1,d4], [g1,c4]@5 ~ [f1,d4]@5 ~, a3@2 a3 ~@2 c4, g3!2 ~@2, ~ e3@2 [d3,g#3]@3", // C5 Dm C5 Dm Ddim
  J: "g3@2 ~@3 e2 c4@2 ~@3 a4, g4@2 f#4!2, e2@5 ~ [d#2,b4]@6, c4@2 c4 ~ c4@2, ~ g3@2 ~@2 b3", // G#m
  K: "b3@4 ~@4 g#4@2 e2 ~@5 g#4@2 ~@2 [g#3,d4,g4]@2 f4 ~, [e2,d#4]@11 ~ [f2,c4,d#4,a#4]@6 a#1@6, g#4 ~@2, ~@4 b3@7 ~@13", // G Emaj7 Fsus4
  L: "g3@4 ~@6 d#2@2 [d2,a3,c4]@6 f3@3 ~ f3@2, g4 ~, d#2@4 g3@2 f3 ~@2 [g2,g#3,b3]@3, ~ [a#3,d4]@2 ~@3", // D7 G A#
  M: "~@11 a2, c2@9 ~ a2@11 ~@3, ~@2 [e3,g3,a3,c4]@4 d2@5 ~, ~@2 [f3,a3,c4]", // Am7 F
  N: "~@4 [b2,g3,d4]@7 ~ [f2,c3,a3,e4]@7 ~ [e2,b2,d4] ~ [d2,a2,f3] ~, e2@11 ~@9 g3@2 c4@2", // G Fmaj7 E7 Dm
  O: "e3@4 e3@4 ~@2 c2@2 [b1,a3,d4]@6 [e2,g#3,d4]@5 ~, [g2,b3] ~, c2@5 ~@7, ~@2 e3 ~@3", // Bm7 E7 G
  P: "c4@8 c4@2 a1@2 f#3@4 f#3@6 g#1 ~, [a1,g3]@11 ~ [g#1,c4]@11 ~", // A7 G#
  Q: "~@8 [a3,c4]@2 g1 ~ f3@4 ~@6 [f1,d4]@2, g1@5 ~ [f1,d4]@5 ~, [a3,c4]@2 ~ g#3@3, g3@6 g3@5 ~ c4@8 c4@4, ~@4 e3@7 ~@5 f3@8", // Am Dm Am
  R: "~@5 e1 [g3,d4,e4,b4]@3 ~@2 a1, [g3,c4,e4]@2 ~ [g3,c#4,f4], e1@5 ~ a1@5 ~, ~ g4@2 ~@3, ~@2 a4 ~@3", // Em7 C Gm7b5
  S: "c4@2 ~@3 d2 ~@5 g1, e4 ~, d2@5 ~ g1@5 ~, f3@3 f3@3 ~@2 [f3,g#3,b3,d4]@4, ~ c4@2 ~@3", // Fdim
  T: "e3@3 ~@7 a3@2, c2@5 g3 c2@6, [g3,a3,c4]@5 c4@7, ~ e3@3, ~@5 a3@4 g3@3", // Am7
  U: "~@2 f3@2 f3 g2 ~@5 c3, [g2,d3]@11 ~ c3@10 ~@2, ~@4 [a#3,f4]@7 ~@5 [e3,a#3,e4]@8", // G5 A#5 Edim
  V: "c3 ~ a3 ~@8 [d3,a3], f2, ~@2 a4@4 d3@3 c3@3, ~ e4!2 d4@3, ~@3 a3@2 a3 a4@2 a3@2 [c4,a4]@2", // D5 F
  W: "[~@5 g2 ~@12 f3@2 f3@2 ~ e3, [d3,f3,a#3]@6 c3@4 f4 c3@5 c4 c3@7, g2@5 ~@3 g4@4 g3@2 e4@4 ~@6, ~@2 [d4,f4,a#4]@4 e4@6 c4@3 g3@3 ~@4 f3@2, ~@4 c5@2 a#3@3 a#3@3 f2@6 [f2,a3,d4]@6]/2", // A# Dm
  X: "[d#3@2 ~@3 f2 g#3@2 g#3 ~@9 g3@2 ~@3 d#2, c4@6 ~@6 [a#3,f4]@5 d#2@5 c4@2, f2@5 ~ a#2@5 a#2@7 ~@2 g3@4, g#3@4 g#3@2 ~@3 [g#3,d4,g4]@3 g3@2 d4 g3@3 a#3@6, ~@2 d#3@4 [d3,c4]@6 d#2@4 d4@2 c4@3 a#2@3]/2", // A#5 G D7
  Y: "g3@2 ~@4 f#3@2 ~@3 d2, d4!2, d2@5 d2@6 ~, c4@2 c4 c4@2 c4, ~ g3@2 ~ f#3@2",
  Z: "f3@2 ~@2 d4 ~@4 g2@2 g2, g2@5 g2@4 ~@3, d4 ~@2, c4@3 c4@2 ~@7, ~@2 f3@3 ~ [f3,g#3,b3,e4]@6", // E
  AA: "~@11 a2, c2@9 ~ a2@11 ~@3, ~@2 [b3,d4,e4,g4]@4 d2@5 ~, ~@2 [c4,f4,a4]", // Em7 F
  AB: "~@4 [d4,g4,b4]@8 ~@4 a4@4 [e2,g3]@2 [d2,f3,c4,f4] ~, e2@12 [f2,a3,e4]@8 [d4,g4] ~@3", // G Em Dm7 Fmaj7 G5
  AC: "e3@6 ~@2 b3@2 c2 ~ [b1,d3,a3,d4]@6 [d3,g#3]@5 ~, [c2,e4]@11 ~@13, b3 ~@2, ~@6 e3@5 ~@13", // Bm7 Ddim C
  AD: "g3@2 ~@3 a2 f#3@2 f#3 ~@2 g#2, a2@5 ~ g#2@5 ~, c4@2 c4 c4@3, ~@2 g3@4 ~@3 [f#3,d4]@3", // D
  AE: "e3@3 ~@2 g2 ~@5 d4, g3@3 ~@2 c4, g2@5 ~ [f2,g#3]@6, [a3,c4]@4 [a3,c4]@2 d4@5 ~, ~@3 e3@3 ~@2 f3@4", // Fm Am
  AF: "~@5 e2 d4@2 ~@3 a2, [g3,e4]@2 g3 [g3,c#4], e2@5 ~ a2@5 ~, ~ g4@2 ~ d4@2, ~@2 a4 ~@2 f4", // C Gdim
  AG: "c4@2 ~@3 d2 ~@2 [f3,g#3,b3,d4]@4, e4 ~, d2@5 ~ g2@6, f3@2 f3 ~@3, ~ c4@2 ~@3", // Fdim
  AH: "e3@3 ~@8 c5, [c2,c4]@6 [c2,c4] d4 e4 g4 a4@2, a3@5 a3@7, g3 g3@2, ~ e3@3", // C
  AI: "[c4@5 ~@9 d2@3 ~@5 [f3,g#3,b3,d4]@15 e3@8 ~@22 c5@27 ~@2, e4@17 ~@20 g3@11 g3@8 d4@3 e4@3 g4@3 a4@5 ~@26, d2@14 ~@3 g2@21 ~@8 e3@24 ~@26, f3@10 f3@6 ~@21 [c2,c4]@16 ~ [c2,c4]@16 ~@26, ~@5 c4@12 ~@20 a3@14 a3@19 ~@26]/4", // Fdim C
})).s("gm_piano").gain(0.28)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D E F G H I J K L M N G O P Q R S T U V W X Y Z AA M AB AC AD AE AF R AG T U V W X Y Z AA M AB AC AD AE AF
  AH@3 ~
>`.pickRestart({
  A: "c2@9 ~ a1@2 d2@10 a1@2", B: "e2@10 a1@2 d2@9 ~ g2@2", C: "c2@5 a1 d2@5 a1", D: "e2@5 a2 d2@3 g1@3",
  E: "c2@9 ~ c2@2 d2@12", F: "e2@6 f2@4 e2 d2", G: "c2@2 b1 e1", H: "a1@12 g#1@9 ~ g#2@2", I: "g2@9 ~ g1@2 f1@10 f2@2",
  J: "e2@11 ~ d#2@12", K: "e2@11 ~ f2@6 a#1@5 ~", L: "d#2@12 d2@6 g1@5 ~", M: "c2@5 g1 d2@5 g1",
  N: "e2@11 ~ f2@8 e2@2 d2@2", O: "a1@12 g#1@9 ~ g#1@2", P: "g1@5 g2 f2@6", Q: "e2@11 ~ a1@6 a1@6",
  R: "d2@12 g1@9 ~ g1@2", S: "c2@11 ~ c2@12", T: "g1@11 ~ c2@9 ~ c2@2", U: "f2@12 c3@6 c2@5 ~", V: "g1@9 ~ g2@2 c2@12",
  W: "f2@12 c2@5 ~ c2@6", X: "f1@4 f2 b1 a#1@3 a#2@3", Y: "d#2@11 ~ d#2@12", Z: "d2@11 ~ d2@12",
  AA: "g1@10 g2 ~ g2@6 g1@5 ~", AB: "e2@12 f2@7 ~ e2@2 d2 ~", AC: "c2@12 b1@5 ~ a#1@6", AD: "a1@6 g#1@5 g#2",
  AE: "g2@10 g1@2 f1@9 ~ f2@2", AF: "e2@11 ~ a1@6 a2@6", AG: "c2!2", AH: "[d2@16 ~ g1@15 ~ g1@4 c2@16 ~ c2@16 ~@2]/3",
})).s("gm_acoustic_bass").gain(0.5)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A B A C@2 D E F G H I J K L M N@2 ~ O P ~@3 Q R S T U ~@8 V W X Y Z AA AB AC ~@10
>`.pickRestart({
  A: "~ d5@2 ~ c5@2, d6 c6, ~ [g5,b5]@5 ~ [f5,a5]@5", // G F
  B: "~@4 d5@8 ~@4 c5@7 ~, d6@12 c6@11 ~, ~@2 [g5,b5]@10 ~@2 [f5,a5]@9 ~", // G F
  C: "[~@2 d5@4 ~@2 c5@3 ~ [e5,g5]@6 [c4,f4,a4]@6, d6@6 c6@5 b4@7 ~@6, ~@2 [g5,b5]@10 ~@2 [f5,a5]@9 ~@25]/2", // Em F G F
  D: "[d4,g4,b4]@6 [e4,a4]@4 [d4,g4] [c4,f4]", E: "[b3,e4]@2 [a3,d4] [g#3,d4]",
  F: "c4@5 c4 ~@4 c4@2, [g3,b3] f#3, ~@3 c4@2 ~, ~@2 a#3", G: "[g3,a3,c4] [f3,g#3,d4]",
  H: "~@2 g4 [b3,f#4]@3, [e3,g3,d4] ~, ~ e4@2 ~@3", I: "[d#4,f#4,g#4]@2 d#4 d4, ~ g#4",
  J: "~@4 g4@2 [c4,f4,g4]@3 [b3,f4]@3, d4 ~, g4 ~@2, ~ c4@2 ~@3", K: "~@2 e5 [f4,a4]@3, [b3,e4]@13 ~@11, ~@4 b4@9 ~@11",
  L: "~@8 g5@4 [a4,e5]@8 [g4,d5] ~ [f4,c5] ~, [d4,g4,b4] ~, ~ d5@2 ~@3", M: "[e4,b4]@11 ~ [d4,a4]@5 ~ [d4,g#4,c5]@5 ~",
  N: "[b4 a4 ~@2 [c4,g4]@4, [c4,g4] c4 ~@2, ~@3 d4@5]/2", O: "[f3,a3] [g#3,b3,d4]", P: "[e3,g3,c4]@23 ~",
  Q: "~@5 g4, ~ [g3,c4]@3, ~@5 d4@7, ~ e4, ~@2 f4", R: "[c4,d#4,g#4]@11 ~ [d4,g#4]@10 ~@2",
  S: "~@10 c5@13 ~, [d4,g4,a#4]@23 ~, ~@6 [d5,g5]@17 ~, ~@8 a#5@15 ~", T: "~ b4 ~ a4, [c4,d4,g4] [c4,f#4]",
  U: "~@2 c5@2 [f4,g#4,b4]@3 ~, [c4,f4] ~", // Fdim F5
  V: "[d5,f5,a#5,c6] ~ [d5,f5,a#5,c6] ~ [d5,f5,a#5,c6] ~ [d5,f5,a#5,c6] ~ [d5,f5,a#5,c6] ~ [d5,f5,a#5,c6] ~ [e5,g5,a#5,c6] ~ [e5,g5,a#5,c6] ~ [e5,g5,a#5,c6] ~ [e5,g5,a#5,c6] ~ [e5,g5,a#5,c6] ~ [e5,g5,a#5,c6] ~", // A# C7
  W: "[e5,a5,c6] ~ [e5,a5,c6] ~ [e5,a5,c6] ~ [e5,a5,c6] ~ [e5,a5,c6] ~ [e5,a5,c6] ~ [d5,f5,c6] ~ [d5,f5,c6] ~ [d5,f5,c6] ~ [d5,f5,c6] ~ [d5,f5,c6] ~ [d5,f5,c6] ~", // Am Dm7
  X: "[d5,f5,a#5] ~ [d5,f5,a#5] ~ [d5,f5,a#5] ~ [d5,f5,a#5] ~ [d5,f5,a#5] ~ [d5,f5,a#5] ~ [e5,g5,c6] ~ [e5,g5,c6] ~ [e5,a#5,c6] ~ [e5,a#5,c6] ~ [e5,a#5,c6] ~ [e5,a#5,c6] ~", // A# C C7
  Y: "[e5,a5,c6] ~ [e5,a5,c6] ~ [e5,a5,c6] ~ [e5,a5,c6] ~ [e5,a5,c6] ~ [e5,a5,c6] ~ [d5,a5,c6] ~ [d5,a5,c6] ~ [d5,a5,c6] ~ [d5,a5,c6] ~ [d5,a5,c6] ~ [d5,a5,c6] ~", // Am D7
  Z: "[d#5,g#5,c6] ~ [d#5,g#5,c6] ~ [d#5,g#5,c6] ~ [d#5,g#5,c6] ~ [d#5,g#5,c6] ~ [d#5,g#5,c6] ~ [d5,g#5,c6] ~ [d5,g#5,c6] ~ [d5,g#5,c6] ~ [d5,g#5,c6] ~ [d5,g#5,c6] ~ [d5,g#5,c6] ~", // G# Dm7b5
  AA: "[d5,g5,a#5] ~ [d5,g5,a#5] ~ [d5,g5,a#5] ~ [d5,g5,a#5] ~ [d5,g5,a#5] ~ [d5,g5,a#5] ~ [c5,g5,a#5] ~ [c5,g5,a#5] ~ [c5,g5,a#5] ~ [c5,g5,a#5] ~ [c5,g5,a#5] ~ [c5,g5,a#5] ~", // Gm C7
  AB: "[c5,g5,a5] ~ [c5,g5,a5] ~ [c5,g5,a5] ~ [c5,g5,a5] ~ [c5,g5,a5] ~ [c5,g5,a5] ~ [c5,f#5,a5] ~ [c5,f#5,a5] ~ [c5,f#5,a5] ~ [c5,f#5,a5] ~ [c5,f#5,a5] ~ [c5,f#5,a5] ~", // Am7 F#dim
  AC: "[c5,f5,a5] ~@23", // F
})).s("gm_epiano2").gain(0.22)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A B A B C ~@7 D E F G H I J K ~@4 L M N O P Q R S H T U K V W X Y L M Z AA P AB R S H T AC@4
>`.pickRestart({
  A: "[c2,e3,b3] [d2,f3,c4]", B: "[e2,g3,d4] [d2,f3,c4]", C: "[g2,e3,b3]@11 ~@13", D: "[c3,b3,e4] [d3,c4,f4]",
  E: "[e3,d4,g4]@6 [f3,e4,a4]@4 [e3,d4,g4] [d3,c4,f4]", F: "[c3,b3,e4]@2 [b2,a3] [e2,g#3], ~ d4",
  G: "[a2,g3] [g#2,f#3], c4", H: "[g2,e3,c4] [f2,g#3,d4]", I: "d4 c4 b3 a#3, g3, e2 a2",
  J: "~ d2 [g2,f3,b3]@2, [f3,c4] ~", K: "[c2,g2,e3,c4]", L: "[f2,g#3,d#4] [a#2,g#3,d4]", M: "d4 c4, [d#3,g3]",
  N: "c4 f#3, [d3,g3]", O: "[d3,f3,c4] [f3,b3], g2", P: "[c2,g2,e3,b3] [d2,a2,f3,c4]",
  Q: "[e2,b2,g3,d4]@6 [f2,c3,a3,e4]@4 [e2,b2,g3,d4] [d2,a2,f3,c4]", R: "[c3,b3,e4]@2 [b2,a3] [a#2,g#3], ~ d4",
  S: "[a2,g3]@2 ~ d4, c4@3 ~, ~ [g#2,f#3]", T: "d4 c4 b3 a#3, [e2,g3] [a2,g3]", U: "[d2,f3,c4] [g2,f3,b3]",
  V: "[g2,f4] [c3,e4], a#3", W: "[f2,c3,e4] [d3,d4], a3", X: "[g2,d3,a#3,f4] [c3,a#3,e4]",
  Y: "[f2,c3,e4]@2 [d3,d4] [c3,c4], a3@3 ~", Z: "[g3,c4] f#3, d3", AA: "[g2,d3,f3,c4] [g2,f3,b3]",
  AB: "[e2,b2,g3,d4]@12 [f2,c3,a3,e4]@8 [e2,b2,g3] ~ [d2,a2,c4] ~, ~@10 d4 f3", // Em7 Fmaj7 Em D7
  AC: "[[d2,f3,c4]@17 [g2,f3,b3]@20 [c2,g2,e3,c4]@58 ~]/4", // Dm7 G7 C
})).s("gm_string_ensemble_1").gain(0.32)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<A@6 ~@30 B C D E F G H I J@3 K L M N O@4>".pickRestart({
  A: "[g6@11 ~]/6", B: "~@4 c5!2", C: "a#5@9 ~ a#5@2 a#5@3 ~ a5@4 g5@2 f5@2", D: "g5@11 ~@5 c5@4 c5@3 ~",
  E: "a#5@6 c6@6 a#5@3 ~ a5@4 g5@2 f5@2", F: "g5@7 ~@3 c5@2", G: "g#5@9 ~ g#5@2 g#5@3 ~ g5@4 f5@2 d#5@2",
  H: "f5@9 d#5@2 ~", I: "d5@12 d5@9 ~ a4@2", J: "[d5@9 g5@18 g6@3 e6@4 d6 c6]/3", K: "b5@2 a5 g#5", L: "g5@2 c6 d6",
  M: "e6 f6", N: "g6@5 a6 b6@3 c7@2 a6", O: "[g6@7 c6@10 d6@20 c6@56 ~@3]/4",
})).s("gm_string_ensemble_2").gain(0.19)

// other · orchestral harp · "HARP"
const orchestral_harp = note("<A B ~@34 C ~@7 D ~@6 E F G ~>".pickRestart({
  A: "~@13 [e3,f3] [g3,a3] [b3,c4] [d4,e4] [f4,g4] [a4,b4] [c5,d5] [e5,f5] [g5,a5] [b5,c6] [d6,e6]", B: "[f6,g6] ~@23",
  C: "[e3,g3] [a3,c4] [d4,e4] [g4,a4] [c5,d5] [e5,g5] [a5,c6] [d6,e6] [g6,a6] c7 ~@14", // Em Am Dsus2 Gsus2 Csus2 Em Am Dsus2 …
  D: "~@2 [f3,g3] [a3,c4] [d4,f4] [g4,a4] [c5,d5] [f5,g5] [a5,c6] [d6,f6] [g6,a6] c7 [g#6,b6] [d6,f6] [g#5,b5] [d5,f5] [g#4,b4] [d4,f4] [g#3,b3] [d3,f3] ~@4", // Fsus2 Am Dm Gsus2 Csus2 Fsus2 Am Dm …
  E: "c7 [f6,a6] [a5,c6] [c5,f5] a4 [c4,f4] [f3,a3] c3 ~@9 d3 [f3,g3] [g#3,b3] [d4,e4] f4 [g4,g#4] [b4,d5]", // F Am F5 F Fsus2 G#m Dsus2 G#maj7 …
  F: "e5 f5 g5 g#5 b5 d6 ~ f6 g#6 b6 ~@3 c3 d3 [e3,g3] a3 [c4,d4] e4 g4 [a4,c5] d5 [e5,g5] a5", // Em Csus2 Am Em
  G: "[c6,d6] e6 [g6,a6] c7 ~@20", // Csus2 Gsus2
})).s("gm_orchestral_harp").gain(0.15)

// other · glockenspiel · "GLOCKENSPL"
const glockenspiel = note("<A B C ~@26 D E F G H I J K ~@8 D E F G H I L M ~@2>".pickRestart({
  A: "~@18 g6 ~@3 g6 ~", B: "g6 ~@17 g6 ~@3 g6 ~", C: "e6 ~@3 g6 ~@19", D: "b5 ~@11 c6 ~@11",
  E: "d6 ~@11 e6 ~@7 d6 ~ c6 ~", F: "b5 ~@11 a5 ~@5 g#5 ~@5", G: "g5 ~@5 c6 ~@11 d6 ~@5", H: "e6 ~@11 f6 ~@11",
  I: "g6 ~@9 a6 ~ b6 ~@5 c7 ~@3 a6 ~", J: "g6 ~@5 c6 ~@11 d6 ~@5", K: "c6 ~@23", L: "g6 ~@6 c6 ~@16",
  M: "d6 ~@12 c6 ~@10",
})).s("gm_glockenspiel").gain(0.22)

// drums · rim
const rim = s("rim").struct("<~ [~ x ~ x]!50 ~@4>").gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C D E F G H I J B K A B C D E F G H I J B K A B C D E F G H I J B K I J B K A B C D E F G H I J ~@4
>`.pickRestart({
  A: "~@2 x!2 ~@2 x ~ x!2 ~ x", B: "x ~ x!2 ~ x!2 ~@2 x ~ x", C: "~@2 x!2 ~@2 x ~@2 x ~ x", D: "x ~ x!2 ~@2 x ~@5",
  E: "~@3 x ~@2 x ~ x!2 ~ x", F: "x ~ x!2 ~ x!2 ~@2 x!2 ~", G: "x ~ x!2 ~ x!2 ~ x!2 ~ x", H: "x ~ x!2 ~@2 x ~ x!2 ~ x",
  I: "x ~@2 x ~@2 x ~@2 x ~ x", J: "x ~@2 x ~ x!2 ~@2 x ~ x", K: "x ~ x!2 ~ x ~@5 x",
})).gain(0.32)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A ~ A B C D ~ A E F D@2 A ~ A B C D ~ A E F D@2 A ~ A B C D ~ A E F D@2 E F D@2 A ~ A B C D ~ A E F ~@4
>`.pickRestart({
  A: "~@5 x ~@6", B: "~@5 x", C: "~@2 x ~@2 x ~@6", D: "~@2 x", E: "~@2 x ~@2 x ~@2 x ~@3", F: "~ x ~@2 x ~",
})).gain(0.19)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A ~ A ~@9 A ~ A ~@9 A ~ A ~@13 A ~ A ~@10>".pickRestart({
  A: "~@2 x",
})).gain(0.32)

// drums · ride
const ride = s("rd").struct(`<
  ~ A ~ A ~ A ~@6 B A ~ A ~ A ~@6 B A ~ A ~ A ~@6 B ~@3 B A ~ A ~ A ~@5 C D ~@2
>`.pickRestart({
  A: "x", B: "~@2 x!2", C: "x ~@16 x ~@6", D: "~@13 x ~@10",
})).gain(0.39)

stack(
  piano, bass, epiano2, string_ensemble_1, string_ensemble_2, orchestral_harp, glockenspiel, rim, hihat, hihat_soft,
  open_hat, ride
)

More by Nat King Cole