Strudelify

Hallelujah PTX For Sax Quartet

L. Cohen

KeyB♭ majorTempo120 bpm
0:00/0:00
// Hallelujah PTX For Sax Quartet — L. Cohen
// 120 bpm, 6/8, key A# 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/8 at bar 1, 6/8 at bar 2) are rendered on a constant 6/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5334548; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · soprano sax · "Sassofono soprano"
const soprano_sax = note(`<
  ~@45 A ~ B ~ A ~ C@2 D@4 E F E G H I J K L M N O P Q R S T U B V W U X Y ~ Z AA AB@2 AA AC AD@2 AE@2 AF AG AH@2 AI@8
  AJ@8 AK AL@8 AM AN@2 ~@8
>`.pickRestart({
  A: "eb4!2", B: "d4!2", C: "f4/2", D: "~ f4", E: "d5@11 d5@2 c5@3", F: "bb4@11 bb4@2 c5@3", G: "bb4@11 g4@2 a4@3",
  H: "bb4 d5", I: "c5 a4", J: "~@3 d4@2 eb4@3 f4@3 g4@2 f4@3", K: "f4 a4", L: "f4@8 ~@3 d4@2 c4@3",
  M: "eb4@3 eb4@2 f4@5 ~@6", N: "g4@5 f4@3 d4@5 c4@3", O: "bb3@5 d4@3 eb4@3 f4@2 g4@3", P: "a4",
  Q: "a4@5 a4@5 ~ a4@2 a4@3", R: "a4@3 g4@2 g4@5 ~@6", S: "g4@5 f4 ~ eb4 d4@5 bb3@3", T: "g4!2", U: "~@8 g4@5 f4@3",
  V: "~@8 d4@5 f4@3", W: "g4@4 f4 eb4@3 g4@8", X: "d4@3 eb4@2 f4@5 ~ f4@2 bb4@3", Y: "c5", Z: "~@5 f5@3 f5@3 f5@3 ~@2",
  AA: "~@3 f5@2 g5@3 g5@3 g5@5", AB: "[~@3 d5@2 f5@3 f5@3 f5@8 d5@2 g5@3 g5@3 g5@5]/2", AC: "g5@5 g5@5 ~ f5@5",
  AD: "[f5@3 eb5@2 f5@4 d5@12 ~@11]/2", AE: "[~@3 d5!2 f5@3 f5@3 f5@8 f5!2 g5@3 g5@3 a5@3 ~@2]/2",
  AF: "~@3 f5@2 bb5@3 bb5@3 bb5@5", AG: "f5@3 bb5@2 bb5@3 bb5@3 c6@3 ~@2",
  AH: "[~@3 bb5!2 c6@5 ~ c6@2 c6@5 ~ c6@2 c6@4 d6@7]/2",
  AI: "[d6@3 c6@2 c6 d6 c6@2 bb5@12 ~@8 d4@5 ~ f4@2 g4@8 g4@8 ~@8 g4@5 ~ f4@2 d4@8 d4@8 ~@8 d4@5 ~ f4@2 g4@8 g4@8 ~@8 g4@3]/8",
  AJ: "[~@3 f4@2 d4@16 a4@8 g4@5 ~ a4@2 bb4@8 bb4@8 ~@8 bb4@5 ~ a4@2 g4@8 g4@5 ~ f4@2 g4@4 f4 ~ d4@2 g4@5 ~ a4@2 bb4@8 bb4@16 bb4@3]/8",
  AK: "~@3 a4@2 f4@3 bb4@3 a4@2 bb4@3",
  AL: "[f4@3 g4@2 a4@8 g4@5 ~ a4@2 bb4@8 bb4@8 ~@8 bb4@5 ~ c5@2 d5@4 c5 ~ bb4@2 d5@8 ~@8 c5@5 ~ d5@2 eb5@8 eb5@8 ~@8 eb5@5 ~ d5@2 d5 ~ c5 bb4@8]/8",
  AM: "c5@3 d5@2 c5@11", AN: "[bb4@3 a4@2 g4@16 ~@11]/2",
})).s("gm_soprano_sax").gain(0.3)

// other · soprano sax · "Sassofono soprano" · soft notes
const soprano_sax_soft = note(`<
  ~@5 A B@3 C D C E F G H@2 I ~ J ~ I ~ K@2 L@8 M N O P C D Q R S T U V ~@78 W@6 X@3
>`.pickRestart({
  A: "eb4", B: "f4/3", C: "d4", D: "eb4 f4", E: "g4", F: "f4", G: "gb4 a4", H: "[g4@3 ~]/2", I: "eb4!2", J: "d4!2",
  K: "f4/2", L: "~ f4", M: "~ g4", N: "~@8 f4@3 d4@2 eb4@3", O: "f4@11 g4@2 bb4@3", P: "a4@5 g4@3 f4@5 eb4@3",
  Q: "d4 f4", R: "g4@11 a4@2 bb4@3", S: "a4", T: "gb4", U: "~@3 g4@2 a4@3 bb4@5 a4@3", V: "g4@11 ~@5",
  W: "[~@13 g4@5 ~ f4@2 d4@8 d4@8 ~@8 d4@5 ~ f4@2 g4@8 g4@16 g4@5 ~ f4@2 d4@11]/6",
  X: "[eb4@3 d4@2 c4@13 ~ bb3@2 bb3@16 ~@11]/3",
})).s("gm_soprano_sax").gain(0.2)

