Strudelify

Nobody's Fault but Mine

Led Zeppelin

KeyE majorTempo90 bpm
0:00/0:00
// Nobody's Fault but Mine — Led Zeppelin
// 90 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 9 "Bass Guitar II" slap bass 1 (copy of ch 8 "Bass Guitar I" fretless bass)
// note: Full arrangement: all 150 bars on a 32-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 I, Electric Guitar III.
setcpm(90/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 · harmonica
const harmonica = note("<~@71 A B@2 C D E F G H I J K@3 L@4 M N@2 ~@58>".pickRestart({
  A: "~@9 d5 c#5 b4 a4@2 ~ e4",
  B: "[[g4,g#4] ~ g#4@3 ~ g#4@2 g#4@2 e4@2 d4@4 ~@2 f#5@2 e5@2 d5@2 c#5@2 b4@2 g#4@2 b4@4 a#4@2 b4@2 a#4@2 b4@2 g#4@2 e4@4 ~@2 f#5@2 e5@2 d5@2 c#5@2 b4@2 g4@2 [g4,g#4] ~, ~@2 g4 ~@3 g4 ~@57]/2", // G#maj7
  C: "[g4,g#4] ~ g#4@3 ~ [g4,g#4] ~ g#4@2 e4@2 d4@4 ~@2 f#5@2 e5@2 d5@2 c#5@2 b4@2 g4@2 [g4,g#4] ~, ~@2 g4 ~@29", // G#maj7
  D: "[g4,g#4] ~ g#4@3 ~ [g4,g#4] ~ g#4@2 e4@2 d4@4 ~@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2, ~@2 g4 ~@29", // G#maj7
  E: "b3@2 g4 g4@2 f#4 e4@2 ~ b3!4 e4@2 g4, ~@30 f#4 ~",
  F: "~@2 g4@3 ~ g4@3 ~ e4@6 ~@2 b4@2 d5@2 d5@2 d5@2 d5@2 d5@2 d5@2, ~@2 f#4 ~@3 f#4 ~@25",
  G: "d5!2 c#5 b4 a4 g4 e4@2 ~ b4 d5!6",
  H: "d5@2 d5@2 c#5@2 b4@2 a4@2 g4@2 e4@4 ~@2 f#5@2 e5@2 d5@2 c#5@2 b4@2 g4@2 [g4,g#4] ~", // G#maj7
  I: "[g4,g#4] ~ g#4@3 ~ [g4,g#4] ~ g#4@2 e4@6 ~@2 f#5@2 e5@2 d5@2 c#5@2 b4@2 g4@2 b4@2, ~@2 g4 ~@29", // G#maj7
  J: "a#4@10 b4 g4 e4@4 ~@2 f#5@2 e5@2 d5@2 c#5@2 b4@2 g4@2 [g4,g#4] ~", // G#maj7
  K: "[[g4,g#4] ~ g#4@3 ~ [g4,g#4] ~ g#4@2 f#4@2 b3@4 ~@2 f#5@2 e5@2 d5@2 c#5@2 b4@2 g4@2 e4@4 g4@8 e4@2 ~@6 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@4 [b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@4 ~@2 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@2, ~@2 g4 ~@93]/3", // G#maj7 E A E
  L: "[[b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 ~@2 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@4 [b3,e4,g#4]@4 [c#4,e4,a4]@2 [b3,e4,g#4]@4 [c#4,e4,a4]@4 ~@2 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@2 [b3,e4,g#4]@4 [b3,e4,g#4]@6 ~@14 f#5@2 e5@2 d5@2 c#5@2 b4@2 g#4@2 ~ g#4@2 ~ e4@3 ~ e4@2 d4@4 ~@6 f#5@2 e5@2 d5@2 c#5@2 b4@2 e4@3 ~, ~@92 g4 ~@2 g4 ~@2 g4 ~@25 g4 ~@3]/4", // E A E A E
  M: "~ e4@2 e4 d4@2 ~@3 f#5 e5 d5 c#5 b4 f#4@2", N: "[~ e4@2 e4@21 ~@8]/2",
})).s("gm_harmonica").gain(0.69).pan(0.6)

// other · distortion guitar · "Electric Guitar I"
const distortion_guitar = note("<~@110 A B@2 C@2 D E F@2 G H I J K L M N O P Q R ~@19>".pickRestart({
  A: "~@14 b4 a#4 b4@11 ~ d5@4", B: "[d5@4 a#4 a4 a#4 a4 g4@4 e4@2 g4@22 a4@10 ~ a4 g#4@4 e4@11 ~]/2",
  C: "[b4 ~ g5 e5@3 ~ e5 a#5 ~ a5 g5@2 a5 g5 e5@3 g5 ~@5 g#4 b4 ~@4 g#5 f#5]/2",
  D: "g#5 f#5@2 e5 f#5 e5 c#5 e5@2 c#5 ~@4 c#6 b5", E: "c#6 b5 g#5 f#5 g#5 b5@2 c#6 b5 ~ b5@3 g#5 f#5 g#5",
  F: "[~@2 f#5@2 e5@2 c#5@2 e5@2 e5@2 c#5@2 e5@4 ~@10 b5@2 c#6@6 b5@2 ~@2 b5@2 a#5@2 a5@2 a5@2 g5@2 f#5@2 e5@2 e5@4 e5@2 c#5@2 ~ b5]/2",
  G: "c#6 b5 c#6@6 b5@2 g#5@2 f#5@2 ~@14 a#5@4", H: "~ a#5 ~@2 a#5 ~@2 a#5 ~@2 b5 ~@2 b5 ~@2",
  I: "e5@2 c#5@2 e5 c#5 ~ e5 f#5@2 g#5@2 b5@2 e6@2 ~@16", J: "g6 d6@2 e6 g6 d6@2 e6 g6 d6@2 a5 a#5 a5 ~@2",
  K: "g6 d6 e6@2 g6 e6 d6 b5 a#5 g5 ~@5 g5", L: "g#5@2 e6@2 d6@8 g#5@2 b5@2 d6@7 ~@3 b5@2 d6@4",
  M: "~@12 b5 a#5 b5@4 ~@10 c#5@2 e5@2",
  N: "g#5@2 g#5@2 c#6 b5 ~ g#5 b5 g#5 ~ f#5 g#5 f#5 ~ e5 f#5 e5 ~ d#5 e5@2 c#5@2 ~@2 g#5@2 ~@4",
  O: "g#6@11 ~ f#6@2 e6@4 ~@2 d6@2 ~@4 g#5@2 b5@2 e6@2", P: "g#6@7 ~ f#6@4 ~@2 d6@2 e6@4 ~@6 g#5@2 b5@2 e6@2",
  Q: "g#6@3 ~ f#6 ~ c#6 ~@3 c#6 b5 ~ c#5 e5 c#5", R: "f#5 c#5 ~ c#5 ~ c#5 ~@10",
})).s("gm_distortion_guitar").gain(0.31).pan(0.1)

// chords · distortion guitar · "Electric Guitar II"
const distortion_guitar_2 = note(`<
  A B C D@2 A B C D@2 E F G H@2 E F G H@2 E F G H@2 I J@2 K L M L M L N O ~ I J@2 K L M P Q@2 R S T U V W@2 X Y Z AA@2 X
  Y Z AA@2 X Y Z AB@2 AC AD AC AE@3 AF AG@2 AF AH AI@3 AF AJ@3 AF AK AL AM AN@3 AO S T U V AP@4 AQ@2 ~ M L AR O ~ I AS I
  AS AT AU AV AU AV AU AV AU AV AU AV AU AV AU AW@2 AX@2 AY F G H@2 AY F G H@2 E AZ BA@2 ~ BB@2 BC
>`.pickRestart({
  A: "d3 b2!2 d3 b2!2 d3@2 e3@7 ~", B: "d3 b2!2 d3 b2!2 g2@2 b2@7 ~",
  C: "d3@2 b2@2 b2@2 d3@9 ~ e3@4 d3@2 b2@2 a2@2 g2@2 ~@4", D: "[a2 g#2!2 a2 g#2!2 a2@2 b2 a2 g#2 [e2,b2]@20 ~]/2",
  E: "[d3,d4] [b2,b3]!2 [d3,d4] [b2,b3]!2 [d3,d4]@2 [e3,e4]@7 ~", // D B D B D E
  F: "[d3,d4] [b2,b3]!2 [d3,d4] [b2,b3]!2 [g2,g3]@2 [b2,b3]@7 ~", // D B D B G B
  G: "[d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@9 ~ [e3,e4]@4 [d3,d4]@2 [b2,b3]@2 [a2,a3]@2 [g2,g3]@2 ~@4", // D B D E D B A G
  H: "[[a2,a3] [g#2,g#3]!2 [a2,a3] [g#2,g#3]!2 [a2,a3]@2 [b2,b3] [a2,a3] [g#2,g#3] [e2,b2,e3]@20 ~]/2", // A G# A G# A B A G# …
  I: "e3 d3!2 b2 a2!2 g2 g#2 e2@7 ~", J: "[e3 d3!2 b2 a2!2 g2 g#2 [a2,e3]@23 ~]/2",
  K: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@3 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~@2", // D A D A E
  L: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3] g3 g#3 e4 [b3,e4,g#4]!2 [c#4,e4,a4] [b3,e4,g#4]!2 [c#4,e4,a4] ~@2", // D A D A E A E A
  M: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@2 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~", // D A D A E
  N: "e3@6 f#3@9 ~ [g2,d3,g3]@6 [a2,e3,a3]@9 ~", // G5 A5
  O: "[a2,e3,a3]@2 [a2,e3,a3]!2 [a2,e3,a3]@2 [a2,e3,a3]!2 [a2,e3,a3]@2 [a2,e3,a3]!3 ~@3", // A5
  P: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 [a3,d4] [b3,e4] ~@8", // D A D A D5 E5
  Q: "[~@8 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@2 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3] g3 g#3 e4]/2", // D A D A E D A D …
  R: "[b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@2 ~@4 [e2,b2,e3]@6 [f#2,c#3,f#3]@9 ~", // E A E A E5 F#5
  S: "[g2,d3,g3]@6 [a2,e3,a3]@9 ~ [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,e3,a3]@2", // G5 A5
  T: "[a2,e3,a3]@2 [a2,e3,a3]!3 ~@11", U: "~@8 e3 d3!2 b2 a2!2 g2 g#2", V: "e2@7 ~ e3 d3!2 b2 a2!2 g2 g#2",
  W: "[[a2,e3]@23 ~ d3 [b2,b3]!2 [d3,d4] [b2,b3]!2 [d3,d4]@2]/2", // A5 B D B D
  X: "[e3,e4]@7 ~ [d3,d4] [b2,b3]!2 [d3,d4] [b2,b3]!2 [g2,g3]@2", // E D B D B G
  Y: "[b2,b3]@14 ~@2 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@9 ~", // B D B D
  Z: "[e3,e4]@2 [d3,d4] [b2,b3] [a2,a3] [g2,g3] ~@2 [a2,a3] [g#2,g#3]!2 [a2,a3] [g#2,g#3]!2 [a2,a3]@2", // E D B A G A G# A …
  AA: "[[b2,b3] [a2,a3] [g#2,g#3] [e2,b2,e3]@20 ~ d3 [b2,b3]!2 [d3,d4] [b2,b3]!2 [d3,d4]@2]/2", // B A G# E5 B D B D
  AB: "[[b2,b3] [a2,a3] [g#2,g#3] [e2,b2,e3]@20 ~ [e3,b3] [d3,a3]!2 [d3,a3]@2 a2 g2@2]/2", // B A G# E5 D5
  AC: "[e2,b2,e3]@7 ~ [e3,b3] [d3,a3]!2 [d3,a3]@2 a2 g2 g#2", AD: "[a2,e3]@7 ~ [e3,b3] [d3,a3]!2 [d3,a3]@2 a2 g2@2",
  AE: "[[a2,e3]@7 ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~ [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,c#4,e4,a4] ~ [e2,e3,b3,e4,g#4]!2 ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3]/3", // A5 D A D A E A E …
  AF: "[b3,e4,g#4]!2 [c#4,e4,a4] [b3,e4,g#4]!2 [c#4,e4,a4] ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~@2", // E A E A D A D A
  AG: "[~ [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~ [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3]/2", // E D A D A E D A …
  AH: "~ [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~ [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3", // E D A D A
  AI: "[[b3,e4,g#4]!2 [c#4,e4,a4] [b3,e4,g#4]!2 [c#4,e4,a4] ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~ [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,c#4,e4,a4] ~ [e2,e3,b3,e4,g#4]!2 ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3]/3", // E A E A D A D A …
  AJ: "[~ [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~ [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~ [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,c#4,e4,a4] ~ [e2,e3,b3,e4,g#4]!2 ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3]/3", // E D A D A E A E …
  AK: "~ [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~ [e2,e3,b3,e4,g#4] ~ [c#4,e4,a4] [b3,e4,g#4]!3 [c#4,e4,a4] [b3,e4,g#4]!3", // E A E A E
  AL: "~ [c#4,e4,a4] ~@2 [b3,e4,g#4]@2 [b3,e4,g#4] ~ [c#4,e4,a4] [b3,e4,g#4]!3 [c#4,e4,a4] [b3,e4,g#4]!3", // A E A E A E
  AM: "~ [c#4,e4,a4] ~@2 [b3,e4,g#4]@2 [b3,e4,g#4] ~ [e3,a3,c#4] [e3,g#3,b3]!3 [e3,a3,c#4] [e3,g#3,b3]!3", // A E A E A E
  AN: "[[e3,a3,c#4] ~@2 [e3,g#3,b3]@2 [e3,g#3,b3] [b2,e3,g#3]@18 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@2 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3] g3 g#3 e4]/3", // A E D A D A E D …
  AO: "[b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@2 ~@4 e3@6 f#3@9 ~", // E A E A
  AP: "[[a2,e3]@39 ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@3 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3] g3 g#3 e4]/4", // A5 D A D A E D A …
  AQ: "[[b3,e4,g#4]!2 [c#4,e4,a4] [b3,e4,g#4]!2 [c#4,e4,a4] ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@2 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 [a3,d4] [b3,e4]]/2", // E A E A D A D A …
  AR: "[e2,b2,e3]@6 [f#2,c#3,f#3]@9 ~ [g2,d3,g3]@6 [a2,e3,a3]@9 ~", AS: "e3 d3!2 b2 a2!2 g2 g#2 [a2,e3]@7 ~",
  AT: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 e3@3 [e3,g#3,b3] ~@2 [e3,g#3,b3] ~@2", // D A D A E
  AU: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3 [e3,g#3,b3]!2 [e3,a3,c#4] [e3,g#3,b3]!2 [e3,a3,c#4] ~@2", // D A D A E A E A
  AV: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~@3 [e2,e3,g#3,b3] ~@2 [e2,e3,g#3,b3]@2 [e2,e3,g#3,b3] ~", // D A D A E
  AW: "[e3,a3,c#4]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,a3,c#4]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 ~@2 [e3,a3,c#4]@2 ~@4 [e3,g#3,b3]@7 ~", // A E A E A E
  AX: "[[e3,a3,c#4] [e3,g#3,b3]!3 [e3,a3,c#4] [e3,g#3,b3]!3 ~ [e3,a3,c#4] ~@2 [d3,e3,b3]@19 ~]/2", // A E A E A E7
  AY: "d3 [b2,b3]!2 [d3,d4] [b2,b3]!2 [d3,d4]@2 [e3,e4]@7 ~", // B D B D E
  AZ: "[d3,d4] [b2,b3]!2 [d3,d4] [b2,b3]!2 g3@2 [b2,b3]@7 ~", // D B D B
  BA: "[[g#3,b3]@6 [a3,c#4]@9 ~ [b3,d4]@6 [c#4,e4]@32 ~@10]/2", // G#m A Bm C#m
  BB: "[~@8 d3 a2!2 d3 a2!2 [d3,a3] [e3,b3]@8 ~ [e3,b3] [d3,a3]!3 [b2,f#3]!3 [a2,e3]]/2", // D5 E5 D5 B5 A5
  BC: "[a2,e3] [g2,d3]!4 [e2,b2]!3 ~@8", // A5 G5 E5
})).s("gm_distortion_guitar").gain(0.31).pan(0.1)

// other · distortion guitar · "Electric Guitar III"
const distortion_guitar_3 = note("<~@110 A B@2 C@2 D E F@2 G H I J K L M N O P Q R ~@19>".pickRestart({
  A: "~@14 b4 a#4 b4@11 ~ d5@4", B: "[d5@4 a#4 a4 a#4 a4 g4@4 e4@2 g4@22 a4@10 ~ a4 g#4@4 e4@11 ~]/2",
  C: "[b4 ~ g5 e5@3 ~ e5 a#5 ~ a5 g5@2 a5 g5 e5@3 g5 ~@5 g#4 b4 ~@4 g#5 f#5]/2",
  D: "g#5 f#5@2 e5 f#5 e5 c#5 e5@2 c#5 ~@4 c#6 b5", E: "c#6 b5 g#5 f#5 g#5 b5@2 c#6 b5 ~ b5@3 g#5 f#5 g#5",
  F: "[~@2 f#5@2 e5@2 c#5@2 e5@2 e5@2 c#5@2 e5@4 ~@10 b5@2 c#6@6 b5@2 ~@2 b5@2 a#5@2 a5@2 a5@2 g5@2 f#5@2 e5@2 e5@4 e5@2 c#5@2 ~ b5]/2",
  G: "c#6 b5 c#6@6 b5@2 g#5@2 f#5@2 ~@14 a#5@4", H: "~ a#5 ~@2 a#5 ~@2 a#5 ~@2 b5 ~@2 b5 ~@2",
  I: "e5@2 c#5@2 e5 c#5 ~ e5 f#5@2 g#5@2 b5@2 e6@2 ~@16", J: "g6 d6@2 e6 g6 d6@2 e6 g6 d6@2 a5 a#5 a5 ~@2",
  K: "g6 d6 e6@2 g6 e6 d6 b5 a#5 g5 ~@5 g5", L: "g#5@2 e6@2 d6@8 g#5@2 b5@2 d6@7 ~@3 b5@2 d6@4",
  M: "~@12 b5 a#5 b5@4 ~@10 c#5@2 e5@2",
  N: "g#5@2 g#5@2 c#6 b5 ~ g#5 b5 g#5 ~ f#5 g#5 f#5 ~ e5 f#5 e5 ~ d#5 e5@2 c#5@2 ~@2 g#5@2 ~@4",
  O: "g#6@11 ~ f#6@2 e6@4 ~@2 d6@2 ~@4 g#5@2 b5@2 e6@2", P: "g#6@7 ~ f#6@4 ~@2 d6@2 e6@4 ~@6 g#5@2 b5@2 e6@2",
  Q: "g#6@3 ~ f#6 ~ c#6 ~@3 c#6 b5 ~ c#5 e5 c#5", R: "f#5 c#5 ~ c#5 ~ c#5 ~@10",
})).s("gm_distortion_guitar").gain(0.31).pan(0.9)

// chords · distortion guitar · "Electric Guitar IV"
const distortion_guitar_4 = note(`<
  A B C D@2 A B C D@2 E F G H@2 E F G H@2 E F G H@2 I J@2 K L M L M L N O ~ I J@2 K L M P Q@2 R S T U V W@2 X Y Z AA@2 X
  Y Z AA@2 X Y Z AB@2 AC AD AC AE@3 AF AG@2 AF AH AI@3 AF AJ@3 AF AK AL AM AN@3 AO S T U V AP@4 AQ@2 ~ M L AR O ~ I AS I
  AS AT AU AV AU AV AU AV AU AV AU AV AU AV AU AW@2 AX@2 E F G H@2 E F G H@2 AY AZ AR O ~ BA@2 BB
>`.pickRestart({
  A: "~ d3@2 b2@2 b2@2 d3@2 b2@2 b2@2 d3@4 e3@14 ~", B: "~ d3@2 b2@2 b2@2 d3@2 b2@2 b2@2 g2@4 b2@14 ~",
  C: "~ d3@2 b2@2 b2@2 d3@9 ~ e3@4 d3@2 b2@2 a2@2 g2@2 ~@3",
  D: "[~ a2@2 g#2@2 g#2@2 a2@2 g#2@2 g#2@2 a2@4 b2@2 a2@2 g#2@2 [e2,b2]@40 ~]/2", // E5
  E: "~ [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@4 [e3,e4]@14 ~", // D B D B D E
  F: "~ [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [g2,g3]@4 [b2,b3]@14 ~", // D B D B G B
  G: "~ [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@9 ~ [e3,e4]@4 [d3,d4]@2 [b2,b3]@2 [a2,a3]@2 [g2,g3]@2 ~@3", // D B D E D B A G
  H: "[~ [a2,a3]@2 [g#2,g#3]@2 [g#2,g#3]@2 [a2,a3]@2 [g#2,g#3]@2 [g#2,g#3]@2 [a2,a3]@4 [b2,b3]@2 [a2,a3]@2 [g#2,g#3]@2 [e2,b2,e3]@40 ~]/2", // A G# A G# A B A G# …
  I: "e3 d3!2 b2 a2!2 g2 g#2 e2@7 ~", J: "[e3 d3!2 b2 a2!2 g2 g#2 [a2,e3]@23 ~]/2",
  K: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@3 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~@2", // D A D A E
  L: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3] g3 g#3 e4 [b3,e4,g#4]!2 [c#4,e4,a4] [b3,e4,g#4]!2 [c#4,e4,a4] ~@2", // D A D A E A E A
  M: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@2 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~", // D A D A E
  N: "e3@6 f#3@9 ~ [g2,d3,g3]@6 [a2,e3,a3]@9 ~", // G5 A5
  O: "[a2,e3,a3]@2 [a2,e3,a3]!2 [a2,e3,a3]@2 [a2,e3,a3]!2 [a2,e3,a3]@2 [a2,e3,a3]!3 ~@3", // A5
  P: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 [a3,d4] [b3,e4] ~@8", // D A D A D5 E5
  Q: "[~@8 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@2 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3] g3 g#3 e4]/2", // D A D A E D A D …
  R: "[b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@2 ~@4 [e2,b2,e3]@6 [f#2,c#3,f#3]@9 ~", // E A E A E5 F#5
  S: "[g2,d3,g3]@6 [a2,e3,a3]@9 ~ [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@4 [a2,e3,a3]@2 [a2,e3,a3]@2", // G5 A5
  T: "[a2,e3,a3]@2 [a2,e3,a3]!3 ~@11", U: "~@8 e3 d3!2 b2 a2!2 g2 g#2", V: "e2@7 ~ e3 d3!2 b2 a2!2 g2 g#2",
  W: "[[a2,e3]@46 ~@3 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@3]/2", // A5 D B D B D
  X: "~ [e3,e4]@14 ~@2 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [g2,g3]@3", // E D B D B G
  Y: "~ [b2,b3]@14 ~@2 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@9", // B D B D
  Z: "~ [e3,e4]@4 [d3,d4]@2 [b2,b3]@2 [a2,a3]@2 [g2,g3]@2 ~@4 [a2,a3]@2 [g#2,g#3]@2 [g#2,g#3]@2 [a2,a3]@2 [g#2,g#3]@2 [g#2,g#3]@2 [a2,a3]@3", // E D B A G A G# A …
  AA: "[~ [b2,b3]@2 [a2,a3]@2 [g#2,g#3]@2 [e2,b2,e3]@40 ~@2 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@2 [b2,b3]@2 [b2,b3]@2 [d3,d4]@3]/2", // B A G# E5 D B D B …
  AB: "[~ [b2,b3]@2 [a2,a3]@2 [g#2,g#3]@2 [e2,b2,e3]@40 ~ [e3,b3]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3]@4 a2@2 g2@4]/2", // B A G# E5 D5
  AC: "[e2,b2,e3]@7 ~ [e3,b3] [d3,a3]!2 [d3,a3]@2 a2 g2 g#2", AD: "[a2,e3]@7 ~ [e3,b3] [d3,a3]!2 [d3,a3]@2 a2 g2@2",
  AE: "[[a2,e3]@7 ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~ [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,c#4,e4,a4] ~ [e2,e3,b3,e4,g#4]!2 ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3]/3", // A5 D A D A E A E …
  AF: "[b3,e4,g#4]!2 [c#4,e4,a4] [b3,e4,g#4]!2 [c#4,e4,a4] ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~@2", // E A E A D A D A
  AG: "[~ [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~ [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3]/2", // E D A D A E D A …
  AH: "~ [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~ [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3", // E D A D A
  AI: "[[b3,e4,g#4]!2 [c#4,e4,a4] [b3,e4,g#4]!2 [c#4,e4,a4] ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~ [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,c#4,e4,a4] ~ [e2,e3,b3,e4,g#4]!2 ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3]/3", // E A E A D A D A …
  AJ: "[~ [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~ [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~ [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,c#4,e4,a4] ~ [e2,e3,b3,e4,g#4]!2 ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3,e4]@2 [e2,e3,b3,e4,g#4] [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4]@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3]/3", // E D A D A E A E …
  AK: "~ [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~ [e2,e3,b3,e4,g#4] ~ [c#4,e4,a4] [b3,e4,g#4]!3 [c#4,e4,a4] [b3,e4,g#4]!3", // E A E A E
  AL: "~ [c#4,e4,a4] ~@2 [b3,e4,g#4]@2 [b3,e4,g#4] ~ [c#4,e4,a4] [b3,e4,g#4]!3 [c#4,e4,a4] [b3,e4,g#4]!3", // A E A E A E
  AM: "~ [c#4,e4,a4] ~@2 [b3,e4,g#4]@2 [b3,e4,g#4] ~ [e3,a3,c#4] [e3,g#3,b3]!3 [e3,a3,c#4] [e3,g#3,b3]!3", // A E A E A E
  AN: "[[e3,a3,c#4] ~@2 [e3,g#3,b3]@2 [e3,g#3,b3] [b2,e3,g#3]@18 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@2 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3] g3 g#3 e4]/3", // A E D A D A E D …
  AO: "[b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@2 ~@4 e3@6 f#3@9 ~", // E A E A
  AP: "[[a2,e3]@39 ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@3 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4] ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3] g3 g#3 e4]/4", // A5 D A D A E D A …
  AQ: "[[b3,e4,g#4]!2 [c#4,e4,a4] [b3,e4,g#4]!2 [c#4,e4,a4] ~@2 [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 [e2,e3]@2 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~ [d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 [a3,d4] [b3,e4]]/2", // E A E A D A D A …
  AR: "[e2,b2,e3]@6 [f#2,c#3,f#3]@9 ~ [g2,d3,g3]@6 [a2,e3,a3]@9 ~", AS: "e3 d3!2 b2 a2!2 g2 g#2 [a2,e3]@7 ~",
  AT: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 d3 e3@3 [e3,b3,e4,g#4] ~@2 [e3,b3,e4,g#4] ~@2", // D A D A E
  AU: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 g3 g#3 [b3,e4,g#4]!2 [c#4,e4,a4] [b3,e4,g#4]!2 [c#4,e4,a4] ~@2", // D A D A E A E A
  AV: "[d3,d4] [a2,a3]!2 [d3,d4] [a2,a3]!2 ~@3 [e2,e3,b3,e4,g#4] ~@2 [e2,e3,b3,e4,g#4]@2 [e2,e3,b3,e4,g#4] ~", // D A D A E
  AW: "[c#4,e4,a4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [c#4,e4,a4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 ~@2 [c#4,e4,a4]@2 ~@4 [b3,e4,g#4]@7 ~", // A E A E A E
  AX: "[[c#4,e4,a4] [b3,e4,g#4]!3 [c#4,e4,a4] [b3,e4,g#4]!3 ~ [c#4,e4,a4] ~@2 [e3,b3,d4]@19 ~]/2", // A E A E A E7
  AY: "[d3,d4] [b2,b3]!2 [d3,d4] [b2,b3]!2 [d3,d4]@2 [e3,e4]@7 ~", // D B D B D E
  AZ: "[d3,d4] [b2,b3]!2 [d3,d4] [b2,b3]!2 [g2,g3]@2 [b2,b3]@7 ~", // D B D B G B
  BA: "[~@8 d3 a2!2 d3 a2!2 [d3,a3] [e3,b3]@8 ~ [e3,b3] [d3,a3]!3 [b2,f#3]!3 [a2,e3]]/2", // D5 E5 D5 B5 A5
  BB: "[a2,e3] [g2,d3]!4 [e2,b2]!3 ~@8", // A5 G5 E5
})).s("gm_distortion_guitar").gain(0.31).pan(0.9)

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

// drums · kick
const kick = s("bd").struct(`<
  ~@25 A@2 ~ B@3 C D B E F ~@4 B@3 G H I J K L M N O ~ P@3 Q ~ R S T U M V@3 U M N@3 W X Y@2 Z AA AB AA AB AC AB@2 AC AD
  AE AF AC I AG AH AI AJ J K L ~@4 H AC@2 AK ~ AL B E F ~ A@4 AM AN AO AP AQ AL AR AS AL@2 AT B AU B@3 AV ~ AW@3 AX ~ AW
// … 68 more lines

More by Led Zeppelin