Strudelify

Sax Clarinet New Orleans Blues

Zachery Easterling

KeyC minorTempo165 bpm
0:00/0:00
// Sax Clarinet New Orleans Blues — Zachery Easterling
// 165 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5977186; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 62 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(165/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 · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~ A ~ B C D@2 E F G@2 H I J@2 K L M@2 N O P@3 I Q R S T U V W X@2 Y Z@3 AA AB AC AD AE AF AG AH@3 AI AJ ~ AK@2 D@2 AL
  F AM@2 AN AO AP
>`.pickRestart({
  A: "~@3 eb5", B: "~@6 bb4@2 c5 eb5@2 eb5", C: "eb5@9 f5@2 eb5", D: "[~@11 gb5@4 f5@2 eb5 f5@2 eb5 c5@2 bb4]/2",
  E: "gb5@2 eb5 f5@2 eb5 f5@2 eb5 c5@2 eb5", F: "eb5@8 eb5 gb5@2 g5", G: "[~@11 bb5@3 bb5 ab5@2 gb5 ab5@6]/2",
  H: "gb5@2 eb5 gb5@2 gb5 eb5@3 c5@2 bb4", I: "eb5", J: "[~@5 gb4 g4@2 bb4 c5@2 eb5@10 f5@2 c5]/2", K: "eb5@3 ~@8 bb4",
  L: "c5@2 eb5 f5@2 c5 eb5@3 f5@2 eb5", M: "[~@11 ab5@7 gb5@2 ab5 f5@2 ab5]/2", N: "gb5@3 ab5@2 eb5 gb5@3 eb5@2 c5",
  O: "eb5@3 c5@2 bb4 eb5@3 f5@2 eb5", P: "[~@9 d5@8 f5 bb5@3 ab5@6 g5@2 eb5 c5@2 eb5 f5@2 c5]/3", Q: "~@8 ab4 a4@2 c5",
  R: "d5@2 f5 f5@2 d5 f5@3 ~@3", S: "d5@4 f5@2 g5@4 d5@2 f5@3 ~@3 c5@4 db5@2", T: "d5@2 f5 d5@2 c5 f5@3 g5@2 f5",
  U: "~@9 d5@2 c5", V: "d5@4 f5@2 d5@4 c5@2 f5@3 ~@3 g5@3 ~@3", W: "ab4@3 g4@2 f4 g4@2 f4 d4@2 c4",
  X: "[f4@3 ~@2 ab4 a4@2 c5 d5@2 c5@10 ~@3]/2", Y: "bb4 c5 d5 f5",
  Z: "[a5@2 bb5 a5@2 f5 c5@2 d5 ab5@2 f5@6 f5@4 f5@5 f5 ~@2 f5 ab5@2 f5 g5@2 d5]/3", AA: "f5 ~@7",
  AB: "~@6 ab5 g5 f5 g5@2 d5", AC: "f5@3 ~", AD: "~@6 db5@2 d5 f5@2 g5", AE: "ab5@2 f5 g5@2 f5 d5@2 c5 ab5@2 f5",
  AF: "g5@2 f5 d5@2 c5 ab5@2 f5 g5@2 f5", AG: "~@9 d5@2 f5", AH: "[~@5 ab4 a4@2 c5 d5@2 c5@19 d5@2 c5 ab4@2 f4]/3",
  AI: "f4@3 g4 f4 ~ e4@3 f4 e4 ~ c4@4 d4@2 c4@4 bb3@2", AJ: "ab3@2 a3 bb3@2 b3 c4@3 f4@3",
  AK: "[~@6 c5@2 eb5 f5@2 eb5@10 f5@2 eb5]/2", AL: "gb5@2 eb5 f5@2 eb5 f5@2 eb5 c5@2 bb4",
  AM: "[~@9 bb4@6 ab4@2 gb4 ab4@6]/2", AN: "gb4@2 eb4 gb4@2 gb4 eb4@3 c4@2 bb3", AO: "eb4",
  AP: "eb5@2 a5 ab5@2 g5 ~@3 db5@3",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A B C D C E F G C H I J@2 K C D L E F G C H I J@2 M N O P Q R S T U V W X Y N O P Q R Z P AA AB AC X AD C D C E F G C
  AE ~ AF AG AH
>`.pickRestart({
  A: "eb4 db4 c4 b3", B: "bb3@4 c4@2 d4@4 eb4@2 ~@6 gb4@3 ~@3", C: "~@3 c4@2 g3 bb3@3 c4@2 g3", D: "bb3@3 c4@2 bb3 ~@6",
  E: "eb4@3 c4@2 bb3 ~@6", F: "~@3 f4@2 c4 eb4@3 f4@2 c4", G: "eb4@2 eb4 f4@2 eb4 ~@6", H: "bb3@2 a3 ab3@2 g3@4 ~@3",
  I: "f4@3 d4@2 bb3@4 d4@2 f4", J: "[eb4@3 c4@3 ab3@3 c4@2 eb4@4 db4@2 ~ c4@2 ~ b3@2 ~]/2", K: "bb3 ~@5 bb3 ~",
  L: "~@3 c4@2 g3 bb3@3 c4@2 bb3", M: "bb3@2 c4 d4@2 eb4 ~@6", N: "~@2 f4 ~@3 f4@3 ~@3", O: "f4@3 ~@2 f4 ~@3 e4@2 f4",
  P: "~@2 f4 ~@2 c4 f4@3 d4@2 c4", Q: "f4@3 d4@2 c4 ~@6", R: "~@2 f4 ~@2 d4 f4@3 ~@2 ab3",
  S: "f4@3 d4@2 f4 ~@3 ab4@2 f4", T: "~@2 f4 ~@2 c4 f4@3 d4@2 a3", U: "c4@2 b3 bb3@2 a3@4 ~@3", V: "f4@9 a4@2 c5",
  W: "~@9 bb4@2 a4", X: "~@2 gb3 c4", Y: "b3 f4 e4 ~", Z: "f4@3 d4@2 f4 ~@3 ab4@3", AA: "c4@2 b3 ~@2 b3 ~@3 a3@2 ~",
  AB: "bb3@2 bb3 c4@2 c4 d4@2 d4 f4@2 f4", AC: "a4@2 a4 bb4@2 bb4 b4@2 bb4 a4@2 f4", AD: "b3 f4 e4 e5",
  AE: "bb3@2 ab3 ~@2 ab3 ~@2 g3 ~@2 ab4", AF: "gb4 ~@3", AG: "eb5 db5 c5 b4", AH: "bb4@2 c5 d5@2 eb5 ~@3 g4@3",
})).s("gm_tenor_sax").gain(0.3)

stack(alto_sax, tenor_sax)