Strudelify

Hallelujah Chorus

GF Händelarr: WM Felton

KeyC majorTempo92 bpm
0:00/0:00
// Hallelujah Chorus — GF Händelarr: WM Felton
// 92 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5856414; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 52 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(92/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 · flute
const flute = note(`<
  A@2 B C D E F G H I J K L M N O P Q R S T U V W@2 X@2 Y@6 Z AA AB AC AD AE AF AG AH AI AJ@2 AK@2 AL@3 AM@2
>`.pickRestart({
  A: "c6@15 ~", B: "a5@2 ~@2 g5@2 ~@6 e5 ~ e5 ~ a5@2 ~@2 g5@2 ~@6 e5@4", C: "d5 ~ e5@2 d5@4 e5@4 ~@4",
  D: "b5@11 ~ d6@2 ~@2 c6@2 ~@2 b5@2 ~@10", E: "b5@11 ~ d6@2 ~@2 c6@2 ~@2 b5@2 ~@6 b5 ~ b5 ~",
  F: "c6@2 ~@2 b5@2 ~@6 b5 ~ b5 ~ c6@2 ~@2 b5@2 ~@6 b5@4", G: "c6 b5 e6 c6 d6@2 ~@2", H: "g5@11 ~@5 a5@5 ~@3 b5@5 ~@3",
  I: "c6@2 ~@2 c5@2 ~@2 c6@11 ~ c6@2 ~@2 b5@8", J: "a5@16 g5@8 ~@4 b5 ~ b5 ~",
  K: "e6@2 ~@2 d6@2 ~@6 b5 ~ b5 ~ e6@2 ~@2 d6@2 ~@6 b5 ~ b5 ~", L: "c6@2 ~@2 b5@2 ~@6 b5 ~ b5 ~ c6@2 ~@2 b5@2 ~@10",
  M: "c6@11 ~@5 d6@5 ~@3 e6@5 ~@3", N: "f6@2 ~@2 f5@2 ~@2 f6@15 ~ e6@8", O: "d6@16 c6@8 ~@4 e6 ~ e6 ~",
  P: "f6@2 ~@2 e6@2 ~@6 e6 ~ e6 ~ f6@2 ~@2 e6@2 ~@6 e6 ~ e6 ~", Q: "f6@2 ~@2 e6@2 ~@6 e6 ~ e6 ~ f6@2 ~@2 e6@2 ~@10",
  R: "e6@11 ~ c6 ~ c6 ~ b5@2 ~@2 g5@2 ~@2 c6@2 ~@2 c6 ~ c6 ~", S: "a5@5 ~@7 d6 ~ d6 ~ b5@2 ~@2 g5@2 ~@2 c6@8",
  T: "c6@2 ~@2 a5@2 ~@2 g5@4 ~@2 f5@2 e5@8 c6@2 ~@2 c6 ~ c6 ~", U: "a5 ~ f5 ~ a5 ~ b5 ~ c6@4 ~@2 c6 ~",
  V: "a5@9 a5@2 ~@3 c6@2 ~@2 e6@9 ~@5", W: "[~@20 e5@9 d5@9 ~ c5@18 b4@7]/2", X: "[g4@2 g4@28 e5@9 d5@9 c5@16]/2",
  Y: "[~@3 b4@6 e4@2 ~ g4@27 e5@9 ~ b4@9 a4@9 c5@9 b4@9 e5@14 e5@5 g5@9 c6@9 b5@14 g5@5 c6@9 b5@9 g5@18 ~@15]/6",
  Z: "~@13 b5@2 ~@2 g5@2 ~@2 g5@2 ~@6 b5@2 ~", AA: "~ g5@2 ~@2 g5@2 ~@6 b5 ~ b5 ~ g5@2 ~@2 g5@2 ~@6 b5 ~ b5",
  AB: "~ g5@2 ~@2 g5@2 ~@6 c5@2 ~@2 c5@8 e5@7", AC: "~ a5@8 e5@8 a5@8 e5@2 ~@2 e5@2 ~", AD: "~ g5@8 g5@8 d5@15",
  AE: "~ e5@2 ~@2 e5 ~ f5 ~ g5 ~ f5 ~ e5 ~ d5 ~ e5@2 ~@2 c5 ~ d5 ~ e5@2 ~@2 e5 ~ f5",
  AF: "~ g5@2 ~@2 e5 ~ f5 ~ g5@2 ~@2 a5 ~ b5 ~ c6@2 ~@2 c5 ~ d5 ~ e5@2 ~@2 e5 ~ f5",
  AG: "~ g5@2 ~@2 e5 ~ f5 ~ g5@2 ~@2 a5 ~ b5 ~ c6@2 ~@6 e5@7", AH: "~ a5@8 g5@8 c6@8 e5@7", AI: "~ b4@8 c5@8 c5@8 b4@7",
  AJ: "[~ e5@2 ~@2 c6 ~ c6 ~ c6@15 ~ c6@2 ~@2 c6@12 c6@16 c6@7]/2",
  AK: "~ c6@2 ~@2 c6@2 ~@2 c6@8 c6@2 ~@2 c6@2 ~@2 c6@7", AL: "[~ c6@2 ~@2 c6@2 ~@18 g5@14 a5@42 ~ a5@14]/3",
  AM: "[g5@57 ~@7]/2",
})).s("gm_flute").gain(0.4).pan(0)

