Strudelify

19th Nervous Breakdown

The Rolling Stones

KeyE majorTempo190 bpm
0:00/0:00
// 19th Nervous Breakdown — The Rolling Stones
// 190 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 189 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 25, guitar program 30.
setcpm(190/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 · rock organ
const rock_organ = note(`<
  ~@3 A B C D@2 E F G@2 H@4 I@2 J@2 K L M N O P Q R S R S T U V@2 ~@2 A B C D@2 E F G@2 H@4 I@2 J@2 K L M N O P Q R S R
  S T U V@2 ~ W X Y Z AA AB AC Z AD AE AF AG AH AI AA AJ B C D@2 E F G@2 H@4 I@2 J@2 K L M N O P Q R S R S T U V@2 ~@7 W
  X Y Z AA AB AC Z AD AE AF AG AH AI AA AJ B C D@2 E F G@2 H@4 I@2 J@2 K L M N O P Q R S R S T U V@2 T U V@2 T U V@2 T U
  V@2 T U V@2 ~@2
>`.pickRestart({
  A: "~@6 b4!2", B: "b4@2 b4 b4@2 g#4@2 g#4", C: "g#4 f#4@2 f#4@2 e4@3",
  D: "[a4@2 g#4@2 a4@2 a4 g#4@3 ~@4 [b4,d5]!2]/2", E: "[b4,d5]@2 [a4,c#5] [a4,c#5]@2 [g#4,b4]@2 [g#4,b4]",
  F: "[g#4,b4]@2 [g#4,b4] [e4,g#4]@2 [e4,g#4]@2 [e4,g#4]", // G#m E
  G: "[[g#4,b4]@2 [g#4,b4]@2 [a4,b4]@2 [b4,c#5] [g#4,b4]@3 ~@3 d5 d5@2]/2", // G#m Asus2 Bsus2 G#m
  H: "[d5@2 c#5 c#5@2 b4@2 b4@2 a4@2 a4@2 g#4@2 g#4@2 f#4@2 f#4@2 e4@2 e4@3 ~@4 [b4,d5]@2]/4", // Bm
  I: "[[b4,d5]@2 [a4,d5] [g#4,b4]@3 [f#4,b4] [f#4,b4]@2 [g#4,b4]@2 [e4,g#4]@3 e4 f#4, ~@7 g#4]/2", // Bm D5 G#m B5 G#m E
  J: "[[g#4,b4]@2 [g#4,b4] [g#4,b4]@2 [a4,c#5]@2 [g#4,b4]@3 ~@3 g#4!2 a4]/2", K: "b4 ~@3", L: "~@6 a4 g#4",
  M: "a4 g#4 e4@2 ~@4", N: "~@4 a4 a4@3", O: "f#4 g#4@3", P: "~@4 [f#4,a4] [f#4,a4]@3", Q: "[f#4,a4] [g#4,b4]@3",
  R: "~@4 [b4,d5] [b4,d5]@3", S: "[b4,d5] [c#5,e5]@3", T: "~@3 [e5,g#5]", U: "[e5,g#5] [d5,f#5]!2 [c#5,e5]",
  V: "[[c#5,e5]@2 [b4,d5] [a4,c#5]@2 [b4,d5]@7 ~@4]/2", W: "d#5", X: "d#5!2", Y: "c#5 ~", Z: "~@3 b4", AA: "e5",
  AB: "e5!2", AC: "d5 ~", AD: "d5!2 d5@2 d5@2 c#5@2", AE: "d5@2 d5 d5@3 ~ d5", AF: "d#5@2 e5 e5@2 d#5 d#5@2",
  AG: "d#5 e5@2 e5@2 d#5@3", AH: "g#5", AI: "f#5", AJ: "d5@6 b4!2",
})).s("gm_rock_organ").gain(0.4).pan(0.6)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  A@4 B C B C B C B C D E D E B C B C F@2 G@2 H I H I J K J K B C B C B C B C B C B C B C D E D E B C B C F@2 G@2 H I H
  I J K J K B C B C L M L M B C B C N@2 O@2 B C B C B C B C B C B C D E D E B C B C F@2 G@2 H I H I J K J K B C B C B C
  P@4 L M L M B C B C N@2 O@2 B C B C B C B C B C B C D E D E B C B C F@2 G@2 H I H I J K J K B C B C B C B C B C B C B
  C B C B C ~@3
>`.pickRestart({
  A: "[~@2 [f#4,a4]@2 [f#4,a4] ~ b3 [e4,g#4]@2 f#4 [f#4,a4]@2 [f#4,a4] ~ b3 ~@2 f#4 [e3,f#4,a4]@2 [f#4,a4] ~ b3 ~ e2 f#4 ~ e3 [f#4,a4] ~ e3@2, b3@6 ~ b3@7 ~ b3@7 ~ b3@7 ~@2, ~@5 [e4,g#4]@2 ~@6 [e4,g#4]@2 [e4,g#4]@2 ~@4 [e4,g#4]@2 [e4,g#4]@2 ~ [f#4,a4]@2 ~ [e4,g#4]@3, ~@16 e2@2 ~@2 b2@2 e3@2 ~ e3@2 ~ b2@2 ~@2]/4", // F#m E F#m F#m7 F#m E F#m E
  B: "e2 e3 b2 e3", C: "e2 e3@2 e3 b2@2 e3@2", D: "a2 a3 e3 c#3", E: "a2 a3@2 a3 e3@2 c#3@2",
  F: "[~@2 [c#4,e4]@2 [c#4,e4] ~@2 b2 ~@4 [c#4,e4] [b3,d#4]@3, b2@7 ~ b2@8, ~@5 [b3,d#4]@2 [b3,d#4]@3 [c#4,e4]@2 ~@4, ~@6 f#3@3 f#3@2 f#3@5]/2", // C#m B C#m
  G: "a2/2", H: "~@2 [b3,e4,g#4]@3 [b3,e4,g#4]!3", I: "b3@2 [b3,e4,g#4]@3 [b3,e4,g#4]!3",
  J: "~@2 [c#4,e4,a4]@3 [e4,a4] [c#4,e4] [e4,a4]", K: "[a3,c#4] [c#4,e4] [e4,a4] [c#4,e4] [a3,c#4] [c#4,e4] [e4,a4]@2",
  L: "b2 b3 f#3 b3", M: "b2 b3@2 b3 f#3@2 b3@2",
  N: "[~@2 [b3,d4]@2 [b3,d4] ~@5 [b3,d4]@2 [b3,d4] [a3,c#4]@3, e3@6 e3@3 e3@7, ~@5 [a3,c#4]@2 [a3,c#4]@3 ~@6]/2", // Bm A
  O: "[~@2 [c#4,e4]@2 [c#4,e4] ~@5 [c#4,e4]@2 [c#4,e4] [b3,d#4]@3, f#3@6 f#3@3 f#3@7, ~@5 [b3,d#4]@2 [b3,d#4]@3 ~@6]/2", // C#m B
  P: "[e2@2 [e3,f#4,a4]@2 [f#4,a4] ~ b3 ~ e2 f#4 ~ e3 [f#4,a4] ~ b3 ~@2 f#4 [e3,f#4,a4]@2 [f#4,a4] ~ b3 ~ e2 f#4 ~ e3 [f#4,a4] ~ e3@2, b3@6 ~ b3@7 ~ b3@7 ~ b3@7 ~@2, ~@4 b2@2 e3@2 ~ e3@2 ~ b2@2 e3@2 e2@2 ~@2 b2@2 e3@2 ~ e3@2 ~ b2@2 ~@2, ~@5 [e4,g#4]@2 [e4,g#4]@2 ~ [f#4,a4]@2 ~ [e4,g#4]@2 [e4,g#4]@2 ~@4 [e4,g#4]@2 [e4,g#4]@2 ~ [f#4,a4]@2 ~ [e4,g#4]@3]/4", // F#m7 F#m F#m7 F#m E F#m E F#m …
})).s("gm_electric_guitar_muted").gain(0.44)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  A@4 B@3 C B@3 D E@4 B F@3 G@2 H I J K J K L M L M C N O P Q R B@3 C B@3 D E@4 B F@3 G@2 H I J K J K L M L M C N O P S
  T U T V W X Y Z@2 AA@2 C AB AC AD B@3 C B@3 D E@4 B F@3 G@2 H I J K J K L M L M C N O ~@3 A@4 S T U T V W X Y Z@2 AA@2
  C AB AC AD B@3 C B@3 D E@4 B F@3 G@2 H I J K J K L M L M C N O P C N O P C N O P C N O P C N ~@3
>`.pickRestart({
  A: "[~@2 [f#4,a4]@2 [f#4,a4] ~ b3 [e4,g#4]@2 f#4 [f#4,a4]@2 [f#4,a4] ~ b3 [e4,g#4]@2 f#4 [f#4,a4]@2 [f#4,a4] ~ b3 [e4,g#4]@2 f#4 [f#4,a4]@2 [f#4,a4] [e4,g#4]@3, b3@6 ~ b3@7 ~ b3@7 ~ b3@7 ~@2, ~@5 [e4,g#4]@2 ~@6 [e4,g#4]@2 ~@6 [e4,g#4]@2 ~@9]/4", // F#m E F#m E F#m E F#m E
  B: "~@2 [b3,e4,g#4]@2 ~ [b3,e4,g#4]@3", C: "~ [b3,e4,g#4]!3", D: "~ [b3,e4,g#4] [b3,e4,g#4]@4 [b3,e4,g#4]@2",
  E: "~@2 [a3,c#4,e4,a4]@2 ~ [a3,c#4,e4,a4]@3", F: "~@2 [b3,e4,g#4] ~@5",
  G: "[~@2 [c#4,e4]@2 [c#4,e4] ~@7 [c#4,e4] [b3,d#4]@3, ~@5 [b3,d#4]@2 [b3,d#4]@3 [c#4,e4]@2 ~@4, ~@6 f#3@3 f#3@2 f#3@5]/2", // C#m B C#m
  H: "~@4 b3 c#4 e4@2", I: "d4", J: "~@2 [b3,e4,g#4]@3 [b3,e4,g#4]!3", K: "b3@2 [b3,e4,g#4]@3 [b3,e4,g#4]!3",
  L: "~@2 [c#4,e4,a4]@3 [e4,a4] [c#4,e4] [e4,a4]", M: "[a3,c#4] [c#4,e4] [e4,a4] [c#4,e4] [a3,c#4] [c#4,e4] [e4,a4]@2",
  N: "[b3,e4,g#4]!3 [b3,e4,g#4]@2 [b3,e4,g#4] [b3,e4,g#4]@2", O: "~@2 [b3,e4,g#4]@2 ~ [b3,e4,g#4]@2 [e4,g#4]",
  P: "b3 [b3,e4] [e4,g#4] b3 [b3,e4] [e4,g#4]@2 [b3,e4]", Q: "b3@2 [b3,e4,g#4]@2 ~ [b3,e4,g#4]@2 [b3,e4,g#4]",
  R: "~ [b3,e4,g#4] ~ [b3,e4,g#4]", S: "b3@2 [b3,d#4,f#4]!4 [b3,d#4,f#4]@2", T: "[b3,d#4,f#4]!8", U: "[b3,d#4,f#4]!4",
  V: "[b3,e4] [b3,e4,g#4,b4]!3", W: "[b3,e4,g#4,b4]!8", X: "b3@2 [e4,g#4,b4] a4 g#4@2 [e4,g#4,b4]@2",
  Y: "~ [g#4,c#5] ~ [g#4,b4] [e4,g#4] ~ [b3,e4] ~", // C#5 G#m E E5
  Z: "[~@2 [b3,d4]@2 [b3,d4] ~@5 [b3,d4]@2 [b3,d4] [a3,c#4]@3, e3@6 e3@3 e3@7, ~@5 [a3,c#4]@2 [a3,c#4]@3 ~@6]/2", // Bm A
  AA: "[~@2 [c#4,e4]@2 [c#4,e4] ~@5 [c#4,e4]@2 [c#4,e4] [b3,d#4]@3, f#3@6 f#3@3 f#3@7, ~@5 [b3,d#4]@2 [b3,d#4]@3 ~@6]/2", // C#m B
  AB: "~ e4@2 [b3,e4] b3@2 [b3,e4,g#4]!2", AC: "~@2 [b3,e4,g#4]@3 [b3,e4,g#4]@3",
  AD: "~ e4@2 [b3,e4] [b3,e4]@2 [b3,e4,g#4]@2", // E5 E
})).s("gm_electric_guitar_jazz").gain(0.4).pan(0.3)

