Strudelify

I'm Gonna Crawl

Led Zeppelin

KeyC majorTempo78 bpm
0:00/0:00
// I'm Gonna Crawl — Led Zeppelin
// 78 bpm, 12/8, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 4, 4/4 at bar 4, 12/8 at bar 6, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: duplicate parts dropped: ch 8 "Electric Guitar IV" distortion guitar (copy of ch 3 "Electric Guitar I" overdriven guitar, 0.083 beats late); ch 7 "Electric Guitar III" electric guitar jazz (copy of ch 4 "Electric Guitar II" electric guitar jazz)
// note: Full arrangement: all 70 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(78/6)

// 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.

// other · overdriven guitar · "Electric Guitar I"
const overdriven_guitar = note("<~@34 A B C D E F G H I J K L M N O@2 ~@20>".pickRestart({
  A: "~@20 e4@3 ~", B: "d#4@9 ~ e4@2 e4 d4 c4@3 ~@3 d#3 e3 g3 a3",
  C: "c4 [a3,c4] e4@2 a4 g4 [e4,g4] e4 d4 [a3,c4] c4 [a3,c4] e4@8 e4@2 e4@2", // Am Em Am
  D: "d#4@11 [d4,d#4] d4@2 c4@3 ~@2 c4 g4 a4 c5@2", E: "c5@2 g4@9 ~ a4@8 a4@3 a4",
  F: "g4 f4@4 ~ e4 [e4,f4] d4 [a3,c4] a3 [c4,d4] c4 c4@4 ~@2 b4 c5 [b4,c5] b4 [g4,a4], ~@13 a3 ~@10", // Fmaj7 Am Csus2 Cmaj7 Gsus2
  G: "e4 [e4,f4] d4 [d4,e4] c4 [a3,d4] c4 [c4,d4] a3 [e3,g3] a3 [e3,g3] a3 e3 a3 e3 g3 a3@6 ~", // Fmaj7 Dsus2 D5 Csus2 Em
  H: "~ c4@2 d4 e4 [e4,f4] e4 [f4,g4] a4 [b4,c5] b4 [b4,c5] a4@5 ~ g3 c5 ~ a4 c5 d5", // Fmaj7 Fsus2 Cmaj7
  I: "e5 [b4,c5] a4@2 a4 b4 d5 ~@3 e5 f5 a5@2 a5@7 ~@3", J: "~@2 b5@4 a5@2 d5@2 d5@4 f5 g5 g#5 a5@3 b5@2 b5@2",
  K: "b5 a5 g5@6 g5@2 a5@2 b5 a5 g5@3 ~ a5@2 g5@2 a5@2",
  L: "[c5,e5,g5]!4 [c5,e5,g5]@2 [c5,e5,g5]!4 [c5,e5,g5]@2 [c5,e5,g5]!4 [c5,e5,g5]@2 [c5,e5,g5]@2 ~@2 [d5,g5,b5]@2", // C G
  M: "g5 f5@8 ~ a5 [f5,g5]@2 g5 ~@4 a5 [f5,g5] g5 f5@3", // Fsus2
  N: "[c5,e5,g5]!4 [c5,e5,g5]@2 [c5,e5,g5]!4 [c5,e5,g5]@2 [c5,e5,g5]!4 [c5,e5,g5]@2 e5@2 ~@2 b4@2", // C
  O: "[[b4,g5] [a4,f5]@4 ~@13 a5@11 ~ a5@17 ~]/2", // Em Dm
})).s("gm_overdriven_guitar").gain(0.48).pan(0.3)

