Strudelify
Broon's Bane cover art

Exit ... Stage Left

Broon's Bane

Rush

KeyD majorTempo160 bpm
0:00/0:00
// Broon's Bane — Rush
// 160 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/3)

// 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 · harpsichord · "syn3"
const harpsichord = note(`<
  A B C A@3 D E A B C A@3 D F G@2 H I@3 J K L M N O P Q R O P Q R S T U V T@2 W X T@2 U V T@2 Y@2 Z@4 AA@8 AB@4 AC@8
>`.pickRestart({
  A: "~@3 d3@10 a2@3", B: "~@3 d3@10 a#2@3", C: "~@3 d3@10 d3@3", D: "~@3 e3@10 e3@3", E: "~@3 e3@10 a2@3",
  F: "~@3 f3@10 a2@3", G: "[~@3 e3@16 d3@13]/2", H: "d3@3 a2@13", I: "[d3@3 a3@8 a3@4 g#3@4 a3@10 a2@5 ~ c3@13]/3",
  J: "g3@3 g3@13", K: "g3@3 b2@13", L: "b2@3 f#2@13", M: "b2@3 a#2@13", N: "a#2@3 f2@13", O: "a2@3 a2@13",
  P: "a2@3 g2@13", Q: "g2@3 f#2@13", R: "d3@3 f2@13", S: "e2@3 ~@2 d3@11", T: "a2@3 ~@2 d3@11", U: "a#2@3 ~@2 d3@11",
  V: "d3@3 ~@2 d3@11", W: "a2@3 ~@2 e3@11", X: "e3@3 ~@2 e3@11", Y: "[a2@3 e3@16 ~ f3@5 ~@2 f3@5]/2",
  Z: "[~ f3@5 ~@2 e3@16 ~ d3@13 ~ d3@2 a2@13 ~ d3@2 a3@7]/4",
  AA: "[~ a3@4 g#3@4 a3@11 a2@5 c3@13 ~ g3@2 g3@13 ~ a2@2 b2@16 f#2@16 a#2@16 f2@16 a2@3 ~@4]/8",
  AB: "[~@9 a3@13 ~ a2@2 a#2@13 ~@3 f2@13 ~@3 a2@3 ~@4]/4",
  AC: "[~@7 a2@2 g2@13 ~@3 f#2@16 f2@13 ~@3 a2@13 ~@3 g2@13 ~@3 f#2@16 ~@2 d3@16 ~@5]/8",
})).s("gm_harpsichord").gain(0.36)

// other · epiano1 · "syn3"
const epiano1 = note(`<
  A B C D A B E D A B C D A B E B F@2 ~@9 G@2 H I G@2 H I J K L@2 J K M@2 J K L@2 J K N@2 O@2 ~@5 P@5 Q@4 R@8
>`.pickRestart({
  A: "g2@13 ~@3", B: "a#2@13 ~@3", C: "f#2", D: "a2@13 ~@3", E: "a2", F: "[~@3 a2@16 ~@13]/2", G: "~@5 e3@11",
  H: "~@5 d3@11", I: "~@3 d3@13", J: "~@3 g2@13", K: "~@3 a#2@13", L: "[~@3 f#2@16 a2@13]/2", M: "[~@3 a2@16 e2@13]/2",
  N: "[~@3 a2@16 ~ a#2@5 ~@2 a#2@5]/2", O: "[~ a#2@5 ~@2 a2@16 ~@8]/2",
  P: "[~@12 f#3@13 ~@3 f#3@13 ~@3 f3@13 ~@3 f3@13 e3@3 ~@4]/5", Q: "[~@9 e3@13 ~@6 f3@11 a#2@3 ~@2 f3@11 a#2@3 ~@6]/4",
  R: "[~@12 e3@11 g2@3 ~@2 d3@11 d3@3 ~@2 d3@11 a2@3 ~@2 e3@11 a2@3 ~@2 e3@11 g2@3 ~@2 d3@11 d3@3 ~ f2@16 ~@5]/8",
})).s("gm_epiano1").gain(0.36)

// other · piano · "eg1"
const piano = note("<~@16 A@2 ~ B@3 ~@27 C@2 D@2 ~ E F G ~@16 H@2>".pickRestart({
  A: "[~@3 a3@16 [f4,a4]@5 ~@8]/2", B: "[~@3 c5@8 c5@4 b4@4 a4@8 a4@8 ~@13]/3", C: "[~@3 a3@16 ~ g#3@5 ~@2 g#3@5]/2",
  D: "[~ g#3@5 ~@2 a3@16 ~ [f4,a4]@5 ~@2]/2", E: "~@9 c5@7", F: "~ c5@4 b4@4 a4@7", G: "~ a4@8 ~@7",
  H: "[~@11 a3@16 ~@5]/2",
})).s("gm_piano").gain(0.36)

stack(harpsichord, epiano1, piano)

More by Rush