Strudelify

Rivendell

Rush

KeyG majorTempo150 bpm
0:00/0:00
// Rivendell — Rush
// 150 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Acoustic Bass" named as a bass, played on acoustic bass (its acoustic guitar nylon patch is not one)
// note: Full arrangement: all 163 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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 · acoustic guitar nylon · "Acoustic Guitar"
const acoustic_guitar_nylon = note(`<
  A B C D E@3 F G@3 H G@2 I J K@3 D L D E@3 F G@3 H G@2 I J K@3 D L D A B C D E@3 F G@3 H G@2 I J K@3 D L D E@3 F G@3 H
  G@2 I J K@3 D L D M N O P M N O P Q R S D T U V W X Y Z AA E@3 F G@3 H G@2 I J K@3 D L D E@3 F G@3 H G@2 I J K@3 D L D
  M N O P M N O P Q R S D T U V W X Y Z AA AB AC AD@2 AE@2 ~
>`.pickRestart({
  A: "~@5 g3@6 ~ d3@6 d4@6, d4@3 ~", B: "~ g3 d3 d4, c#4@3 ~",
  C: "c4 ~@10 b3@2 c4@2 b3@3 a3@3 g3@3, ~ c4@11 ~@12, ~@2 g3@5 ~", D: "[a3,d4,f#4]", E: "a4", F: "a4@17 a4@6 ~",
  G: "g4", H: "g4@3 g4", I: "e4", J: "e4@3 e4", K: "[~ e4@47 f#4@17 f#4@2 ~@2 f#4@3, ~@34 g4 ~]/3",
  L: "f#4@17 f#4@2 ~@2 f#4@3, ~@10 g4 ~", M: "~@2 d4 g3@3 d4@2, g4", N: "~@5 d4@3 ~ g3@15, g4", O: "~@2 d4 g3@5, g4",
  P: "[e3,a3,e4]", Q: "~@6 c4@3 ~ a3@8 f4@6, f4@3 ~", R: "~@6 d4@3 b3@9 g4 g4@5, g4@3 ~",
  S: "f#4@9 f#4@2 ~ f#4@6 d4@6, ~@11 g4@2 ~@11", T: "~@2 c4 a3@3 c4@2, e4", U: "~@2 c4 g3@3 e3@2, e4",
  V: "b3@2 d4 g3@5, g4", W: "[e3,a3,c#4]", X: "~@6 g3@6 ~ d3@5 d4@6, d4@3 ~", Y: "~@5 g3@6 ~@2 d3@5 d4@6, c#4@3 ~",
  Z: "~@12 b3@2 ~ b3@3 a3@3 g3@3, c4@6 ~ c4 ~@4, ~@5 g3@16 ~@3", AA: "~ a3@23, [d4,f#4]",
  AB: "~@12 b3@2 ~ b3@3 a3@3 ~ g3@2, c4@6 ~ c4 ~@4, ~@3 g3@8 ~",
  AC: "f#4@5 f#4@3 ~ f#4@3 ~ g4@2 f#4@3 ~ a3@2 d3@3, [a3,d4]@6 f#4 ~@2 d4 ~@2", // D5
  AD: "[~ b2 d3 b2 d3 g3 d3 g3 d4 g3 d4 g4, g2]/2", AE: "[~ g2@47, g3]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.5).pan(0.3)

// bass · acoustic bass
const bass = note(`<
  A B C D E@2 F@2 G@2 H@2 I@2 J@2 K L M N M N E@2 F@2 G@2 H@2 I@2 J@2 K L M N M N A B C D E@2 F@2 G@2 H@2 I@2 J@2 K L M
  N M N E@2 F@2 G@2 H@2 I@2 J@2 K L M N M N O P Q C O P Q C R S T U R O V C A B C D E@2 F@2 G@2 H@2 I@2 J@2 K L M N M N
  E@2 F@2 G@2 H@2 I@2 J@2 K L M N M N O P Q C O P Q C R S T U R O V C A B C D C W X@2 Y@2 ~
>`.pickRestart({
  A: "b2@3 b2", B: "a#2", C: "a2", D: "[d2,a2,d3]", E: "[~@6 b3@6 d4@6 b3@6 d4@6 b3@6 ~ d4@5 b3@6, d3]/2",
  F: "[~ b3 d4 b3 d4 b3 ~ d3, d3@7 ~, ~@3 d4]/2", G: "[~ b3 c4 b3 c4 b3 c4 b3, d3]/2",
  H: "[~ b3 c4 b3 c4 b3 ~ d3, d3@7 ~, ~@3 c4]/2", I: "[~ b3 g3 b3 g3 b3 ~ e3, ~ e3@41 ~@6, ~@3 g3]/2",
  J: "[~ c4 g3 c4 ~ c4 ~ b2, f3@7 ~, ~@3 g3]/2", K: "~ c4 g3 e3, c3", L: "~@5 e3@6 ~ g3@6 c4@6, c3", M: "~ d4 a3@2, d3",
  N: "~ [d2,a2]@23, d3", O: "c3", P: "b2@3 d3", Q: "g2@3 d3", R: "f3", S: "g3", T: "d3 d3@3", U: "~ a2@23, [d2,d3]",
  V: "~@3 d3, g2", W: "~ d2@23, [a2,d3]", X: "[~ b2 d3 b2 d3 g3 d3 g3 d4 g3 d4 g4, g2]/2", Y: "[~ g2@47, g3]/2",
})).s("gm_acoustic_bass").gain(0.8).pan(0.8)

stack(acoustic_guitar_nylon, bass)

More by Rush