// other · alto sax · "Sassofono contralto"
const alto_sax = note(`<
  ~@45 A ~ A ~ A ~ B@2 C@3 D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB ~@5 AC@3 AD@5 AE@8 AF@8 AG@3 AH@7 AI@2
  AJ@2 ~@8
>`.pickRestart({
  A: "bb3!2", B: "[bb3@3 a3]/2", C: "~@3 f3@2 bb3@3 d4@8", D: "~@3 f3@2 bb3@3 d4@5 d4@3", E: "f4@3 f4@2 f4@8 f4@3",
  F: "g4@3 g4@2 g4@5 ~@3 d4@3", G: "f4@3 f4@2 f4@5 ~@3 d4 ~ f4", H: "g4@3 a4@2 g4@5 ~@3 f4@3", I: "g4@5 g4@3 g4@5 g4@3",
  J: "g4@5 f4@3 f4@5 eb4@3", K: "f4@5 f4@11", L: "~@13 d4 ~ d4", M: "f4@3 f4@2 f4@5 ~ d4@2 f4@3",
  N: "g4@3 g4@2 a4@5 ~@3 f4@3", O: "bb4@3 c5@2 bb4@5 ~@3 bb4@3", P: "bb4@3 d5@2 c5@5 ~@3 bb4 ~ bb4, ~@3 db5 ~@12",
  Q: "c5@5 c5@3 c5@5 c5@3", R: "d5@5 d5@5 ~ d5@2 c5@3", S: "c5@3 bb4@2 bb4@11", T: "bb4@5 a4 ~ g4 f4@5 d4@3",
  U: "eb4!2", V: "~@8 eb4@5 d4@3", W: "bb3@8 bb3@3 c4@2 d4@3", X: "g4@5 f4@3 d4@5 c4@3", Y: "eb4@8 eb4@3 bb3@2 c4@3",
  Z: "d4@5 c4@3 bb3@5 ~@3", AA: "d4@3 d4@2 eb4@3 d4@3 f4@2 g4@3", AB: "a4", AC: "[~@5 eb4@16 f4@16 f4@11]/3",
  AD: "[~@5 f4@16 f4@16 g4@8 a4@8 bb4@5 ~ a4@2 g4@5 ~ f4@2 eb4@8 eb4@3]/5",
  AE: "[f4@3 g4@2 f4@5 ~ f4@2 f4@5 ~ f4@2 gb4@5 ~ gb4@2 gb4@5 ~ gb4@2 gb4@3 g4@3 g4@11 ~@7 d4@5 ~ f4@2 g4@8 g4@8 ~@8 g4@5 ~ f4@2 d4@8 d4@8 ~@8 d4@3]/8",
  AF: "[~@3 f4@2 g4@8 g4@8 ~@8 g4@5 ~ f4@2 d4@16 f4@8 c4@5 ~ d4@2 eb4@8 eb4@8 ~@8 eb4@5 ~ d4@2 bb3@8 bb3@5 ~ c4@2 d4@4 c4 ~ bb3@2 bb3@3]/8",
  AG: "[~@3 d4@2 eb4@8 eb4@8 ~@8 eb4@5 ~ d4@2 f4@11]/3",
  AH: "[d4@3 eb4@2 f4@8 d4@5 ~ f4@2 g4@8 g4@8 ~@8 g4@5 ~ a4@2 bb4@4 a4 ~ g4@2 bb4@8 ~@8 g4@5 ~ a4@2 bb4@8 bb4@8 ~@8 bb4@3]/7",
  AI: "[~@3 bb4@2 f4@8 bb4@8 a4@11]/2", AJ: "[g4@3 f4@2 eb4@16 ~@11]/2",
})).s("gm_alto_sax").gain(0.3)

// other · alto sax · "Sassofono contralto" · soft notes
const alto_sax_soft = note(`<
  ~@5 A B C B A D E F B E G@2 H ~ H ~ H ~ I@2 J@8 K L M N A D@2 O P E Q R ~@78 S@7 T@2
>`.pickRestart({
  A: "bb3", B: "c4", C: "d4@11 eb4@2 d4@3", D: "bb3 c4", E: "d4", F: "eb4", G: "[d4@3 ~]/2", H: "bb3!2",
  I: "[bb3@3 a3]/2", J: "~@3 f3@2 bb3@3 d4@8", K: "~@3 g3@2 bb3@3 eb4@8", L: "~@3 f3@2 a3@3 c4@3 bb3@2 c4@3",
  M: "d4@3 f3@2 bb3@3 d4@3 f4@2 g4@3", N: "f4@5 eb4@3 d4@5 c4@3", O: "eb4@11 f4@2 g4@3", P: "f4",
  Q: "~@3 d4@2 f4@3 g4@5 f4@3", R: "d4@11 ~@5",
  S: "[~@13 eb4@5 ~ d4@2 bb3@8 bb3@8 ~@8 bb3@5 ~ d4@2 f4@8 eb4@5 ~ d4@2 eb4@5 ~@3 eb4@5 ~ d4@2 f3@8 bb3@8 bb3@8 a3@3]/7",
  T: "[~@3 f3@2 f3@16 ~@11]/2",
})).s("gm_alto_sax").gain(0.2)

