Strudelify

Christmas Medly

bsw.music

KeyA♭ majorTempo80 bpm
0:00/0:00
// Christmas Medly — bsw.music
// 80 bpm, 3/4, key Ab 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 47, 3/4 at bar 67) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5862313; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 74 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/3)

// 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 · bassoon
const bassoon = note(`<
  A B C D E F E F G H I J K L E M K L E F N@5 O@3 P@4 Q R S@2 T U V@2 W@4 X@2 Y@2 Z AA AB@2 AC AD@3 AE AF@3 AG AH AI@2
  AJ AK@7 AL@2
>`.pickRestart({
  A: "c4@21 eb4@5 ~ f4@5", B: "eb4@11 db4@10 c4@11", C: "c4@11 ab4@10 g4@11", D: "f4@21 eb4@11",
  E: "eb4@16 f4@5 eb4@11", F: "c4", G: "bb4@21 bb4@11", H: "g4", I: "ab4@21 ab4@11", J: "eb4", K: "f4@21 f4@11",
  L: "ab4@11 g4@10 f4@11", M: "c4@21 g4@11", N: "[bb4@24 bb4@12 db5@17 bb4@6 g4@12 ab4@36 c5@36 ~@17]/5",
  O: "[~@11 ab4@14 eb4@14 c4@14 eb4@21 ~ db4@7 bb3@14]/3",
  P: "[ab3@43 d4@14 c4@14 bb3@14 a3@14 ~ a4@4 g4@2 ~ a4@2 f4@5 a4@5 g4@2 a4@2 f4@5]/4",
  Q: "a4@5 g4@2 a4@2 f4@5 a4@5 g4@2 a4@2 ~ f4@4 d5@4",
  R: "~ d5@2 ~ d5@2 c5@2 bb4@2 ~ a4@4 a4@2 ~ a4@2 g4@2 ~ f4@2 g4@5 g4@2",
  S: "[g4@2 a4@2 ~ g4@2 f4@5 e4@2 f4@2 ~ d4@4 a3@2 ~ b3@2 db4@2 d4@2 ~ e4@2 f4@2 ~ g4@2 a4@2 g4@5 f4@5 a3@2 b3@2 ~ db4@2 d4@2 e4@2 ~ f4@2]/2",
  T: "g4@2 a4@2 ~ g4@4 f4@5 f4@5 e4@2 f4@2 ~ d4@4 f4@4", U: "~ e4@2 ~ f4@2 d4@5 f4@4 e4@2 ~ f4@2 d4@5 f4@5 e4@2",
  V: "[f4@2 d4@5 f4@5 e4@2 f4@2 ~ d4@4 f4@5 e4@2 f4@2 ~ d4@5 f4@4 e4@2 ~ f4@2 d4@5 f4@5 e4@2 f4@2 d4@5]/2",
  W: "[a3@14 f3@14 e3@14 ~ d3@4 d3@2 ~ d3@2 d3@5 a3@28 a3@28 ~ a3@2 b3@2 ~ db4@2 d4@2 e4@2 ~ f4@2]/4",
  X: "[a3@2 ~@3 a3@2 ~@2 a3@2 ~@3 a3@2 ~ b3@2 db4@2 d4@2 ~ e4@2 f4@2 gb4@2 ~ g4@2 a4@2 ~ bb4@2 c5@2 db5@2 ~ d5@14 d5@5 ~@2]/2",
  Y: "[~@21 g4@4 g4@4 g4@8 g4 g4@2 ~@2 g4@10 ~@4 g4@3 bb4@2 eb4@2 ~]/2", Z: "~ f4@2 g4@15 ab4@4 ab4@4 ab4@4 eb4@2",
  AA: "f4@2 ~ g4@2 ~@2 g4@6 eb4@4 g4@4 f4@3 f4@2 g4@2 ~@2 f4@2, ~ ab4 ~@14",
  AB: "[~@8 bb4@5 ab4@2 eb4@4 bb3@4 c4@4 bb3@3 eb4@4 bb3@4 c4@4 bb3@4 ~@4 eb4@3 g4@2 c4@2 ~@2 d4@2 eb4@3]/2",
  AC: "~ bb3@4 c4@3 bb3@4 eb4@4 eb4@4 eb4@4 c4@2 ~ eb4@2 eb4@2 ~, ~@13 d4 ~@2",
  AD: "[~ eb4@6 g4@4 bb4@3 bb4@4 ab4@2 f4@2 ~@2 eb4@6 eb4@4 f4@3 g4@4 ab4@8 g4@5 f4@2 eb4@11 ~ db4@2 ~@2 c4@7 bb3@8 ab3@9]/3",
  AE: "~@2 eb4@2 ~@2 f4@11 ~ f4@2 ~ g4@11",
  AF: "[~ g4@2 ~@2 ab4@23 ~@3 c4@4 db4@4 eb4@4 db4@3 c4@4 c4@6 bb3@2 ab3@4 db4@4 eb4@3 db4@4 db4@4 c4@4 c4@5 bb3@2 ab3@4 c4@2 ~@2]/3",
  AG: "c4@2 ~@2 c4@2 ~@2 c4@2 ~ c4@2 db4@2 eb4@11 ~ db4@2 ~ bb3@2, ~@29 c4@2 ~",
  AH: "~@2 bb3@2 ~@2 bb3@2 ~@2 bb3@2 c4@2 db4@11 c4@2 bb3@2 ab3@3",
  AI: "[~ ab4@7 f4@4 eb4@6 ~ db4@2 c4@2 ~@2 db4@2 ~@2 c4@9 ~ eb4@13 eb4@2 eb4@2 eb4 eb4@2 ~@3 eb4@2]/2",
  AJ: "~@2 ab4@19 bb4@11", AK: "[c5@10 db5@37 ~@6 f4@32 f4@16 g4@5 f4@11 ab4@16 bb4@5 ab4@11 bb4@75]/7",
  AL: "[bb4@43 ~@21]/2",
})).s("gm_bassoon").gain(0.35)

stack(bassoon)