Strudelify

What Is and What Should Never Be

Led Zeppelin

KeyE majorTempo77 bpm
0:00/0:00
// What Is and What Should Never Be — Led Zeppelin
// 77 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 13 "Doubled Overdrive Guitar" overdriven guitar (copy of ch 3 "Heavy Guitar" distortion guitar)
// note: Full arrangement: all 95 bars on a 32-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.

// chords · electric guitar jazz · "Soft Jazz Guitar"
const electric_guitar_jazz = note(`<
  ~ A B A B A B A ~@10 A B A B A B A ~@10 A B A B A B A ~@10 A B A B A B C ~@36
>`.pickRestart({
  A: "[g3,c#4,e4,f#4]@2 ~@2 [g3,c#4,e4,f#4]@2 [g3,c#4,e4,f#4]@2 [g3,c#4,e4,f#4]@2 [g3,c#4,e4,f#4]@2 [g3,c#4,e4,f#4]@2 [g3,c#4,e4,f#4] [g3,b3]", // C#dim G
  B: "[g#3,d4,f#4,g#4]@2 ~ [g#3,d4,f#4,g#4] g#4 b4 [g#3,b3,d4,g#4]@2 [g#3,d4,e4,f#4]@2 [g#3,b3,d4,e4]@2 [g#3,d4,e4,f#4]@2 [g#3,b3,d4,e4]@2, ~@2 [g#3,b3,d4] ~@5", // G#m7b5 G#dim G#m7b5 E7 G#m7b5 E7 G#dim
  C: "[g3,c#4,e4,f#4] ~ [g3,c#4,e4,f#4]!6", // C#dim
})).s("gm_electric_guitar_jazz").gain(0.06).pan(0.4)

// chords · electric guitar jazz · "Soft Jazz Guitar" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~ A B A B A B A ~@10 A B A B A B A ~@10 A B A B A B A ~@10 A B A B A B A ~@36
>`.pickRestart({
  A: "~ [g3,c#4,e4,f#4] ~@6", B: "~@2 [g#3,d4,f#4,g#4] ~@13",
})).s("gm_electric_guitar_jazz").gain(0.03).pan(0.4)

// chords · distortion guitar · "Heavy Guitar"
const distortion_guitar = note(`<
  ~@8 A B A B C@2 D E F ~@8 A B A B C@2 D E F ~@8 A B A B C@2 D E G@2 ~@7 A B A B C@2 D E H I J@2 K L M N O P Q R S T@2
  U@2 V W X Y@3 ~@5
