Strudelify

Darlene

Led Zeppelin

KeyC majorTempo234 bpm
0:00/0:00
// Darlene — Led Zeppelin
// 234 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, 12/8 at bar 103) are rendered on a constant 12/8 grid of one bar per cycle
// note: Full arrangement: all 206 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(234/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 · distortion guitar · "Electric Guitar I"
const distortion_guitar = note(`<
  ~@27 A B@2 ~@5 C@2 ~@6 D@2 E@2 ~@12 F@2 G H I@3 J K@2 L M N@2 O@2 P Q ~@39 R ~@23 S ~@16 T U V W X Y Z AA AB AC@2 AD
  AE AF AG ~ AH AI AJ AK AL@3 AM AN AO@3 AP AQ AR AS AT AU AV@2 AW AX AY AZ ~@9
>`.pickRestart({
  A: "~@16 c5@3 d5@3 f5@2", B: "[~ d5 c5 ~ a#4@3 a#4@3 g4@26 ~@12]/2",
  C: "[~@11 c5@3 ~@9 f5@3 d5@4 ~ g4@7 ~@10, ~@7 d5@3 d5@3 ~@11, ~@17 f5@6 ~@25]/2",
  D: "[~@18 c5@3 ~@3 f5@7 d5@2 c5@4 a#4@2 g4@9, ~@21 d5@10 ~@17]/2", E: "[a4@3 g4@16 ~@5]/2",
  F: "[~@15 c5@3 ~@3 g5@3 f5 g5 ~ f5 g5 ~ f5@3 d5@3 c5@3 a#4@3 a#4 g4 ~ f4@3, ~@6 d5@5 ~@5]/2",
  G: "g4 f4 g4 f4 ~ e5@2 d5, ~@3 g4@5", H: "~@3 g5@3 f5@5 ~ g5@3 f5@3 b4@3 a5@3, a4@11 a4@4 ~@3 a4 ~@5",
  I: "[g5@3 b4@3 a5@3 g5@3 b4@3 g5@3 ~@6 g5@3 ~@3 a4@3 [b4,g5]@3 a5@3 a5@3 g5@9 d5 ~ f5 ~ g5@3 f5@3 ~@3 c5@3 d5@3 g5@2, ~@7 a4@3 ~@14, ~@9 f5@2 ~@13]/3", // Em
  J: "~@5 d5@2 c5@4 a#4@2 g4 a#4 ~ g4 f4 ~ g4@3 f4 d4",
  K: "[~ a#4@2 g4@2 f4@2 ~@9 f4@3 d#5@3 d5@3 ~@6 g5@3 f5@6 ~@6 c#6@2, ~@7 [g4,c5]@6 [g4,c5]@6 g4@9 ~@20, ~@5 f4@3 ~@16]/2", // C5
  L: "~@4 g6@3 ~@3 d6@3 c6@4 a#5@2 g5 ~ a#5 g5 ~, ~ d6@9 ~@14, ~@7 f6@5 ~@12",
  M: "f5 g5@3 f5 ~ g5 ~@3 c6@3 d6 ~ d6 g6@3 d6@3 d6@2",
  N: "[~ g6@3 d6@3 d6@3 g6@3 f6@3 g6@3 ~ a#6@3 f6@3 g6@3 a#6@3 g6@3 a#6!2 ~@4 a#6@3 c7@4]/2",
  O: "[~@2 a#6@3 g6@3 f6@3 d6@3 c#6@3 c6@3 a#5@3 c6@3 a#5 c6 a#5 g5@3 [a#5,d6]@3 g5@3 [a#5,d6]@3 ~@4 d5@2 f5, ~@45 f5 ~@2]/2", // A#
  P: "~ f5 [d5,g5]@2 f5 [c5,g5]@2 c5 ~@5 g5 g5@2 g5 f5@3 a#4 ~ a4 g4, ~@7 f5@5 ~@12, ~@8 d5@11 ~@5", // G5 C5
  Q: "~ f4 g4@3 f4@3 g4 ~@15", R: "~@4 [c5,d#5]@7 ~ [a#4,d#5]@5 ~ [g4,d#5]@3 ~@3",
  S: "~@4 g4@7 ~ c4@2 a#3@2 g3@2 g3@2 f3@2 d3@2, ~@2 f4 ~@9", T: "~@4 f3@2 a3@2 c4@2 d4@2 f4@3 ~ f4@2 d4@3 ~ f4@2",
  U: "a4@3 ~ g4@2 g4@3 ~ f4@5 ~ f4@2 ~@4 f4@2",
  V: "g#4@3 ~ f4@2 g#4@3 ~ f4@2 g4 ~ g4 ~ [g4,g#4]@2 [g4,g#4]@2 [g4,g#4]@2 [g4,g#4]@2", // G#maj7
  W: "g#4@2 g4@2 g4 f4 g4@3 ~ f4@5 ~ f4@2 g4@3 ~ f4@2", X: "~@4 c5@2 a4@3 ~ g4@2 a4@3 ~ g4@2 f4@3 ~ d#4@2",
  Y: "e4@3 ~ c5@2 ~@16 c4@2", Z: "e4@2 a4@2 a4@2 c5@3 ~ d4@2 e4@2 g4@2 e4@2 ~@4 c5@2",
  AA: "a4 g4 f4 g4 e4 d4 e4 d4 c4 d4 c4 a3", AB: "c4@5 ~ a3@3 ~ c4@2 a3@3 ~ c4@5 ~ d#4@2",
  AC: "[f4@3 ~ f4@2 f#4@3 ~ g4@2 d4@3 ~ c4@2 a3@3 ~ c4@5 ~ c4@2 a3@3 ~ c4@2 a3@3 ~ g3@2 a3@3 ~ c4@2]/2",
  AD: "a3@3 ~ f3@2 a3@3 ~ a3@5 ~@9", AE: "~@6 a3@3 ~ f#3@2 ~@4 a3@2 ~@4 d3@2",
  AF: "a3 ~@3 a3@2 d3 ~@3 a3@2 d3@5 ~ [a2,d3,a3]@3 ~ a3@2", AG: "g2 ~@11",
  AH: "f4@2 d4@2 f4@2 a4@3 a4 ~ d5 c5 ~ a4 ~@3 c5@2 a4@2 g4@2",
  AI: "a4 ~ g4 f4 ~ d3 g4@2 f4@2 d4@2 f4@3 ~ d4@2 f4@2 ~@4", AJ: "~@3 a4@3 ~@2 c5@3 d5 e5@3 f5@3 ~@2 f#5 g5@2 g5",
  AK: "a5@3 a5@3 ~@4 a5@5 ~ g5@2 c5@3 ~ a4@2",
  AL: "[c5@3 ~ c5@2 a4@3 ~ c5@2 d5@5 ~ c5@9 ~ a4@2 d5@3 ~ c5@5 ~ g5@2 a5@3 ~ g5@5 ~ c5@2 d5@5 ~ c5@5 ~ a4@3 ~ c5@2]/3",
  AM: "e5@3 ~ f5@2 g5@3 g5@3 e5@3 ~ d5@2 c5@3 ~ a4@2", AN: "d5@5 ~ c5@5 ~@7 [a4,c5]@5 ~",
  AO: "[d5@3 ~ c5@2 a4@3 ~@7 d5@4 ~@2 a4@2 g4@3 ~ f4@2 g4@3 ~ f4@2 g4@3 ~ [a4,d5]@4 c5@2 a4@2 a4@2 g4@2 f4@2 g4@3 ~ f4@2 g4@3 ~@9, ~@6 c5@9 ~@5 c5@19 ~@7 c5@7 ~@19, ~@5 g4@6 ~@25]/3", // D5
  AP: "b4@3 ~ c5@2 c#5@3 ~ d5@2 b4@3 ~ a4@2 g4@3 ~ f4@2", AQ: "~@4 b4@2 c5@3 ~ d5@2 b4@3 ~ a4@2 g4@2 ~@4",
  AR: "~@22 g4 ~", AS: "a4 ~ a4 a4@3 ~@4 [g4,a4]@2 [g4,a4]@2 [g4,a4]@2 [g4,a4]@2 [g4,a4]@2 a4@2 g4@2", AT: "f4@5 ~@19",
  AU: "~@2 a4@2 a4@2 ~@3 g4 ~ g4 f4@5 ~ d4@3 ~ f4@2",
  AV: "[d#4 ~@3 c4@2 a#3@3 ~ a3@2 f4@3 ~ f4@10 ~@14 a4@2 ~@2 b4@2 c5@2]/2",
  AW: "c5@2 ~@8 c3@2 e3@2 g3@2 a3@2 c4@3 ~ c4@2", AX: "d4 ~ f4 a4 ~ c5 c5@3 ~ c3@2 d#3@2 g3@2 a3@2 c4@3 ~ d4@2",
  AY: "e4@3 ~ e4@2 ~@4 a4@2 g4@3 ~ e4@4 e4 ~@3", AZ: "d4 ~@3 c4@2 ~@2 g3@3 ~ c4@3 ~ a3@4 c4@3 ~",
})).s("gm_distortion_guitar").gain(0.53).pan(0.6)

