Strudelify

The Huron Carol

Misc Christmas

KeyB♭ majorTempo100 bpm
0:00/0:00
// The Huron Carol — Misc Christmas
// 100 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5859764; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 49 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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@2 D E F G D E H I J K L M N O P A B Q@2 ~@3 R@2 S ~@3 T U V J K L W N X P A B A Y Z AA@2
>`.pickRestart({
  A: "g5@2 g5 a5", B: "bb5 c6 d6 d5", C: "[g5@27 ~ d5@4]/2", D: "g5 a5 bb5 c6", E: "bb5 a5 g5 f5", F: "g5!2 a5 f5",
  G: "g5@11 ~ d5@4", H: "g5 bb5@3 a5@2 f5@2", I: "g5@11 ~ g5@4", J: "d6!2 a5 bb5", K: "c6@3 bb5 a5@2 a5@2",
  L: "bb5@3 a5 g5@2 g5@2", M: "a5 g5!2 f5", N: "d5 g5 g5@2", O: "f5 eb5 d5@2", P: "g5@2 f5 d5", Q: "[g5@27 ~@5]/2",
  R: "[~@8 f6 g6 f6 c6 d6@8 eb6@2 f6@2 g6@4 d6@4]/2", S: "c6 d6 c6 a5 g5@2 ~@2", T: "d6@2 d6 ~ d6@2 d6 ~ d6@3 c6 bb5@4",
  U: "d6@2 d6 ~ d6@2 bb5@2 d6 ~ d6@2 d6@2 bb5@2", V: "d6@2 c6@2 bb5 c6 bb5 a5 g5@4 g5@4", W: "a5 g5!2 gb5",
  X: "f5@2 eb5 f5 gb5@4", Y: "bb5 c6", Z: "d6 d5", AA: "[g5@15 ~]/2",
})).s("gm_flute").gain(0.3)

// other · flute
const flute_2 = note(`<
  A B C D E F G H I B J K L M N O ~@2 P Q R D S ~@12 T U V W@2 X Y Z AA AB AC AD AE@2
>`.pickRestart({
  A: "g5 f5 e5@2", B: "eb5 d5", C: "d5 eb5", D: "d5@15 ~", E: "bb4 c5 d5@2", F: "d5 c5 bb4@2", G: "c5 eb5 d5@2",
  H: "d5@11 ~ a4@4", I: "bb4 d5 g5 f5", J: "eb5 eb5@3 d5@4", K: "d5 c5 d5!2", L: "bb5!2 f5 g5", M: "a5@3 g5 f5@2 f5@2",
  N: "g5@3 f5 d5@2 d5@2", O: "d5 eb5@2 d5", P: "~ eb5 d5@2", Q: "e5@2 eb5 f5", R: "g5!2 gb5 d5", S: "eb5@11 ~ d5@4",
  T: "g5 a5 bb5 a5 g5@4", U: "f5!2 c5!2", V: "d5@3 eb5 d5 c5 d5@2", W: "[c5 d5 eb5 d5@2 g5 g5@2]/2", X: "f5 eb5 d5@2",
  Y: "g5 d5@2 d5", Z: "eb5 d5 c5@2", AA: "d5 eb5 d5@2", AB: "d5@2 eb5 d5", AC: "eb5!2", AD: "gb5 d5", AE: "[d5@15 ~]/2",
})).s("gm_flute").gain(0.3)

// other · flute · soft notes
const flute_soft = note("<~@23 A@3 B@3 C D E F@2 G ~@14>".pickRestart({
  A: "[bb4@4 d5@4 g5@11 ~ f5@4 d5@11 ~ d5@4 f5@8]/3", B: "[d5@21 ~ d5@2]/3", C: "g5@2 g5 f5 g5@4",
  D: "~ f5 g5 f5 g5@2 a5@2", E: "bb5 c6 d6@2", F: "[g5@15 ~]/2", G: "bb5 f5 g5!2",
})).s("gm_flute").gain(0.2)

// other · flute
const flute_3 = note(`<
  ~@2 A B@2 C D E B@2 F G H@2 I J ~ K L M N O@2 P Q R S@2 T P Q R S@2 U V W X Y Z AA AB AC AD AE AF AG AH@2
>`.pickRestart({
  A: "d5@2 c5 a4", B: "g4@2 d5!2", C: "g4@2 bb4!2", D: "c5@2 d5 c5", E: "bb4 a4 bb4 gb4", F: "c5 c5@3 a4@4",
  G: "g4 d5 g4@2", H: "[bb4@4 g4@4 c5@11 ~ g4@4 d5@8]/2", I: "d5@3 c5 bb4@2 bb4@2", J: "gb4 a4 c5 a4",
  K: "bb4@2 c5 a4 bb4@4", L: "bb4!2", M: "c5!2", N: "d5 eb5 d5 c5", O: "[bb4@27 ~ d4@4]/2", P: "g4 a4 bb4 c5",
  Q: "bb4 a4 g4 f4", R: "g4!2 a4 f4", S: "[g4@15 ~]/2", T: "g4@11 ~ a4@4", U: "g4@11 ~ g4@4", V: "g4 f4 eb4 d4",
  W: "c4@2 c5 bb4 a4@2 a4@2", X: "g4@2 bb4 a4 g4@2 g4@2", Y: "f4@2 g4 bb4 bb4@2 a4@2", Z: "~@4 g4 a4 bb4@2",
  AA: "c5@4 d5 c5 d5@2", AB: "d5 bb4@2 a4", AC: "g4@11 ~ g4@2 f4@2", AD: "g4!2 gb4@2", AE: "bb4@2 bb4 c5", AF: "bb4 g4",
  AG: "a4!2", AH: "[bb4@15 ~]/2",
})).s("gm_flute").gain(0.3)

stack(flute, flute_2, flute_soft, flute_3)

More by Misc Christmas