Strudelify
White Christmas cover art

1962

White Christmas

Bing Crosby

KeyF minorTempo143 bpm
0:00/0:00
// White Christmas — Bing Crosby
// 143 bpm, 4/4, key A major. Source: mcgill + 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: Full arrangement: all 91 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(143/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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~ A@2 B C A@2 B C A@2 B C D E F G H I J K L M N C A@2 B C D E F G H I J K L O A P Q@2 R S T U V W X Y Z AA AB AC AD S
  Q@2 R S T U V AE X Y Z AA AB AF Q@2 R S Q@2 R S Q@2 R S Q@2 R S AG@4
>`.pickRestart({
  A: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~", // C
  B: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~", // F
  C: "[f4,g4,b4] ~ [f4,g4,b4] ~ [f4,g4,b4] ~ [f4,g4,b4] ~ [f4,g4,b4] ~ [f4,g4,b4] ~ [f4,g4,b4] ~ [f4,g4,b4] ~", // G7
  D: "[f4,a4] ~ [f4,a4] ~ [f4,a4] ~ [f4,a4] ~ [g4,b4] ~ [g4,b4] ~ [a4,c5] ~ [a4,c5] ~", // F G Am
  E: "[b4,d5] ~ [b4,d5] ~ [a4,c5] ~ [a4,c5] ~ [g4,b4] ~ [g4,b4] ~ [f4,g4,a4] ~ [f4,a4] ~", // Bm Am G F
  F: "[e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [d4,e4,g4] ~ [d4,e4,g4] ~ [d4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // Em Em7 C
  G: "[d4,e4,g4] ~ [d4,e4,g4] ~ [d4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // Em7 C
  H: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~", // C Em
  I: "[e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~ [e4,g4,a#4] ~", // Edim
  J: "[c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~", // F
  K: "[d4,f4,g#4] ~ [d4,f4,g#4] ~ [d4,f4,g#4] ~ [d4,f4,g#4] ~ [d4,f4,g#4] ~ [d4,f4,g#4] ~ [d4,f4,g#4] ~ [d4,f4,g#4] ~", // Ddim
  L: "[e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~", // Em
  M: "[c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~ [c4,e4,a4] ~", // Am
  N: "[f4,a4] ~ [f4,a4] ~ [f4,a4] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~", // F
  O: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [g4,b4] ~ [f4,g4,b4] ~ [f4,g4,b4] ~ [f4,g4,b4] ~, ~@4 f4 ~@3", // F G G7
  P: "[d#4,g#4] ~ [d#4,g#4,c5] ~ [d#4,g#4,c5] ~ [d#4,g#4,c5] ~ [d#4,g#4,c5] ~ [d#4,g#4,c5] ~ [d#4,g#4,c5] ~ [d#4,g#4,c5] ~, c5 ~@7", // G#5 G#
  Q: "[f4,g#4,c#5] ~ [f4,g#4,c#5] ~ [f4,g#4,c#5] ~ [f4,g#4,c#5] ~ [f4,g#4,c#5] ~ [f4,g#4,c#5] ~ [f4,g#4,c#5] ~ [f4,g#4,c#5] ~", // C#
  R: "[f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~", // F#
  S: "[f#4,g#4,c5] ~ [f#4,g#4,c5] ~ [f#4,g#4,c5] ~ [f#4,g#4,c5] ~ [f#4,g#4,c5] ~ [f#4,g#4,c5] ~ [f#4,g#4,c5] ~ [f#4,g#4,c5] ~", // G#7
  T: "[f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4] ~ [g#4,c5] ~ [g#4,c5] ~ [a#4,c#5] ~ [a#4,c#5] ~", // F# G# A#m
  U: "[c5,d#5] ~ [c5,d#5] ~ [a#4,c#5] ~ [a#4,c#5] ~ [g#4,c5] ~ [g#4,c5] ~ [f#4,g#4,a#4] ~ [f#4,a#4] ~", // Cm A#m G# F#
  V: "[f4,g#4] ~ [f4,g#4] ~ [f4,g#4] ~ [d#4,f4,g#4] ~ [d#4,f4,g#4] ~ [d#4,f4,g#4] ~ [c#4,f4,g#4] ~ [c#4,f4,g#4] ~", // Fm Fm7 C#
  W: "[d#4,f4,g#4] ~ [d#4,f4,g#4] ~ [d#4,f4,g#4] ~ [c#4,f4,g#4] ~ [c#4,f4,g#4] ~ [c#4,f4,g#4] ~ [c#4,f4,g#4] ~ [c#4,f4,g#4] ~", // Fm7 C#
  X: "[f4,g#4,c#5] ~ [f4,g#4,c#5] ~ [f4,g#4,c#5] ~ [f4,g#4,c#5] ~ [f4,g#4,c5] ~ [f4,g#4,c5] ~ [f4,g#4,c5] ~ [f4,g#4,c5] ~", // C# Fm
  Y: "[f4,g#4,b4] ~ [f4,g#4,b4] ~ [f4,g#4,b4] ~ [f4,g#4,b4] ~ [f4,g#4,b4] ~ [f4,g#4,b4] ~ [f4,g#4,b4] ~ [f4,g#4,b4] ~", // Fdim
  Z: "[c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~ [c#4,f#4,a#4] ~", // F#
  AA: "[d#4,f#4,a4] ~ [d#4,f#4,a4] ~ [d#4,f#4,a4] ~ [d#4,f#4,a4] ~ [d#4,f#4,a4] ~ [d#4,f#4,a4] ~ [d#4,f#4,a4] ~ [d#4,f#4,a4] ~", // D#dim
  AB: "[f4,g#4] ~ [f4,g#4] ~ [f4,g#4] ~ [f4,g#4] ~ [f4,g#4] ~ [f4,g#4] ~ [f4,g#4] ~ [f4,g#4] ~", // Fm
  AC: "[c#4,f4,a#4] ~ [c#4,f4,a#4] ~ [c#4,f4,a#4] ~ [c#4,f4,a#4] ~ [c#4,f4,a#4] ~ [c#4,f4,a#4] ~ [c#4,f4,a#4] ~ [c#4,f4,a#4] ~", // A#m
  AD: "[f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~", // F#
  AE: "[d#4,f4,g#4] ~ [d#4,f4,g#4] ~ [d#4,f4,g#4] ~ [c#4,f4,g#4] ~ [a#3,c#4] ~ [a#3,c#4] ~ [a3,d#4] ~ [a3,d#4] ~", // Fm7 C# A#m Adim
  AF: "[f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [g#4,c5] ~ [f#4,g#4,c5] ~ [f#4,g#4,c5] ~ [f#4,g#4,c5] ~, ~@4 f#4 ~@3", // F# G# G#7
  AG: "[c#5@4 f5@3 ~ f5@7 ~ f5@4 g#5@4 c#5@4 d#5@4 f5@26 ~@6, [f4,g#4]@49 ~@15]/4", // Fm
})).s("gm_piano").gain(0.35)

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

// other · alto sax
const alto_sax = note(`<
  ~@8 A@2 B C D E F G H I J K L M N O P M Q C D E R G H I S T@2 I U V@2 ~@14 W@2 X Y Z AA AB AC AD@2 AE AF AG@2 AE AH
  AI@3 AH AJ@3 AK AL@3 AH AM@3 AN AO@3 ~
