Strudelify
Rocket Man cover art

1995 · Honky Chateau

Rocket Man

Elton John

KeyB♭ majorTempo69 bpm
0:00/0:00
// Rocket Man — John Elton
// 69 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 36 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(69/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 · fretless bass · "Bass"
const bass = note("<~@9 A B C D E F G@2 H I J K L M N O P Q R S T U V W V X Y>".pickRestart({
  A: "g3@13 g3 d3 g2", B: "c3", C: "g3@12 a3 g3 d3 g2", D: "c3@14 c2 d2", E: "eb2 d2", F: "c2 bb1", G: "[a1@6 f1 f2]/2",
  H: "bb1@2 bb1@2 bb1 ~ bb1 d1", I: "eb1@4 eb1@3 ~ eb1@2 ~ eb1 eb1@2 eb2 ~",
  J: "bb1@2 ~@2 bb1@3 ~ bb1@2 ~ bb1 bb1@2 d1@2", K: "eb1 eb2 d2!2", L: "c2@2 ~@2 c2@3 ~ c2@3 ~ c2@2 c1 d1",
  M: "eb1@2 ~@2 eb1@3 ~ eb1@2 ~@2 eb1 bb1 eb2 ~", N: "bb1@2 ~ bb1 bb1@4 eb2@2 ~@2 eb2@3 ~",
  O: "eb2@2 ~ eb2 eb2@4 f2@2 ~ f2!2 ~ f2@2", P: "bb1@2 ~@2 bb1@3 ~ bb1@2 ~ bb1!2 ~ bb1@2",
  Q: "eb2@2 ~@2 eb2@4 eb1@2 ~ eb1 eb1@2 g1@2", R: "bb1@3 bb1 bb1@3 ~ bb1@2 ~ bb1 bb1@2 d1@2",
  S: "eb1@2 ~ eb1 eb1@2 eb2@2 d2@2 ~ d2 d2@4", T: "c2@2 ~ c2 c2@2 bb1 ~ c2@2 ~@2 c2@2 c1 d1",
  U: "eb1@2 ~ eb1 eb2@2 eb1@2 eb1@2 ~@2 eb1@4", V: "bb1@2 ~@2 bb1@3 ~ bb1 d2@2 eb2@2 e2@2 f2",
  W: "eb1@2 ~@2 eb1@3 ~ eb1@2 ~ eb1 eb1@4", X: "eb1@2 ~@2 eb1@3 ~ eb1@2 ~ eb1 eb1@3 ~",
  Y: "bb1@2 ~ bb1 bb1@3 ~ bb1 d2@2 eb2@2 e2@2 f2",
})).s("gm_fretless_bass").gain(0.22)

// bass · fretless bass · "Bass" · soft notes
const bass_soft = note("<~@17 A B C ~ D E F ~ C G ~@2 H ~@2 I C I ~>".pickRestart({
  A: "~@11 bb1 ~@4", B: "~@15 f2", C: "~@3 bb1 ~@12", D: "~@3 c2 ~@7 c2 ~@4", E: "~@3 eb1 ~@7 eb1 ~@4",
  F: "~@11 eb2 ~@4", G: "~@3 eb2 ~@12", H: "~@7 c2 ~@3 c2 ~@4", I: "~@3 eb1 ~@12",
})).s("gm_fretless_bass").gain(0.13)

