Strudelify
Your Time Is Gonna Come cover art

1969 · Led Zeppelin

Your Time Is Gonna Come

Led Zeppelin

KeyG majorTempo77 bpm
0:00/0:00
// Your Time Is Gonna Come — Led Zeppelin
// 77 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 5 "Guitar 2" acoustic guitar steel (copy of ch 4 "Guitar 1" acoustic guitar steel)
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 15 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(77/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.

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@4 A B A B A B A B A B A B A B A B A B C ~ D E F E F E F E ~@2 A B A B A B A B A B A B A B C ~ D E F E F E F E D E F
  E F E F E G H@2
>`.pickRestart({
  A: "d2@8 c2@3 ~ c2@4", B: "g1@3 ~ g1@3 ~@9", C: "d2@7 ~@9", D: "d2 ~ d2@3 ~ d2 ~ d2@8", E: "g1",
  F: "d2@5 ~ d2 ~ d2 ~ d2@3 ~ d2@2", G: "d2@15 ~", H: "[~ d2@20 ~@11]/2",
})).s("gm_electric_bass_finger").gain(0.42)

// chords · rock organ · "Keyboard"
const rock_organ = note(`<
  A B C D E F C G E H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD ~@2 E H I J K L M N O P Q R S T U V W X Y Z AA AB
  AC AE W X Y Z AA AB AC AE AF AG ~
>`.pickRestart({
  A: "~@4 a5 b5 a5 f#5 g5 a5 g5 e5 d6 ~ e4 f#4, d4@8 [c4,c6]@5 e6@3, ~ d6 ~ g6", // C
  B: "[g4,b5]@4 a5 g5@2 g3 a3 b3@2 d4@2 b3 a3@2, d6 ~, ~@2 g3 ~@5", // G
  C: "~@4 f#5 a5 f#5!2 e5 a5 g5 e5 c5 ~ e4 [f#4,g5], d4@4 [c4,c6]@3 ~, ~@4 [b5,d6]@4 g5@2 ~@3 g5@2 ~", // Gmaj7 C Bm
  D: "[g4,d5,b5]@4 [c5,a5] [b4,g5]@2 g3 a3 b3 ~ [c5,f5,a5]@2 ~ [c5,f5,a5]@2, ~@4 g3@3 ~@3 d4@3 d4@2 ~", // G F Em F
  E: "~@4 a5 b5 a5 f#5 g5 a5 g5 e5 d6 ~ e4 f#4, d4@8 [c4,c6]@4 ~ e6@3, ~ d6 ~ g6", // C
  F: "[g4,b5]@4 a5 g5@2 g3 a3 b3 d4@2 ~ b3 d4@2, d6 ~, ~@2 g3 ~@5", // G
  G: "[g4,d5,b5]@4 [c5,a5] [b4,g5]@2 g3 a3 b3 ~ [c5,f5,a5]@2 b3 [c5,f5,a5]@2, ~@4 g3@2 ~@4 d4@3 ~ d4 ~", // G F Em F
  H: "[g4,b5]@4 [a3,a5] g5@2 g3 a3 b3 ~ [c5,f5,a5]@2 b3 [c5,f5,a5]@2, d6 ~, ~@4 g3@2 ~@4 d4@3 ~ d4 ~", // G A F
  I: "a5@2 g5 a5 g5 f#5 d5 ~ d5 e5 c6 d5 e5 c6 [e4,c5] [f#4,d5], d4@8 c4@5 ~@3", // C D
  J: "b5 c5 d5 ~ g3@2 ~ g3 a3 b3 ~ [c5,f5,a5]@2 b3 [c5,f5,a5]@2, g4@3 b5@3 ~@4 d4@3 ~ d4 ~", // F
  K: "g5 a5 g5 f#5 d5 e5 ~ d5 e5@2 c5@2 c6 e5 [e4,g5] [f#4,a5], d4@8 c4@5 ~@3", // Em F#m
  L: "[g4,b5]@4 a5 g5@2 g3 a3 b3 ~ [c5,f5,a5]@2 b3 [c5,f5,a5]@2, ~@4 g3@2 ~@4 d4@3 ~ d4 ~", // G F
  M: "~@2 g5 a5 g5 f#5 d5@2 ~ g5 a5 c6@2 g5 a5 c6, d4 c4", N: "b5@4 c6 d6@3 ~@2 d6 f6@2 d6 f6@2, g3 a3",
  O: "~@2 b5 a5@3 f#5@2 ~@2 e5 g5@2 e5 [e4,d5,c6] [f#4,c#5,a#5], d4@8 c4@5 ~@3, ~@2 d6@7 ~ c6@3 ~@3", // C F#
  P: "[d5,b5] [c#5,a#5] [d5,b5] ~ [a3,d5,b5] [c5,a5] ~ g3 a3 b3 ~ [c5,f5,a5]@2 b3 [c5,f5,a5]@2, g4@2 g3 g5@2 ~@3, ~@6 b4@2 ~@2 d4@3 ~ d4 ~", // G F# G Bm7 F
  Q: "~@2 g5 a5 f#5 d5 e5 d5 g5 e5 c5 e5 g5 e5 [e4,c5] [f#4,e5], d4@8 c4@5 ~@3", // C F#7
  R: "[g4,b5]@4 g3@2 ~ g3 [a3,b4] [b3,a4] b4 d5 b4 [b3,a4] [d4,b4] d5, a#5 ~@9 d4@3 ~@3", // G Asus2 B7 G
  S: "~@4 a5 b5 a5 f#5 [c5,c6]@2 ~@2 d6 e6 [e4,d6] [f#4,a#5], d4@4 c4@2 g6 ~", // C E7 F#
  T: "b5@2 a5@2 g5@2 d5 g3 a3 b3 ~ [c5,f5,a5]@2 b3 d4 ~, [g4,d5]@4 ~@3 e5@2 ~ d4@3 ~@3", // F G5
  U: "~ f#6 d6 ~@2 e6 c#6 a5, [d4,a5]@5 ~ a5@7 ~@3", V: "~@2 e6@2 c6@2 g5 ~@3 d6@3 ~ g5@2, g6@3 ~ g6@4",
  W: "~@8 [c6,e6,g6]@7 ~, d4, ~@8 [d6,f6] ~@7", X: "[b5,d6,g6]@6 ~ b5 a5 b5 ~ d6@2 b5 a5 b5, g3",
  Y: "~@7 [e5,f5,g5] [a5,b5,d6,f#6] a6 ~@6, d4@15 ~, ~@8 [c6,e6,g6]@7 ~", // Em Bm7 C
  Z: "[b5,d6,g6]@7 ~@5 [a#5,b5,d6] ~ [a#5,b5,d6] ~, g3", // G A#
  AA: "b5@2 a5@4 ~ [f5,a5,b5] [c6,e6,g6]@7 ~, d4, d6@6 ~@2 [d6,f6] ~@7, a#5 ~@15", // Bm7b5 C Dm
  AB: "[b5,d6,g6]@7 ~ [e6,g6]!6 e6 [e6,g6], g3", AC: "[e6,g6] ~ [d6,f#6]@5 ~ [c6,e6,g6]@7 ~, d4",
  AD: "g6@8 e6@2 ~ g#6 a6@4, g3@13 ~@3, [b5,d6]@5 ~@3", AE: "[b5,d6,g6]@9 a5 b5 [b5,c6] ~ c6 b5@2, g3@13 ~@3",
  AF: "~@8 [d6,e6] [c6,e6,g6]@7, d4, ~@9 [d6,f6] ~@6", AG: "~ [a5,d6,f#6]@8 ~@7, ~ d4@14 ~",
})).s("gm_rock_organ").gain(0.32).pan(0.6)

// chords · rock organ · "Keyboard" · soft notes
const rock_organ_soft = note("<~@21 A ~ B C ~ D E F G ~@17 A ~ B C ~ D E F G ~@2 C ~ D E F G ~@2 H ~@2>".pickRestart({
  A: "~@2 g3 ~@5", B: "~@12 b5@3 ~", C: "~@7 [b4,c5,d5,e5,f5,g5] [a5,b5] ~@7", D: "~@7 [a4,b4,c5,d5] ~@8",
  E: "~@11 b5 ~@4", F: "~@7 g5 ~@8", G: "~@14 g6 ~", H: "~@7 [b4,c5,d5,e5] [f5,g5,a5,b5,c6] ~@7",
})).s("gm_rock_organ").gain(0.14).pan(0.6)

// chords · acoustic guitar steel · "Guitar 1"
const acoustic_guitar_steel = note(`<
  ~@4 A@2 B@4 C@12 D@3 E F G H I J K L M C@14 D@3 E F G H I J K N E F G H I J K O@3
>`.pickRestart({
  A: "[d3@7 ~@8 e4@2 ~@6 e4@8 ~, ~@8 c3@23 ~, ~@9 g3@2 g4@7 ~ g4@12 ~, ~@10 d4@3 g3@4 g3@3 ~ g3@10 ~, ~@14 d4@3 ~ d4@4 d4@9 ~]/2",
  B: "[d3@7 ~@8 e4@2 ~@6 e4@8 ~@7 f#4@2 ~@7 e4@2 ~@6 e4@8 ~, ~@8 c3@23 ~ d3@7 ~ c3@23 ~, ~@9 g3@2 g4@7 ~ g4@24 g4@7 ~ g4@12 ~, ~@10 d4@3 g3@4 g3@3 ~ g3@10 ~@3 a3@6 ~ g3@3 ~ g3@3 ~ g3@3 ~ g3@10 ~, ~@14 d4@3 ~ d4@3 ~ d4@14 d4@6 d4@3 ~ d4@3 ~ d4@4 d4@9 ~]/4",
  C: "[~@6 f#4@2 ~@7 e4@2 ~@6 e4@8 ~, d3@7 ~ c3@23 ~, ~@2 a3@6 ~ g3@2 g4@7 ~ g4@12 ~, ~@4 d4@4 ~@2 d4@3 g3@3 ~ g3@3 ~ g3@10 ~, ~@14 d4@3 ~ d4@4 d4@9 ~]/2",
  D: "[~@4 f#4@2 a4@2 ~@15 g4 ~@12 [a3,d4,f#4]@3 ~ [a3,d4,g4]@2 [a3,d4,f#4] ~ [a3,d4,e4] ~ [a3,d4,f#4]@2, d3@7 ~ d3@2 e4@2 d3@2 e4@2 d3@2 e4@2 d3@3 ~ d3@3 a4@2 ~ d4@2 d3@14 ~@2, ~@2 d4@6 ~ c#4@2 b4@2 c#4@2 a4@2 c4@4 c4@3 ~ b3@3 d3@3 g4@2 ~@15, ~@19 g4@2 ~ e4@2 ~@2 d4@3 b3@4 ~@15]/3", // D Dsus4 D Asus4 D
  E: "g2 ~@3 [b3,d4,g4] ~ [b3,d4,g4] ~ g3 [d3,g3]!4 b2 [d3,g3] ~, ~@2 g2@13 ~", // G G5
  F: "[a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,g4]@2 [a3,d4,f#4]@2 [a3,d4,e4]@2 [a3,d4,f#4]@2, d3@6 ~ d3@9", // D Dsus4 D Asus4 D
  G: "~@2 [b3,d4] [b3,d4,g4] [b3,d4]@3 ~ d3 ~ [d3,g3] ~ g2 ~ d3!2, g2@11 ~@2 a2@2 ~, ~@4 g4@7 ~@5", // Bm G Bm G5
  H: "[d3,a3,d4]@2 [d3,a3,d4] ~ [d3,a3,d4,f#4] ~@2 [d3,d4,f#4] [d3,a3,d4,g4]@2 [d3,a3,d4,f#4] ~ [d3,d4,e4] ~ [d3,a3,d4,f#4]@2", // D5 D Dsus4 D Dsus2 D
  I: "g2 ~@3 [b3,d4,g4]@2 ~@2 g4 [b3,d4,g4] ~ [b3,d4,g4] b2 d3 g3!2, ~ g2@5 ~@2", // G
  J: "[d3,a3,d4]@2 [d3,a3,d4] ~ [d3,d4,f#4] ~@2 [d3,f#4] [d3,a3,d4,g4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,e4] ~ [d3,a3,d4,f#4]@2", // D5 D Dsus4 D Dsus2 D
  K: "~@6 [b3,d4,g4] ~ [b3,d4,g4]@3 ~ [b3,d4,g4]@3 ~, g2@15 ~", // G
  L: "[a2,d3,a3]!2 [a2,a3] a2 [a2,d3,a3] a2 [a2,a3] a2 [c3,e3,g3] ~@2 c3 [c3,e3,g3] c3!2 [c3,g3]", // D5 A D5 A C C5
  M: "[b2,d3,g3,d4] [g3,d4] ~ d4 [b2,d3,g3,d4] ~ [g3,d4] [d3,g3,d4]!2 ~ d4 [d3,g3,d4] [d3,d4] [g3,d4] [d3,g3,d4] ~", // G G5 G G5 D G5
  N: "~@4 [a3,d4,f#4]@3 ~ [a3,d4,g4]@2 [a3,d4,f#4] ~ [a3,d4,e4] ~ [a3,d4,f#4]@2, d3@7 ~", // D Dsus4 D Asus4 D
  O: "[~@4 [a3,d4,f#4]@4 [a3,d4,g4]@2 ~ [a3,d4,f#4] ~ [a3,d4,e4]@2 [a3,d4,f#4]@2 g2 ~@5 [d4,d5]@16 ~@9, d3@15 ~@7 [f#4,a4]@15 ~@11]/3", // D Dsus4 D Asus4 D F#m
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(1)

// chords · acoustic guitar steel · "Guitar 1" · soft notes
const acoustic_guitar_steel_2 = note("<~@27 A B C D ~ E F ~@19 A B C D ~@4 A B C D ~@4>".pickRestart({
  A: "~@8 g3 ~@7", B: "~@6 d3 a3 ~@4 a3 ~@3", C: "~@6 [b3,d4,g4]!2 [b3,d4] ~@7", D: "~@4 a3 ~ d3 [a3,d4] ~@8",
  E: "~@2 d3 [d3,a3] ~ [d3,a3] d3 [d3,a3] ~ [c3,e3,g3]!2 [e3,g3] ~ g3!2 e3", // D5 C Em
  F: "~ [b2,d3] [b2,d3,g3,d4] [b2,d3,g3] ~ [b2,d3,g3,d4] [b2,d3] b2 ~ [d3,g3,d4] [d3,g3] ~ g3 d3 ~@2", // Bm G Bm G5
})).s("gm_acoustic_guitar_steel").gain(0.11).pan(1)

// other · acoustic guitar steel · "Guitar 3"
const acoustic_guitar_steel_3 = note(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@21
>`.pickRestart({
  A: "~@8 a2 c3 d3 f3@2 d3 f3@2",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.4)

// other · electric guitar jazz · "Guitar 4"
const electric_guitar_jazz = note("<~@36 A@2 B ~ C D E ~ F@2 G ~@22>".pickRestart({
  A: "[~@4 a3@3 ~ a4@6 ~ a4@6 ~@3 b4@4 g4@2 f#4@2]/2", B: "e4@3 ~@5", C: "e4 ~@11 c4@2 f#4 a4",
  D: "e4@6 ~@2 b3@3 ~ g3@3 ~", E: "c#3 ~", F: "[~@12 c#4@2 f#4 a4@7 ~@2 a4@4 c5 ~ c5 ~]/2", G: "c5@7 ~@9",
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.3)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@9 B A B A@6 ~@2 A C A C A D A E ~@2 A@5 B A B A@6 ~@2 A C A C A D A F A C A C A D A F ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@8 x!2 ~", C: "~@4 x ~@2 x!3 ~@6", D: "~@2 x!4 ~@2", E: "~@4 x ~@4 x!3 ~@4",
  F: "~@4 x ~ x ~ x!4 ~@4",
})).gain(0.49)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@13 A ~ A ~@9 B ~ B ~@11 A ~ A ~@9 B ~ B ~@5 B ~ B ~@7>".pickRestart({
  A: "~@3 x", B: "~@3 x ~@4",
})).gain(0.27)

