Strudelify

lord of the rings medley

Howard Shore

KeyD majorTempo76 bpm
0:00/0:00
// lord of the rings medley — Howard Shore
// 76 bpm, 4/4, key D 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 (4/4 at bar 1, 6/4 at bar 27, 4/4 at bar 28, 3/4 at bar 36, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5893306; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 109 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(76/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 · violin
const violin = note(`<
  ~ A B C A@2 B D E A C F A G H I B J K L M N O P Q R S@2 T@4 U V@6 W@4 X@8 Y@8 Z@8 AA@3 AB@3 AC@3 AD@3 AE AF@2 AG AH AI
  AJ AK AL@7 AM@2 AN@3 AO@8 AP@2
>`.pickRestart({
  A: "d4 c#4", B: "d4!2", C: "d4 e4", D: "g4 d4", E: "c#4 c4", F: "b3 e4", G: "d4@4 a3@2 d5 e5", H: "f#5 a4",
  I: "b3 c#4", J: "d4@6 d4!2 c4@6 c4!2", K: "d4@12 ~@2 g4 a4", L: "a#4@6 a4 g4 f4@6 g4 a4", M: "g4@2 f4 e4",
  N: "d5@6 d5!2 c5@6 c5!2", O: "d5@12 ~@2 g5 a5", P: "a#5@6 a5 a#5 c6@8", Q: "~@9 f#4@4 ~@5 f#4@4 ~@22 e4@4",
  R: "~@5 e4@4 ~@22 d4@4 ~@5 d4@4 ~@4", S: "[~@18 b3@4 ~@14 c#4@4 ~@4 c#4@9 e4@9 ~@9 f#4@4 ~@4 f#4@4 ~@13]/2",
  T: "[~@10 d4@4 ~@13 e4@4 ~@5 d5@2 e5@2 f#5@22 ~@2 f#5@2 ~ b5@2 c#6@2 d6@13 c#6@18 a5@4 f#5@13 g5@2 f#5@2 ~ e5@13 d5@2 e5@2 f#5@26 ~@5 f#5@2 g5@2 a5@16]/4",
  U: "~@2 e5@17 f#4@4 ~@5 a4@4 ~@5 a4@4 ~@7",
  V: "[~@15 b4@4 ~@5 b4@4 ~@14 c#5@17 c#5@2 ~@2 c#5@9 c#5 ~ c#5 ~@2 c#5@26 ~@9 c4@36 d4@36 c4@36 d4@36 c4@32]/6",
  W: "[~ d4@9 e4@18 c4@9 d4@11]/4",
  X: "[~@2 e4@36 c4@18 d4@24 e4@12 e5@18 e4@12 d4@6 e4@6 f#4@9 f#4@3 a4@3 g4@6 a4@3 e4@12 d4@6 e4@6 f#4@9 a4]/8",
  Y: "[~@4 d5@6 e5@12 d5@6 e4@24 g4@12 g4@12 a4@48 e4@48 e4@48 ~@6 a4@3 a4@3 a4@6 c5@6 b4@12 e5@12 f#5@12 d5@36 ~@6 a4@3 a4@3 a4@6 c5@6 b4@12 e5@12 f#5@12 a5@8]/8",
  Z: "[~@4 a5@12 b5@12 b5@12 g5@27 g5@3 b5@3 c6@3 d6@24 a5@15 a4@3 d5@3 e5@3 e5@24 c5@21 e5@3 e5@84 ~@20 a3@8 ~ c4@8 e4@8 f4@8 ~ e4@8 c4@8 ~ a3@8 c4@8 ~ g#3@8 c4@8 ~ g#3@8 f4@8 c4@7]/8",
  AA: "[~@2 g#3@8 c4@8 ~@9 g3@8 ~ c4@8 e4@8 ~ f4@8 e4@8 c4@8 ~ g3@8 ~@9 g#3@8 b3@8 ~ e4@8 e4@8 ~ b3@8 b3@7]/3",
  AB: "[~ e4@8 ~@9 e4@8 ~ g4@8 b4@8 ~ g4@8 e4@8 ~@9 c4@8 e4@8 ~ g4@8 e4@8 ~ c4@8 ~@17 f#4@8 ~ a4@7]/3",
  AC: "[~ f#4@8 d4@8 ~@9 e4@8 ~ g4@8 b4@8 ~ g4@8 e4@8 ~@9 b4@8 g4@34 ~@9 d4@8 f#4@8]/3",
  AD: "[~ b4@8 f#4@8 d4@8 ~@9 g4@8 ~ e4@34 ~@8 d4@8 f#4@8 ~ a4@8 f#4@8 ~ d4@8 ~@9 c4@8]/3", AE: "e4@17 ~@4 c4@3",
  AF: "[~@3 e4@8 g4@8 ~ e4@8 c4@8 ~@9 a3@8 f#4@34 ~@9]/2", AG: "e4@8 g4@8 ~ b4@8 g4@8 e4@8 ~@7",
  AH: "~@2 c4@8 ~ a4@34 ~@3", AI: "~@5 c4@8 e4@8 ~ g4@8 e4@8 ~ c4@8 ~", AJ: "~ a3 d4@4", AK: "~@10 e4@8 ~ g4@17 ~@12",
  AL: "[~@5 c4@60 d4@61 e4@61 f4@61 d4@61 e4@27]/7", AM: "[~@3 c4@30 b3@31 c4@31 ~]/2",
  AN: "[c4@31 d4@31 f4@31 g4@51]/3",
  AO: "[~@11 c4@24 b3@24 c4@24 c4@24 c4@24 d4@24 c4@24 b3@24 c4@24 b3@24 c4@24 c4@24 f4@24 c4@24 b3@24 b3@12 c4]/8",
  AP: "[~@11 e4@48 ~@37]/2",
})).s("gm_violin").gain(0.25)