// chords · piano
const piano = note("<~ A B A C D E F@2 A B A G H E F I J K J L M K N O J P Q R S K T K U K U>".pickRestart({
  A: "[g3,bb3,d4]!2 [f3,bb3,d4]!2", B: "[e3,bb3,c4]@2 [e3,bb3,c4]@2 ~@3 c4, ~ c3, ~@9 e3@7, ~@10 g3@3 g3@3, ~@11 bb3@5",
  C: "[e3,bb3,c4]@2 [e3,bb3,c4]@2 ~@3 g3, ~ c3, ~@9 e3@7, ~@10 g3@3 a3@3, ~@11 bb3@5", // C7
  D: "[eb3,bb3] [eb3,g3,bb3] [d3,f3,bb3]!2, g3 ~@15", E: "[c3,eb3,g3]!2 [bb2,eb3,g3]!2", F: "[a2,c3,f3]!4",
  G: "[e3,bb3,c4]@2 [e3,bb3,c4]@2 ~@3 g3, ~@8 c3@3 bb3@5, ~@9 e3@3 ~@4, ~@10 g3@2 ~ a3@3", // C7
  H: "[eb3,g3,bb3]!2 [d3,f3,bb3]!2", I: "[a2,c3,f3]!2 [f2,f3]!2", J: "[bb2,d3,f3]!2 [d3,f3,bb3]!2", K: "[eb3,g3,bb3]!4",
  L: "[eb3,g3,bb3]@4 [eb3,g3,bb3]@3 ~ [d3,f3,bb3]@3 ~ [d3,f3,bb3]@4", // Eb Bb
  M: "[c3,e3,bb3]@3 ~ [c3,e3,bb3]@4 [c3,e3,bb3]@4 [c3,e3,bb3]@4", N: "[d3,f3,bb3]!2 [eb3,g3,bb3]!2",
  O: "[eb3,g3,bb3]@3 ~ [eb3,g3,bb3]@4 [f2,f3]@4 [f2,f3]@4", // Eb F
  P: "[eb3,g3,bb3]@3 ~ [eb3,g3,bb3]@3 ~ [eb3,g3,bb3]@3 ~ [eb3,g3,bb3]@3 ~", // Eb
  Q: "[bb2,d3,f3]@3 ~ [bb2,d3,f3]@4 [d3,f3,bb3]@3 ~ [d3,f3,bb3]@3 ~", // Bb
  R: "[eb3,g3,bb3]@3 ~ [eb3,g3,bb3]@4 [d3,f3,bb3]@4 [d3,f3,bb3]@4", S: "[c3,e3,bb3]!4",
  T: "[d3,f3,bb3]@4 [d3,f3,bb3]@4 ~ d3@2 eb3@2 e3@2 f3, ~@8 bb2@3 ~@5", // Bb
  U: "[d3,f3,bb3]@4 [d3,f3]@4 bb2 d3@2 eb3@2 e3@2 f3, ~ bb3@2 ~", // Bb Dm
})).s("gm_piano").gain(0.36).pan(0.4)

// chords · string ensemble 2 · "Strings2"
const string_ensemble_2 = note("<~ A@4 B@2 C@2 D E D E B@2 F@5 G E H I@3 H J G E K J H L@2 J>".pickRestart({
  A: "[d4 e4, bb4@31 ~]/2", B: "[g4 f4 eb4@2, bb4]/2", C: "[c4,f4]/2", D: "~ d5, [d4,bb4]", E: "[e4,c5]",
  F: "[a4@6 [c4,bb4]@2 d4@4 ~@3 c5 [f4,d5]@4, f4@3 [eb4,g4] ~, ~@32 bb4@47 ~]/5", G: "[g4,eb5] [f4,d5]", H: "[g4,eb5]",
  I: "[[f4,d5]@8 [g4,eb5]@16 c5@8 d5@15 ~, ~ [bb4,f5]]/3", J: "[f4,d5]", K: "f4 g4@15, eb5",
  L: "[[f4,d5]@15 [g4,eb5]@17]/2", // Dm Cm
})).s("gm_string_ensemble_2").gain(0.15).pan(0.1)

// other · distortion guitar · "Rocket"
const distortion_guitar = note("<~@21 A@2 ~@6 B@2 ~@5>".pickRestart({
  A: "[~@5 [bb4,bb5]@11]/2", B: "[~@4 [bb4,bb5]@11 ~]/2",
})).s("gm_distortion_guitar").gain(0.2).pan(0.7)

