Strudelify

Weihnachtsduett Violine Tenorsax

Dylan Torres

KeyA minorTempo110 bpm
0:00/0:00
// Weihnachtsduett Violine Tenorsax — Dylan Torres
// 110 bpm, 4/4, key A minor. 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 30) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/4813745; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 72 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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.

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

stack(tenor_sax)