Strudelify

Rock 'N' Roll Over You

The Moody Blues

KeyE minorTempo130 bpm
0:00/0:00
// Rock 'N' Roll Over You — The Moody Blues
// 130 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 "ElecGtr" overdriven guitar (copy of ch 5 "SlowStrngs" string ensemble 2)
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · electric bass finger · "Bass"
const bass = note(`<
  A B A@3 B A B A@3 B A@2 C@4 A D A@2 C@4 A D A@2 E@2 F@2 A B A@3 B A@2 C@4 A D A@2 C@4 A D A@2 E@2 F@2 A B A@3 B A@3 B
  A@3 B A@3 B A@3 B A@2
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", B: "c2 ~ c2 ~ c2 ~ c2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  C: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", D: "e2 ~ e2 ~ e2 ~ e2 ~ c2 ~ c2 ~ d2 ~ d2 ~",
  E: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", F: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · string ensemble 2 · "SlowStrngs"
const string_ensemble_2 = note(`<
  A B C@2 A B ~@8 D@4 E@2 C@2 D@4 E@2 C@2 F@2 G@2 A B C@2 A B C@2 D@4 E@2 C@2 D@4 E@2 C@2 F@2 H I A B C@2 A B C@2 A B
  C@2 A B C@2 A B C@2 A B C@2
>`.pickRestart({
  A: "[e4,g4,b4]@11 ~@5", B: "[c4,e4,g4]@5 ~@3 [a3,d4,f#4]@5 ~@3", C: "[[g3,b3,e4]@27 ~@5]/2",
  D: "[[c4,e4,g4]@59 ~@5]/4", E: "[[e4,g4,b4]@21 ~@3 [c4,e4,g4]@3 ~ [a3,d4,f#4]@3 ~]/2", F: "[[c4,e4,g4]@27 ~@5]/2",
  G: "[[a3,d4,f#4]@27 ~@5]/2", H: "[a3,d4,f#4]", I: "[a3,d4,f#4] ~@15",
})).s("gm_string_ensemble_2").gain(0.24).pan(0.1)

// chords · lead 8 bass lead · "Bass + Lead"
const lead_8_bass_lead = note(`<
  A B C@2 A B D E F@2 D E F@2 G@3 H I F@3 G@3 H I F@2 J K L M N D E F@2 D E F@2 G@3 H I F@3 G@3 H I F@2 O P L M N D E
  F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F Q
>`.pickRestart({
  A: "[e4,g4,b4]@11 ~@5", B: "[c4,e4,g4]@5 ~@3 [a3,d4,f#4]@5 ~@3", C: "[[g3,b3,e4]@27 ~@5]/2",
  D: "~@4 [b3,g4] ~ [b3,g4] ~ [d4,g4] ~ [b3,f#4] ~@5", // Em G5 B5
  E: "~@2 [e4,g4] ~ [e4,g4] ~ [e4,g4] ~ [d4,f#4] ~ [b3,e4]@3 ~ [a3,d4] ~", F: "b4!2 ~ b4 a4!3 ~ a4 ~ g4!2 e4!2 d4 e4",
  G: "~@2 [c4,e4] ~ [c4,e4] ~ [b3,d4] ~ [c4,e4]@3 ~ [e4,g4] ~ [c4,e4]@2", // C Bm C Em C
  H: "~@2 [c4,a4] ~ [c4,a4] ~ [b3,g4] ~ [c4,a4]@3 ~ [d4,g4] ~ [e4,a4]@2", // F Em F G5 A5
  I: "~@2 [d4,g4] ~ [b3,e4] ~ [a3,d4] ~ [b3,e4] ~ [e4,g4] ~@5", J: "b4!2 ~ b4 a4!3 ~ a4 ~ [e4,g4] ~ [e4,a4]@3 ~",
  K: "[c4,e4]@3 ~ [c4,e4]@3 ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [b3,d4] ~", // C Bm
  L: "[c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4]@3 ~ [g4,c5] ~ [g4,c5] ~ [a4,d5]@2", // C C5 D5
  M: "~@2 [d4,f#4] ~ [d4,f#4] ~ [d4,f#4]@5 ~ [d4,f#4] ~ [d4,f#4] ~", // D
  N: "[d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [d4,f#4] ~ [c4,e4] ~ [d4,f#4]@5 ~", // D C D
  O: "b4!2 ~ b4 a4!3 ~ a4 ~ [e4,g4] ~ [e4,a4] ~ [e4,a4] ~", // Em A5
  P: "[c4,e4]@3 ~ [c4,e4]@3 ~ [c4,e4]@3 ~ [c4,e4] ~ [b3,d4] ~", Q: "b4!2 ~ b4 a4!3 ~ a4 ~ g4!2 e4!2 ~@2",
})).s("gm_lead_8_bass_lead").gain(0.27)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  A@13 B A@7 B A@7 C A@3 B A@7 B A@5 D@2 E A@7 B A@3 B A@3 B A@3 F A@3 B A@3 F A@3 B A@3 D
>`.pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "x!5 ~@3", D: "x!7 ~", E: "x!4 ~@4", F: "x!2 ~@6",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A ~@7 A ~@7 A ~ A ~ A ~@2 B A ~@3 A ~@6 B A ~@7 A ~ A ~ A ~@3 A ~@2 B A ~@3 A ~@2 B A ~@3 A ~@3
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.41)

stack(bass, string_ensemble_2, lead_8_bass_lead, kick, snare, hihat, crash)

More by The Moody Blues