>`.pickRestart({
  A: "[~@10 g4 ~@3 e4@16 ~@2]/2", B: "f4@4 e4@4 d#4@3 ~ e4@2 ~@2", C: "f4@3 ~", D: "f#4@2 g4@5 ~",
  E: "~@2 a4@2 b4@2 c5 ~", F: "d5@6 c5 ~ b4@4 a4@4", G: "g4", H: "~@8 c4@3 ~ d4@3 ~", I: "e4@7 ~ e4@7 ~",
  J: "e4@2 ~@2 a4@8 g4@3 ~", K: "c4@7 ~ c4@7 ~", L: "c4@3 ~ f4@6 ~@2 f4@3 ~", M: "e4@7 ~",
  N: "f4@4 e4@2 ~@2 d4@3 ~ c4@3 ~", O: "d4@12 ~@2 g4 ~", P: "~@2 g4@2 e4 ~ g4@7 ~@3", Q: "f4@4 e4@5 ~ d#4@2 e4@2 ~@2",
  R: "c5@7 ~ b4@3 ~ a4@3 ~", S: "e4@3 ~ a4@7 ~ g4@2 ~@2", T: "[c5@20 ~@4 c4@3 ~ d4@3 ~]/2",
  U: "a4@3 ~ g4@3 ~ g4@3 ~ b3@3 ~", V: "[c4@3 ~]/2", W: "[~@10 g#4@9 ~ f4 ~ g#4@5 ~ a#4 ~@3]/2", X: "f4@15 ~",
  Y: "f#4@4 f4@2 ~@2 e4@3 ~ f4@3 ~", Z: "f#4@7 ~", AA: "g4@2 g#4@5 ~", AB: "~@4 a#4@3 ~ c5@3 ~ c#5@3 ~",
  AC: "c#5@6 c#5@2 c5@3 ~ a#4@3 ~", AD: "[g#4@20 ~@4 c#4@3 ~ d#4@3 ~]/2", AE: "f4@8 f4@7 ~",
  AF: "f4@3 ~ g#4@8 g#4@2 ~@2", AG: "[c#5@18 ~@6 c#4@3 ~ d#4@3 ~]/2", AH: "g#4@2 ~@2 g#4 ~@3 g#4@3 ~ c4@2 ~@2",
  AI: "[c#4@24 ~@2 g#4 ~ f4 ~ f4@14 ~@4]/3", AJ: "[c#4@19 ~ f4 ~ g#4@5 ~ f4 ~ f4@14 ~@4]/3",
  AK: "g#4@3 ~ g#4 ~@3 g#4 ~@3 c4@2 ~@2", AL: "[c#4@21 ~ f4@2 ~@2 g#4 ~ f4 ~ f4@14 ~@4]/3",
  AM: "[c#4@19 ~@3 g#4 ~@3 g#4@2 f4 ~ f4@14 ~@4]/3", AN: "g#4 ~@3 g#4 ~@3 g#4@3 ~ c5@2 ~@2", AO: "[c#5@35 ~@13]/3",
})).s("gm_alto_sax").gain(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A@2 B C A@2 B C A@2 B C D E@3 F@4 G@2 H@2 I@2 B C D J@3 K@2 L@2 G M N O P@2 Q R S T@3 U@4 V@2 W@2 P@2 Q R S X@3 Y@2
  Z@2 V AA AB@2 Q R AB@2 Q R AB@2 Q R AB@2 Q R AC@4
>`.pickRestart({
  A: "[g3 a3, [c3,e4]]/2", B: "[d3,a3,f4]", C: "[g2,f3,b3]", D: "[f3,c4,a4] [e3,c4,g4]",
  E: "[[d3,c4]@7 ~ g2@8 ~@8 a3@7 ~ b3@8 [a3,c4]@3 ~ [g#3,d4]@4, f4@7 ~ c3@16, ~ b3@2 ~@3, ~@2 e4@3 ~]/3", // D7 Am G#dim
  F: "[g3 a#3 a3 [g#3,d4], e4@3 ~, c3 f2]/4", G: "[e3,c4,g4]", H: "[[d3,c4]@16 b3@5 ~ a3@5 ~ g3@4, f4, ~@16 g2@15 ~]/2",
  I: "[c3,g3,e4]/2", J: "[[d3,c4]@7 ~ g2@8 ~@8 a3@7 ~ b3@8 a3@3 ~ g#3@3 ~, f4 [c3,e4]@2, ~ b3@2 ~@3]/3",
  K: "[g3 a#3, [c3,e4]]/2", L: "[a3 [g#3,d4], [f2,e4]]/2", M: "[d3,c4] [g2,b3], f4", N: "[c3,g3,e4]",
  O: "[g#2,f#3,d#4]", P: "[c#3,g#3,f4]/2", Q: "[d#3,a#3,f#4]", R: "[g#2,f#3,c4]", S: "[f#3,c#4,a#4] [f3,c#4,g#4]",
  T: "[[d#3,c#4]@7 ~ g#2@8 ~@8 a#3@7 ~ c4@8 a#3@3 ~ a3@4, f#4@7 ~ [c#3,f4]@16, ~ c4@2 ~@3]/3", // D#7 C#
  U: "[g#3@15 ~ b3@16 a#3@16 [a3,d#4]@16, f4@3 ~, c#3 f#2]/4", V: "[f3,c#4,g#4]",
  W: "[[d#3,c#4]@16 c4@5 ~ a#3@5 ~ g#3@4, f#4, ~@16 g#2@15 ~]/2", // D#7
  X: "[[d#3,c#4]@2 g#2@2 ~@2 a#3@2 c4 c#4 [f#3,a#3,c#4] [a3,c4,d#4], f#4@2 [c#3,f4]@3 ~, ~ c4@2 ~@3]/3", // D#7 F# Adim C#
  Y: "[g#3 b3, [c#3,f4]]/2", Z: "[a#3 [a3,d#4], [f#2,f4]]/2", AA: "[d#3,c#4] [g#2,c4], f#4@15 ~",
  AB: "[g#3 a#3, [c#3,f4]]/2", AC: "[[c#2,g#2,f3,c#4]@29 ~@3]/4",
})).s("gm_string_ensemble_1").gain(0.45)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@71 A@2 B C D@4 E@2 F@2 G H I J K@4>".pickRestart({
  A: "[c#4@28 f3@3 ~]/2", B: "d#3@15 ~", C: "g#3", D: "[~@6 f5@19 ~ c#5@2 ~@2 a#4@19 ~@15]/4",
  E: "[~@6 g#5@14 ~@2 f5@5 ~ c#5@2 ~@2]/2", F: "[c#5@2 d#5 ~@11 g#4 ~@17, ~@3 a#4@6 ~@7]/2", G: "~@8 g#4@2 ~@2 d#4 ~@3",
  H: "c#4@2 a#3@2 ~@2 g#3 ~ a#3@4 f3@2 d#3@2", I: "c#3@6 d#3 f3", J: "d#3 g#2", K: "[c#3@57 ~@7]/4",
})).s("gm_distortion_guitar").gain(0.35)

