Strudelify

Out of Time

The Rolling Stones

KeyE majorTempo124 bpm
0:00/0:00
// Out of Time — The Rolling Stones
// 124 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 16 "slap" slap bass 1 (copy of ch 2 "bass" electric bass pick)
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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 · electric bass pick · "bass"
const bass = note(`<
  ~@2 A@2 B C D E F G A@2 B C D E A H I J K I J K L M L@2 N@2 O@2 P Q L@2 P Q L N L R A@2 B C D E A H I J K I J K L M
  L@2 N@2 O@2 P Q L@2 P Q L N L R A S B T U E F V L@2 N@2 O@2 P Q L@2 P Q L N L R A S B T U E F V S
>`.pickRestart({
  A: "e2@3 e2 e2@4", B: "d#2@3 d#2 d#2@4", C: "d#2@3 d#2 ~@2 b1@2, ~ d#2", D: "a1@3 a1 a1@4", E: "a1@3 a1 a1@2 a#1@2",
  F: "b1@3 b1 b1@4", G: "b1@3 b1 b1@2 c#2 d#2", H: "e2@6 e2@2 b1 ~ b1 ~ c#2 ~ d#2 ~",
  I: "e2@4 ~@2 e2 ~ f#2 ~ e2 ~ c#2 ~ b1 ~", J: "a1@4 ~@2 a1 ~ a1 ~ g#1 ~ a1 ~ a#1 ~",
  K: "b1@4 ~@2 b1 ~ b1 ~ c#2 ~ d#2 ~ b1 ~", L: "e2@4 ~@2 e2 ~ e2 ~ e2 ~ c#2 ~ b1 ~",
  M: "e1@3 ~ b1 ~ b1 ~ c#2 ~ c#2 ~ d#2 ~ d#2 ~", N: "b1@4 ~@2 b1 ~ b1 ~ b1 ~ d#2 ~ f#2 ~",
  O: "c#2@4 ~@2 c#2 ~ c#2 ~ c#2 ~ c#2 ~ g#1 ~", P: "a1@4 ~@2 a1 ~ a1 ~ a1 ~ c#2 ~ e2 ~",
  Q: "a1@4 ~@2 a1 ~ a1 ~ a1 ~ b1 ~ a1 ~", R: "e2@4 b1 ~ b1 ~ c#2 ~ c#2 ~ d#2 ~ d#2 ~", S: "e2@3 ~@5", T: "d#2@3 ~@5",
  U: "a1@3 ~@5", V: "b1@3 ~ b1@2 c#2 d#2",
})).s("gm_electric_bass_pick").gain(0.51)

// chords · rock organ · "organ"
const rock_organ = note("<~@26 A@2 B@2 C@2 D@7 E@3 ~@16 A@2 B@2 C@2 D@7 E@3 ~@8 A@2 B@2 C@2 D@7 E@3 ~@9>".pickRestart({
  A: "[[e5,g#5]@27 ~@5, b5]/2", B: "[[d#5,f#5,b5]@27 ~@5]/2", C: "[[c#5,e5,g#5]@27 ~@5]/2",
  D: "[[c#5,a5]@27 ~@5 [g#5,b5]@27 ~@5 [c#5,a5]@27 ~@5 g#5@11 ~@5, e5@107 ~@5]/7", // F#m G#m F#m
  E: "[[d#5,f#5]@11 ~@5 [e5,g#5]@21 ~@3 [d#5,f#5]@5 ~@3, b5@15 ~]/3", // D#m E D#m
})).s("gm_rock_organ").gain(0.31).pan(0.6)

// chords · drawbar organ · "hammond organ"
const drawbar_organ = note(`<
  ~@26 A@2 B@2 C@2 D@7 E@3 ~@16 A@2 B@2 C@2 D@7 E@3 ~@8 A@2 B@2 C@2 D@7 E@3 ~@9
>`.pickRestart({
  A: "[[e6,g#6]@27 ~@5, b6]/2", B: "[[d#6,f#6,b6]@27 ~@5]/2", C: "[[c#6,e6,g#6]@27 ~@5]/2",
  D: "[[c#6,a6]@27 ~@5 [g#6,b6]@27 ~@5 [c#6,a6]@27 ~@5 g#6@11 ~@5, e6@107 ~@5]/7", // F#m G#m F#m
  E: "[[d#6,f#6]@11 ~@5 [e6,g#6]@21 ~@3 [d#6,f#6]@5 ~@3, b6@15 ~]/3", // D#m E D#m
})).s("gm_drawbar_organ").gain(0.26).pan(0.3)

