Strudelify

Holly Jolly Christmas for small Percussion Ensemble

Madison McCandless

KeyG majorTempo94 bpm
0:00/0:00
// Holly Jolly Christmas for small Percussion Ensemble — Madison McCandless
// 94 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5833520; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 32 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(94/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · marimba
const marimba = note("<~@2 A B C D E B C D F G H I J B C D E B C D F K L M N O P Q R S>".pickRestart({
  A: "[d3,f4]@2 [f3,a4]@2 [b2,d4]@2 [e3,g4]@2 [c3,c4]@2 [g2,c4] [c3,g4] e3@4, ~@6 c5 ~", B: "e3 g3 e3 c4 e3 g3 e3 c4",
  C: "e3 g3 e3 c4 e3 a3 b3 g3",
  D: "[d3,b4]@2 [g3,b4]@2 [d3,b4]@2 ~ a4 [d3,g4]@2 [g3,g4]@2 [d3,g4]@2 ~ e4, ~@3 b3 ~@3 b3", // G G5 G G5
  E: "[e3,g4] [g3,g4] [d3,f4] [g3,g4] c3 g3 c3@2, ~@2 e4 ~", F: "[e3,g4] [g3,g4] [d3,f4] [g3,d4] c3 g3 c3@2, ~@2 c4 ~",
  G: "c3@2 f3@2 [c3,f4]@2 ~ a4 [c3,g4]@2 [f3,e4]@2 d3@2 a3@2, a4@2 ~ a3 ~@2 e4@2", // F5 C5 Fmaj7
  H: "[c3,d4] [f3,f4] [c3,f4] [a3,f4] d3 g3 d3 b3, ~@2 e4 ~", // Csus2 F F5 Dm
  I: "c3@2 e3@2 [c3,b4]@2 ~ d5 [c3,c5]@2 [e3,c5]@2 c3@2 a3@2, a4@2 ~ a3 ~@2 c5@2", // Cmaj7 C
  J: "[d3,a4] [g3,a4] [e3,b4] [f3,a4] g3!2 g3@2, ~@2 g4 ~", K: "c3 f3 c3 a3 c3 f3 d3 a3", L: "c3 f3 c3 a3 d3 g3 d3 b3",
  M: "c3 e3 c3 a3 c3 e3 c3 a3", N: "d3@2 g3@2 e3@2 a3@2 g3@2 g3@2 ~@2 [e5,e6] [d5,d6]",
  O: "[e3,c5,c6]@2 [g3,c5,c6]@2 [e3,b4,b5]@2 [c4,b4,b5]@2 [e3,a4,a5]@2 [g3,e4,e5]@2 e3@2 [e4,e5] [g4,g5], ~@7 c4", // C C5 E5 Cmaj7 A5 C E G
  P: "[e3,a4,a5] [g3,a4,a5] [e3,g4,g5] [c4,g4,g5] e3 a3 ~ g3, ~ b4, ~@2 b3!2", // A5 Gsus2 Em C5
  Q: "[d3,g4]@2 [g3,g4]@2 g4!2 e4 d4 [d3,c4]@2 [g3,e4]@2 [d3,f4]@2 [b3,g4]@2, ~@2 d3 b3 ~@4", // G5 G D7 C Dm Em
  R: "[d3,f3,f4,d5]!8 [d3,f3,c4,a4]!8 ~@8 [d4,b4]!8, ~ [b2,g3]", S: "[c3,g3,e4,c5]!32",
})).s("gm_marimba").gain(0.3)

// other · glockenspiel
const glockenspiel = note("<A B C ~@2 D E ~@2 D F G H I J ~@2 D E ~@2 D F G H I K L M N O P>".pickRestart({
  A: "~@8 d7 c#7 d7 c#7 d7@2 a6 g#6", B: "a6@2 d7 c#7 d7@2 g6 f#6 g6@2 c7 b6 c7@2 f6 e6", C: "f6 ~@3",
  D: "b6@2 b6@2 b6@3 a6 g6@2 g6@2 g6@3 e6", E: "g6!2 f6 g6 e6@2 ~@2", F: "g6!2 a6 b6 c7@2 ~@2",
  G: "c7@4 a6@3 c7 b6@2 g6@2 g6@4", H: "a6 f6!2 a6 g6@4", I: "f6@4 d6@3 f6 e6@2 a6@2 a6@4", J: "d6!2 e6 f#6 g6@2 ~@2",
  K: "d6@2 d6@2 e6@2 f#6@2 g6@4 ~@2 e7 d7", L: "c7@2 c7@2 b6@2 b6@2 a6@2 e6@2 ~@2 e6 g6", M: "a6!2 g6!2 b5@4",
  N: "b6@2 b6@2 b6 a6 g6 f6 e6@2 g6@2 b6@2 c7@2", O: "[f6,d7] [c6,a6] ~ [d6,b6]", P: "[e6,c7]",
})).s("gm_glockenspiel").gain(0.4)

// other · xylophone
const xylophone = note("<A B C D E ~ F D E ~@2 G H I J D E ~ K D E ~@2 G H I L M N O P Q>".pickRestart({
  A: "~@8 b6 a6 b6 a6 b6@2 f6 e6", B: "f6@2 b6 a6 b6@2 e6 d6 e6@2 a6 g6 a6@2 d6 c6",
  C: "f6@2 a6@2 d6@2 g6@2 c6@2 c6 g6 c7@2 e6 g6", D: "c7@2 c7@2 b6@2 b6@2 a6@2 e6@2 ~@2 e6 g6", E: "a6!2 g6!2 b5@4",
  F: "~@14 e6 g6", G: "[c6,c7]@4 [a5,a6]@3 [c6,c7] [b5,b6]@2 [g5,g6]@2 [g5,g6]@4",
  H: "[a5,a6] [f5,f6]!2 [a5,a6] [g5,g6]@4", I: "[f5,f6]@4 [d5,d6]@3 [f5,f6] [e5,e6]@2 [a5,a6]@2 [a5,a6]@4",
  J: "[d5,d6]@2 [d5,d6]@2 [e5,e6]@2 [f#5,f#6]@2 [g5,g6]@4 ~@2 e6 g6", K: "~@14 e6 d6",
  L: "[d5,d6]@2 [d5,d6]@2 [e5,e6]@2 [f#5,f#6]@2 [g5,g6]@4 ~@2 [e5,e6] [d5,d6]", // D E F# G E D
  M: "c6@2 c6@2 b5@2 b5@2 a5@2 e5@2 ~@2 e5 g5", N: "a5!2 g5!2 b4@4", O: "g5@2 g5@2 g5!2 e5 d5 c5@2 e5@2 f5@2 g5@2",
  P: "[f5,d6]!8 [c5,a5]!8 ~@8 [d5,b5]!8", Q: "[e5,c6]!32",
})).s("gm_xylophone").gain(0.4)

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

stack(marimba, glockenspiel, xylophone, jingle_bells)