Strudelify

Roll The Bones

Rush

KeyC majorTempo110 bpm
0:00/0:00
// Roll The Bones — Rush
// 110 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 2 "Power Brass" named as a brass, played on brass section (its epiano2 patch is not one); ch 1 "Guitar" named as a guitar, played on electric guitar clean (its music box patch is not one)
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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.

// bass · slap bass 1 · "Multi 1.2"
const bass = note(`<
  ~@4 A B C D E F G H A B I E F G H A B J K L K M K N O P K N K Q R S T U R S T V A B C D E F G H A B I E F G H A B J K
  L K M K N O P K N K Q R S T U R S T V R S T U W R S T U R S T V X Y X Y Z Y X Y Z Y X Y Z AA R S T AB Y Z Y X Y Z Y X
  AC K L K M K N O P K N K Q R S T U R S T V AD
>`.pickRestart({
  A: "a2@2 a2@2 ~@2 a2@2 ~@2 a2@2 g2@2 a2 b2", B: "c3@2 c3@2 ~@2 c3@2 ~@2 c3@2 a2@2 c3 c#3",
  C: "d3@2 d3@2 ~@2 d3@2 ~@2 d3@2 c3@2 d3 e3", D: "a2 ~ a2@2 a2@3 ~@5 g2@2 g2 g#2", E: "a2@2 a2@2 ~@6 a2@2 g2@2 a2 b2",
  F: "c3@2 c3@2 ~@2 c3 ~@3 c3@2 a2@2 c3 c#3", G: "g2!2 ~@4 a2 g#2", H: "d3@2 d3@2 ~@8 d3@2 c#3 e3",
  I: "d3 ~ d3@2 d3@12", J: "d3@2 d3@2 [c4,d4] [g#3,a#3] [e3,f#3] d3 ~@8", K: "d4@4 c4@2 c4 a3@2 g3 g3@2 a3@2 c4@2",
  L: "e2 e2@2 e2 f2 ~ f2 f2@2 f#2!2 ~ f#2 g2 g2@2", M: "f3!2 ~ f2 f2@2 f3!2 ~ f2 f2@2 f3!2 f#3@2",
  N: "e2 e2@2 e2 f2 ~ f2 f2@2 f#2!2 ~ f#2 g2 ~ g2", O: "d3@4 c3@2 c3 a2@2 g2 g2@2 a2@2 c3@2",
  P: "f3!2 ~@4 f3!2 ~@4 f3 ~ f3 ~", Q: "f3 f2 ~ f2 ~ f2 f3 f2 ~ f2 ~ f2 f3@2 f#3@2", R: "e2@14 f2 ~",
  S: "g2@11 g2 b2@2 g2@2", T: "c3@7 g2", U: "c3@7 c3@4 c3 d3@2 d#2@2", V: "c3@7 c3@4 c3 c#3@2 d3@2", W: "e2@3 ~",
  X: "d3@3 e3@3 g3@4 ~@4 d3@2", Y: "d2@3 e2@3 g1@2 ~@6 g2@2", Z: "d3@3 e3@3 a3@7 ~ d3@2", AA: "g3 ~@3",
  AB: "c3@7 c3@3 c3@2 d4@3 ~", AC: "d2@3 e2@3 g1@2 ~@6 a2 b2", AD: "e3@3 ~@13",
})).s("gm_slap_bass_1").gain(0.26)

// chords · brass section · "Power Brass"
const brass_section = note("<~@4 A@3 ~@5 A@2 ~@5 A@2 ~@21 A@3 ~@5 A@2 ~@5 A@2 ~@82>".pickRestart({
  A: "~@2 [a5,c6,g6] ~@5", // Am7
})).s("gm_brass_section").gain(0.15)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@4 A@3 B@2 ~ B@2 A@2 B@2 ~ B@2 A@2 C D E F G D E D H D E D I ~@8 A@3 B@2 ~ B@2 A@2 B@2 ~ B@2 A@2 C D E F G D E D H D
  E D I ~@13 J K@3 L M N O P@2 ~@25 D E F G D E D H D E D I ~@9
