Strudelify
KeyG majorTempo116 bpm
0:00/0:00
// I Won't Back Down — Tom Petty and The Heartbreakers
// 116 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 "intro synth" lead 1 square (copy of ch 6 "pad sweep" pad sweep)
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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 · lead 8 bass lead · "synth brass"
const lead_8_bass_lead = note(`<
  ~@21 A@2 B C D@2 E F@2 G@2 ~@9 H@2 I J K@3 L@2 M@2 ~@9 N@2 O P Q@2 R S@3 T U V@2 W X@2 ~@2
>`.pickRestart({
  A: "[~@6 d4@2 e4@2 d4@2 ~@2 g4@10 ~@2 d4@3 ~ d4@2]/2", B: "~@2 e4@2 ~@2 e4 ~ e4 ~ b3@3 ~ c4@2",
  C: "~@2 e4 ~ e4 ~ e4@2 e4@2 d4@2 d4@2 d4 b3", D: "[~@2 d4@2 d4 ~ d4@2 d4@2 b3@2 ~@2 g4@11 ~ d4@3 ~ d4@2]/2",
  E: "~@2 e4@2 ~@4 d4@5 ~ d3@2", F: "[b3@3 ~@5 a3@3 ~@3 g3@12 ~@2 g3@2 a3@2]/2",
  G: "[b3@3 ~@5 a3@3 ~@3 g3@12 ~@2 b3@2 d4@2]/2",
  H: "[~@6 [g3,b3,d4] ~ [g3,c4,e4]@2 [g3,b3,d4]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@4 [f#3,a3,d4]@2]/2", // G C G C G D
  I: "~@2 e4 ~@3 [a3,e4]@2 [f#3,a3,e4]@2 [d3,g3,b3]@4 [e3,g3,c4]@2, ~@6 f#3 ~@9", // A5 F#m7 G C
  J: "~@2 e4 ~ e4@2 e4@2 [g3,c4,e4]@2 d4 ~ d4@2 d4 b3", // C
  K: "[[d3,f#3,a3]@2 [a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3]@2 [g3,b3]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@3 ~ [f#3,a3,d4]@4 e4@2 ~@4 [f#3,a3,d4]@5 ~ d3@2, ~@2 f#3 ~@5 d4 ~ e3 ~@37]/3", // D D5 D F#m G C G D
  L: "[[e3,g3,b3]@2 ~@2 [d3,f#3,a3]@2 ~ [b2,d3,g3]@6 ~ g3 a3]/2", // Em D G
  M: "[[e3,g3,b3]@4 ~@4 [d3,f#3,a3]@3 ~@3 [b2,d3,g3]@12 ~@2 b3@2 d4@2]/2", // Em D G
  N: "[~@6 [g3,b3,d4]@2 [c4,e4]@2 [g3,d4]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@4 [f#3,a3,d4]@2, ~@8 g3 ~ b3 ~@21]/2", // G C G5 C G D
  O: "~@2 e4@2 ~@2 [a3,e4]@2 [f#3,e4] ~ [d3,g3,b3]@4 [e3,g3,c4]@2, ~@6 f#3 ~ a3@2 ~@6", // A5 F#7 G C
  P: "~@2 e4@2 e4@2 e4@2 [c4,e4]@2 d4@2 d4@2 d4 b3, ~@8 g3 ~@7", // C
  Q: "[[f#3,a3]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,d4]@2 [a3,d4]@2 [e3,g3,b3]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@3 ~ [f#3,a3,d4]@2, d3 ~@5 a3 ~ f#3 ~@23]/2", // F#m D D5 Em C G D
  R: "~@2 e4@2 ~@4 [f#3,a3,d4]@5 ~ d3 ~", // D
  S: "[[e3,g3,b3]@4 ~@4 [d3,f#3,a3]@3 ~@3 g3@8 [g3,b3,d4]@2 [g3,c4,e4]@2 [g3,b3,d4]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@3 ~ [f#3,a3,d4]@2, ~@14 [b2,d3]@13 ~@21]/3", // Em D G C G C G D …
  T: "~@2 e4@2 ~@2 [a3,e4]@2 [f#3,a3] ~ [d3,g3,b3]@3 ~ [e3,g3,c4]@2, ~@6 f#3 ~ e4@2 ~@6", // A5 F#m G C
  U: "~@2 e4@2 e4@2 e4@2 [g3,c4,e4]@2 d4@2 d4@2 d4 b3", // C
  V: "[[f#3,a3] ~ [f#3,d4]@2 [f#3,a3] ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [e3,g3,b3]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@4 [f#3,a3,d4]@2, d3@2 a3 ~ d4@2 ~@26]/2", // F#m D F#m D Em C G D
  W: "~@2 e4@2 ~@4 [f#3,a3,d4]@5 ~ d3@2", X: "[[e3,g3,b3]@3 ~@5 [d3,f#3,a3]@3 ~@3 [b2,d3,g3]@13 ~@5]/2",
})).s("gm_lead_8_bass_lead").gain(0.32)