// chords · electric guitar jazz · "Electric Guitar II"
const electric_guitar_jazz = note(`<
  ~@5 A B C@6 D E@3 F G@6 H I@2 J K L M N@2 O@2 C@3 D E@3 F P Q R S R T G@20 U
>`.pickRestart({
  A: "~@7 e3 g3 c4 e4 c4, ~ c3", B: "~@2 g#3@2 c4@2 g4 a4@4 ~@3 e3@2 g3@2 c4@2 e4@2 c4@2, d#3 [b3,d#4] c3@2",
  C: "~ g#3 c4 g4 a4@2 ~ e3 g3 c4 e4 c4, d#3 [b3,d#4] c3@2", // B
  D: "~@2 g#3@2 c4@2 g4@2 a4@4 ~ [a2,e3,a3,c4]@5 ~@4 g3@2, d#3 [b3,d#4] [e4,a4] ~", // Am B A5
  E: "f3 g3 f3@3 ~ [a3,c4,f4] ~@3 g3@2 a3@5 ~ [c4,e4,a4] ~@3 g3@2", F: "f3 g3 f3@9 ~ [d4,f4]!3 [c4,e4] ~@8",
  G: "~ e3 g3 c4 e4 c4 ~ g#3 c4 g4 a4@2, c3@2 d#3 [b3,d#4]", // B
  H: "~ [a2,e3,a3,c4]@5 ~@4 g3@2 f3 g3 f3@3 ~ [a3,c4,f4] ~@3 g3@2, [e4,a4] ~@3", // Am F A5
  I: "a3@5 ~ [c4,e4,a4] ~@3 g3@2 f3 g3 f3@3 ~ [a3,c4,f4] ~@3 g3@2", J: "a3@5 ~ [c4,e4,a4] ~@3 g3@2 f3 g3 f3@9 ~",
  K: "[d4,f4]!3 [c4,e4] ~@8 [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@5 ~", // Dm C D
  L: "d3@2 a3@2 [d4,f#4]@4 [d3,a3,d4,f#4]@3 ~@3 b2@2 d3@2 g4@2 d4@2 d4@2, ~ g2", // D
  M: "~@2 b2@2 d3@4 d4@2 ~@2 [a2,e3,a3,c4,e4,a4]!5 ~ [a2,e3,a3,c4,e4,a4]!5 ~, g2@5 ~@7", // Am
  N: "[[a2,e3,a3,c4,e4,a4]!5 ~ [a2,e3,a3,c4,e4,a4]@3 ~ [g3,b3]@2 [g3,b3]@2 [f3,a3]@21 ~ [a2,e3,a3,c4,e4,a4]!5 ~ [a2,e3,a3,c4,e4,a4]!5 ~]/2", // Am G F Am
  O: "[[a2,e3,a3,c4,e4,a4]!5 ~ [a2,e3,a3,c4,e4,a4]@3 ~ [g3,b3]@2 [g3,b3]@2 [f3,a3]@21 ~@3 e3@2 g3@2 c4@2 e4@2 c4@2, ~@3 c3]/2", // Am G F
  P: "[d3,a3,d4,f#4]@2 ~@4 [d3,a3,d4,f#4] ~@5 d3@2 a3@2 [d4,f#4]@4 [d3,a3,d4,f#4]@3 ~", // D
  Q: "~ b2 d3 g4 d4!2 ~ b2 d3@2 d4 ~, g2@6 g2@5 ~",
  R: "[a2,e3,a3,c4,e4,a4]!5 ~ [a2,e3,a3,c4,e4,a4]!5 ~ [a2,e3,a3,c4,e4,a4]!5 ~ [a2,e3,a3,c4,e4,a4]@3 ~ [g3,b3]@2", // Am G
  S: "[g3,b3]@2 [f3,a3]@9 ~ e4@2 c4@2 a3@7 ~", T: "[g3,b3]@2 [f3,a3]@21 ~", U: "~ [c3,e3]@22 ~, [a3,d4]@23 ~",
})).s("gm_electric_guitar_jazz").gain(0.44).pan(0.1)

