Strudelify

Halleluja

Bernstein Leonard

KeyG majorTempo110 bpm
0:00/0:00
// Halleluja — Leonard Bernstein
// 110 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5851754; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/3)

// 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 · soprano sax · "Soprano Saxophone"
const soprano_sax = note(`<
  ~@4 A B@2 C D E ~@2 F G H I J K L M N G O P Q R S T@2 ~@8 U V W X Y Z AA AB E AC AD AE AF AG T@2 ~@2 AH AI ~@3 AJ AK@2
  AL AM ~@2 AN AO P AP AQ AR AS AT AU AV AW@2 AX@2 AW@2 AY AZ BA@2 BB@2 BA@2 BC BD AW@2 AX@2 AW@2 BE BF AW@2 AX@2 AW@2
  AY BG BH@3 BI BJ@2 ~ BI AC
>`.pickRestart({
  A: "~@8 g4 a4 ~ a#4 c5 d5 ~ e5", B: "[f5@24 d5@3 c5@2 a#4@3]/2", C: "a4@11 g4@2 f4@3", D: "e4@13 a#4@3", E: "a4",
  F: "~@13 a4@3", G: "c5@5 c5@3 c5@5 c5@3", H: "d5@3 d5@2 d5@8 a4@3", I: "c5@3 c5@2 c5@5 ~ a4@2 c5@3",
  J: "d5@5 d5@3 d5@5 c5@3", K: "d5@5 d5@5 ~ d5@2 d5@3", L: "d5@5 c5@5 ~ c5@2 a#4@3", M: "c5@5 c5@11", N: "~@13 c5@3",
  O: "d5@5 d5@3 e5@5 c5@3", P: "f5@5 f5@3 f5@5 f5@3", Q: "f5@5 f5@3 g5@5 f5@3", R: "g5@5 g5@5 ~ g5@2 g5@3",
  S: "a5@5 a5@5 ~ a5@2 g5@3", T: "[g5@3 f5@2 f5@13 ~@14]/2", U: "a4@3 c5@2 f4@3 a4@8", V: "~@3 f4@2 a4@3 f4@8",
  W: "f4@3 c5@2 f4@3 a4@8", X: "~@3 a4@2 d4@3 f4@8", Y: "f4@3 a#4@2 d4@3 f4@8", Z: "g4@3 c5@2 e4@3 g4@8",
  AA: "~@3 a4@2 c5@3 f4@3 c5@2 f4@3", AB: "e4@3 f4@2 g4@3 a4@3 g4@2 a#4@3", AC: "a#4", AD: "~@8 f4@5 a4@3",
  AE: "d4 a#4", AF: "a4@5 g4@5 ~ a4@2 g4@3", AG: "g4@5 g4@5 ~ f5@2 e5@3", AH: "f4@3 a4@2 d5@3 f5@3 d5@2 c5@3",
  AI: "f4@3 d5@2 f5@3 a5@3 f5@2 d5@3", AJ: "~@8 g4@3 a#4@2 c5@3", AK: "[c#5@24 ~@5 c#5@3]/2",
  AL: "f5@5 f5@5 ~ f5@2 d#5@3", AM: "c#5@3 c5@2 c#5@11", AN: "~@3 f4@2 g#4@3 c#5@3 d#5@2 f5@3",
  AO: "c#5@8 g#5@3 g5@2 f#5@3", AP: "g5@5 g5@3 a5@5 f5@3", AQ: "g5@3 g5@2 g5@8 d5@3", AR: "g5@3 g5@2 a5@8 g5@3",
  AS: "a5@3 a5@2 a5@8 a5@3", AT: "a5@5 a5@5 ~ a#5@2 a5@3", AU: "a5@3 g5@2 g5@5 ~ a#4 d5 f5 ~ g5",
  AV: "a#5@3 ~@5 d5@5 f5@3", AW: "[g5@8 g5@16 g5@5 f5@3]/2", AX: "[d5@8 d5@16 d5@5 f5@3]/2", AY: "d5@11 c5@2 a#4@3",
  AZ: "a4@8 a4@5 d5@3", BA: "[d#5@8 d#5@16 d#5@5 d5@3]/2", BB: "[a#4@8 a#4@16 a#4@5 d5@3]/2", BC: "a#4@11 c5@2 a#4@3",
  BD: "a4@11 d5@2 f5@3", BE: "d5@11 d#5@2 d5@3", BF: "c5@8 c5@3 c5@2 d5@3", BG: "a4@11 g4@2 a4@3", BH: "a#4/3",
  BI: "~@13 a#4@3", BJ: "a#4/2",
})).s("gm_soprano_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A B@2 C@2 B@2 D E F@2 G@2 ~@3 H I J K I K L M N O P Q R B@2 C@2 B@2 S T U K@2 V I W K ~ X Y Z AA AB AC AD@2 B@2 C@2
  B@2 AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW@2 AX@2 AY@2 AZ BA BB BC BD O BE BF AZ BG BH BI BJ BK BJ
  BI BL BG BH BI BJ BK BJ BI BM J ~@2 BN@3 BO BP I BP
>`.pickRestart({
  A: "~@8 a3@5 c4@3", B: "[d4@8 d4@16 d4@5 c4@3]/2", C: "[a3@8 a3@16 a3@5 c4@3]/2", D: "a3!2",
  E: "a#3@3 c4@2 e4@3 g4@3 e4@2 d4@3", F: "[f4 e4 ~ d4@21 ~@8]/2", G: "[a4 g4 ~ f4@29]/2", H: "~@11 d4@2 c4@3",
  I: "a#3", J: "c4", K: "a3", L: "d4@11 d4@2 e4@3", M: "f4", N: "f4@8 d4@5 f4@3", O: "g4", P: "e4!2",
  Q: "d4@8 a3@5 f3@3", R: "d3@3 ~@5 a3@5 c4@3", S: "c4@11 d4@2 c4@3", T: "a#3@13 ~@3", U: "~ f3",
  V: "f3@8 ~@3 d4@2 c4@3", W: "e3 g3", X: "~@5 c4@3 c4@5 c4@3", Y: "d4@5 d4@3 e4@5 c4@3", Z: "f4@5 f4@3 f4@5 d4@3",
  AA: "f4@5 f4@3 g4@5 a#4@3", AB: "e4@5 e4@5 ~ f4@2 e4@3", AC: "e4@5 e4@5 ~ a4@2 g4@3",
  AD: "[a#4@3 a4@2 a4@13 ~@6 a3@5 c4@3]/2", AE: "a3@11 a#3@2 a3@3", AF: "g3@13 ~@3", AG: "~@3 g#3@2 g#3@3 g#3@5 g#3@3",
  AH: "a#3@3 a#3@2 a#3@8 a#3@3", AI: "g#3@5 g#3@5 ~ c#4@2 c4@3", AJ: "a#3@3 g#3@2 a#3@8 g#3@3",
  AK: "a#3@5 a#3@5 ~ a#3@2 g#3@3", AL: "a#3@5 g#3@5 ~ g#3@2 f3@3", AM: "g#3@5 g#3@11", AN: "a#3@8 f4@3 e4@2 d#4@3",
  AO: "d4@8 d4@5 d4@3", AP: "d#4@8 f4@5 d4@3", AQ: "d4@8 f4@5 d4@3", AR: "d#4@8 f4@5 g4@3", AS: "f4@3 f4@2 f4@8 ~@3",
  AT: "~@3 f#4@2 f#4@3 f#4@3 d4@2 c4@3", AU: "c4@3 a#3@2 a#3@5 ~ d4@2 a#3@3", AV: "g3@3 ~@13", AW: "a#3/2",
  AX: "[a#3@3 a#3@2 a#3@27]/2", AY: "[a#3 a#3@3]/2", AZ: "~@3 f3@2 f3@3 f3@3 a#3@2 g3@3",
  BA: "~@3 a3@2 a3@3 a3@3 a#3@2 c4@3", BB: "a#3@8 ~@5 a#3@3", BC: "d#4", BD: "~@13 a#3 ~ a#3", BE: "~@11 a#3@2 a#3@3",
  BF: "a#4", BG: "a3@3 a3@2 a3@3 a3@3 c4@2 d4@3", BH: "d#4@8 ~@3 d4@2 a#3@3", BI: "d4@3 d#4@13", BJ: "~@11 d4@2 a#3@3",
  BK: "d4@3 a#3@13", BL: "a#3@5 a#3@3 a#3@3 c4@2 a#3@3", BM: "a#3@11 d#4@2 d4@3", BN: "d4/3", BO: "~@13 d4@3", BP: "d4",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~ A@2 B C D@2 E@2 F G H G I J I J K L M N F O G P L Q R S T U V G T W X Y Z ~ AA AB ~ AC AD N F O G U C AE AF S AG U
  AH G AG AI F AJ AK AL AM U AN AO AP AQ AR@2 AS@2 AT AU AV AW AX AY AZ BA AX AY U BB BC BD BE BF BC BG BH BI BJ BK BL
  BM BJ BK BN BI BJ BK BL BM BJ BK U F U BO U BP U BQ U BP U
>`.pickRestart({
  A: "[a#3@3 a#3]/2", B: "f3@3 e3@2 d3@11", C: "c3", D: "a#2/2", E: "c3/2", F: "f3", G: "d3", H: "f3@13 f3@3",
  I: "f3 ~", J: "d3 ~", K: "~ d3", L: "e3", M: "f3 d3", N: "c3@8 c3@3 d3@2 e3@3", O: "a#2@11 a#2@2 c3@3",
  P: "d3@8 a#2@5 d3@3", Q: "a2 c#3", R: "d3@8 a2@5 f2@3", S: "d2@3 ~@13", T: "a#2@13 f3@3", U: "a#2", V: "d3@13 f3@3",
  W: "a#3@11 f3@2 c3@3", X: "a2 f3", Y: "e3@8 c3@5 g2@3", Z: "f2", AA: "f2 ~", AB: "d2 ~", AC: "c3!2", AD: "f3!2",
  AE: "a2@8 c#3@5 c#3@3", AF: "d3@5 a#2 ~ c3 d3@3 a2@2 f2@3", AG: "a#2@13 f2@3", AH: "d3@13 a2@3",
  AI: "a#2@11 d3@2 e3@3", AJ: "e3@8 a2@3 a#2@2 c3@3", AK: "c#3", AL: "a#2@8 c#3@5 d#3@3", AM: "f3 c#3", AN: "f#2!2",
  AO: "g#2@8 c3@5 c3@3", AP: "c#3@3 f3@2 d#3@3 c#3@5 c3@3", AQ: "f#2@5 f#2@3 g#2@5 a2@3", AR: "[a#2 a#2@2 f2]/2",
  AS: "[g2@8 g2@16 c3@5 d#3@3]/2", AT: "f3@8 a2@3 a#2@2 c3@3", AU: "d3@8 d3@3 f3@2 f#3@3", AV: "g3@8 g3@3 d3@2 a#2@3",
  AW: "g2@3 ~@13", AX: "d#3@13 a#2@3", AY: "d#3", AZ: "g3@13 d3@3", BA: "g3", BB: "f3@3 f2@2 f2@3 f2@3 g3@2 f3@3",
  BC: "d#3@8 d#3@5 a#2@3", BD: "d#3@8 d#3@3 d#3@2 f3@3", BE: "g3@8 g3@5 d3@3", BF: "g2@8 g3@3 f3@2 d3@3",
  BG: "d#3@8 d#3@3 d3@2 c3@3", BH: "a#2@8 a#2@3 a2@2 g2@3", BI: "f2@3 f2@2 f2@3 a2@3 c3@2 d3@3",
  BJ: "d#3@3 d#3@2 d#3@3 d#3@3 d#3@2 d#2@3", BK: "d#2@8 c3@3 a#2@2 a2@3", BL: "g2@3 g2@2 g2@3 g2@3 g2@2 g2@3",
  BM: "g2@8 g2@3 a#2@2 d3@3", BN: "a#2@5 f2@3 a#2@3 a2@2 g2@3", BO: "g2@13 a2@3", BP: "g2", BQ: "g2@8 g2@5 a2@3",
})).s("gm_baritone_sax").gain(0.3)

stack(soprano_sax, tenor_sax, baritone_sax)

More by Bernstein Leonard