Strudelify
Your Time Is Gonna Come cover art

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 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
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: edit a riff to change every repeat.

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@4 A B C D C D E F G H I J K L M J N O P ~ Q R S R T R U V ~@2 C D E F G H I J K L M J N O P ~ Q R S R T R U V Q R S
  R T R U V W X@2
>`.pickRestart({
  A: "d2@11 ~ c2@5 ~ c2@5 ~", B: "g1@10 ~@2 g1@11 ~@25", C: "d2@23 ~ c2@9 ~@3 c2@12", D: "g1@3 ~ g1@3 ~@9",
  E: "d2@23 ~ c2@9 ~@3 c2@11 ~", F: "g1@10 ~@2 g1@7 ~@29", G: "d2@23 ~ c2@10 ~@2 c2@12", H: "g1@9 ~@3 g1@8 ~@28",
  I: "d2@23 ~ c2@7 ~@5 c2@10 ~@2", J: "g1@5 ~ g1@5 ~@13", K: "d2@24 c2@9 ~@3 c2@11 ~", L: "g1@9 ~@3 g1@10 ~@26",
  M: "d2@23 ~ c2@8 ~@4 c2@12", N: "d2@8 c2@3 ~ c2@4", O: "g1@5 ~ g1@4 ~@14", P: "d2@7 ~@9",
  Q: "d2@4 ~@2 d2@9 ~@3 d2@2 ~@4 d2@24", R: "g1@47 ~", S: "d2@16 ~@2 d2@2 ~@4 d2@3 ~@3 d2@10 ~@2 d2@6",
  T: "d2@16 ~@2 d2@2 ~@4 d2@2 ~@4 d2@10 ~@2 d2@5 ~", U: "d2@16 ~@2 d2@2 ~@4 d2@2 ~@4 d2@9 ~@3 d2@6", V: "g1@23 ~",
  W: "d2@23 ~", X: "[~ 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 G H E I J K L M N O P Q R S T U V W X@2 Y@2 Z@2 AA AB ~@2 E I J K L M N O P Q R S T U V W X@2 Y@2 Z@2 AA
  AC X@2 Y@2 Z@2 AA AC AD AE ~
>`.pickRestart({
  A: "~@12 a5@3 b5@3 a5@3 f#5@3 g5@3 a5@3 g5@3 e5@3 d6@2 ~@4 e4@3 f#4@3, d4@23 ~ c4@15 e6@9, ~ d6 c6 g6",
  B: "[g4,b5]@12 a5@3 ~@6 g3@3 a3@3 b3@5 ~ d4@6 b3@3 a3@5 ~, d6 ~, ~@2 g3 ~@5, ~@15 g5@10 ~@23", // G
  C: "~@12 f#5@3 a5@3 f#5@3 f#5@3 e5@3 a5@3 g5@2 ~ e5@3 c5@2 ~@4 e4@3 [f#4,g5]@3, d4@23 ~ c4@14 ~@10, ~@2 [b5,d6]@2 c6@3 ~, ~@24 g5@5 ~@10 g5@5 ~@4", // Gmaj7 Bm
  D: "[g4,d5,b5]@4 [c5,a5] ~@2 g3 a3 b3 ~ [c5,f5,a5]@2 ~ [c5,f5,a5]@2, ~@12 g3@8 ~@10 d4@8 ~ d4@5 ~@4, ~@15 [b4,g5]@10 ~@23", // G F Em
  E: "~@12 a5@3 b5@3 a5@3 f#5@3 g5@3 a5@3 g5@3 e5@3 d6@2 ~@4 e4@3 f#4@3, d4@24 [c4,c6]@13 ~@2 e6@9, ~ d6 ~ g6", // C
  F: "[g4,b5]@12 a5@3 ~@6 g3@3 a3@3 b3@3 d4@7 ~@2 b3@3 d4@5 ~, d6 ~, ~@2 g3 ~@5, ~@15 g5@10 ~@23", // G
  G: "~@12 f#5@3 a5@3 f#5@3 f#5@3 e5@3 a5@3 g5@2 ~ e5@3 c5@2 ~@4 e4@3 [f#4,g5]@3, d4@4 [c4,c6]@3 ~, ~@12 [b5,d6]@12 g5@5 ~@10 g5@5 ~@4", // Gmaj7 C Bm
  H: "[g4,d5,b5]@4 a5 ~@2 g3 a3 b3 ~ [c5,f5,a5]@2 b3 [d4,c5,f5,a5]@2, ~@4 [g3,c5]@2 ~@4 d4@3 ~@3, ~@15 [b4,g5]@10 ~@23", // G F Dm7 C5 Em
  I: "[g4,b5]@12 a5@3 ~@6 g3@3 a3@3 b3@3 ~@3 [c5,f5,a5]@6 b3@3 [c5,f5,a5]@5 ~, d6 ~, ~@4 g3@2 ~@4 d4@3 ~ d4 ~, ~@12 a3 ~@2 g5@10 ~@23", // G F
  J: "a5@6 g5@3 a5@3 g5@3 f#5@3 d5@4 ~@2 d5@3 e5@3 c6@3 d5@3 e5@3 c6@3 [e4,c5]@3 [f#4,d5]@3, d4@8 c4@5 ~@3", // C D
  K: "b5 c5 d5 ~ g3@2 ~ g3 a3 b3 ~ [c5,f5,a5]@2 b3 [d4,c5,f5,a5]@2, g4@3 b5@3 ~@4 d4@3 ~@3", // F Dm7
  L: "g5@3 a5@3 g5@3 f#5@3 d5@3 e5@4 ~@2 d5@3 e5@6 c5@6 c6@3 e5@3 [e4,g5]@3 [f#4,a5]@3, d4@8 c4@5 ~@3", // Em F#m
  M: "[g4,b5]@4 a5 ~@2 g3 a3 b3 ~ [c5,f5,a5]@2 b3 [d4,c5,f5,a5]@2, ~@6 g3@3 ~@6 d4@5 ~@4, ~@15 g5@10 ~@23", // G F Dm7
  N: "~@6 g5@3 a5@3 g5@3 f#5@3 d5@5 ~@4 g5@3 a5@3 c6@5 ~ g5@3 a5@3 c6@3, d4 c4",
  O: "b5@4 c6 d6@3 ~@2 d6 f6@2 d6 f6@2, g3 a3",
  P: "~@6 b5@3 a5@8 ~ f#5@6 ~@6 e5@3 g5@5 ~ e5@3 [e4,d5,c6]@3 [f#4,c#5,a#5]@3, d4@23 ~ c4@16 ~@8, ~@3 d6@11 ~ c6@5 ~@4", // C F#
  Q: "[d5,b5]@3 [c#5,a#5]@3 [d5,b5]@4 ~@2 [d5,b5]@3 [c5,a5]@3 ~@3 g3@3 a3@3 b3@3 ~@3 [c5,f5,a5]@6 b3@3 [c5,f5,a5]@6, g4@11 ~ g3@6 b4@7 ~@5 d4@9 ~@3 d4@3 ~@3, ~@12 a3 ~@5 g5@11 ~@19", // G F# G F
  R: "~@6 g5@3 a5@3 f#5@3 d5@2 ~ e5@3 d5@2 ~ g5@3 e5@2 ~ c5@3 e5@2 ~ g5@3 e5@3 [e4,c5]@3 f#4@3, d4@24 c4@15 ~@6 e5 ~@2", // C
  S: "g4@11 ~ g3@6 ~@3 g3@3 [a3,b4]@3 [b3,a4]@3 b4@3 d5@3 b4@3 [b3,a4]@3 [d4,b4]@3 d5@3, b5 ~@2, a#5@2 ~@28 d4@9 ~@9", // Asus2 B7 G
  T: "~@12 a5@3 b5@3 a5@2 ~ f#5@2 ~ [c5,c6]@7 ~@5 d6@3 e6@3 [e4,d6]@3 [f#4,a#5]@3, d4@3 c4@2 ~, ~@6 g6 ~", // C E7 F#
  U: "b5@5 ~ a5@6 g5@5 ~ d5@2 ~ g3@3 a3@3 b3@3 ~@9 b3@3 d4@3 ~@3, [g4,d5]@11 ~@10 e5@7 ~@2 d4@10 ~@8, ~@33 [c5,f5,a5]@10 ~@5", // G5 F
  V: "~@6 f#6@5 ~ d6@6 ~@12 e6@6 c#6@6 a5@6, [d4,a5]@14 ~@4 a5@21 ~@9", // D5
  W: "~@6 e6@5 ~ c6@6 g5@3 ~@9 d6@9 ~@3 g5@5 ~, g6@19 ~@5 g6@24",
  X: "[~@23 d6 e6 [c6,e6,g6]@20 ~@3 [b5,d6]@18 ~@3 b5@3 a5@3 b5@3 ~@3 d6@6 b5@3 a5@3 b5@3, d4@47 ~ g3@48, ~@25 [d6,f6] ~@21 g6@18 ~@31]/2", // C Bm Dm
  Y: "[~@21 e5 [f5,g5,a5] [b5,c6] d6 [c6,e6,g6]@20 ~@39 a#5 b5@2 ~@2 a#5 b5@2 ~@4, d4@23 ~ g3@24, ~@25 [d6,f#6,a6] ~@21 [b5,d6,g6]@22 ~@15 d6@3 ~@2 d6@3 ~@4]/2", // F Cmaj7 C D G
  Z: "[b5@5 ~ a5@12 ~@2 f5 ~ [a5,b5,c6] d6 [e6,g6]@22 ~@26 [e6,g6]@2 ~ [e6,g6] ~@2 [e6,g6] ~@2 [e6,g6] ~@2 [e6,g6]@2 ~ [e6,g6] ~@2 e6 ~@2 [e6,g6] ~@2, d4@47 ~ g3@48, d6@18 ~@6 f6 ~@71, a#5 ~@46 [b5,d6,g6]@22 ~@27]/2", // Am Em G
  AA: "[e6,g6]@4 ~@2 [d6,f#6]@15 ~@3 [c6,e6,g6]@22 ~@2, d4@47 ~", // Em D C
  AB: "g6@23 e6@7 ~@5 a6@11 ~@2, g3@19 ~@5, [b5,d6]@29 ~@5 g#6@2 ~@12", // Bm
  AC: "[b5,d6]@27 a5@3 b5 ~@2 b5 c6@2 ~@3 c6@3 b5@6, g3@19 ~@5, g6@23 ~@25", // Bm
  AD: "~@25 [d6,e6] d6 f6 ~@20, d4, ~@13 [c6,e6,g6]@11", AE: "~ [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: "~@12 g3@7 ~@29", B: "~@35 b5@9 ~@4", C: "~@20 [b4,c5] [d5,e5,f5] [g5,a5] [b5,c6] ~@24",
  D: "~@19 a4 [b4,c5] d5 ~@26", E: "~@33 b5 ~@14", F: "~@21 g5 ~@2 c6@21 ~@3", G: "~@42 g6 ~@5",
  H: "~@21 b4 [c5,d5,e5] [f5,g5] [a5,b5,c6] ~@23", // C Fsus2 Am
})).s("gm_rock_organ").gain(0.14).pan(0.6)