// other · orchestral harp · "HARP"
const orchestral_harp = note("<~@24 A ~@15 B ~@14 C D ~@10 E F ~ G ~@4 H ~ I J ~@2 I J ~@2 I J ~@4>".pickRestart({
  A: "~@6 f3 [g3,b3] [d4,f4] [g4,a4] [b4,d5] [f5,g5] [a5,b5] [d6,f6] g6 ~", // G Dm Gsus2 Bm Fsus2 Asus2 Dm
  B: "[d#3,f#3] [g#3,c4] [d#4,f#4] [g#4,c5] [d#5,f#5] [g#5,c6] [d#6,f#6] [f#6,g#6] [c6,d#6] [f#5,g#5] [c5,d#5] [f#4,g#4] [c4,d#4] g#3 ~@2", // D#m G# D#m G# D#m G# D#m F#sus2 …
  C: "~@2 [c#6,d#6] [f#5,a#5] [c#5,d#5] [f#5,a#5] [c#5,d#5] [f#4,a#4] [d#5,f#5] [a#4,c#5] [d#4,f#4] [a#4,c#5] [d#4,f#4] [a#3,c#4] [d#3,f#3] [f#3,g#3]", // C#sus2 F# C#sus2 F# C#sus2 F# D#m A#m …
  D: "[a#3,c4] [d#4,f#4] [g#4,a#4] [c5,d#5] [f#5,g#5] [a#5,c6] [d#6,f#6] g#6 ~@8", // A#sus2 D#m G#sus2 Cm F#sus2 A#sus2 D#m
  E: "[f#3,a#3] [c#4,f4] [f#4,a#4] [c#5,f5] [f#5,a#5] [c#6,f6] [f#6,a#6] c#7 ~@8", // F# C# F# C# F# C# F#
  F: "[d#3,f#3] [a3,c#4] [d#4,f#4] [a4,c#5] [d#5,f#5] [a5,c#6] [d#6,f#6] [a6,c#7] ~@8", // D#m A D#m A D#m A D#m A
  G: "[c#6,d#6] [f#5,a#5] [c#5,d#5] [g#4,a#4] [d#4,f#4] [a#3,c#4] [f#3,g#3] a#3 [f#3,g#3] [a#3,c4] [d#4,f#4] [g#4,a#4] [c5,d#5] [f#5,g#5] [c6,d#6] g#6", // C#sus2 F# C#sus2 G#sus2 D#m A#m F#sus2 A#sus2 …
  H: "[c#3,f3] [g#3,a#3] [c#4,f4] [g#4,a#4] [c#5,f5] [g#5,a#5] [c#6,f6] [g#6,a#6] ~@8", // C# G#sus2 C# G#sus2 C# G#sus2 C# G#sus2
  I: "[d#3,f#3] [a#3,c#4] [d#4,f#4] [a#4,c#5] [d#5,f#5] [a#5,c#6] [d#6,f#6] a#6 ~@8", // D#m A#m D#m A#m D#m A#m D#m
  J: "[d#3,f#3] [g#3,c4] [d#4,f#4] [g#4,c5] [d#5,f#5] [g#5,c6] [d#6,f#6] g#6 ~@8", // D#m G# D#m G# D#m G# D#m
})).s("gm_orchestral_harp").gain(0.19)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B@2 A C A C A@2 B@2 A C A C A@2 B@2 A C A C A@2 B@2 A C A C A@2 B@2 A C A C A@2 B@2 A C A C A@2 B@2 A C A C A@2
  B@2 A C A C A@2 B@2 A C A@2 B@2 A C A C A@2 B@2 A C A C A@2 ~@3
