Strudelify

Don't Come Around Here No More

Tom Petty and The Heartbreakers

KeyF majorTempo105 bpm
0:00/0:00
// Don't Come Around Here No More — Tom Petty and The Heartbreakers
// 105 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@7 A ~@3 A ~@8 B ~ C D C E C F G H G H G H G H ~@8 B ~ C D C E C F I J@2 K L M G N G H G O G P G Q R Q G H S@14
>`.pickRestart({
  A: "~@8 g4 c4!2 g4@2 c4!2 f4", B: "[c4,e4]@11 ~@5", C: "[g3,c4]@11 ~@5", D: "g3@3 ~ a3@3 ~ bb3@3 ~ d4@3 ~",
  E: "[a3,c4]@11 ~@5", F: "g3@3 ~ a3@3 ~ bb3@3 ~ c4@3 ~", G: "c4@5 ~@3 d4@5 ~@3", H: "e4@5 ~@3 d4@5 ~@3",
  I: "[d4,f4]@5 ~@3 [c4,f4]@5 ~@3", J: "[c4,f4]@5 ~@3 [c4,f4]@5 ~@3", K: "[c4,f4]@11 ~@5", L: "d4@5 ~@3 d4@5 ~@3",
  M: "e4@4 ~@4 [d4,bb4] ~@7", N: "e4@4 ~@4 [bb4,d5] ~@7", O: "e4@3 ~@5 [d4,f4] ~@7", P: "e4@5 ~@3 d4@3 ~@5",
  Q: "e4@5 ~@3 d4 ~@7", R: "[a3,c4] ~ c4@5 ~ d4@5 ~@3", S: "c4 ~@3 c4 ~@3 c4 ~@3 c4 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.27)

// bass · electric bass finger
const bass = note(`<
  A@4 B C B C B C B C B C B C B C B C D E F G D H D I J K J K J K J K B C B C B C B C D E F G D H D I L@4 J K J K J K J
  K J K J K J K J K M N M N M N M N M N M N M N
>`.pickRestart({
  A: "f3@11 ~@5", B: "f2@5 ~@3 bb2@5 ~@3", C: "c3@5 ~@3 bb2@5 ~@3", D: "c3@11 ~@5", E: "a1@11 ~@5", F: "c2@11 ~@5",
  G: "g2@11 ~@5", H: "a2@11 ~@5", I: "g2@3 ~ a2@3 ~ bb2@3 ~ c3@3 ~", J: "f2@4 ~@2 f2 ~ bb2@5 ~@3",
  K: "c3@4 ~@2 c3 ~ bb2@5 ~@3", L: "f2@5 ~@3 f2@5 ~@3", M: "f2 ~ f2 ~ f2 ~ f2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~",
  N: "c3 ~ c3 ~ c3 ~ c3 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~",
})).s("gm_electric_bass_finger").gain(0.35).pan(0.9)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@4 A B ~@2 A B ~@2 A B A B A B A B C D C E C D C F A B A B A B A B A B A B A B A B C D C E C D C F G@4 H B A B A B A
  B A B A B A B A B A@14
>`.pickRestart({
  A: "[c4,f4,a4]@5 ~@3 [bb3,d4,f4]@5 ~@3", B: "[c4,e4,g4]@5 ~@3 [bb3,d4,f4]@5 ~@3", C: "[c4,e4,g4]@11 ~@5",
  D: "[a3,c4,e4]@11 ~@5", E: "[g3,bb3,d4]@3 ~ [a3,c4,e4]@3 ~ [g3,bb3,d4]@3 ~ [g3,bb3,d4,f4]@3 ~",
  F: "[g3,bb3,d4]@3 ~ [a3,c4,e4]@3 ~ [bb3,d4,f4]@3 ~ [c4,e4,g4]@3 ~", G: "[c4,f4,bb4]@5 ~@3 [c4,f4,a4]@5 ~@3",
  H: "~@8 [bb3,d4,f4]@5 ~@3", // Bb
})).s("gm_overdriven_guitar").gain(0.21).pan(0.1)

// drums · kick
const kick = s("bd").struct("x!2").gain(0.37)

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

// drums · hihat
const hihat = s("hh").struct("<A B@2 C B@3 D B@3 D B@7 C B@7 C B@7 C B@7 D B@7 C B@3 D B@7 C B@7 C B@14>".pickRestart({
  A: "x!7 ~", B: "x!8", C: "x!5 ~@3", D: "x!6 ~@2",
})).gain(0.37)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@23 A ~@23 A ~@19 A ~@14>".pickRestart({
  A: "~@14 x!2",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@7 A ~@7 A ~@13>".pickRestart({
  A: "x",
})).gain(0.37)

stack(lead_2_sawtooth, bass, overdriven_guitar, kick, snare, hihat, low_tom, crash)

More by Tom Petty and The Heartbreakers