Strudelify

Don't Do Me Like That

Tom Petty and The Heartbreakers

KeyE minorTempo114 bpm
0:00/0:00
// Don't Do Me Like That — Tom Petty and The Heartbreakers
// 114 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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 · piano · "Don'tDoMeLikTht"
const piano = note(`<
  A B@3 A B@2 C A B@3 A B@3 A B D ~ A B E ~ A B@3 A B@3 A B D ~ A B E ~ F G F H F G I J@2 A B@3 A B@3 A B D ~ A B E ~ A
  B D ~ A B E ~ A B D ~ A B E ~ K ~
>`.pickRestart({
  A: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  B: "[a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~", // Am
  C: "[a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~@9", D: "[e4,g4,b4]@15 ~", E: "[e4,g4,b4]@7 ~",
  F: "[b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~", // G
  G: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  H: "[c4,d4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  I: "[c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~", // Cm
  J: "[[d4,f#4,a4]@7 ~]/2", K: "[g3,b3,d4] ~@5 [g3,b3,d4] ~@9",
})).s("gm_piano").gain(0.48)

// chords · distortion guitar
const distortion_guitar = note(`<
  A B C D A E C F G H I@2 G J H K L K M N O K P Q G H I@2 G J H K L K M N O K P Q ~@9 G H I@2 G J H K L K M N O K P Q L
  K M N O K P Q L K R S L I T S U ~
>`.pickRestart({
  A: "[g2,g3,b3,d4] ~@2 [g2,g3,b3,d4] ~@4", B: "[a2,a3,c4,e4] ~@2 [a2,a3,c4,e4] ~@4",
  C: "[c3,a3,c4,e4] ~@2 [c3,a3,c4,e4] ~@4", D: "[a3,c4,e4]@2 ~@4 [a3,c4,e4]@9 ~",
  E: "[a2,a3,c4,e4]@2 ~@4 [a2,a3,c4,e4]@3 ~@7", F: "[d3,a3,c4,e4] ~@2 [d3,a3,c4,e4] ~@4",
  G: "[g3,b3,d4]@2 ~@4 [g3,b3,d4] ~@9", H: "[a3,c4,e4]@2 ~@4 [a3,c4,e4] ~@9", I: "[a3,c4,e4] ~@5 [a3,c4,e4] ~@9",
  J: "[a3,c4,e4] ~@5 [a3,c4,e4]@2 ~@8", K: "[a3,c4,e4] ~@2 [a3,c4,e4] ~@4", L: "[g3,b3,d4] ~@2 [g3,b3,d4] ~@4",
  M: "[e4,g4,b4]@15 ~", N: "[c4,e4,g4]@5 ~ [d4,f#4,a4]@9 ~", O: "[g3,b3,d4] ~@5 [g3,b3,d4]@2 ~@8", P: "[e4,g4,b4]@7 ~",
  Q: "[c4,e4,g4]@5 ~ [d4,f#4,a4]@8 ~@2", R: "[g3,b3,e4]@15 ~", S: "[e3,g3,c4]@2 ~ [f#3,a3,d4]@4 ~", T: "[g3,b3,e4]@7 ~",
  U: "[g3,b3,d4] ~@5 [g3,b3,d4] ~@9", // G
})).s("gm_distortion_guitar").gain(0.35)

// bass · electric bass finger
const bass = note(`<
  A B C D A E C F A B C F G B H F A B I J A B I K A B C F G B H F A B I J A B I K L M L M N M O P@2 A B C F G B H F A B
  I J A B I K A B I J A B I K A B I J A B I K Q ~
>`.pickRestart({
  A: "g1 ~@2 g1 ~@4", B: "f1 ~@2 f1 ~@4", C: "c2 ~@2 c2 ~@4", D: "d2@3 ~@3 d2@9 ~", E: "f1@2 ~@4 f1@3 ~@7",
  F: "d2 ~@2 d2 ~@4", G: "g1@2 ~@4 g1 ~@9", H: "c2@2 ~@4 c2 ~@9", I: "e1@4 ~@2 e1@9 ~", J: "c2@4 ~@2 d2@9 ~",
  K: "c2@2 ~ d2@4 ~", L: "g1@3 ~ g1@2 ~@2 g1@3 ~ g1@2 ~@2", M: "c2 a#1 a1 g#1",
  N: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", O: "c2@15 ~", P: "[d2@15 ~]/2", Q: "g1 ~@2 g1@3 ~@2",
})).s("gm_electric_bass_finger").gain(0.52)

// chords · rock organ
const rock_organ = note(`<
  ~@4 A B C D E F ~@8 G H ~@2 I J ~@10 G H ~@2 I J K L M N M O P Q@2 R@2 S@2 T U V@2 ~@2 G H ~@2 I J ~@2 G H ~@2 I J ~@2
  G H ~@2 I J W ~
>`.pickRestart({
  A: "[g5,b5,d6]@9 [a5,b5,c6] [d5,e5,f5,g5] ~@5", B: "[a5,c6,e6]@2 d6@2 ~@2 e6@4 d6@5 ~, ~@6 [a5,c6]@9 ~",
  C: "[a5,c6,e6] d6 ~ d6@2 e6@2 ~, ~@6 [a5,c6]@9 ~", D: "[a5,c6,e6] d6 ~ [a5,c6,d6]@4 ~", E: "g5@14 f5 [c5,d5,e5]",
  F: "[g4,a4,b4] ~@15", G: "[g5,b5,e6]@15 ~", H: "[e5,g5,c6]@5 ~ [f#5,a5,d6]@9 ~", I: "[g5,b5]@15 ~",
  J: "[e5,c6]@5 ~ [f#5,d6]@7 ~@3", K: "[g4,b4]", L: "c5@4 [g4,e5,g5]@4 [c5,f5,a5]@4 [g4,g5]@3 ~", M: "[g4,b4,g5]",
  N: "[c5,e5,g5] [g4,e5,g5] [c5,f5,a5] [g4,e5]", O: "[c5,e5,g5]@4 [g4,e5,g5]@4 [c5,f5,a5]@4 [g4,g5]@3 ~",
  P: "[c5,d#5,g5]@15 ~", Q: "[[d5,f#5,a5]@15 ~]/2", R: "[g6@6 d6 e6]/2", S: "[~@8 e6 d6@2 e6@2 d6@2 e6, g6]/2", T: "b5",
  U: "[a5,c6]", V: "[g6@15 ~ [c6,a6]@15 ~, e6@31 ~]/2", W: "[b5,d6,g6]@5 [e6,f6] [g5,a5,b5,c6,d6] ~@9",
})).s("gm_rock_organ").gain(0.29)

// chords · rock organ · soft notes
const rock_organ_soft = note("<~@22 A B ~@14 A B C D ~ E ~ F ~@17 A B ~@6 A B ~@6 A B ~@2>".pickRestart({
  A: "e6@15 ~", B: "g5@4 ~@2 a5@7 ~@3", C: "g5@15 ~", D: "[e5,g5]@3 ~@9 e5@4", E: "~@12 g5@3 ~", F: "~@12 e5@3 ~",
})).s("gm_rock_organ").gain(0.14)

// other · piano
const piano_2 = note("<~@7 A B ~@10 C ~@3 D ~@11 C ~@3 D ~@20 C ~@3 D ~@3 C ~@3 D ~@3 C ~@3 D ~@2>".pickRestart({
  A: "~@6 [b4,e5,f5,g5,a5,b5] ~@3 [b4,b5] ~ [a4,a5,b5] [g4,g5] [e4,e5] ~", B: "g4 ~@15",
  C: "~@2 [e4,e5] ~ [g4,e5,g5] ~ [a4,d5,a5] ~ [b4,b5] ~ [c5,c6] ~ [d5,d6] ~ [d5,d6] ~", // E C D5 B C D
  D: "~@2 e5@2 [g4,e5,g5] ~ [a4,d5,a5] ~ [b4,b5] ~ [c5,c6] ~ [d5,d6] ~@3, ~@2 e4 ~@13", // C D5 B C D
})).s("gm_piano").gain(0.46)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@16 A@2 ~@2 A@2 ~@3 B@2 C D@2 E@4 ~@2 F@3 ~@11 G@2 H I@2 ~@2 J@2 ~@2 J@2 ~@2 J@2 ~@2 J@2 ~@2 K L M ~ K N M ~ O ~
>`.pickRestart({
  A: "[~@10 d4 e4 g4@12 ~@2 d4 e4 g4@4]/2", B: "[e4@7 ~, d4 ~@31]/2", C: "~@8 b3 c4 d4@2 d4 e4 g4 ~",
  D: "[g4@23 ~@9]/2", E: "[b4@18 ~@2 b4@4 e5@2 d5@2 b4 a4 ~@12 d4 e4 g4@14 d4 e4 g4@4, ~@15 g4@7 ~@10]/4",
  F: "[~@10 d4 e4 g4@13 ~ d4 e4 g4 a4 g4@17 ~]/3", G: "[e4, d4 ~@31]/2", H: "~@3 e4, ~@12 d4 ~@3", I: "b3/2",
  J: "[~@10 d4 e4 g4@19 ~]/2", K: "~@10 d4 e4 g4 d4 e4@2", L: "g4@8 ~@2 d4 e4 g4 d4 e4@2", M: "g4@15 ~",
  N: "g4@9 ~ d4 e4 g4 d4 e4@2", O: "g4!7 ~@9",
})).s("gm_overdriven_guitar").gain(0.29)

// drums · kick
const kick = s("bd").struct("<A@40 B C B C B C@2 D ~ A@33 ~>".pickRestart({
  A: "x ~@2 x ~@4", B: "x!4", C: "x ~ x ~ x!3 ~", D: "x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  A@3 B C@3 D C@15 E C@15 D F@2 G F@4 H I C@7 D C@3 J C@3 K C@3 J C@3 K C@3 J C@3 L A ~
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x ~@3 x", C: "~ x ~ x", D: "~@2 x ~@2 x!2 ~", E: "~@4 x ~@5 x!3 ~@3", F: "x!4",
  G: "x ~ x ~ x ~ x!2", H: "x ~@14 x", I: "x ~@4 x!2 ~ x ~@7", J: "~ x ~@2", K: "~@2 x!3 ~ x!3 ~ x!3 ~ x ~",
  L: "~@2 x ~@3 x!2",
})).gain(0.57)

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@31 B ~@8 C ~@15 D ~@7 D ~@8 E ~>".pickRestart({
  A: "~@3 x", B: "~@12 x ~ x!2", C: "~@10 x ~@2 x!2 ~", D: "~@10 x!3 ~ x ~", E: "~@2 x!2 ~@4",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct("<A@4 B@19 C B@15 D ~@9 B@11 E B@3 C B@3 E B@3 C B@3 E B@3 C ~@2>".pickRestart({
  A: "~ x!2 ~ x ~@3", B: "x!8", C: "x!7 ~", D: "x!5 ~@3", E: "x!5 ~ x ~",
})).gain(0.36)

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

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

// drums · high tom
const high_tom = s("ht").struct("<~@47 [~@15 x] [~@5 x ~@10] ~@34>").gain(0.64)

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

// drums · ride
const ride = s("rd").struct("<~@73 [x!8]!7 [x!4 ~ x!3] ~@2>").gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@40 [x!16]!7 [x!12 ~@4] ~@35>").gain(0.5)

stack(
  piano, distortion_guitar, bass, rock_organ, rock_organ_soft, piano_2, overdriven_guitar, kick, snare, low_tom, hihat,
  mid_tom, open_hat, high_tom, crash, ride, tambourine
)

More by Tom Petty and The Heartbreakers