Strudelify

a holly jolly christmas

Misc Christmas

KeyB♭ majorTempo136 bpm
0:00/0:00
// a holly jolly christmas — Misc Christmas
// 136 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5872899; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 76 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(136/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · flute
const flute = note(`<
  A B C D E F E G ~@4 E F E G ~@3 H I J K L M N O P ~@4 Q R S T A B C D E F E G ~@4 E F E G ~@3 H I J K L M N O P ~@4 Q
  R S T Q R S T
>`.pickRestart({
  A: "a5 f5 g5 eb5", B: "f5@3 d5@2 eb5 ~@2 eb5 c5@2 ~", C: "d5@2 eb5 f5@2 g5@3 a5 bb5@2 c6", D: "d6@5 d6 ~@6",
  E: "~@2 d5 ~@3 d5 ~", F: "~@6 bb4@3 ~ bb4 ~@5 bb4@2 bb4@3 ~@3", G: "~@6 eb5@3 ~ eb5 ~@5 eb5@2 eb5@3 ~@3",
  H: "~@3 d5@2 f5 eb5@2 g5 f5@2 a5", I: "bb5@6 g5@5 bb5", J: "a5@6 f5@6 f5@11 ~", K: "g5 eb5!2 g5", L: "f5@23 ~",
  M: "eb5@6 c5@5 eb5", N: "d5@6 g5@6 g5@11 ~", O: "c5!2 d5 e5", P: "f5@17 ~@7", Q: "a5@2 ~ a5@2 ~ a5@2 g5 f5@2 eb5",
  R: "d5 f5 bb5 d6", S: "c6@3 g5@2 ~@4 a5@2 ~", T: "bb5@3 ~",
})).s("gm_flute").gain(0.4)

// other · oboe
const oboe = note(`<
  A B C D E F E G ~@4 E F E G ~@3 H I J K L M N O P ~@4 Q R S T A B C D E F E G ~@4 E F E G ~@3 H I J K L M N O P ~@4 Q
  R S T Q R S T
>`.pickRestart({
  A: "a4 f4 g4 eb4", B: "f4@3 d4@2 eb4 ~@2 eb4 c4@2 ~", C: "d4@2 eb4 f4@2 g4@3 a4 bb4@2 c5", D: "d5@5 d5 ~@6",
  E: "~@2 d4 ~@3 d4 ~", F: "~@6 bb3@3 ~ bb3 ~@5 bb3@2 bb3@3 ~@3", G: "~@6 eb4@3 ~ eb4 ~@5 eb4@2 eb4@3 ~@3",
  H: "~@3 d4@2 f4 eb4@2 g4 f4@2 a4", I: "bb4@6 g4@5 bb4", J: "a4 f4 f4@2", K: "g4 eb4!2 g4", L: "f4",
  M: "eb4@6 c4@5 eb4", N: "d4 g4 g4@2", O: "c4!2 d4 e4", P: "f4@3 ~", Q: "a4@2 ~ a4@2 ~ a4@2 g4 f4@2 eb4",
  R: "d4 f4 bb4 d5", S: "c5@3 g4@2 ~@4 a4@2 ~", T: "bb4@3 ~",
})).s("gm_oboe").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B C D ~@4 E F E G H I J I E F E K L M N O P Q R S T U T F V W X Y A B C D ~@4 E F E G H I J I E F E K L M N O P Q R
  S T U T F V W X Y V W X Y