// bass · electric bass finger
const bass = note(`<
  ~@4 A B A C A D A D E F E F A D A D G@2 H@2 A D A D E F E F A D A D A D A B A C A D A D E F E F A D A D G@2 H@2 A D A
  D E F E F A D A D I@4 J@4 K@4 J@4 A C A B A D A D E F E F A D A D G@2 H@2 A D A D E F E F A D A J ~@6 I@4 J@4 K@4 J@4
  A C A B A D A D E F E F A D A D G@2 H@2 A D A D E F E F A D A D A D A D A D A D A D A D A D ~@3
>`.pickRestart({
  A: "e1 e2!2 d2", B: "e1@4 e2@2 f#1 ~ g#1@2 b1@2 e1@4", C: "e1@4 e2@2 f#1 ~ g#1@2 b1 ~ e1@4",
  D: "e1@4 e2@2 f#1 ~ g#1@4 b1@4", E: "a1 a2!2 g2", F: "a1@6 b1 ~ c#2@4 a1@4", G: "[b1!2 b1@14]/2", H: "a1/2",
  I: "b1!4", J: "e1!4", K: "e1/4",
})).s("gm_electric_bass_finger").gain(0.4).pan(0.4)

// bass · fretless bass
const bass_2 = note("<~@170 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B C>".pickRestart({
  A: "e2!4 d#2!4 d2!4 c#2!4", B: "b1!4 a1!4 g#1!4 f#1!4", C: "e1",
})).s("gm_fretless_bass").gain(0.48).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@16 ~@2 B ~ A@13 C A@16 ~@2 B ~ A@17 D@2 A B ~ B ~ A@20 ~@2 B ~ A@11 B ~@6 A@5 D@2 A B ~ B ~ A@20 ~@2 B ~ A@28 ~
>`.pickRestart({
  A: "x!2", B: "x", C: "x!4", D: "x ~@7 x ~@6 x",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@81
  [~@7 x!2 ~@2 x!2 ~@2 x]
  ~@35
  [~@7 x!2 ~@2 x!2 ~@3]
  ~@17
  [~@7 x!2 ~@2 x!2 ~@2 x]
  ~@53
>`).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@23 A ~@33 A ~@47 A ~@53 A ~@29>".pickRestart({
  A: "~ x ~ x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 A ~@13 B ~@19 A ~@15 C ~@7 D ~@23 A ~@17 E ~@3 C ~@7 D ~@23 A ~@29>".pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@2 x!2 ~@2 x", B: "~@3 x ~@3 x ~@3 x ~@3 x", C: "~@11 x!2 ~@2 x", D: "~@3 x!2 ~@11",
  E: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@3 A ~@75 B C D ~@51 B C D ~@53>".pickRestart({
  A: "~@8 x!2 ~ x!3 ~ x", B: "~@11 x!2 ~@3", C: "~@15 x", D: "x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@17 A ~ A ~ A ~ A ~ A ~@7 A ~@17 A ~ A ~ A ~ A ~ A ~@9 A@3 ~ A ~@3 A ~@3 A ~@17 A ~ A ~ A ~ A ~ A ~@4 B ~@10
  A@3 ~ A ~@3 A ~@3 A ~@17 A ~ A ~ A ~ A ~ A ~@21 A
>`.pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.4)

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

stack(
  rock_organ, electric_guitar_muted, electric_guitar_jazz, bass, bass_2, kick, snare, low_tom, hihat, mid_tom, high_tom,
  crash, ride
)

More by The Rolling Stones