Strudelify

Stille Nacht heilige Nacht H.145

Cameron Smith

KeyC majorTempo120 bpm
0:00/0:00
// Stille Nacht heilige Nacht H.145 — Cameron Smith
// 120 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/141814; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// 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 · flute
const flute = note(`<
  A B A B C D E F G H A B G H A B C I J K L M N@2 A B A B C D E F G H A B G H A B C I J K L M N@2
>`.pickRestart({
  A: "[e5,g5]@8 [f5,a5]@3 [e5,g5]@5", B: "[c5,e5]", C: "[b5,d6]@11 [b5,d6]@5", D: "[g5,b5]", E: "[g5,c6]@11 [g5,c6]@5",
  F: "[e5,g5]", G: "[f5,a5]@11 [f5,a5]@5", H: "[a5,c6]@8 [g5,b5]@3 [f5,a5]@5", I: "[d6,f6]@8 [b5,d6]@3 [g5,b5]@5",
  J: "[g5,c6]", K: "[c6,e6]", L: "[g5,c6]@5 [e5,g5]@5 ~ [c5,e5]@5", M: "[e5,g5]@8 [d5,f5]@3 [b4,d5]@5",
  N: "[g4@16 g4@5 ~@11, c5@21 ~@11]/2",
})).s("gm_flute").gain(0.03)

// chords · piano
const piano = note(`<
  A B A B C D E F G H A B G H A B C I J K L M N@2 A B A B C D E F G H A B G H A B C I J K L M N@2
>`.pickRestart({
  A: "g4@8 a4@3 g4@5, [c3,e3,g3]", B: "[g2,c3,e3,e4]", C: "d5@11 d5@5, [b2,d3,f3]", D: "[g2,b2,d3,b4]",
  E: "c5@11 c5@5, [c3,e3,g3]", F: "[g2,c3,e3,g4]", G: "a4@11 a4@5, [c3,f3,a3]", H: "c5@8 b4@3 a4@5, [a2,c3,f3]",
  I: "f5@8 d5@3 b4@5, [g2,b2,d3]", J: "[c3,e3,g3,c5]", K: "[g2,c3,e3,e5]", L: "c5@5 g4@5 ~ e4@5, [c3,e3,g3]",
  M: "g4@8 f4@3 d4@5, [b2,f3,g3]", N: "[[c3,e3]@16 [c3,e3]@5 ~@11, [g2,c4]@21 ~@11]/2",
})).s("gm_piano").gain(0.32)

stack(flute, piano)