Strudelify
Little Saint Nick cover art

Christmas With The Beach Boys

Little Saint Nick

The Beach Boys

KeyF♯ majorTempo130 bpm
0:00/0:00
// Little Saint Nick — The Beach Boys
// 130 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 68 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar 2.
setcpm(130/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.

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~ A@2 B C D E B F G@2 H@2 G I H J K@2 G L G@2 H@2 G I H@2 K@2 G M K@2 N@2 K O P Q G@2 H@2 G I H@2 K@2 H R B C D E B C
  D E B C D E B C ~
>`.pickRestart({
  A: "f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~", B: "g#2@2 ~ d#2@2 ~ g#2@2 ~ d#2@2 ~", C: "c#2@2 ~ g#2@2 ~ c#2@3 g#2@2 ~",
  D: "f#2@2 ~ f#2@2 ~ f2@2 ~ f2@2 ~", E: "d#2@2 ~ d#2@2 ~ c#2@2 ~ c#2@3", F: "c#2@2 ~ g#2@2 ~ c#2@2 ~ g#2@2 ~",
  G: "g#2 d#2 g#2 d#2", H: "f#2 c#2 f#2 c#2", I: "~ d#2 g#2 d#2, g#2 ~@2", J: "f#2@3 c#2@3 f#2@3 c#2@2 ~",
  K: "b1@5 ~ f#2@5 ~ b1@5 ~ f#2@5 ~", L: "c#2@3 g#2@3 c#2@3 g#2@2 ~", M: "c#2 g#2 c#2 g#2",
  N: "e2@5 ~ b2@5 ~ e2@6 b2@6", O: "b1@3 f#2@3 b1@3 f#2@2 ~",
  P: "g#1@2 ~@2 g#1@2 d#2@3 ~ d#2@2 g#1@2 ~@2 g#1@2 d#2@3 ~ d#2@2", Q: "g#1 ~@5", R: "d#2@5 ~ a#1@5 ~ d#2@5 ~ a#1@5 ~",
})).s("gm_acoustic_bass").gain(0.37)

// chords · piano
const piano = note(`<
  ~ A@2 B C A@2 B C D E F@2 E@2 F G H I J K D E F@2 E@2 F G H I J K L@2 M N O P Q R D E F@2 E@2 F G H I S T B C A@2 B C
  A@2 B C A@2 B C ~
>`.pickRestart({
  A: "[c#3,f#3,a#3,c#4] ~ [c#3,f#3,a#3,c#4] [d#3,f#3,a#3,c#4] ~ [d#3,f#3,a#3,c#4] [c#3,f#3,a#3,c#4] ~ [c#3,f#3,a#3,c#4] [d#3,f#3,a#3,c#4] ~ [d#3,f#3,a#3,c#4]", // F# D#m7 F# D#m7
  B: "[d#3,g#3,b3,d#4] ~ [d#3,g#3,b3,d#4] [g#2,g#3,b3,d#4] ~ [g#2,g#3,b3,d#4] [d#3,g#3,b3,d#4] ~ [d#3,g#3,b3,d#4] [g#2,g#3,b3,d#4] ~ [g#2,g#3,b3,d#4]", // G#m
  C: "[g#2,g#3,c#4,f4] ~ [g#2,g#3,c#4,f4] [c#3,g#3,c#4,f4] ~ [c#3,g#3,c#4,f4] [g#2,g#3,c#4,f4] ~ [g#2,g#3,c#4,f4] [c#3,g#3,c#4,f4] ~ [c#3,g#3,c#4,f4]", // C#
  D: "[g#4,d#5] ~@3 [g#4,b4,d#5] ~ [g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~ [g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~ [g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~, d#3@2 ~ g#2@2 ~ d#3@2 ~ g#2@2 ~, b4 ~@11", // G#5 G#m
  E: "[g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~ [g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~ [g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~ [g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~, d#3@2 ~ g#2@2 ~ d#3@2 ~ g#2@2 ~", // G#m
  F: "[f#4,a#4,c#5] ~@3 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~@3 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~@3 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~@3 [f#4,a#4,c#5] ~, c#3@2 ~ f#2@2 ~ c#3@2 ~ f#2@2 ~", // F#
  G: "[f#4,a#4,c#5] ~@3 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~@3 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~@3 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~@3 [f#4,a#4,c#5] ~, c#3@3 f#2@2 ~ c#3@3 f#2@2 ~", // F#
  H: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [b2,f#3,b3,d#4] ~, b2@7 ~@3 b2@4 ~@2 b2@4 ~@4, ~@6 d#4 ~@5", // B B5 B
  I: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~, b2 ~ b2 ~@2 b2@2 ~ b2@2 ~ b2", // B
  J: "[g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#2,g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~, g#2 ~ g#2@2 ~ g#2 ~@3 g#2 ~ g#2", // G#m
  K: "[g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [c#3,g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [c#3,g#3,c#4,f4] ~, c#3@3 ~ c#3@4 ~@2 c#3@4 ~@4 c#3@2 ~@4", // C#
  L: "[b2,f#3,b3]@2 ~@2 [f#3,b3,d#4] ~ [f#2,f#3,b3,d#4]@3 ~ [f#3,b3,d#4] ~ [b2,f#3,b3,d#4]@3 ~ [f#3,b3,d#4] ~ [f#2,f#3,b3,d#4]@2 ~@2 [f#3,b3,d#4] ~, d#4 ~@3 b2@2 ~@4 f#2@2 ~@4 b2@2 ~@4 f#2@2", // B5 B
  M: "[e3,b3,e4]@2 ~@2 [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~, g#3 ~@3 e3@2 b2@3 ~ b2@2 e3@3 ~ e3@2 b2@2 ~@2 b2@2", // E5 E
  N: "[g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [b2,e4]@2 ~@2 [g#3,b3,e4] ~, e3@3 ~ e3@2 b2@3 ~ b2@2 e3@2 ~@2 e3@2 [g#3,b3] ~@3 b2@2", // E E5 E G#m
  O: "[b2,f#3,b3]@2 ~@2 [f#3,b3,d#4] ~ [f#2,b3]@3 ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~, d#4 ~@3 b2@2 [f#3,d#4] ~@3 f#2@2 b2@3 ~ b2@2 f#2@2 ~@2 f#2@2", // B5 B B5 B D#m
  P: "[b2,b3]@2 ~@2 [f#3,b3,d#4] ~ [f#2,f#3,b3]@2 ~@2 [f#3,b3,d#4] ~ [b2,f#3,b3,d#4]@2 ~@2 [f#3,b3,d#4] ~ [f#2,f#3,b3,d#4]@3 ~ [f#2,f#3,b3,d#4] ~, [f#3,d#4] ~@3 b2@2 d#4 ~@3 f#2@2 ~@4 b2@2 ~@6", // B B5 B D#m
  Q: "[g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~ [g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~ [g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~ [c3,g#3,c4,d#4]@3 ~ [g#3,c4,d#4] ~, g#2@2 ~@2 g#2@2 c3@3 ~ c3@2 g#2@2 ~@2 g#2@2 ~@4 c3@2", // G#
  R: "[g#2,g#3,c4] ~@5, d#4 ~@11", // G#
  S: "[f#2,f#3,a#3]@2 ~@2 [f#2,f#3,a#3,c#4] ~ [f#2,f#3,a#3]@2 ~@2 [f#2,f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~@3 [f#2,f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~@3 [f#2,f#3,a#3,c#4] ~, c#4 ~@5 c#4 ~@5 f#2@2 ~@4 f#2@2 ~@4", // F#
  T: "[g3,a#3,c#4] ~@3 [d#2,g3,a#3,c#4] ~ [g3,a#3,c#4] ~@3 [d#2,g3,a#3,c#4] ~ [g3,a#3,c#4] ~@3 [d#2,g3,a#3,c#4] ~ [g3,a#3,c#4] ~@3 [g3,a#3,c#4] ~, d#2@3 ~@3 d#2@3 ~@3 d#2@2 ~@4 d#2@3 ~ d#2@2", // Gdim D#7 Gdim D#7 Gdim D#7 Gdim
})).s("gm_piano").gain(0.34).pan(0.3)

// chords · electric guitar clean · "Guitar 1"
const electric_guitar_clean = note(`<
  ~ A@2 B C A@2 D C B D E@2 D@2 E@2 F@2 B G B D E@2 D@2 E@2 F@2 B G H F I@2 F@2 J K B D E@2 D@2 E@2 F@2 E L B C A@2 B C
  A@2 B C A@2 B C ~
>`.pickRestart({
  A: "[f#3,a#3,c#4]@2 ~@2 [f#3,a#3,c#4] ~ [f#3,b3,d#4]@2 ~@2 [f#3,a#3,c#4] ~ [f#3,a#3,c#4]@2 ~@2 [f#3,a#3,c#4] ~ [f#3,b3,d#4]@2 ~@2 [f#3,a#3,c#4] ~", // F# B F# B F#
  B: "[g#3,b3,d#4]@2 ~@2 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~", // G#m
  C: "[g#3,c#4,f4]@2 ~@2 [g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~", // C#
  D: "[g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~", // G#m
  E: "[f#3,a#3,c#4] ~@3 [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~@3 [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~@3 [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~@3 [f#3,a#3,c#4] ~", // F#
  F: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~", // B
  G: "[g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~", // C#
  H: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4]@2 ~@2 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~", // B
  I: "[g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // E
  J: "[g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~ [g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~ [g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~ [g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~", // G#
  K: "[g#3,c4,d#4] ~@23", // G#
  L: "[g3,a#3,c#4] ~@3 [g3,a#3,c#4] ~ [g3,a#3,c#4] ~@3 [g3,a#3,c#4] ~ [g3,a#3,c#4] ~@3 [g3,a#3,c#4] ~ [g3,a#3,c#4] ~@3 [g3,a#3,c#4] ~", // Gdim
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.7)

// other · glockenspiel
const glockenspiel = note(`<
  ~ A@2 B@2 C@2 D E F@2 G H F@2 G I ~ J ~ K L M N O P Q R S ~ J ~ K ~ T ~ U@2 T ~@2 L M N O P Q R S ~ J ~@4 C@2 B@2 C@2
  B@2 C@2 B@2 ~
>`.pickRestart({
  A: "[c#7@2 ~ f#7@6 ~ d#7@6 c#7@21 ~@11]/2", B: "[~ c#7@3 f#7@6 d#7@6 c#7@14 ~@18]/2",
  C: "[c#7@3 ~ f#7@6 d#7@6 c#7@25 ~@7]/2", D: "d#7@23 ~", E: "c#7@3 ~", F: "g#6@11 ~ d#6@11 ~", G: "f#6 f6",
  H: "d#6 c#6", I: "d#6@3 c#6@2 ~", J: "g#6 f#6", K: "a#6@6 g#6@5 ~", L: "[g#6,b6]@11 ~ d#6@11 ~, ~@4 d#7@3 ~",
  M: "[g#6,b6]@6 d#6@5 ~, ~@12 d#7@7 ~@5", N: "f#6 f6, f#7@5 ~ c#7@5 ~", O: "d#6 c#6, f#7@9 ~@3 c#7@8 ~@4",
  P: "~ b6@10 ~ [d#6,f7]@11 ~, g#6 ~", Q: "g#6@11 ~ d#6@12, b6@3 ~ f7@3 ~", R: "f#6@11 ~ [f6,c#7]@12, f#7 ~@2",
  S: "d#6@12 c#7@4 ~@2 c#7@3 ~@3, f#7@9 ~@3 c#6@8 ~@4", T: "f#6@3 ~ b6@5 ~ g#6@6 f#6@8",
  U: "[b6@4 e7@6 c#7@6 b6@13 ~@19]/2",
})).s("gm_glockenspiel").gain(0.48)

// chords · electric guitar clean · "Guitar 2"
const electric_guitar_clean_2 = note("<~ A@2 ~@2 A@2 ~@48 A@2 ~@2 A@2 ~@2 A@2 ~@3>".pickRestart({
  A: "~@3 [a#4,c#5] ~@5 [a#4,c#5] ~@2", // A#m
})).s("gm_electric_guitar_clean").gain(0.21).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!39 x [x!2]!26 ~>").gain(0.6)

// drums · snare
const snare = s("sd").struct("<A B@19 C B@11 C B@7 D B@26 ~>".pickRestart({
  A: "~@8 x!2 ~ x", B: "~ x ~ x", C: "~@3 x ~@4 x!2 ~ x", D: "~@11 x",
})).gain(0.6)

// drums · hihat
const hihat = s("hh").struct("<~ [x ~ x!2 ~ x!2 ~ x!2 ~ x]!39 ~ [x ~ x!2 ~ x!2 ~ x!2 ~ x]!26 ~>").gain(0.3)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@9 [x!4]!24 x ~@7 [x!4]!25 [x!3 ~] ~>").gain(1.04)

// drums · jingle bells · soft notes
const jingle_bells_soft = s("sleighbells:4").struct(`<
  ~@9
  [~@2 x ~@2 x ~@2 x ~@2 x]!24
  [~ x ~@4]
  ~@7
  [~@2 x ~@2 x ~@2 x ~@2 x]!24
  [~@2 x ~@2 x ~@2 x ~@3]
  ~@2
>`).gain(0.26)

stack(
  bass, piano, electric_guitar_clean, glockenspiel, electric_guitar_clean_2, kick, snare, hihat, jingle_bells,
  jingle_bells_soft
)

More by The Beach Boys