Strudelify
No Quarter cover art

Houses of the Holy

No Quarter

Led Zeppelin

KeyE majorTempo68 bpm
0:00/0:00
// No Quarter — Led Zeppelin
// 68 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 11 "Electric Piano Mod" named as a piano, played on epiano1 (its ocarina patch is not one); ch 2 "Electric Piano Upper" named as a piano, played on epiano1 (its ocarina patch is not one); ch 3 "Electric Piano Lower" named as a piano, played on epiano1 (its ocarina patch is not one); ch 13 "Fuzz Guitar" named as a guitar, played on distortion guitar (its lead 2 sawtooth patch is not one); ch 14 "Echo Fuzz Guitar" named as a guitar, played on distortion guitar (its lead 2 sawtooth patch is not one)
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Clean Guitar, Fuzz Guitar.
setcpm(68/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 · epiano1 · "Electric Piano Mod"
const epiano1 = note(`<
  ~@4 A@2 B@2 C@2 D@2 E@2 F@2 G H ~@6 I ~@4 J@4 K@2 L@2 M@2 N O P Q ~@40 J@4 K@2 L@2 M@2 N O P ~@19
>`.pickRestart({
  A: "[~@3 g#4@3 ~ b4@3 ~ c#5@2 ~ d#5@5 ~ b4 g#4@2 a#4@5 ~@4]/2", B: "[~@4 b4@2 ~ b4@2 c#5@2 ~@3 g#4@7 ~@11]/2",
  C: "[~@3 g#4@3 ~ b4@3 ~ c#5@2 ~ d#5@5 ~ [g#4,b4]@3 g#4@2 ~@7]/2", D: "[~@4 b4@3 b4@2 c#5@3 ~@2 g#4@7 ~@11]/2",
  E: "[~@4 g#4@2 ~ b4@3 ~ c#5@3 ~ d#5@5 ~@12]/2", F: "[~@3 d#5 d#5@3 d#5@2 e5@2 e5@2 f#5@2 [g#4,g#5]@5 ~@12]/2",
  G: "~@4 [g#4,g#5]@3 [g#4,g#5]@2 [b4,b5]@2 f#5@3 [g#4,g#5]@2", H: "[g#4,c#5,e5]@3 ~@13", I: "~@9 g#4@2 b4@5",
  J: "[~@3 g#4@3 ~ g#4@3 ~ c#5@2 ~ d#5@7 b4@2 b4@5 a#4@7 ~ b4@2 ~ b4@2 c#5@2 ~@3 g#4@7 ~@11]/4",
  K: "[~@4 g#4@2 ~ b4@3 ~ c#5@2 ~ d#5@7 g#4@2 ~@9]/2", L: "[~@4 b4@3 b4@2 c#5@3 ~@2 g#4@6 ~@12]/2",
  M: "[~@4 g#4@2 ~ b4@3 ~ c#5@3 ~ d#5@5 g#4@3 ~@9]/2", N: "~@4 d#5@3 d#5@2 e5@2 e5@3 f#5@2", O: "[g#4,g#5] ~@3",
  P: "~@4 g#5@2 g#5 g#5@2 b5@2 f#5@3 g#5@2", Q: "[c#5,e5]@3 ~@13",
})).s("gm_epiano1").gain(0.3)

// chords · epiano1 · "Electric Piano Upper"
const epiano1_2 = note(`<
  ~@2 A@2 B@8 C@5 D E F G H I J K L@4 M@6 N@5 O@2 P E F G H I J Q R@4 S@2 T U S@2 T U S@2 T V W@2 X Y@2 Z AA AB@2 AC
  AD@2 AE AF AG AH@2 M@6 N@5 O@2 P E F G H I J Q H I J Q H I AI ~@4
>`.pickRestart({
  A: "[~@12 f#3@2 g#3@5 g#3 e4 d#4 c#4 d#4@4 b3 [b3,f#4]@4]/2", // B5
  B: "[~@2 g#3 g#4@3 b3 b4@3 c#4 c#5@2 d#4 d#5@5 d#4 b4 g#4@2 a#4@5 f#4@7 b3 b4@2 b3 b4@2 [c#4,c#5]@2 f#3 f#4@2 [g#3,g#4]@7 [g#3,e4]@2 [g#3,e4]@2 [b3,f#4]@5 [a#3,f#4]@4 g#3 g#4@3 b3 b4@3 c#4 c#5@2 b3 d#5@5 d#4 [g#4,b4]@3 g#4@2 f#4@5 f#4@5 b3 b4@3 b4@2 [c#4,c#5]@3 [f#3,f#4]@2 [g#3,g#4]@7 [g#3,e4]@2 [g#3,e4]@2 [b3,f#4]@3 c#4@4]/8", // C# G# C#m B5 D#m G#m C# F# …
  C: "[~@3 g#3 g#4@2 b3 b4@3 c#4 c#5@3 ~ d#5@5 [e3,a3,d#4]@3 [e3,a3,d#4]@2 [e3,a3,d#4]@4 [f#3,b3,e4]@2 [e3,a3,d#4]@4 [d#4,d#5] [d#4,d#5]@3 [d#4,d#5]@2 [e4,e5]@2 [e4,e5]@2 [f#4,f#5]@2 [g#4,g#5]@5 [g#4,d5,e5]@3 [g#4,d5,e5]@2 [g#4,d5,e5]@2 [g#4,d5,e5]@4 [g#4,d5,e5]@5 [g#4,g#5]@3 [g#4,g#5]@2 [b4,b5]@2 [f#4,f#5]@3 [g#4,g#5]@2, ~@7 d#4@3 ~@30]/5", // A Esus2 A D# E F# G# E7 …
  D: "[g#4,c#5,e5]@3 ~ [g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@2", // C#m
  E: "~ [a#3,c#4,e4]@3 [a#3,c#4] [g#3,b3]@2 [g#3,b3,e4] ~ [g#3,b3,e4] ~@2 [g#3,b3,e4]@4, ~@4 e4@3 ~@9", // A#dim A#m G#m E
  F: "~ [g#3,c#4,e4] ~@2 [g#3,c#4,e4]@3 [g#3,c#4,e4]!2 ~ [g#3,c#4,e4]@2 ~ [g#3,c#4,e4] [g#3,c#4,e4]@2", // C#m
  G: "~ [a#3,c#4,e4]@2 ~ [a#3,c#4] [g#3,b3]@2 [g#3,b3,e4] ~ [g#3,b3,e4] ~@2 [g#3,b3,e4]@4, ~@4 e4@3 ~@9", // A#dim A#m G#m E
  H: "~ [g#3,c#4,e4]!2 ~ [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4] ~@2 [g#3,c#4,e4]!2 ~ [g#3,c#4,e4]@2", // C#m
  I: "~ [a#3,c#4,e4] ~@2 [a#3,c#4] [g#3,b3]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2, ~@4 e4@3 ~@9", // A#dim A#m G#m E
  J: "~ [g#3,c#4,e4] ~@2 [g#3,c#4,e4]@2 ~ [g#3,c#4,e4] ~@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~@3", // C#m
  K: "~ [a#3,c#4,e4] ~@2 [a#3,c#4] g#3@2 [g#3,b3,e4]@2 [g#3,g#4]@2 [g#3,b4]@5, ~@4 e4@3 ~@9, ~@5 b3 ~@10", // A#dim A#m E G# G#m
  L: "[~@4 e4 d#4 c#4 d#4@2 b3@3 f#3@2 g#3@5 g#3 e4 d#4 c#4 d#4@4 b4@2 f#4@6 g#3 e4 d#4 c#4 d#4@2 b3@2 f#3@3 g#3@6 e4 d#4 c#4 d#4@4 b3@3 f#3@2]/4",
  M: "[~@2 g#3 g#4@3 b3 g#4@3 c#4 c#5@2 d#4 d#5@7 [g#4,b4]@2 [g#4,b4]@5 [f#4,a#4]@7 b3 b4@2 b3 b4@2 [c#4,c#5]@2 f#3 f#4@2 [g#3,g#4]@7 [c#4,e4]@2 [g#3,e4]@2 [b3,f#4]@4 [a#3,f#4]@6 g#3 g#4@2 b3 b4@3 c#4 c#5@2 b3 d#5@7 [d#4,g#4]@2 f#4@5 c#4 d#4 f#4@2]/6", // G#m F# C# G# C#m B5 D#m G#5
  N: "[~@3 b3 b4@3 b4@2 c#5@3 [f#3,f#4]@2 [g#3,g#4]@6 [g#3,e4] [g#3,e4]@2 [g#3,e4]@2 [b3,f#4]@5 [a#3,f#4]@5 g#3 g#4@2 b3 b4@3 c#4 c#5@3 ~ d#5@5 [a3,d#4,g#4]@3 [e3,a3,d#4]@4 [f#3,b3,e4]@4 [e3,a3,d#4]@5 [d#4,d#5]@3 [d#4,d#5]@2 [e4,e5]@2 [e4,e5]@3 [f#4,f#5]@2, ~@23 d#4@3 ~@14]/5", // F# G# C#m B5 D#m G# A Esus2 …
  O: "[[g#4,g#5]@4 [g#4,d5,e5]@3 [g#4,c#5,e5]@8 [g#4,d5,e5]@5 g#4@2 g#4 g#4@2 b4@2 f#4@3 g#4@2]/2", // G# E7 C#m E7
  P: "g#4@3 ~ [g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@2", // C#m
  Q: "~ [a#3,c#4,e4] ~@2 [a#3,c#4] [g#3,b3]@2 [g#3,b3,e4] ~ [g#3,b3,e4] ~@2 [g#3,b3,e4]@4, ~@4 e4@3 ~@9", // A#dim A#m G#m E
  R: "[~@3 g#3 e4 d#4 c#4 d#4@2 b3@2 f#3@3 b3@5 g#3 e4 d#4 c#4 d#4@2 b3@3 [f#3,f#4]@7 g#3 e4 d#4 c#4 d#4@2 b3@3 f#3@2 g#3@5 c#4 e4 d#4 c#4 d#4@9]/4", // F#
  S: "[~@3 f#3 c#4 a#3@9 [g#3,d#4]@5 f#3 [b3,c#4] [b3,c#4]@2 [b3,c#4]@2 f#3@3 [b3,c#4]@2 f#3@2, ~@5 b3 ~@26]/2", // G#5 Bsus2
  T: "~@3 [f#3,b3,c#4]@4 [f#3,b3,c#4]@7 [g#3,c#4,d#4,g#4]@2", // F#sus4 G#sus4
  U: "~@3 [f#3,b3,c#4,f#4]@4 [f#3,b3,c#4,f#4]@2 [f#3,b3,c#4,f#4]@7", // F#sus4
  V: "[c#4,d#4,g#4]@7 [b3,c#4,g#4]@2 [c#4,d#4,g#4]@4 [b3,c#4,f#4]@3", // C#sus2 C#7 C#sus2 Bsus2
  W: "[[c#4,d#4,g#4]@4 g#3@4 [c#4,d#4,g#4]@3 [c#4,d#4,g#4]@2 [b3,c#4,f#4]@2 [c#4,d#4,g#4]@10 [c#4,g#4]@2 [c#4,d#4,g#4]@2 [c#4,d#4,g#4]@3, ~@25 d#4 ~@6]/2", // C#sus2 Bsus2 C#sus2 C#5 C#sus2
  X: "[f#3,b3,e4]@2 [g#3,c#4]@7 [c#4,d#4,g#4]@2 [c#4,d#4,g#4]@2 [b3,c#4,f#4]@3", // Esus2 C#5 C#sus2 Bsus2
  Y: "[[g#3,d#4]@9 [c#4,d#4,g#4]@2 [c#4,d#4,g#4]@2 [c#4,d#4,g#4]@2 [b3,c#4,e4]@3 [g#3,d#4]@5 [b3,e4]@2 [g#3,c#4]@2 [f#3,b3]@2 [g#3,c#4]@3]/2", // G#5 C#sus2 C#m7 G#5 E5 C#5 B5 C#5
  Z: "[g#4,c#5,d#5,g#5] ~ [g#4,c#5,d#5,g#5]@5 [g#4,c#5,d#5,g#5]@2 [g#4,c#5,d#5,g#5]@4 [g#4,c#5,d#5,g#5]@3", // G#sus4
  AA: "[g#4,b4,d#5,g#5] ~ [g#4,b4,d#5,g#5]@5 [g#4,b4,d#5,g#5]@4 [g#4,b4,d#5,g#5]@5", // G#m
  AB: "[[g#4,c#5,d#5,g#5] ~ [g#4,c#5,d#5,g#5]@5 [g#4,c#5,d#5,g#5]@2 [g#4,c#5,d#5,g#5]@2 [g#4,b4,d#5,g#5]@2 [g#4,c#5,d#5,g#5]@2 [g#4,c#5,d#5,g#5]@3 [f#4,b4,c#5,f#5]@5 [f#4,b4,c#5,f#5]@2 [f#4,b4,c#5,f#5]@2 [f#4,b4,c#5,f#5]@2 [f#4,b4,c#5,f#5]@3]/2", // G#sus4 G#m G#sus4 F#sus4
  AC: "[g#4,c#5,d#5,g#5] ~ [g#4,c#5,d#5,g#5]@3 [g#4,c#5,d#5,g#5]@2 [g#4,c#5,d#5,g#5]@4 [f#4,b4,c#5,f#5]@5", // G#sus4 F#sus4
  AD: "[[g#4,c#5,d#5,g#5] ~ [g#4,c#5,d#5,g#5]@4 [f#4,b4,c#5,f#5]@3 [f#4,b4,c#5,f#5]@2 [f#4,b4,c#5,f#5]@2 [f#4,b4,c#5,f#5]@2 [f#4,b4,c#5,f#5]@3 [g#4,c#5,d#5,g#5]@5 [b4,d#5,f#5,b5]@2 [b4,d#5,f#5,b5]@2 [g#4,c#5,d#5,g#5]@5]/2", // G#sus4 F#sus4 G#sus4 B G#sus4
  AE: "[g#4,c#5,d#5,g#5]@2 [g#4,c#5,d#5,g#5]@5 [b4,d#5,g#5,b5]@2 [b4,d#5,g#5,b5]@2 [f#4,b4,c#5,f#5]@2 [f#4,b4,c#5,f#5]@3", // G#sus4 G#m F#sus4
  AF: "~@4 [g#4,c#5,e5] d#5 c#5 [f#4,b4,d#5]@2 [f#4,b4,d#5]@3 [f#4,b4,d#5]@2 [f#4,b4,d#5]@2", // C#m B
  AG: "[g#4,c#5,e5]@4 [g#4,c#5,e5] d#5 c#5 [f#4,b4,d#5]@5 [f#4,b4]@2 [f#4,b4]@2", // C#m B B5
  AH: "[~@3 g#3 [c#4,e4] d#4 c#4 d#4@2 b3@3 [f#3,d#4]@2 [g#3,e4]@5 g#3 e4 d#4 c#4 d#4@2 b3@3 f#3@4]/2", // C#m D#m C#m
  AI: "~ [g#3,c#4,e4] ~@14", // C#m
})).s("gm_epiano1").gain(0.24).pan(0.3)

// chords · epiano1 · "Electric Piano Upper" · soft notes
const epiano1_soft = note("<A@2 B ~@107 C D E F G>".pickRestart({
  A: "[~@3 g#3 e4 d#4 c#4 d#4@2 b3@3 f#3@2 g#3@5 g#3 e4 d#4 c#4 d#4@4 f#4@2 b3@3]/2",
  B: "g#3@3 g#3 e4 d#4 c#4 d#4@2 b3@3 ~@4", C: "~@4 [g#3,c#4,e4]@2 ~ [g#3,c#4,e4] ~@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~@3",
  D: "~ [a#3,c#4,e4] ~@2 [a#3,c#4] [g#3,b3]@2 [g#3,b3,e4] ~ [g#3,b3,e4] ~@2 [g#3,b3,e4]@4, ~@4 e4@3 ~@9", // A#dim A#m G#m E
  E: "~ [g#3,c#4,e4]!2 ~ [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4] ~@2 [g#3,c#4,e4]!2 ~ [g#3,c#4,e4]@2", // C#m
  F: "~ [a#3,c#4,e4] ~@2 [a#3,c#4] [g#3,b3]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2, ~@4 e4@3 ~@9", // A#dim A#m G#m E
  G: "~ [g#3,c#4,e4] ~@2 [g#3,c#4,e4]@2 ~ [g#3,c#4,e4] ~@8", // C#m
})).s("gm_epiano1").gain(0.08).pan(0.3)

// bass · epiano1 · "Electric Piano Lower"
const bass = note(`<
  ~@2 A B C D E F C G H@2 I J K L@2 M N O N P N Q R F S T U V W U@2 X Y X@2 Z J AA AB@2 M N O N P N Q AC E AD AE B AF AG
  AE AH AF AG AE AH AF AG AE@2 AI AE@12 X@2 AJ C V W U@2 X Y X@2 Z J AA AB@2 M N O N P N Q AC P N Q AC P N AK ~@4
>`.pickRestart({
  A: "~@11 c#3@4 g#2", B: "c#2@2 c#3@7 c#3@5 c#3@2", C: "c#2@2 c#3@9 c#3@4 c#3", D: "c#2@2 c#3@9 c#3@3 g#2 c#3",
  E: "c#2@2 c#3@13 g#2", F: "c#2@2 c#3@9 c#3@4 g#2", G: "c#2@2 c#3@9 c#3@2 c#3@2 g#2",
  H: "[c#2@2 c#3@9 c#2@7 c#3@13 g#2]/2", I: "c#2 c#3@5 b1@2", J: "a1 a2@2 a2@5", K: "a1 a2@7",
  L: "[d2@2 d3@5 [d3,a3,d4]@2 [d3,b3,e4]@2 [d3,a3,d4]@4 [d3,a3,d4]@17]/2", // D5 E7 D5
  M: "~@2 c#3!2 ~@2 c#3 ~@2 c#3 ~@3 c#3 ~@2, c#2", N: "e2 f#2@2 f#2@2 e2@3 e2@3 e2@5",
  O: "c#2@3 c#2@3 c#2@3 c#2@2 d2 c#2@4", P: "c#2@3 c#2@3 c#2@3 d2 c#2 d2 c#2@4",
  Q: "c#2@3 c#2@3 c#2@3 c#2@2 d2 c#2@3 g2", R: "f#2@3 f#2@2 e2@11", S: "c#2@2 c#3@8 c#3@5 c#3",
  T: "c#2@2 c#3@5 c#3@8 g#2", U: "c#2@2 c#3@13 c#3", V: "c#2@2 c#3@7 c#3@6 g#2", W: "c#2@2 c#3@9 c#3@3 c#3 g#2",
  X: "c#2 c#3@7", Y: "c#2@2 c#3@7 c#3@7", Z: "c#2 c#3@4 [b1,b2]@3", AA: "a1@3 a2@3 a2@7 a2@3",
  AB: "[d2@2 d3@5 [d3,a3,d4]@5 [d3,a3,d4] [b3,e4]@2 [d3,a3,d4]@17]/2", AC: "f#2@3 f#2@2 e2@3 e2@3 e2@5",
  AD: "c#2@2 c#3@9 c#3@3 c#3@2", AE: "c#2 c#3@6 c#3", AF: "c#2 c#3 c#2 c#3@4 c#3", AG: "c#2 c#3@4 c#3@3",
  AH: "c#2 c#3@2 c#3@2 c#3@2 c#3", AI: "c#3 c#3@6 c#3", AJ: "c#2@2 c#3@9 c#3@5", AK: "c#2@3 c#2@3 ~@10",
})).s("gm_epiano1").gain(0.24).pan(0.7)

// bass · epiano1 · "Electric Piano Lower" · soft notes
const bass_soft = note("<A B C ~@107 D E F G H>".pickRestart({
  A: "c#2@2 c#3@9 c#3@4 g#2", B: "c#2@2 c#3@7 c#3@4 c#3@2 g#2", C: "c#2@2 c#3@9 ~@5", D: "~@6 c#2@3 c#2@2 d2 c#2@3 g2",
  E: "f#2@3 f#2@2 e2@3 e2@3 e2@5", F: "c#2@3 c#2@3 c#2@3 d2 c#2 d2 c#2@4", G: "e2 f#2@2 f#2@2 e2@3 e2@3 e2@5",
  H: "c#2@3 c#2@3 c#2@3 c#2@2 ~@5",
})).s("gm_epiano1").gain(0.08).pan(0.7)

// chords · piano · "Accoustic Piano"
const piano = note("<~@52 A@2 ~@3 B C@7 D@2 E ~@47>".pickRestart({
  A: "[~ c#6@25 ~@6, [d#5,g#5]@25 ~@7]/2", B: "~@9 g#4@2 b4 b4@2 b4!2",
  C: "[b4 a#4 ~ b4 a#4 g#4!2 g#4@6 ~@2 [d#3,g#3,c#4]@8 ~@4 f#4@2 b4 d#5@9 c#5@4 ~@4 [c#3,f#3,b3]@2 f#4 g#4 b4 ~@3 [c#3,f#3,b3]@2 [c#3,f#3,b3]@2 ~ f#5 [d#5,f#5] d#5 [b4,d#5] c#5 c#5@5 b4 ~@4 [c#3,f#3,b3]@2 [d#3,g#3,c#4,c#5,c#6]@2 [c#3,f#3,b3,b4,b5]@8 [c#3,f#3,b3,f#4,f#5]@2 [c#3,f#3,b3,g#4,g#5]@2 [c#3,f#3,b3,a#4,a#5] [c#3,f#3,b3,b4,b5]@3 [d#3,g#3,c#4,d#5,d#6]@2 [c#3,f#3,b3,f#5,f#6]@2 [c#3,f#3,b3,a#5,a#6]@2 [c#3,f#3,b3,g#5,g#6]@9 [d#3,g#3,c#4,f#5,f#6]@2, ~@13 b4@14 ~@16 b4@6 ~@3 b4@8 ~@11 b4@6 ~@35, ~@23 [c#3,f#3,b3]@7 [c#3,f#3,b3]@17 ~@2 [c#3,f#3,b3]@6 ~@4 [c#3,f#3,b3]@16 ~@37]/7", // C#sus2 F#sus4 D#m B F#sus4 C#sus2 F#sus4 C#sus4 …
  D: "[[c#3,f#3,b3]@7 ~@4 [g#5,c#6]!5 ~@4 g#4@2 b4@3 c#5@3 b4 g#4 ~ c#4, [g#5,g#6]@11 ~@5 [g#5,c#6]@16, ~@7 [c#3,f#3,b3]@25, ~@15 f#4]/2", // F#sus4 C#5 G# C#5 F#sus4
  E: "c#4 ~@15",
})).s("gm_piano").gain(0.32).pan(0.4)

// chords · piano · "Accoustic Piano" · soft notes
const piano_soft = note("<~@53 A B@4 ~@57>".pickRestart({
  A: "~@9 [a#3,c#4,e4,f#4] ~ [b3,d#4,f#4] [c#4,e4,g#4] [d#4,f#4,a#4] ~ [c#4,e4,g#4]", // F#7 B C#m D#m C#m
  B: "[[d#4,f#4,a#4] [b3,d#4,f#4] ~ [c#4,e4,g#4]@2 [a#3,c#4,e4]@16 [b3,d#4,f#4] [c#4,e4,g#4]@3 [d#4,f#4,a#4] [e4,g#4,b4]@2 [f#4,a#4,c#5] [g#4,b4,d#5]@2 [a#4,c#5,e5]@2 [f#4,a#4,c#5]@2 [g#4,b4,d#5]@2 [e4,g#4,b4]@20 ~@7]/4", // D#m B C#m A#dim B C#m D#m E …
})).s("gm_piano").gain(0.16).pan(0.4)

// other · overdriven guitar · "Guitar 1"
const overdriven_guitar = note("<~@67 A B C D E F G H@2 I ~@38>".pickRestart({
  A: "~ b3 g#3 [f#3,b3] g#3 [e3,g#3] f#3 g#3@2 c#3 e3!2 d#4 c#4@2 b3", B: "d#4 c#4 c#4@14, ~@2 b3 ~@13",
  C: "~ b3 a#3 [g#3,b3] d#4 [d#4,f#4] f#4 [b3,d#4] d#4 [d#4,f#4] f#4 [b3,d#4] d#4 [a#3,b3] g#3 [a#3,b3]", // G#m D#m B D#m B Bmaj7
  D: "a#3 g#3 g#3@14", E: "~ g#3 a#3 [b3,c#4] e4 c#4 [b3,c#4] e4 f#4 f#4@2 f#4 [g#4,a#4] b4 f#5 [b4,d#5]",
  F: "f#5 [b4,d#5] d#5 [a#4,b4] b4 [g#4,a#4] a#4 [f#4,g#4] e4 [c#4,e4] f#4 [g4,g#4] ~ g4 f#4 [d#4,e4]", // B Bmaj7 G#sus2 F#sus2 C#m G#maj7 Emaj7
  G: "e4 [c#4,d#4] d#4 [d#4,e4] c#4 [c#4,e4] b3 [g#3,b3] c#4@3 ~ b3@2 e3 d#3", // C#sus2 Emaj7 C#m G#m
  H: "[c#3 d#3 e3 d#3 c#3@6 [b2,b3] ~ [c#3,c#4] [d#3,d#4]@2 [d#3,d#4]@2 [f#3,f#4] [g#3,g#4]@7 [g#3,g#4] ~ [g#3,g#4] ~ [g#3,g#4] [g3,g4]!2, ~@13 [g3,g4]!2 ~]/2", // B C# D# F# G# G
  I: "[g#3,g#4] b3@15", // G#
})).s("gm_overdriven_guitar").gain(0.56).pan(0.4)

// chords · distortion guitar · "Guitar 2"
const distortion_guitar = note(`<
  ~@13 A@2 B@2 C D C D C D C D E ~@12 A@2 B@2 C D C D C D C D E ~@41 A@2 B@2 C D C D C D C D C D C D C D F ~@4
>`.pickRestart({
  A: "[~ d#4@28 ~@3, [e3,a3,c#4]@7 ~]/2", B: "[~ g#4@28 ~@3, [a3,d4,f#4]@7 ~]/2",
  C: "b2 c#3 [c#3,g#3]!2 [c#3,g#3]@2 b2 c#3 [c#3,g#3]!2 [c#3,g#3]@2 b2 c#3 [c#3,g#3] c#3", // C#5
  D: "e2 f#2 [f#2,c#3]!3 [e2,b2]@3 e2 g#2 b2 g#2 e3 c#3@3", E: "b2 c#3@15", F: "b2 c#3 [c#3,g#3]!2 ~@12",
})).s("gm_distortion_guitar").gain(0.39).pan(0.6)

// chords · distortion guitar · "Guitar 2" · soft notes · C#5 F#5 E5 C#5 F#5 E5 C#5
const distortion_guitar_soft = note(`<
  ~@110
  [~@4 [c#3,g#3]@2 b2 c#3 [c#3,g#3]!2 [c#3,g#3]@2 b2 c#3 [c#3,g#3] c#3]
  [e2 f#2 [f#2,c#3]!3 [e2,b2]@3 e2 g#2 b2 g#2 e3 c#3@3]
  [b2 c#3 [c#3,g#3]!2 [c#3,g#3]@2 b2 c#3 [c#3,g#3]!2 [c#3,g#3]@2 b2 c#3 [c#3,g#3] c#3]
  [e2 f#2 [f#2,c#3]!3 [e2,b2]@3 e2 g#2 b2 g#2 e3 c#3@3]
  [b2 c#3 [c#3,g#3]!2 [c#3,g#3]@2 b2 c#3 [c#3,g#3]!2 [c#3,g#3]@2 ~@4]
>`).s("gm_distortion_guitar").gain(0.1).pan(0.6)

// bass · acoustic bass · "Pedal Bass"
const bass_2 = note(`<
  ~@12 A B C D@2 E F E F G F E F H@2 ~@10 I J@2 K@2 E F E F E F E F H@2 ~@13 L M N O P@2 Q R S T U@3 V ~@12 I J@2 K@2 E
  F E F E F E F E F E F E F W ~@4
>`.pickRestart({
  A: "~@3 b1", B: "a1@13 d#2 e2@2", C: "a1@9 a2@4 f#2@3", D: "[d2@11 g#2 a2 c#2 d#2@11 a2@2 d2@5]/2",
  E: "b1 c#2@5 b1 c#2@4 d2 c#2@3 g1", F: "e1 f#1@3 f#1 e1@3 e1 g#1 b1 g#1 e2 c#2@3",
  G: "b1 c#2@5 b1 c#2@2 d2 c#2 d2 c#2@3 g1", H: "c#1/2", I: "~@5 b1@3",
  J: "[a1@12 d#2 e2 g#1 a1@6 e2 a1@3 a2@2 g#2@2 f#2@2 e2]/2",
  K: "[d2@9 g#2 a2 c3 c#2@2 d2@6 g#2 a2 d2 d2@2 d2@2 a2@2 d#2 c#2@2]/2", L: "~@6 f#1 g#1", M: "c#2@15 g#1",
  N: "c#2@6 f#1 g#1", O: "c#2@13 g#1 b1 g#1", P: "[c#2@7 g#2@5 f#2@2 g#2 c#2@8 c#2@2 c#2@6 g#2]/2",
  Q: "c#2@7 f#2 g#2 c#3 f#2 g#2 c#3 c#2@2 c#3", R: "c#2@6 f#2 g#2 c#3@2 c#3@2 c#3@2 g#2@2",
  S: "c#2@2 c#2@9 g#2 c#3 c#2 g#2 c#3", T: "f#2 g#2 c#2@2 f#2 g#2 c#3@3 f#2 g#2 c#3 c#2@3 g#2",
  U: "[c#2@2 c#2@5 g#1@2 g#2@2 c#2@2 f#2 g#2 c#3@2 g#2 c#3@7 g#3@2 g#2@2 c#3@2 g#2@2 f#2 c#2@5 f#2 g#2 c#3@2 g#2@2 c#3 f#2@2, ~@25 f#3 ~@22]/3",
  V: "g#2 c#2@8 c#3 b2 c#3 f#2 g#2 d#2 f#2", W: "b1 c#2@5 ~@10",
})).s("gm_acoustic_bass").gain(0.4).pan(0.4)

// bass · acoustic bass · "Pedal Bass" · soft notes
const bass_soft_2 = note(`<
  ~@110
  [~@6 b1 c#2@4 d2 c#2@3 g1]
  [e1 f#1@3 f#1 e1@3 e1 g#1 b1 g#1 e2 c#2@3]
  [b1 c#2@5 b1 c#2@4 d2 c#2@3 g1]
  [e1 f#1@3 f#1 e1@3 e1 g#1 b1 g#1 e2 c#2@3]
  [b1 c#2@5 b1 c#2@4 d2 ~@4]
>`).s("gm_acoustic_bass").gain(0.1).pan(0.4)

// bass · fretless bass · "Bass"
const bass_3 = note("<~@4 A@8 ~@17 B@2 A@6 C ~@16 A@2 D@2 A@2 D@2 A@2 E@2 ~@13 A@4 B@2 A@6 C ~@23>".pickRestart({
  A: "c#1/2", B: "[~ c#1@31]/2", C: "c#1@3 ~", D: "[c#1@15 g#0]/2", E: "[c#1@3 ~]/2",
})).s("gm_fretless_bass").gain(0.48).pan(0.6)

// chords · distortion guitar · "Echo Fuzz Guitar"
const distortion_guitar_2 = note("<~@68 A@2 B ~@3 C D E F G@2 H I@2 ~@32>".pickRestart({
  A: "[~@5 d#3 e3 g#3 d#4 [b3,c#4] c#4@22, ~@10 b3 ~@21]/2", // Bsus2
  B: "~@3 b3 [g#3,a#3,b3] g#3!2 [e4,f#4] [d#4,e4,f#4] c#4@7, ~@9 d#4 ~@6", C: "~@12 g#4 a#4@2 a#4",
  D: "b4@9 [a#4,b4] a#4 [a#4,b4] a#4 [a#4,b4] a#4@2", E: "b4 c#5 d#5@9 d#5 [d#5,e5]!2 ~ d#5",
  F: "e5 [d#5,e5] [c#5,d#5,e5] c#5@2 b4@5 [a#4,b4]!2 g#4 a#4 b4 c#5", // Emaj7 C#m Bmaj7
  G: "[[d#5,e5] [c#5,d#5,e5] [c#5,d#5] c#5 e5 g#5 ~@3 e5 [d#5,e5] d#5 c#5 d#5 [c#5,d#5] c#5@4 [b4,c#5] b4@4 [a#4,b4]!2 g#4 a#4 b4 a#4 [g#4,b4] [f#4,g#4], ~@20 c#5 ~@11]/2", // Emaj7 C#m C#sus2 Emaj7 C#sus2 Bsus2 Bmaj7 G#m …
  H: "f#4 g#4@2 a#4@7 f#4 e4 c#4 e4 d#4 b3", I: "[[d#4,e4]!2 c#4@30, ~@2 d#4 ~@29]/2",
})).s("gm_distortion_guitar").gain(0.14).pan(0.8)

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

More by Led Zeppelin