// other · trumpet · "C Trumpet"
const trumpet = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W ~@5 X@5 Y Z AA AB AC AD AE AF AG AH AI AJ AK@2 AL@3 AM@2
>`.pickRestart({
  A: "c5@6 g4 ~ a4 ~ g4 ~@5", B: "c5@12 g4@2 ~@2 a4@2 ~@2 g4@2 ~@6 c5 ~ c5 ~",
  C: "c5@2 ~@2 c5@2 ~@6 c5 ~ c5 ~ c5@2 ~@2 c5@2 ~@6 c5@4", D: "b4 ~ c5@4 b4 ~ c5@4 ~@4", E: "d5@6 g4 ~ e5 ~ d5 ~@5",
  F: "d5@12 g4@2 ~@2 e5@2 ~@2 d5@2 ~@6 d5 ~ d5 ~", G: "e5@2 ~@2 d5@2 ~@6 d5 ~ d5 ~ e5@2 ~@2 d5@2 ~@6 d5@4",
  H: "e5 d5 c5@2 b4@2 ~@2", I: "g4@11 ~@5 a4@5 ~@3 b4@5 ~@3", J: "c5 ~ c4 ~ c5@6 c5 ~ b4@4",
  K: "a4@16 g4@8 ~@4 d5 ~ d5 ~", L: "c5@2 ~@2 b4@2 ~@6 d5 ~ d5 ~ c5@2 ~@2 b4@2 ~@6 d5 ~ d5 ~",
  M: "e5@2 ~@2 d5@2 ~@6 d5 ~ d5 ~ e5@2 ~@2 d5@2 ~@10", N: "c5@11 ~@5 d5@5 ~@3 e5@5 ~@3", O: "f5 ~ f4 ~ f5@8 e5@4",
  P: "d5@16 c5@8 ~@4 c5 ~ c5 ~", Q: "c5@2 ~@2 c5@2 ~@6 c5 ~ c5 ~ c5@2 ~@2 c5@2 ~@6 c5 ~ c5 ~",
  R: "c5@2 ~@2 c5@2 ~@6 c5 ~ c5 ~ c5@2 ~@2 c5@2 ~@10", S: "c5@2 d5 e5", T: "f5@5 ~@3 f5@16 e5@8", U: "d5 c5",
  V: "c5!2 c5@2", W: "f5@2 ~@3 f5 ~ f5 ~ f5@2 ~@3 a5@2 ~@2 g5@9 ~@5",
  X: "[~@7 g5@18 ~ f5@9 e5@9 d5@7 c5@2 c5@14 d5@5 e5@9 f#5@9 g5@14 g5@5 a5@9 b5@9 c6@18 ~@15]/5",
  Y: "~@13 g4@2 ~@2 c5@2 ~@2 b4@2 ~@6 g4@2 ~", Z: "~ c5@2 ~@2 b4@2 ~@6 g4 ~ g4 ~ c5@2 ~@2 b4@2 ~@6 g4 ~ g4",
  AA: "~ c5@2 ~@2 b4@2 ~@6 g4@2 ~@2 g4@8 c5@7", AB: "~ e5@8 c5@8 c5@8 g4@2 ~@2 g4@2 ~",
  AC: "~ b4@8 c5@2 ~@2 c5@2 ~@2 c5@8 b4@7", AD: "~ c5@2 ~@2 c5@2 ~@2 c5@2 ~@6 c5@2 ~@6 e4@2 ~@5",
  AE: "~ e4@8 ~@4 f4 ~ d4 ~ e4@2 ~@6 e4@2 ~@5", AF: "~ e4@2 ~@6 g4@2 ~@2 f4 ~ d4 ~ c4@2 ~@6 g4@7",
  AG: "~ c5@8 e5@8 a4@8 c5@7", AH: "~ f5@8 e5@2 ~@2 d5@2 ~@2 d5@15", AI: "~ c5@8 ~@4 g4@2 ~@2 a4@2 ~@2 g4@2 ~@6 g4@2 ~",
  AJ: "~ a4@2 ~@2 g4@2 ~@6 g4@2 ~@2 a4@2 ~@2 g4@2 ~@6 g4@2 ~",
  AK: "~ a4@2 ~@2 g4 ~ g4 ~@5 g4 ~ g4 ~ a4@2 ~@2 g4 ~ g4 ~@5 g4 ~ g4",
  AL: "[~ a4@2 ~@2 g4@2 ~@18 c5@14 c5@42 ~ c5@14]/3", AM: "[c5@57 ~@7]/2",
})).s("gm_trumpet").gain(0.39).pan(0.4)

// other · cello · "Violoncello"
const cello = note(`<
  A B C D E F G H I J K ~@2 L M N ~@2 O P Q R S T@2 U@8 V W X Y Z AA AB AC AD Z AE AF@3 AG@3 AH@2