// drums · low tom
const low_tom = s("lt").struct("<~@25 A ~ A ~ B ~ B C ~@18 A ~ A ~ B ~ D ~ A ~ A ~ B ~ D ~@3>".pickRestart({
  A: "~@10 x!5 ~", B: "~@12 x!3 ~", C: "x!3 ~@5", D: "~@9 x ~ x!5",
})).gain(0.49)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@32 [~ x ~ x ~ x!11] [x!10 ~ x!4 ~] ~@35>").gain(0.22)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B A B@5 A C B D A B A B A B ~@2 A E A F A G A H ~@2 B@4 A C B D A B A B A B ~@2 A E A F A G A H A E A F A G A H
  I J ~
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!6 ~ x", D: "x!5 ~@2 x", E: "x!2 ~@6", F: "x!3 ~@5", G: "x!5 ~@3", H: "x!4 ~@4",
  I: "~@2 x ~ x ~ x ~ x ~@2 x ~ x ~ x", J: "~ x ~@14",
})).gain(0.38)

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

stack(
  bass, rock_organ, rock_organ_soft, acoustic_guitar_steel, acoustic_guitar_steel_2, acoustic_guitar_steel_3,
  electric_guitar_jazz, kick, snare, snare_soft, low_tom, low_tom_soft, hihat, crash
)

More by Led Zeppelin