// other · distortion guitar · "Electric Guitar I" · soft notes
const distortion_guitar_soft = note("<~@197 A B C@2 D E F G ~>".pickRestart({
  A: "a3@3 ~ f3@11 ~ a3@2 ~@6", B: "~@10 e3@2 f3@3 ~ a3@2 c4 ~@3 c4@2",
  C: "[~@4 [c4,e4]@2 ~@10 c4@2 d4@3 ~ c4@11 ~ c5@2 ~@12]/2", D: "d3@3 ~ d3@2 f#3@3 ~ g3 a3 c4 ~@3 c4@5 ~ d3@2",
  E: "f#3@2 b3@3 ~ d4@3 ~ d4@5 ~ d4@2 d4@3 ~@3", F: "~@4 a4@7 ~ g4@5 ~@5 a4@2",
  G: "a#4@3 ~ b4@2 c5@3 ~ b4@2 ~@4 a4@2 g4@3 ~ e4@2",
})).s("gm_distortion_guitar").gain(0.12).pan(0.6)

// other · distortion guitar · "Electric Guitar II"
const distortion_guitar_2 = note(`<
  A B C@3 D E F G F H ~ I J@2 K@2 L@2 ~ M N O N O N P ~ Q R S R T@3 ~ U@4 V W X ~ Y Z AA AB AA AB AC ~ AD@7 ~ AE AF AG
  AF AG AH AI ~ AJ AK AL AM@2 AN@2 ~ AO AP@3 AQ@2 AR ~ AS@2 AT@4 AU ~ AV@5 AW@4 AX@2 AY@4 AZ ~ AX@2 AY@4 AZ ~ AX@2 AY@4
  AZ ~ AX@2 BA@2 BB@4 AX@2 BC@2 BD BE BF ~ BG@2 BH@2 BI@4 AX@2 BC@2 BJ@2 BK ~ BL BM BN BO BP BQ BR BS BT BU@2 BV BW BX
  BY ~ BZ CA CB CC CD@3 CE CF CG@3 CH CI CJ CK CL CM CN@2 CO CP CQ CR CS CT CU@2 CV CW CX CY ~
>`.pickRestart({
  A: "~@6 [a#3,f4]@8 ~ [a3,f4]@3 [a#3,f4]@3 ~ a#3@2, ~@21 a3@2 ~", B: "a3@3 g3@3 c4@8 ~ b3@3 c4@3 b3 c4 ~",
  C: "[b3 a3 ~ g3 f3 ~ [d4,a4,d5]@50 ~ g4@3 ~@6 f4@3 ~@3]/3", D: "~ e4@3 d4 e4 f4 g4",
  E: "f4@3 e4 f4 e4 d4@3 g4@3 ~@7 f4@3 ~@2", F: "~@4 e4@9 d4@3 e4@3 f4@3 g4@2",
  G: "~ f4@3 e4 f4 e4 d4@3 g4@3 ~@6 f4@3 ~@2", H: "~ f4@3 e4 f4 e4 d4@3 g4 ~@13", I: "~@10 g4@3 ~@6 f4@3 ~@2",
  J: "[~@4 e4@9 ~ d4@3 e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@6 f4@3 ~]/2",
  K: "[~@5 e4@9 d4@3 e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@6 f4@3 ~]/2",
  L: "[~@5 e4@9 d4@3 e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4 ~@12]/2", M: "~@4 g4 ~@2 f4", N: "~@2 e4@3 d4 e4 f4",
  O: "g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@6 f4@3", P: "g4@3 f4@3 ~ e4 f4 e4 d4@3 g4 ~@10",
  Q: "~@4 [a#3,f4,a#4]@3 [b3,f#4,b4]@3 [c4,g4,c5]@8 ~ [a#3,f4]@3 [b3,f#4]@2", // A#5 B5 C5 A#5 B5
  R: "~ [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@2", // C5 A#5 B5 C5
  S: "~@4 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@2", // A#5 B5 C5 A#5 B5
  T: "[~@4 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~@2 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [c4,g4]@3 [c#4,g#4]@3 [d4,a4,d5,f#5]@3 ~@10]/3", // A#5 B5 C5 A#5 B5 C5 A#5 B5 …
  U: "[~@11 f4@3 g4@3 ~@6 f4@3 ~@6 e4@9 d4@3 e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@6 f4@3 ~@7 e4@9 d4@3 e4@3]/4",
  V: "f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@6", W: "f4 ~@2 e4@3 d4 e4", X: "f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4 ~@8",
  Y: "~@5 g4 ~@2", Z: "f4@3 ~@6 e4@9 ~ d4@3 e4@2", AA: "~ f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@5",
  AB: "~ f4@3 ~@6 e4@9 d4@3 e4@2", AC: "~ f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4 ~@7",
  AD: "[~@8 [a#3,f4,a#4]@3 [b3,f#4,b4]@3 [c4,g4,c5]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [c4,g4]@3 [c#4,g#4]@3 [d4,a4,d5,f#5]@3 ~@7]/7", // A#5 B5 C5 A#5 B5 C5 A#5 B5 …
  AE: "~@6 g4 ~", AF: "~ f4 ~@2 e4@3 d4", AG: "e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@3",
  AH: "~@3 f4@3 ~@7 e4@9 d4@2", AI: "~ e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4 ~@4", AJ: "~@19 g4@3 ~@2",
  AK: "~@4 f4@3 ~@6 e4@9 d4@2", AL: "~ e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@2",
  AM: "[~@4 f4@3 ~@6 e4@9 ~ d4@3 e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~]/2",
  AN: "[~@5 f4@3 ~@6 e4@9 d4@3 e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4 ~@3]/2",
  AO: "~@11 [a#3,f4,a#4]@3 [b3,f#4,b4]@3 [c4,g4,c5]@7", // A#5 B5 C5
  AP: "[~@2 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@4 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12]/3", // A#5 B5 C5 A#5 B5 C5 A#5 B5 …
  AQ: "[[a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12]/2", // A#5 B5 C5 A#5 B5 C5 A#5 B5 …
  AR: "[a#3,f4] [b3,f#4] [c4,g4] ~ [c4,g4] [c#4,g#4] [d4,a4,d5,f#5] ~", // A#5 B5 C5 C#5 D
  AS: "[~@12 [a#3,f4,a#4]@3 [b3,f#4,b4]@3 ~ [c4,g4,c5]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@11]/2", // A#5 B5 C5 A#5 B5 C5
  AT: "[~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@11]/2", // A#5 B5 C5 A#5 B5 C5 A#5 B5 …
  AU: "~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [c4,g4]@3 [c#4,g#4]@3 [d4,a4,d5,f#5]@3 ~@2", // A#5 B5 C5 C#5 D
  AV: "[~@20 [a#3,f4]@8 ~ [a3,f4]@3 [a#3,f4]@3 a3 a#3 ~ a3@3 g3@3 c4@8 ~ b3@3 c4@3 b3 ~ c4 b3 ~ a3 g3 ~ f3 [d4,a4]@48 f4@4]/5", // A#5 Dm A#5 D5
  AW: "[~@5 [a3,f4]@3 f4@3 a3 ~@2 a3@3 g3@3 ~ c4@8 ~ b3@3 c4@3 b3 c4 ~ b3 a3 ~ g3 f3 ~ [d4,a4]@50 ~]/4", // Dm D5
  AX: "[[c4,g4]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 [d4,a#4]@3 ~ [d#4,b4]@2]/2", // C5 Em F Gm G#m
  AY: "[[e4,c5]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 [d4,a#4]@3 ~ [d#4,b4]@2]/2", // C Em F Gm G#m
  AZ: "[e4,c5] ~@7", BA: "[[e4,c5]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 d4@3 ~ d4@2]/2",
  BB: "[[c4,g4]@3 ~@7 [e4,g4,c5]@2 ~@6 [c4,g4]@11 ~ a#4@3 ~ c5@2 a#4@2 c5@2 a#4@2 d4@3 ~@3]/2", // C5 C C5
  BC: "[[e4,c5]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 d4@3 ~ g4@2]/2", // C Em F
  BD: "d4@5 ~ [d4,a4]@5 ~ [d4,a4]@5 ~ [d4,b4]@5 ~", BE: "[d4,c5]@3 ~ c5@2 [d4,b4]@5 ~ f#4@2 g4@2 a4@2 d4@3 ~ d4@2",
  BF: "g4 ~@11", BG: "[[f3,c4,f4,a4]@3 ~@7 [f4,c5]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 d4@3 ~ d4@2]/2",
  BH: "[[f3,c4]@3 ~@7 [f4,c5]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 d4@3 ~ d4@2]/2", // F5 F
  BI: "[[c4,g4]@3 ~@7 [e4,g4,c5]@2 ~@6 [c4,g4]@11 ~ a#4@3 ~ c5@2 a#4 ~@2 a#4 ~ g4 d4@3 ~@3, ~@19 c5 ~@4]/2", // C5 C C5
  BJ: "[d4@5 ~ d4@3 ~ d4@2 c5@3 ~ a4@2 b4@3 ~ c5@5 ~ b4@2 c5@2 b4@2 a4@2 c5@2 b4@2 a4@2 c5@2 b4@2 a4@2]/2",
  BK: "g3 ~@11", BL: "~@4 f3@2 a3@2 c4@2 d4@2 f4@3 ~ f4@2 d4@3 ~ f4@2", BM: "a4@3 ~ g4@2 g4@3 ~ f4@5 ~ f4@2 ~@4 f4@2",
  BN: "g#4@3 ~ f4@2 g#4@3 ~ f4@2 g4 ~ g4 ~ [g4,g#4]@2 [g4,g#4]@2 [g4,g#4]@2 [g4,g#4]@2", // G#maj7
  BO: "g#4@2 g4@2 g4 f4 g4@3 ~ f4@5 ~ f4@2 g4@3 ~ f4@2", BP: "~@4 c5@2 a4@3 ~ g4@2 a4@3 ~ g4@2 f4@3 ~ d#4@2",
  BQ: "e4@3 ~ c5@2 ~@16 c4@2", BR: "e4@2 a4@2 a4@2 c5@3 ~ d4@2 e4@2 g4@2 e4@2 ~@4 c5@2",
  BS: "a4 g4 f4 g4 e4 d4 e4 d4 c4 d4 c4 a3", BT: "c4@5 ~ a3@3 ~ c4@2 a3@3 ~ c4@5 ~ d#4@2",
  BU: "[f4@3 ~ f4@2 f#4@3 ~ g4@2 d4@3 ~ c4@2 a3@3 ~ c4@5 ~ c4@2 a3@3 ~ c4@2 a3@3 ~ g3@2 a3@3 ~ c4@2]/2",
  BV: "a3@3 ~ f3@2 a3@3 ~ a3@5 ~@9", BW: "~@6 a3@3 ~ f#3@2 ~@4 a3@2 ~@4 d3@2",
  BX: "a3 ~@3 a3@2 d3 ~@3 a3@2 d3@5 ~ [a2,d3,a3]@3 ~ a3@2", BY: "g2 ~@11",
  BZ: "f4@2 d4@2 f4@2 a4@3 a4 ~ d5 c5 ~ a4 ~@3 c5@2 a4@2 g4@2",
  CA: "a4 ~ g4 f4 ~ d3 g4@2 f4@2 d4@2 f4@3 ~ d4@2 f4@2 ~@4", CB: "~@3 a4@3 ~@2 c5@3 d5 e5@3 f5@3 ~@2 f#5 g5@2 g5",
  CC: "a5@3 a5@3 ~@4 a5@5 ~ g5@2 c5@3 ~ a4@2",
  CD: "[c5@3 ~ c5@2 a4@3 ~ c5@2 d5@5 ~ c5@9 ~ a4@2 d5@3 ~ c5@5 ~ g5@2 a5@3 ~ g5@5 ~ c5@2 d5@5 ~ c5@5 ~ a4@3 ~ c5@2]/3",
  CE: "e5@3 ~ f5@2 g5@3 g5@3 e5@3 ~ d5@2 c5@3 ~ a4@2", CF: "d5@5 ~ c5@5 ~@7 [a4,c5]@5 ~",
  CG: "[d5@3 ~ c5@2 a4@3 ~@7 d5@4 ~@2 a4@2 g4@3 ~ f4@2 g4@3 ~ f4@2 g4@3 ~ [a4,d5]@4 c5@2 a4@2 a4@2 g4@2 f4@2 g4@3 ~ f4@2 g4@3 ~@9, ~@6 c5@9 ~@5 c5@19 ~@7 c5@7 ~@19, ~@5 g4@6 ~@25]/3", // D5
  CH: "b4@3 ~ c5@2 c#5@3 ~ d5@2 b4@3 ~ a4@2 g4@3 ~ f4@2", CI: "~@4 b4@2 c5@3 ~ d5@2 b4@3 ~ a4@2 g4@2 ~@4",
  CJ: "~@22 g4 ~", CK: "a4!2 ~ a4@3 ~@4 [g4,a4]@2 [g4,a4]@2 [g4,a4]@2 [g4,a4]@2 [g4,a4]@2 a4@2 g4@2", CL: "f4@5 ~@19",
  CM: "~@2 a4@2 a4@2 ~@3 g4!2 ~ f4@5 ~ d4@3 ~ f4@2",
  CN: "[d#4 ~@3 c4@2 a#3@3 ~ a3@2 f4@3 ~ f4@10 ~@14 a4@2 ~@2 b4@2 c5@2]/2",
  CO: "c5@2 ~@8 c3@2 e3@2 g3@2 a3@2 c4@3 ~ c4@2", CP: "d4 f4 ~ a4 c5 ~ c5@3 ~ c3@2 d#3@2 g3@2 a3@2 c4@3 ~ d4@2",
  CQ: "e4@3 ~ e4@2 ~@4 a4@2 g4@3 ~ e4@4 e4 ~@3", CR: "d4 ~@3 c4@2 ~@2 g3@3 ~ c4@3 ~ a3@4 c4@3 ~",
  CS: "a3@3 ~ f3@11 ~ a3@2 ~@6", CT: "~@10 e3@2 f3@3 ~ a3@2 c4 ~@3 c4@2",
  CU: "[~@4 [c4,e4]@2 ~@10 c4@2 d4@3 ~ c4@11 ~ c5@2 ~@12]/2", CV: "d3@3 ~ d3@2 f#3@3 ~ g3 a3 c4 ~@3 c4@5 ~ d3@2",
  CW: "f#3@2 b3@3 ~ d4@3 ~ d4@5 ~ d4@2 d4@3 ~@3", CX: "~@4 a4@7 ~ g4@5 ~@5 a4@2",
  CY: "a#4@3 ~ b4@2 c5@3 ~ b4@2 ~@4 a4@2 g4@3 ~ e4@2",
})).s("gm_distortion_guitar").gain(0.35).pan(0.1)