// chords · synth strings 1 · "Synthesizer"
const synth_strings_1 = note(`<
  A B@5 C D E F G@2 H I J K L M N@2 O P@3 Q R S@2 T@7 H@3 U V W X M Y Z AA AB AC AD N AE AF AG AH@2 AI@2 AJ AK AL AM N
  AN AO@2 AP@2 AQ N AR
>`.pickRestart({
  A: "~@9 c4@4 [b3,d4]@4 [a3,c4,e4]@3 [g3,b3,c4,e4,g4]@4", // Bm Am Cmaj7
  B: "[[f3,c4,e4,a4]@4 [e3,c4,g4,c5]@3 d5@4 e5@4 d5@3 c5@4 [a3,c4]@4 b3@3 [c4,e4,a4,c5]@4 [a3,c4,e4,a4]@4 f#3@14 f#3@4 c4@4 d4@3 ~@6 f4@2 ~ g4@2 ~@12 g5@4 ~ [c5,e5,g5]@17 ~ [g3,c4,e4]@11 ~, ~@7 [d3,a3,f4,a4]@6 ~@2 [e3,f#4,g4]@6 ~ [e4,a4]@6 ~@9 [d3,a3,c4,e4]@18 ~@4 g2@14 g2@8 d5@9 ~@30, ~@59 [f3,a3]@6 ~ [g3,b3]@6 ~ [f3,f4,g#4]@17 ~@30, ~@62 e4@6 ~@9 b4@13 ~@30]/5", // Fmaj7 C Am C Dm Em A5 Am …
  C: "[g#3,c4,d#4]@5 ~ g4 a4@4 ~ [g3,c4,e4]@11 ~, ~@6 [b3,d#4]@5 ~@13", // G# C B
  D: "[g#3,c4,d#4]@5 ~ g4@2 a4@3 ~ [g3,c4,e4]@11 ~, ~@6 [b3,d#4]@5 ~@13", // G# C B
  E: "[g#3,c4,d#4]@5 ~ g4@2 a4@3 ~ [g3,c4,e4]@5 ~@3 e4@2 g4@2, ~@6 [b3,d#4]@5 ~@7 c4@6", // G# C B
  F: "[g#3,c4,d#4]@5 ~ g4@2 a4@3 ~ [g3,c4,e4]@8 g4@2 [g3,c4,e4]@2, ~@6 [b3,d#4]@5 ~@13", // G# C B
  G: "[g#3,c4,d#4]@5 ~ g4@2 a4@3 ~ [c4,e4,g4]@5 ~@3 e4@2 g4@2, ~@6 [b3,d#4]@5 ~@7 c4@6", // G# C B
  H: "[g#3,c4,d#4]@5 ~ g4@2 a4@3 ~ [c4,e4,g4]@11 ~, ~@6 [b3,d#4]@5 ~@13", // G# C B
  I: "[g#3,c4,d#4]@5 ~ g4@2 a4@3 ~ [c4,e4,a4,c5]@11 ~, ~@6 [b3,d#4]@5 ~@13", // G# Am B
  J: "[g4,d5]@2 [g4,c5]@4 [g4,c5]@2 [g4,c5]@2 ~@2 [c4,e4,a4,c5]@11 ~, [g3,a3,d#4,a4]@7 ~@17", // G5 C5 Am Am7b5
  K: "[g4,d5]@2 [g4,c5]@4 [g4,c5]@2 a4@2 [g4,c5]@2 [c4,e4,a4,c5]@11 ~, [g3,a3,d#4,a4]@7 ~@17", // G5 C5 Am Am7b5
  L: "[g4,d5]@2 [g4,c5]@4 [g4,c5]@2 [a4,d5]@3 ~ [c4,e4,a4,c5]@11 ~, [g3,a3,d#4,a4]@7 ~@17", // G5 C5 D5 Am Am7b5
  M: "[g4,d5]@2 g4@4 [a4,d5]@2 [g4,c5]@3 ~ [g4,d5]@2 [g4,c5]@3 ~@7, [g3,a3,d#4,a4]@7 ~@5 [g3,a3,d#4,a4]@5 ~@7, ~@2 c5@3 ~@19", // G5 D5 C5 G5 C5 Am7b5
  N: "[c4,e4,g4]@11 ~ [g#3,c4,d#4]@5 ~ g4@2 a4@3 ~, ~@18 [b3,d#4]@5 ~", // C G# B
  O: "[c4,e4,g4]@8 e4@2 g4@2 [g#3,c4,d#4]@5 ~ g4@2 a4@3 ~, ~@18 [b3,d#4]@5 ~", // C G# B
  P: "[c4,e4]@2 [g3,c4,e4] ~ g3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g#3,c4,d#4]@5 ~ g4@2 a4@3 ~, g4@11 ~@7 [b3,d#4]@5 ~", // C G# B
  Q: "[a3,c4,e4,a4]@8 [c4,e4,a4,c5]@3 ~ [g4,d5]@2 [g4,c5]@2 [g4,c5]@2 [g4,c5]@2 [a4,d5]@2 ~@2, ~@12 [g3,a3,d#4,a4]@7 ~@5", // Am G5 C5 D5 Am7b5
  R: "[a3,c4,e4,a4]@11 ~ [g4,d5]@2 [g4,c5]@4 [g4,c5]@2 [a4,d5]@3 ~, ~@12 [g3,a3,d#4,a4]@7 ~@5", // Am G5 C5 D5 Am7b5
  S: "[a3,c4,e4,a4]@11 ~ [g4,d5]@2 g4@4 [a4,d5]@2 [g4,c5]@3 ~, ~@12 [g3,a3,d#4,a4]@7 ~@5, ~@14 c5@3 ~@7", // Am G5 D5 C5 Am7b5
  T: "[[g4,d5]@2 [g4,c5]@3 ~@7 [a3,c4,e4,f#4,a4]@23 ~ [g3,b3,d4,e4]@5 ~@5 a4@2 b4@3 ~ c5@4 d5@3 ~ [a3,a4,c5,e5]@23 ~ d4@11 ~ c4@11 ~ [a3,a4,c5,e5]@23 ~ [d#3,g3,a3,c4]@23 ~ [c4,e4,g4]@11 ~, [g3,a3,d#4,a4]@5 ~@31 g4@9 ~@123, ~@42 [g3,b3,d4,f4]@17 ~@25 [d#3,g3,a3]@23 ~@61]/7", // G5 C5 F#m7b5 Em7 Am Am7b5 C Am7b5 …
  U: "[g#3,c4,d#4]@5 ~ g4@2 a4@3 ~ [a3,c4,e4,a4]@8 [c4,e4,a4,c5]@3 ~, ~@6 [b3,d#4]@5 ~@13", // G# Am B
  V: "[g4,d5]@2 [g4,c5]@2 [g4,c5]@2 [g4,c5]@2 [a4,d5]@2 ~@2 [a3,c4,e4,a4]@11 ~, [g3,a3,d#4,a4]@7 ~@17", // G5 C5 D5 Am Am7b5
  W: "[g4,d5]@2 [g4,c5]@4 [g4,c5]@2 [a4,d5]@3 ~ [a3,c4,e4,a4]@11 ~, [g3,a3,d#4,a4]@7 ~@17", // G5 C5 D5 Am Am7b5
  X: "[g4,d5]@2 g4@4 [a4,d5]@2 [g4,c5]@3 ~ [a3,c4,e4,a4]@11 ~, [g3,a3,d#4,a4]@7 ~@17, ~@2 c5@3 ~@19", // G5 D5 C5 Am Am7b5
  Y: "[a3,c4]@10 [f4,g4]@2 [f4,a4]@3 ~ [g4,b4]@2 [a4,c5]@5 ~, [f4,a4]@9 ~@3 [a3,c4,d4]@11 ~", // Am Fsus2 F G Am F D7
  Z: "[d4,g4,b4,d5]@5 ~ [f4,a4,c5,e5]@5 ~ [g3,d4,g4,b4,d5]@11 ~, g3@11 ~@13", // G Fmaj7 G
  AA: "[a3,a4,c5,e5,a5]@5 ~ [a3,a4,c5,e5,a5]@5 ~ [a3,a4,c5,e5,a5]@9 ~ [a4,c5,e5,a5]@2", // Am
  AB: "d4@5 ~ c4@5 ~ a4@5 ~ [c4,c5]@5 ~, [d#3,g3]@23 ~, a3@12 a3@11 ~", // C D#
  AC: "[a3,a4,c5,e5,a5]@5 ~ [a3,a4,c5,e5,a5]@5 ~ [a3,a4,c5,e5,a5]@9 ~@3", // Am
  AD: "[d#3,g3,a3,d4]@5 ~@7 g4 a4@10 ~, ~@6 [d#3,g3,a3,d4]@17 ~", // D#maj7
  AE: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4]@2 g4@2 g3@2 [g#3,c4,d#4]@5 ~ g4@2 a4@3 ~, ~@18 [b3,d#4]@5 ~", // C G# B
  AF: "[a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [e4,g4] ~ e4@2 g4@2 [g#3,c4,d#4]@5 ~ g4@2 a4@3 ~, ~@6 c4@5 ~@7 [b3,d#4]@5 ~, ~@8 f4 ~@15", // Am Em G# B
  AG: "[c4,e4,g4]@2 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4]@3 ~ [g#3,c4,d#4]@5 ~ g4@2 a4@2 g4@2, ~@18 [b3,d#4]@5 ~", // C G# B
  AH: "[[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4]@2 g4@2 g3@2 [g#3,c4,d#4]@5 ~ g4@2 a4@2 ~@2 [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g#3,c4,d#4]@5 ~ g4@2 a4@3 ~, ~@18 [b3,d#4]@4 g4@13 ~@7 [b3,d#4]@5 ~]/2", // C G# C G# B
  AI: "[g3,c4,e4]!7 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g#3,c4,d#4]@5 ~ g4@2 a4@2 g4@2, ~@18 [b3,d#4]@5 ~", // C G# B
  AJ: "[c4,e4,g4]@2 [g3,c4,e4] ~ [c4,e4,g4] ~@3 g4@4 [g#3,c4,d#4]@5 ~ g4@2 g#4@2 g4@2, ~@6 [a3,c4,e4]@6 ~@6 [b3,d#4]@5 ~", // C G# Am B
  AK: "[c4,e4,g4]@5 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g#3,c4,d#4]@5 ~ g4@2 a4@2 g4@2, ~@18 [b3,d#4]@5 ~", // C G# B
  AL: "[c4,e4,g4]@2 [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g#3,c4,d#4]@5 ~ g4@2 a4@2 g4@2, ~@18 [b3,d#4]@5 ~", // C G# B
  AM: "[c4,e4,g4]@5 ~ [g3,c4,e4]@5 ~ [g#3,c4,d#4]@5 ~ g4@2 a4@2 g4@2, ~@18 [b3,d#4]@5 ~", // C G# B
  AN: "[g3,c4,e4,g4,c5]@11 ~ [g#3,c4,d#4,g#4,c5]@5 ~ [g4,c5]@2 d5@3 ~, ~@18 [g3,b3,d4]@5 ~", // C G# C5 G
  AO: "[g3,c4,e4]@10 d5@2 [g#3,c4,d#4,g#4,c5]@5 ~ [g4,c5]@2 d5@3 ~, [g4,c5]@9 ~@9 [g3,b3,d4]@5 ~", // C G# C5 G
  AP: "[g4,c5]@4 d5 c5 [g#4,c5] d5 c5 [g4,c5] d5 c5, [g3,c4,e4]@11 ~ [g#3,c4,d#4]@5 ~ [g3,b3,d4]@5 ~", // C5 G# C5 C G# G
  AQ: "[g4,c5]@8 d5@2 c5@2 [g#3,c4,d#4,g#4,c5]@5 ~ [g4,c5]@2 d5@3 ~, [g3,c4,e4]@11 ~@7 [g3,b3,d4]@5 ~", // C5 G# C5 C G
  AR: "[a3,d4,e4,g4]@12 [g3,d4,f#4]@11 ~", // Asus4 Gmaj7
})).s("gm_synth_strings_1").gain(0.28)

