Strudelify
Crazy cover art

1993 · Get A Grip

Crazy

Aerosmith

KeyA majorTempo90 bpm
0:00/0:00
// Crazy — Aerosmith
// 90 bpm, 6/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (6/4 at bar 1, 3/4 at bar 51, 6/4 at bar 52) are rendered on a constant 6/4 grid of one bar per cycle
// note: Full arrangement: all 73 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/6)

// 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 · electric guitar clean · "Guitar 2"
const electric_guitar_clean = note(`<
  ~@4 A B C D E F E G H I J K A L M N O ~@4 P Q P R S L A T U V W X Y A Z U AA A AB AC AD A AE AF ~ AG AH AI AJ AI AK
  ~@3 AL AM AN AO AP AQ AR AS AT AU AV AW ~@2
>`.pickRestart({
  A: "~@6 [c#5,e5,a5] ~@11 [a4,c#5,f#5] ~@5", B: "~@5 e5 [c#5,f#5,a5] ~@13 e4 f#4 [a4,d5] ~, ~@9 [f#4,a4,d5]@2 ~",
  C: "[e4,a4,c#5]@4 ~@2 [e5,a5] ~@11 [a4,c#5,f#5] ~@5", D: "~@5 e5 [c#5,f#5,a5] ~@11 [a4,d5] ~ e4 f#4 [a4,d5] ~",
  E: "e3 ~ [b4,e5]@3 ~ g#3 ~ [b3,e4] f#3 g#3 ~ f#3 ~ e4 f#4 [a4,c#5] [b4,d#5] [c#5,e5] ~ [b4,d5] [a4,c#5] f#4 ~", // E5 A B C#m Bm A
  F: "[g4,d5] ~ d5 ~ b5@3 ~ b5 ~ d5 ~ [a5,f#6] ~ f#6 ~ a5 ~ f#6 ~ a5 ~ f#6 ~", // G5 D
  G: "[g4,d5] ~ d5 ~ b5@3 ~ b5 ~ d5 ~ a5 ~ f#6 ~ a5 ~ b5 ~ g#6 ~ e6 ~", // G5
  H: "~@6 [c#5,e5,a5]@4 ~@10 c#5@2 f#5 ~, ~@18 a4@5 ~", I: "d4@5 d4 d5 ~ a4 ~ f#4 ~ [d5,f5,a5]@4 ~@2 [d5,f5,a5]@4 ~@2",
  J: "~@6 a5@4 ~@10 c#5@2 f#5 ~, ~@9 a4@2 ~",
  K: "d4@4 ~@2 d4@4 ~@2 [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~", // E5
  L: "~@6 [d4,a4,d5] ~@11 [d5,f5,a5] ~@5", M: "~@3 [b3,f#4,b4]@2 ~ [e4,b4,e5]@4 ~@2",
  N: "[c#4,g#4,c#5]@4 ~@2 [g#5,c#6] ~@5 f#4 ~ c#5 ~ f#5 ~ e4 ~ b4 ~ e5 ~", O: "[d4,a4,d5]@8 ~@14 [d5,f5,a5] ~",
  P: "e3 ~ b3 ~ e4 g4 [g#4,b4] ~ e4 ~ b3 ~ f#3 ~ c#4 ~ f#4 b4 [c#5,e5] ~ b4 ~ a4 ~", // G#m C#m
  Q: "[g4,d5]@4 ~@2 [g4,d5]@3 ~ [g4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5]@3 ~ [a4,d5] ~", // G5 D5
  R: "[g4,d5]@4 ~@2 [d4,g4,d5] ~ [d4,g4,d5] ~ [d4,g4,d5] ~ f#5 ~ d5 ~ a4 ~ g#5 ~ e5 ~ b4 ~", // G5
  S: "b5@3 ~ c#6 ~ [e6,a6]@3 ~@9 [a5,c#6,f#6] ~@5", // A5 F#m
  T: "d4@6 [d4,a4,d5]@5 ~ [e3,e4]@2 [e3,e4]@2 [e3,e4,b4] ~ [e3,e4,b4,e5] ~ [e3,e4,b4,e5] ~ [e3,e4,b4,e5] ~", // D5 E E5
  U: "~@3 [c#5,e5,a5]@2 ~@4 [a4,c#5,f#5]@2 ~", // A F#m
  V: "d4@4 ~@2 [a4,d5,f#5] ~ d5 ~ f#5 ~@7 f#5@5 ~, ~@12 d4@11 ~, ~@14 a4@9 ~, ~@16 d5@7 ~", W: "~@3 b5@2 ~@4 g#5@2 ~",
  X: "~@3 [g#5,c#6]@2 ~ [f#4,c#5,f#5]@2 ~ [e4,b4,e5]@2 ~", // C#5 F#5 E5
  Y: "[d4,a4,d5]@8 ~@8 a5@7 ~, ~@12 d4@11 ~, ~@13 a4@10 ~, ~@14 d5@9 ~, ~@15 f5@8 ~", // D5
  Z: "d4 ~ a4 ~ f#4 ~ [a4,d5] ~ d4 ~ [a4,d5] ~ [e4,c#5,e5]@3 ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~", // D5 C#m E5
  AA: "~@6 [d4,a4,d5]@4 ~@4 f5@4 ~@2 e5 ~ d5 ~", // D5
  AB: "~@6 [d4,a4,d5]@4 ~@2 b4 ~ [b4,g#5] ~ b4 ~ [b4,g#5] ~ b4 ~ [b4,g#5] ~", // D5 E
  AC: "b4@3 ~ c#5 ~ [e5,a5] ~@11 [a4,c#5,f#5] ~@5", AD: "~@6 [d4,a4,d5] ~@7 [a4,d5,f5]@3 ~ [a4,d5,f5]@4 ~@2",
  AE: "~@6 [d4,a4,e5]@3 ~ [d4,a4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~", // Dsus2 E5
  AF: "[f#4,c#5,f#5] ~@5", AG: "a5!24", AH: "a5!4 ~@8 [a3,e4,a4]@4 ~@2 [e5,a5]@5 ~",
  AI: "~@3 [a4,c#5,f#5]@2 ~@4 [d4,a4,d5]@2 ~", // F#m D5
  AJ: "~@5 e5 [d5,f5,a5] e5 [d5,f5,a5] e5 [d5,f5,a5] ~@7 [c#5,e5,a5]@4 ~@2", // Dm A
  AK: "[e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ g#5 ~ b5 ~ c#6 ~@13", AL: "~@18 [c#5,e5,a5]@3 ~ [c#5,e5,a5] ~",
  AM: "~@6 [a4,c#5,f#5]@3 ~ [a4,c#5,f#5] ~ d4@4 ~@2 [a4,d5]@3 ~ [a4,d5] ~", // F#m D5
  AN: "d4 ~ [a4,d5]@3 e5 f5 ~ e5 ~ d5 ~@7 [c#5,e5,a5]@4 ~@2", // D5 A
  AO: "~@6 [a4,c#5,f#5]@3 ~ [a4,c#5,f#5] ~ [d4,a4]@4 ~@2 [a4,d5]@4 ~@2", // F#m D5
  AP: "[e4,b4,e5]!6 g#5 e6 a5 f#6 b5 g#6 ~@6 [c#5,e5,a5]@3 ~ [c#5,e5,a5] ~", // E5 A
  AQ: "~@6 [a4,c#5,f#5]@3 ~@9 [d4,a4,d5]@4 ~@2", AR: "~@5 e5 [d5,f5,a5] ~ [d5,f5,a5]!2 ~@2 [c#6,e6]@4 ~@2 a6@4 ~@2",
  AS: "~@6 [a5,c#6,f#6]@4 ~@6 f#5 ~ [a5,d6]@4 ~@2", AT: "g#5 ~ e6 ~ a5 ~ e6 ~ b5 ~ e6 ~ b5@3 ~ c#6 ~ [e6,a6]@4 ~@2",
  AU: "~@3 [a5,c#6,f#6]@2 ~@4 [f#5,a5,d6]@2 ~", AV: "~@2 f5 a5 d6 a5 f#5 ~ [c6,d6]@2 ~ d6 ~@4 [c#5,e5,a5]@4 ~@4",
  AW: "~@6 [a4,c#5,f#5]@3 ~ [a4,c#5,f#5] ~@13", // F#m
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.8)

// chords · electric guitar clean · "Guitar 2" · soft notes
const electric_guitar_clean_2 = note("<A B A C ~@17 D E D E ~@48>".pickRestart({
  A: "~@6 [c#5,e5,a5] ~@11 [a4,c#5,f#5] ~@5", B: "~@6 [a4,d5,f#5] ~@10 e5 [d5,f5,a5]@4 ~@2",
  C: "~@6 [a4,d5,f#5] ~@10 e5 [f5,a5,d6]@4 ~@2", // D Dm
  D: "a3 ~ e4 ~ a4 b4 [c#5,e5] ~ b4 ~ a4 ~ a3 ~ c#4 ~ f#4 b4 [c#5,e5] ~ b4 ~ a4 ~", // C#m
  E: "d4 ~ a4 ~ d5 e5 f#5 ~ e5 ~ a4 ~ d4 ~ a4 ~ d5 e5 f5 ~ e5 ~ d5 ~",
})).s("gm_electric_guitar_clean").gain(0.1).pan(0.8)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B A B C D E D F G F H A B A I A B J K B A B A B F G F G A L M L A L J K N O P A B A P A B A P ~@3 Q D I D R D I D S
  D I D T D I D T D I U@2 ~
>`.pickRestart({
  A: "a2@9 ~ a2 ~ f#2@8 ~@2 f#2 ~", B: "d2@8 ~@2 d2 ~ d2@8 ~@2 d2 ~", C: "a2@8 ~@2 a2 ~ d2@8 ~@2 d2 ~",
  D: "f#2@8 ~@2 f#2 ~ d2@8 ~@2 d2 ~", E: "a2@9 ~ a2 ~ d2@8 ~@2 d2 ~", F: "e2@8 ~@2 e2 ~ f#2@8 ~@2 f#2 ~",
  G: "g2@8 ~@2 g2 ~ d2@8 ~@2 d2 ~", H: "g2@8 ~@2 g2 ~ d2@4 ~@2 e2@4 ~@2", I: "d2@8 ~@2 d2 ~ a2@9 ~ a2 ~",
  J: "b2@8 ~@2 b2 ~ e2@8 ~@2 e2 ~", K: "c#2@8 ~@2 c#2 ~ f#2@4 ~@2 e2@4 ~@2", L: "d2@8 ~@2 d2 ~ d2@9 ~ d2 ~",
  M: "a2@9 ~ a2 ~ f#2@8 ~@4", N: "d2@8 ~@2 d2 ~ d2@9 ~@3", O: "a2@8 ~@2 a2 ~ f#2@8 ~@2 f#2 ~",
  P: "d2@8 ~@2 d2 ~ e2@8 ~@2 e2 ~", Q: "~@12 a2@9 ~ a2 ~", R: "a2@9 ~@3 a2@9 ~ a2 ~", S: "e2@9 ~@3 a2@9 ~ a2 ~",
  T: "e2@8 ~@4 a2@9 ~ a2 ~", U: "[f#2@8 ~@2 f#2 ~ a2@17 ~@19]/2",
})).s("gm_electric_bass_finger").gain(0.26).pan(0.8)

// chords · piano · C#m E5 C#m E5 D5 A5 F#m D5 …
const piano = note(`<
  [[c#5,e5]@5 ~@3 [b4,e5] ~ a4 ~ [c#5,e5]@5 ~@3 [b4,e5] ~ a4 ~]
  [[a4,d5]@5 ~@3 [e4,a4] ~ [f#4,a4] ~ f4@4 [a4,d5]@4 f4 ~ a4 ~, ~@4 d4 ~@3]
  [[c#5,e5]@5 ~@3 [b4,e5] ~ a4 ~ [c#5,e5]@5 ~@3 [b4,e5] ~ a4 ~]
  [[a4,d5]@5 ~@3 a4 ~ f#4 ~ f4@4 [a4,d5]@5 ~@3]
  ~@69
>`).s("gm_piano").gain(0.1)

// chords · synth strings 1 · "Chord Changes"
const synth_strings_1 = note(`<
  A B A B C D C D E F E G A B A H A B I J K A B ~@17 A B A L A B A L ~@3 M D N D O D N D P D N D P D P D N D P Q@2 ~
>`.pickRestart({
  A: "[e4,a4,c#5,e5]@5 ~@7 [a4,c#5,f#5]@5 ~@7", B: "[d4,a4,d5,f#5]@5 ~@7 [a4,d5,f5]@7 ~@5, ~@12 d4@5 ~@7",
  C: "[e4,a4,c#5,e5]@5 ~@7 [d4,a4,d5,f#5]@5 ~@7", D: "[a4,c#5,f#5]@5 ~@7 [d4,a4,d5,f#5]@5 ~@7",
  E: "[e4,b4,e5,g5]@5 ~@7 [f#4,a4,c#5,f#5]@5 ~@7", F: "[d4,g4,b4,g5]@5 ~@7 [d4,a4,d5,f#5]@5 ~@7",
  G: "[d4,g4,b4,g5]@5 ~@7 [d4,a4,d5,f#5]@4 ~@2 [e4,a4,c#5,e5,a5]@4 ~@2", H: "[d4,a4,d5,f#5]@5 ~@7 [e4,a4,c#5,e5]@5 ~@7",
  I: "[b4,d5,f#5]@5 ~@7 [e4,b4,e5,g#5]@5 ~@7", J: "[c#4,g#4,c#5,f5]@5 ~@7 [a4,c#5,f#5,a5]@4 ~@2 [e4,b4,e5,g#5]@4 ~@2",
  K: "[d4,a4,d5,f#5]@5 ~@7 [d4,a4,d5,f5]@5 ~@7", L: "[d4,a4,d5]@5 ~@7 [b4,e5,g#5]@5 ~@7",
  M: "~@12 [e4,a4,c#5,e5]@5 ~@7", N: "[a4,d5,f5]@7 ~@5 [e4,a4,c#5,e5]@5 ~@7, d4@5 ~@19",
  O: "[e4,a4,c#5,e5]@5 ~@7 [e4,a4,c#5,e5]@5 ~@7", P: "[e4,g#4,b4,e5]@5 ~@7 [e4,a4,c#5,e5]@5 ~@7",
  Q: "[[a4,c#5,f#5]@5 ~@7 [e4,a4,c#5,e5]@35 ~]/2", // F#m A
})).s("gm_synth_strings_1").gain(0.05).pan(0.2)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note("<~@21 A B C D E F G H I J K L M N ~@13 O P Q R S T U V ~@17>".pickRestart({
  A: "~@6 [c#6,e6,a6] ~@11 [a5,c#6,f#6] ~@5", // A F#m
  B: "~@6 f#6 ~ [f#5,c#6] ~@3 d5@3 ~ e5 f#5 [a5,d6] [b5,e6] [c6,e6] b5 a5 b5", // F#5 D5 E5 C
  C: "a5@4 ~@2 [c#6,e6,a6] ~@11 [a5,d6,f#6] ~@5", D: "~@5 e6 [f#6,a6,c#7] ~@3 f#5 ~ [a5,d6]@5 ~@3 e6 ~ e7 ~",
  E: "e4 ~ [b5,e6]@3 ~ g#4 ~ e5 ~ g#4 g4 f#4 ~ [e5,a5] [f#5,b5] [a5,c#6] [b5,d#6] [c6,e6] [b5,d#6] [a5,c#6] f#5 [d6,f#6] ~", // E5 A5 B5 A B C B A …
  F: "g4 ~ [g5,b5,g6]@3 ~ d6 ~ b6 ~ d6 ~ d6 a6 f#7 a6 f#7 a6 f#7 a6 f#7@3 ~", // G
  G: "e4 ~ [b5,e6]@3 ~ g#4 ~ e5 f#4 g#4 ~ f#4 ~ [e5,a5] [f#5,b5] [a5,c#6] [b5,d#6] [c6,e6] [c6,d#6] [a5,c#6] f#5 [c#6,f#6] ~", // E5 A5 B5 A B C Cm A …
  H: "g4 ~ [g5,d6,g6] ~ d6 ~ b6 ~ d6 ~ b6 ~ a6 ~ f#7 a6 f#7 a6 b6 f#7 a6 f#7 a6 f#7", // G5
  I: "~@6 [c#5,e5,a5]@4 ~@10 a4@2 c#5 ~, ~@9 f#4@2 ~", J: "d4@4 ~@4 a4@2 d4 ~ [d5,f5,a5]@5 ~@7, ~@3 d5@2 ~@7",
  K: "~@3 a5@2 ~@4 f#5@2 ~", L: "~@6 [d4,a4,d5]@3 ~@7 [e4,b4,e5,g#5] ~ [e4,b4,e5,g#5] ~ [e4,b4,e5,g#5]!4",
  M: "~@6 [c#5,e5,a5] ~@11 [a4,c#5,f#5] ~@5", N: "~@6 [d4,a4,d5] ~@10 e5 f5 ~ [e5,f5] ~ [d5,f5] ~",
  O: "[a4,c#5,f#5]@3 ~ [a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~", // F#m E5
  P: "[d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5]!5 ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~", // D5
  Q: "[a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [a4,c#5,f#5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~", // F#m E5
  R: "[d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~@7 [c#5,e5,a5]@4 ~@2", // D5 A
  S: "~@3 [a4,c#5,f#5]@2 ~@4 [a4,d5,f#5]@2 ~", T: "[d5,f5,a5]@2 ~ [d5,f5,a5]@2 ~@4 [c#5,e5,a5]@2 ~",
  U: "~@3 [a4,c#5,f#5]@2 ~@4 [d4,a4,d5]@2 ~", V: "c4 ~ c4 ~ b3 ~ b3 ~ b3 ~ a3 ~@13",
})).s("gm_lead_2_sawtooth").gain(0.05).pan(0.2)

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

// drums · hihat
const hihat = s("hh").struct("<[x!12]!51 [x ~ x ~ x ~ x ~@2 x ~@2 x ~ x ~ x ~ x ~ x ~ x ~] [x!12]!18 [x!6 ~@6] ~@2>")
  .gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct("<~@51 [~@11 x ~@12] ~@21>").gain(0.26)

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

stack(
  electric_guitar_clean, electric_guitar_clean_2, bass, piano, synth_strings_1, lead_2_sawtooth, snare, hihat, mid_tom,
  crash
)

More by Aerosmith