Strudelify

white winter hymnal

Pentatonix cover

KeyD majorTempo120 bpm
0:00/0:00
// white winter hymnal — Pentatonix cover
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/466301; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · piano
const piano = note(`<
  ~@2 A@7 B C D E@2 F G H I J K L ~@3 M N O P@2 Q R ~ M N O S@2 Q T@2 A B C D E@2 F G H I J K M N O P@2 Q R ~ M N O S@2
  Q T@2 A B C D E@2 F G H I J K L
>`.pickRestart({
  A: "d5@3 b4 a4!2 b4!2", B: "d5@2 b4@2 a4!2 b4!2", C: "d5@2 ~ b4 a4@2 b4@2", D: "d5 b4 d5 f#5",
  E: "e5@2 ~ d5 b4!2 d5!2", F: "e5@2 ~ d5 b4@2 d5@2", G: "e5 f#5 g5 a5", H: "b5@2 ~ a5 g5!2 a5!2",
  I: "b5@2 ~ a5 g5@2 a5@2", J: "b5 a5!2 g5", K: "g5@2 f#5@2 f#5@2 e5 d5", L: "e5 d5 d5@2 ~@4",
  M: "b4@2 c#5 d5 e5@2 f#5@2", N: "b4 d5 a5@2 f#5@2 e5 d5", O: "e5@2 f#5@3 ~@3", P: "[e5@6 d5@2 e5@3 d5@3 b4@16 ~@2]/2",
  Q: "~@2 b4 a4 b4 d5 b4 a4", R: "f#4 c#5 b4@2", S: "[e5@6 d5@2 e5@3 d5@3 b4@8 ~@10]/2", T: "[f#4 c#5 b4@4 ~@2]/2",
})).s("gm_piano").gain(0.3)

// other · piano
const piano_2 = note(`<
  ~@4 A@5 B C D E@2 F G H I J K L ~@3 M N O P@2 Q R ~ S T U V@2 W X@2 A B C D E@2 F G H I J K M N O P@2 Q R ~ S T U V@2
  W X@2 A B C D E@2 F G H I J K L
>`.pickRestart({
  A: "a4@3 g4 f#4!2 g4!2", B: "a4@2 g4@2 f#4!2 g4!2", C: "a4@2 ~ g4 f#4@2 g4@2", D: "a4 g4 a4 c#5",
  E: "b4@2 ~ a4 g4!2 a4!2", F: "b4@2 ~ a4 g4@2 a4@2", G: "b4 c#5 d5 e5", H: "f#5@2 ~ e5 d5!2 e5!2",
  I: "f#5@2 ~ e5 d5@2 e5@2", J: "f#5 e5!2 d5", K: "d5@2 c#5@2 c#5@2 b4 a4", L: "b4 a4 a4@2 ~@4",
  M: "b4@2 c#5 d5 e5@2 f#5@2", N: "b4 d5 a5@2 f#5@2 e5 d5", O: "e5@2 f#5@3 ~@3", P: "[e5@6 d5@2 e5@3 d5@3 b4@16 ~@2]/2",
  Q: "~@2 b4 a4 b4 d5 b4 a4", R: "f#4 c#5 b4@2", S: "f#4 a4 b4 d5", T: "f#4 a4 f#5@2 d5@2 b4 a4", U: "b4@2 d5@3 ~@3",
  V: "[b4@6 a4@2 b4@3 a4@3 g4@8 ~@10]/2", W: "~@2 g4 f#4 g4 a4 g4 f#4", X: "[d4 f#4 d4@4 ~@2]/2",
})).s("gm_piano").gain(0.3)

// bass · piano
const bass = note(`<
  ~@6 A B C@4 D@3 E F@2 G H I ~@3 J@4 K@2 L@2 J@4 K@2 M@2 C@4 D@3 E F@2 G ~ J@4 K@2 L@2 J@4 K@2 M@2 C@4 D@3 E F@2 G ~@2
>`.pickRestart({
  A: "d2@3 d2!5", B: "d2@3 d2!3 a1!2", C: "d2 ~@2 d2@4 ~", D: "e2 ~@2 e2@4 ~", E: "e2 ~ f#2@2 g2@2 a2@2",
  F: "g2 ~@2 g2@4 ~", G: "a2 ~@3", H: "~@6 a2 b2", I: "d2!2 d2@2 ~@4", J: "d2/4", K: "[g2@10 ~ d2 g2 d2 g2 a2]/2",
  L: "d2/2", M: "[d2@3 ~]/2",
})).s("gm_piano").gain(0.3)

stack(piano, piano_2, bass)