Strudelify

Runnin' Down a Dream

Tom Petty and The Heartbreakers

KeyE majorTempo170 bpm
0:00/0:00
// Runnin' Down a Dream — Tom Petty and The Heartbreakers
// 170 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 38 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(170/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.

// other · overdriven guitar · "intro (distortion guitar)"
const overdriven_guitar = note("<A B A B A B A B C ~@26 A D@2>".pickRestart({
  A: "~ [e3,e4] [b3,b4] [e3,e4] [a#3,a#4] [e3,e4] [a3,a4] [e3,e4]", B: "[g#3,g#4] [e3,e4]@7", C: "[e3,b3,e4,b4,e5] ~",
  D: "[[g#3,g#4] [e3,e4]@13 ~@2]/2", // G# E
})).s("gm_overdriven_guitar").gain(0.35)

// other · rock organ · "melody (rock organ)"
const rock_organ = note("<~@8 A B@2 C@2 D@4 E@2 F@2 G@3 H I@2 J@4 K@2 L@2 ~@3>".pickRestart({
  A: "~@5 e5!3", B: "[g#5 b5 b5@2 b5@10 ~ a5]/2", C: "[a5@2 g#5@2 g#5@8 ~ g#5 a5 g#5]/2",
  D: "[f#5!2 e5@2 d5@9 d5!2 e5@2 e5@13 e5@2]/4", E: "[g#5@2 b5@2 b5@10 a5 g#5]/2", F: "[a5@2 g#5@2 a5@2 g#5@8 g#5!2]/2",
  G: "[f#5 e5 d5@10 b4 d5@2 e5@2 e5@7]/3", H: "e5@3 a5", I: "[a5 a5@3 g5@2 g5 e5@7 ~ e5]/2",
  J: "[e5!2 e5@2 g5@2 g5 a5@7 ~ a5@2 a5!3 g5@2 g5 e5@9]/4", K: "[e5!2 e5@2 g5!3 a5@9]/2", L: "[a5 a5@3 g5@2 g5 e5@9]/2",
})).s("gm_rock_organ").gain(0.4)

// bass · electric bass finger · "bass"
const bass = note("<~ A@12 B@2 A@6 B A@3 C A D E C A D E F A@4>".pickRestart({
  A: "e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~", B: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", C: "d2@3 ~ d2@3 ~ g2@3 ~ g2@3 ~",
  D: "e2@3 ~ e2@3 ~ g2@3 ~ g2@3 ~", E: "a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~", F: "a2@3 ~ a2@3 ~ g2@3 ~ g2@3 ~",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · piano · "chords (piano)" · E Adim F#m
const piano = note("<~@2 [[e4,g#4,b4]]!4 ~@2 [[e4,g#4,b4]] ~@4 [[a3,d#4] ~@3 [f#3,a3]@4] ~@24>").s("gm_piano").gain(0.4)

// other · clavinet
const clavinet = note("<~@26 A ~ B ~ A ~ B ~@5>".pickRestart({
  A: "~@2 [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~ [e3,e4] ~", // E
  B: "~@2 [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~", // A
})).s("gm_clavinet").gain(0.32)

// other · string ensemble 1 · "strings"
const string_ensemble_1 = note("<~@12 A@3 B@6 C@2 D@2 ~@13>".pickRestart({
  A: "[e5@4 g#5@4 b5@35 ~@5]/3", B: "[[e5,b5]@33 ~@31 e5@32, ~@33 b5@34 ~@29]/6", C: "d5/2", D: "[e5@7 ~]/2",
})).s("gm_string_ensemble_1").gain(0.32)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!37>").gain(0.32)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!23 [~ x ~@2] [~ x ~ x]!13>").gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~ [x!2]!23 [x ~ x ~ x!4] [x!2]!13>").gain(0.32)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@24 [~ x] ~@13>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@16 [~@2 x!6] ~@21>").gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@24 [~@2 x!2 ~@4] ~@13>").gain(0.4)

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

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@17 x ~@20>").gain(3.78)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@8 A@4 ~ A@3 B ~@9 C ~ C ~ C ~ C ~@5>".pickRestart({
  A: "x!8", B: "x!2 ~@6", C: "~ x!7",
})).gain(1.63)

// drums · shaker
const shaker = s("sh").struct("<~@24 [x!6 ~@2] ~@13>").gain(0.4)

stack(
  overdriven_guitar, rock_organ, bass, piano, clavinet, string_ensemble_1, kick, snare, low_tom, pedal_hat, open_hat,
  high_tom, crash, vibraslap, cabasa, shaker
)

More by Tom Petty and The Heartbreakers