Strudelify

Stille Nacht heilige Nacht

Lukas Leichssenring

KeyC majorTempo120 bpm
0:00/0:00
// Stille Nacht heilige Nacht — Lukas Leichssenring
// 120 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5880592; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 24 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 · piano · "Klavier"
const piano = note("<A B C D E F G H I J K L M N O P Q R S T U V W@2>".pickRestart({
  A: "[g2,c3,e3,g4]@8 [c3,f3,a3,a4]@3 [c3,e3,g3,g4]@5", B: "[g2,c3,e3,e4,g4]@15 ~",
  C: "[e2,g2,c3,e3,g3]@8 [f2,a2,c3,f3,a3]@3 [e2,g2,c3,e3,g3]@5", D: "[c2,e2,c3,e3]@15 ~",
  E: "[b2,d3,g3,d4,g4,d5]@10 ~ [b2,d3,g3,d4,g4,d5]@5", F: "[d3,f3,b3,d4,b4]@15 ~",
  G: "[c3,e3,g3,c4,e4,c5]@10 ~ [c3,e3,g3,c4,g4,c5]@5", H: "[g2,c3,e3,g3,c4,g4]@15 ~",
  I: "[f4,a4]@10 ~ [f4,a4]@5, [c3,f3,a3]@15 ~", J: "[c3,f3,a3,a4,c5]@15 ~", K: "[c3,e3,g3,e4,g4]@15 ~",
  L: "[g2,c3,e3,c4,e4]@15 ~", M: "[c4,f4,a4]@10 ~ [c4,f4,a4]@5, [f3,a3]@15 ~",
  N: "[a3,c4]@8 [g3,b3]@3 [f3,a3,f4,a4]@5, [f4,a4,c5]@5 ~@3", O: "[c4,e4,g4]@8 [c4,f4,a4]@3 [c4,e4,g4]@5, [e3,g3]@15 ~",
  P: "[c3,e3,g3,c4,e4]@15 ~", Q: "[d3,d4,d5,d6]@10 ~ [d3,d4,d5,d6]@5",
  R: "[f3,f4,f5,f6]@8 [d3,d4,d5,d6]@3 [b2,b3,b4,b5]@5", S: "[c3,c4,c5,c6]@15 ~", T: "[e3,e4,e5,e6]@15 ~",
  U: "[c5,c6]@5 [g4,g5]@5 ~ [e4,e5]@5, [g2,c3,e3]@15 ~", V: "[g4,g5]@8 [f4,f5]@3 [d4,d5]@5, [d2,f2,d3]@15 ~",
  W: "[[e2,g2,c3,c4,e4,g4,c5]@15 ~]/2", // C
})).s("gm_piano").gain(0.3)

// other · trumpet · "Trompete in B"
const trumpet = note("<A@2 B A C D E A E F G A E H I@2 J K A@2 L F I@2>".pickRestart({
  A: "c4", B: "e4@8 f4@3 e4@5", C: "g4@11 g4@5", D: "f4", E: "e4@11 e4@5", F: "d4", G: "a3", H: "d4@11 b3@5", I: "c4/2",
  J: "d4@11 d4@5", K: "b3@11 d4@5", L: "e4",
})).s("gm_trumpet").gain(0.3)

stack(piano, trumpet)