Strudelify

lord of the dance

Miklós Rózsa

KeyE♭ majorTempo66 bpm
0:00/0:00
// lord of the dance — Miklós Rózsa
// 66 bpm, 4/4, key Eb 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/4 at bar 1, 4/4 at bar 2, 2/4 at bar 24, 4/4 at bar 24) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/294246; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 31 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(66/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · french horn · "F Mellophone"
const french_horn = note("<~ A B C D E F G H I J K L M N ~@3 O@5 P@3 Q@3 R@2>".pickRestart({
  A: "eb4", B: "bb3@5 d4 c4 bb3", C: "eb4@2 d4 eb4 c4@4", D: "eb4@2 d4 c4 d4@2 db4@2", E: "db4@4 ab3@2 ab3 bb3",
  F: "b3 db4 b3@6", G: "d4 eb4", H: "d4@4 ~ bb3!3", I: "[b3,eb4]@5 [db4,f4] [b3,eb4] [db4,f4]", J: "db4!2 eb4 f4 gb4!4",
  K: "[eb4,gb4]@5 [f4,ab4] [eb4,gb4] [f4,ab4]", // Ebm Fm Ebm Fm
  L: "[f4,bb4]@3 [f4,bb4] [f4,bb4]@4 ~@2 [f4,bb4]@2 [f4,bb4]@2 [f4,bb4]@2", M: "eb4 f4 gb4 ab4 b4 ab4 b4@2",
  N: "bb4 bb4@3",
  O: "[~@47 f4@24 ~ f4@14 f4@20 eb4@12 eb4@18 ~ eb4@6 eb4@6 eb4@6 d4@24 ~@6 d4@6 c4@6 bb3@6 ~ [g3,c4]@24 ~@6 [g3,bb3]@6]/5", // C5 Gm
  P: "[[f3,ab3]@7 [eb3,g3]@7 [f3,c4]@28 ~ bb3@35 ab3@13 ab3@26 g3@26 ~]/3", // Fm Eb F5
  Q: "[gb3@26 f3@26 ~ eb4@13 d4@6 c4@7 d4@13 eb4@13 ab4@26 ~ g4@12]/3", R: "[~ f4@13 g4@53 ~@29]/2",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "F Mellophone" · soft notes
const french_horn_soft = note("<~@17 [~@11 b3@3 d4@3 e4@6 ~] [~@23 c4@6 b3@6 d4@12 ~] ~@12>")
  .s("gm_french_horn").gain(0.2)

// other · trombone
const trombone = note("<A B C D E F G H I J K L M N O P@6 Q@5 R@5>".pickRestart({
  A: "~@3 f3", B: "eb3!2", C: "g3 f3", D: "eb3@2 d3 eb3 f3@4", E: "eb3@2 d3 c3 d3@2 gb3@2", F: "gb3@3 f3", G: "ab3",
  H: "f3@4 ab3 gb3 ab3@2", I: "bb3@2 b3 bb3 ab3 gb3 ab3 f3", J: "~ gb3 ab3 bb3 b3@2 b3@2", K: "bb3@5 bb3!3", L: "c4",
  M: "d4@3 d4 d4@4 ~@2 d4@2 d4@2 d4@2", N: "bb3@2 bb3!2 b3@2 b3@2", O: "d4 d4@3",
  P: "[~@33 e3@12 e3@9 e3@3 e3@24 ~ d3@6 e3@6 gb3@12 gb3@18 gb3@6 e3@12 ~ gb3@12 g3@24 g3@12 bb3@12 ~ b3@6 bb3@6 ab3@6 gb3@8 bb3@20 g3@12 g3@18 ~ bb3@6 ab3]/6",
  Q: "[~@5 g3@6 bb3@49 c4@50 f3@14 ~ g3@7 ab3@7 bb3@11 f3@24 ab3@13 c4@53]/5", R: "[b3@53 bb3@52 bb3@106 ~@29]/5",
})).s("gm_trombone").gain(0.3)

// other · trombone
const trombone_2 = note("<A B C D E F G H I J K L M N O P@6 Q@5 R@3 S@2>".pickRestart({
  A: "~@3 f3", B: "bb2 c3", C: "d3", D: "c3@2 d3 eb3 c3@4", E: "bb2@3 db3", F: "db3@3 db3", G: "eb3",
  H: "d3@4 ab3 gb3 ab3@2", I: "f3@3 f3", J: "gb3", K: "~ db3 eb3 f3 gb3@2 gb3@2", L: "ab3",
  M: "bb3@3 bb3 bb3@4 ~@2 bb3@2 bb3@2 bb3@2", N: "gb3@2 gb3!2 gb3@2 ab3@2", O: "bb3 bb3@3",
  P: "[~@33 e3@12 b2@9 b2@3 b2@24 ~ b2@6 e3@6 d3@12 d3@18 d3@6 b2@12 ~ d3@12 d3@24 d3@12 bb3@12 ~ b3@6 bb3@6 ab3@6 gb3@8 d4@20 eb3@12 eb3@18 ~ g3@6 f3]/6",
  Q: "[~@5 eb3@6 f3@49 g3@50 f3@14 ~ g3@7 ab3@7 bb3@35 ab3@13 ab3@26 g3@26 ~]/5",
  R: "[gb3@26 f3@26 ~ ab3@52 ab3@26 ~ g3@12]/3", S: "[~ f3@13 g3@53 ~@29]/2",
})).s("gm_trombone").gain(0.3)

// other · french horn · "Baritone Horn"
const french_horn_2 = note("<A B C D E F G H I J K L M N O ~@3 P@8 Q@5>".pickRestart({
  A: "~@3 f3", B: "eb3@5 g3 f3 eb3", C: "bb3@5 d4 c4 bb3", D: "eb4@2 d4 eb4 c4@3 bb3", E: "bb3@3 eb4",
  F: "db4@4 ab3@2 ab3 bb3", G: "b3 db4 b3@2 ~ gb3!2 ab3", H: "bb3@2 b3 bb3 eb4@4", I: "d4@3 d4",
  J: "~ gb3 ab3 bb3 b3@2 b3@2", K: "bb3@3 bb3", L: "~ bb3 c4 db4 eb4@2 eb4@2", M: "d4@3 d4 d4@4 ~@2 d4@2 d4@2 d4@2",
  N: "eb4@2 eb4!2 eb4@2 eb4@2", O: "d4 d4@3",
  P: "[~@47 bb3@12 ~ b3@6 bb3@6 ab3@6 gb3@8 bb3@20 ~@6 eb4@6 d4@6 eb4@6 c4@24 ~@7 d4@6 c4@6 bb3@6 f4@24 ~@7 g3@6 f3@6 eb3@6 g3@26 c4@14 ~ bb3@7 c4@7 eb4@11 d4@5 c4@5 ~ d4@13 eb4@13 c4@53]/8",
  Q: "[b3@53 eb4@13 d4@6 c4@7 d4@13 eb4@13 eb4@106 ~@29]/5",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Baritone Horn"
const french_horn_3 = note("<A B C D E F G H I J K L M N O ~@3 P@8 Q@5>".pickRestart({
  A: "~@3 f3", B: "eb3@5 g3 f3 eb3", C: "bb3", D: "g3 f3", E: "eb3@2 d3 c3 bb2@2 gb3@2", F: "ab3@2 gb3 f3", G: "ab3",
  H: "f3@4 ab3 gb3 ab3@2", I: "bb3@2 b3 bb3 ab3 gb3 ab3 f3", J: "gb3", K: "~ db3 eb3 f3 gb3@2 gb3@2", L: "c4",
  M: "f3@3 f3 f3@4 ~@2 f3@2 f3@2 f3@2", N: "gb3@2 gb3!2 gb3@2 ab3@2", O: "f3 f3@3",
  P: "[~@47 bb3@12 ~ b3@6 bb3@6 ab3@6 gb3@8 f3@20 ~@6 eb4@6 d4@6 eb4@6 c4@24 ~@7 d4@6 c4@6 bb3@6 d4@24 ~@7 g3@6 f3@6 eb3@6 eb3@26 ab3@14 ~ g3@7 ab3@7 bb3@16 bb3@5 ~ c4@26 ab3@26 g3@26 ~]/8",
  Q: "[gb3@26 f3@26 ~ ab3@52 bb3@106 ~@29]/5",
})).s("gm_french_horn").gain(0.3)

// bass · tuba · "C Tuba"
const bass = note("<~ A B C D E F G H I J F K L M ~@3 N@5 O@3 P@5>".pickRestart({
  A: "eb2 g2", B: "f2", C: "c2@2 d2 eb2 f2@4", D: "bb1@3 gb2", E: "gb2@3 f2", F: "eb2", G: "bb1@3 b1", H: "bb1@3 bb1",
  I: "b1", J: "gb2@3 gb2", K: "bb2@3 bb2 bb2@4 ~@2 bb2@2 bb2@2 bb2@2", L: "eb2@2 eb2!2 eb2@2 eb2@2", M: "bb1 bb1@3",
  N: "[~@47 bb2@24 ~ bb2@14 bb2@20 eb2@12 eb2@18 ~ c2@6 d2@6 eb2@6 g2@49 c2@12 c2@12 ~@6 bb2@6]/5",
  O: "[ab2@7 g2@7 f2@14 ~ g2@7 ab2@7 bb2@11 g2@5 ab2@5 ~ ab2@26 c2@53]/3", P: "[eb2@53 f2@52 bb1@53 eb2@53 ~@29]/5",
})).s("gm_tuba").gain(0.3)

stack(french_horn, french_horn_soft, trombone, trombone_2, french_horn_2, french_horn_3, bass)