Strudelify

The First Noel

Milzy

KeyB♭ majorTempo80 bpm
0:00/0:00
// The First Noel — Milzy
// 80 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 1) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5925432; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 136 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/3)

// 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 · violin · "Violin I"
const violin = note(`<
  A B C D E ~ F G H@2 ~@7 A I J K J L M N O P Q I R S T U V D W X Y K Z O@2 AA O K AB AC AD AE AF AG AH ~@3 AI AJ AK AL
  E AM AN AO AP AK AQ AR AS AT AU O@3 AA O K AB AC AD AE AF AG AH ~@3 AI AJ AK AL E AM AN AO AP AK AQ AR AS AT AU O ~@12
  AV AW AX AY AZ@2 BA BB BC BD BE BF B AK AQ BG ~@6
>`.pickRestart({
  A: "~@4 d5 c5", B: "bb4@3 c5 d5 eb5", C: "f5@4 g5 a5", D: "bb5 a5 g5", E: "f5", F: "~@10 eb5 c5", G: "d5 c5 bb4",
  H: "[c5 bb4 c5@4]/2", I: "bb4", J: "a4 bb4@2", K: "g4", L: "g4 f4@2", M: "f4 g4@2", N: "bb4 f4 eb4", O: "f4",
  P: "bb4@4 d5 eb5", Q: "f5@2 c5", R: "bb4 a4 f4", S: "g4 a4 g4", T: "f4 g4 a4", U: "bb4!2 a4", V: "bb4@4 g5 a5",
  W: "f5@2 d5", X: "c5", Y: "bb4@2 g4", Z: "a4", AA: "~ eb4 g4", AB: "bb4 d5 f5", AC: "eb5@2 c5", AD: "d5",
  AE: "~ d6 bb5", AF: "~ c6 a5", AG: "~ d5 bb5", AH: "f5 d5@2", AI: "~@16 a4 bb4 c5 d5 eb5 f5 g5 a5", AJ: "bb5@2 eb5",
  AK: "f5@4 bb5 a5", AL: "g5@2 g5", AM: "f5 bb4@2", AN: "~@2 f5", AO: "g5 f5 eb5", AP: "d5@4 d5 eb5",
  AQ: "g5@3 a5 bb5 c6", AR: "d6@2 c6", AS: "~ bb5 g5", AT: "~ f5 d5", AU: "a4 c5 a4@2 g4@2", AV: "~ a4 bb4",
  AW: "bb4 c5 d5", AX: "eb5 f5!2", AY: "f5@2 eb5@2 d5@2 eb5@2 d5@2 eb5@2 f5@2 g5@2 eb5 f5 g5 a5 bb5 c6 d6 eb6",
  AZ: "f6", BA: "eb6@4 g6 a6", BB: "bb6@2 a6", BC: "g6 f6 eb6", BD: "d6 eb6 f6", BE: "g6 eb6 c6", BF: "bb5@4 d5 c5",
  BG: "d6",
})).s("gm_violin").gain(0.4)

// other · violin · "Violin I" · soft notes
const violin_soft = note("<~@111 A B C D ~@15 E F G H I@2>".pickRestart({
  A: "~@4 g4 a4", B: "bb4 a4 g4", C: "f4@4 bb4 a4", D: "g4 ~@2", E: "c6", F: "bb5 a5 g5", G: "f5 g5 a5", H: "bb5 d6 c6",
  I: "bb5/2",
})).s("gm_violin").gain(0.2)

