Strudelify

christmas medley

Lawrence Miller

KeyB♭ majorTempo88 bpm
0:00/0:00
// christmas medley — Lawrence Miller
// 88 bpm, 4/4, key A# 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 (3/4 at bar 1, 4/4 at bar 8) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5982798; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 55 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/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.

// bass · clarinet · "Bass Clarinet"
const bass = note(`<
  A@4 B C D@2 E@3 F G@2 H I J K L K M K N O P K Q K M R S T U ~@2 V@2 W X Y@3 Z AA AB AC AD@4 AE@4 ~
>`.pickRestart({
  A: "[~@45 g3@31 ~ d3@6 f3@31 bb2@6 ~ eb3@31 g2@6 d3@19 g2@3 a2@3 bb2@3 ~ c3@3 d3@2]/4",
  B: "~ eb3@3 bb2@6 a2@3 bb2@3 ~ a2@3 g2@3 bb2@6 a2@3 bb2@3 a2@3 ~ g2@3 bb2@6",
  C: "a2@3 bb2@3 a2@3 g2@3 ~ bb2@6 a2@3 bb2@3 g2@6 d3@17",
  D: "[~@2 e3@6 ~ gb3@6 g3@6 d3@3 e3@3 gb3@3 ~ g3@3 a3@3 bb3@3 c4@3 bb3@3 c4@13 g3@19 bb2@6 bb2@3 c3@3 bb2@6]/2",
  E: "[~ g2@6 eb2@6 g2@6 bb2@13 c3@3 c3@3 c3@3 c3@3 ~ bb2@6 g2@3 g2@3 f2@6 bb2@6 ~ bb2@12 bb2@6 ~ bb2@3 c3@3 bb2@6 g2@6 eb2@6 ~ g2@6 bb2@13 c3@3 c3@3 c3@3 c3@2]/3",
  F: "~ bb2@6 g2@3 ~ g2@3 f2@6 bb2@6 eb2@13 eb3@6 eb3@3",
  G: "[f3@3 g3@13 f3@6 f3@3 eb3@3 ~ d3@12 c3@13 eb3@12 d3@6 ~ d3@3 f3@3 bb2@6 d3@6 bb3@5]/2",
  H: "~@2 bb3@3 c4@3 bb3@6 g3@6 ~ eb3@3 f3@3 g3@3 a3@3 bb3@13 c3@2", I: "~ c3@3 c3@3 c3@3 bb2@6 ~ g2@3 g2@3 f3@25",
  J: "bb3@24 g3@7 eb3@5 bb2@7 g2@5", K: "f2@12 ~@7 f2@5 a2@12 ~@7 a2@5", L: "g2@7 ~@12 g2@5 c3@7 c3@5 d3@7 e3@5",
  M: "g2@7 f2@5 ~@7 g2@5 c3@7 c3@5 d3@7 e3@5", N: "g2@12 ~@12 c3@12 ~@7 c3@5", O: "f2 a2 c3 d3",
  P: "g2@12 g2@12 db3@7 d3@5 eb3@7 e3@5", Q: "g2@12 ~@7 g2@5 c3@7 c3@5 d3@7 e3@5", R: "f3@12 ~@7 f3@5 a3@12 ~@7 a3@5",
  S: "g3@12 ~@12 c3@12 ~@7 c3@5", T: "f2@12 a2@12 c3@7 db3@5 d3@12", U: "g3@12 g3@12 c4@7 g3@5 a3@12",
  V: "[bb2@2 d3@2 f3@2 a3 bb3@2 a3@2 g3@2 f3@3 g3@8]/2", W: "f3@4 eb3 g3", X: "bb3@2 c4 d4@2 c4@2 bb3@2 g3 ~@2",
  Y: "[eb3@2 gb3 bb3@2 bb3 c4 db4@2 c4@2 ab3@5 bb2@2 c3@2 a2@2 bb2 g2@2 a2@2 gb2@5 bb2@2 c3@2]/3",
  Z: "a2@2 bb2 g2@2 a2@2 gb2@5", AA: "f3@2 g3@2 bb3 bb3@2 b3@5", AB: "b3 c4 d4 eb4 bb3@2 eb4@2 eb4@2 eb4@2",
  AC: "c4@8 c4@16 eb4@5 f4@3 d4@8 c4@8",
  AD: "[bb3@8 g3@8 gb3@8 eb3@16 c4@13 f3@53 g3@13 gb3@7 bb3@6 c4@26 ~ d4@6 d4@7 d4@13 d4@7]/4",
  AE: "[d4@6 d4@13 ~ d4@6 f4@7 bb3@6 c4@7 d4@26 f3@53 f3@53 ~@14]/4",
})).s("gm_electric_bass_finger").gain(0.3)

stack(bass)