Strudelify
KeyB♭ majorTempo84 bpm
0:00/0:00
// Santa Baby — Javits Springer and Springer
// 84 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/8 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5278229; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 30 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · trombone
const trombone = note("<A B C B C B C B D E F G H I J K L M N B C B C B D O P O P Q>".pickRestart({
  A: "~@29 f2@3", B: "bb2@8 ~@5 bb2@3 d3@8 ~@5 d3@3", C: "c3@8 ~@5 c3@3 f3@5 f2@3 g2@5 a2@3",
  D: "g3@5 g3@3 g3@5 g3@3 eb3@5 ~@11", E: "~@5 d3@3 db3@8 d3@5 d3@3 f3@5 f3@3", F: "e3@8 eb3@5 d3@19",
  G: "~@8 d4@5 a3@3 d4@13 a3@3", H: "d4@5 d4@8 d4@11 ~@8", I: "d4@5 d4@3 b3@5 b3@3 a3@5 a3@3 gb3@5 g3@3",
  J: "g3@5 d4@3 b3@5 a3@11 ~@8", K: "~@5 c4@3 c4@8 c4@5 c4@3 a3@8", L: "~@5 c4@3 c4@5 d4@11 ~@5 c4@3",
  M: "f4 e4 eb4 g3", N: "d4@5 db4@8 c4@3 ~@16", O: "~ d3@3", P: "eb3@5 ~@11 eb3@5 ~@11", Q: "~@8 eb3@5 d3@19",
})).s("gm_trombone").gain(0.3)

// other · trombone
const trombone_2 = note("<~ A B A B A B A C D E F G H I J K L ~ A B A B A C M N M N O>".pickRestart({
  A: "~@5 f2@3 g2@5 ~@8 d3@3 bb2@5 ~@3", B: "~@5 e3@3 c3@5 ~@8 c3@3 f3@5 ~@3", C: "bb3@5 bb3@3 c4@5 c4@3 a3@5 ~@11",
  D: "~@5 g3@3 gb3@8 g3@5 g3@3 d3@5 d3@3", E: "db4@8 c4@5 bb3@19", F: "d3", G: "d3 gb3", H: "g3", I: "g3@13 g3@19",
  J: "c3@2 e3!2", K: "c3 g3", L: "a3@5 ~@27", M: "~ f3 g3@2", N: "g3@5 ~@11 a3@5 ~@11", O: "~@8 gb3@5 f3@19",
})).s("gm_trombone").gain(0.3)

// bass · trombone · "Bass Trombone"
const bass = note("<A B C B D E D E F G H I J K L M N O P B D E D E F E F E F Q>".pickRestart({
  A: "~@29 f2@3", B: "bb2@8 ~@5 bb2@3 d3@8 ~@5 d3@3", C: "c3@8 ~@5 c3@3 f3@5 f2@3 g2@5 a2@3",
  D: "c2@8 ~@5 c2@3 f2@5 f2@3 g2@5 a2@3", E: "bb1@8 ~@5 bb1@3 d2@8 ~@5 d2@3", F: "c2@5 ~@11 f2@5 ~@8 f2@3",
  G: "bb2@8 a2@8 d2@8 g2@5 g2@3", H: "gb2@8 f2@5 f2@19", I: "d2 d3 c3 a2", J: "d2 e2 gb2 a2", K: "g2 b2 d2 g2",
  L: "g2@8 a2@8 b2@8 g2@5 g2@3", M: "c2 d2 e2 g2", N: "c3@8 bb2@8 g2@5 g2@3 c2@5 e2@3", O: "f2@5 ~@27",
  P: "~@21 f2@3 g2@5 a2@3", Q: "bb2@5 ~@3 b2@5 bb2@19",
})).s("gm_trombone").gain(0.3)

stack(trombone, trombone_2, bass)