Strudelify

Sick Again

Led Zeppelin

KeyE majorTempo110 bpm
0:00/0:00
// Sick Again — Led Zeppelin
// 110 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 11 "Electric Guitar VII" distortion guitar (copy of ch 2 "Electric Guitar I" overdriven guitar); ch 12 "Electric Guitar VIII" distortion guitar (copy of ch 5 "Electric Guitar IV" distortion guitar); ch 13 "Electric Guitar IX" distortion guitar (copy of ch 6 "Electric Guitar V" distortion guitar); ch 14 "Electric Guitar X" distortion guitar (copy of ch 7 "Electric Guitar VI" distortion guitar)
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Electric Guitar V.
setcpm(110/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.

// other · overdriven guitar · "Electric Guitar I"
const overdriven_guitar = note("<~@48 A B C@2 D@2 E@2 F G H I J K L@2 M ~@54 N O P Q R S T U V ~@6>".pickRestart({
  A: "~@5 g4@3", B: "a4@5 ~ g4@4 f#4 e4 d4@3 e4",
  C: "[f#4@2 e4@2 d4 e4 ~ d4 e4@2 d4@2 c#4@7 ~ c#5@2 b4@4 ~@2 f#4@2 g#4@2]/2",
  D: "[f#4@2 e4 c#4 ~@2 g#4@2 f#4 e4 c#4@2 e4@7 ~@7 g5@2 a5@2 g5 f#5]/2",
  E: "[e5!2 ~ e5 d5 b4 a#4 a4 g4 e4 ~ b4 a4 g4 a4 a4@3 g4@2 a#4@2 e4 e4@4 ~@5]/2",
  F: "~ e5 ~ g5 g#5 ~ a5 ~ g#5 a5@2 b5 ~ e5 e5@2", G: "g3 f#5 ~ e5 ~ a#5@3 ~ e5 e5@4 ~@2", H: "~@3 c#6@2 b5 e5 ~",
  I: "g5 a#5 g5 e5 d5 ~ g5@2 f#5 e5@5 ~@2", J: "~@2 g#5@2 a5 a#5 b5@2 f#5 g#5 f#5@2 e5 c#5 f#5 c#5",
  K: "e5 f#5 e5 c#5 f#5 ~ f#5@8 g#5@2", L: "[~@2 g#5@2 g#5@2 f#5 e5 c#5 ~@2 a5 ~ e5@5 b5@2 a5 [e5,g5] e5@9 ~]/2",
  M: "e5 e4 e5 e4 ~@4", N: "~@10 e4 g4 a4 b4!2 g4", O: "b4@2 b4@2 a4 g4 e4 ~@3 e4@2 g4 a4 a4@2",
  P: "a4@3 g4 a4 g4 e4 ~@3 b4!2 e5@2 d5 b4", Q: "a4 e4 a4 g4 a4 g4 e4 ~@3 b4!2 e5@2 d5 b4",
  R: "a4 e4!2 a4 g#4 e4!2 a4 g#4@2 g#4 e4 d4 b4 e4 b3", S: "d4 e4 d4 b3 d4 b3 a3 g3 a3 g3 e3 g3 a3 b3 d4 d#4",
  T: "e4 g4 a4 g4 a4 g4 e4@2 a#4@2 b4@2 e5@2 e5@2", U: "e5@5 e5 d#5 b4 a4 g4 e4@2 a5@4",
  V: "a5@3 ~ a5@4 g5@2 e5@2 e5!2 ~@2",
})).s("gm_overdriven_guitar").gain(0.64)

// other · distortion guitar · "Electric Guitar II"
const distortion_guitar = note("<~@39 A B@2 C@2 ~@34 A B@2 C@2 ~@22 D E F E G ~@24>".pickRestart({
  A: "~@7 e4", B: "[f#4@2 f#4@2 f#4@2 f#4@2 e4@5 ~ d#4@4 d#4@3 ~ d#4@2 c#4@5 ~ e4@2]/2",
  C: "[f#4@2 f#4@2 f#4@2 f#4@2 e4@5 ~ d#4@4 d#4@3 ~ d#4@2 c#4@5 ~@3]/2", D: "~@3 e4 f#4!4",
  E: "e4@5 ~ d#4@4 d#4@3 ~ d#4@2", F: "c#4@5 ~ e4@2 f#4@2 f#4@2 f#4@2 f#4@2", G: "c#4@5 ~@11",
})).s("gm_distortion_guitar").gain(0.48).pan(0.3)

// other · distortion guitar · "Electric Guitar III"
const distortion_guitar_2 = note("<~@39 A B@2 C@2 ~@34 A B@2 C@2 ~@22 D E F E G ~@24>".pickRestart({
  A: "~@7 a4", B: "[b4@2 b4@2 b4@2 b4@2 a4@5 ~ b4@4 b4@3 ~ b4@2 a4@5 ~ a4@2]/2",
  C: "[b4@2 b4@2 b4@2 b4@2 a4@5 ~ b4@4 b4@3 ~ b4@2 a4@5 ~@3]/2", D: "~@3 a4 b4!4", E: "a4@5 ~ b4@4 b4@3 ~ b4@2",
  F: "a4@5 ~ a4@2 b4@2 b4@2 b4@2 b4@2", G: "a4@5 ~@11",
})).s("gm_distortion_guitar").gain(0.48).pan(0.7)

// chords · distortion guitar · "Electric Guitar IV"
const distortion_guitar_3 = note(`<
  ~@9 A@2 ~@2 B C D E F G F G H@4 I ~@2 J@2 ~@2 K@2 ~ L@4 M@5 N@4 O@2 P@2 Q@2 P@2 Q@2 P@2 Q@2 R@3 ~@2 J@2 ~@2 K@2 ~ L@4
  S@5 N@4 T U@2 V ~@2 A@2 ~@2 B C D E F G F G H@4 W ~@2 X@5 Y X@2 Z@3 X Z@2 AA@7 AB
>`.pickRestart({
  A: "~@4 [g3,c4,e4] [a3,d4,f#4] [b3,e4,g4]!2", B: "~@6 [g3,c4,e4] [a3,d4,f#4]",
  C: "[b3,e4,g4]!2 ~@4 [g3,c4,e4] [a3,d4,f#4]", D: "[b3,e4,g4]!2 ~@6", E: "~@5 c#4 b3 c#4",
  F: "b3@2 f#3@2 e3@2 f#3@4 e3 ~@5", G: "~ c3 c#3 a2 ~ c#4 b3 c#4",
  H: "[b3 f#3 e3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 d#4, ~@3 f#3@6 f#3@4 f#3@4 f#3@4 f#3@4 f#3@4 f#3@3, ~@7 d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~@2]/4",
  I: "[f#3,b3,d#4]@3 ~ [b3,e4]@2 [b3,e4]@2 ~@8", J: "[g3,c4,e4] [a3,d4,f#4] [b3,e4,g4]!2 ~@4",
  K: "~@2 [g3,c4,e4] [a3,d4,f#4] [b3,e4,g4]!2 ~@2", // C D Em
  L: "[~@2 c#4@2 b3@2 c#4@2 b3@2 f#3@2 e3@2 f#3@4 e3 ~@7 c3@2 c#3@2 a2@2]/2",
  M: "[~ c#4 b3 c#4 b3 f#3 e3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 [e4,g#4], ~@7 f#3@6 f#3@4 f#3@4 f#3@4 f#3@4 f#3@4 f#3@4 f#3@2 ~, ~@11 d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~@2]/5", // E
  N: "[[b3,e4,g#4] [d4,g4,b4]!2 [e4,a4,c#5]@12 [b3,e4,g#4]]/2", // E G A E
  O: "[[b3,e4,g#4]@2 [d4,g4,b4]@2 [d4,g4,b4]@2 [e4,a4,c#5]@21 ~ [d3,g3,b3] ~ [b3,e4,g#4]@2]/2", // E G A G E
  P: "[[b3,e4,g#4] [d4,g4,b4]!2 [e4,a4,c#5]@8 [a3,d4,f#4]!2 [b3,e4,g#4]!3]/2", // E G A D E
  Q: "[[b3,e4,g#4]@2 [d4,g4,b4]@2 [d4,g4,b4]@2 [e4,a4,c#5]@16 [b3,e4,g#4]@5 ~ [d3,g3,b3] ~ [b3,e4,g#4]@2]/2", // E G A E G E
  R: "[[b3,e4,g#4]@2 [d4,g4,b4]@2 [d4,g4,b4]@2 [e4,a4,c#5]@16 e4@17 ~@9]/3", // E G A
  S: "[~ c#4 b3 c#4 b3 f#3 e3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3 b3 d#4@2 ~ b3 [e4,g#4], ~@7 f#3@6 f#3@4 f#3@4 f#3@4 f#3@4 f#3@4 f#3@4 f#3@2 ~, ~@11 d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~@6]/5", // E
  T: "[b3,e4,g#4] [d4,g4,b4]!2 [e4,a4,c#5]@4 [b3,e4,g#4]", // E G A E
  U: "[b3,e4,g#4] [d4,g4,b4]!2 [e4,a4,c#5] ~ [e4,a4,c#5] ~ [b3,e4,g#4]", // E G A E
  V: "[b3,e4,g#4]@2 [d4,g4,b4]@2 [d4,g4,b4]@2 [e4,a4,c#5]@2 ~@2 [e4,a4,c#5]@3 ~ e4@2", // E G A
  W: "[f#3,b3,d#4]@3 ~ [b4,e5]@2 [b4,e5]@2 ~@8", X: "[g3,c4,e4]@2 [a3,d4,f#4]@2 [b3,e4,g4]@2 [b3,e4,g4]@3 ~@7",
  Y: "c4@2 d4@2 e4@2 e4@3 ~@7", Z: "[g3,c4,e4]@2 [a3,d4,f#4]@2 [b3,e4,g4]@2 [b3,e4,g4] ~@9",
  AA: "[c4@2 d4@2 e4@2 e4@3 ~@5 [g4,b4]@4 [a4,c#5]@4 [g4,b4]@2 [e4,g#4]@5 ~ [g4,b4]@4 [a4,c#5]@4 [g4,b4]@2 [e4,g#4]@5 ~ [g4,b4]@4 [a4,c#5]@4 [g4,b4]@2 [e4,g#4]@5 ~ [g4,b4]@4 [a4,c#5]@4 [g4,b4]@2 [e4,g#4]@5 ~ [g4,b4]@4 [a4,c#5]@4 [g4,b4]@2 [e4,g#4]@5 ~ [g4,b4]@4 [a4,c#5]@14]/7", // G A G E G A G E …
  AB: "~@2 [f3,a3]@3 ~@11", // F
})).s("gm_distortion_guitar").gain(0.48).pan(0.1)

// chords · distortion guitar · "Electric Guitar V" · G5
const distortion_guitar_4 = note("<~@112 [~@11 [g2,d3] ~@4]!3 ~@19>").s("gm_distortion_guitar").gain(0.48).pan(0.9)

// chords · distortion guitar · "Electric Guitar VI"
const distortion_guitar_5 = note(`<
  A B@2 C D@6 E F@2 G H I J K L@2 M@6 N O P Q R S T U@8 V@3 W@4 X Y Z AA Z Y Z AA Z Y Z AA Z Y Z AB AC N O P Q R S T U@8
  V@3 W@4 AD@3 AE@4 E AF F G H AG AH AI L@2 M@6 AJ AK AL@3 AM@9 AN@7 AO@3
>`.pickRestart({
  A: "~@4 [e2,b2,e3]!2 g2!2", B: "[[a2,e3,a3]@23 ~ [e2,b2,e3]@2 [e2,b2,e3]@2 g2@2 g2@2]/2",
  C: "[a2,e3,a3]@11 ~ [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2", // A5 E
  D: "[[e2,d3,a3,d4,f#4]@7 [e2,e3,a3,b3,c#4,e4]@8 [e2,e3,a3,b3,c4,e4]@8 [e2,e3,b3]@2 [e3,c#4]!2 [e3,b3] [e3,c#4] [e3,b3] ~ [e2,e3,b3]@2 [e3,c#4]!2 [e3,b3] [e3,c#4] [e3,b3]!2 [e2,e3,b3]@2 [g2,d3] [f#2,c#3] [e2,b2] [c3,g3,c4] [d3,a3,d4] [e3,b3,e4]!2]/6", // D A Am E5 C#m E5 C#m E5 …
  E: "~ [g2,d3] [f#2,c#3] [e2,b2] [c3,g3,c4] [d3,a3,d4] [e3,b3,e4]!2", // G5 F#5 E5 C5 D5 E5
  F: "~ [e2,e3,b3]@2 [e3,c#4]!2 [e3,b3] [e3,c#4] [e3,b3]", // E5 C#m E5 C#m E5
  G: "[e3,b3] [e2,e3,b3]@2 [g2,d3] [f#2,c#3] [e2,b2] [c3,g3,c4] [d3,a3,d4]", // E5 G5 F#5 E5 C5 D5
  H: "[e3,b3,e4]@2 [e3,b3,e4]@2 ~ [g2,d3]!3 [f#2,c#3]@2 [e2,b2]@2 [c3,g3,c4]@2 [d3,a3,d4]@2", // E5 G5 F#5 E5 C5 D5
  I: "[e3,b3,e4]!2 ~ a2!2 [a2,e3] [f#3,a3,d4] ~, ~@3 e3@2 ~@3", // E5 A5 D
  J: "[f#3,a3,d4] [e3,a3,c#4] [a2,e3] [a2,e3,a3,c#4]@2 [a2,e3]!3", // D A A5 A A5
  K: "[a2,e3]!3 [f#3,a3,d4]@2 [e3,a3,c#4] [f#3,a3,d4] ~", // A5 D A D
  L: "[[e3,a3,c#4] c3 c#3 ~@2 [a3,c#4] [f#3,b3] [a3,c#4] [f#3,b3]!2 [e3,a3] [f#3,a3,d4]@2 [e3,a3,c#4] [a2,f#3,a3,d4] ~, ~@3 a2@7 ~@6]/2", // A B5 A B5 A5 D A D
  M: "[[a2,e3,a3,c#4] c3 c#3 ~@2 [a3,c#4] [f#3,b3] [a3,c#4] [f#3,b3]!2 [e3,a3] f#3@2 f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 [e2,e3,b3]@2 [e3,c#4]!2 [e3,b3], ~@3 a2@7 ~ b2@5 a2@4 g#2@4 f#2@3 b2@5 a2@4 g#2@4 f#2@3 ~@5, ~@15 d#4@2 ~@2 d#4@2 ~@2 d#4@2 ~@6 d#4@2 ~@2 d#4@2 ~@2 d#4@2 ~@7]/6", // A B5 A B5 A5 E5 C#m E5
  N: "[e3,c#4] [e3,b3] ~ [e2,e3,b3]@2 [e3,c#4]!2 [e3,b3]", // C#m E5 C#m E5
  O: "[e3,c#4] [e3,b3]!2 [e2,e3,b3]@2 [g2,d3] [f#2,c#3] [e2,b2]", // C#m E5 G5 F#5 E5
  P: "[c3,g3,c4] [d3,a3,d4] [e3,b3,e4]!2 ~ [g2,d3] [f#2,c#3] [e2,b2]", // C5 D5 E5 G5 F#5 E5
  Q: "[c3,g3,c4] [d3,a3,d4] [e3,b3,e4]!2 ~ [e2,e3,b3]@2 [e3,c#4]", // C5 D5 E5 C#m
  R: "[e3,c#4] [e3,b3] [e3,c#4] [e3,b3] ~ [e2,e3,b3]@2 [e3,c#4]", // C#m E5 C#m E5 C#m
  S: "[e3,c#4] [e3,b3] [e3,c#4] [e3,b3]!2 [e2,e3,b3]@2 [g2,d3]", // C#m E5 C#m E5 G5
  T: "[f#2,c#3]@2 [e2,b2]@2 [c3,g3,c4]@2 [d3,a3,d4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 ~ [g2,d3]!3", // F#5 E5 C5 D5 E5 G5
  U: "[[f#2,c#3] [e2,b2] [c3,g3,c4] [d3,a3,d4] [e3,b3,e4]!2 ~ a2 a2 [a2,e3] [f#3,a3,d4] ~ [f#3,a3,d4] [e3,a3,c#4] [a2,e3] [a2,e3,a3,c#4]@2 [a2,e3]!6 [f#3,a3,d4]@2 [e3,a3,c#4] [f#3,a3,d4] ~ [e3,a3,c#4] c3 c#3 ~@2 [a3,c#4] [f#3,b3] [a3,c#4] [f#3,b3]!2 [e3,a3] [f#3,a3,d4]@2 [e3,a3,c#4] [a2,f#3,a3,d4] ~ [a2,e3,a3,c#4] c3 c#3 ~@2 [a3,c#4] [f#3,b3] [a3,c#4] [f#3,b3]!2 [e3,a3] f#3@2 f#3 b3 ~@2 f#3 b3 d#4, ~@7 e3@2 ~@22 a2@7 ~@9 a2@7 ~ b2@5 a2@4, ~@59 d#4@2 ~@3]/8", // F#5 E5 C5 D5 E5 A5 D A …
  V: "[~ f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 ~@2 f#3 b3 [e2,b2], g#2@4 f#2@3 b2@5 a2@4 g#2@4 f#2@3 ~, ~@3 d#4@2 ~@6 d#4@2 ~@2 d#4@2 ~@2 d#4@2 ~@3]/3", // E5
  W: "[[e2,b2]@2 [g2,d3]@2 [g2,d3]@2 [a2,e3]@23 ~ [e2,b2]@2]/2", // E5 G5 A5 E5
  X: "[e2,b2]@2 [g2,d3]@2 [g2,d3]@2 [a2,e3]@4 [a2,e3]@2 [g3,c4] [f#3,b3] [e3,a3]@2", // E5 G5 A5 C5 B5 A5
  Y: "[f#3,b3] [e3,a3] g#2 e3 ~ e2 ~ e2", Z: "e2@2 g2@2 g2@2 [a2,e3]@4 [a2,e3]@2 [g3,c4] [f#3,b3] [e3,a3]@2",
  AA: "[f#3,b3] [e3,a3] g#2 [d3,a3]!2 [e3,b3]!2 e2", AB: "[f#3,b3] [e3,a3] g#2 [d3,a3] [e3,b3]!4",
  AC: "[e3,b3]!3 e2@2 [e3,c#4]!2 [e3,b3]", AD: "[e2,b2] [g2,d3]!2 [a2,e3] ~ [a2,e3] ~ [e2,b2]",
  AE: "[[e2,b2] [g2,d3]!2 [a2,e3] ~ [a2,e3] ~ [e2,e3,b3]@2 [e2,e3,c#4]!2 [e2,e3,b3] [e2,e3,c#4] [e2,e3,b3] ~ [e2,e3,b3]@2 [e3,c#4]!2 [e3,b3] [e3,c#4] [e3,b3]!2 [e2,e3,b3]@2 [g2,d3] [f#2,c#3] [e2,b2] [c3,g3,c4] [d3,a3,d4] [e3,b3,e4]!2]/4", // E5 G5 A5 E5 C#m E5 C#m E5 …
  AF: "~ [e2,e3,b3]@2 [e2,e3,c#4]!2 [e2,e3,b3] [e2,e3,c#4] [e2,e3,b3]", // E5 C#m E5 C#m E5
  AG: "[e3,b3,e4]@2 [e3,b3,e4]@2 ~@2 a2@2 a2@3 ~ [f#3,a3,d4]@2 ~@2, ~@6 e3@5 ~@5", // E5 D
  AH: "[f#3,a3,d4] [e3,a3,c#4] [f#3,a3,d4] [e3,a3,c#4] ~ [a3,c#4] [f#3,b3] [a3,c#4]", // D A D A B5 A
  AI: "[f#3,b3]!2 [e3,a3] [f#3,a3,d4]@2 [e3,a3,c#4] [f#3,a3,d4] ~", AJ: "[e3,c#4] [e3,b3] ~ e2@2 [e3,c#4]!2 [e3,b3]",
  AK: "[e3,c#4] [e3,b3] e2 [e3,b3] ~ [g2,d3] [f#2,c#3] [e2,b2], ~@3 e2@2 ~@3", // C#m E5 G5 F#5 E5
  AL: "[c3,g3,c4]@2 [d3,a3,d4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e2,e3,b3,e4]!2 [g2,d3]@2 [f#2,c#3]@2 [e2,b2]@2", // C5 D5 E5 G5 F#5 E5
  AM: "[c3,g3,c4]@2 [d3,a3,d4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e2,e3,b3,e4]!2 [g2,d3]!2 [f#2,c#3]@2 [e2,b2]@2", // C5 D5 E5 G5 F#5 E5
  AN: "[c3,g3,c4]@2 [d3,a3]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e2,e3,b3,e4]!2 [g2,d3]!2 [f#2,c#3]@2 [e2,b2]@2", // C5 D5 E5 G5 F#5 E5
  AO: "[[c3,g3]@2 [d3,a3]@2 [e2,e3,b3,e4]@33 ~@11]/3", // C5 D5 E5
})).s("gm_distortion_guitar").gain(0.44).pan(0.3)

// bass · fretless bass · "Bass Guitar"
const bass = note(`<
  ~@4 A@3 B@3 C D@2 E F G H I J K L M N O N P Q R S T U V W X@8 Y@2 Z AA AB AA AB AC AD AC AE AC AF AC AE AC AF AC AE AC
  AF AC AG AH Q R S T U V W X@8 Y@2 AI AA AB AJ AB AK@4 AL@3 C D@2 E F G H I J K L M N O N AM AN AO AP@19 AQ@3
>`.pickRestart({
  A: "[~@7 e2@8 e2@8 e1]/3",
  B: "[~@2 e1@2 e2@2 ~@2 e2@2 e1@2 ~@2 e1@4 e2@2 e2@2 e1@2 e2@2 e2@3 ~ e1@4 g1@2 f#1@2 e1@2 c2@2 d2@2 e2@2 e2@2]/3",
  C: "~ g1 g1@2 f#1@2 e1@2 c2@2 d2@2 e2@2 e2@2", D: "~@2 e1@4 e1@2 e2@2 e1@2 e2@2 e2 ~", E: "~ e1@2 g1 f#1 e1 c2 d2",
  F: "e2@2 e2@2 ~ g1 g1@2 f#1@2 e1@2 c2@2 d2@2", G: "e2!2 ~ a1@2 a2!2 a1", H: "a2@2 a2@3 ~ a1@4 c#2@2 b1@2 c#2@2",
  I: "b1 a1 f#1 a1@2 a1 a2 a1", J: "a2!2 ~ a1@2 c#2 b1 c#2", K: "b1 a1 f#1 a1@2 a1 f#1 ~",
  L: "a1 e1 f#1 a1@2 a1 f#1 a1", M: "a1 f#1 a1 b1@2 b1!3", N: "a1@5 ~ a1@2 g#1@5 ~ g#1@2", O: "f#1!3 b1@2 b1!3",
  P: "f#1!3 e1 ~ e1 e2 ~", Q: "e2 e1 ~ e1@2 e2!2 e1", R: "e2@2 e2@3 ~ e1@4 g1@2 f#1@2 e1@2",
  S: "c2@2 d2@2 e2@2 e2@2 ~ g1 g1@2 f#1@2 e1@2", T: "c2 d2 e2!2 ~ e1@2 e1", U: "e2@2 e1@2 e2@2 e2 ~@3 e1@4 e1@2",
  V: "e2@2 e1@2 e2@2 e2 ~@3 e1@4 g1@2", W: "f#1@2 e1@2 c2@2 d2@2 e2@2 e2@2 ~ g1 g1@2",
  X: "[f#1@2 e1@2 c2@2 d2@2 e2@2 e2@2 ~@2 a1@4 a2@2 a2@2 a1@2 a2@2 a2@3 ~ a1@4 c#2@2 b1@2 c#2@2 b1@2 a1@2 f#1@2 a1@4 a1@2 a2@2 a1@2 a2@2 a2@2 ~@2 a1@4 c#2@2 b1@2 c#2@2 b1@2 a1@2 f#1@2 a1@4 a1@2 f#1@2 ~@2 a1@2 e1@2 f#1@2 a1@4 a1@2 f#1@2 a1@2 a1@2 f#1@2 a1@2 b1@4 b1@2 b1@2 b1@2 a1@5 ~ a1@2]/8",
  Y: "[g#1@5 ~ g#1@2 f#1@2 f#1@2 f#1@2 b1@4 b1@2 b1@2 b1@2 a1@5 ~ a1@2]/2", Z: "g#1@5 ~ g#1@2 f#1@2 f#1@2 f#1@2 e1@2",
  AA: "e1 g1!2 a1@2 a1!3", AB: "a1!7 e1", AC: "e1@2 g1@2 g1@2 a1@4 a1@2 a1@3 ~", AD: "a1!2 g1 e2 ~ e1 ~ e1",
  AE: "a1!3 d2 e2!3 e1", AF: "a1!3 d2 ~ e1 ~ e1", AG: "a1!3 d2 e2!4", AH: "e2!3 e1 ~ e1 e2 ~",
  AI: "g#1@5 ~ g#1@2 f#1@5 ~ e1@2", AJ: "e1 g1!2 a1@2 a1 ~ a1", AK: "e1 g1!2 a1 ~ a1 ~ e1",
  AL: "[~@2 e1@2 e2@3 ~ e2@2 e2@3 ~ e1@4 e2@2 e2@2 e1@2 e2@2 e2@3 ~ e1@4 g1@2 f#1@2 e1@2 c2@2 d2@2 e2@2 e2@2]/3",
  AM: "f#1@5 ~ e1@2 ~@2 e2@2 e2@2 e1@2", AN: "e2!3 e1@2 e2!2 e1", AO: "e2 e1 e2 e1@2 g1 f#1 e1",
  AP: "c2@2 d2@2 e2@2 e2@2 ~ g1!3 f#1@2 e1@2", AQ: "[c2@2 d2@2 e2@2 e2@7 ~ e2@23 ~@11]/3",
})).s("gm_fretless_bass").gain(0.63)

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

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@25 [~@4 x!2 ~@10] ~@17 [~@12 x!2 ~@2] ~@42 [~@12 x!4] ~@47>").gain(0.7)

// drums · high tom
const high_tom = s("ht").struct("<~@24 A B ~@17 C ~@32 D ~@7 E ~ F ~@47>".pickRestart({
  A: "~@14 x!2", B: "x!4 ~@12", C: "~@6 x!6 ~@4", D: "~@12 x!2 ~@2", E: "~@5 x ~@3 x ~@3 x ~@2", F: "~@4 x!8 ~@4",
})).gain(0.7)

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

stack(
  overdriven_guitar, distortion_guitar, distortion_guitar_2, distortion_guitar_3, distortion_guitar_4,
  distortion_guitar_5, bass, kick, snare, pedal_hat, mid_tom, high_tom, crash
)

More by Led Zeppelin