// bass · fretless bass · "Bass Guitar"
const bass = note(`<
  ~@5 A B C D E D F G H I J K L M N O P Q R S@2 T U V W X Y Z AA AB AC AD D AE AF AG AH AI AJ AK AL AM AN AO AP AQ N AR
  AS AQ AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH
>`.pickRestart({
  A: "~@12 c2@11 ~", B: "g#2@5 ~ g2@5 ~ c2@5 ~@5 c2@2", C: "g#1@5 ~ g1@5 ~ c2@3 ~ c2@2 ~@4 c2@2",
  D: "g#2@5 ~ g2@5 ~ c2@3 ~ c2@2 ~@4 c2@2", E: "g#1@5 ~ g1@5 ~ c2@5 ~@7", F: "g#2@5 ~ g2@3 ~ g1@2 c2@5 ~@5 c2@2",
  G: "g#2@5 ~ g2@5 ~ c2@3 ~ c2@2 ~@2 e2 ~ g2 ~", H: "g#2@5 ~ g2@5 c2 a1@3 ~ a1@2 ~@4 g1@2",
  I: "f1@9 ~ c2@2 c2@5 ~@3 a1 ~ g1 ~", J: "f1@9 ~ g1@2 a1@3 ~ a1@2 ~@2 e1 ~ g1 ~",
  K: "f1@8 ~@2 g1@2 a1@3 ~ a1@2 ~@2 e1 ~ g1 ~", L: "f1@2 f1@2 f1@2 f1@2 f1@2 f1@2 f1!3 f1@3 ~@6",
  M: "c2@11 ~ g#1@5 ~ g1@2 a1@2 b1@2", N: "c2@3 ~ c2@2 ~@2 e2 ~ g2 ~ g#2@5 ~ g2@5 ~", O: "c2@5 ~@5 c2@2 g#1@5 ~ g1@5 ~",
  P: "c2@3 ~ c2@2 ~@4 c2@2 g#1@5 ~ g1@5 b1", Q: "c2@5 ~@5 c2@2 g#2@5 ~ g2@5 ~", R: "c2@5 ~@5 c2@2 g#2@5 ~ g2@5 c2",
  S: "a1@3 ~ a1@2 ~@4 g1@2 f1@3 ~ f1@2 ~@2 g1 ~ g#1@2", T: "a1@3 ~ a1@2 ~@2 e1 ~ g1 ~ f1@3 ~ f1@2 ~@2 g1 ~ g#1@2",
  U: "a1@3 ~ a1@2 ~@4 g1@2 f1@3 ~ f1@2 f1@2 f1@3 ~", V: "f1@2 f1@2 ~@8 d2@5 ~ d2@3 ~ a1@2",
  W: "d2@5 ~ a2@2 e3@2 d3@2 g2@5 ~ d2@5 ~, ~@8 d3 ~@15", X: "g1@5 ~ g1@2 g1 e1 g1 g#1 a1!5 ~ a1!5 ~",
  Y: "a1!5 ~ a1@5 ~ f1@3 ~ f2@4 a1@2 c2 g2", Z: "f2@9 ~ a1@2 a1!5 ~ a1!5 ~", AA: "a1!5 ~ a1@2 g1@2 f1@2 f1@9 ~ c2@2",
  AB: "f2@11 ~ c2@8 e2 ~ g2@2", AC: "g#2@5 ~ g2@5 ~ c2@11 ~", AD: "g#1@5 ~ g1@5 ~ c2@3 ~ c2@2 ~@2 e2 ~ g2 ~",
  AE: "g#1@5 ~ g1@3 e1 g1 g#1 a1@5 ~ a2 ~ a1 ~ g1 ~", AF: "f1@3 ~ f1@2 f2@2 a1@2 c2@2 a1@3 ~ a1 [c2,e2] a2 ~@3 g1@2",
  AG: "f1@3 ~ f1@2 a1@2 c2@2 g1@2 a1@3 ~ a1@2 ~@2 a1 ~ g1 ~, ~@6 g1 ~@17",
  AH: "f1@5 ~@3 f1@2 g1 g#1 a1@3 ~ a1!2 ~@2 a1 ~ g1 ~",
  AI: "f1!2 f1@3 ~ f1!2 f1@3 ~ g1@2 f2@2 f2 [a1,c2] f1@2 f2@2 a1 c2", // Am
  AJ: "d2@5 ~ d2@3 a2 d3 a2 d2@5 ~ d2@2 d2 e2 g2 e2", AK: "g2@7 d2 g2@2 g2@2 g1@2 b1@2 d2@2 g2@2 g1@2 e1@2",
  AL: "a1!5 ~ a1!5 ~ a1!5 ~ a1 e2 c2 a1 g1@2", AM: "f1@5 ~ f2@2 ~ c2 a1@2 f1@3 ~ f1@2 f2 ~@3 g2 a2",
  AN: "a1!5 ~ a1!5 ~ a1!5 ~ a2!3 e2 a1@2", AO: "f1 f1@4 ~ f2 ~@3 a1@2 c2@11 ~", AP: "c2@8 e2 ~ g2 ~ g#2@5 ~ g2@5 ~",
  AQ: "c2@5 ~@3 e2 ~ g2 ~ g#2@5 ~ g2@5 ~", AR: "c2@5 ~ c3 ~@3 e2 g2 g#2@5 ~ g2@5 ~",
  AS: "c2@3 ~ c2!2 ~@2 e2 ~ g2 ~ g#2@5 d#2 g2@5 ~", AT: "c2@5 ~@3 e2 ~ g2 ~ g#2@3 ~ d#3 g#2 g2@3 ~ g2@2",
  AU: "c2@5 ~ e2 a1 e2 ~ g2 ~ g#2@5 ~ g2@5 ~", AV: "c2@5 ~@3 e2 ~ g2 ~ g#2@2 d#2@2 g#2@2 g2@2 g2@2 g2@2",
  AW: "c2@3 ~ c2@2 ~@2 g2 ~ c2 ~ g#1@5 ~ g1@5 ~", AX: "c2@5 ~@3 c3 ~ g2 ~ g#1@5 ~ g1@5 b1",
  AY: "c2@3 ~ c2@2 ~@4 c2 g#1 g#1@5 ~ g1@2 g1@2 g1@2",
  AZ: "c2@2 c2@2 c2@2 c2@2 c2@2 c2@2 g#1@2 g#1@2 g#1@2 g1@2 g1@2 g1 b1",
  BA: "c2@3 ~ c2@2 c3 ~ c2 ~ a#1 ~ g#1@5 ~ g1@5 ~", BB: "c2@3 ~ c2@2 ~@2 c3 ~ c2 ~ g#1@3 ~ g#1@2 g1@2 g1@2 g1@2",
  BC: "c2@3 ~ c2@2 c3 ~@3 c2 ~ g#1!4 g#1@2 g1!5 b1", BD: "c2!4 c2@2 c3@3 ~ a#1@2 g#1!4 g#1@2 g1@3 g1 g1@2",
  BE: "c2!6 c3 ~@3 c2 a#1 g#1!6 g1@2 g1@2 g1@2", BF: "c2!4 c2@2 c2@3 ~ a#1@2 g#1@3 ~ g#2@2 g1@2 g2!2 a#2 g2",
  BG: "c2@5 ~@3 g2 ~ c2 a#1 g#1@2 ~@2 g#1@2 g1@5 ~", BH: "c2@23 ~",
})).s("gm_fretless_bass").gain(0.63)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A B C@2 D E F C G C@3 H E C I J@2 K C@3 L M C N O P Q A R S T U C@3 V C J W I X Y Z C J AA F Z AB C L J@2 C AC J@2
  AD AE@2 E I AF
