Strudelify

god rest ye merry gentlemen

Traditional

KeyF♯ majorTempo176 bpm
0:00/0:00
// god rest ye merry gentlemen — Traditional
// 176 bpm, 2/2, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5873890; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(176/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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.

// chords · piano
const piano = note(`<
  A B C D A B C D A B E D F G E H I J F K L M N O P D Q@3 R@3 S T U V W X Y Z U AA AB AC AD AE AF AG AH AI AJ@3 AK AL@2
  AM AN AO@2 AP AQ AR AS AT AU AV AW AX AY ~ V AZ AY
>`.pickRestart({
  A: "[f#2,f#3,a3,c#4]@6 [f#2,f#3,a3,c#4] ~@9", B: "[a2,e3,a3,c#4]@6 [a2,e3,a3,c#4] ~@9",
  C: "[d3,f#3,a3,d4]@6 [d3,f#3,a3,d4] ~@9", D: "[c#3,g#3,c#4,f#4] [c#3,g#3,c#4,f4]",
  E: "[d3,f#3,a3,d4]@3 [d3,f#3,a3,d4] ~@4", F: "[f#2,f#3,a3,c#4]@3 [f#2,f#3,a3,c#4] ~@4",
  G: "[a2,e3,a3,c#4]@3 [a2,e3,a3,c#4] ~@4", H: "[c#3,g#3,c#4,f#4] [c#3,g#3,c#4,g#4]",
  I: "[b2,b3,d4,f#4]@3 [b2,b3,d4,f#4] ~@4", J: "[e2,g#3,b3,e4]@3 [e2,g#3,b3,e4] ~@4", K: "[c#3,g#3,c#4,f4]@15 ~",
  L: "[a2,e3,a3,c#4]@3 [a2,e3,a3,c#4] ~@2 a2@2", M: "[c#3,g#3,c#4,f4]@3 [c#3,g#3,c#4,f4] ~@4",
  N: "[d3,a3,d4,f#4]@3 [d3,a3,d4,f#4] ~@4", O: "[b2,f#3,b3,d4]@15 ~", P: "[a2,a3,c#4,e4]@3 [a2,a3,c#4,e4] ~@2 b2@2",
  Q: "[[f#2,f#3,a3,c#4]@3 [f#2,f#3,a3,c#4] ~@4 [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4] ~@4 [d3,f#3,a3,d4]@3 [d3,f#3,a3,d4] ~@2 d3@2, ~@6 f#4@17 ~]/3", // F#m A D
  R: "[[c#3,g#3,c#4,f#4]@4 f4@2 ~@2 [f#1,f#2,a3,c#4]@3 [f#1,f#2,a3,c#4] ~@4 [a1,a2,a3,c#4]@3 [a1,a2,a3,c#4] ~@2 e4@2, ~ [c#3,g#3,c#4] ~@4, ~@12 f#4@31 ~@5]/3", // C#sus4 F#m A C#5
  S: "[d2,d3,a3,d4]@3 [d2,d3,a3,d4] ~@2 b3@2, f#4@11 ~@5", T: "[c#2,c#3,f#3,g#3] [c#2,c#3,f3,g#3], c#4@15 ~",
  U: "[f#1,f#2,f#3,a3,c#4]@3 [f#1,f#2,f#3,a3,c#4] ~@4", V: "[a1,a2,e3,a3,c#4]@3 [a1,a2,e3,a3,c#4] ~@4",
  W: "[d2,d3,f#3,a3,d4]@3 [d2,d3,f#3,a3,d4] ~@2 d2@2", X: "[c#2,c#3,g#3,c#4,f#4]@2 [c#4,g#4] c#4, ~ [c#2,c#3,g#3]",
  Y: "[b1,b2,d4]@3 [b1,b2] ~@2 d4@2, [f#3,b3], ~@3 c#4@3 ~@2", Z: "[e1,e2,g#3,b3,e4]@3 [e1,e2,g#3,b3,e4] ~@2 b3@2",
  AA: "[g#3,c#4,f4]@2 a3 b3, [c#2,c#3]@15 ~", AB: "[a1,a2]@3 [a1,a2] d4@2 c#4@2, [e3,a3]@15 ~, c#4 ~",
  AC: "[c#2,c#3,g#3,c#4,f4]@3 [c#2,c#3,g#3,c#4,f4] ~@4", AD: "[d2,d3,a3,d4,f#4]@3 [d2,d3,a3,d4,f#4] ~@4",
  AE: "[b2,f#3,b3,d#4]@15 ~", AF: "[a1,a2,a3,c#4,e4]@3 [a1,a2,a3,c#4,e4] ~@2 [b1,f#4]@2",
  AG: "[c#2,g#3,c#4,f#4] [c#2,g#3,c#4,f4]", AH: "e5 c#5, [d3,a3]@15 ~", AI: "f#4 a4, [b2,d4]@15 ~",
  AJ: "[c#5 [g#3,a5] e5 ~@2 g#5, f#2@5 ~@3, ~@16 [f#3,a3]@15 ~ [a3,e4,g#4]@15 ~, ~@24 c#5@23 ~]/3", // Amaj7 F#m Amaj7
  AK: "g#5 a5, [b3,f#4,a4,d5]@15 ~", AL: "[e6 a5 e5 a4, [f#3,c#4]@15 ~, a4@3 ~]/2",
  AM: "[c#5,f#5]@2 c#6 b5, [g#3,g#4]@15 ~", AN: "[d5,a5]@2 f#5 e5, [b3,f#4]@15 ~",
  AO: "[[c#5,f#5] c#6 f#5 c#5, [f#3,c#4]@15 ~]/2", AP: "[b1,b2,a3,d4,f#4]@3 [f#2,f#3,b3]@3 [b1,b2,a3,d4,f#4]@2",
  AQ: "[c#2,c#3,c#4,e4]@3 [g#2,g#3]@3 [c#2,c#3,c#4,e4]@2", AR: "[d1,d2,f#3,a3,c#4]@15 ~", AS: "[f1,f2,f3,g#3,b3]@15 ~",
  AT: "c#4 ~ e4 [c#2,c#3,f#4], a3@15 ~, [c#2,c#3]@3 [c#3,c#4]@3 ~@2, ~ d4 ~@2", // F#5 C#
  AU: "[c#3,g#3,c#4,f#4] [c#2,c#3,g#3,c#4,f4]", AV: "[a3,c#4,f#4]@4 a4 g#4 f#4@2, [d2,a2]@15 ~",
  AW: "[c#4,f#4,b4]@2 a4 b4, [d#2,d#3]@15 ~", AX: "[e4,a4,c#5]@2 e4 f#4, [e1,e2]@15 ~",
  AY: "[c#2,c#3,g#3,c#4,f#4] [c#2,c#3,g#3,c#4,f4]", AZ: "[d2,d3,f#3,a3,d4]@3 [d2,d3,f#3,a3,d4] ~@4",
})).s("gm_piano").gain(0.3)

stack(piano)

More by Traditional