>`.pickRestart({
  A: "~@8 [b4,e5,f#5] [b4,d5,f#5] [b4,e5,f#5] [b4,d5,f#5] [b4,e5,f#5] [b4,d5,f#5] [b4,e5,f#5]@2", // Bsus4 Bm Bsus4 Bm Bsus4 Bm Bsus4
  B: "[~ [g4,a4,d5,g5]@7]/2", C: "~@2 [b4,e5,f#5] ~@5",
  D: "[e5,g5,c6] [e5,g5,c6]@2 [e5,g5,c6] [e5,g5,c6]@2 [e5,g5,c6]!2 ~@8", // C
  E: "[e5,c6] [e5,c6]@2 [e5,c6] [f5,c6] ~ [f5,c6] [f5,c6]@2 [f#5,c6]!2 ~ [f#5,c6] [g5,c6]!2 ~", // C F5 F#dim C5
  F: "[e5,g5] [e5,g5]@2 [e5,g5] [e5,g5,c6]@2 [e5,g5,c6]!2 ~@8, c6@3 ~@13", // Em C
  G: "[c5,f5,g5]!2 ~@4 [c5,f5,g5]!2 ~@4 [c5,f5,g5]!2 ~@2", H: "[c5,f5] [c5,f5]@2 ~@3 [c5,f5]!2 ~@4 [c5,f5] ~ [c5,f5]!2",
  I: "[c5,f5] [c5,f5]@2 ~@3 [c5,f5]!2 ~@4 [c5,f5]@2 [c5,f#5] ~", J: "g6@13 ~ d6@2, ~@13 e6@2 ~",
  K: "[e6@11 ~@2 e6@5 d6@3 ~ c6@8 ~ c6@3 d6 ~ e6@2 d6@10, ~@15 a5 ~@8]/3",
  L: "~@3 d6@2 ~@2 e6@2 ~ b5@4 ~@2, ~@2 e6@2 ~ e6@2 ~@9, ~@6 d6@2 ~ d6@2 ~@5", M: "~@2 e6@2 g6@2 a6@7 e6 d6@2",
  N: "a6@14 g6 ~", O: "a6", P: "[b5@19 ~@13]/2",
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · harmonica · "Rock Organ"
const harmonica = note(`<
  ~@21 A ~@12 B C D@2 B C D@2 ~@17 A ~@12 B C D@2 B C D@2 B C D@2 E B C F G B C D@2 H I H I J I H I J I H I J K B C F G
  I J I H I J I H L ~@12 B C D@2 B C D@2 ~
>`.pickRestart({
  A: "~@8 [d6,g6,b6]@3 ~ [c6,f6,a6]@3 ~", B: "[g4,b4]", C: "[b4,d5,g5]", D: "[~@3 f#5@3 ~@10, [a4,c5,e5]]/2",
  E: "[g4,b4]@3 ~", F: "~@3 f#5@3 ~@2, [a4,c5,e5]", G: "[a4,c5,e5]", H: "d2@3 e2@3 g2@4 ~@4 d2@2",
  I: "d2@3 e2@3 g1@2 ~@6 g2@2", J: "d2@3 e2@3 a2@8 d2@2", K: "g2 ~@3", L: "d2@3 e2@3 g1@2 ~@8",
})).s("gm_harmonica").gain(0.16)

// chords · harmonica · "Rock Organ" · soft notes
const harmonica_soft = note("<~@34 A ~@3 A ~@33 A ~@3 A ~@3 A ~@3 B A ~@3 A ~@17 A ~@24 A ~@3 A ~@4>".pickRestart({
  A: "e5", B: "e5@3 ~",
})).s("gm_harmonica").gain(0.12)

// other · synth strings 1 · "Crystals"
const synth_strings_1 = note("<A@4 ~@42 B@4 ~@91>".pickRestart({
  A: "[e5@15 ~, e4 ~@63]/4", B: "[~@8 e5@43 ~@13, ~@8 e4 ~@55]/4",
})).s("gm_synth_strings_1").gain(0.31)

// other · piano · "Strings"
const piano = note("<A@4 ~@42 B@4 ~@91>".pickRestart({
  A: "[[e5,e6,e7]@15 ~]/4", B: "[~ [e5,e6,e7]@7]/4",
})).s("gm_piano").gain(0.24)

// other · cello · "Strings"
const cello = note("<~@53 [~ e6@2 b5] d6 [b5@7 f5] a5 ~@84>").s("gm_cello").gain(0.24)

// chords · synth brass 2 · "Bass Drum"
const synth_brass_2 = note(`<
  ~@3 A B@3 C D E D F B@2 C D E D F B@2 G H I J I J I J K H I J L M N O P Q N O R B@3 C D E D F B@2 C D E D F B@2 S H I
  J I J I J K H I J T M N O P Q N O U M N O V W M N O V M X Y Z AA AB AC AB AC@2 AB AD AE AF AG AH AI AJ M X Q AK AL@2
  AM AL@2 AN AL AO AP H I J I J I J K H I J T M N O P Q N O U AQ
