Strudelify
The Weapon cover art

Signals

The Weapon

Rush

KeyG majorTempo120 bpm
0:00/0:00
// The Weapon — Rush
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 36 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(120/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, A@4 for four bars: edit a riff to change every repeat.

// other · acoustic guitar steel · "Steel String Guitar"
const acoustic_guitar_steel = note(`<
  A@4 B@8 ~@10 C D E D C D ~@4 F@2 G@2 H I J K L M N O P Q R S T U V@2 ~@10 C D E D C D ~@4 F@2 G@2 H I J K L W X@2 Y
  Z@8 ~
>`.pickRestart({
  A: "g4@2 d5@2 ~@2 d5 g5@3 d5@2 f5 e5 d5@2, ~@2 f5 ~@5, ~@5 e5@2 ~@9",
  B: "[g4@2 d5@2 f5 e5 d5 g5@3 d5@2 ~@2 d5@4 a#4@2 c5 f5@3 a4 c5 f5@2 ~@2 c5@2, ~@12 f5@2 ~@15 a#4@2 ~, ~@13 e5@2 ~@13 a4@2 ~@2]/2",
  C: "[a4,c5,e5]@5 ~@3 [d5,e5,a5]@6 ~@2", D: "[c5,d5,g5]@13 ~@3", E: "[a4,c5]@5 ~@3 [d5,e5,a5]@6 ~@2, e5 ~@15",
  F: "g4@2 d5@2 f5 e5 d5 g5@3 d5@2 f5 e5 d5 c5",
  G: "[~ [a4,c5,d5,g5]@7 [a4,c5,d5,a5]@3 ~ [a4,c5,d5,g5]@11 ~ [a4,c5,d5,g5]@3 ~ [a4,c5,d5,e5]@3 ~, ~@12 a5 ~@19]/2", // Am7 D7 Am7 Am
  H: "[a4,c5,e5]@15 ~", I: "[c5,e5,a5]@7 ~ [c5,e5,a5]@7 ~, ~@8 b5 ~@7", J: "[d5,f#5]@7 ~ [c5,e5]@7 ~",
  K: "[b4,d5]@15 ~", L: "[c5,e5]@3 ~ [b4,d5]@3 ~", M: "[a4,c5]@7 ~ [e4,a4,c5]@7 ~",
  N: "g3 b3 d4 b3 g3@2 d4 g3 d3@2 ~@2 d3@2 g3 d3", O: "[d3,a3]@2 d4@2 [d3,a3]@2 d4 a3 d3 a3 d4!2 d3@2 d3@2",
  P: "[d#5,f5,a#5]@11 ~ [d#5,f5,a#5]@2 ~@2", Q: "[f5,g5,c6]@11 ~ [f5,g5,c6]@2 ~@2",
  R: "[d#5,f5,a#5]@5 ~ [d#5,f5,a#5] ~", S: "[c5,d5,g5]@3 ~ [a#4,c5,f5]@3 ~",
  T: "g4@2 d5@2 f5 e5 d5 g5@3 d5@2 f5 e5 d5@2", U: "~@2 a#4@2 c5 f5@3 ~@2 f5@2 a4 a#4 c5@2, ~@4 a4 ~@3, ~@9 c5@2 ~@5",
  V: "[g4@2 d5@2 f5 e5 d5 g5@3 d5@2 f5 e5 d5@4 a#4@2 [c5,c#5] f5@3 a4 c5 f5@2 a4 a#4 c5@2]/2", W: "[a4,c5]@7 ~@9",
  X: "[a4,c5,d5,g5]/2", Y: "c5@2 a4@2 ~ c5 a4 f#5@2 ~ e5@2 d5 c5 a4 c5, ~@2 g5 ~@5",
  Z: "c5@2 a4@2 g5 c5 a4 f#5@2 ~ e5@2 d5 c5 a4 c5",
})).s("gm_acoustic_guitar_steel").gain(0.14)

// bass · synth bass 2 · "Arpeggiando"
const bass = note(`<
  A@5 B A B A B A B C D C D C D C D C E F G F G F H I J I K L@2 M@2 N@2 O L P Q R@2 S T U V W X W Y C D C D C D C D C E
  F G F G F H I J I K L@2 M@2 N@2 O L P Z AA@2 AB AA@8 ~
>`.pickRestart({
  A: "~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2, g1 g2 g1 g2 g1 g2 g1@2, ~@7 g2",
  B: "~ f2 ~ f2 ~ f2 ~ f2 ~ c2 ~ c2 ~ c2 ~ c2, a#1 a#2 a#1 a#2 f1 f2 f1 f2",
  C: "g2 d3 g3 d3 g2 d3 g3 d3 ~ a2 d3 a2 ~ a2 d3 a2, ~@4 d2 ~ d2 ~",
  D: "a#1 f2 a#2 f2 ~ f2 a#2 f2 ~ f2 a#2 f2 a#1 f2 a#2 f2, ~@2 a#1 ~ a#1 ~@3", E: "a#1 f2 a#2 f2 a#1 f2 a#2 f2 ~@8",
  F: "a1 e2 a2 e2 a1 e2 a2 e2 ~ b2 e3 b2 ~ b2 e3 b2, ~@4 e2 ~ e2 ~",
  G: "~ g2 ~ g2 ~ g2 c3 g2 ~ g2 c3 g2 ~ g2 c3 g2, c2@2 c3@2 c2@2 ~@2 c2@3 ~ c2@2 ~@2",
  H: "~ g2 ~ g2 ~ g2 c3 g2 ~ b2 a2 g2 ~ a2 f2 d2, c2@2 c3@2 c2@2 ~@2 c3@3 ~ f2@2 ~@2",
  I: "d#2 a#2 d#3 a#2 d#2 a#2 d#3 a#2 d#2 a#2 d#3 a#2 d#2 a#2 d#3 a#2",
  J: "f2 c3 f3 c3 f2 c3 f3 c3 f2 c3 [c3,f3] c3 f2 c3 f3 c3", K: "c2 g2 c3 g2 c2 g2 c3 g2 a#1 f2 a#2 f2 a#1 f2 a#2 f2",
  L: "g1 d2 g2 d2 g1 d2 g2 d2 g1 d2 g2 d2 g1 d2 g2 d2", M: "d2 a2 d3 a2 d2 a2 d3 a2 d2 a2 d3 a2 d2 a2 d3 a2",
  N: "e2 b2 e3 b2 e2 b2 e3 b2 e2 b2 e3 b2 e2 b2 e3 b2", O: "b1 f#2 b2 f#2 b1 f#2 b2 f#2 a1 e2 a2 e2 a1 e2 a2 e2",
  P: "a1 e2 a2 e2 a1 e2 a2 e2 g1 d2 g2 d2 g1 d2 g2 d2", Q: "f1 c2 f2 c2 f1 c2 f2 c2 e1 b1 e2 b1 e1 b1 e2 b1",
  R: "d1 a1 d2 a1 d1 a1 d2 a1 d1 a1 d2 a1 d1 a1 d2 a1",
  S: "~ a#2 d#3 a#2 ~ a#2 d#3 a#2 ~ a#2 d#3 a#2 ~ a#2 d#3 a#2, d#2@2 ~@2 d#2@3 ~ d#2@2 ~@2 d#2@2 ~@2",
  T: "~ c3 f3 c3 ~ c3 f3 c3 ~ c3 f3 c3 ~ c3 f3 c3, f2@3 ~ f2@3 ~ f2@3 ~ f2@2 ~@2",
  U: "~ a#2 d#3 a#2 ~ a#2 d#3 a#2 ~ a#2 d#3 a#2 d#2 a#2 d#3 a#2, d#2@3 ~ d#2@2 ~@2 d#2@2 ~@6",
  V: "~ g2 c3 g2 ~ g2 c3 g2 ~ f2 a#2 f2 a#1 f2 a#2 f2, c2@3 ~ c2@2 ~@2 a#1@2 ~@6",
  W: "~ d2 g2 d2 ~ d2 g2 d2 ~ d2 g2 d2 ~ d2 g2 d2, g1 ~ g1 ~ g1 ~ g1 ~",
  X: "~ f2 a#2 f2 a#1 f2 a#2 f2 ~ c2 f2 c2 ~ c2 f2 c2, a#1 ~@3 f1 ~ f1 ~",
  Y: "~ f2 a#2 f2 ~ f2 a#2 f2 ~ c2 f2 c2 ~ c2 f2 c2, a#1 ~ a#1 ~ f1 ~ f1 ~",
  Z: "f1 c2 f2 c2 f1 c2 f2 c2 ~@3 b1 ~ b1 e2 b1, ~@4 e1 e2 ~@2, ~@9 b1@2 ~ e1@2 ~@2",
  AA: "~ a2 d3 a2 ~ a2 d3 a2 ~ a2 d3 a2 ~ a2 d3 a2, d2 ~ d2 ~ d2 ~ d2 ~",
  AB: "~ a2 d3 a2 ~ a2 d3 a2 ~ a2 d3 a2 d2 a2 d3 a2, d2 ~ d2 ~ d2 ~@3",
})).s("gm_synth_bass_2").gain(0.17)

// chords · marimba
const marimba = note("<A@5 B A B A B A B ~@70 C@2 D C@8 ~>".pickRestart({
  A: "~ [b4,d5] ~ [b4,d5] ~ [b4,d5] ~ [b4,d5]", B: "~ [c5,f5] ~ [c5,f5] ~ [a4,c5] ~ [a4,c5]",
  C: "~ [d4,g4] ~ [d4,g4] ~ [d4,g4] ~ [d4,g4]", D: "~ [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [e4,g4]",
})).s("gm_marimba").gain(0.09)

// bass · synth bass 2 · "Bass (synth bass suggested)"
const bass_2 = note(`<
  ~@12 A B A B A B A B A C D E F G H I J K L@2 M@2 N@2 O P Q R S T U@2 J V W X M Y M Y A B A B A B A B A C D E F G H I J
  K L@2 M@2 N@2 O P Q R S T Z@11 ~
>`.pickRestart({
  A: "g2 d2", B: "a#1@15 ~", C: "~@8 a#2 c3 a#2 g2 ~ d2 g2 g#2, ~@6 f2 ~", D: "a2@2 c3@2 ~@2 d2 d#2 e2@2 g2@2 ~@2 a1 ~",
  E: "c2@14 ~ g#2, ~@7 g2", F: "a2@2 c3@2 ~@2 [c2,d2] d#2 e2@2 g2@2 ~@2 a1@2", G: "c2@14 g2 g#2",
  H: "a2@2 c3 ~@3 d2 d#2 e2@2 g2@4 a1@2", I: "~@8 c3 b2 a2 g2 f2 a2 f2 d2, c2@7 ~",
  J: "d#2@3 ~ d#2@3 a#1 d#2@3 a#1 d#2@3 a#1, ~@3 a#1@2 ~@11", K: "f2@3 c2 f2@3 c2 f2@3 c2 f2@3 c2",
  L: "[d#2@3 a#1 d#2@3 a#1 d#2@3 a#1 d#2@3 ~ c2@3 g1 c2@3 g1 a#1@3 f1 a#1@3 f1, ~@15 a#1@2 ~@15]/2",
  M: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~", N: "d2 d3 d2 d3 d2 d3 d2 d3", O: "e2 e3 e2 e3 e2 e3 e2 e3",
  P: "e2 e3 e2 ~ e2 e3 e2 e3, ~@3 e3@2 ~@3", Q: "b1 b2 b1 b2 a1 a2 a1 a2", R: "g1 g2 g1 g2 g1 g2 g1 g2",
  S: "a1 a2 a1 a2 g1 g2 g1 g2", T: "f1 f2 f1 f2 e1 e2 e1 e2", U: "d1 d2 d1 d2 d1 d2 d1 d2",
  V: "f2@3 c2 f2@3 ~ f2@3 c2 f2@3 c2, ~@7 c2@2 ~@7", W: "d#2@3 a#1 d#2@3 a#1 d#2@3 a#1 d#2@3 a#1",
  X: "c2@2 g1@2 c2@3 g1 a#1@3 f1 a#1@2 f1 ~", Y: "a#1@3 ~ a#1@3 ~ f1@3 ~ f1@3 ~", Z: "d2!4",
})).s("gm_synth_bass_2").gain(0.4)

// drums · kick
const kick = s("bd").struct("<[x!4]!93 ~>").gain(0.29)

// drums · snare
const snare = s("sd").struct(`<
  ~@12 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B ~@10 C ~
>`.pickRestart({
  A: "~ x ~@5 x", B: "~@11 x!3 ~@2", C: "~@10 x ~ x!4",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B ~@11 C
>`.pickRestart({
  A: "~@4 x!2 ~@6 x ~@3", B: "~ x ~@2 x ~@3 x ~@6 x", C: "x",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@12 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B ~@10 C ~
>`.pickRestart({
  A: "~ x ~@3 x ~@2", B: "~@3 x ~@4", C: "~@15 x",
})).gain(0.32)

stack(acoustic_guitar_steel, bass, marimba, bass_2, kick, snare, hihat, open_hat)

More by Rush