Strudelify
Heaven Help cover art

Are You Gonna Go My Way

Heaven Help

Lenny Kravitz

KeyA majorTempo88 bpm
0:00/0:00
// Heaven Help — Lenny Kravitz
// 88 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 24 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(88/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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B C D E F E F G H@3 I J K@2 L M@3 N@2 O P Q R S T U V@3 W X Y Z AA AB@6 AC AD@2 AE@2 AF@3 AG AH AI@2 AJ AK AL@2 AM
  AN@8 ~
>`.pickRestart({
  A: "[b2,a3,d4,f#4]@5 ~ [a3,c#4,e4]@7 ~@3, ~@6 f#2@9 ~", // Bm7 A
  B: "g#4@2 a4 ~ b4@2 [a3,d4,f#4]@4 e4@2 d4@2 a3 ~, [e2,b3,e4]@5 ~ d2@9 ~", // D E5
  C: "[b2,f#3,a3,d4]@5 ~ [e3,a3,c#4]@6 ~@4, ~@6 f#2@9 ~", D: "[e4,g#4]@4 e4 ~ [d2,a3,d4,f#4]@9 ~, [e2,b3]@3 ~@5",
  E: "[b2,f#3,d4]@15 ~, a3@13 ~@3", F: "[f#2,c#4]@15 ~, [e3,a3]@13 ~@3", G: "[b2,f#3,a3,d4]@7 ~",
  H: "[[f#2,e3,a3,c#4]@3 ~ [e2,e3,g#3,b3]@3 ~ [d2,d3,f#3,a3]@5 ~ [d2,f#3,a3,d4]@14 ~@2 [d2,a3,c#4,e4]@17 ~]/3", // F#m7 E D A
  I: "a3@3 [f#2,c#4,e4]@4 ~, b2@7 ~, [d4,f#4]@3 ~, ~@3 a3@5", // F#7 D
  J: "a3@6 [c#4,e4]@3 ~ e3@2 a3@4, [b2,d4,f#4]@3 ~, ~@3 f#2@4 ~, ~@3 a3@3 ~@2", // C#m Bm
  K: "[[f#3,a3]@6 [f#2,e3,c#4]@8 ~@2 [e2,e3,g3,b3]@5 ~ [a2,e3,a3,c#4]@10, d4, b2@11 ~@5, ~@3 a3@8 ~@5]/2", // F#m F#7 Em A
  L: "a3@3 [f#2,a3,c#4,e4]@5, [b2,d4,f#4]", // F#m7 Bm
  M: "[a3@3 [f#2,c#4,e4]@4 ~ [e2,g3,b3]@2 ~ [a3,d4]@4 [d2,d3,f#3,d4]@9, b2@2 ~, f#4@11 f#4@5 ~@8, d4@16 d4@6 ~@8 a3@15 ~@3, ~@3 a3@8 d2@3 ~@10]/3", // F#7 Em D5 D
  N: "[~@4 a3@2 [f#2,e3,a3,c#4]@7 ~@3 g#4@2 a4 ~ b4@2 [a3,d4,f#4]@6 ~@4, b2@19 ~@13, ~@2 f#3@4 ~@10 [e2,b3,e4]@5 ~ d2@8 ~@2, ~ d4@2 ~@5]/2", // F#m7 D E5
  O: "[b2,a3]@5 ~ [f#2,a3,c#4,e4]@7 ~@3, [d4,f#4] ~", P: "e4@3 ~ e4@2 [d2,d4]@10, [e2,b3,g#4]@3 [a3,f#4]@3 ~@2",
  Q: "[d4,f#4]@5 ~@3, b2@13 ~@3, a3 ~", R: "[c#4,e4]@10 ~@3 b3@3, f#2@15 ~, a3@4 ~ a3@3",
  S: "[a3,d4,f#4]@7 ~@9, b2@9 ~@7", T: "a3@3 ~@2 e3@3, [f#2,c#4,e4]", U: "[a3,d4,f#4]@3 ~@5, b2@9 ~@7",
  V: "[[f#2,c#4,e4]@4 [e2,b3,e4,g#4]@3 ~ [d2,d4,f#4,a4]@5 ~ [a3,d4,f#4]@6 ~@10 [d3,d4,f#4]@11 ~@7, a3@6 ~@8 d2@15 ~ [d2,a3]@7 ~@11]/3", // F#7 E D D5
  W: "[b2,a3]@3 [f#2,c#4,e4]@4 ~, [d4,f#4]@9 ~@7, ~@3 a3@5", // B7 F#7 D
  X: "[b2,a3]@6 [c#4,e4]@3 ~ e3@2 a3@4, f#4@3 ~, d4@9 ~@7, ~@3 f#2@4 ~, ~@3 a3@3 ~@2", // B7 C#m
  Y: "[f#3,a3]@3 [f#2,e3,a3,c#4]@4 ~, [b2,d4] ~", Z: "[e2,e3,g3,b3]@5 ~ [a2,e3,a3,c#4]@10",
  AA: "[a3,d4]@3 [f#2,a3,c#4,e4]@5, b2@3 ~, f#4@5 ~@3", // D5 F#m7
  AB: "[[a3,d4]@6 [f#2,a3,c#4,e4]@8 ~@2 [e2,g3,b3]@4 ~@2 [d2,d4]@7 ~ [d2,a3]@8 ~@14 a3@2 [e3,c#4]@7 ~@3 g#4@2 a4 ~ b4 ~ d4@10 ~@4 a3@2 [f#2,e3,c#4]@7 ~@3, b2@10 ~ a3@2 ~@2 f#3@10 f#3@16 f#3@4 ~@3, f#4@13 ~@3 d4@6 f#4@22 ~@10 f#2@9 ~ [e2,b3,e4]@5 ~ d2@12 ~@2 d4@10 ~@2, ~@30 d3@16 ~@2 b2@20 ~@2 a3@7 ~@3 b2@16, ~@30 d4@6 ~@16 d4@2 a3@5 ~@11 f#4@16 a3@10]/6", // D5 F#m7 Em D D5 C#m F#7 E5
  AC: "~@3 [a2,e3,a3,c#4]@5, d4@5 ~@3, [e2,g3,b3] ~", AD: "[[d3,a3]@5 ~@3 [c#3,g#3,c#4,f4]@7 ~, f#4@5 ~@3, d4@3 ~@5]/2",
  AE: "[[c#3,g#3,e4]@15 ~ [f#2,c#4,e4]@15 ~, b3, ~@4 a3 ~@3]/2", // C#m F#7
  AF: "[~@3 [a2,a3]@4 [a3,d4]@3 ~@5 [d2,d3,f#3]@8 ~, [e2,g3,b3]@6 ~ d2@7 ~@10, d4@8 ~@6 d3@12 ~@4 a3@7 ~@11, ~@3 [c#4,e4]@3 ~ f#3@8 d4@5 ~@4]/3", // A D5 D Em C#m
  AG: "a3@3 [f#2,c#4,e4]@4 ~, [b2,d4,f#4] ~, ~@3 a3@5", // F#7 Bm
  AH: "a3@6 [c#4,e4]@3 ~ e3@2 a3@4, f#4@3 ~, d4 ~, b2@2 ~ f#2@4 ~, ~@3 a3@3 ~@2", // C#m
  AI: "[a3@3 [f#2,e3,c#4]@4 ~ [e2,g3,b3]@2 ~ [a2,e3,a3,c#4]@5, f#3@5 ~@3 e3@3 ~@5, [b2,d4] ~@3, ~@3 a3@8 ~@5]/2", // F#7 Em A Bm
  AJ: "[a3,d4]@3 [f#2,a3,c#4,e4]@5, [b2,f#4]@3 ~", AK: "[a3,d4]@3 [f#2,a3,c#4,e4]@4 ~, f#4@3 ~, b2@5 ~@3",
  AL: "[[g3,d4]@6 [d2,a3,d4,f#4]@5 ~@3 [d2,d3,f#3,d4]@8 ~@10, [e2,b3]@2 ~@5 a3@2 ~@7]/2", // G5 D E5
  AM: "~@2 a3 [f#2,e3,a3]@5, b2@3 ~, ~@2 f#3@4 c#4@7 ~@3, ~ d4 ~@2", // F#m7
  AN: "[~@2 a4 ~ b4 ~@15 a3@2 f#2@10 g#3@4 ~@2 d2@4 ~@10 a3@2 f#2@9 ~@3 a4 ~ b4@2 ~@14 a3@2 [f#2,c#4]@7 ~@17 [a2,d3]@18, [e2,b3]@20 d4@2 e3@30 d4@2 c#4@7 ~@3 [e2,b3]@20 d4@12 [g#3,e4]@27 ~@5, e4@5 e4@6 [a3,c#4]@5 [e2,b3,e4]@11 e3@8 [a3,d4,f#4]@2 e4@6 e3@8 [a3,d4]@8 ~@5, g#4@6 [d4,f#4]@6 d4@4 b2@22 f#3@10 b2@6 a3@10 g#4@12 d4@2 a3@2 b2@6 a3@10 [e2,b3]@23 ~@9, ~@3 [d2,a3]@4 a3@2 f#3@10 [a3,d4]@6 f#3@7 e4@3 d2@6 f#3@10 [d2,f#3]@11 ~@2]/8", // F#5 D5 E5 C#m A E5 D D5 …
})).s("gm_piano").gain(0.64)

// bass · fretless bass
const bass = note(`<
  ~@4 A B A B A C@3 D@3 E D F G@2 D H D I A B A B A C@3 D@3 E D F J@2 D K L M N O P Q R@3 S T@2 U D V W@3 X@2 Y@2 Z@2
  AA@3