// chords · acoustic guitar steel · "Gtr Steel"
const acoustic_guitar_steel = note(`<
  ~ A B A C D E F G H I H J K L M N O P Q R S T@2 U V P W R S X@2 Y@2 X@2
>`.pickRestart({
  A: "[g3,bb3,d4,g4]@7 ~ [f3,bb3,d4,g4]@7 ~", // Gm Gm7
  B: "[e3,g3,c4,g4]@7 ~@4 bb3@2 ~ c4@2, ~@8 c3@7 ~, ~@9 e3@6 ~, ~@10 g3@3 g3@2 ~", // C
  C: "[e3,g3,c4,g4]@7 ~@2 e4 g4 ~@3 g4@2, ~@8 c4@2 ~ bb4@5, ~@13 a4@3", D: "[eb3,bb3,eb4,g4]@7 ~ [d3,f3,bb3,f4]@7 ~",
  E: "[c3,g3,c4,eb4]@7 ~@5 bb3@2 f3@2, ~@8 bb2@7 ~, ~@9 eb3@2 f3@3 ~@2, ~@10 g3@3 ~@3", // Cm
  F: "[c4,f4]@7 ~ [a2,c4,f4,c5]@7 ~, [a2,f3] ~@15", G: "[a2,f3,c4,f4]@7 ~@2 f4 c4 f4@2 ~ f4@2, ~@8 a4@2 ~@3 g4@3",
  H: "[g3,bb3,d4,g4]@3 ~ [g3,bb3,d4,g4]@3 ~ [f3,bb3,d4,g4]@3 ~ [f3,bb3,d4,g4]@3 ~", // Gm Gm7
  I: "[e3,g3,c4,g4]@3 ~ [e3,g3,c4,g4]@3 ~@4 bb3@2 ~ c4@2, ~@8 c3@7 ~, ~@9 e3@6 ~, ~@10 g3@3 g3@2 ~", // C
  J: "[e3,g3,c4,g4]@3 ~ [e3,g3,c4,g4]@3 ~@4 bb3@2 ~ g3@2, ~@8 c3@7 ~, ~@9 e3@6 ~, ~@10 g3@3 a3@2 ~", // C
  K: "[bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [d3,bb3,d4,f4] [bb3,d4,f4]!3 ~ [bb3,d4,f4]!3, eb3@7 ~@9", // Eb Bb
  L: "[c3,c4,eb4,g4] [c4,eb4,g4]!2 [c4,eb4,g4]@2 [c4,eb4,g4]!3 [eb3,bb3,eb4,g4]@2 [bb3,eb4,g4] [eb3,bb3,eb4,g4]@2 [bb3,eb4,g4]!3", // Cm Eb
  M: "[f3,c4,f4] [c4,f4] [f3,c4,f4] [f3,c4,f4]@2 [f3,c4,f4]!3 [a2,c4,f4,c5]@2 [a3,f4,c5]@2 [a3,f4,c5]!4, a2@3 ~@13", // F5 F
  N: "[f4,c5,f5]@2 [f4,c5,f5]!3 [f4,c5,f5]@2 [f4,c5,f5] [bb4,c5,f5] [c5,f5] [bb4,c5,f5] [bb4,c5,f5]@2 [bb4,c5,f5]!3, a2@4 ~@4 f3@3 ~@5", // F5 Bbsus2 F5 Bbsus2
  O: "[d4,f4,bb4]@2 [d4,f4,bb4]!2 [d4,f4,bb4]@2 [d4,f4,bb4]!2 [bb2,d4,f4,bb4] [d4,f4,bb4]!3 ~ [d4,f4,bb4]!3, bb2@7 ~@9", // Bb
  P: "[eb3,bb3,eb4,g4]@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4]!3 [eb3,bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4] [eb3,bb3,eb4,g4] [bb3,eb4,g4] [bb3,eb4,g4]@2", // Eb
  Q: "[d4,f4,bb4] [f4,bb4] [d4,f4,bb4] [d4,f4,bb4]@2 [d4,f4,bb4]!3 [bb2,f4,bb4]@2 [d4,f4,bb4]@2 [d4,f4,bb4] [d4,f4,bb4]@2 [d4,f4,bb4], bb2@3 ~@5 d4 ~@7", // Bb Bb5 Bb Bb5 Bb
  R: "[eb4,g4,bb4]@2 [eb4,g4,bb4]@2 [eb4,g4,bb4] [eb4,g4,bb4]@2 [eb4,g4,bb4] [d3,f4,bb4]@2 [bb3,f4,bb4]!2 ~ [bb3,f4,bb4]!3, eb3@6 ~@2 bb3 ~@2 d3@4 ~", // Eb Bb Bb5
  S: "[c3,e4,g4,bb4]@2 [e4,g4,bb4]@2 [e4,g4,bb4]!3 [e4,g4,bb4]@2 [e4,g4,bb4]!2 [e4,g4,bb4]@2 [e4,g4,bb4]!3, ~@4 c3@3 ~@9", // C7 Edim
  T: "[[eb3,eb4,g4,bb4]@2 [eb4,g4,bb4] [eb4,g4,bb4]@2 [eb4,g4,bb4]!3 [eb3,eb4,g4,bb4]@2 [eb4,g4,bb4]!2 [eb3,eb4,g4,bb4] [eb4,g4,bb4]@2 [bb2,d4,f4,bb4]@2 [f4,bb4] [d4,f4,bb4] [d4,f4,bb4]@2 [d4,f4,bb4]!3 [eb4,g4,bb4] [eb4,g4,bb4]@2 [eb4,g4,bb4]@2 [eb4,g4,bb4] [f4,g4,bb4]@2, ~@24 eb3@3 ~@5]/2", // Eb Bb Bb5 Bb Eb Gm7
  U: "[eb3,g4,bb4,eb5]@2 [g4,bb4,eb5] [g4,bb4,eb5]@2 [g4,bb4,eb5] [g4,bb4,eb5]@2 [f3,c5,f5]@2 [bb4,c5,f5] [bb4,c5,f5]@2 [bb4,c5,f5]!3, ~@8 bb4 ~@2 f3@4 ~", // Eb F5 Bbsus2
  V: "[bb4,d5]@2 [d4,f4,bb4]!2 [d4,f4,bb4]@2 [d4,f4,bb4]!2 [eb3,d4,f4,bb4] [d4,f4,bb4]!3 ~ [d4,f4,bb4]!3, bb2@7 ~@9, f5 ~@3", // Bb
  W: "[d4,f4,bb4] [f4,bb4] [d4,f4,bb4] [d4,f4,bb4]@2 [d4,f4,bb4]!3 [bb2,d4,f4,bb4]@2 [d4,f4,bb4]@2 [d4,f4,bb4] [d4,f4,bb4]@2 [d4,f4,bb4], bb2@3 ~@13", // Bb Bb5 Bb
  X: "[[eb3,eb4,g4,bb4]@2 [eb4,g4,bb4] [eb4,g4,bb4]@2 [eb4,g4,bb4]!3 [eb3,eb4,g4,bb4]@2 [eb4,g4,bb4]!2 [eb3,eb4,g4,bb4] [eb4,g4,bb4]@2 [bb2,d4,f4,bb4]@2 [f4,bb4] [d4,f4,bb4] [d4,f4,bb4]@2 [d4,f4,bb4]!4 [d4,f4,bb4]@2 [eb4,f4,bb4]@2 [d4,f4,bb4]@2 [d4,f4,bb4], ~@24 bb2@3 ~@5]/2", // Eb Bb Bb5 Bb Ebsus2 Bb
  Y: "[[eb3,eb4,g4,bb4]@2 [eb4,g4,bb4] [eb4,g4,bb4]@2 [eb4,g4,bb4]!3 [eb3,eb4,g4,bb4] [eb4,g4,bb4] [eb4,g4,bb4]@2 [eb3,eb4,g4,bb4] [eb4,g4,bb4]@2 [bb2,d4,f4,bb4]@2 [f4,bb4] [d4,f4,bb4] [d4,f4,bb4]@2 [d4,f4,bb4]!4 [d4,f4,bb4]@2 [eb4,f4,bb4]@2 [d4,f4,bb4]@2 [d4,f4,bb4], ~@24 bb2@3 ~@5]/2", // Eb Bb Bb5 Bb Ebsus2 Bb
})).s("gm_acoustic_guitar_steel").gain(0.21).pan(0.3)