>`.pickRestart({
  A: "~@11 d3!2 ~ c3 ~", B: "[c2,a3] ~ [c2,a3] ~ [e3,a3] ~ [c2,a3] ~ a3 ~ [c2,a3] ~ [e3,a3] ~ [c2,a3] ~",
  C: "[c2,a3] ~ [c2,a3] ~ e3 ~@11", D: "[c2,a3] ~ [c2,a3] ~ [e3,a3] ~ a3 ~ a3 ~ a3 ~ [e3,a3] ~ [c2,a3] ~",
  E: "[c2,a3] ~ a3 ~ [e3,a3] ~ [c2,b3] ~ a3 ~ a3 ~ [e3,a3] ~ a3 ~", // F A5 Cmaj7 A5
  F: "[c2,a3] ~ a3 ~ [e3,a3] ~ [c2,a3] ~ a3 ~ a3 ~ [e3,a3] c2 a3 ~", G: "b3@2 [c2,b3] ~ [e3,f6] ~@11, c2 ~@15",
  H: "[c2,a3] ~ a3 ~ [e3,a3] ~ [c2,a3] ~ a3 ~ [c2,a3] ~ [e3,a3] ~ [c2,a3] ~, c4@15 ~", // F A5 F A5 F
  I: "a3 c2 a3 c2 [e3,a3] ~ [c2,a3] ~ a3 ~ [c2,a3] ~ [e3,a3] ~ [c2,a3] ~", // A5 F A5 F
  J: "[c2,a3] ~ a3 ~ [e3,a3] ~ [c2,a3] ~ a3 ~ [c2,a3] ~ [e3,a3] ~ [c2,a3] ~", // F A5 F A5 F
  K: "[c2,a#3] ~ a3 e3 a3 ~ [c2,a#3] ~ a3 e3 a3 ~ [c2,a#3] ~ e3!2", // C7
  L: "[e3,a3] c2 a3 c2 a3 c2 [e3,a3] c2 a3 c2 a3 c2 [c2,a3] ~ [c2,a3,a#3] ~, ~@6 a#3 ~", // A5 F
  M: "[c2,a3] ~ a3 ~ [e3,a3] ~ a3 ~ a3 ~ [c2,a3] ~ [e3,a3] ~ [c2,a3] ~, c4@15 ~", // F A5 F A5 F
  N: "[c2,a3] ~ a3 ~ [e3,a3] ~ a3 ~ a3 ~ [c2,a3] ~ [e3,a3] c2 a3 ~", // F A5 F A5
  O: "[c2,a3] ~ a3 c2 [e3,a3] ~ a3 ~ a3 ~ [c2,a3] ~ [e3,a3] ~ [c2,a3] ~", // F A5 F A5 F
  P: "[c2,a3] ~ a3 c2 [e3,a3] ~ a3 c2 a3 ~ [c2,a3] ~ [e3,a3] ~ a3 ~", // F A5 F A5
  Q: "[c2,a3] ~ a3 ~ [e3,a3] ~ a3 ~ a3 ~ [c2,a3] ~ [e3,a3] ~ [c2,a3] ~", R: "[c2,a3] ~ a3 c2 [e3,a3] ~ a3 ~@9",
  S: "e3!2 b3@2 [e3,f6] ~@11, ~@2 c2 ~@13", T: "[e3,a3] c2 a3 c2 a3 c2 [e3,a3] c2 a3 c2 a3 c2 a#3@2 e3!2, ~@12 e3 ~@3",
  U: "[c2,a3] ~ a3 c2 [e3,a3] ~ a3 c2 a3 ~ [c2,a3] ~ e3!2 f3 [c3,d3]", // F A5 F Csus2
  V: "[c2,a3] ~ [c2,a3] ~ [e3,a3,a#3] ~ [e3,a3] [c2,a#3] a3 ~ [c2,a3,a#3] ~ [e3,a3] [c2,c4] a3 ~", // F A A5 C7 F A5 C
  W: "c2 ~@11 [b2,c3,d3,f3,f6,g6] ~@3, c4@15 ~", X: "[c2,a3] ~ a3 ~ [e3,a3] ~ a3 ~ [c2,a3] ~ a3 c2 [e3,a3] ~ [c2,a3] ~",
  Y: "[c2,a3] ~ a3 c2 [e3,a3] ~ a3 ~ a3 ~ [c2,a3] ~ [e3,a3] ~ [c2,a3] ~, c4@15 ~", // F A5 F A5 F
  Z: "[c2,a3] ~ a3 ~ [e3,a3] ~ a3 ~ a3 ~ [e3,a3] e3 [c2,a#3] ~ [c2,a#3] ~", AA: "a2 ~@9 a2 ~@3 a2 ~, c4@15 ~",
  AB: "a2 ~@8 a2!2 ~@3 a2 ~", AC: "a2 ~@9 a2 ~@3 a2 ~", AD: "a2 ~@5 a2!3 ~@5 a2 ~", AE: "a2 ~ a2 ~@3 a2 ~ a2 ~@7",
  AF: "~ a2!2 ~@3 a2 ~ a2 ~@7", AG: "~@2 a2 ~@3 a2 ~ a2 ~@7", AH: "~@2 a2!2 ~@2 a2 ~ a2 ~@5 a2!2",
  AI: "a2 ~@5 a2 ~@3 a2 ~@5", AJ: "a2 ~@15",
  AK: "[c2,a3] ~ [c2,a3] ~ [e3,a3] ~ a3 ~ [c3,d3] c2 [c3,d3] c2 e3 ~@3, ~ c#4@2 ~", AL: "c2 ~@9 c2 ~@3 c2 ~",
  AM: "c2 ~@8 c2!2 ~@3 c2 ~", AN: "c2 ~@5 c2!2 ~ c2!2 ~@5", AO: "c2 ~@9 c2!2 ~@2 c2 ~", AP: "c2 ~@15",
  AQ: "c4@15 ~, c2 ~@15",
})).s("gm_synth_brass_2").gain(0.15)

// chords · synth brass 2 · "Bass Drum" · soft notes
const synth_brass_2_soft = note(`<
  ~@7 A ~@6 A ~@7 B C B C B D B ~ B C B ~@8 E ~@3 A ~@6 A ~@7 B C B C B D B ~ B C B ~@22 F@13 G ~@4 F@8 G B C B C B D B
  ~ B C B ~@10