>`.pickRestart({
  A: "d4 c4!2 bb3", B: "c4@3 a3@2 bb3 ~@2 bb3 g3@2 ~", C: "a3@2 bb3 c4@2 c4@3 d4 eb4@2 eb4", D: "eb4@5 eb4 ~@6",
  E: "~@2 eb4 ~@3 eb4 ~", F: "~@6 eb4@3 ~ eb4 ~@5 eb4@2 eb4@3 ~@3", G: "~ a3 bb3 c4", H: "d4@2 f3 ~@3 f3 ~",
  I: "~@6 f3@3 ~ f3 ~@5 f3@2 f3@3 ~@3", J: "~@2 f3 ~@3 ab3 ~", K: "~@3 bb3@2 d4 bb3@2 eb4 c4@2 f4", L: "eb4@6 c4@5 eb4",
  M: "d4 c4 b3@2", N: "c4 bb3 a3 c4", O: "c4 bb3", P: "a3@6 gb3@5 a3", Q: "g3 d4 d4@2", R: "g3!3 bb3", S: "c4@3 ~",
  T: "~@2 d4 ~@3 d4 ~", U: "~@6 bb3@3 ~ bb3 ~@5 bb3@2 bb3@3 ~@3", V: "c4@2 ~ c4@2 ~ c4@2 bb3 a3@2 g3",
  W: "f3 bb3 d4 f4", X: "e4@3 e4@2 ~@4 c4@2 ~", Y: "bb3@3 ~",
})).s("gm_trumpet").gain(0.4)

// other · trombone
const trombone = note(`<
  A B C D E F G F H I H J ~@4 H I H K L M N O P Q R S E F G F E F T U A B C D E F G F H I H J ~@4 H I H K L M N O P Q R
  S E F G F E F T U H F T U
>`.pickRestart({
  A: "c4 a3 bb3 g3", B: "a3@3 f3@2 g3 ~@2 g3 eb3@2 ~", C: "f3@2 g3 a3@2 bb3@3 c4 c4@2 bb3", D: "bb3@5 a3 ~@6",
  E: "~@2 f3 ~@3 f3 ~", F: "~@6 f3@3 ~ f3 ~@5 f3@2 f3@3 ~@3", G: "~@2 f3 ~@3 ab3 ~", H: "~@2 a3 ~@3 a3 ~",
  I: "~@6 a3@3 ~ a3 ~@5 a3@2 a3@3 ~@3", J: "~ f3!3", K: "~@3 f3@2 bb3 g3@2 bb3 a3@2 c4", L: "c4@6 bb3@5 c4",
  M: "c4 a3 a3@2", N: "bb3 g3!2 a3", O: "a3", P: "g3@6 eb3@5 gb3", Q: "f3 bb3 bb3@2", R: "e3!2 f3 g3", S: "a3@3 ~",
  T: "g3@3 g3@2 ~@4 f3@2 ~", U: "f3@3 ~",
})).s("gm_trombone").gain(0.4)

// bass · tuba
const bass = note(`<
  A@3 B C@2 D E F@3 G H C D E F@2 I J K L M N O P Q R C@2 D E F S E T A@3 B C@2 D E F@3 G H C D E F@2 I J K L M N O P Q
  R C@2 D E F S E T F S E T
>`.pickRestart({
  A: "[~@3 f2@6 f2@6 f2@6 f2@6 f2@6 f2@2 ~]/3", B: "f2@6 f2@3 ~ f2@2 ~@12", C: "bb1 ~@2 f2 ~@2", D: "bb1 ~@2 b1 ~@2",
  E: "c2 ~@2 f2 ~@2", F: "f2 ~@2 c2 ~@2", G: "bb1@2 ~ f2@3 g2@3 a2@3", H: "bb2 ~@2 f2 ~@2", I: "f2@2 ~@4 g2@3 a2@3",
  J: "bb2 bb1 c2 d2", K: "eb2 d2 c2!2", L: "d2!2 g2 d2", M: "c2!2 f2!2", N: "bb1!2 f2 bb1", O: "a1!2 d2 gb2",
  P: "g2 d2 g2 bb2", Q: "c3!2 c2!2", R: "~@2 f2 eb2@3 d2@3 c2@3", S: "bb1 a1 g1 bb1", T: "bb2@2 ~ f2@2 ~ bb1@2 ~@4",
})).s("gm_tuba").gain(0.4)

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

stack(flute, oboe, trumpet, trombone, bass, snare)

More by Misc Christmas