Strudelify

Helter Skelter

Aerosmith

KeyE majorTempo84 bpm
0:00/0:00
// Helter Skelter — Aerosmith
// 84 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 13 "Bass Drive" named as a bass, played on electric bass finger (its lead 5 charang patch is not one)
// note: duplicate parts dropped: ch 13 "Bass Drive" electric bass finger (copy of ch 4 "Bass" electric bass pick)
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 31.
setcpm(84/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 · overdriven guitar · "Rhy. Gt. 1"
const overdriven_guitar = note(`<
  A B@2 C D E F G@5 E H G I G I J G@6 E H G I G I J G@2 I G I J B C D E G@5 E H G I G I J G@8 K@2 L G@9 ~ M G@12 N
>`.pickRestart({
  A: "~@7 [g#4,b4]", B: "[d4,e4]!16", C: "[c#4,e4]!16", D: "[c4,e4]!16", E: "[g2,b2,d3,g3,b3,g4]!8",
  F: "[e2,b2,e3,g#3,d4,e4]@2 [e2,b2,e3,g#3,d4,e4]@2 ~@3 [g#3,d4,e4] [e2,b2,e3,g#3,d4,e4]@2 [e2,b2,e3,g#3,d4,e4]@2 ~@3 [g#3,d4,e4], ~@2 [e2,b2,e3,g#3,d4,e4] [e2,b2,e3] ~@2 [e2,b2,e3,g#3,d4,e4] [e2,b2,e3], ~@5 [g#3,d4,e4]@2 ~@6 [g#3,d4,e4]@2 ~", // E7 E5 E7 E5 E7
  G: "[e2,b2,e3,g#3,d4,e4]!8", H: "[a2,e3,a3,c#4,e4]@15 ~", I: "[a2,e3,a3,c#4,e4]!8", J: "[e2,b2,e3,g#3,d4,e4]",
  K: "[e2@5 [e2,b2,e3,g#3,d4,e4]@3]/2", L: "e5@6 e2!2", M: "~ [e2,b2,e3,g#3,d4,e4]!7",
  N: "~@8 [e2,b2,e3,g#3,d4,e4]@3 ~@5", // E7
})).s("gm_overdriven_guitar").gain(0.19).pan(0.3)

// chords · overdriven guitar · "Lead Gt."
const overdriven_guitar_2 = note(`<
  ~@15 A B A C D@2 ~@7 A B A D@2 E F G H I ~@6 J K ~@4 A B A D@2 L@7 M@2 ~@25
>`.pickRestart({
  A: "[a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,f#3] ~ g3 f#3 e3 d3 c#3 b2 a2@2", // A5 D
  B: "[e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,c#3]!2 d3 c#3 b2 a2 g2 f#2 e2@2", C: "~ f4 f4@6 g#4@8, e2@15 ~", D: "e2/2",
  E: "~@4 [e4,b4]@2 ~ [e4,b4] ~@8", F: "g5@4 ~@9 g5@3", G: "g5@4 ~@4 g5@3 c5@3 a4 e5", H: "~@8 c5@3 g5@3 c5@2", I: "a4",
  J: "e5@3 g5 e5!2 d5 e5 c5@2 e4 a#4!2 a4 g4@2", K: "e4@2 e4@4 e4 g4 ~@8",
  L: "[e2@6 ~@2 d3 c#3 b2 a2 g#2 f#2 e2@8 ~@2 d3 c#3 b2 a2 g#2 f#2 e2@8 ~@2 d3 c#3 b2 a2 g#2 f#2 ~@2 b3@6 ~@2 d3 c#3 b2 a2 g#2 f#2 ~@4 a2@6 d3 c#3 b2 a2 g#2 f#2 e2@8 ~@2 d3 c#3 b2 a2 g#2 f#2 e2@8 ~@2 d3 c#3 b2 a2 g#2 f#2 e2@2, ~@23 e2@4 g3@3 d#3@3 ~@23, ~@62 e2@8 ~@2 f2@7 ~@33]/7",
  M: "[e2 [g4,c#5]@3]/2", // Gdim
})).s("gm_overdriven_guitar").gain(0.4).pan(0.9)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@2 A@3 B C D E F G H I J K L M L N O P Q R S T U V W L M L N X Y Z AA AB AC A@3 B AD Q R S T U V W L M L N AE P@2
  AF@5 AG@2 AH AI AJ AK P AL@3 AM AN ~ AO AP@5 AQ AR AS AT AU N@2 ~
>`.pickRestart({
  A: "e3!6 e3@2 e2!6 e2@2", B: "g1@2 g1@2 g1@2 g1@2 g1@2 g1 f#1 g1 a1 b1 d2", C: "e2!8", D: "e2!14 e2@2",
  E: "e2@2 e2!2 e2@2 e2!2 e2@2 e2!4 e2@2", F: "e2@2 e2!2 d2 e2 e2@2 e2!4 e2@2 e2!2", G: "e2!4 e2@2 e2!8 e2@2",
  H: "e2@2 e2!2 e2@2 e2!2 d2@2 e2!4 d2@2", I: "c2@2 c2@2 c2@2 c2!2 c2@2 c2@2 c2@2 c2@2", J: "d2 ~@7", K: "d2@2 e2!14",
  L: "a1@2 a1@2 a1@2 a1@2 g#2 f#2 e2 d#2 c#2 b1 a1@2", M: "e1@2 e1@2 e1@2 e1@2 d2 c#2 b1 a1 g#1 f#1 e1@2", N: "e1",
  O: "e2!12 d2@2 d2@2", P: "e2!8 d2@2 d2@2 d2@2 d2@2", Q: "e2@2 e2!2 e2@2 e2@2 e2!6 e2@2",
  R: "d2@2 e2!2 d2@2 e2!2 d2@2 d2@2 d2@2 d2@2", S: "e2@2 e2@2 e2@2 e2!8 e2@2", T: "d2@2 e2!6 d2@2 e2!4 d2@2", U: "g1!8",
  V: "a1 ~@7", W: "d2@2 e2!12 d2@2", X: "e3!12 e3@2 b2@2", Y: "d2@2 e2!6 d2@3 c#2@3 g#1@2",
  Z: "a1@2 a1@2 a1!2 a1@2 a1@2 a1@2 a1@2 a1@2", AA: "e2!2 e2@2 e2@2 e2@2 e2!5 d2 b1@2", AB: "a1!8", AC: "d2",
  AD: "e2@2 e2@2 e2!3 d2 d2@2 d2@2 d2@2 d2@2", AE: "e2!16", AF: "e2!8 a1@2 d2@2 a1@2 d2@2", AG: "e1/2",
  AH: "e1@8 d3 e1@7", AI: "e2!8 d2@2 e2!2 e2@2 d2@2", AJ: "e2!4 e2@2 e2!2 d2@2 d2@2 d2@2 d2@2",
  AK: "a1@2 d2@2 a1@2 d2@2 e2!4 d2 e2 e2@2", AL: "e2!5 g#2 a2!2 b2 d3 e3!2 e2@2 d2@2", AM: "e2!7 g#2 b2 d3@3 e3@4",
  AN: "e2!7 g#2 b2 d3 e3@2 e3@2 e3@2", AO: "~ e2!7 d2@2 g2 a2 b2 d3@3", AP: "e2!8 d2@2 g2 a2 b2 d3@3",
  AQ: "e2!5 g#2 a2!2 e2 c#2@2 b1@2 a1 g#1@2", AR: "f#1 e1@2 f#1 e1@2 f#1 e1@2 f#1 e1@2 f#1@2 ~@2", AS: "d2!4",
  AT: "e2!2 ~ e2!3 ~ e2!3 ~ e2 e2@2 e2@2", AU: "e1@2 d3 a2",
})).s("gm_electric_bass_pick").gain(0.44).pan(0)

// chords · guitar harmonics
const guitar_harmonics = note("<~@37 a6 ~@51>").s("gm_guitar_harmonics").gain(0.4)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@5 A@8 ~ A@4 ~ A@7 ~ A@4 ~ A@6 ~@5 A@5 ~ A@4 ~ A@8 ~@3 A@7 ~@4 A@6 ~@7
>`.pickRestart({
  A: "x",
})).gain(0.18)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B@2 C@4 D C@2 E F C@4 G C H C I C J@2 K C@4 G C@2 L C@2 M C ~ B N C@2 I C J@2 K C@4 G C@3 O C P C@2 Q R S C@5 T
  I U C ~ C@5 T I V W X Y Z AA ~