// other · violin · "Violin II"
const violin_2 = note(`<
  ~@16 A B C D E D F G H C I J K L M N O D K P@2 Q R@2 C S T C K U V D W X Y Z ~@3 AA AB AC AD AE AF AG AH C AI AJ AK AL
  AM AN C@2 S T C K U V D W X Y Z ~@3 AA AB AC AD AE AF AG AH C AI AJ AK AL AM AN C ~@12 AO AP AQ AR AS@2 AT AU AV AW AX
  AY D AZ BA BB ~@6
>`.pickRestart({
  A: "~ d4 c4", B: "bb3", C: "d4", D: "f4", E: "eb4 d4@2", F: "bb3 c4@2", G: "c4 d4@2", H: "d4 eb4 f4@4",
  I: "d4@4 f4 g4", J: "a4@2 f4", K: "eb4", L: "d4@2 d4", M: "d4!2 eb4", N: "f4 g4 eb4", O: "f4 d4 eb4", P: "a4",
  Q: "bb3 c4 d4", R: "c4/2", S: "c4", T: "~ bb3 eb4", U: "f4 bb4 c5", V: "bb4@2 eb4", W: "~ bb5 f5", X: "~ a5 f5",
  Y: "bb4 g4 bb4", Z: "g4 f4@2", AA: "~@16 eb4 f4 g4 a4 bb4 c5 d5 eb5", AB: "f5@2 eb5", AC: "d5@4 d5 c5", AD: "eb5",
  AE: "bb4 f4 d5", AF: "bb4 a4 g4", AG: "f4 g4 a4", AH: "bb4 f4 eb4", AI: "c5@4 bb4 a4", AJ: "bb4@3 f5 g5 a5",
  AK: "bb5@2 a5", AL: "~ g5 eb5", AM: "~ d5 bb4", AN: "f4 a4 f4@2 eb4@2", AO: "~ f4 g4", AP: "g4 a4 bb4", AQ: "c5 d5!2",
  AR: "d5@2 c5@2 bb4@2 c5@2 bb4@2 c5@2 d5@2 eb5@2 c5 d5 eb5 f5 g5 a5 bb5 c6", AS: "d6", AT: "g5@4 bb5 c6",
  AU: "d6@2 c6", AV: "bb5 a5 g5", AW: "f5 g5 a5", AX: "bb5 f5 eb5", AY: "d4 c4 bb3 c4 d4 eb4", AZ: "a4@4 g5 f5",
  BA: "eb5@3 f5 g5@2", BB: "f5",
})).s("gm_violin").gain(0.4)

// other · violin · "Violin II" · soft notes
const violin_soft_2 = note("<~ A B C B D E F G@2 ~@5 H I ~@93 E@2 J B I ~@15 K L@2 M@2 N>".pickRestart({
  A: "bb3", B: "d4", C: "eb4", D: "bb4 a4 g4", E: "f4", F: "d4 c4 bb3", G: "c4/2", H: "~@2 f4", I: "eb4 ~@2",
  J: "g4 f4 eb4", K: "g5", L: "bb4", M: "eb5", N: "d5",
})).s("gm_violin").gain(0.2)

// other · viola
const viola = note(`<
  ~@5 A B C D@2 ~@6 E F C G H G I J K C L M N O P Q E F R S T U C V C V C W C X Y Z AA J AB AC AD AE AF F AA AG AH AI AJ
  AK AL C AM AN AO AP AQ AR C@2 V C W C X Y Z AA J AB AC AD AE AF F AA AG AH AI AJ AK AL C AM AN AO AP AQ AR C ~@12 AS
  AT AU AV AA AW AX J AY AZ BA BB BC BD BE BF ~@6
>`.pickRestart({
  A: "g4 f4 eb4", B: "d4 bb3@2", C: "bb3", D: "a3/2", E: "f3 eb3 c3", F: "d3", G: "c4 bb3@2", H: "bb3 c4@2", I: "eb4",
  J: "f4", K: "bb3 a3@2", L: "bb3@2 d4", M: "c4@2 d4", N: "bb3@2 bb3", O: "bb3@2 f3", P: "bb3 a3 g3", Q: "f3 g3 eb3",
  R: "g3", S: "f3", T: "eb3", U: "g3 a3 bb3", V: "a3", W: "a3 d4 c4", X: "bb3@2 a3", Y: "g3@2 c4", Z: "bb3@4 d4 c4",
  AA: "bb3@3 c4 d4 eb4", AB: "g4 eb4 g4", AC: "f4@4 bb3 a3", AD: "g3 f3 eb3", AE: "f3@2 a3", AF: "bb3 f3 eb3",
  AG: "f4@2 d4", AH: "g3@3 a3 bb3 c4", AI: "d4@2 c4", AJ: "g3 bb3 eb4 bb3 g3 bb3", AK: "f3 bb3 d4 bb3 f3 bb3",
  AL: "eb4 d4 c4@4", AM: "f4@4 g4 f4", AN: "eb4@3 f4 g4 a4", AO: "bb4@2 f4", AP: "eb4@4 g4 eb4",
  AQ: "d4 c4 bb3 c4 d4@2", AR: "f4@2 eb4 d4 c4@2", AS: "~ a3 bb3", AT: "bb3 c4 d4", AU: "eb4 f4!2",
  AV: "d4@4 d4@4 d4@4 d4@4 a4 g4 ~ f4 eb4 d4 ~ c4", AW: "f4@4 bb4 a4", AX: "g4@2 g4", AY: "g4@4 a4 g4", AZ: "f4 g4 a4",
  BA: "bb4 f4 eb4", BB: "d4", BC: "d4@4 d4 eb4", BD: "f4@4 g4 a4", BE: "bb4@4 f4 eb4", BF: "d4@3 f3 bb3 d4",
})).s("gm_viola").gain(0.4)