// chords · brass section · "horns"
const brass_section = note(`<
  ~@18 A B C A B C D@2 E@2 F@2 G@2 H@2 E@2 H@2 E F E I ~@8 A B C A B C D@2 E@2 F@2 G@2 H@2 E@2 H@2 E F E I ~@8 E@2 F@2
  G@2 H@2 E@2 H@2 E F E I J K L M N O P Q R
>`.pickRestart({
  A: "[e4,g#4,b4]@11 ~@5", B: "[e4,a4,c#5]@11 ~@5", C: "[f#4,b4,d#5]@11 ~@5",
  D: "[[e4,g#4,b4]@21 ~@3 [f#4,b4,d#5]@5 ~@3]/2", E: "~@4 [e4,g#4,b4] ~@7 [e4,g#4,b4] ~@3",
  F: "~@4 [f#4,b4,d#5] ~@7 [f#4,b4,d#5] ~@3", G: "~@4 [c#4,e4,g#4] ~@7 [c#4,e4,g#4] ~@3",
  H: "~@4 [e4,a4,c#5] ~@7 [e4,a4,c#5] ~@3", I: "~@4 [e4,g#4,b4] ~@7 [f#4,b4,d#5] ~@3", J: "[e5,e6]@3 [b4,b5] [b4,b5]@4",
  K: "~@4 [e5,e6] [d#5,d#6] [e5,e6] [d#5,d#6] [e5,e6]@2 [e5,e6]@2 [f#5,f#6]@2 [e5,e6]@2", // E D# E D# E F# E
  L: "[d#5,d#6]@3 [b4,b5] [b4,b5]@4", // D# B
  M: "~@4 [d#5,d#6] [c#5,c#6] [d#5,d#6] [c#5,c#6] [d#5,d#6]@2 [d#5,d#6]@2 [e5,e6]@2 [b4,b5]@2", // D# C# D# C# D# E B
  N: "[a4,a5]@3 [e4,e5] [e4,e5]@4", // A E
  O: "~@4 [a4,a5] [g#4,g#5] [a4,a5] [g#4,g#5] [a4,a5]@2 [g#4,g#5]@2 [a4,a5]@2 [a#4,a#5]@2", // A G# A G# A G# A A#
  P: "[b4,b5]@3 [f#4,f#5] [f#4,f#5]@4", Q: "~@4 [b4,b5]@2 [c#5,c#6] [d#5,d#6]", R: "[e5,e6]@3 ~@5",
})).s("gm_brass_section").gain(0.51).pan(0.7)

// other · acoustic guitar steel · "lead"
const acoustic_guitar_steel = note("<~@42 A B C@2 D@2 E F@2 G ~@55>".pickRestart({
  A: "~@12 g#4 ~ a4 ~", B: "b4@7 ~ b4@2 ~ a4@3 ~ g#4", C: "[~ g#4@5 f#4 ~ f#4@13 ~ f#4@2 g#4@4 f#4@2 g#4@2]/2",
  D: "[f#4@6 e4 ~ e4@14 c#4 ~ c#4@2 e4@3 ~ e4@2]/2", E: "e4@4 g#4@2 a4 ~ b4@2 ~@3 a4 g#4 ~",
  F: "[a4@2 ~ [g#4,a4]@2 ~@3 g#4@3 f#4@2 ~@2 f#4@2 ~@15, ~@8 f#4 ~@23]/2", G: "~ e4@3 ~@12",
})).s("gm_acoustic_guitar_steel").gain(0.51)

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

// drums · low tom
const low_tom = s("lt").struct("<~@9 A ~@15 A ~@15 A ~@15 A ~@15 A ~@7 A ~@15 A ~@7 A ~>".pickRestart({
  A: "~@7 x",
})).gain(0.46)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 A ~@15 A ~@15 A ~@15 A ~@15 A ~@7 A ~@15 A ~@7 A ~>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.46)

// drums · ride
const ride = s("rd").struct(`<
  ~@2 A@7 B A@15 B A@15 B A@15 B A@15 B A ~ A ~ A ~ A ~ A@15 B A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.46)

// drums · tambourine
const tambourine = s("tb").struct("<~@10 [x!16]!64 ~@8 [x!16]!16 ~@9>").gain(0.2)

stack(
  bass, rock_organ, drawbar_organ, brass_section, acoustic_guitar_steel, snare, low_tom, hihat, mid_tom, ride,
  tambourine
)

More by The Rolling Stones