// chords · overdriven guitar · "Electric Guitar III"
const overdriven_guitar = note(`<
  A B C@3 D E D E D F ~ G H@4 I@2 ~ J K L K M N O ~ P Q R S@4 ~ T@2 U V U V W ~ X Y Z Y Z Y AA ~ AB@6 AC ~ AD AE AF AG
  AH AI AJ ~ AK AI AL AM@2 AN@2 ~ AO@2 AP@4 AQ ~ AR@2 AS@4 AT ~ AU@2 AV@7 AW@2 AX@4 AY ~ AW@2 AX@4 AY ~ AW@2 AX@4 AY ~
  AW@2 AZ@2 BA@4 AW@2 BB@2 BC BD BE ~ BF@2 BG@2 BH@4 AW@2 BB@2 BI@2 BJ ~ BF@2 BG@2 BK@4 AW@2 BB@2 BL BM BJ ~ BF@2 BG@2
  BN@4 BO@2 BP@2 BQ BR BE ~ BS@2 BT@2 BN@4 BO@2 BP@2 BU BV BE ~@2
>`.pickRestart({
  A: "~@6 [a#3,f4]@8 ~ [a3,f4]@3 [a#3,f4]@3 ~ a#3@2, ~@21 a3@2 ~", B: "a3@3 g3@3 c4@8 ~ b3@3 c4@3 b3 c4 ~",
  C: "[b3 a3 ~ g3 f3 ~ [d4,a4]@50 ~ g4@3 ~@6 f4@3 ~@3]/3", D: "~@4 e4@9 d4@3 e4@3 f4@3 g4@2",
  E: "~ f4@3 e4 f4 e4 d4@3 g4@3 ~@6 f4@3 ~@2", F: "~ f4@3 e4 f4 e4 d4@3 g4 ~@13", G: "~@11 g4@3 ~@6 f4@3 ~",
  H: "[~@5 e4@9 d4@3 e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@6 f4@3 ~]/2",
  I: "[~@5 e4@9 d4@3 e4@3 f4@3 g4@3 ~ f4@3 e4 f4 e4 d4@3 g4 ~@11]/2", J: "~@4 g4 ~@2 f4", K: "~@2 e4@3 d4 e4 f4",
  L: "g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@6 f4@3", M: "g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@7 f4@2", N: "~@7 e4@9 d4@3 e4@3 f4@2",
  O: "~ g4@3 f4@3 e4 f4 e4 d4@3 g4 ~@10", P: "~@4 [a#3,f4,a#4]@3 [b3,f#4,b4]@3 [c4,g4,c5]@8 ~ [a#3,f4]@3 [b3,f#4]@2",
  Q: "~ [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@2", // C5 A#5 B5 C5
  R: "~@4 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@2", // A#5 B5 C5 A#5 B5
  S: "[~ [c4,g4]@3 ~@13 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [c4,g4]@3 [c#4,g#4]@3 [d4,a4,d5,f#5]@3 ~@10]/4", // C5 A#5 B5 C5 A#5 B5 C5 A#5 …
  T: "[~@11 f4@3 g4@3 ~@6 f4@3 ~@6 e4@9 ~ d4@3 e4@3]/2", U: "f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@6",
  V: "f4 ~@2 e4@3 d4 e4", W: "f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4 ~@8", X: "~@16 g4@3 ~@5", Y: "~ f4@3 ~@6 e4@9 d4@3 e4@2",
  Z: "~ f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@5", AA: "~ f4@3 g4@3 f4@3 e4 f4 e4 d4@3 ~ g4 ~@6",
  AB: "[~@8 [a#3,f4,a#4]@3 [b3,f#4,b4]@3 [c4,g4,c5]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 ~ [b3,f#4]@3 [c4,g4]@3 ~@12 [a#3,f4]@3]/6", // A#5 B5 C5 A#5 B5 C5 A#5 B5 …
  AC: "[b3,f#4] [c4,g4] ~ [c4,g4] [c#4,g#4] [d4,a4,d5,f#5] ~@2", AD: "~@6 g4 ~", AE: "~ f4 ~@2 e4@3 d4",
  AF: "e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@3", AG: "~@3 f4@3 ~@6 e4@9 ~ d4@2",
  AH: "~ e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~@2", AI: "~@4 f4@3 ~@6 e4@9 d4@2",
  AJ: "~ e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4 ~@4", AK: "~@19 g4@3 ~@2",
  AL: "~ e4@3 ~ f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~",
  AM: "[~@5 f4@3 ~@6 e4@9 d4@3 e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4@3 ~]/2",
  AN: "[~@5 f4@3 ~@6 e4@9 d4@3 e4@3 f4@3 g4@3 f4@3 e4 f4 e4 d4@3 g4 ~@3]/2",
  AO: "[~@11 [a#3,f4,a#4]@3 [b3,f#4,b4]@3 ~ [c4,g4,c5]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12]/2", // A#5 B5 C5 A#5 B5 C5
  AP: "[[a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@12]/2", // A#5 B5 C5 A#5 B5 C5 A#5 B5 …
  AQ: "[a#3,f4] [b3,f#4] [c4,g4] ~ [c4,g4] [c#4,g#4] [d4,a4,d5,f#5] ~", // A#5 B5 C5 C#5 D
  AR: "[~@13 [a#3,f4,a#4]@3 [b3,f#4,b4]@3 [c4,g4,c5]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@11]/2", // A#5 B5 C5 A#5 B5 C5
  AS: "[~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@8 ~ [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@11]/2", // A#5 B5 C5 A#5 B5 C5 A#5 B5 …
  AT: "~@2 [a#3,f4]@3 [b3,f#4]@3 [c4,g4]@3 ~@3 [c4,g4]@3 [c#4,g#4]@3 [d4,a4,d5,f#5]@3 ~", // A#5 B5 C5 C#5 D
  AU: "[~@20 [a#3,f4]@8 ~ [a3,f4]@3 [a#3,f4]@3 a3 ~ a#3 a3@3 g3@3 c4@4]/2", // A#5 Dm A#5
  AV: "[~@5 b3@3 c4@3 b3 ~ c4 b3 ~ a3 g3 ~ f3 [d4,a4]@48 ~ f4@8 ~ [a3,f4]@3 f4@3 a3 ~@2 a3@3 g3@3 c4@8 ~ b3@3 c4@3 b3 c4 ~ b3 a3 ~ g3 f3 ~ [d4,a4]@50 ~]/7", // D5 Dm D5
  AW: "[[c4,g4]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 [d4,a#4]@3 ~ [d#4,b4]@2]/2", // C5 Em F Gm G#m
  AX: "[[e4,c5]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 [d4,a#4]@3 ~ [d#4,b4]@2]/2", // C Em F Gm G#m
  AY: "[e4,c5] ~@7", AZ: "[[e4,c5]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 d4@3 ~ d4@2]/2",
  BA: "[[c4,g4]@3 ~@7 [e4,g4,c5]@2 ~@6 [c4,g4]@11 ~ a#4@3 ~ c5@2 a#4@2 c5@2 a#4@2 d4@3 ~@3]/2", // C5 C C5
  BB: "[[e4,c5]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 d4@3 ~ g4@2]/2", // C Em F
  BC: "d4@5 ~ [d4,a4]@5 ~ [d4,a4]@5 ~ [d4,b4]@5 ~", BD: "[d4,c5]@3 ~ c5@2 [d4,b4]@5 ~ f#4@2 g4@2 a4@2 d4@3 ~ d4@2",
  BE: "g4 ~@11", BF: "[[f3,c4,f4,a4]@3 ~@7 [f4,c5]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 d4@3 ~ d4@2]/2",
  BG: "[[f3,c4]@3 ~@7 [f4,c5]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 ~ f4 e4 ~ d4 d4@3 ~ d4@2]/2", // F5 F
  BH: "[[c4,g4]@3 ~@7 [e4,g4,c5]@2 ~@6 [c4,g4]@11 ~ a#4@3 ~ c5@2 a#4@2 c5 a#4@2 g4 d4@3 ~@3]/2", // C5 C C5
  BI: "[d4@5 ~ d4@3 ~ d4@2 c5@3 ~ a4@2 b4@3 ~ c5@5 ~ b4@2 c5@2 b4@2 a4@2 c5@2 b4@2 a4@2 c5@2 b4@2 a4@2]/2",
  BJ: "g3 ~@11",
  BK: "[[c4,g4]@3 ~@7 [e4,g4,c5]@2 ~@6 [c4,g4]@11 ~ a#4@3 ~ c5@2 a#4 ~@2 a#4 ~ g4 d4@3 ~@3, ~@19 c5 ~@4]/2", // C5 C C5
  BL: "d4@5 ~ d4@5 ~ d4@5 ~ d4@5 ~", BM: "f4 d4!3 ~@2 f4 d4!3 ~@2",
  BN: "[[c4,g4]@3 ~@7 [e4,g4,c5]@2 ~@6 [c4,g4]@11 ~ a#4@3 ~ c5@2 a#4 c5@2 a#4 g4 ~ d4@3 ~@3]/2", // C5 C C5
  BO: "[[c4,g4]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 f4 ~ e4 d4 ~ [d4,a#4]@3 ~ [d#4,b4]@2]/2", // C5 Em F Gm G#m
  BP: "[[e4,c5]@3 ~@7 [e4,g4,b4]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 f4 ~ e4 d4 ~ d4@3 ~ g4@2]/2", // C Em F
  BQ: "d4@3 ~ d4@2 f#4@3 ~ d4@2 f#4@3 ~ d4@2 g4@3 ~ d4@2", BR: "f#4@3 ~ d4@2 f#4@3 ~ d4@2 g4@3 ~ d4@2 f#4@3 ~ d4@2",
  BS: "[[f3,c4,f4,a4]@3 ~@7 [f4,c5]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 f4 ~ e4 d4 ~ d4@3 ~ d4@2]/2", // F F5 F
  BT: "[[f3,c4]@3 ~@7 [f4,c5]@2 ~@6 [f4,a4]@11 ~ e4@3 ~ f4@2 e4 f4 ~ e4 d4 ~ d4@3 ~ d4@2]/2", // F5 F
  BU: "d4@5 ~ d4@3 ~ d4@2 f#4@3 ~ d4@2 d4@3 ~ g4@2", BV: "d4@5 ~ f4@2 d4@2 d4@2 f4@2 d4@2 d4@2 f4@2 d4@2 d4@2",
})).s("gm_overdriven_guitar").gain(0.34).pan(0.9)

// chords · piano · "Keyboard I"
const piano = note(`<
  A@5 B C D E F G H I J@6 ~ K L M N O L P ~ Q R@2 S@2 T@2 ~ U@4 V W X ~ Y Z AA AB AC AD AE ~ AF@2 AG@4 AH ~ AI AJ AK AL
  AM AN AO ~ AP AQ AR AS@4 ~@2 AT@2 AU@2 AV AW AX AY AZ BA BB BC BD BE BF@2 BG@4 BH@4 BI@2 BJ BK BL@2 BM BN BI@2 BJ BK
  BL@2 BM ~ BI@2 BJ BK BO@2 BM ~ BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE CF@2 CG CH CI CJ CK CL CM@2 CN CO CP@2
  CQ ~ CR@4 CS@2 CT CU@2 CV CW CX CY CZ DA DB DC DD DE DF DG DH DI DJ DK DL DM DN DO DP DQ ~ DR@3 DS DT@4 ~@9
>`.pickRestart({
// … 330 more lines

More by Led Zeppelin