// other · viola · soft notes
const viola_soft = note("<~@103 A@3 B C D E F G H I J ~@15 K L F M K F>".pickRestart({
  A: "f4", B: "eb4", C: "d4@2 c4", D: "bb3@2 eb4", E: "d4", F: "bb3", G: "a3@4 c4 d4", H: "eb4@2 eb4", I: "d4 f4@2",
  J: "g3 ~@2", K: "c4", L: "g3", M: "d4@2 eb4",
})).s("gm_viola").gain(0.2)

// other · pizzicato strings
const pizzicato_strings = note("<~@10 [~ d4@2] [~ c4@2] [~ g3 d4@4] [c4 f3 bb3@4] [~ bb3 eb4@4] [c4 f3 bb3@4] ~@120>")
  .s("gm_pizzicato_strings").gain(0.3)

// other · cello · "Violoncello"
const cello = note(`<
  ~@5 A B C D@2 E F G H I H J E K H A L A M N O P Q R S T U V W A L X@2 D@2 Y Z AA AB AC AD AE AF AG AH AI N A L AJ AK
  AL H AM AN G H AO P Q AA AP G H AJ E Y Z AA AB AC AD AE AF AG AH AI N A L AJ AK AL H AM AN G H AO P Q AA AP G H AJ E
  ~@13 H AQ AR AL H G E G AS AT E@2 N AU N ~@6
>`.pickRestart({
  A: "eb2", B: "f2 g2@2", C: "gb2", D: "f2/2", E: "bb2", F: "f3@2 d3", G: "eb3", H: "d3", I: "d3 eb3@2", J: "f3 eb3@2",
  K: "bb2@2 c3", L: "d2", M: "d3 g2@2", N: "f2", O: "bb2@4 d3 c3", P: "bb2@3 c3 d3 eb3", Q: "f3@4 bb3 a3", R: "g3@2 g3",
  S: "f3@2 a2", T: "g2 d3 eb3", U: "bb2 eb3 c3", V: "d3 f3 a2", W: "bb2@2 f2", X: "c2/2", Y: "bb2@4 d3 eb3", Z: "f3",
  AA: "g3", AB: "f3 bb3 a3", AC: "g3@2 a3", AD: "f3@2 f3", AE: "eb3@2 a3", AF: "bb3", AG: "bb2@2 bb2", AH: "a2@2 a2",
  AI: "g2@2 g2", AJ: "c3@2 f2", AK: "bb2@2 a2", AL: "bb2@4 bb2 c3", AM: "eb3@3 f3 g3 a3", AN: "bb3@2 f3", AO: "c3",
  AP: "f3@2 bb2", AQ: "c3@2 f3", AR: "bb2@4 bb2@4 bb2@4 bb2@4 a3 g3 ~ f3 eb3 d3 ~ c3", AS: "d3@2 bb2",
  AT: "c3 d3 eb3@2 c3@2", AU: "eb2@2 eb2",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello" · soft notes
const cello_soft = note("<~@102 A B C A D E F A@2 G H I C ~@15 J C B K C A>".pickRestart({
  A: "bb2", B: "d3", C: "eb3", D: "g3", E: "f3", F: "g3@2 a3", G: "a2", H: "g2", I: "f2", J: "gb2", K: "c3",
})).s("gm_cello").gain(0.2)

stack(violin, violin_soft, violin_2, violin_soft_2, viola, viola_soft, pizzicato_strings, cello, cello_soft)