// other · orchestral harp · "Harp"
const orchestral_harp = note(`<
  ~ A B C A@2 B D E F G C A H I C J K L C M N O P Q R S T U V W X Y Z@6 AA@4 AB@7 AC@8 AD@3 AE@3 AF@6 AG AH AI AJ AK AL
  AM AN AO@8 AP AQ@7 AR@2 AS@3 AT@8 AU@2
>`.pickRestart({
  A: "a3!2", B: "b3 a3", C: "g3 a3", D: "d4@2 b3 a3", E: "a3 g3", F: "b3@4 a3@2 d4 e4", G: "f#4 c#4", H: "b3 c#4",
  I: "d4!2", J: "b3 g3", K: "a3@6 a3!2 g3@6 g3!2", L: "a3@3 ~", M: "g3 g4 a#3 c4", N: "a3!8 g3!8", O: "a3!12 ~@4",
  P: "g3 f4", Q: "d4@4 a3@4 ~ d4@4 a3@4 ~ d4@4 a3@4 d4@4 ~ a3@4 c#4@4 a3@4 ~ c#4@4",
  R: "a3@4 ~ c#4@4 a3@4 c#4@4 ~ a3@4 b3@4 ~ f#4@4 d4@4 f#4@4 ~ d4@4 f#4@4",
  S: "d4@4 ~ f#4@4 g3@4 ~ d4@4 b3@4 d4@4 ~ a3@4 e4@4 ~ c#4@4 e4@4 a3@4",
  T: "~ e4@4 c#4@4 e4@4 ~ d4@4 a3@4 ~ d4@4 a3@4 d4@4 ~ a3@4 d4@4 ~ a3@3",
  U: "~ g3@4 d4@4 ~ b3@4 d4@4 a3@4 ~@14 f#4@4 b4@4 ~ d5@3",
  V: "~ b4@4 ~ f#4@4 b4@4 d5@4 ~ b4@4 g4@4 b4@4 ~ d5@4 b4@4 ~ g4@4 b4@3",
  W: "~ d5@4 ~ b4@4 a4@4 ~ c#5@4 e5@4 c#5@4 ~ a4@4 c#5@4 e5@4 ~ c#5@4 f#4@3",
  X: "~@2 b4@4 d5@4 b4@4 ~ f#4@4 b4@4 ~ d5@4 b4@4 e4@4 ~ a4@4 c#5@4 a4@3",
  Y: "~@2 e4@4 a4@4 ~ c#5@4 a4@4 ~@9 f#4@4 ~@5 f#4@4 ~@7",
  Z: "[~@6 e4@4 ~@5 g#4@4 ~@5 g#4@4 ~@14 f#4@17 f#4@2 ~@2 f#4@9 f#4 ~ f#4 ~@2 f#4@26 ~@9 g3@36 a3@36 g3@36 a3@36 g3@32]/6",
  AA: "[~ a3@9 b3@18 g3@9 a3@11]/4", AB: "[~ b3@18 g3@9 a3@12 b3@15 a3@6 g3@3 g3@3 a3@12 a3@5]/7",
  AC: "[~ g3@3 g3@3 a3@12 a3@6 b3@3 e4@3 f#4@12 b3@12 c4@12 a3@6 d4@3 g4@3 a4@12 a3@5]/8",
  AD: "[~ d4@3 g4@3 a4@12 e4@3 b3@9 f#4@5]/3", AE: "[~ d4@6 g3@12 b3@12 c4@5]/3",
  AF: "[~@28 e4@67 f4@68 c4@67 e4@58]/6", AG: "~@5 g4@19", AH: "~@13 e4@35", AI: "~@5 d4@11", AJ: "~@3 g4@5",
  AK: "~@7 e4@9", AL: "~@23 f#4@25", AM: "~@13 e4@11", AN: "~@29 d4@19",
  AO: "[~@31 a3@51 c4@51 d4@50 e4@51 a3@51 c4@50 d4@49]/8", AP: "~ b3@17 ~@6",
  AQ: "[~@5 g3@60 b3@61 c4@61 a3@61 b3@61 c4@27]/7", AR: "[~@3 a3@30 g3@31 g3@31 ~]/2",
  AS: "[a3@31 b3@31 a3@31 b3@51]/3",
  AT: "[~@11 g3@24 g3@24 a3@24 g3@24 a3@24 g3@24 g3@24 g3@24 g3@24 g3@24 a3@24 g3@24 c4@24 a3@12 g3@12 g3@24 g3@13]/8",
  AU: "[~@11 g3@48 ~@37]/2",
})).s("gm_orchestral_harp").gain(0.25)

stack(violin, orchestral_harp)

More by Howard Shore