Strudelify

christmas songs

Robert Wells and Mel Torme

KeyD majorTempo140 bpm
0:00/0:00
// christmas songs — Robert Wells and Mel Torme
// 140 bpm, 4/4, key D 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/5901974; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 105 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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 · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@2 A B C D E F ~@34 G H ~@2 I J K F L M N O P@2 Q ~@5 R S N T U V ~@20 W X Y@2 Z AA AB AC AD K AE V AF AG AH AI@2
>`.pickRestart({
  A: "b3 c4 d4", B: "d#4", C: "d4 c4", D: "b3 g#3", E: "g3", F: "d4", G: "~@5 b3 c4@2 e4 c4@2 a3",
  H: "c4@2 ~ a3@2 a#3@4 ~@3", I: "~@3 a4@2 ~ g4@2 ~ e4@2 d4", J: "e4@2 d4@7 ~@3", K: "c4", L: "d4@6 d#4@2 d4 c4@3",
  M: "a#3@2 ~ g4@2 f4@7", N: "g4", O: "f#4", P: "[f4@5 e4@4 d#4@5 f4@10]/2", Q: "e4 ~@3", R: "~ f4 g4 f4", S: "g#4",
  T: "f4", U: "e4", V: "d#4@3 ~", W: "~@3 g4", X: "f#4@2 f4 d4", Y: "[c#4@5 c4@4 b3@6 a3@3 g#3@6]/2", Z: "g3 ~@3",
  AA: "a#3!2", AB: "a3", AC: "g#3", AD: "g3 ~ c4@2", AE: "b3 e4", AF: "e4@5 d4 c4@3 b3@3", AG: "c4 b3 c4 b3",
  AH: "~@2 a3 b3@2 c4 e4@2 g4 e4@2 c4", AI: "[e4@3 ~ g4@2 a4@4 b4@38]/2",
})).s("gm_tenor_sax").gain(0.2)

// other · trombone
const trombone = note(`<
  A B C D E F G B ~@34 H I ~@2 J K B@2 L M N O P@2 Q ~@5 R S N O T U ~@20 V W X@2 Y Z AA AB AC B AD AE E AF AG AH@2
>`.pickRestart({
  A: "c4@2 b3 a3", B: "g#3", C: "g3 a3 b3", D: "c4 b3", E: "a#3 a3", F: "g#3 f3", G: "e3", H: "~@5 f#3 g3@2 b3 g3@2 e3",
  I: "g3@2 ~ d#3@2 e3@4 ~@3", J: "~@3 f4@2 ~ e4@2 ~ c4@2 a3", K: "c4@2 a3@7 ~@3", L: "a#3@6 c4@2 a#3 a3@3",
  M: "g3@2 ~ d#4@2 d4@7", N: "e4", O: "d4", P: "[d4@5 c#4@4 c4@5 b3@10]/2", Q: "a3 ~@3", R: "~ c4 d4 c4", S: "f4",
  T: "d4 c4", U: "b3@3 ~", V: "~@3 e4", W: "d#4@2 d4 g#3", X: "[a3@5 g#3@4 g3@9 f3@6]/2", Y: "e3 ~@3", Z: "f3 g3",
  AA: "g3@2 f3 e3", AB: "d3 f3", AC: "g3 ~ g3@2", AD: "g3", AE: "f#3@3 ~", AF: "g#3@2 g3 f3",
  AG: "~@2 e3 g#3@2 a3 b3@2 d4 b3@2 g3", AH: "[b3@3 ~ d4@2 e4@4 f#4@38]/2",
})).s("gm_trombone").gain(0.2)

stack(tenor_sax, trombone)