>`.pickRestart({
  A: "c3 ~ c3 ~ d3 ~ e3 ~ f3 ~ c3 ~@5", B: "c3 ~ c3 ~ d3 ~ e3 ~ f3 ~ c3 ~@3 e3 ~",
  C: "f3 ~ c3 ~@3 e3 ~ f3 ~ c3 ~@3 e3@2", D: "d3 ~ c3@2 g3@2 g2 ~ c3@4 ~@4", E: "g2@6 b2 ~ c3 ~ g2 ~@5",
  F: "g2@6 b2 ~ c3 ~ g2 ~@3 b2 ~", G: "c3 ~ g2 ~@3 b2 ~ c3 ~ g2 ~@3 b2@2", H: "c3 b2 a2 d3 g2@2 ~@2",
  I: "g2@11 ~@5 a2@5 ~@3 b2@5 ~@3", J: "c3 ~@3 c3@6 c3 ~ b2@4", K: "a2@2 g2 ~", L: "c3@11 ~@5 d3@5 ~@3 e3@5 ~@3",
  M: "f3 ~@3 f3@8 e3@4", N: "d3@2 c3 ~", O: "c3@2 g2 c3", P: "a2@2 d2 ~ g2@2 c3 ~", Q: "f2 ~ d2 ~ g2@2 ~ f2 e2@4 c2@4",
  R: "f2!2 c3 ~", S: "a2@9 f2@9 c3@9 ~@5", T: "[~@20 c4@9 b3@9 ~ a3@9 g3@9 f3@7]/2",
  U: "[~@2 e3@28 c3@9 b2@9 a2@9 g2@18 ~ c3@27 c3@9 ~ b2@9 a2@9 g2@9 f2@9 e2@14 d2@5 c2@9 a2@9 g2@14 e2@5 f2@9 d2@9 c2@18 g2@8 g2@7]/8",
  V: "~ g2@12 b2@2 ~@2 c3@2 ~@2 g2@2 ~@6 b2@2 ~", W: "~ c3@2 ~@2 g2@2 ~@6 b2@2 ~@2 c3@2 ~@2 g2@2 ~@6 b2@2 ~",
  X: "~ c3@2 ~@2 g2@2 ~@10 c3@8 e2@7", Y: "~ a2@8 c3@8 f2@8 e2@2 ~@2 e2@2 ~", Z: "~ d2@8 c2@8 g2@15",
  AA: "~ c3@2 ~@14 c3@5 ~@3 c3@5 ~@2", AB: "~ c3@8 ~@4 c3@2 ~@2 c3@5 ~@3 c3@5 ~@2",
  AC: "~ c2@8 ~@4 c2@2 ~@2 c2@2 ~@6 e2@7", AD: "~ a2@8 c2@8 f2@8 e2@7",
  AE: "~ c3@8 ~@4 e2@2 ~@2 f2@2 ~@2 c2@2 ~@6 e2@2 ~", AF: "~ f2@2 ~@2 c2@2 ~@6 e2@2 ~@2 f2@2 ~@2 c2@2 ~@6 e2@2 ~",
  AG: "[~ f2@2 ~@2 c2@2 ~@18 c3@14 f2@42 ~ f2@14]/3", AH: "[c2@57 ~@7]/2",
})).s("gm_cello").gain(0.4).pan(0.6)

stack(flute, trumpet, cello)