Strudelify

When Christmas Comes To Town

Ryan Berberek

KeyG majorTempo78 bpm
0:00/0:00
// When Christmas Comes To Town — Ryan Berberek
// 78 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/1537006; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 64 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(78/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 · viola
const viola = note(`<
  A@3 B C D E@4 F G H I J K ~ L J M N O P Q P Q R S T J U V W V Q R S X Y Z AA@5 AB@4 AC@2 AD@2 AE@5 AF AG@5
>`.pickRestart({
  A: "[d4@4 d4@4 d4@4 g4@4 c4@4 c4@3 c4@8 d4@6 d4@2 d4@4 g4@4 c4@8 ~@7 b3@4 d4@4 g4@6 f4@2 e4@4 f4@4 g4@4 a4@4 d4@8 ~@7 d4@4 c4@4 b3@4 a3@4 d4@4 d4@4 d4@4 g4@3 c4@4]/3",
  B: "c4@4 c4@8 d4@6 d4@2 d4@4 g4@4 a4@8 ~@3 g4@4 b4@5",
  C: "~ a#4@2 b4@6 a#4@2 b4@4 d4@4 g4@4 a4@3 b4@4 g4@4 ~@4 a4@4 g4@6", D: "~@2 g4@8 a#4@7 a4@8 c5@8 f4@8 a#4@7",
  E: "[~ g4@7 f4@16 c#4@8 c4@8 d#4@7 g#3@8 ~@16 c3@4 c3@4 c3@7 d5@2 ~@2 d5@2 ~@2 d5@6 c5@2 d5@16 d4@4 d4@3 d4@4 g4@4 c4@4 c4@4 c4@8 d4@6 d4@2 d4@4 g4@3 a4@8 ~@4 g4@4 b4@6 a#4@2 b4@4]/4",
  F: "~@2 a#4@2 b4@4 d4@3 g4@4 a4@4 b4@4 g4@4 ~@21", G: "~@2 a#4@4 g4@4 ~@24 b4@7 g4@7",
  H: "~ a4@4 b4@4 c5@4 c#5@4 d5@15 a4@16", I: "g4 ~@3", J: "c4 d4 e4 g4", K: "e4 d4 c4@2", L: "~@3 g4",
  M: "e4@2 d4@2 c4@2 e4 d4", N: "c4@2 d4@2 e4@2 e4 d4", O: "c5 d5 c5 b4", P: "~@7 g4", Q: "c5 g4 f4 g4 e4@4",
  R: "f4@2 f4@2 f4@2 e4@2 e4@2 d4@4 c4 d4", S: "e4 d4 e4 g4 c4@3 g3", T: "f4@2 e4@2 c4@3 g3 f4@2 e4@2 d4@3 c4",
  U: "e4@2 d4@2 c4@3 g4", V: "c5 g4 d5 g4 e5@3 g4", W: "c5 g4 f4 g4 e4@3 g4", X: "f4@2 e4@2 c5@3 g4 f4@2 e4@2 d5@4",
  Y: "d5@4 d5 ~ c5@2", Z: "c5",
  AA: "[~@35 c4@17 g4@17 b3@17 ~ g4@17 c5@9 d5@8 e5@9 g4@9 b4@17 g4@17 ~@18 d5@8 a4@9 b4@17 f#4@15]/5",
  AB: "[~@11 a4@9 d4@9 e4@4 f4@4 e5@17 ~ d5@17 c4@17 g4@17 ~ b3@17 g4@17 c5@9 d5@9 e5@8 g4@9 b4@16]/4",
  AC: "[~ g4@17 ~@18 d5@9 a4@8 b4@17 ~ f#4@17 ~@8]/2", AD: "[~ a3@8 d4@9 e4@4 f4@4 ~ e5@17 d5@17 c4@9 e4@9 a4@17]/2",
  AE: "[c5@9 b4@8 g4@17 ~ c4@8 e4@9 a4@9 b4@4 c5@4 g4@35 ~@35 c4@17 g4@17 b3@17 ~ g4@17 c5@9 d5@8 e5@9 g4@6]/5",
  AF: "~@3 b4@17 g4@17 ~@11",
  AG: "[~@7 d5@8 a4@9 b4@17 f#4@17 ~@9 a3@9 d4@9 e4@4 f4@4 e5@17 ~ d5@17 e5@26 c5@9 c5@35 ~@42]/5",
})).s("gm_viola").gain(0.25)

stack(viola)