Strudelify
Bron-Y-Aur Stomp cover art

1970 · Led Zeppelin III

Bron-Y-Aur Stomp

Led Zeppelin

KeyF majorTempo107 bpm
0:00/0:00
// Bron-Y-Aur Stomp — Led Zeppelin
// 107 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 12, 4/4 at bar 12, 9/8 at bar 36, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(107/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.

// chords · acoustic guitar steel · "page"
const acoustic_guitar_steel = note(`<
  A@3 B C D E@2 F@2 G H@4 I J@5 K L M@3 J K L M@3 J N O P Q@2 O P Q R J@2 L M@3 J K L M@3 J N O P Q@2 O P S T U V W V W
  X W Y Z AA AB AC Z AA AB AC AD AE AF@2 AG AH@2 AI AJ AK AL AM AN@5 AO AP@2 AQ@3 AO AP@2 AR@4 AS@2 AT@2 AU AV@3
>`.pickRestart({
  A: "[~@4 [f3,c4,f4,a4]@4 [g3,c4,g4,c5,e5]@3 g3 ~@6 a3 ~ [f3,c4,f4,a4]@4 [c4,g4,c5,e5]@3 g3 ~@6 f3@2 ~@11 f4, ~@12 a3@2 a3@2 f2@2 ~@11 c4@2 f4@2 c4@3 ~ c4@2 f4@2 c4@2 f4@2 c4@2 ~, ~@13 c4@2 f4@2 c4@2 ~@9 a3@2 f3@2 a3@2 ~@2 a3@2 f3@2 a3@2 f3@2 a3@2 f3@2]/3", // F C F C
  B: "g3@2 ~ g3 ~@11 c4, ~ f3 a3 f3 a3 f3 a3 f3, ~@5 c4@2 f4@2 c4@2 f4@2 c4@2 ~",
  C: "~@3 g3 ~@11 c4, g3@2 f3@2 ~ c4@2 f4@2 c4@2 f4@2 c4@2 ~, ~ a3@3 a3@2 f3@2 a3@2 f3@2 a3@2 f3@2",
  D: "~@2 f3@2 a3 f3 ~@2 a3 f3 ~ c3 [c3,d3] ~@2 c4, g3@2 ~@4 f3@2 ~@2 [f3,a3,c4]@2 ~ [f3,c4]@2 ~, ~ a3@3 ~@3 c4@3 ~@4 f3@2", // Csus2 F F5
  E: "[[f3,c4]@2 [f3,c4]@2 a3 f3 ~@2 a3 f3 [f3,c4] f3 g3 f3 ~@2 d3@2 ~ g3 [a3,c4] f3 ~@2 a3 f3@3 a3 f3 f3@2, ~@3 [f3,c4] ~@3 [f3,c4] ~ [c3,f3] ~ f3 ~@4, ~@7 c4@3 ~@5 c4@3 ~@5 c4@2 c4 ~@6]/2", // F5 Am F5
  F: "[g3@2 [f3,c4]@2 [c3,d3] ~ f3 ~@4 c4 ~@4 d3@2 [c3,c4]@2 [c3,d3] ~ f3 [g3,c4] ~@7 c4, ~@5 [f3,c4]@2 [g3,c4]@2 c4@2 ~@2 c4@2 c4@2 ~@8 c4@2 c4@2 c4@2 ~, ~@8 f3@2 f3@2 [f3,c4]@2 f3@2 ~@5 [f3,c4]@2 ~ f3@2 f3@2 f3@2 f3@2]/2", // F5 Csus2 C Csus2 C5 F5 C5 F5
  G: "d3@2 ~@2 c4!2 c3@2 [ab2,eb3,ab3]@2 [eb3,ab3]!2 [d3,f3,bb3]@2 [d3,f3,bb3]!2, ~ [c3,f3]@2 ~@5", // Ab5 Bb F5
  H: "[f3@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2 [ab2,eb3,ab3]@2 [eb3,ab3]!2 [bb2,f3,bb3]@2 [bb2,f3,bb3] f3 f3@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2 [ab2,eb3,ab3]@2 [eb3,ab3]!2 [bb2,f3,bb3]@2 [bb2,f3,bb3] f3 f3@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2 [ab2,eb3,ab3]@2 [eb3,ab3]!2 [bb2,f3,bb3]@2 [bb2,f3,bb3] [c3,f3,a3]@3 [f2,c3,f3,a3]!9 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!3, ~@15 [c3,a3]@3 ~@13 [c3,a3]@3 ~@30]/4", // F Ab5 Bb5 F Ab5 Bb5 F Ab5 …
  I: "[f2,c3,f3,a3]!11 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!3", // F
  J: "[f2,c3,f3,a3]@2 [f2,c3,f3,a3]!5 [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] ~ eb2, ~@8 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~ [c2,c3]@2", // F F5 Am Ebdim Bbmaj7 C
  K: "~ a3 [f2,c3,f3,a3]!3 [f2,c3,f3] [f2,c3,f3,a3] [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] ~ eb2, [f2,c3,f3]@2 ~@6 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~ [c2,c3]@2", // F F5 F F5 Am F5 Ebdim Bbmaj7 …
  L: "[bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [bb2,f3,bb3,d4]@2 [f2,f3,a3]@2 [ab2,eb3,ab3,c4]@2", // Bb F Ab
  M: "[a2,e3,a3,db4]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [f2,c3,f3,a3]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [f2,c3,f3]@2 [ab2,eb3,ab3]@2", // A Bb F Bb F5 Ab5
  N: "~ a3 [f2,c3,f3,a3]!3 [f2,c3,f3] [f2,c3,f3,a3] [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] [c2,c3]@2, [f2,c3,f3]@2 ~@6 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~@3", // F F5 F F5 Am C F5 Ebdim …
  O: "[g2,d3,g3]@2 [g2,d3,g3] ~ [g2,d3,g3,b3]@2 [d3,g3,b3]!2 [d3,g3,b3]@3 [d3,g3,b3]@2 [d3,g3,b3] [d3,g3,b3]@2", // G5 G
  P: "[f3,bb3,d4]@2 [f3,bb3,eb4]@2 [f3,bb3,d4] [f3,c4]@2 [f3,c4] [f3,bb3,d4]@2 [f3,bb3,d4]!2 [f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2", // Bb Ebsus2 Bb F5 Bb F Ab
  Q: "[bb2,f3,bb3,d4]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [c2,f2,c3,f3,a3]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2", // Bb F Ab
  R: "[bb2,f3,bb3,d4]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [c2,f2,c3,f3,a3]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2", // Bb F
  S: "[f2,bb2,c3,f3,a3,bb3,d4]@3 [f2,c3,f3,a3] [c2,f2,c3,f3,a3]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2 [bb2,f3,bb3,d4]@2", // Dm7 F Ab Bb
  T: "[f2,c3,f3,a3]@3 [f2,c3,f3,a3] [c2,f2,c3,f3,a3]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2", // F
  U: "[f4,a4] [f4,a4,c5]!3 ~ [c3,f3,a3] [c3,f3,a3]@2 [f4,a4] [f4,a4,c5]!3 [f4,a4,c5]@2 [c3,f3,a3]@2", // F
  V: "[f4,a4] [f4,a4,c5]!3 [f4,a4,c5]@2 [f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2 [bb2,f3,bb3,d4]@2 [f2,c3,f3,a3] [c3,f3,a3] [f2,c3,f3,a3]@2", // F Ab Bb F
  W: "~ [f4,a4,c5] [f2,c3,f4,a4,c5]!3 [f2,c3,f3,a3]!3 ~ [f4,a4,c5] [f2,c3,f4,a4,c5]!3 [f2,c3,f3,a3]!3, [f2,c3,f4,a4] ~@3 [f2,c3,f4,a4] ~@3", // F
  X: "~ [f4,a4,c5] [f2,c3,f4,a4,c5]!2 [f2,c3,f4,a4,c5]@2 [f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2 [bb2,f3,bb3,d4]@2 [f2,c3,f3,a3] [c3,f3,a3] [f2,c3,f3,a3]@2, [f2,c3,f4,a4] ~@7", // F Ab Bb F
  Y: "~ [f4,a4,c5] [f2,c3,f4,a4,c5]!2 [f2,c3,f4,a4,c5]@2 [f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2 [bb2,f3,bb3,d4]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2, [f2,c3,f4,a4] ~@7", // F Ab Bb F
  Z: "[g2,b2,d3,g3,b3]@2 [g2,b2,d3,g3,b3]@2 [g2,d3,g3,b3]!2 [g2,d3,g3,b3]@2 [g2,d3,g3,b3]!8", // G
  AA: "[bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4] [bb2,f3,bb3,e4] [bb2,f3,bb3,d4] [bb2,e3,c4]@3 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4] [c3,f3,a3] [c3,f3,a3]@2 [eb3,ab3,c4]@2", // Bb C7 Bb F Ab
  AB: "[f3,bb3,d4]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [c2,f2,c3,f3,a3]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2", // Bb F Ab
  AC: "[bb2,f3,bb3,d4]@2 [f2,c3,f3,a3]!2 [c2,f2,c3,f3,a3]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2", // Bb F
  AD: "[f3,c4,f4,a4]@2 [c3,f3,a3]@2 c3@2 [c3,f3]!2 g3 [a3,f4] a3 f3 ~@2 f3@2, ~@2 [c5,e5]@2 ~ f4 f2 ~, ~@13 c4@3", // F F5 Dm C
  AE: "[f3,c4,f4,a4]@2 [c3,f3,a3]!2 [g4,c5,e5]@2 [c3,f3,a3]!2 g3 [a3,f4] ~@5 g3, ~ f2, ~@5 [a3,f4] a3 f3, ~@11 f4@2 c4@3", // F C F Dm
  AF: "~@3 [g3,f4] ~@3 [g3,c4] ~@3 c4 ~@2 f3@2, a3@2 f3@2 ~ c4@2 ~ a3@2 f3@2 g3@2 ~@2, ~ c4@2 ~ a3@2 f3@2 ~ c4@2 ~@2 a3@3", // G7 C5
  AG: "[g3,a3] f3 ~@2 a3 f3 [f3,c4] f3 g3 f3 ~@2 d3@2 ~ g3, ~ [f3,c4] ~@3 [f3,c4] ~ [c3,f3], ~@3 c4@3 ~@5 c4@3 ~@2", // Gsus2 F5
  AH: "[a3 f3 ~@2 a3 f3 ~ c4 g3 f3 ~ c4 d3@2 f3@2 f3!2 [c3,f3]@2 f3@2 f3!2 ~@2 [f3,c4]@3 [f3,c4] [f3,c4]@2, ~ c3 ~ f3 ~ c3 ~ c3@2 ~ f2@4 ~@2, ~@3 c4@4 ~@13 c4@4 c3@6 ~@2]/2", // F5
  AI: "[f2,c3,f3,c4]@2 [f2,c3,f3,c4]!3 [f2,c3,f3,c4]@4 [f2,c3,f3,c4] [f2,c3,f3,c4]@2 [f2,c3,f3,c4]@2 [f2,c3,f3,c4]!2", // F5
  AJ: "[ab2,eb3,ab3]@2 [bb2,f3,bb3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!10", // Ab5 Bb5 F
  AK: "[ab2,eb3,ab3]@2 [d3,f3,bb3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!10", // Ab5 Bb F
  AL: "[ab2,eb3,ab3]@2 [d3,f3,bb3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3] [f2,f3]!2 [f2,c3,f3,a3]!2 [f2,f3] [f2,c3,f3,a3] [f2,f3]!2 [f2,c3,f3,a3]", // Ab5 Bb F
  AM: "[f2,f3]!2 [f2,c3,f3,a3] [f2,f3]!2 [f2,c3,f3,a3]!2 [f2,f3] [f2,c3,f3,a3] [f2,f3]!2 [f2,c3,f3,a3]!2 [f2,f3]!2 [f2,c3,f3,a3]", // F
  AN: "[[f2,c3,f3,a3]!4 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!5 [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] ~ eb2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!5 [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] ~ eb2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!5 [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] ~ eb2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!5 [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] ~ eb2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [bb2,f3,bb3,d4]@2, ~@12 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~ [c2,c3]@2 ~@8 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~ [c2,c3]@2 ~@8 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~ [c2,c3]@2 ~@8 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~ [c2,c3]@2 ~@12]/5", // F F5 Am F F5 Am F F5 …
  AO: "[f2,f3,a3]@2 [ab2,eb3,ab3,c4]@2 [a2,e3,a3,db4]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [f2,c3,f3,a3]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2", // F Ab A Bb F Bb
  AP: "[f2,c3,f3]@2 [ab2,eb3,ab3]@2 [a2,e3,a3,db4]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [f2,c3,f3,a3]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2", // F5 Ab5 A Bb F Bb
  AQ: "[[f2,c3,f3]@2 [ab2,eb3,ab3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!5 [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] ~ eb2 ~ a3 [f2,c3,f3,a3]!3 [f2,c3,f3] [f2,c3,f3,a3] [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] ~ eb2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]!2 [bb2,f3,bb3,d4]@2, ~@12 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~ [c2,c3]@2 [f2,c3,f3]@2 ~@6 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~ [c2,c3]@2 ~@12]/3", // F5 Ab5 F F5 Am F F5 F …
  AR: "[[f2,c3,f3]@2 [ab2,eb3,ab3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!5 [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] ~ eb2 ~ a3 [f2,c3,f3,a3]!3 [f2,c3,f3] [f2,c3,f3,a3] [f2,f3,a3] ~ c3 [c3,f3] ~ a2 [a2,c3] [c2,c3]@2 [g2,d3,g3]@2 [g2,d3,g3] ~ [g2,d3,g3,b3]@2 [d3,g3,b3]!2 [d3,g3,b3]@3 [d3,g3,b3]@2 [d3,g3,b3] [d3,g3,b3]@2 [f3,bb3,d4]@2 [f3,bb3,eb4]@2 [f3,bb3,d4] [f3,c4]@2 [f3,c4] [f3,bb3,d4]@2 [f3,bb3,d4]!2, ~@12 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~ [c2,c3]@2 [f2,c3,f3]@2 ~@6 [eb3,a3]@2 ~ [bb2,f3,a3]@2 ~@31]/4", // F5 Ab5 F F5 Am F F5 F …
  AS: "[f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2 [bb2,f3,bb3,d4]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [c2,f2,c3,f3,a3]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3]", // F Ab Bb F
  AT: "[[f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2 [g2,d3,g3]@2 [g2,d3,g3]!2 [g2,d3,g3,b3]@2 [d3,g3,b3]!2 [d3,g3,b3]@3 [d3,g3,b3]@2 [d3,g3,b3] [d3,g3,b3]@2 [f3,bb3,d4]@2 [f3,bb3,eb4]@2 [f3,bb3,d4] [f3,c4]@2 [f3,c4] [f3,bb3,d4]@2 [f3,bb3,d4]!2]/2", // F Ab G5 G Bb Ebsus2 Bb F5 …
  AU: "[f2,c3,f3,a3]@2 [ab2,eb3,ab3,c4]@2 [f2,bb2,c3,f3,a3,bb3,d4]@3 [f2,c3,f3,a3] [c2,f2,c3,f3,a3]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [f2,c3,f3,a3]@2", // F Ab Dm7 F
  AV: "[[ab2,eb3,ab3,c4]@2 [bb2,f3,bb3,d4]@2 [f2,c3,f3,a3]@3 [f2,c3,f3,a3] [c2,f2,c3,f3,a3]@2 [f2,c3,f3,a3]@32 ~@6]/3", // Ab Bb F
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.1)

// bass · fretless bass · "jones"
const bass = note(`<
  ~@22 A B@2 C D E A B@2 C D F G A H I J A H K L@2 A B@2 C D E A B@2 C D F G A H I G A M N O ~@7 P Q H I R Q H S O ~@15
  T U@3 V W X U@3 V W Y@2 Z@2 AA@2 AB AC@3
>`.pickRestart({
  A: "bb2@6 f2 ab2", B: "a2 bb2@2 f2 bb2@2 f2 ab2", C: "a2@2 bb2@4 f2@2 bb2@4 ab2 eb2@3", D: "f2@2 ~@4 eb2 e2",
  E: "f2@2 ~@5 a2", F: "f2 ~@3", G: "g2@7 g2", H: "bb2 f2@2 c2 f2@2 f2 ab2", I: "bb2 f2@2 c2 f2@2 f2 eb2",
  J: "g2@3 g2!5", K: "bb2@2 f2@4 c2@2 f2@4 a2 f2 eb2@2", L: "f2 ~@7", M: "f2@2 c2 f2@2 f2 ab2 bb2",
  N: "f2@4 c2@2 f2@2 eb2 c2 bb1 c2 eb2 c2 a1@2", O: "f1 ~", P: "g1@2 g1@3 g1@3 g1@3 g1@3 g1@2",
  Q: "bb1@3 c2 d2 f2 g2@2 bb2@4 f2@2 ab2@2", R: "g2@2 g2@4 g2@2 f2@3 d2 c2@2 d2@2", S: "bb2 f2@2 c2 f2@2 c2@2",
  T: "~ bb2@3", U: "f2 ab2 a2 bb2@2 f2 bb2@2", V: "ab2 eb2@3 f2@4 ~@8", W: "eb2 e2 f2@2 ~@4", X: "~ a2 bb2@6",
  Y: "[~@2 g2@7 g2 bb2@6]/2", Z: "f2 ab2 bb2 f2@2 c2 f2@2", AA: "[f2 eb2 g2@7 g2 bb2@6]/2",
  AB: "f2 ab2 f2@2 c2 f2@2 f2", AC: "[ab2 bb2 f2@2 c2 f1@16 ~@3]/3",
})).s("gm_fretless_bass").gain(0.4).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~@18 A@16 ~ B C D A B C D A@15 B C D A B C D A E A E A E A E A B C D A B C F ~@14 G A@15 H@2 I@2 H J ~@2
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x!2 ~ x!2 ~ x!2", D: "x!2 ~ x!2 ~ x ~", E: "x ~ x ~ x!3 ~", F: "x!2 ~ x!2 ~@3",
  G: "~ x!3", H: "x!4 ~ x!3", I: "x!8", J: "x!6 ~@2",
})).gain(0.52)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@18 A@16 ~ B C D A B C D A@15 B C D A B C D A@9 B C D A B C E ~@14 F A@15 G H I@2 H J ~@2
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~@2 x ~@2 x ~@2", D: "~@2 x ~@2 x ~ x", E: "~ x ~@2",
  F: "x ~@2 x ~ x ~ x", G: "~@4 x ~ x!2", H: "x ~ x ~ x ~ x!2", I: "x!8", J: "x ~ x!2 ~@4",
})).gain(0.52)

// drums · shaker
const shaker = s("sh").struct("<~@94 A B@15 C D E B@2 F ~@2>".pickRestart({
  A: "~@3 x!2 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", C: "x ~ x!3 ~ x ~ x!3 ~ x!3 ~",
  D: "x!3 ~ x!3 ~ x!3 ~ x!3 ~", E: "x!3 ~ x ~ x!3 ~ x!3 ~ x!2", F: "x ~ x!3 ~ x!3 ~ x ~@5",
})).gain(0.52)

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

stack(acoustic_guitar_steel, bass, kick, clap, open_hat, shaker, rim)

More by Led Zeppelin