Strudelify
What It Takes cover art

1989 · Pump

What It Takes

Aerosmith

KeyF majorTempo72 bpm
0:00/0:00
// What It Takes — Aerosmith
// 72 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(72/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 finger · "Bajo"
const bass = note(`<
  ~ A B C D E F G H E F I J K L M N O P Q R S T U V W X E F G H E F I J O P Q R S T U Y W X Z AA AB AC AD AA AE AF AG AH
  AI AJ AK AL AM O P Q R S T U V W X W X W AN ~
>`.pickRestart({
  A: "g1@7 d1 g1@2 g1@4 ~@2", B: "d2@5 ~ d2 ~ d2@2 d2@5 ~", C: "e1@3 e2!2 d2!2 c2", D: "c2@3 ~ c2 c2@2 d2",
  E: "g1@5 ~@2 d2 g1@2 g1@5 ~", F: "d2@5 ~@2 a1 d2 a1 d2@5 ~", G: "e1@6 e2 ~ e2@2 d2@2 d2@2 c2@2",
  H: "c2@5 ~@3 c2@2 c2@3 ~ d2@2", I: "e2@6 e2@2 e2@4 d2@3 ~", J: "c2@6 ~@2 c2 ~ c2@3 ~ c2@2",
  K: "d2@2 d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2 d2@2", L: "g1@5 ~@2 d1 g1@2 g1@5 ~", M: "e1@4 ~@2 b1@2 e2@3 ~ d2@4",
  N: "c2@3 c2!2 c2@3", O: "bb1@7 ~ bb1@2 bb1@3 ~ c2@2", P: "f1@5 ~@2 f1 f1@2 f1@2 ~ a1@2 a1",
  Q: "bb1@7 ~ bb1@2 bb1@2 ~@2 c2@2", R: "f1@5 ~ f1@2 f1@4 a1@4", S: "bb1@3 bb1 a1@3 a1", T: "d2@3 d2 c2@3 c2",
  U: "b1@4 b1 b1@3", V: "b1@5 ~ b1@2 b1@6 ~@2", W: "bb1@3 bb1 db2@3 db2", X: "f1@6 c2@2 f1@2 f1@5 ~", Y: "b1@5 ~@11",
  Z: "c2@7 ~ c2@2 c2@6", AA: "d2@3 d2!2 c2!2 bb1", AB: "bb1@6 bb2@2 bb1@2 bb1@5 ~", AC: "f1@3 f1!2 f1@3",
  AD: "c2@4 c2 c2@3", AE: "bb1!2", AF: "c2@3 c2 c2@4", AG: "g1@4 g1 g1@2 a1", AH: "bb1@3 bb1 bb1@3 bb2",
  AI: "f1@8 f1@2 f1@5 ~", AJ: "f1@6 f1@2 f1@7 ~", AK: "db2@6 db2@2 db2@7 ~", AL: "ab2@4 ab2 ab2@3", AM: "c3",
  AN: "f1@3 ~@5",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · piano
const piano = note(`<
  ~ A B C D A B E F A B G H I A G H J K J K L M N O P Q A B E F A B G H J K J K L M N R P Q ~@7 S T U V W X Y Z J K J K
  L M N O P Q P Q P AA ~
>`.pickRestart({
  A: "[d3,g3,b3]@2 g2 ~@3 g2@2 ~@2 g2@2 ~@2 g2 ~, ~ [d3,g3,b3]!3", // G
  B: "[gb3,a3,d4]@2 d3 ~@3 d3@2 ~@2 d3@2 ~@2 d3 ~, ~ [gb3,a3,d4]!3", // D
  C: "~ b2 ~ [e5,g5,b5] [e3,g3,b3,e5,g5,b5] [gb3,a3,d4,d5,gb5,a5] ~ [c5,e5,g5], [e3,g3,b3]@4 [e3,g3,b3]@4 ~@6 [e3,g3,c4] ~, ~@5 b2@2 ~@9", // Em D C Em C
  D: "[e3,g3,c4,c5,e5,g5]@2 c3@2 [e3,g3,c4]@2 c3@2 [e3,g3,c4]@2 c3@2 [gb3,a3,d4]@3 ~", // C D
  E: "~ b2 ~ [e4,g4,b4]!2 [d4,gb4,a4] ~ [c4,e4,g4], [e3,g3,b3]!2 ~@2, ~@5 b2@2 ~@9", // Em D C Em
  F: "[e3,g3,c4,e4,g4]@2 c3@2 [e3,g3,c4]@2 c3@2 [e3,g3,c4]@2 c3@2 [gb3,a3,d4]@3 ~", // C D
  G: "~ b2 ~ b2 ~ b2 ~ a2, [e3,g3,b3]!3 [d3,gb3,a3]", // Em D
  H: "~@2 g2@2 ~@2 g2@2 [c3,e3,g3]@2 g2 ~ [c3,e3,g3]@2 g2@2, [c3,e3,g3]!2 ~@2", I: "~ a2 ~ a2 ~ a2 ~ a2, [d3,gb3,a3]!4",
  J: "bb2@2 bb2@2 [bb2,d3,f3]@2 bb2@2 [bb2,d3,f3]@2 bb2@2 [c3,e3,g3]@2 g2 ~, [d3,f3] ~@3", // Bb C Dm
  K: "[f2,a2,c3]@2 f2@2 [f2,a2,c3]@2 f2 ~ [f2,a2,c3]@2 f2@2 [f2,a2,c3]@2 f2 ~", // F
  L: "bb2!2 [bb2,d3,f3] bb2 [a2,db3,e3] e2 [a2,db3,e3] e2, [d3,f3] ~@3", // Bb A Dm
  M: "~ d2 [a2,d3,f3] d2 ~ d2 [a2,d3,f3,c4] d2, [a2,d3,f3] ~ [a2,d3,f3,a3] ~", N: "[b2,eb3,gb3] ~ [b2,eb3,gb3] ~",
  O: "[b2,eb3,gb3]@4 ~@4 [b2,eb3,gb3] ~@7", // B
  P: "bb2@2 bb2@2 [bb2,d3,f3]@2 bb2@2 [db3,f3,ab3]@2 db3@2 [db3,f3,ab3]@2 db3 ~, [d3,f3] ~@3", // Bb Db Dm
  Q: "[a2,c3,f3]@2 f2@2 [a2,c3,f3]@2 f2@2 [a2,c3,f3]@3 ~@5", R: "[b2,eb3,gb3] ~@3",
  S: "~ c2 ~ c2 ~ c2 ~ c2, [c3,e3,g3]!4", T: "~ d2 ~ d2 ~ d2 ~ d2, [g2,b2,d3]!4", U: "[bb1,d2,f2]!4", V: "[f2,a2,c3]!4",
  W: "[f2,ab2,c3]!4", X: "[db2,f2,ab2]!4", Y: "[eb2,ab2,c3]!4", Z: "[e2,g2,c3]!4", AA: "[a2,c3,f3]@3 ~@13",
})).s("gm_piano").gain(0.31)

// other · acoustic guitar steel · "Guitarra Acústica"
const acoustic_guitar_steel = note("<~ A@4 ~@18 B C ~@16 B ~@24 B C ~@7>".pickRestart({
  A: "g3 d4 g4 d4 g3 d4 g4 d4", B: "b3 ~ eb4 ~ gb4 ~ eb4 ~ b3 ~ eb4 ~ gb4 ~ eb4 ~",
  C: "b3 ~ eb4 ~ gb4 ~ eb4 ~@3 [b3,b4]@2 [d4,d5]@2 [f4,f5]@2", // B D F
})).s("gm_acoustic_guitar_steel").gain(0.39)

// other · accordion · "Harmonica 1"
const accordion = note("<~@18 A B A B ~@14 A B A B ~@21 A B A B ~@8 C D>".pickRestart({
  A: "~@4 f5 a5 c6 ~ eb6 d6 c6 f5!2 a5 c6 ~", B: "bb5@3 ~@5", C: "~@4 f5 a5 c6 ~ eb6 d6 c6 ~ f5 a5 c6 ~",
  D: "eb6 d6 c6@6 ~@8",
})).s("gm_accordion").gain(0.26).pan(0.8)

// other · harmonica
const harmonica = note("<~@18 A B A B ~@14 A B A B ~@21 A B A B ~@8 C D>".pickRestart({
  A: "~@4 f4 a4 c5 ~ eb5 d5 c5 f4!2 a4 c5 ~", B: "bb4@3 ~@5", C: "~@4 f4 a4 c5 ~ eb5 d5 c5 ~ f4 a4 c5 ~",
  D: "eb5 d5 c5@6 ~@8",
})).s("gm_harmonica").gain(0.28).pan(0.2)

// other · distortion guitar · "Solo"
const distortion_guitar = note("<~@45 A B C@2 D E F ~@23>".pickRestart({
  A: "d5@2 c5@8 a4 c5 a4 g4 a4@2", B: "d5@2 c5 a4@2 g4 f4@4 d4@3 ~ a3 c4",
  C: "[c4@2 ab3 g3 f3 ab3@3 g3@2 f3 g3 ab3 f3 g3 f3@4 ~ a3 d4 c4@4 bb3 a3@4 ~]/2",
  D: "[e4,g4,c5]@3 a4 c5 a4 f4 f4@3 f5@3 ~ d5 f5", E: "g5@7 f5 g5 f5 d5 a4 g5 f5 d5 a4",
  F: "g5 f5 d5 a4 g5 f5 d5 a4 g5 f5 d5 a4 a5 g5 f5 d5",
})).s("gm_distortion_guitar").gain(0.29)

// other · string ensemble 1 · "Violines"
const string_ensemble_1 = note(`<
  ~ A@2 B C A@2 B C A@2 B D E F B G H I H I J K L@2 M N A@2 B C A@2 B D H I H I J K L@2 M N G O P Q R S T U V W X Y Z AA
  AB H I H I J K L@2 M N M N M N ~
>`.pickRestart({
  A: "[g3@15 gb3]/2", B: "e3@3 d3", C: "c3@3 d3", D: "c3@3 c3", E: "d3@15 ~", F: "g3", G: "c3",
  H: "[bb2,bb3]@3 [c3,c4]", I: "[f2,f3]@15 ~", J: "bb3!4 a3!4", K: "~ c4, d4@11 ~@5", L: "[b3@9 ~@7]/2", M: "bb3 db4",
  N: "f3@15 ~, f4@13 ~@3", O: "d3@3 c3", P: "bb2@3 c3", Q: "f4@4 f4@4 f4@4 f4@3 ~, f3@15 ~",
  R: "c4@2 c4@2 a4 g4@2 c4, c3", S: "d4@3 d4!2 c4!2 bb3, d3@15 ~", T: "bb3", U: "[c3,c4]@15 ~", V: "[g3,g4]@15 ~",
  W: "~@4 a4@4 bb4@7 ~, bb3@15 ~", X: "[f3,f4]@15 ~", Y: "[f3,f4]!2 [f3,f4]@2", Z: "[db4,db5]@15 ~",
  AA: "[ab3,ab4]@15 ~", AB: "[c4,c5]",
})).s("gm_string_ensemble_1").gain(0.28)

// other · overdriven guitar · "Electric"
const overdriven_guitar = note("<~ A@4 ~@12 B C D E ~@14 B C D E ~@21 B C D E ~@11>".pickRestart({
  A: "g3 d4 g4 d4 g3 d4 g4 d4", B: "bb2@9 ~@7, bb3@7 ~@9", C: "[f3,f4]@3 ~@5",
  D: "[bb2,bb3]@6 ~ bb3 bb3@2 ~ bb3 [b3,c4,db4,eb4] [e4,f4,g4] bb4!2", E: "a4 ~@3",
})).s("gm_overdriven_guitar").gain(0.19)

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

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

// drums · low tom
const low_tom = s("lt").struct("<A ~@3 B ~@21 A ~@15 C ~@8 A ~@7 D ~@9 A ~ A ~@3>".pickRestart({
  A: "~@13 x!2 ~", B: "~@11 x ~ x ~@2", C: "~@15 x", D: "~@7 x",
})).gain(0.62)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@5 A B@2 C A B@3 D A B E B E B E B E A F A F A B@2 C A B@4 E B E B E A ~ A D B@2 E G B@2 H A I B I@2 B@2 J B E B E B
  E A F A F A F A ~@2
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!5 ~ x!2", D: "~ x!4 ~@3", E: "x!5 ~@3", F: "~ x!2 ~@5",
  G: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", H: "x!3 ~@5", I: "x!7 ~", J: "~ x ~ x ~@4",
})).gain(0.62)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@3 B ~@8 C ~@12 D ~@15 C ~ C ~@2 E ~@3 F ~@3 C ~@3 G ~@9 D ~ D ~@3>".pickRestart({
  A: "~@10 x!2 ~@4", B: "~@9 x ~@6", C: "~@7 x", D: "~@9 x ~ x ~@4", E: "~@14 x!2", F: "~@11 x ~@4", G: "~@13 x ~@2",
})).gain(0.62)

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

// drums · high tom
const high_tom = s("ht").struct("<~@51 [~@9 x ~@6] ~@7 [~@9 x ~ x ~@4] ~@15>").gain(0.62)

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

// drums · ride
const ride = s("rd").struct("<~ [~@2 x!6] [x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~] [x!8] [x!3 ~@5] ~@70>").gain(0.62)

stack(
  bass, piano, acoustic_guitar_steel, accordion, harmonica, distortion_guitar, string_ensemble_1, overdriven_guitar,
  kick, snare, low_tom, pedal_hat, mid_tom, open_hat, high_tom, crash, ride
)

More by Aerosmith