Strudelify

In The Hall of The Mountain King

Edward Grieg

KeyE♭ majorTempo120 bpm
0:00/0:00
// In The Hall of The Mountain King — Edward Grieg
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3631331; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 35 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · piano
const piano = note("<A B C D A B C D E F E G E F E G H I J K L@2 M N L@2 M N O@2 P Q R S L>".pickRestart({
  A: "c4!4 g4!2 g4@2", B: "c4!2 c4@2 g4!2 g4@2", C: "c4!4 g4!4", D: "eb4!4 eb4@4", E: "g4 a4 b4 c5 d5 b4 d5@2",
  F: "eb5 b4 eb5@2 d5 b4 d5@2", G: "eb5 b4 eb5@2 d5@4", H: "g5!6 g5@2", I: "g5!2 g5@2 g5!2 g5@2", J: "g5!8",
  K: "g5!4 g5@4", L: "~ [eb5,gb5] ~@2", M: "~ c5 ~ c5", N: "~ [b4,d5] [c5,eb5]@2", O: "~ [eb6,gb6] ~@2",
  P: "~ [eb6,gb6]!3", Q: "[eb6,gb6]!4", R: "~@4 c4!4", S: "c4!8",
})).s("gm_piano").gain(0.2)

// chords · piano
const piano_2 = note("<~@8 A B A C A B A C D E D F G@2 H I G@2 H I G@2 J K L M N>".pickRestart({
  A: "g2 [d3,g3,b3,d4] g2 [d3,g3,b3,d4]", B: "eb2 [b2,g3,b3,eb4] g2 [b2,g3,b3,d4]",
  C: "eb2 [b2,g3,b3,eb4] g2 [b2,g3,bb3,d4]", D: "c2 [g2,eb4,g4,c5] c2 [g2,eb4,g4,c5]",
  E: "c2 [g2,gb4,g4,c5] c2 [g2,f4,ab4,db5]", F: "eb2 [bb2,eb4,g4,bb4] eb2 [bb2,eb4,g4,bb4]",
  G: "[c2,c3] [eb3,eb4,gb4,a4,c5] ~@2", H: "ab2 [c3,c4,eb4,g4] g2 [c3,c4,eb4,g4]", I: "g2 [b2,d4,g4] [c3,c4,eb4]@2",
  J: "[c2,c3] [eb3,eb4,gb4,a4,c5]!3", K: "[eb3,eb4,gb4,a4,c5]!4", L: "~@9 c3 c2 c3 c2 c3 c2 c3",
  M: "c2 c3 c2 c3 c2 c3 c2 c3 c2 c3 c2 c3 c2 c3 c2 c3", N: "[c1,c2] [c2,c3,eb4,gb4,a4,c5] ~@2",
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note("<A B C D A B C D ~@24 E ~@2>".pickRestart({
  A: "c2 [g2,c3,eb3,g3] c2 [g2,c3,eb3,g3]", B: "c2 [g2,c3,gb3,g3] c2 [g2,db3,f3,ab3]",
  C: "c2 [g2,eb3,g3] c2 [g2,eb3,g3]", D: "eb2 [bb2,eb3,g3,bb3] eb2 [bb2,eb3,g3,bb3]", E: "~@8 c2 ~@7",
})).s("gm_piano").gain(0.2)

stack(piano, piano_2, piano_soft)