>`.pickRestart({
  A: "b1", B: "f#1@14 e1 f#1", C: "[f#2@4 e2@4 d2@5 ~ d2@14 ~@2 d2@12 e2 f#2 a2@4]/3", D: "b1@3 f#2@5",
  E: "e1@6 a1@7 ~@3", F: "b1@3 f#2@4 ~", G: "[e2@6 d2@8 d1@15 ~@3]/2", H: "e2@3 d2@5", I: "e2@6 d2@9 ~",
  J: "[e2@3 d2@4 d1@8 ~]/2", K: "e2@3 d2 c#2 b1 a1 f#1", L: "b1@3 f#1@5", M: "e2@2 ~@2 e2@2 a1@3 ~ a1@2 b1@2 c#2@2",
  N: "d2@6 d2@7 d2@3", O: "c#2@2 ~ c#2@2 g#1 c#2 g#1", P: "c#2@4 ~@2 c#2@3 ~@3 c#2 ~ g#1@2, ~@13 b1@3",
  Q: "f#1@5 ~ f#2@4 b1@2 c#2@2 d2@2", R: "[e2@5 ~ a1@8 d2@16 ~@10 e2 f#2 a2@2 b2 a2 f#2@2, ~@15 d2@8 ~]/3",
  S: "~@3 f#2@5, b1 ~", T: "b1@2 ~ f#2@5", U: "~@6 a1@7 ~@3, e1 ~", V: "b1@2 ~ f#2@4 ~",
  W: "[e2@2 ~ d2@3 ~@10 b1@3 f#2@4 ~, ~@14 d1@23 ~@11]/3",
  X: "[~@4 c#2 b1 a1 ~ b1@2 ~ f#1@5, e2 ~@3, ~@3 d2@2 ~@2 e1@5 ~@4]/2", Y: "[~@3 d2@4 a1 b1@3 f#2@5, e1@9 ~@7]/2",
  Z: "[~@8 c#2@2 b1 ~ a1@2 b1@8 f#1@10, e2@11 ~@21, ~@3 d2@2 ~@11]/2", AA: "[~@3 d2@4 d1@11 ~@6, e1@11 ~@37]/3",
})).s("gm_fretless_bass").gain(0.64)

// other · electric guitar muted
const electric_guitar_muted = note("<~@12 A@3 B C@2 D@2 ~@12 A@3 B C@2 E@2 ~@11 F@2 G@2 H I J@3 ~@9>".pickRestart({
  A: "e3 f#3 ~ f#3 ~@2 f#3@3 ~ e3 ~ f#3 ~@3", B: "g3@2 ~ g3 ~@2 a3@4 ~@6", C: "e3 f#3 ~ f#3 ~@2 f#3@2 ~@2 e3 ~ f#3 ~@3",
  D: "[g3 ~@3 g3 f#3 e3@7 ~ d3@8 ~@10]/2", E: "[g3 ~@3 g3 f#3 e3@7 ~ d3@4 ~@14]/2",
  F: "~ f#3 ~ f#3 ~@2 f#3@3 ~@3 f#3 ~@3, e3@5 e3@3",
  G: "[~ f#3 ~ f#3 ~@2 f#3@2 ~@4 f#3 ~@3 g3@3 g3@3 a3@4 ~@6, e3@5 e3@11]/2",
  H: "~ f#3 ~ f#3 ~@2 f#3@2 ~@2 e3 ~ f#3 ~@3, e3 ~", I: "e3 f#3 ~ f#3 ~@2 f#3 ~@3 e3@2 f#3@2 ~@2",
  J: "[g3@4 ~ f#3 e3@8 d3@24 ~@10, ~@4 g3@3 ~@41]/3",
})).s("gm_electric_guitar_muted").gain(0.56)

// other · string ensemble 2
const string_ensemble_2 = note("<~@12 A@3 B C@2 D ~@13 A@3 B C@2 D ~@12 A@3 E C@2 F@2 ~@10>".pickRestart({
  A: "f#5/3", B: "g5@3 a5@5", C: "f#5/2", D: "g5@6 f#5@9 ~", E: "g5@2 ~ a5@5", F: "[g5@6 f#5@25 ~]/2",
})).s("gm_string_ensemble_2").gain(0.31)

// drums · kick
const kick = s("bd").struct("<~@4 A@15 ~ A@19 ~ A@9 ~ B A@7 ~ A@8 ~@2>".pickRestart({
  A: "x!2", B: "~@4 x!4",
})).gain(0.56)

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

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

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

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

// drums · ride
const ride = s("rd").struct("<~@3 A ~@16 B ~@11 B ~@7 B ~@3 B ~@6 B ~@7 B ~@3 B ~@5>".pickRestart({
  A: "~@3 x", B: "x",
})).gain(0.32)

stack(piano, bass, electric_guitar_muted, string_ensemble_2, kick, snare, hihat, open_hat, crash, ride)

More by Lenny Kravitz