// chords · acoustic guitar steel · "Guitar 1"
const acoustic_guitar_steel = note("<~@3 A@7 B@8 C@5 D E@2 F@6 G H@7 I@6 J@3 D E@2 F@6 E@2 F@6 K L@2>".pickRestart({
  A: "[~@47 d3@20 ~@25 e4@7 ~@17 e4@24 ~@3 d3@21 ~@24 e4@6 ~@18 e4@24 ~@21 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@3 d3, ~@71 c3@68 ~@28 c3@69 ~@3 d3@20 ~@4 c3@68 ~@5, ~@74 g3@10 ~@3 g3@12 g3@9 ~@2 g3@29 ~@31 g3@10 ~@2 g3@10 ~@2 g3@9 ~@3 g3@30 ~@10 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@4, ~@77 d4@10 ~@3 d4@10 ~ d4@10 ~@2 d4@27 ~@33 d4@10 ~@2 d4@10 ~@2 d4@10 ~@2 d4@42 ~ d4@17 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@4, ~@80 g4@21 ~@3 g4@36 ~@36 g4@21 ~@3 g4@72 g4@21 ~@3 g4@36 ~@4]/7",
  B: "[~@17 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@21 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@21 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@21 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@3 d3, ~@6 a3@17 c3@68 ~@4 d3@20 ~@4 c3@68 ~@4 d3@20 ~@4 c3@68 ~@4 d3@20 ~@4 c3@68 ~@5, ~@12 d4@12 ~@2 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@10 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@10 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@10 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@4, ~@29 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@16 d4@12 ~@5 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@16 d4@12 ~@5 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@16 d4@12 ~@5 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@4, ~@32 g4@21 ~@3 g4@36 ~@36 g4@21 ~@3 g4@36 ~@36 g4@21 ~@3 g4@36 ~@36 g4@21 ~@3 g4@36 ~@4]/8",
  C: "[~@17 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@21 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@16 f#4@6 a4@6 ~@8 b4@4 ~@8 a4@4, ~@6 a3@17 c3@68 ~@4 d3@20 ~@4 c3@68 ~@4 d3@22 ~@3 d3@10 ~@2 d3@10 ~@2, ~@12 d4@12 ~@2 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@10 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@52, ~@29 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@16 d4@12 ~@5 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@10 d4@17 ~@4 c#4@10 ~@2 c#4@9, ~@32 g4@21 ~@3 g4@36 ~@36 g4@21 ~@3 g4@36 ~@34 e4@8 ~@4 e4@6]/5",
  D: "~@20 g4@3 ~@21 g4@4, d3@8 g4@6 ~@3 e4@7 ~@5 d4@6 d3@11 ~@2, ~@3 c4@8 d3@10 ~@2 d3@9 a4@6 ~@3 d4@7, ~@5 e4@9 ~ c4@9 ~@2 b3@10 ~@2 b3@10",
  E: "[~@12 f#4@10 ~@2 [d4,g4]@6 [a3,d4,f#4]@4 ~@2 [a3,d4,e4]@4 ~@2 [a3,d4,f#4]@5 g2@4 ~@9 [d4,g4]@4 ~ [b3,d4,g4]@2 ~@4 g3 ~@2 [d3,g3] ~@2 [d3,g3] ~@3 [d3,g3] ~@2 [d3,g3]@3 b2@2 ~ [d3,g3]@4 ~@2, d3@21 ~@6 g2@20 ~, ~@11 [a3,d4]@11 ~ a3@6 ~@30 b3@4 ~@33]/2", // G5 D Asus4 D G5 G G5 D5
  F: "[[a3,d4,f#4]@9 ~@2 [a3,d4,f#4]@9 ~@3 [a3,d4,g4]@5 ~@2 [a3,d4,f#4]@5 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@5 ~@7 [b3,d4] ~ [b3,d4,g4] ~@2 [b3,d4]@9 ~@4 d3@3 ~@2 [d3,g3]@3 ~@3 g2@3 ~@3 d3 ~@2 d3@3 [d3,a3,d4]@5 ~@2 [d3,a3,d4] ~@5 [d3,a3,f#4]@4 ~@4 [d3,d4,f#4] ~@3 d3@5 ~ [d3,a3,f#4]@3 ~@3 d3@4 ~ [d3,a3,d4,f#4]@6 g2@3 ~@9 [b3,d4,g4]@5 ~@7 g4 ~@2 [b3,d4,g4]@2 ~@5 [b3,d4,g4]@2 b2@4 d3@3 g3 ~@2 g3@2 [d3,a3,d4]@5 ~@2 [d3,a3,d4]@4 ~ [d3,d4,f#4]@4 ~@5 [d3,f#4] ~@2 [d3,a3,d4,g4]@5 ~@2 d3@4 ~@2 d3@5 [d3,a3,d4,f#4]@5 ~@20 [b3,g4]@3 ~@3 [b3,d4,g4]@10 ~ [b3,d4,g4]@10 ~@3, d3@18 ~@2 d3@27 g2@34 ~@6 a2@7 ~@55 g2@30 ~@60 g2@46 ~@3, ~@59 g4@21 ~@27 d4@5 ~@7 [a3,d4,g4]@5 ~ d4@4 ~@2 [d4,e4]@4 ~@86 [a3,d4,f#4]@5 ~ [a3,d4,e4]@4 ~@26 d4@3 ~@28]/6", // D Dsus4 D Asus4 D Bm G Bm …
  G: "[a2,d3,a3] ~@2 [a2,d3,a3] ~ a2 a3 ~ a2 ~@2 [a2,d3,a3] ~@2 a2 ~@2 [a2,a3] ~@2 a2 ~@2 [e3,g3] c3 ~@7 c3 ~@2 [c3,e3,g3] ~@2 c3 ~@2 c3 ~@2 [c3,g3] ~@2 [b2,d3,g3,d4]", // D5 A Em C C5 G
  H: "[~@2 d4 g3 ~@4 d4 ~@2 [b2,d3,g3,d4] ~@5 [g3,d4] ~@2 [d3,g3,d4] ~@2 [d3,g3,d4] ~@5 d4 ~@2 [d3,g3,d4] ~@2 [d3,d4] ~@2 [g3,d4] ~@2 [d3,g3,d4] ~@23 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@21 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@21 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@3 d3, ~@47 d3@20 ~@4 c3@68 ~@4 d3@20 ~@4 c3@68 ~@4 d3@20 ~@4 c3@68 ~@5, ~@54 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@10 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@10 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@4, ~@60 d4@12 ~@5 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@16 d4@12 ~@5 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@16 d4@12 ~@5 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@4, ~@80 g4@21 ~@3 g4@36 ~@36 g4@21 ~@3 g4@36 ~@36 g4@21 ~@3 g4@36 ~@4]/7", // G G5 D G5
  I: "[~@17 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@21 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@21 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@3 d3, ~@6 a3@17 c3@68 ~@4 d3@20 ~@4 c3@68 ~@4 d3@20 ~@4 c3@68 ~@5, ~@12 d4@12 ~@2 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@10 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@10 a3@17 ~@3 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@4, ~@29 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@16 d4@12 ~@5 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@16 d4@12 ~@5 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@4, ~@32 g4@21 ~@3 g4@36 ~@36 g4@21 ~@3 g4@36 ~@36 g4@21 ~@3 g4@36 ~@4]/6",
  J: "[~@17 f#4@6 ~@21 e4@7 ~@17 e4@24 ~@16 f#4@6 a4@6 ~@8 b4@4 ~@8 a4@4, ~@6 a3@17 c3@68 ~@4 d3@22 ~@3 d3@10 ~@2 d3@10 ~@2, ~@12 d4@12 ~@2 g3@10 ~@2 g3@10 ~@3 g3@9 ~@3 g3@29 ~@52, ~@29 d4@10 ~@2 d4@10 ~@2 d4@11 ~@2 d4@26 ~@10 d4@17 ~@4 c#4@10 ~@2 c#4@9, ~@32 g4@21 ~@3 g4@36 ~@34 e4@8 ~@4 e4@6]/3",
  K: "~@12 [d4,f#4]@11 ~@2 [a3,d4,g4]@6 [a3,d4,f#4]@4 ~@2 [a3,d4,e4]@5 ~@2 [a3,d4,f#4]@4, d3@15 ~, ~@11 a3@12 ~@25", // D Dsus4 D Asus4 D
  L: "[~@3 g2@4 ~@13 d4@47 ~@29, ~@9 f#4@23 ~@16, ~@19 [a4,d5]@47 ~@30]/2", // D5
})).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: "~@17 d3 ~@3 a3 ~@13 a3@4 ~@9", C: "~@18 [b3,d4,g4] ~ d4 [b3,g4] ~@2 [b3,d4] ~@23",
  D: "~@11 a3@4 ~@3 d3 ~ a3 d4 ~@26",
  E: "~@5 d3 ~@3 [d3,a3] ~@5 [d3,a3] ~ d3 ~@2 [d3,a3] ~@5 c3 [e3,g3] ~ c3 [e3,g3] ~ [e3,g3] ~@5 g3 ~@2 g3 ~@2 e3 ~@3", // D5 Em
  F: "~@2 d3 b2 ~ [b2,d3,g3,d4] ~@2 [b2,d3,g3] ~@5 [b2,d3,g3,d4] ~@2 [b2,d3] ~@2 b2 ~@5 [d3,g3,d4] ~@2 [d3,g3] ~@5 g3 ~@2 d3 ~@9", // 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: "~@23 a2 ~@2 c3!2 ~ d3!2 ~ f3 f3@5 d3!2 ~ f3 f3@5 ~, ~@6 a2 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.4)

