Strudelify
In the Mood cover art

1997 · Rush

In the Mood

Rush

KeyA majorTempo140 bpm
0:00/0:00
// In the Mood — Rush
// 140 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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.

// chords · distortion guitar · "Guitar Bass"
const distortion_guitar = note(`<
  A B@2 C@2 D E F@3 G@2 H D E F@3 I@2 J@2 K@2 J@2 L@2 M@3 D E F@3 G@2 H D E F@3 I@2 J@2 K@2 J@2 L@2 M@3 D E F@3 G@2 H D
  E F@3 I@2 J@2 K@2 J@2 L@2 N@2 O@4 ~
>`.pickRestart({
  A: "e3!2 f#3 c3 c#3 e3 f#3 a2",
  B: "[~ [g3,c4] [f#3,b3] [e3,a3] [f#3,b3] [e3,a3] c#3 [a2,e3]@2 e3 f#3 c3 c#3 e3 f#3 a2]/2", // C5 B5 A5 B5 A5
  C: "[~ [g3,c4] [f#3,b3] [e3,a3] [f#3,b3] [e3,a3] c#3 [a2,e3]@2 [a2,e3] [a2,f#3] c3 c#3 e3 f#3 a2]/2", // C5 B5 A5 B5 A5 D
  D: "~ [g3,c4] [f#3,b3] [e3,a3] [f#3,b3] [e3,a3] c3 [b2,f#3]", E: "[c3,g3]!2 [c3,a3] ~ [c3,g3]!2 [c3,a3] [c3,g3]",
  F: "[~ [a#3,d#4] [a3,d4] [g3,c4] [a3,d4] [g3,c4] e3 [d3,a3]@2 [d3,a3] [d3,c4] [d3,a3]!2 [d3,c4] ~ [a2,e3]@2 [a2,e3] [a2,f#3] [a2,e3]!2 ~@3]/3", // D#5 D5 C5 D5 C5 D5 D7 D5 …
  G: "[~ d3 g3@2 b3 a#3 a3 g#3@4 [g#3,b3,e4]@4 ~]/2", H: "[a2,e3]!2 [a2,f#3] c3 c#3 e3 f#3 a2",
  I: "[~ d3 g3@2 b3 a#3 a3 g#3@4 [g#3,b3,e4]@5]/2", // E
  J: "[[a3,d4] ~ [a3,d4] ~ [e3,a3]!2 ~ [d3,g3]@4 [e3,a3]@2 [f#3,a3] [e3,a3]@2]/2", // D5 A5 G5 A5 F#m A5
  K: "[[a3,d4] ~ [a3,d4] ~ [e3,a3]!2 ~ [b3,e4]@2 c#3 e3!2 f#3 e3 c#3 e3]/2", // D5 A5 E5
  L: "[~ d3 g3@2 b3 a#3 a3 g#3@2 b2 c#3 g#3@2 e3 b2 ~]/2",
  M: "[~ d3 g3@2 b3 a#3 a3 g#3@2 b2 c#3 g#3@2 e3 b2 [a2,e3]@2 [a2,e3] [a2,f#3] c3 c#3 e3 f#3 a2]/3", // A5 D
  N: "[~ d3 g3@2 b3 a#3 a3 [g#3,b3,e4]@9]/2", // E
  O: "[c#3!2 f#3 c3 c#3 e3 f#3 [e3,a3]@2 e3 f#3 c3 c#3 e3 f#3 [e3,a3]@2 e3 f#3 c3 c#3 e3 c#3 [e3,a3]@7 ~ [e3,a3]]/4", // A5
})).s("gm_distortion_guitar").gain(0.32).pan(0.7)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B@2 C D E F G@6 E F H@5 I@2 J@2 I@2 K@4 D E F G@6 E F H@5 I@2 J@2 I@2 K@4 D E F G@6 E F H@5 I@2 J@2 I@2 L@4 M@4 ~
>`.pickRestart({
  A: "a2!3 c3 c#3 ~@2 a2", B: "[~ g3 f#3 e3 f#3 e3 c#3 a2@2 a2!2 c3 c#3 ~@2 a2]/2", C: "~ g3 f#3 e3 f#3 e3 c#3 a2",
  D: "a1 ~ a1 ~ a1!2 ~ a1", E: "~ a1 ~ a1 ~ a1 ~ b1", F: "c2 ~ c2 ~ c2!2 ~ c2",
  G: "[~ c2 ~ c2 ~ c2 ~ d2@2 ~ d2 ~ d2 ~ d2 a1@2 ~ a1 ~ a1 e2 f#2 ~@2 d3 ~@2 g2 f#2 f2 e2@2 e2 e2@3 e2!2 ~ a1 ~ a1 ~ a1!2 ~ a1, ~@23 g2@5 ~@11 [a2,e3]@2 ~@7]/6", // A5
  H: "[~ c2 ~ c2 ~ c2 ~ d2@2 ~ d2 ~ d2 ~ d2 a1@2 ~ a1 ~ a1 e2 f#2 ~@2 d3 ~@2 g2 f#2 f2 e2@2 e2 e2@3 b1 c2 c#2, ~@23 g2@5 ~@12]/5",
  I: "[d2 ~ d2 ~ a1!2 ~ g1@4 a1@5]/2", J: "[d2 ~ d2 ~ a1!2 ~@3 c#3 e3!2 f#3 e3 c#3 e3, ~@7 e2@9]/2",
  K: "[g2@4 g2 f#2 f2 e2@8 ~@2 d3 g3@2 g2 f#2 f2 e2@8 ~, ~@15 g2@5 ~@12]/4",
  L: "[g2@4 g2 f#2 f2 e2@8 ~@2 d3 g3@2 g2 f#2 f2 e2@9, ~@15 g2@5 ~@12]/4",
  M: "[a2!2 f#2 c2 c#2 e2 f#2 a2@2 a2 f#2 c2 c#2 e2 f#2 a2@2 a2 f#2 c2 c#2 e2 c#2 a1@7 ~ a1]/4",
})).s("gm_electric_bass_finger").gain(0.5).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@4 A@16 B@8 C B A@16 B@8 C B A@16 B@8 C ~ A@3 ~@2>".pickRestart({
  A: "~ x ~@3 x ~@2", B: "x!2 ~@3 x ~@2", C: "x!2 ~@6",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@3 A B@7 C B@7 D E@8 D E B@7 C B@7 D E@8 D E B@7 C B@7 D E@8 D A B@3 F ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "~ x ~@2", E: "~ x!3", F: "~@8 x!7 ~",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@19 [~@13 x!2 ~] ~@25 [~@13 x!2 ~] ~@25 [~@13 x!2 ~] ~@15>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@4 [x!8]!77 ~ [x!8]!3 ~@2>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@8 B ~@16 A ~@8 B ~@16 A ~@8 B ~@6>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@6 x!2",
})).gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@19 A ~@8 A ~@16 A ~@8 A ~@16 A ~@8 A ~@6>".pickRestart({
  A: "~@4 x!2 ~@2",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct("<~@29 [~@14 x!2] ~@50 [~@7 x] ~@3 [~@7 x]!2 ~>").gain(0.8)

stack(distortion_guitar, bass, kick, snare, low_tom, hihat, mid_tom, high_tom, crash)

More by Rush