Strudelify

snoopys christmas

Xander Karafin

KeyF majorTempo126 bpm
0:00/0:00
// snoopys christmas — Xander Karafin
// 126 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "B♭ Trumpet" trumpet (copy of ch 1 "Oboe" oboe); ch 5 "Horn in F" french horn (copy of ch 2 "B♭ Clarinet" clarinet)
// note: Transcription provider: pdmx. https://musescore.com/score/3506531; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(126/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · oboe
const oboe = note(`<
  ~@2 A B C D E F E A ~@2 G H G H G H G ~@3 E I B J K L K E ~@2 M N M N M N M ~ M N M N M N M ~
>`.pickRestart({
  A: "a4", B: "bb4", C: "g4", D: "f4", E: "c5", F: "d5", G: "f4@2 f4@2 f4@2 f4!2 g4@2 g4@2 g4@2 g4!2",
  H: "a4!2 g4!2 f4 g4 a4 f4", I: "db5", J: "ab4", K: "eb5", L: "f5",
  M: "ab4@2 ab4@2 ab4@2 ab4!2 bb4@2 bb4@2 bb4@2 bb4!2", N: "c5!2 bb4!2 ab4 bb4 c5 ab4",
})).s("gm_oboe").gain(0.3)

// bass · tuba
const bass = note(`<
  ~@2 A B@2 A@2 B@2 A ~@2 C D C D C D C E ~@2 F G@2 F@2 G@2 F ~@2 H I H I H I H J H I H I H I H J
>`.pickRestart({
  A: "f2@2 a2 a2@2 g2 f2@2", B: "g2@2 bb2 bb2@2 a2 g2@2", C: "f2@2 f2@2 f2@2 f2!2 g2@2 g2@2 g2@2 g2!2",
  D: "a2!2 g2!2 f2 g2 a2 f2", E: "a2!2 g2!2 f2!4", F: "ab2@2 c3 c3@2 bb2 ab2@2", G: "bb2@2 db3 db3@2 c3 bb2@2",
  H: "ab2@2 ab2@2 ab2@2 ab2!2 bb2@2 bb2@2 bb2@2 bb2!2", I: "c3!2 bb2!2 ab2 bb2 c3 ab2", J: "c3!2 bb2!2 ab2!4",
})).s("gm_tuba").gain(0.3)

// other · tubular bells
const tubular_bells = note("<A B ~@8 A B ~@8 C D ~@8 E F ~@16>".pickRestart({
  A: "f5 e5 d5 c5", B: "bb4 a4 g4 f4", C: "c5!4 c5@3 bb4", D: "a4 g4 f4@2", E: "eb5!4 eb5@3 db5", F: "c5 bb4 ab4@2",
})).s("gm_tubular_bells").gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@2 [~@9 x ~ x ~@4]!8 ~@12 [~@9 x ~ x ~@4]!8 ~@18>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@2 [x!8]!8 ~@2 [x ~ x ~ x!5 ~ x ~ x!4]!8 ~@2 [x!8]!8 ~@2 [x ~ x ~ x!5 ~ x ~ x!4]!16>")
  .gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct("<~@2 [x!8]!8 ~@2 [x!8]!8 ~@2 [x!8]!8 ~@2 [x!8]!16>").gain(0.3)

stack(oboe, bass, tubular_bells, rim, snare, tambourine)

More by Xander Karafin