>`.pickRestart({
  A: "~@6 x ~@4 x", B: "x ~@5 x ~ x ~@2 x", C: "x ~ x ~@2 x!2 ~ x ~@2 x", D: "x ~@3 x!2 ~@4 x ~ x ~@3 x ~@7",
  E: "x ~@4 x!2 ~ x ~@2 x", F: "x ~ x ~@2 x!2 ~@4 x", G: "x ~@5 x ~@4 x!2 ~@3 x ~@5 x ~", H: "x ~ x!6 ~@4",
  I: "x ~@4 x!2 ~ x ~@3", J: "x ~ x ~@2 x!2 ~ x ~@3", K: "x!2 ~ x!2 ~", L: "x ~ x ~@2 x!7", M: "x!2 ~@4 x ~ x ~@2 x",
  N: "x ~@3 x ~@5 x ~ x ~@2 x ~@2 x ~@2 x ~@2", O: "x ~@2 x ~@6 x ~ x ~@3 x ~@5 x ~",
  P: "x ~@3 x ~@7 x!2 ~ x ~@2 x!2 ~ x ~@2", Q: "x!2 ~ x ~@6 x ~ x ~@9 x ~", R: "x ~ x ~@3 x ~@4 x",
  S: "x ~@3 x ~@4 x ~@2 x ~@3 x ~@5 x ~", T: "x ~ x ~@3 x ~ x ~@2 x", U: "x ~@2 x ~@2 x ~ x ~@2 x",
  V: "x ~ x ~ x!2 ~@5 x", W: "x ~@2 x ~@2 x ~@4 x", X: "x ~@2 x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@6 x ~",
  Y: "x!2 ~@8 x ~ x ~@11", Z: "x ~@4 x!2 ~@5", AA: "x ~@4 x!2 ~@4 x", AB: "x!2 ~@8 x ~ x ~@3 x ~@5 x ~",
  AC: "x!3 ~@2 x!7", AD: "x ~@3 x ~@5 x ~ x!12", AE: "x!6 ~@6 x!6 ~@6", AF: "x",
})).gain(0.63)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A B@3 C D@3 E D@3 F C D C@3 G D@4 H D I J I J K D B@2 L D@3 M D N O D P Q R C S D@5 T C@2 U D V@2 T D@4 ~
>`.pickRestart({
  A: "~@3 x", B: "~@6 x ~@3 x!2 ~@6 x ~@5", C: "~@6 x ~@11 x ~@3 x!2", D: "~ x ~ x", E: "~@2 x ~ x ~ x!6 ~@6 x ~@5",
  F: "~@12 x!4 ~@8", G: "~@6 x ~@11 x ~ x!4", H: "x ~@3 x ~ x!3 ~@9 x ~@5", I: "~@3 x ~@3 x!2 ~ x!2",
  J: "~ x!3 ~@5 x ~@2", K: "x ~@5 x!7 ~@5 x ~@5", L: "~@2 x ~ x ~@3 x!3 ~@7 x ~@5", M: "~@3 x ~@2 x!3 ~ x ~",
  N: "~@3 x ~@5 x!3", O: "~ x!2 ~ x!2 ~ x!3 ~@2", P: "~@2 x ~@2 x ~@2 x!2 ~@2", Q: "~@6 x ~@11 x!6",
  R: "x ~@5 x ~@11 x ~@3 x!2", S: "~@3 x ~@5 x!2 ~", T: "~ x ~@2", U: "~@3 x ~@5 x ~ x", V: "~@6 x ~@11 x ~@2 x!3",
})).gain(0.63)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@5 A B@3 C B@3 D ~@3 E F G B@4 ~@4 H ~ I J K J L B@3 M ~@3 E ~@2 N O N P O B Q B R B@4 O B@3 O S O T U O V W
>`.pickRestart({
  A: "~@6 x!6", B: "x!12", C: "x ~ x!5 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~", D: "x!3 ~@9", E: "~@9 x ~ x", F: "~@2 x!10",
  G: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x!4", H: "~@4 x!2 ~@6", I: "~@7 x!2 ~ x!2", J: "~ x!3 ~@3 x!5",
  K: "x!6 ~ x!2 ~ x!2", L: "x!3 ~@3 x!6", M: "x!6 ~@6", N: "~ x!2 ~ x!2 ~ x!3 ~@2", O: "~ x!11", P: "~ x!8 ~@3",
  Q: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!10", R: "x ~ x!2 ~ x!2 ~@2 x!3", S: "~ x!10 ~", T: "x!3 ~ x!5 ~ x!2",
  U: "x!3 ~@2 x!4 ~@2 x", V: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", W: "x",
})).gain(0.63)

// drums · open hat
const open_hat = s("oh").struct("<~@13 A B@3 C ~@6 D E F D G H C ~@7 A B H B C E@2 ~@25>".pickRestart({
  A: "~@7 x!5", B: "x!12", C: "x!6 ~@6", D: "~@2 x!10", E: "~ x!11", F: "~ x!8 ~ x!2", G: "x ~@6 x!5", H: "x!6 ~ x!5",
})).gain(0.63)

// drums · high tom
const high_tom = s("ht").struct("<~@28 [~@9 x!3 ~@12] ~@9 [~@11 x ~@12] ~@3 [~@17 x!2 ~@5] ~@27>").gain(0.63)

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

stack(overdriven_guitar, electric_guitar_jazz, synth_strings_1, bass, kick, snare, pedal_hat, open_hat, high_tom, crash)

More by Led Zeppelin