>`.pickRestart({
  A: "~@12 x!4", B: "x!16", C: "~ x ~ x", D: "~@4 x ~@3 x!2 ~@2 x ~@3", E: "~@4 x ~@7 x!2 ~@2", F: "~@8 x!2 ~ x ~@4",
  G: "~@8 x!2 ~ x ~ x ~ x", H: "~@4 x ~@3 x!2 ~ x ~@4", I: "~@4 x ~@7 x!4", J: "~@4 x ~@3 x!2 ~ x!2 ~ x!2",
  K: "~@10 x!2 ~ x!3", L: "~@4 x ~@6 x ~@4", M: "~@8 x ~@2 x ~ x!3", N: "~@2 x ~@3 x!2", O: "~@4 x ~@6 x ~ x!3",
  P: "~@4 x ~@3 x ~@2 x ~@4", Q: "~ x ~@2", R: "x!4 ~@10 x!2", S: "x ~ x ~ x ~ x!4 ~ x ~@4", T: "~@4 x ~@3 x!8",
  U: "x!8 ~@4 x ~@3", V: "~@2 x!2 ~@2 x!2 ~@8", W: "~@2 x ~@2 x ~ x ~@3 x ~@3 x", X: "~@3 x ~@2 x ~ x!2 ~ x!5",
  Y: "~@2 x ~@3 x ~ x!2 ~ x!5", Z: "~@3 x!13", AA: "x!8 ~@8",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@9 A ~@2 B C ~@6 D ~@13 E ~@5 F ~@18 G ~@4 D ~@17 H I ~@5>".pickRestart({
  A: "~@11 x ~ x ~ x", B: "~@15 x", C: "~@13 x ~ x", D: "~@12 x!4", E: "~@8 x!3 ~ x!2 ~@2", F: "x!16",
  G: "~@9 x ~@2 x!4", H: "~@11 x!3 ~@2", I: "~@8 x!3 ~ x!3 ~",
})).gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[x ~ x ~ x!4] [x!8] [x!6 ~@2] ~@86>").gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@2 A B@2 ~@4 C ~@2 D C ~@4 C ~@3 E ~ F@2 G ~@4 C ~@2 H ~@2 I ~@3 J ~@2 E ~ F@2 G ~@4 C ~@3 K ~@3 L ~ M ~@18 N O ~@5
>`.pickRestart({
  A: "~@12 x!4", B: "x!16", C: "~@6 x!2", D: "~@7 x", E: "~@8 x ~ x ~ x!4", F: "~@12 x!2 ~@2", G: "~@2 x!2",
  H: "~@14 x!2", I: "~@9 x ~@2 x ~@3", J: "~@13 x ~ x", K: "~@8 x!3 ~ x ~@3", L: "x!2 ~ x!2 ~ x ~ x ~ x!3 ~ x ~",
  M: "~@7 x!2 ~ x ~@5", N: "~@8 x!2 ~@4 x!2", O: "~@3 x ~@4",
})).gain(0.48)

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

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

stack(
  overdriven_guitar, overdriven_guitar_2, bass, guitar_harmonics, kick, kick_soft, snare, low_tom, pedal_hat, mid_tom,
  open_hat, crash
)

More by Aerosmith