Strudelify

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: 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 L M N G@2 H@2 G I H@2 K L M O P Q R S T U V W G@2 H@2 G I H@2 K L X Y 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: "b1 f#2 b1 f#2", M: "g#2@5 ~ d#2@6 g#2@6 d#2@5 ~",
  N: "c#2@3 g#2@3 c#2@3 g#2@2 ~", O: "c#2 g#2 c#2 g#2", P: "b1@4 ~@2 f#2@5 ~ b1@5 ~ f#2@6",
  Q: "b1@5 ~ f#2@6 b1@6 f#2@6", R: "e2@5 ~ b2@5 ~ e2@6 b2@6", S: "e2@6 b2@6 e2@5 ~ b2@5 ~",
  T: "b1@5 ~ f#2@6 b1@5 ~ f#2@6", U: "b1@3 f#2@3 b1@3 f#2@2 ~",
  V: "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", W: "g#1 ~@5", X: "f#2@5 ~ c#2@6 f#2@5 ~ c#2@6",
  Y: "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 G H I J K L D E F@2 E@2 G H I J K L M N O P Q R S T D E F@2 E@2 G H I J U V 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@2 ~ f#2@2 ~ c#3@3 f#2@2 ~", // F#
  H: "[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#
  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] ~@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
  J: "[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
  K: "[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
  L: "[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#
  M: "[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
  N: "[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]@3 ~ [f#3,b3,d#4] ~ [f#2,f#3,b3,d#4]@2 ~@2 [f#2,b3]@2, d#4 ~@3 b2@2 ~@4 f#2@2 d#4 ~@3 b2@2 ~@4 [f#3,d#4] ~", // B5 B B5 B B5 D#m
  O: "[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
  P: "[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
  Q: "[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
  R: "[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
  S: "[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#
  T: "[g#2,g#3,c4] ~@5, d#4 ~@11", // G#
  U: "[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#
  V: "[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 B C D A B E F C E G@2 E@2 G@2 H I J K C E G@2 E@2 G@2 H I J K L H M@2 H N O P C E G@2 E@2 G@2 H I G Q C D A B C D
  A B C D A B C D ~
>`.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: "[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]@2", // F# B F# B F#
  C: "[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
  D: "[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#
  E: "[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
  F: "[g#3,c#4,f4]@2 ~@2 [g#3,c#4,f4] ~ [g#3,c#4,f4]@2 ~@2 [g#3,c#4,f4] ~ [g#3,c#4,f4]@2 ~@2 [g#3,c#4,f4] ~ [g#3,c#4,f4]@2 ~@2 [g#3,c#4,f4] ~", // C#
  G: "[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#
  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,d#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~", // B
  I: "[f#3,b3,d#4]@2 ~@2 [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]@2 ~@2 [f#3,b3,d#4] ~", // B
  J: "[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]@2 ~@2 [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~", // 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 [g#3,c#4,f4] ~ [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~", // C#
  L: "[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
  M: "[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
  N: "[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]@2 ~@2 [f#3,b3,d#4] ~", // B
  O: "[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#
  P: "[g#3,c4,d#4] ~@23", // G#
  Q: "[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 G H I J K L M ~ N ~ O P Q R S T U V W ~ N ~ O ~ X ~ Y@2 Z ~@2 P Q R S T U V W ~ N ~@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: "g#6@6 d#6@5 ~",
  H: "f#6 f6", I: "d#6 c#6", J: "g#6@12 d#6@11 ~", K: "g#6@11 ~ d#6@12", L: "f#6@11 ~ f6@12", M: "d#6@3 c#6@2 ~",
  N: "g#6 f#6", O: "a#6@6 g#6@5 ~", P: "[g#6,b6]@11 ~ d#6@11 ~, ~@4 d#7@3 ~", Q: "[g#6,b6]@6 d#6@5 ~, ~@12 d#7@7 ~@5",
  R: "f#6 f6, f#7@5 ~ c#7@5 ~", S: "d#6 c#6, f#7@9 ~@3 c#7@8 ~@4", T: "~ b6@10 ~ [d#6,f7]@11 ~, g#6 ~",
  U: "g#6@11 ~ d#6@12, b6@3 ~ f7@3 ~", V: "f#6@11 ~ [f6,c#7]@12, f#7 ~@2",
  W: "d#6@12 c#7@4 ~@2 c#7@3 ~@3, f#7@9 ~@3 c#6@8 ~@4", X: "f#6@3 ~ b6@5 ~ g#6@6 f#6@8",
  Y: "[b6@4 e7@6 c#7@6 b6@13 ~@19]/2", Z: "f#6@2 b6@3 g#6@3 f#6@4",
})).s("gm_glockenspiel").gain(0.48)

// chords · electric guitar clean · "Guitar 2"
const electric_guitar_clean_2 = note("<~ A@2 ~@2 B A ~@48 B A ~@2 B A ~@2 B A ~@3>".pickRestart({
  A: "~@3 [a#4,c#5] ~@5 [a#4,c#5] ~@2", B: "~@6 [a#4,c#5]@3 ~@9 [a#4,c#5]@2 ~@4",
})).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