Strudelify

christmas medley

Trey Sims

KeyB majorTempo170 bpm
0:00/0:00
// christmas medley — Trey Sims
// 170 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/4 at bar 22, 2/4 at bar 24, 3/4 at bar 46, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5870639; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(170/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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.

// other · tenor sax · "Sassofono tenore"
const tenor_sax = note(`<
  A@5 B@4 C@3 D ~@4 E@5 F@3 G H I J K L M@5 N O@2 P Q R S T@2 U@5 ~ V W@7 X@2 Y Z@2 AA AB ~@4 AC@4 AD AE AF AG AH AI AJ
  AK AL AM ~@7 AN AO AP AQ AR AO AP AQ AS AT AU
>`.pickRestart({
  A: "[~@9 d3@15 e3@2 f#3@13 g3@4 a3@8 a3@8 ~ d3@13 f#3@4 g3@3]/5",
  B: "[~ g3@2 a3@2 b3@4 ~ g3@4 a3@4 a3@2 b3@2 c#4@4 ~ a3@4 d4@25 ~@5 d4@3]/4",
  C: "[~ d4@4 c#4@4 b3@4 ~ a3@4 a3@6 g3@2 f#3@4 ~ d4@4 a3@13]/3", D: "a3 a3@3",
  E: "[~@5 f#4@2 e4@2 d3@4 e3@2 f#3@2 g3@2 a3@2 ~ b3@2 c#4@2 d4@13 b3@4 a3@8 g3@8 ~ f#3@8 a3@6 ~ g3@2 f#3@3]/5",
  F: "[~ g3@5 f#3@21 e3@21]/3", G: "d3 ~@6 a3 ~ d3 ~@6", H: "a3 ~ d3 ~@5 a3 ~@2 d4 ~ a3 ~ b3",
  I: "~ c#4 ~ d4 ~ a3 ~@2 b3 ~ c#4 ~ d4 ~ a3 ~", J: "b3 ~@2 c#4 ~ d4 ~ a3 ~ b3 ~ c#4 ~@2 d4 ~",
  K: "a3 ~ b3 ~ c#4 ~ d4 ~@2 a3 ~ b3 ~ c#4 ~ d4", L: "~ a3 ~@2 b3 ~ c#4 ~ f#3@8",
  M: "[~ a4@6 g4@2 f#4@4 ~ e4@4 d4@4 ~ e4@4 f#4@4 d4@4 ~ e4@2 f#4@2 g4@2 e4@2 ~ f#4@6 e4@2 d4@4 ~ c#4@4 d4@9 a3@4 ~@5]/5",
  N: "~ a3 d3 ~", O: "[~@6 a3@4 d4@4 c#4@4 ~ b3@4 e4@2 d4@2 ~ c#4@4]/2", P: "e3@4 a3@9 d3 ~@2",
  Q: "~@4 a3 ~ d3 ~@5 a3 ~@2 d3", R: "~@5 a3 ~ d3 ~@6 d3 ~", S: "a3 ~@4 a3 ~@3 d3@2 ~@5",
  T: "[e3@2 d4 ~ a3 ~ a#3 ~ c#4 ~@2 d4 ~@3 a3@2 ~@2 g3@2 ~@3 e3@2 ~@2 f3@2 ~@2]/2",
  U: "[g3@2 ~@3 a3@4 a3@4 ~ d3@8 d3@22 d4@24 ~@12]/5", V: "~@3 g4@5",
  W: "[~ f4@11 d#4@11 d4@11 d#4@11 d4@11 c4@11 g3@11 ~ g3@3 g3@2 g3@2 g3@4 a#3@3 a#3@2 a#3@2 a#3@4 c4@3 c4@2 c4@2 c4@4]/7",
  X: "[a#3@3 a#3@2 a#3@2 a#3@4 d3@11 e3@10]/2", Y: "~ f3@4 d#3@3 d3@4 g3@2 f3@2",
  Z: "[d#3@4 d3@3 g3@4 g3@4 ~ d3@2 g3@4 g3@4 g3@3 d#3@3, ~@15 g3@2 ~@15]/2", AA: "~ d#3@4 d#3@3 g3@4 g3@4",
  AB: "g3 ~@3", AC: "[~@12 g3@37 a#3@15]/4", AD: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~",
  AE: "g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~", AF: "a#3@2 g4@2 f4@2 d#4@2 a#3@6 a#3!2",
  AG: "a#3 g4 f4 d#4 c4@4", AH: "c4 g#4 g4 f4 d4@4", AI: "a#4!2 g#4 f4 g4@4", AJ: "a#3 g4 f4 d#4 a#3@3 a#3",
  AK: "a#3 g4 f4 d#4 c4@3 c4", AL: "c4 g#4 g4 f4 a#4!4", AM: "c5 a#4 g#4 f4 d#4 ~@3", AN: "~@3 g3",
  AO: "c4!2 ~ a3 c4!2 ~ c4", AP: "~ c4 ~ c4!3 ~@2", AQ: "f3 g3 a3 b3 c4 d4 c4 a3", AR: "g3 a3 b3 c4 d4 c4 b3 g3",
  AS: "f3 g3 a3 b3 c4@2 g3@2", AT: "c3@3 ~", AU: "c3 ~@7",
})).s("gm_tenor_sax").gain(0.3)

// other · tenor sax · "Sassofono tenore" · soft notes
const tenor_sax_soft = note("<~@13 A B@4 ~@66 C@3 D C@3 E ~@10>".pickRestart({
  A: "~ f#4@4 f#4@4 f#4@4 f#4@3", B: "[~@2 f#4@2 g4@2 a4@13 g4@2 f#4@2 e4@4 e4@4 e4@4 ~ e4@2 f#4@2 g4@13 ~@11]/4",
  C: "d#4@2 ~ a#3 d#4@2 ~ a#3", D: "c4@2 ~ a#3 a#3@2 a#4@2", E: "f4@2 ~ a#3 d#4@2 ~@2",
})).s("gm_tenor_sax").gain(0.2)

stack(tenor_sax, tenor_sax_soft)