Strudelify

Take It On The Run

REO Speedwagon

KeyE minorTempo75 bpm
0:00/0:00
// Take It On The Run — REO Speedwagon
// 75 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 76 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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 · acoustic guitar steel · "Acustic Guitar"
const acoustic_guitar_steel = note(`<
  A@2 B C D E F D@2 E F D@2 E F G H E F G H E I J D E F D@2 E F G H E F G H E I J K L@3 K L@3 K L@3 K L@3 H M@3 H E N@2
  H M@3 H E O@3 P@3
>`.pickRestart({
  A: "[~ [b3,g4]@5 ~ [d3,g4]@2 ~ [d3,g4]@2 ~ [b3,g4]@5 ~ [d3,g4]@2 ~ [d3,g4]@2 ~ [b3,g4]@5 ~ [d3,g4]@2 ~ [d3,g4]@2 ~ [b3,g4]@5 ~ [d3,g4]@2 ~@4 [g3,c4]@5 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@5 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@5 ~ [g3,c4]@2 ~ [g3,c4]@2 ~ [g3,c4]@5 ~ [g3,c4]@2 ~ [g3,c4]@2, [d3,g3]@2 [g3,b3]!2 [d3,g3]@2 [g3,b3]!2 [d3,g3]@2 [g3,b3]!2 [d3,g3]@2 [g3,b3] [g3,b3]@2 ~@15, ~@46 [d3,g4]@5 ~@21 e3@6 e3@3 e3@3 e3@6 e3@3 e3@3, ~@16 [c3,e3]@2 [c3,e3]!2 [c3,e3]@2 [c3,e3]!2 ~@8]/2", // Em G5 Em G5 Em G5 Em G5 …
  B: "~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ [d4,f#4]@2 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ [d4,f#4]@2 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ [d4,f#4]@2 ~ [d4,f#4]@5 ~ [d4,f#4]@2 ~ [d4,f#4]@2, [d3,a3]@2 [d3,a3]!2 [d3,a3]@2 [d3,a3]!2 [d3,a3]@2 [d3,a3]!2 [d3,a3]@2 [d3,a3]!2", // D D5
  C: "~ [b3,g4]@5 ~ [d3,g4]@2 ~ [d3,g4]@2 ~ [b3,g4]@5 ~ [d3,g4]@2 ~ [d3,g4]@2 ~ [d4,f#4]@11 ~ [d4,f#4]@11, [d3,g3]@2 [g3,b3]!2 [d3,g3]@2 [g3,b3]!2 [d3,a3]@4 [d3,a3]@4", // Em G5 Em G5 D G5 G G5 …
  D: "~ [b3,g4]@11 ~ [b3,g4]@8 ~ [b3,g4]@2 ~ [b3,g4]@5 ~ [b3,g4]@5 ~ [b3,g4]@5 ~ [b3,g4]@5, [d3,g3]@4 [d3,g3]@3 [d3,g3] [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2", // Em G5
  E: "~ c4@11 ~ c4@8 ~ c4@2 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5, [e3,g3]@4 [e3,g3]@3 [e3,g3] [e3,g3]@2 [e3,g3]@2 [e3,g3]@2 [e3,g3]@2", // Em
  F: "~ [d4,f#4]@11 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5, [d3,a3]@4 [d3,a3]@3 [d3,a3] [d3,a3]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3]@2", // D D5
  G: "~ [b3,g4]@11 ~ [b3,g4]@8 d3@3 [g3,d4]@12 [f#3,c#4]@12, [d3,g3]@4 [d3,g3]@3 ~@9", // Em G5 F#5 G5
  H: "~ [g3,b3,e4]@11 ~ [e3,b3,e4]@8 ~ [e3,b3,e4]@2 ~ [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~ [e3,b3,e4]@5, e3@4 g3@3 g3 g3@2 g3@2 g3@2 g3@2", // Em E5
  I: "~ [c4,e4]@11 ~ [c4,e4]@8 e3 [c4,e4]@2 ~ [c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@5, [e3,a3]@4 [e3,a3]@3 a3 [e3,a3]@2 [e3,a3]@2 [e3,a3]@2 [e3,a3]@2", // C A5
  J: "~ [d4,f#4]@23 ~ [d4,f#4]@11 ~ [d4,f#4]@11, [d3,a3]@2 [d3,a3]!2", // D D5
  K: "~ [b3,e4]@11 ~ [b3,e4]@5 ~ [b3,e4]@2 e3 e3@5 e3 e3@5 e3 e3@2 e3 e3@5 e3 e3@5, [e3,g3]@4 [e3,g3]@2 [e3,g3] ~@9", // E5 Em
  L: "[~ c4@11 ~ c4@5 ~@4 c4@5 ~ c4@5 ~ c4@2 ~ c4@5 ~ c4@5 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@8 ~ c4@5 ~ c4@5 ~ c4@2 ~ c4@5 ~ c4@5 ~ f#4@2 ~ f#4@2 ~ f#4@2 [b3,d#4,f#4]@3 ~ f#4@8 ~ f#4@5 ~ f#4@5 ~ f#4@2 ~ f#4@5 ~ f#4@5, [e3,g3]@4 [e3,g3]@3 [e3,g3]@2 [e3,g3]@2 [e3,g3] [e3,g3]@2 e3@9 [e3,g3]@2 [e3,g3]@2 [e3,g3] [e3,g3]@2 e3@18, ~@14 g3@2 [a3,c#4]!4 [a3,c#4]@3 ~@7 g3@2 [b3,d#4]!3 ~ [b3,d#4]@3 [a3,d4]@2 [a3,d4]@2 [a3,d4] [a3,d4]@2 [a3,d4]@2]/3", // B Em A B D5
  M: "[~ c4@11 ~ c4@8 ~ c4@2 ~ c4@5 ~ c4@5 ~ c4@5 ~ c4@5 ~ [d4,f#4]@11 ~ [d4,f#4]@8 ~ [d4,f#4]@2 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [b3,g4]@11 ~ [b3,g4]@8 d3@3 [g3,d4]@12 [f#3,c#4]@12, [e3,g3]@4 [e3,g3]@3 [e3,g3] [e3,g3]@2 [e3,g3]@2 [e3,g3]@2 e3@34, ~@14 g3@2 [d3,a3]@4 [d3,a3]@3 [d3,a3] [d3,a3]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3]@2 [d3,g3]@4 [d3,g3]@3 ~@9]/3", // D Em G5 F#5 Em D5 G5
  N: "[~ [c4,e4]@11 ~ [c4,e4]@8 ~ [c4,e4]@2 ~ [c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@5 ~ [d4,f#4]@23 ~ [d4,f#4]@11 ~ [d4,f#4]@11, [e3,a3]@4 [e3,a3]@3 [e3,a3] [e3,a3]@2 [e3,a3]@2 [e3,a3]@2 e3@18, ~@7 a3 [d3,a3]@4 [d3,a3]@2 [d3,a3]@2]/2", // C D A5 D5
  O: "[~ [c4,e4]@11 ~ [c4,e4]@8 ~ [c4,e4]@2 ~ [c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@5 ~ [d4,f#4]@23 ~ [d4,f#4]@11 ~ [d4,f#4]@11 ~ [b3,g4]@11 ~ [b3,g4]@11 ~ [b3,g4]@11 ~ [b3,g4]@5 ~ [b3,g4]@5, [e3,a3]@4 [e3,a3]@3 [e3,a3] [e3,a3]@2 [e3,a3]@2 [e3,a3]@2 e3@34, ~@7 a3 [d3,a3]@4 [d3,a3]@2 [d3,a3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]@2 [d3,g3]!2]/3", // C D Em A5 D5 G5
  P: "[~ [g3,c4]@11 ~ [g3,c4]@11 ~ [g3,c4]@11 ~ [g3,c4]@5 ~ [g3,c4]@5 ~ [d4,f#4]@11 ~ [d4,f#4]@11 ~ [d4,f#4]@11 ~ [g3,c4]@11 ~ [b3,g4]@47, [c3,e3]@2 [c3,e3]@2 [c3,e3]@2 [c3,e3] e3@7 e3@10, ~@7 c3 [d3,a3]@2 [d3,a3]@2 [d3,a3]@2 c3@2 [d3,g3]@8]/3", // C5 D C5 Em C D5 G5
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.6)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@3 A B C D E B C D E B C D F G H I J G H K L B C D E B C D F G H I J G H K L M N O P M N O P M N O P M N O P G H I J
  G H K Q G H I J G H K R S T U V
>`.pickRestart({
  A: "~@23 c3 d3@11 c3 d3@12", B: "g2@18 ~@3 g2@2 ~ g2@2 ~@4 g2@6 a2@6 b2@6",
  C: "c3@18 ~@3 c3@2 ~ c3@2 ~@4 c3@12 d3@3 e3@3", D: "d3@18 ~@3 d3@2 ~ d3@2 ~@4 d3@2 ~@10 d3@6",
  E: "g2@18 ~@3 g2@2 ~ g2@2 ~@4 g2@2 ~@4 g2@3 a2@3 g2@6", F: "g2@18 e2@2 ~ f#2@2 ~ g2@12 f#2@12",
  G: "e2@12 ~@9 e2@2 ~ e2@2 ~@4 e2@6 e2@2 ~ d2@2 ~ e2@6", H: "c3@12 ~@9 c3@2 ~ c3@2 ~@4 c3@2 ~@10 c3@4 ~@2",
  I: "d3@12 ~@9 d3@2 ~ d3@2 ~@4 d3@2 ~@10 d3@4 ~@2", J: "g2@6 e2 f#2 g2@4 f#2@4",
  K: "a2@18 ~@3 e2@2 ~ a2@2 ~@4 a2@12 a2@6", L: "d3@23 c3 d3@11 c3 d3@11 ~",
  M: "e2@6 ~@6 e2@6 e2@2 ~ e2@4 ~@2 e2@4 ~@2 e2@2 ~ e2@4 ~@2 e2@4 ~@2",
  N: "c2@6 ~@6 c2@6 ~@3 c2@4 ~@2 c2@4 ~@2 c2@2 ~ c2@4 ~@2 c2@4 ~@2",
  O: "a1@3 a1@3 a1@3 a1@3 a1@9 c2@4 ~@2 c2@4 ~@2 c2@2 ~ c2@4 ~@2 c2@4 ~@2",
  P: "b1@3 b1@3 b1@3 b1@3 b1@9 d2@4 ~@2 d2@4 ~@2 d2@2 ~ d2@4 ~@2 d2@4 ~@2", Q: "d3@23 ~@2 d3@10 ~ d3@8 ~@4",
  R: "d3@23 c3 d3@11 c3 ~@12", S: "g2@7 g2", T: "c3@7 c3", U: "~@3 c3, d3", V: "g2",
})).s("gm_electric_bass_finger").gain(0.48).pan(0.3)

// chords · distortion guitar · "Electric Guitar"
const distortion_guitar = note(`<
  ~@3 A B C D E F@2 D E F@2 D G@3 D H@4 I F@2 D E F@2 D G@3 D H@4 J@8 K@8 L@3 D H@4 M@3 D H@4 I N ~@3
>`.pickRestart({
  A: "~@2 [d3,a3]!2", B: "[g2,d3]@7 [g2,d3]", C: "[c3,g3]@7 [c3,g3]", D: "[d3,a3]@7 [d3,a3]",
  E: "~@8 a3 b3 a3@2 ~ e3 d3@2, g2, d3@6 d3 ~", F: "[[g2,d3]@7 g2 [c3,g3]@7 [c3,g3], ~@7 d3@9]/2",
  G: "[[g2,d3]@4 g2@2 [f#2,c#3]@2 [e2,b2]@7 [e2,b2] [c3,g3]@7 [c3,g3], ~ d3@5]/3", // G5 F#5 E5 C5
  H: "[[g2,d3]@4 g2@2 [f#2,c#3]@2 [e2,b2]@7 [e2,b2] [c3,g3]@7 [c3,g3] [a2,e3]@7 [a2,e3], ~ d3@7]/4", // G5 F#5 E5 C5 A5
  I: "[d3,a3]@2 [d3,a3]!2", // D5
  J: "[[d3,a3]@8 [d3,a3]@4 a3@4 [e2,b2]@16 [c3,g3]@16 [a2,e3]@7 [c3,g3]@9 [b2,f#3]@7 a3@9 [e2,b2]@16 [c3,g3]@16 [a2,e3]@7 [c3,g3]@9, ~@12 d3@59 d3@57]/8", // D5 E5 C5 A5 C5 B5 E5 C5 …
  K: "[[b2,f#3]@7 a3@9 [e2,b2]@16 [c3,g3]@16 [a2,e3]@7 [c3,g3]@9 [b2,f#3]@7 a3@9 [e2,b2]@16 [c3,g3]@16 [a2,e3]@7 [c3,g3]@9, ~@7 d3@64 d3@57]/8", // B5 E5 C5 A5 C5 B5 E5 C5 …
  L: "[[b2,f#3]@7 a3@9 [e2,b2]@14 [e2,b2]@2 [c3,g3]@14 [c3,g3]@2, ~@7 d3@41]/3", // B5 E5 C5
  M: "[[d3,a3]@4 [d3,a3]@2 a3@2 [e2,b2]@7 [e2,b2] [c3,g3]@7 [c3,g3], ~ d3@3]/3", N: "[g2,d3] ~",
})).s("gm_distortion_guitar").gain(0.4)

// other · distortion guitar
const distortion_guitar_2 = note(`<
  ~@40
  [~@4 g5!4 g5@2 g5 f#5@3 e5 f#5]
  [~@12 g5@3 g5@3 g5@3 g5@3 g5@6 g5@3 f#5@2 ~@13]
  ~@34
>`).s("gm_distortion_guitar").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@3 A B@11 C B@3 D B@3 D B@7 E ~@44>".pickRestart({
  A: "~@2 x!2", B: "x ~@6 x!2 ~ x ~@3 x ~", C: "x ~@6 x!2 ~@3 x ~@3", D: "x ~ x!2", E: "x!2",
})).gain(0.45)

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

// drums · low tom
const low_tom = s("lt").struct("<~@31 [~@7 x] ~@44>").gain(0.45)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@4 A B@3 A B@3 A B@2 C A@3 D A@3 E A B@3 A B@2 F ~@44>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!4 ~@4", D: "~@2 x ~ x ~ x!2 ~@8", E: "x!2 ~ x ~@4", F: "x!3 ~@5",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@31 [~@10 x!2 ~@4] ~@44>").gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~@23 [~ x ~@2] ~@52>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@3 A B ~@3 B ~@3 B ~@2 A B@3 C B@3 A B ~@3 B ~@2 D ~@44>".pickRestart({
  A: "~@2 x!2", B: "x", C: "x ~ x!2", D: "~ x",
})).gain(0.45)

stack(
  acoustic_guitar_steel, bass, distortion_guitar, distortion_guitar_2, kick, snare, low_tom, pedal_hat, mid_tom,
  open_hat, crash
)

More by REO Speedwagon