// chords · piano
const piano_2 = note("<~@7 A@2 ~@6 B@2 ~@6 C@2 ~@11>".pickRestart({
  A: "[~@5 c5@3 a4 ~@2 f4@2 ~@8 c5@3 ~@3 f4@2 ~ f4@2, ~@2 c4@6 ~@2 c4@2 ~ c4@5 c4@6 ~@2 c4@2 ~@4, ~@3 f4@5 ~ f4@2 ~@3 [e4,g4]@10 ~@8, ~@4 a4@4 ~@3 a4@8 f4@5 ~ f4@2 ~@2 g4@3, ~@20 a4@4 a4@3 a4@5]/2", // Em
  B: "[~ c4 f4 a4 c5@2 ~@4 f4@2 ~@6 f4 ~ c5@3 [bb3,eb4,f4]!3 [bb3,eb4,f4]@2 [bb3,eb4,f4] [bb3,eb4,f4]@2 ~, ~@7 a4@2 c4@2 ~ c4@5 c4@2 ~@13, ~@8 f4@2 a4@9 a4@4 ~@9, ~@13 [e4,g4]@6 ~@13]/2", // Bbsus4 Em
  C: "[~@7 eb4 eb4@2 eb4@2 ~@3 eb4 eb4!2 eb4@2 ~ eb4@2 [bb3,eb4,f4]!3 [bb3,eb4,f4]@2 [bb3,eb4,f4] [bb3,eb4,f4]@2 ~, ~@12 eb4@3 ~@5 d4@3 ~@9, ~@13 f4@5 ~@14]/2", // Bbsus4
})).s("gm_piano").gain(0.43).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~ A@2 B A B@3 A C B D B E F@2 G H I J K L H M A H N H O P Q P J P Q P>".pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x ~@2 x ~@2 x ~ x ~@7", D: "x ~@2 x ~@4 x ~@7", E: "x ~@2 x ~@2 x ~ x ~@2 x!2 ~@3",
  F: "x ~@3 x ~@3 x ~@2 x!2 ~@3", G: "x ~@3 x ~@2 x!2 ~@7", H: "x ~@2 x ~@3 x!2 ~@2 x ~@4",
  I: "x ~@2 x ~@4 x ~@2 x ~@4", J: "x ~@2 x ~@4 x ~@2 x ~@3 x", K: "x ~@6 x!2 ~@2 x ~@4", L: "x ~@7 x ~@2 x ~ x!2 ~",
  M: "x ~@2 x ~@3 x!2 ~@7", N: "x ~@6 x!2 ~@2 x ~@3 x", O: "x ~@7 x ~@2 x ~@4", P: "x ~@2 x ~@3 x!2 ~@2 x ~ x ~ x",
  Q: "x ~@2 x ~@3 x!2 ~@2 x ~@3 x",
})).gain(0.16)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~ A@2 ~ A ~@5 B A C ~ B@3 ~@2 D E ~ E ~ D E ~@2 D ~@3 D ~@3>".pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~@12", C: "~@3 x ~@7 x ~@4", D: "~@7 x ~@8", E: "~@15 x",
})).gain(0.09)

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

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@3 A ~@3 B ~@12 C ~@6>".pickRestart({
  A: "~@13 x!2 ~", B: "~@13 x!3", C: "~@7 x",
})).gain(0.16)