// other · pad sweep
const pad_sweep = note("<A@2 B@2 ~@76>".pickRestart({
  A: "g4/2", B: "[a4@7 ~ f#4@4 ~@2 g4@12 ~@6]/2",
})).s("gm_pad_sweep").gain(0.71)

// bass · acoustic bass · "bass"
const bass = note(`<
  A B A B A B A B C D A B A B A B C D A B A E F G H G H I A B A B A B A B C D A B A E J K L M H I A B A B A B A B C D A
  B A E N K L M O I A E J P O M O I A B Q@2
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ d2 ~ d2 ~ d2 ~ g2 ~", B: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  C: "e2 ~ e2 ~ e2 ~ e2 ~ d2 ~ d2 ~ d2 ~ d2 ~", D: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  E: "g2 ~ g2 ~ g2 ~ g2 ~ c3 ~ g2 ~@3 c3 ~", F: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g2@2 ~@2 d3 ~",
  G: "~@2 d3 ~ d3 ~ d3 ~ d3 ~ g2 ~@3 c3 ~", H: "~@2 c3 ~ c3 ~ c3 ~ c3 ~ g2 ~@3 d3 ~",
  I: "~@2 d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~", J: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g2@2 ~@2 d3@2",
  K: "~@2 d3 ~ d3 ~ d3 ~ d3 ~ g2@2 ~@2 c3 ~", L: "~@2 c3 ~ c3 ~ c3 ~ c3 ~ g2@2 ~@2 d3 ~",
  M: "~@2 d3 ~ d3 ~ d3 ~ d3 ~ g2 ~@3 c3@2", N: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g2 ~@3 d3@2",
  O: "~@2 c3 ~ c3 ~ c3 ~ c3 ~ g2 ~@3 d3@2", P: "~@2 d3 ~ d3 ~ d3 ~ d3 ~ g2@2 ~@2 c3@2",
  Q: "[e2 ~ e2 ~ e2 ~ e2 ~ d2 ~ d2 ~ d2 ~ g2@9 ~@9]/2",
})).s("gm_acoustic_bass").gain(0.35)

// chords · clavinet
const clavinet = note(`<
  ~@21 A B C D E F G H@2 I@2 J@2 K@2 L M N@2 O@5 P@2 Q R@2 S@2 J@2 T@2 U V W@2 X@4 Y Z@3 AA@4 AB AC@2 AD AE@2 AF@2
>`.pickRestart({
  A: "~@6 [g3,b3,d4] ~ [g3,c4,e4] ~ [g3,b3,d4] ~@3 [c4,e4,g4] ~", // G C G C
  B: "~@2 [c4,e4,g4]@2 [c4,e4,g4] ~@5 [g3,b3,d4] ~@3 [g3,b3,d4]@2", // C G
  C: "[f#3,a3,d4] ~@5 [f#3,a3]@2 [f#3,a3]@2 [d3,g3,b3]@3 ~ c4@2, ~@6 e4 ~ e4 ~@7", // D F#m G
  D: "~@2 e4@2 e4@2 ~@4 d4@2 ~@2 d4 b3",
  E: "[f#3,a3]@2 [f#3,d4] ~ [f#3,a3,d4]@2 [a3,d4]@2 [f#3,a3]@2 [e3,g3,b3]@2 ~@2 [c4,e4,g4]@2, d3 ~ a3@2 ~@2 f#3 ~ d4 ~@7", // F#m D D5 F#m Em C
  F: "~@2 [c4,e4,g4]@2 [c4,e4,g4]@2 ~@4 [g3,b3,d4]@3 ~ [f#3,a3,d4]@2", G: "[f#3,a3,d4]@2 e4 ~@5 [f#3,a3,d4]@5 ~ d3 ~",
  H: "[[e3,g3,b3]@4 ~@4 [d3,f#3,a3]@3 ~@3 [b2,d3,g3]@13 ~ g3@2 a3@2]/2", // Em D G
  I: "[[e3,g3,b3]@3 ~@5 [d3,f#3,a3]@4 ~@2 [b2,d3]@12 ~@2 b3@2 d4@2, ~@12 g3@13 ~@7]/2", // Em D Bm
  J: "[~@4 [g3,b3,e4]@5 ~ [f#3,a3,d4]@4 [d3,g3,b3]@13 ~ g3@2 a3@2]/2", // Em D G
  K: "[~@4 [e3,g3,b3]@5 ~ [d3,f#3,a3]@3 ~ [b2,d3,g3]@12 ~@2 b3 ~ d4@2]/2", // Em D G
  L: "[g3,b3,e4]@4 d4@4 [f#3,a3,d4]@3 ~ b3@2 a3@2", M: "[c3,e3,a3]@3 ~ g3@3 ~ g3@3 ~ g3@2 g3@2",
  N: "[~@4 [e3,g3,b3]@5 ~ [d3,f#3,a3]@3 ~ [b2,d3,g3]@12 ~@2 g3@2 e3 ~]/2", // Em D G
  O: "[~@4 [e3,g3,b3]@5 ~ [d3,f#3,a3]@4 [b2,d3,g3]@7 ~ [g3,d4]@2 [g3,c4]@2 [g3,b3]@2 ~@10 e4@3 ~ [g3,b3,d4]@4 [f#3,a3,d4]@4 e4@2 ~@2 [f#3,a3,e4]@2 [f#3,a3,e4]@2 [d3,g3,b3]@4 [e3,g3,c4]@4 e4 ~ e4@2 e4@2 [g3,c4] ~ d4@2 d4 ~ d4 b3, ~@22 b3 ~ e4 ~ d4 ~@3 g4@11 ~@31 e4@2 ~@6, ~@34 c4@7 ~@39]/5", // Em D G G5 C5 G D F#m7 …
  P: "[[d3,f#3]@2 [f#3,a3]@2 [f#3,a3,d4]@2 [a3,d4]@2 [f#3,d4]@2 [e3,b3]@2 ~@10 e4@3 ~ [g3,b3,d4]@3 ~ [f#3,a3,d4]@2, a3 ~ d4 ~@3 f#3 ~ a3 ~ g3 ~@3 g4@11 ~@7, ~@18 c4@7 ~@7]/2", // D F#m D D5 D E5 G D
  Q: "~@2 e4@2 ~@4 [f#3,a3,d4]@5 ~ d3@2", R: "[[e3,g3,b3]@3 ~@5 [d3,f#3,a3]@4 ~@2 [b2,d3,g3]@13 ~ g3@2 a3@2]/2",
  S: "[[e3,g3,b3]@4 ~@4 [d3,f#3,a3]@3 ~@3 [b2,d3,g3]@13 ~ b3@2 d4@2]/2", // Em D G
  T: "[~@4 [e3,g3,b3]@5 ~ [d3,f#3,a3]@4 [b2,d3,g3]@12 ~@2 b3@2 d4@2]/2", // Em D G
  U: "[g3,b3,e4]@4 d4@3 ~ [f#3,a3,d4]@3 ~ b3@2 a3@2", V: "[c3,e3,a3]@4 g3@3 ~ g3@4 g3@2 g3@2",
  W: "[~@4 [e3,g3,b3]@5 ~ [d3,f#3,a3]@3 ~ [b2,d3,g3]@13 ~ g3 ~ e3@2]/2", // Em D G
  X: "[~@4 [e3,g3,b3]@5 ~ [d3,f#3,a3]@3 ~ [b2,d3,g3]@7 ~ [g3,d4]@2 [g3,c4] ~ [g3,b3,d4]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@4 [f#3,a3,d4]@4 e4@2 ~@2 [a3,e4]@2 [f#3,a3]@2 [d3,g3,b3]@4 [e3,g3,c4]@2, ~@22 b3 ~ e4@2 ~@28 f#3 ~ e4 ~@7]/4", // Em D G G5 C5 G C G …
  Y: "~@2 e4@2 e4@2 e4@2 [g3,c4,e4]@2 d4 ~ d4@2 d4 b3", // C
  Z: "[[d3,f#3,a3]@2 [f#3,a3,d4]@2 [a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [e3,g3,b3]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@3 ~ [f#3,a3,d4]@4 e4@2 ~@4 [f#3,a3,d4]@5 ~ d3@2, ~@4 f#3 ~@43]/3", // D D5 D Em C G D
  AA: "[[e3,g3,b3]@3 ~@5 [d3,f#3,a3]@3 ~@3 [b2,d3,g3]@6 ~@2 [b3,d4]@2 [c4,e4]@2 [g3,b3]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@4 [f#3,a3,d4]@4 e4@2 ~@2 [a3,e4]@2 [f#3,a3]@2 [d3,g3,b3]@3 ~ [e3,g3,c4]@2, ~@22 g3 ~ g3 ~ d4 ~@27 f#3 ~ e4 ~@7]/4", // Em D G Bm C G C G …
  AB: "~@2 e4@2 e4 ~ e4 ~ [g3,c4,e4]@2 d4@2 d4@2 d4 b3", // C
  AC: "[[f#3,a3]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3]@2 [e3,g3,b3]@2 ~@2 [c4,e4,g4]@11 ~ [g3,b3,d4]@4 [f#3,a3,d4]@2, d3 ~@7 d4 ~@23]/2", // F#m D F#m Em C G D
  AD: "~@2 e4@2 ~@4 [f#3,a3,d4]@5 ~ d3 ~", AE: "[[e3,g3,b3]@3 ~@5 [d3,f#3,a3]@3 ~@3 [b2,d3,g3]@13 ~ g3 ~ a3@2]/2",
  AF: "[[e3,g3,b3]@4 ~@4 [d3,f#3,a3]@3 ~@3 [b2,d3,g3]@16 ~@2]/2", // Em D G
})).s("gm_clavinet").gain(0.71)

// chords · bandoneon · "accordion"
const bandoneon = note("<~@11 A B@2 C@2 D E F@2 G@3 ~@57>".pickRestart({
  A: "~@6 b3 d4", B: "[~@4 [g4,b4]@5 ~ [f#4,a4]@4 [d4,g4]@13 ~ g4@2 a4@2]/2",
  C: "[~@4 [e4,g4]@5 ~ [d4,f#4]@3 ~ [b3,d4]@12 ~@2 b4 ~ d5@2]/2", D: "[g4,b4]@4 d5@4 [f#4,a4]@3 ~ b4@2 a4@2",
  E: "[c4,e4]@3 ~ g4@3 ~ g4@3 ~ g4@2 g4@2", F: "[~@4 [e4,g4]@5 ~ [d4,f#4]@3 ~ [b3,d4]@12 ~@2 g4@2 e4 ~]/2",
  G: "[~@4 [e4,g4]@5 ~ [d4,f#4]@4 [b3,d4]@7 ~ [g4,b4]@2 [g4,c5]@2 [g4,b4]@2 ~@2 g5@11 ~@7]/3", // Em D Bm G C5 G
})).s("gm_bandoneon").gain(0.71)

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

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!21 ~ [~ x ~ x]!39 ~ [~ x ~ x]!17 ~>").gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@21 [~@8 x!4 ~@4] ~@39 [~@8 x!4 ~@4] ~@18>").gain(0.28)

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 [~@4 x!4 ~@8] ~@39 [~@4 x!4 ~@8] ~@18>").gain(0.28)

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

// drums · high tom
const high_tom = s("ht").struct("<~@21 [x!4 ~@12] ~@39 [x!4 ~@12] ~@18>").gain(0.28)

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

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@22 A@3 B C D E ~@13 A@3 B C D E ~@13 A@2 B C D E ~@2 A@3 B C D E ~@3
>`.pickRestart({
  A: "x!4", B: "x ~ x!4 ~ x", C: "x!8", D: "x!7 ~", E: "~ x ~ x",
})).gain(0.24)

stack(
  lead_8_bass_lead, pad_sweep, bass, clavinet, bandoneon, kick, snare, low_tom, mid_tom, open_hat, high_tom, crash,
  tambourine
)

More by Tom Petty and The Heartbreakers