>`.pickRestart({
  A: "x", B: "x ~@4 x ~@2", C: "x ~@6 x",
})).gain(0.5)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~ A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A ~@7 A ~@11>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct(`<
  A B@3 C B@3 D B@3 C B@3 D B@3 C B@3 D B@3 C B@3 D B@3 C B@3 D B@3 C B@3 D B@3 C B@3 D B@3 C B@3 D B@3 C B E B@3 C B@3
  D B@3 C B@3 D ~@4
>`.pickRestart({
  A: "~@10 x!3 ~ x ~", B: "~@2 x!2 ~@2 x ~", C: "~@4 x ~ x ~@3 x!3 ~ x ~", D: "~@2 x!2 ~ x!3", E: "~ x!7",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B C@2 D B C@3 B C@2 D B C@3 B C@2 D B C@3 B C@2 D B C@3 B C@2 D B C@3 B C@2 D B C@3 B C@2 D B C@3 B C@2 D B C@3 B
  C@2 D B@3 C@2 D B C@3 B C@2 D B C@3 ~@4
>`.pickRestart({
  A: "~ x", B: "~ x!7", C: "x!8", D: "x!7 ~",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@3 ~@3 A ~@3
  A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.4)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~ [x!4]!88 [x ~@5 x ~@6 x ~@2] [~@3 x ~@12]>").gain(1.29)

stack(
  piano, bass, alto_sax, string_ensemble_1, distortion_guitar, orchestral_harp, kick, kick_soft, snare, open_hat, crash,
  jingle_bells
)

More by Bing Crosby