// drums · hihat
const hihat = s("hh").struct("<A ~@4 B@3 C B@3 C D E F G ~@19>".pickRestart({
  A: "x!4", B: "~ x ~ x", C: "~ x ~@2", D: "x!2", E: "x!2 ~@2 x ~@2 x", F: "~ x ~@2 x!2 ~@2", G: "~ x ~@6",
})).gain(0.14)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@4 [~@12 x!2 ~@2] ~@8 [~ x ~@3 x ~@2] [~@5 x ~@2] ~@21>").gain(0.07)

// drums · mid tom
const mid_tom = s("mt").struct("<~@12 [~@3 x] ~@3 [~@9 x!4 ~@3] ~@12 [~@5 x!2 ~] ~@6>").gain(0.16)

// drums · open hat
const open_hat = s("oh").struct("<~@4 [~@7 x] ~@5 [~@7 x] ~@2 [~ x ~ x]!3 [~ x ~@2] ~@19>").gain(0.14)

// drums · high tom
const high_tom = s("ht").struct("<~@29 [~@9 x ~@6] ~@6>").gain(0.14)

// drums · crash
const crash = s("cr").struct("<~@15 A B A ~ A ~ A ~@2 C A D A E A ~@2 A ~ A@2>".pickRestart({
  A: "x", B: "x!2", C: "~@2 x!2", D: "x ~@14 x", E: "x!2 ~@2",
})).gain(0.18)

// drums · ride
const ride = s("rd").struct("<~@17 A B A B A B@2 C A@3 D E B@2 A B A@2>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!4 ~ x ~ x", D: "~ x ~ x!5", E: "~ x!4 ~@3",
})).gain(0.16)

stack(
  bass, bass_soft, piano, string_ensemble_2, distortion_guitar, acoustic_guitar_steel, piano_2, kick, kick_soft, snare,
  low_tom, hihat, hihat_soft, mid_tom, open_hat, high_tom, crash, ride
)

More by Elton John