// other · baritone sax · "Sassofono baritono"
const baritone_sax = note(`<
  ~@9 A B C D E F G H I ~ J ~ I ~ A K L M L N O P Q R S T U V Q W X Y Z AA AB AC AD AE AF AC AD AE AG AH A AI L M L M L
  AJ AK K AL AM AN AO AP AQ K AR G AS AT AU AV AS AW AX AY E ~@3 AZ@5 BA@8 ~ BB@8 BC@8 BD@4 BE@8 BF@6
>`.pickRestart({
  A: "bb2", B: "eb3 f3", C: "g3", D: "eb3", E: "f3", F: "d3 gb3", G: "g3@13 d3@3", H: "g2 ~", I: "eb2!2", J: "g2!2",
  K: "f2", L: "bb2@11 bb2@2 a2@3", M: "g2@11 g2@2 a2@3", N: "g2@11 d3@2 eb3@3", O: "f3@5 f3@3 f3@5 d3 ~ f3",
  P: "g3@3 g3@2 g3@5 ~@3 d3@3", Q: "f3@5 f3@3 f3@5 f3@3", R: "g3@5 bb3@3 g3@3 ~@2 f3@3", S: "g3@3 g3@8 g3@2 g3@3",
  T: "f3@3 f3@8 d3@2 eb3@3", U: "f3@5 f3@11", V: "~@13 d3@3", W: "g3@3 g3@2 a3@8 f3@3",
  X: "bb3@3 bb3@2 bb3@5 ~ g3@2 a3@3", Y: "bb3@3 bb3@2 c4@5 ~@3 bb3@3", Z: "c4@5 c4@3 c4@5 a3@3",
  AA: "d4@5 d4@5 ~ d4@2 c4@3", AB: "c4@3 bb3@2 bb3@11", AC: "~@8 d3@5 f3@3", AD: "g3!2", AE: "~@8 g3@5 f3@3",
  AF: "d3!2", AG: "d3@11 eb3@2 d3@3", AH: "c3@13 bb2@3", AI: "d3", AJ: "g2@11 g2@2 f2@3", AK: "eb2",
  AL: "bb2@11 ~@2 bb2@3", AM: "f2 f3", AN: "bb2 ~", AO: "eb2 f2", AP: "g2@5 d3@3 g3@5 f3@3",
  AQ: "eb3@5 eb3@3 eb3@3 d3@2 c3@3", AR: "gb2 gb3", AS: "g2@5 ~@3 g3@5 d3@3", AT: "eb3@13 bb2@3",
  AU: "eb3@5 ~@3 eb3@5 c3@3", AV: "g2@8 g2@5 d2@3", AW: "eb3@8 eb3@5 bb2@3", AX: "eb3@8 eb3@5 eb3@3",
  AY: "bb2@11 c3@2 d3@3", AZ: "[~@5 bb2@32 eb2@16 f2@16 bb2@11]/5",
  BA: "[d2@3 eb2@2 f2@8 a2@8 bb2@16 eb2@8 f2@8 g2@8 g3@5 ~ f3@2 eb3@8 eb2@8 f2@16 d2@8 gb3@5 ~ d3@2 g3@5 ~ g3@3 ~@2]/8",
  BB: "[~@5 eb2@16 eb2@16 g2@16 g2@16 eb2@8 eb2@8 eb2@8 eb2@8 bb2@8 bb2@8 f2@3 f2@3 f2@2 f3@3]/8",
  BC: "[~@3 f3@2 eb2@8 eb2@8 eb2@8 eb2@5 ~ f2@2 g2@8 g2@5 ~ d3@2 bb2@5 ~ a2@2 g2@5 ~ d3@2 eb2@8 eb2@8 eb2@8 eb2@5 ~ f2@2 bb2@8 bb2@8 f2@8 f2@3]/8",
  BD: "[~@3 f2@2 eb2@8 eb2@5 ~ f3@2 g3@5 ~ bb3@2 bb3@5 ~ a3@2 g3@8 g2@5 ~ d3@2 g3@4 f3 ~ d3@2 d3@3]/4",
  BE: "[bb2@3 d3@2 eb2@8 eb2@5 ~ f3@2 g3@5 ~ bb3@2 bb3@5 ~ f3@2 bb2@8 bb3@8 f2@16 eb3@16 ~@8 eb3@5 ~ f2@2 g2@16 ~@8 f2@3]/8",
  BF: "[~@3 f2@2 eb2@8 eb2@8 ~@8 eb2@8 bb2@16 f2@16 bb2@16 ~@11]/6",
})).s("gm_baritone_sax").gain(0.3)

stack(soprano_sax, soprano_sax_soft, alto_sax, alto_sax_soft, baritone_sax)

More by L. Cohen