Strudelify

the hunger games mockingjay - the hanging tree

Emmanuel Lo

KeyA minorTempo120 bpm
0:00/0:00
// the hunger games mockingjay - the hanging tree — Emmanuel Lo
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 9 "Marimba" marimba (copy of ch 1 "Flute" flute); ch 11 "Vibraphone" vibraphone (copy of ch 1 "Flute" flute); ch 12 "Xylophone" xylophone (copy of ch 1 "Flute" flute); ch 13 "Timpani" timpani (copy of ch 7 "Trombone" trombone)
// note: Transcription provider: pdmx. https://musescore.com/score/1359361; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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(`<
  ~@31 A B C D E F G H I J K L M N O A@2 B C D E F G H I J K L M N O A@2 B K P Q R S T U V W R X R Y@2
>`.pickRestart({
  A: "g4 a4@2 ~", B: "c5 d5@2 ~", C: "e5!2 d5 c5", D: "a4@2 ~ g4", E: "a4!3 c5", F: "d5@2 ~ g4", G: "a4@2 a4 g4",
  H: "a4 ~", I: "e5@2 d5 c5", J: "d5 c5 a4 g4", K: "a4!3 g4", L: "e4 ~", M: "g4 a4 ~@2", N: "c5 d5 ~@2", O: "g4 a4!3",
  P: "a4 ~ g4 a4", Q: "a4!2 c5 d5", R: "~@2 g4 a4", S: "a4!2 g4 a4", T: "~ e5", U: "d5 c5 d5 c5", V: "a4 g4 a4!2",
  W: "a4 g4 e4@2", X: "~@2 c5 d5", Y: "[a4@4 a4@4 g4@4 a4@19 ~]/2",
})).s("gm_flute").gain(0.4)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A B C D C B C E F G H I E J C A@2 B K L M N O P O C D A B C A@2 B K L M Q H R F G H I E J C A@2 B K L M Q H R F G H I
  E J C A@2 B H S T U V W X Y Z ~@3 AA@2
>`.pickRestart({
  A: "g3 a3@2 ~", B: "c4 d4@2 ~", C: "g3 a3!3", D: "g3 e3@2 ~", E: "g3 a3 ~@2", F: "e4@2 d4 c4", G: "d4 c4 a3 g3",
  H: "a3!3 g3", I: "e3 ~", J: "c4 d4 ~@2", K: "e4!2 d4 c4", L: "a3@2 ~ g3", M: "a3@2 a3 c4", N: "d4@2 ~ e4",
  O: "e4 d4 c4 a3", P: "~ e4@2 g4", Q: "d4@2 ~ g3", R: "a3 ~", S: "a3 ~ g3 a3", T: "a3!2 c4 d4", U: "~@2 g3 a3",
  V: "a3!2 g3 a3", W: "~ e4", X: "d4 c4 d4 c4", Y: "a3 g3 a3!2", Z: "a3 g3 e3@2", AA: "[~@3 a3@5]/2",
})).s("gm_clarinet").gain(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@31 A B C D E F G H I J K L A B M N A B O P@2 Q G R I J G L M S M N@2 T G U V W X Y Z AA AB ~@3 AC@2
>`.pickRestart({
  A: "~ a3!3", B: "~ d4!3", C: "e4!2 d4 c4", D: "a3@2 ~ g3", E: "a3@2 a3 c4", F: "d4@2 ~ g3", G: "a3!3 g3", H: "a3 ~",
  I: "e4@2 d4 c4", J: "d4 c4 a3 g3", K: "a3 c4 a3 g3", L: "e3 ~", M: "g3 a3!3", N: "g3 a3@2 ~", O: "e3!2 g3 a3",
  P: "a3!3 ~", Q: "d4!3 g3", R: "a3!4", S: "c4 d4!3", T: "c4 d4@2 ~", U: "a3 ~ g3 a3", V: "a3!2 c4 d4", W: "~@2 g3 a3",
  X: "a3!2 g3 a3", Y: "~ e4", Z: "d4 c4 d4 c4", AA: "a3 g3 a3!2", AB: "a3 g3 e3@2", AC: "[~@3 a3@5]/2",
})).s("gm_tenor_sax").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<~@47 A B C D E F E@2 G H I J K L M N@2 O P Q R S T U V W X ~@3 Y@2>".pickRestart({
  A: "g4 a4 e5 d5", B: "c5 d5 a4 g4", C: "e4!2 g4 b4", D: "a4@2 ~ g4", E: "a4", F: "d5 a4 g4!2", G: "e4@2 g4 b4",
  H: "a4 g4 e4 c4", I: "d4!3 c4", J: "g3 ~", K: "g4 a4 ~@2", L: "c5 d5 ~@2", M: "g4 a4!3", N: "g4 a4@2 ~",
  O: "c5 d5@2 ~", P: "a4!3 g4", Q: "a4 ~ g4 a4", R: "a4!2 c5 d5", S: "~@2 g4 a4", T: "a4!2 g4 a4", U: "~ e5",
  V: "d5 c5 d5 c5", W: "a4 g4 a4!2", X: "a4 g4 e4@2", Y: "[~@3 a4@5]/2",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@16 A@2 B C@2 D@8 E@2 F@2 C G@2 H G@2 C H G C I@4 F@2 C G@2 H G@2 C H G C I@4 ~@14 J@2
>`.pickRestart({
  A: "[~ e3@4 a3@3]/2", B: "b3", C: "e3", D: "[d3@3 e3@4 a2@2 b3@4 a3@4 e3@4 b3@4 e3@4 a3@3]/8", E: "[~ e3@4 e3@3]/2",
  F: "[~ a2@4 d3@3]/2", G: "a2", H: "d3", I: "[~ a2@4 d3@4 a2@4 a2@3]/4", J: "[~@3 a2@5]/2",
})).s("gm_trombone").gain(0.25)

// bass · tuba
const bass = note(`<
  ~@16 A@2 B C@2 D@8 E@2 F@2 B G@2 H G@2 B H G B I@4 F@2 B G@2 H G@2 B H G B I@4 ~@14 J@2
>`.pickRestart({
  A: "[~ a2@4 d2@3]/2", B: "e2", C: "a2", D: "[d2@3 e2@4 a2@2 e2@4 d2@4 a2@4 e2@4 a2@4 d2@3]/8", E: "[~ a2@4 a2@3]/2",
  F: "[~ a1@4 d2@3]/2", G: "a1", H: "d2", I: "[~ a1@4 d2@4 a1@4 a1@3]/4", J: "[~@3 a1@5]/2",
})).s("gm_tuba").gain(0.25)

// drums · kick
const kick = s("bd").struct(`<
  A@2 ~ A ~ A ~ A ~@3 B A@2 ~ A@3 ~ B ~ B ~@4 A@3 ~ A@3 ~ B ~ B ~ B ~@3 B A@2 ~ A@3 ~ B@3 ~ B ~@4 A@2 ~ A@3 ~@14
>`.pickRestart({
  A: "~@2 x!2", B: "~ x!2 ~",
})).gain(0.3)

stack(flute, clarinet, tenor_sax, trumpet, trombone, bass, kick)