Strudelify

18 Christmas Carols Alto Sax and Trumpet

edwardkonyrev

KeyF majorTempo150 bpm
0:00/0:00
// 18 Christmas Carols Alto Sax and Trumpet — edwardkonyrev
// 150 bpm, 4/4, key F 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 (1/4 at bar 1, 3/4 at bar 1, 4/4 at bar 4, 5/4 at bar 11, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5900216; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 55 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(150/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 · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A@2 B C ~@2 D@2 E ~@2 F G H I J K ~ L M N O ~@3 P Q ~@3 R@2 S R@2 T U ~ V W X Y ~@5 Z AA AB AC AD@3 AE
>`.pickRestart({
  A: "[~@4 bb4@2 bb4@3 ab4 g4@2 g4@2 f4@2]/2", B: "eb4!2 d4 c4", C: "bb3@8 f4@4 eb4 ~@3",
  D: "[~@6 bb4@3 ab4 g4@2 f4@2 eb4@2]/2", E: "f4 g4 eb4 ~", F: "g4 ab4 g4 f4 e4@4", G: "f4 g4 f4 eb4 d4@4",
  H: "g4!4 f4!2 f4@2", I: "eb4!4 g4@4", J: "c4!4 bb3!2 eb4@2", K: "d4 eb4 f4 g4 f4@2 ~@2",
  L: "eb5@4 d5@3 c5 bb4@6 ab4@2", M: "g4@2 f4@2 eb4@3 bb4", N: "c5@3 c5 d5@3 d5", O: "eb5 ~@7",
  P: "g4!2 g4@2 g4!2 g4@2", Q: "g4@2 bb4@2 eb4@3 f4 g4@8", R: "[g4@4 f4@2 eb4@4 c4@2 d4@3 eb4]/2", S: "d4 c4@3",
  T: "d4 bb3@3", U: "eb4 ~@7", V: "~@3 bb3", W: "g4@2 d4 f4", X: "eb4 c4 bb3@2", Y: "c4 bb3@3",
  Z: "~@3 eb4@3 eb4@2 f4@3 ~@2 bb4@3, ~@6 g4 ~", AA: "~@2 f4@3 ~ ab4@2 g4@3 eb4@2 eb4@3, ~ g4@2 ~@13",
  AB: "g4@2 f4@3 d4@2 bb3@3 bb3@2 eb4@4", AC: "~ d4@5 c4@5 ~ ab3@4",
  AD: "[~@11 gb4@10 g4@2 g4@2 ~ g4@5 g4@2 g4@2 ~ g4@7 ~@3 eb5@2, ~@46 d5 ~]/3", AE: "~@3 eb4@2 ~@11",
})).s("gm_alto_sax").gain(0.3)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note("<~@43 A@3 B@2 ~@7>".pickRestart({
  A: "[bb3@5 bb3@2 bb3@7 ~ db4@7 c4@6 c4@2 c4@7 e4@7 ~ f4@3]/3", B: "[g4@4 ab4@7 ~ d4@7 ~@13]/2",
})).s("gm_alto_sax").gain(0.2)

stack(alto_sax, alto_sax_soft)