>`.pickRestart({
  A: "a3@4 ~@2 a2 ~ a3@2 g3@2 a2 ~ a2 ~ g3@4 ~@2 a2 ~ g3@2 d3@2 a2 ~ a2 ~, ~ a3 ~@3 g3 ~@2",
  B: "~@2 a2 ~@3 a2 ~ f#3@2 d3@2 a2 ~ a2 ~ a2 ~ [d3,a3,d4]@6 [a2,e3,a3,c#4]@4 ~@2 a2 ~, f#3!2 ~@6", // D5 A
  C: "[~@22 [f#3,b3]@2 ~ [e2,b2,e3,g#3,b3,e4]@3 [b2,f#3,b3,d#4]@2 ~@2, b2!2 a2!2 g#2!2 ~@2, ~ [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 ~@5]/2", // B5 E B B5
  D: "[f#2,c#3,f#3,a#3,c#4]", E: "~ a2@25 g2@2 g#2@4, [e3,a3,c#4]@13 ~@3", F: "e2", G: "[e2@5 ~@3]/2", H: "e2@15 ~",
  I: "[f#3,b3]@2 [g#3,b3]@2 ~@11 [b3,e4,g#4]@2 [c#4,e4,g#4]@2 ~@11 [e3,a3,d4]@2", // B5 G#m E C#m Dsus2
  J: "[[f#3,a3,d4]@2 ~@4 [a3,d4]@2 [b3,d4]@2 ~@6 [e2,e3,b3,e4] [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@4 e2 ~@3 [f#3,b3]@2 [g#3,b3]@2 ~@3 [b3,e4,g#4]@2 [c#4,e4,g#4]@2 ~@19 [e3,a3,d4]@2 [f#3,a3,d4]@2 ~]/2", // D D5 Bm E5 B5 G#m E C#m …
  K: "~@3 [a3,d4]@2 [b3,d4]@2 ~@5 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@4 e2 ~ e2 ~ [f#3,b3]@2 ~ [b3,e4] ~ [b3,e4], ~@14 [g#3,b3] ~", // D5 Bm E5 B5 E5 G#m
  L: "~ [b3,e4,g#4]@2 [c#4,e4,g#4]@2 [b2,e3] ~ [b3,e4] ~ [e3,b3] ~ [e3,b3] ~ [b2,e3] ~ [b3,e4]!2 ~ e3 ~ b3 ~ [b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@4", // E C#m E5 Dsus2 D
  M: "[a3,d4]@2 [b3,d4]@2 ~ e2 ~@3 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@4 e2 ~ e2 ~@2 [g#3,b3]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4,g#4]@2, ~@23 [f#3,b3]@2 ~@7", // D5 Bm E5 G#m E5 E B5
  N: "[c#4,e4,g#4]@2 [b2,e3] ~ e4 ~ [e3,b3] ~ [e3,b3] ~ [b2,e3] [b3,e4] ~ [b3,e4] ~ e3 ~ b3 ~ [b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@5 [b3,d4]@2, ~@29 [a3,d4]@2 ~", // C#m E5 Dsus2 D Bm D5
  O: "~@2 e2@2 ~@2 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@4 e2!2 ~ [f#3,b3]@2 [g#3,b3]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4,g#4]@2 [c#4,e4,g#4]@2 [b2,e3]", // E5 B5 G#m E5 E C#m E5
  P: "~ [b3,e4] ~ [e3,b3]!2 ~ [b2,e3] ~ [b3,e4] ~ [b3,e4] ~ e3 ~ b3 ~ [b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@3 [a3,d4]@2 [b3,d4]@2 ~@2 e2", // E5 Dsus2 D D5 Bm
  Q: "~@3 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@3 e2 ~ e2 ~ [f#3,b3]@2 [g#3,b3]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4,g#4]@2 [c#4,e4,g#4]@2 [b2,e3] ~ [b3,e4] [e3,b3]", // E5 B5 G#m E5 E C#m E5
  R: "~ [e3,b3] ~ [b2,e3] ~ [b3,e4] ~ [b3,e4] ~ e3 ~ b3 ~ [b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@3 [a3,d4]@2 [b3,d4]@2 ~@6", // E5 Dsus2 D D5 Bm
  S: "[e2,e3,b3,e4]@2 [e2,e3,b3,e4]@3 [e2,e3,b3,e4]@4 e2 ~@3 [f#3,b3]@2 [g#3,b3]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4,g#4]@2 ~ [b2,e3] ~ [b3,e4] ~ [e3,b3] ~ [e3,b3] ~, ~@23 [c#4,e4,g#4]@2 ~@7", // E5 B5 G#m E5 E E5 C#m
  T: "[[b2,e3] ~ [b3,e4] ~ [b3,e4] ~ e3 ~ b3 ~ [b3,e4] [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@4 [a3,d4]@2 [b3,d4]@2 ~@6 [e2,e3,b3,e4] [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@4 e2 ~ e2 ~ [f#3,b3]@2 [g#3,b3]@2 [b3,e4] ~ [b3,e4] [b3,e4,g#4]@2 [c#4,e4,g#4]@2 [b2,e3] ~ [b3,e4] ~ [e3,b3] ~ [e3,b3] ~ [b2,e3] ~ [b3,e4]]/2", // E5 Dsus2 D D5 Bm E5 B5 G#m …
  U: "[~ [b3,e4] ~ e3 b3 ~ [b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@4 [a3,d4]@2 [b3,d4]@2 ~@2 e2 ~@2 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@4 e2 ~ e2 ~ [f#3,b3]@2 [g#3,b3]@2 [b3,e4]!2 ~ [b3,e4,g#4]@2 [c#4,e4,g#4]@2 [b2,e3] ~ e4 ~ [e3,b3] ~ [e3,b3] ~ [b2,e3] ~ [b3,e4] ~ [b3,e4] e3]/2", // E5 Dsus2 D D5 Bm E5 B5 G#m …
  V: "~ b3 ~ [b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@4 [a3,d4]@2 [b3,d4]@2 ~ e2@2 ~@2 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@4", // E5 Dsus2 D D5 Bm E5
  W: "e2 ~ e2 ~@2 [g#3,b3]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4,g#4]@2 [c#4,e4,g#4]@2 [b2,e3] ~ [b3,e4] ~ [e3,b3] ~ [e3,b3] ~ [b2,e3] [b3,e4] ~ [b3,e4] ~ e3 ~ b3 ~, ~@2 [f#3,b3] ~@13", // G#m E5 E C#m E5 B5
  X: "[b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@5 [b3,d4]@2 ~@2 e2 ~@3 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@4 e2!2 ~, ~@5 [a3,d4] ~@10", // E5 Dsus2 D Bm E5 D5
  Y: "[[f#3,b3]@2 [g#3,b3]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4,g#4]@2 [c#4,e4,g#4]@2 [b2,e3] ~ e4 ~ [e3,b3] ~ [e3,b3] [b2,e3] ~ [b3,e4] ~ [b3,e4] ~ e3 ~ b3 ~ [b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@3 [a3,d4]@2 [b3,d4]@2 ~@2 e2@2 ~@2 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@3 e2 ~ e2 ~ [f#3,b3]@2 [g#3,b3]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4,g#4]@2 [c#4,e4,g#4]@2 [b2,e3] ~ [b3,e4] [e3,b3] ~ [e3,b3] ~ [b2,e3] ~ [b3,e4] ~@13]/3", // B5 G#m E5 E C#m E5 Dsus2 D …
})).s("gm_distortion_guitar").gain(0.4).pan(0.4)

// chords · distortion guitar · "Heavy Guitar" · soft notes
const distortion_guitar_soft = note("<~@89 A B C D E@2>".pickRestart({
  A: "~@20 [b3,e4] ~ e3 ~ b3 ~ [b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2", // E5 Dsus2 D
  B: "~@3 [a3,d4]@2 [b3,d4]@2 ~@2 e2 ~@3 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@3 [e2,e3,b3,e4]@4 e2 ~ e2 ~ [f#3,b3]@2 [g#3,b3]@2 [b3,e4] ~", // D5 Bm E5 B5 G#m E5
  C: "[b3,e4] ~ [b3,e4,g#4]@2 ~ [b2,e3] ~ e4 ~ [e3,b3] ~ [e3,b3] ~ [b2,e3] ~ [b3,e4] ~ [b3,e4] ~ e3 ~ b3 ~ [b3,e4] [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@4, ~@2 [c#4,e4,g#4] ~@13", // E5 E E5 Dsus2 D C#m
  D: "[a3,d4]@2 [b3,d4]@2 ~@2 e2@2 ~@2 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@3 [e2,e3,b3,e4]@4 e2 ~ e2 ~ [f#3,b3]@2 [g#3,b3]@2 [b3,e4] ~ [b3,e4] ~ [b3,e4,g#4]", // D5 Bm E5 B5 G#m E5 E
  E: "[[c#4,e4,g#4]@2 [b2,e3] ~ [b3,e4] ~ [e3,b3] ~ [e3,b3] ~ [b2,e3] ~ [b3,e4] ~ [b3,e4] ~ e3 ~ b3 [b3,e4] ~ [e3,a3,d4]@2 [f#3,a3,d4]@2 ~@4 [a3,d4]@2 [b3,d4]@2 ~@2 e2 ~@2 [e2,e3,b3,e4]@2 [e2,e3,b3,e4]@4 [e2,e3,b3,e4]@4 e2 ~ e2 ~@13]/2", // C#m E5 Dsus2 D D5 Bm E5
})).s("gm_distortion_guitar").gain(0.15).pan(0.4)

// other · overdriven guitar · "Slide Guitar 1" · G A
const overdriven_guitar = note(`<
  ~@42
  [~ a4 c#5 a4 [g4,b4]@4 ~ a4 c#5 a4 [g4,b4]@4]
  [~ a4 c#5 a4 c#5 a4 c#5 a4 c#5 a4@3 g4@4]
  [~ a4 c#5 a4 [g4,b4]@4 ~ a4 c#5 a4 [g4,b4]@4]
  [~ a4 c#5@2 c#5@2 a4 c#5 a4 d4@3 e4@4]
  [~ b4 d#5 b4 [a4,c#5]@4 ~ b4 d#5 b4 [a4,c#5]@4]
  [~ b4 d#5 b4 d#5@2 d#5@2 d#5 g#4@3 e4@4]
  ~@47
>`).s("gm_overdriven_guitar").gain(0.4).pan(0.2)

// other · overdriven guitar · "Slide Guitar 2"
const overdriven_guitar_2 = note("<~@34 A B C D E F G@2 H I H J K L M N O@2 ~@43>".pickRestart({
  A: "~ b3 c#4 e4 g#4@2 g#4@2", B: "e4 c#4@7", C: "~@2 [g#3,b3]@2 [a3,c#4] [c#4,e4]@3 [e4,g#4]@4 [e4,g#4]@4",
  D: "[d4,f#4] [a3,c#4]@7", E: "~@2 a#4@2 e5@3 d5 e5 d5@3 b4@2 b4@2", F: "b4 b4@13 b4@2",
  G: "[g#5@8 e5@8 b4@8 a4@3 g4@2 b4@31 ~@2 a3@2]/2", H: "d4@7 a3 d4@7 a3", I: "d4@8 ~@7 a3", J: "d4@8 ~@7 b3",
  K: "e4@7 b3 e4@7 b3", L: "e4 ~", M: "~ e5@2 d#5 c#5@2 e4 a4", N: "c#5@3 c#5@3 c#5!2", O: "[a4@5 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.8)

// bass · acoustic bass · "Bass"
const bass = note(`<
  A B C D C E C F G H G I J K L M N A B C D C E C F G H G I J K L M N A O P Q R S T U V W X Y Z AA AB AC AD@2 AE C AF AG
  O AH AI G H G I J K L M AJ ~@27
>`.pickRestart({
  A: "~@3 e2", B: "a2@2 e2 f#2 a2 f#2 e2 a1@4 a1 c#2@3 a1", C: "e2@4 b2 c#3 e3 c#3 ~@2 b2@6",
  D: "a2@2 e2 f#2 a2 f#2 e2 a1@4 a1 c#2 c#2@2 c#2", E: "a2@2 e2 f#2 a2 f#2 e2 a1@3 a1!2 c#2@2 d2 d#2",
  F: "a2@2 e2 f#2 a2 f#2 e2 a1@4 a1 c#2 c2 b1 a#1", G: "a1@2 a1!2 a2 a1 ~ a1 g2 a1!3 g2 a1 ~ a1",
  H: "f#2 a1!3 f#2 a1 ~ a1 e2 d2@3 c#2@2 b1@2", I: "f#2 a1!3 f#2 a1 ~ a1 e2 d2@3 c#2 b1 a1@2",
  J: "b1@2 b1!2 b2 b1 ~ b1 a2 b1!3 a2 b1 ~ b1", K: "g#2@2 b1!2 g#2@2 b1!2 f#2 e2@3 d#2@2 b1@2", L: "f#1",
  M: "a1@10 a1 b1 c#2 g1 g#1@2", N: "e1", O: "a2@2 e2 f#2 a2 f#2 e2 a1@4 a1 c#2 d2@2 d#2",
  P: "e2@2 b2 c#3@2 e3@2 c#3@2 b2@3 g#2 b2@2 g#2", Q: "a2@4 e2 f#2@2 a2@2 f#2 e2 c#2@2 c#2@2 d#2",
  R: "e2@2 b2 c#3@2 e3@2 f#3 g#3@4 f#3 e3 c#3 b2", S: "a2@4 a2 g#2@3 f#2 e2@3 b1 c#2 e2!2",
  T: "e1@2 e2@2 g#1 b1@2 c#2@2 e2@4 f#2 g#2@2", U: "a2@7 b2 c#3 b2 a2@2 f#2 e2 c#2 b1",
  V: "a1!2 a1@2 a2 a1 a1@2 a1 a1@2 a1 g2 a1@2 a1", W: "f#2 a1!3 f#2 a1@2 a1 e2 d2@3 c#2@2 b1@2",
  X: "a1 a1@2 a1 a2 a1@2 a1 g2 a1!3 g2 a1@2 a1", Y: "f#2 a1!3 f#2 a1@2 a1 e2 d2@3 c#2 b1 a1 b1",
  Z: "b1@2 b1!2 b2 b1@2 b1 a2 b1!3 a2 b1@2 b1", AA: "g#2 b1!3 g#2 b1@2 b1 f#2 e2@3 d#2@2 b1@2", AB: "f#1@15 f#1",
  AC: "a1@7 b1 c#2 e2@2 f#2 e2 g1 g#1@2", AD: "[e1@5 ~@2 e2]/2", AE: "a2@4 e2 f#2 a2 f#2@2 a1 c#2@2 d2 d#2@2 a1",
  AF: "a2@2 e2 f#2 a2 f#2 e2 a1@3 a1!2 c#2 d2@2 d#2", AG: "e2@2 ~@2 b2 c#3 e3 c#3 ~ b2@7",
  AH: "e2@2 ~@2 b2 c#3 e3 c#3 ~@2 b2@6", AI: "a2@2 e2 f#2 a2 f#2 e2 a2@4 a1 c#2 c2 b1 a#1", AJ: "e1@15 ~",
})).s("gm_acoustic_bass").gain(0.4).pan(0.6)

// other · overdriven guitar · "Slide Guitar 1 Double" · G A
const overdriven_guitar_3 = note(`<
  ~@42
  [~ a5 c#6 a5 [g5,b5]@4 ~ a5 c#6 a5 [g5,b5]@4]
  [~ a5 c#6 a5 c#6 a5 c#6 a5 c#6 a5@3 g5@4]
  [~ a5 c#6 a5 [g5,b5]@4 ~ a5 c#6 a5 [g5,b5]@4]
  [~ a5 c#6@2 c#6@2 a5 c#6 a5 d5@3 e5@4]
  [~ b5 d#6 b5 [a5,c#6]@4 ~ b5 d#6 b5 [a5,c#6]@4]
  [~ b5 d#6 b5 d#6@2 d#6@2 d#6 g#5@3 e5@4]
  ~@47
>`).s("gm_overdriven_guitar").gain(0.25).pan(0.2)

// other · overdriven guitar · "Slide Guitar 2 Double"
const overdriven_guitar_4 = note("<~@34 A B C D E F G@2 H I H J K L M N O@2 ~@43>".pickRestart({
  A: "~ b4 c#5 e5 g#5@2 g#5@2", B: "e5 c#5@7", C: "~@2 [g#4,b4]@2 [a4,c#5] [c#5,e5]@3 [e5,g#5]@4 [e5,g#5]@4",
  D: "[d5,f#5] [a4,c#5]@7", E: "~@2 a#5@2 e6@3 d6 e6 d6@3 b5@2 b5@2", F: "b5 b5@13 b5@2",
  G: "[g#6@8 e6@8 b5@8 a5@3 g5@2 ~ b5@31 ~ a4@2]/2", H: "d5@7 a4 d5@7 a4", I: "d5@8 ~@7 a4", J: "d5@8 ~@7 b4",
  K: "e5@7 b4 e5@7 b4", L: "e5 ~", M: "~ e6@2 d#6 c#6@2 e5 a5", N: "c#6@3 c#6@3 c#6!2", O: "[a5@5 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.25).pan(0.8)

// bass · slap bass 2 · "Slap Bass"
const bass_2 = note("<~@71 A B C D@3 E F G H@5 I J K@3 ~@5>".pickRestart({
  A: "~@9 e1@4 d2 e2@2", B: "~ g#2@2 a2@6 ~@15 c#2@2 d2@6",
  C: "g2@2 f#2@3 e2@4 b1@2 e1@2 b1@2 e1@8 ~ e2@6 g#2@2, ~@23 d2@2 ~@7",
  D: "[a2@6 ~@13 c#2@2 c#2@2 d2@6 ~ f#2@4 e2@2 b1@2 d2@4 d#2@2 e2@2 b1@5 d2@2 e2@6 g#2@2 a2@6 ~@15 c#2@2 d2@5 g2@2 f#2@5, ~@29 g2@2 ~@65]/3",
  E: "~@3 e2@2 b1@4 e1@7 d2@2 e2@6 g#2@2 a2@6", F: "~@15 c#2@2 d2@5 g2@2 f#2@4 e2@4",
  G: "e2@2 b2@2 ~ b2@2 e2@2 e2@4 d2@2 e2@6 g#2@2 a2@6 ~@3, ~@2 e2 ~@13",
  H: "[~@8 e3@3 c#2@2 d#2@6 g2@2 f#2@6 ~@3 b1@4 e1@8 d2@2 e2@5 g#2@2 a2@6 ~@2 e2@4 e2@2 a2@2 e2@5 c#2@2 d2@6 g2@2 f#2@4 e2@2 ~ e2@4 e2@2 b1@2 e1@6 d2@2 e2@5 g#2@2 a2@6 ~@6 e2@2 a2 a2@2 ~@4 c#2@2 d2@4 d2@2 g2@2 f#2@2 e2 e2@4 a1@2 b1@2 a1@2 g1@2 e1@2, ~@29 e2@2 ~@57 b1@2 ~@70]/5",
  I: "e1@2 e1@2 ~ e2@6 g#2@2 a2@6 ~@13, ~@2 d2 ~@13",
  J: "~@2 c#2@2 d2@6 ~ f#2@4 e2@4 e2@2 d#2@2 d#2@2 c#2@2 b1@2 ~ g1@2, ~@10 g2@2 ~@17 a1@2 ~",
  K: "[d2@2 e2@6 g#2@2 a2@6 ~@5 e2@2 a2@2 a2@2 ~@4 c#2@2 d2@4 ~ g2@2 f#2@2 e2@2 e2@4 a1@2 b1@2 a1@2 g1@2 e1 e1@2 e1@2 d2@2 e2@6 g#2@2 a2@6 ~@19, ~@37 d2@2 ~@57]/3",
})).s("gm_slap_bass_2").gain(0.45).pan(0.6)

// bass · slap bass 2 · "Slap Bass" · soft notes
const bass_soft = note("<~@89 A@2 B C@3>".pickRestart({
  A: "[~@28 c#2@2 d2@5 g2@2 f#2@4 e2@4 e2@2 d#2@2 ~ c#2@2 b1@2 a1@2 g1@2 d2@2 e2@4, ~@49 d#2@2 ~@13]/2",
  B: "~@2 g#2@2 a2@6 ~@5 e2@2 a2@2 a2@2 ~@3 c#2@2 d2@4 d2@2",
  C: "[g2@2 f#2@2 e2@2 e2@4 a1@2 ~ a1@2 g1@2 e1@2 e1@2 e1@2 d2@2 e2@6 ~ a2@6 ~@15 c#2@2 d2@6 g2@2 f#2@4 e2@3 e2@2 d#2@2 d#2@2 c#2@2 b1@2 a1@2 g1@2 ~@12, ~@12 b1@2 ~@17 g#2@2 ~@63]/3",
})).s("gm_slap_bass_2").gain(0.15).pan(0.6)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@90
  [~@11 x ~@5 x ~@8 x ~@5]
  [x ~@6 x ~ x ~@14 x ~@5 x ~]
  [~@8 x ~@14 x ~@3 x ~@4]
  [x ~@20 x ~@10]
  [~@5 x ~@4 x ~@21]
>`).gain(0.15).pan(0.4)

// drums · rim
const rim = s("rim").struct("<~ A B@5 C ~@10 A B@5 C ~@10 B@6 ~@11 B@6 C ~@36>".pickRestart({
  A: "x!2 ~ x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.3).pan(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B C B C B C ~@10 A B C B C B C ~@10 A B C B C B C ~@11 B C B C B C ~@8 D E F G H I J K L M N O P Q R S T U ~@4
>`.pickRestart({
  A: "~@10 x ~ x!3 ~", B: "~ x ~ x", C: "~@4 x ~ x!3 ~@5 x ~", D: "~@19 x ~@10 x ~",
  E: "~@10 x!2 ~ x ~ x ~ x ~ x ~@9 x ~@2", F: "~@12 x ~@14 x ~@4", G: "~@25 x ~@6", H: "~@9 x ~@14 x ~@7",
  I: "~@11 x ~@4", J: "~@5 x ~@15 x ~@10", K: "~@19 x ~@12", L: "~@2 x ~@14 x ~@14", M: "~@16 x ~@14 x", N: "~@7 x ~@8",
  O: "~@13 x ~@18", P: "~@11 x ~@20", Q: "~@10 x ~@14 x ~@6", R: "~ x ~@2", S: "~@3 x ~@12", T: "~@5 x ~@26",
  U: "~@3 x ~@28",
})).gain(0.4).pan(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@58
  [~@24 x!2 ~@6]
  ~@31
  [~@9 x ~@6]
  [~ x ~@14]
  [x ~@30 x]
  [~@29 x ~@2]
  [~@3 x ~@4]
>`).gain(0.2).pan(0.4)

// drums · low tom
// … 66 more lines

More by Led Zeppelin