>`.pickRestart({
  A: "~@4 c4!12", B: "~@9 c2 ~@6", C: "c2 ~@8 c2 ~@3 c2 ~@2", D: "c2 ~@8 c2 ~@6", E: "~@8 c4!8", F: "~@4 d6 ~@7 d6 ~@3",
  G: "~@4 d6 ~@4 d6!2 ~ d6 ~ d6!2",
})).s("gm_synth_brass_2").gain(0.05)

// drums · low tom
const low_tom = s("lt").struct("<~@93 A B A B A@2 B C D E F G H I ~@4 A@2 B A@2 J A K I ~@21>".pickRestart({
  A: "x ~@4 x ~ x", B: "x ~@8 x!2 ~@3 x ~", C: "x ~@5 x!3 ~@5 x ~", D: "x!2 ~ x!2 ~@3", E: "~ x!2 ~@3 x ~ x ~@7",
  F: "~ x ~ x!2 ~@3", G: "~@2 x!2 ~@2 x ~ x ~@5 x!2", H: "x ~@2 x ~ x ~@2", I: "x", J: "x ~@5 x!2 ~ x!2 ~@5",
  K: "x ~@9 x!2 ~@2 x ~",
})).gain(0.31)

stack(
  bass, brass_section, electric_guitar_clean, harmonica, harmonica_soft, synth_strings_1, piano, cello, synth_brass_2,
  synth_brass_2_soft, low_tom
)

More by Rush