// other · electric guitar jazz · "Guitar 4"
const electric_guitar_jazz = note("<~@36 A@3 B C D@2 ~ E@3 ~@22>".pickRestart({
  A: "[~@12 a3@10 ~@2 a4@19 ~ a4@18 ~@9 b4@12 g4@6 f#4@5 ~ e4@18 ~@31]/3", B: "~@47 e4", C: "~@36 c4@6 f#4@3 a4@2 ~",
  D: "[e4@17 ~@7 b3@8 ~@4 g3@8 ~@3 c#3@23 ~@26]/2",
  E: "[~@35 c#4@6 ~ f#4@2 a4@21 ~@6 a4@13 c5@3 ~@3 c5@3 ~@2 c5@20 ~@29]/3",
})).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 ~@5 x ~@18 x ~@6 x ~@12 x ~@2",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@9 B A B A@6 ~@2 A C A D A E A F ~@2 A@5 B A B A@6 ~@2 A C A D A E A G A C A D A E A G ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@8 x!2 ~", C: "~@4 x ~@2 x!3 ~@6", D: "~@6 x ~@3 x!5 ~@9", E: "~@2 x!4 ~@2",
  F: "~@4 x ~@4 x!3 ~@4", G: "~@6 x ~@2 x ~@2 x!2 ~ x!2 ~@7",
})).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 ~ B ~ C ~ D E ~@18 A ~ B ~ C ~ F ~ A ~ B ~ C ~ F ~@3>".pickRestart({
  A: "~@10 x!5 ~", B: "~@15 x!7 ~@2", C: "~@18 x!4 ~@2", D: "~@12 x!3 ~", E: "x!3 ~@5", F: "~@14 x ~@2 x!7",
})).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: "~@6 x ~@5 x ~@6 x ~@5 x ~@5 x ~@6 x ~@5 x ~@3", 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