Strudelify
Thank You cover art

1969 · Led Zeppelin II

Thank You

Led Zeppelin

KeyD majorTempo80 bpm
0:00/0:00
// Thank You — Led Zeppelin
// 80 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "acoustic embellishment" named as a mallet, played on tubular bells (its acoustic guitar steel patch is not one)
// note: 27 stray notes after a silence of more than 6 bars (from bar 1004) are dropped
// note: Full arrangement: all 86 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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 · tubular bells · "acoustic embellishment"
const tubular_bells = note("<A@2 B C D B A E ~@55 F G@2 H I J K L@2 ~@14>".pickRestart({
  A: "~@12 e4@2 ~ d4@2 ~ c4@2 ~ c4@2 ~ d4@7 ~@2 d4@2 ~ c4@5 ~ d4@5 ~",
  B: "~@12 e4@2 ~ d4@2 ~ c4@2 ~ c4@2 ~ d4@7 ~@2 d4@2 ~ c4@7 ~@2 d4@2 ~", C: "[d3,d4]@19 ~@5",
  D: "~@12 e4@2 ~ d4@2 ~ c4@2 ~ c4@2 ~ d4@7 ~@2 d4@2 ~ c4@6 d4@2 ~@4", E: "[d3,a3,d4,f#4]@19 ~@5",
  F: "~@3 e4@5 ~ f#4@2 ~ e4@5 ~ d4@2 ~ b3@2 ~ g4@2 ~ e4@5 ~ f#4@2 ~ e4@5 ~ d4@2 ~ b3@2 ~, a4@5 ~@43",
  G: "[c3@5 ~@7 e3@5 ~@7 g3@7 ~@5 g4@5 ~@7 a2@2 ~ b2@2 ~ d3@2 ~ e3@2 ~ d3@5 ~ a2@5 ~ a2@2 ~ b2@2 ~ d3@2 ~ e3@2 ~ d3@5 ~ b2@5 ~, ~@42 e4@19 ~@35]/2",
  H: "d3@2 ~@4 a3@5 ~ a4@5 ~ f#4@5 ~ g4@2 ~ f#4@2 ~ d4@5 ~ d4@2 ~@4 a3@2 ~ b3@2 ~",
  I: "a3@2 ~ g3@2 ~ f#3@5 ~ e3@2 ~ d3@2 ~@4 b2@2 ~ d3@2 ~ e3@2 ~ d3@2 ~ b2@2 ~ d3@5 ~ b2@5 ~, ~@3 a2@4 ~",
  J: "c3@19 ~@5", K: "b2@19 ~@5", L: "[[d3,a3]@77 ~@19]/2",
})).s("gm_tubular_bells").gain(0.51)

// chords · acoustic guitar nylon · "main acoustic"
const acoustic_guitar_nylon = note(`<
  A B C D A B C D E ~@4 F G H I J K L ~ M N O P Q R S T J U V@2 A B C W X Y Z AA AB Z AC C AD ~@3 AE AF AG AH AI AJ AK
  AL ~@6 AM AN ~@5 AO@2 ~@14
>`.pickRestart({
  A: "[d3,d4]@5 ~ a3@5 ~ [a3,d4,g4]@2 ~ [a3,f#4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@5 ~", // D Dsus4 D Asus4 D Asus4 D
  B: "b3@2 ~@4 e4@2 ~ g3@3 ~ [a3,d4,g4]@2 ~ [a3,f#4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@2 ~@3, ~ [c3,c4]@4 ~@11", // Dsus4 D Asus4 D Asus4 D C
  C: "a3@2 ~@4 d4@2 ~ g4@3 ~ [a3,d4,g4]@2 ~ [a3,f#4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@5, ~@3 b3@14 ~@31", // Dsus4 D Asus4 D Asus4 D
  D: "[a2,d3,a3]@10 ~@2 [d3,f#4] d4@9 ~@2 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~, ~@13 a3@2 ~@33", // D5 D Dsus4
  E: "[d3,a3,d4,f#4]@13 ~@11", F: "c3@10 ~@2 g3@5 ~ d4@5 ~ g4@5 ~ e3@5 ~ g4@5 ~ d4@5 ~",
  G: "a3@2 ~ b3@7 ~@2 d3@5 ~@7 g4@5 ~ d4@5 ~ g4@5 ~ d4@5 ~, ~@9 g3@5 ~@10",
  H: "d4@2 ~@4 a4@5 ~ d5@5 ~ f#5@5 ~ g5@5 ~ f#5@5 ~ d5@5 ~ a4@5 ~",
  I: "[d3,a3,d4,f#4]@7 ~@2 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@7 ~@2 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@7 ~@2 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@2 ~", // D
  J: "[f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~", // Bm
  K: "[e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@7 ~@2 [e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@2 ~ [e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@5 ~", // Amaj7
  L: "[f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@7 ~@2 [f#3,b3,d4,f#4]@2 ~ [f#3,b3,d4,f#4]@10 ~@2 [f#3,b3,d4,f#4]@10 ~@2", // Bm
  M: "[c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@5 ~", // Cmaj7
  N: "[b2,d3,g3,d4,g4]@5 ~ [b2,d3,g3,d4,g4]@5 ~ [b2,d3,g3,d4,g4]@5 ~ [b2,d3,g3,d4,g4]@5 ~ [b2,d3,g3,d4,g4]@5 ~ [b2,d3,g3,d4,g4]@5 ~ [b2,d3,g3,d4,g4]@5 ~ [b2,d3,g3,d4,g4]@2 ~ [b2,d3,g3,d4,g4]@2 ~", // G
  O: "[d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@5 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~", // D Dsus4
  P: "[d3,a3,d4,f#4]@10 ~@2 [d3,a3,d4,f#4]@7 ~@2 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@5 ~", // D
  Q: "~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@2 [c3,g3,b3,c4,e4]@3 ~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@2 [c3,g3,b3,c4,e4]@3 ~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@2 [c3,g3,b3,c4,e4]@3 ~ [c3,g3,b3,c4,e4]@5 ~ [c3,g3,b3,c4,e4]@2 [c3,g3,b3,c4,e4]@2 ~", // Cmaj7
  R: "~ [b2,d3,g3,d4,g4]@5 ~ [b2,d3,g3,d4,g4]@2 [b2,d3,g3,d4,g4]@3 ~ [b2,d3,g3,d4,g4]@5 ~@3 [d3,g3,d4,g4]@4 [b2,d3,g3,d4,g4]@5 ~@3 [b2,d3,g3,d4,g4]@4 [b2,d3,g3,d4,g4]@5 ~@4 [b2,d3,g3,d4,g4]@2, ~@21 b2@2 ~@25", // G G5 G
  S: "~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@3 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@5 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2 ~ [d3,a3,d4,g4]@2", // D Dsus4
  T: "~ [d3,a3,d4,f#4]@4 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4]@4 ~ [d3,a3,d4,f#4]@3 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 ~", // D
  U: "[f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@2 ~ [f#3,b3,d4,f#4]@2 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@2 ~ [f#3,b3,d4,f#4]@2 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~", // Bm
  V: "[[e3,g#3,a3,e4]@5 ~@4 [e3,g#3,a3,e4]@2 ~ [e3,g#3,a3,e4]@7 ~@2 [e3,g#3,a3,e4]@3 [e3,g#3,a3,e4]@2 ~@7 [e3,g#3,a3,e4]@3 [e3,g#3,a3,e4]@7 ~@2 [g#3,a3,e4]@5 ~@46, ~@45 e3@2 ~@49]/2", // Amaj7
  W: "[a2,d3,a3]@10 ~@2 [a3,d4,g4]@2 ~ [a3,f#4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@5 ~, [d4,f#4]@5 ~@43", // D5 Dsus4 D Asus4 D Asus4 D
  X: "[a2,d3,a3,d4,f#4]@2 ~@4 e4@2 ~ g3@3 ~ [a3,d4,g4]@2 ~ [a3,f#4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@2 ~@3", // D Dsus4 D Asus4 D Asus4 D
  Y: "b3@2 ~@4 g3@2 ~ d4@3 ~ [a3,d4,g4]@2 ~ [a3,f#4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@5, ~@3 c4@14 ~@31", // Dsus4 D Asus4 D Asus4 D
  Z: "~@6 a3@5 ~ [a3,d4,g4]@2 ~ [a3,f#4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@5 ~, g3@5 ~@19", // Dsus4 D Asus4 D Asus4 D
  AA: "[a3,d4]@9 g3@3 ~ [a3,d4,g4]@2 ~ [a3,f#4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@2 ~@3, d3 ~@23", // D5 Dsus4 D Asus4 D Asus4 D
  AB: "d4@5 ~ d4@2 ~ g4@3 ~ [a3,d4,g4]@2 ~ [a3,f#4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~ [a3,d4,e4]@5 ~ [a3,d4,f#4]@5, d3@7 ~@17, a3 ~@23", // Dsus4 D Asus4 D Asus4 D
  AC: "[g3,d4]@3 ~@10 [a3,d4]@2 ~ a3@2 ~ a3@2 ~ a3@2 ~ [a3,d4,f#4]@7 ~@2 [a3,d4,f#4]@2 ~@3 [d3,a3,d4,g4]@2 ~@2 [a3,d4]@2 [d3,a3,d4,g4]@2 ~, d3@12 f#4@2 ~@10 e3@7 ~@2 e3@5 ~@4 [d3,g4]@2 ~@4", // G5 D5 D Dsus4 D5 Dsus4 G5
  AD: "[a2,d3,f#3,d4,f#4,f#5]@19 ~@5", // D
  AE: "~@6 a4@2 ~ e4@2 ~ f#4@2 ~ e4@5 ~ a3@2 ~ b3@2 ~ d4@2 ~ b3@2 ~ a3@5 ~ d3@2 ~ b2@2 ~ a2@2 ~",
  AF: "c3@5 ~ e3@5 ~ g3@5 ~ c4@5 ~ g3@5 ~ e4@5 ~ e3@2 ~ d3@2 ~ c3@2 ~ d3@2 ~",
  AG: "e3@2 ~ d3@2 ~ b2@5 ~ d3@5 ~ g3@5 ~ c4@5 ~ a3@2 ~ g3@2 ~ e3@2 ~ d3@2 ~ a2@2 ~ b2@2 ~",
  AH: "d4@5 ~ a4@5 ~ d5@5 ~ e5@5 ~ f#5@5 ~ a4@5 ~ f#5@5 ~ [d4,a4,d5,f#5]@5 ~", // D
  AI: "~ [d3,a3,d4,f#4]@7 ~@2 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@7 ~@2 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@7 ~@2 [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@5 ~ [d3,a3,d4,f#4]@2 ~ [d3,a3,d4,f#4]@2", // D
  AJ: "~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5", // Bm
  AK: "~ [e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@7 ~@2 [e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@2 ~ [e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@5 ~ [e3,g#3,a3,e4]@5", // Amaj7
  AL: "~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@5 ~ [f#3,b3,d4,f#4]@7 ~@2 [f#3,b3,d4,f#4]@2 ~ [f#3,b3,d4,f#4]@10 ~@2 [f#3,b3,d4,f#4]@10 ~", // Bm
  AM: "~@6 a4@2 ~ b4@2 ~ a4@2 ~ g4@2 ~ f#4@2 ~ e4@2 ~ a3@2 ~ b3@2 ~ a3@2 ~ g3@2 ~ f#3@2 ~ e3@2 ~ c3@2 ~ d3@2 ~",
  AN: "c3@19 ~@5", AO: "[[d2,d3,a3]@77 ~@19]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.51)

// chords · drawbar organ · "hammond organ"
const drawbar_organ = note(`<
  ~@2 A@2 B@2 C D E F G H I J K L M N O N P Q R S@2 T U V W X Y Z P ~@2 AA@2 AB AC AD W AE@2 AF AG AH AI AJ AK AL AM AN
  AO AP Z Y Z AQ@2 ~ AR AS@3 AT@3 AU AV AW AX AY AZ BA BB BC@4 BD BE BF BG@2 BH BI
>`.pickRestart({
  A: "[d5@15 ~]/2",
  B: "[~@6 [a4,f#5]@5 ~ [b4,g5]@2 ~ [a4,f#5]@2 ~ [a4,f#5]@2 ~ [g4,e5]@2 ~ [a4,f#5]@31 ~@5 [b4,g5]@2 ~ [a4,f#5]@2 ~ [a4,f#5]@2 ~ [g4,e5]@2 ~ a4@5 ~ d5@5 ~ b4@5 ~ d5@5 ~, ~@36 f#5 ~@11]/2", // D Em D C D Em D C
  C: "~@12 g5@2 ~ f#5@2 ~ f#5@2 ~ e5@2 ~ f#5@7 ~@2 f#5@2 ~ f#5@2 ~ g5@2 ~ b4@2 ~ a5@2 ~",
  D: "[d4,a4,d5,a5]@26 ~@7 [e4,g4]@2 ~ [e4,g4]@2 ~ [f#4,a4]@2 ~ [e4,g4]@5 ~", E: "[d4,f#4]@19 ~@5",
  F: "[c4,e5]@10 ~@2 c5@7 ~@2 f#5@2 ~ [c4,e5,g5]@10 ~@2 c5@2 ~ a5@2 ~ g5@5 ~", // C
  G: "[b3,g5]@10 ~@2 [b4,d5]@7 ~@2 g5@2 ~ [b3,f#5]@7 ~@2 g5@2 ~ [b4,d5,a5]@7 ~@2 g5@2 ~", // Em Bm B5 Bm7
  H: "[d4,a5]@10 ~@2 a4@10 ~@2 d5@2 ~ f#5@2 ~ a5@5 ~ [a4,g5]@2 ~ f#5@2 ~ e5@2 ~ d5@2 ~", // D5 A7
  I: "[d5,f#5]@2 ~ g5@2 ~ f#5@5 ~ a4@10 ~@2 d5@10 ~@5 e5@2 ~@4 d5@2 ~, d4@36 a4@5 ~@7", // D
  J: "[c4,d5]@10 ~@2 g4@10 ~@2 c4@5 ~ e5@2 ~ g5@2 ~ g4@2 ~ e5@5 ~ g5@2 ~", // Csus2
  K: "b3@10 ~@2 d5@10 ~@2 [g3,g4,g5]@2 ~ a5@2 ~ b5@5 ~ a5@2 ~ g5@7 ~@2", // G
  L: "[d4,a5]@7 ~@2 e5@2 ~ [a4,f#5,a5]@10 ~@2 a4@10 ~@2 g5@2 ~ e5@2 ~ c5@2 ~ e5@2 ~", M: "[f#5,a5]@19 ~@5 d4@19 ~@5",
  N: "[b4,d5,f#5,b5]@19 ~@5", O: "[e4,d5,e5,g#5,b5]@19 ~@5", P: "[e5,g#5,b5]@10 ~@2 [c#5,e5,a5]@29 ~@7",
  Q: "[c5,e5,g5]@19 ~@5", R: "[b4,d5,g5]@19 ~@5", S: "[f#5@19 ~@5 g5@19 ~@53, [a4,d5]@77 ~@19]/2",
  T: "[e4,g4,c5]@19 ~@5", U: "[d4,g4,b4]@19 ~@5", V: "f#4@19 ~@5 g4@19 ~@5, [d4,a4]@19 ~@5", W: "[d4,f#4,a4]@19 ~@5",
  X: "[b4,d5,b5]@19 ~@5", Y: "[d5,e5,g#5,b5]@19 ~@5", Z: "[d5,f#5,b5]@19 ~@5", AA: "[d5@77 ~@19]/2",
  AB: "~@24 d4@19 ~@5, [f#4,a4]@19 ~@5", AC: "~@12 c4@29 ~@7, [e4,g4]@19 ~@5", AD: "[b3,d4,g4]@19 ~@5",
  AE: "[[f#4,a4]@38 ~@34 c5@19 ~@5, d5@31 ~@17, ~@24 [e4,g4]@19 ~@5]/2", AF: "b4@19 ~@5 b3@19 ~@5, [d4,g4]@19 ~@5",
  AG: "[f#4,a4]@29 ~@7 [e4,g4]@10 ~@2, d4@3 ~", AH: "[d4,f#4,a4]@19 ~@29",
  AI: "[c4,e5]@10 ~@2 [c5,f#5]@5 ~ g5@5 ~ c4@5 ~ f#5@2 ~ e5@2 ~ c5@10 ~@2", // C Cdim
  AJ: "[b3,b4,d5]@10 ~@2 [b4,g5]@10 ~@2 [b3,d5,f#5]@7 ~@2 g5@2 ~ [b4,d5,a5]@7 ~@2 b5@2 ~", // Bm Em Bm Bm7
  AK: "~@12 a4@10 ~@14 g5@2 ~ f#5@2 ~ e5@2 ~ d5@2 ~, a5@13 ~@5 a4@5 ~, d4@19 ~@5 d4@19 ~@5",
  AL: "d4@5 ~ a4@5 ~ d4@5 ~ a4@5 ~, d5@19 ~@5, f#5@19 ~@5 a5@19 ~@5",
  AM: "~@12 g4@14 ~@4 d4@2 ~ f#4@2 ~ g4@2 ~ d4@2 ~ e4@2 ~ g4@2 ~, [c4,g5]@19 ~@5", // C5
  AN: "d4@2 ~ e4@2 ~ d4@5 ~ [g4,d5]@10 ~@2 [d4,g5]@2 ~ a5@2 ~ b5@5 ~ [g4,a5]@2 ~ g5@7 ~@2", // G5 Gsus2
  AO: "[d4,a5]@7 ~@2 e5@2 ~ a4@10 ~@2 d4@5 ~ a4@5 ~ d4@5 ~ a4@5 ~, ~@12 [f#5,a5]@29 ~@7", AP: "[d4,d5,f#5,a5]@19 ~@5",
  AQ: "[[b4,e5,g#5,b5]@5 ~ [e4,a4,c#5,e5]@25 ~@17]/2", // E A
  AR: "c4@10 ~@2 [c5,e5]@2 ~ f#5@2 ~@7 c4@10 ~@2 [c5,e5]@10 ~@2, ~@18 g5@17 ~@13", // C
  AS: "[b3@5 ~ b4@5 ~ [b4,d5]@2 ~ f#5@5 ~ g5@2 ~ b3@5 ~ f#5@5 ~ b4@10 ~@29 a4@2 ~ b4@2 ~@4 f#4@10 ~@50, ~@6 a5@13 ~@5, ~@48 d4@77 ~@19, ~@81 a4@5 ~@58]/3", // Bm
  AT: "[c4@10 ~@2 g4@10 ~@2 c4@10 ~@2 [g4,g5]@2 ~ f#5@5 ~@4 b3@5 ~ f#5@2 ~@4 g4@10 ~@2 [b3,b4]@5 ~ d5@2 ~@4 g4@5 ~@13 a4@10 ~@2 f#5@5 ~ g5@2 ~ f#5@2 ~ e5@2 ~ d5@2 ~@4 b4@2 ~ d5@2 ~ e5@2 ~, ~@45 g5@5 ~@7 d5@5 ~@19 e5@5 ~@4 f#5@10 ~@20 a4@12 a4@7 ~@5, ~@2 d4]/3", // G B
  AU: "~@12 a5@29 ~@7, [d4,a4]@19 ~@5, f#5@29 ~@19", // D5
  AV: "c5@5 ~ g5@5 ~ [c5,e6]@2 ~ f#6@2 ~ g5@2 ~@4 c5@5 ~ g5@2 ~ f#6@2 ~ g6@6 g5@2 ~ e6@2 ~, g6@10 ~@11 g6@10 ~@5 c5@5 ~@7", // C
  AW: "[c5,d6]@5 ~ [g5,g6]@5 ~ [c5,d6,g6]@5 ~ [g5,a6]@6 [c5,a6]@2 ~ b6@2 ~ g5@5 ~ [c5,a6]@2 ~@4 g5@5 ~, ~@39 g6@8 ~", // Csus2 G Csus2 Gsus2 F
  AX: "a6@6 a5@2 ~ e6@2 ~ [d5,f#6]@2 ~ e6@2 ~ a5@5 ~ d5@5 ~ [a5,d6]@5 ~ [g5,b5]@2 ~ d6@2 ~ [a5,e6]@5 ~, d5@5 ~@13 d6@10 ~@20", // D D5 G A5
  AY: "d5@5 ~ a5@5 ~ d5@5 ~ a5@5 ~ d5@5 ~ a5@5 ~ [d5,a5]@2 ~@4 a5@5 ~, d6@29 ~@10 b5@8 ~", // D5
  AZ: "c6@6 g5@2 ~@4 c5@5 ~ g5@5 ~ [c5,a5]@2 ~ b5@2 ~ g5@2 ~ c6@2 ~ [c5,c6]@2 ~@4 g5@5 ~, c5@5 ~@4 b5@14 ~@16 d6@8 ~", // F C
  BA: "[b3,g5]@5 ~ [g4,a5]@2 ~@4 b3@5 ~ g4@5 ~ [g3,g5]@5 ~ g4@5 ~ [d4,a5]@2 ~@4 g4@5 ~, ~@9 b5@14 ~@16 g5@8 ~", // Em Gsus2 G D5
  BB: "a5@6 a4@2 ~ e5@2 ~ [d4,f#5]@2 ~ e5@2 ~ a4@5 ~ d4@5 ~ a4@5 ~ [d4,e5]@2 ~ f#5@2 ~ [a4,g5]@2 ~ e5@2 ~, d4@5 ~@13 d5@14 ~@16", // D Dsus2 A7
  BC: "[d4@5 ~ a4@5 ~ [d4,g5]@2 ~ f#5@2 ~ [a4,g5]@2 ~ e5@2 ~ [d4,g5]@2 ~ f#5@2 ~ [a4,e5]@5 ~ [d4,e5]@5 ~@7 c5@5 ~ g5@5 ~ [c5,d6]@2 ~@4 g5@5 ~ g4@5 ~ g5@5 ~@4 e6@2 ~ g5@5 ~ b4@5 ~ g5@5 ~ [g4,d6]@5 ~ [g5,a6]@2 ~@4 g4@2 ~ a6@2 ~ g5@5 ~ d5@2 ~@4 g5@5 ~ d5@5 ~ [a5,d6]@5 ~ [d5,e6]@2 ~@4 a5@5 ~ [d5,g6]@2 ~ d6@2 ~ a5@2 ~@4 d5@2 ~@4 a5@5 ~, f#5@10 ~@32 [a4,d5]@5 ~@37 [d5,d6]@5 ~@46 a6@14 ~@34 g6@8 ~, ~@45 e5@14 ~@4 c6@17 ~@10 g6@17 ~@10 b6@5 ~@4 g6@10 ~@23 f#6@8 ~@10 e6@5 ~@10]/4", // G5 A7 G5 A5 Dsus2 Csus2 G5 Gsus2 …
  BD: "f#6@6 a5@2 ~@4 d5@5 ~ [a5,g6]@5 ~ [d5,f#6]@2 ~ e6@2 ~ a5@2 ~@4 d5@2 ~ e6@2 ~ [a5,d6]@5 ~, d5@5 ~@4 e6@8 ~@16 f#6@5 ~@10", // A7 D D5
  BE: "g6@6 g5@2 ~@4 c5@2 ~@4 g5@5 ~ [c5,c6]@5 ~ g5@5 ~ [c5,d6]@2 ~@4 g5@5 ~, c5@5 ~@4 e6@5 ~ d6@8 ~@16 e6@9", // C Csus2
  BF: "b4@5 ~ g5@5 ~ [b4,d6]@2 ~@4 g5@5 ~ [b4,b5]@5 ~ g5@5 ~ [b4,a6]@2 ~@4 g5@5 ~, g6@10 ~@5 c6@8 ~@16 b6@8 ~", // Bm B B7
  BG: "a6@6 a5@2 ~ e6@2 ~ d5@5 ~ a5@5 ~ [d5,g6]@2 ~ d6@2 ~ a5@2 ~ g6@2 ~ [d5,d6]@5 ~ [a5,f#6]@5 ~, d5@5 ~@7 f#6@10 ~@26", // G5 D
  BH: "a6@6 a5@2 ~ e6@2 ~ d5@5 ~ a5@5 ~ [d5,g6]@2 ~ f#6@2 ~ [a5,e6]@5 ~ [d5,f#6]@5 ~ [a5,a6]@5 ~, d5@5 ~@7 f#6@10 ~@26", // G5 A5 D A
  BI: "[d4,f#4,a4,d5,f#5]@19 ~@5", // D
})).s("gm_drawbar_organ").gain(0.5)

// chords · overdriven guitar · "electric guitar" · E A E A
const overdriven_guitar = note(`<
  ~@20
  [[e3,g#3,b3]@10 ~@2 [a2,c#3,e3,a3]@29 ~@7]
  ~@11
  [[e3,g#3,b3]@10 ~@2 [a2,c#3,e3,a3]@29 ~@7]
  ~@53
>`).s("gm_overdriven_guitar").gain(0.51)

// other · electric guitar jazz · "solo"
const electric_guitar_jazz = note("<~@36 A B@2 C D E F G H ~@25 I@2 ~@2 I@2 ~@2 J ~@3 J ~@2 K>".pickRestart({
  A: "~@12 f#3@2 ~ g3@2 ~ a3@7 ~@2 b3@2 ~ c#4@2 ~ d4@2 ~ a3@5 ~ d4@2 ~ e4@2 ~",
  B: "[f#4@2 ~ g4@2 ~ a4@2 ~ b4@2 ~ a4@2 ~ g4@2 ~ f#4@2 ~ e4@2 ~ g4@2 ~ e4@2 ~ d4@2 ~ c#4@2 ~ d4@2 ~ e4@2 ~ f#4@2 ~ g4@5 ~@4 b4@2 ~ a4@2 ~ a4@2 ~ g4@2 ~ g4@10 ~@2 f#4@2 ~ g4@2 ~ a4@2 ~ b4@7 ~@2]/2",
  C: "~@3 c#4@2 ~ a4@2 ~ b4@2 ~ c#4@5 ~ a4@2 ~ b4@2 ~ a4@2 ~ b4@5 ~ a4@2 ~ g4@2 ~ f#4@5 ~ g4@2 ~",
  D: "~@3 g4@2 ~ g4@2 ~ g4@2 ~ f#4@24 ~@6 d4@5 ~",
  E: "d4@2 ~ a3@2 ~ g3@5 ~ d4@2 ~ c#4@2 ~ d4@2 ~ c#4@2 ~ b3@2 ~ c#4@2 ~ a3@2 ~ b3@2 ~ g3@2 ~ a3@2 ~ f#3@2 ~ g3@2 ~",
  F: "g3@2 ~ e3@2 ~ f#3@2 ~ e3@2 ~ d3@12 ~@3 c#3@2 ~ d3@2 ~ e3@2 ~ f#3@2 ~ g3@2 ~ a3@5 ~",
  G: "~@6 a3@2 ~ b3@2 ~ c#4@2 ~ d4@2 ~ e4@2 ~ f#4@2 ~ g4@2 ~ b4@2 ~ a4@2 ~ g4@2 ~ f#4@2 ~ e4@2 ~ f#4@2 ~ g4@2 ~",
  H: "g4@2 ~ f#4@2 ~ f#4@5 ~ f#4@10 ~@2 g4@2 ~ f#4@2 ~ f#4@5 ~ g4@2 ~ f#4@2 ~ f#4@5 ~", I: "[[a2,d3]@77 ~@19]/2",
  J: "[a2,d3]@19 ~@5", K: "[a2,d3,f#3]@19 ~@5",
})).s("gm_electric_guitar_jazz").gain(0.51)

// drums · kick
const kick = s("bd").struct("<~@20 x ~@65>").gain(0.51)

// drums · rim
const rim = s("rim").struct(`<
  ~@4 A@2 B C D ~@7 E F D G H G I J D J K L I J I@2 M ~@4 N I G ~ O P O Q D ~@8 O I R S ~@28
>`.pickRestart({
  A: "x ~@6 x!2 ~ x ~@3 x ~", B: "x ~@6 x!2 ~ x ~@2 x!2 ~", C: "x ~@5 x!2 ~@8", D: "x", E: "~@15 x",
  F: "x!2 ~@2 x!2 ~ x", G: "x ~@3 x!2 ~@2", H: "~@4 x ~@4 x ~ x ~@4", I: "x!2 ~@6", J: "x ~ x ~@4 x!2 ~ x ~@5",
  K: "x!2 ~@2 x ~@3", L: "x ~@6 x!2 ~ x ~@5", M: "~ x ~@2", N: "x ~ x ~@5 x ~@6 x", O: "x!2", P: "x!2 ~@2 x!2 ~@2",
  Q: "x ~ x ~@4 x ~@8", R: "x ~@3 x!12", S: "x!2 ~@2",
})).gain(0.51)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B@2 C ~@9 A D E F A C A B A G A H I F J F ~@4 K L K ~ M I K J ~@9 A C K F ~@28
>`.pickRestart({
  A: "~@2 x!6", B: "x!8", C: "x!4 ~@4", D: "x!5 ~@3", E: "~@2 x!5 ~", F: "x", G: "x!6 ~@2", H: "x!5 ~ x ~",
  I: "~ x!6 ~", J: "~ x!4 ~ x ~", K: "~ x!7", L: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2", M: "~ x!2 ~",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@12 B ~@3 C ~ D ~@3 E ~@3 D@2 ~@4 C ~ F ~@47>".pickRestart({
  A: "~@6 x ~@6 x!2 ~", B: "~@3 x ~@8 x ~@3", C: "~@13 x!2 ~", D: "~@14 x!2", E: "~@7 x", F: "~@11 x ~ x!2 ~",
})).gain(0.51)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@3 B ~@8 C ~ D ~@3 E ~ F ~ G ~ H ~ E I ~@4 J ~ K ~ L M N O P ~@8 Q ~ R ~@30
>`.pickRestart({
  A: "~@4 x ~@6 x ~@4", B: "~@11 x ~ x!2 ~", C: "~@5 x ~ x!2 ~ x ~@5", D: "~@12 x!3 ~", E: "~@12 x!2 ~@2",
  F: "~@4 x ~ x!2 ~@3 x ~ x!2 ~", G: "~@13 x ~@2", H: "~@5 x ~@2 x ~ x!5 ~", I: "~@9 x!2 ~@2 x ~@2",
  J: "~@8 x!2 ~ x ~@4", K: "~@2 x ~ x!2 ~@3 x ~@6", L: "~@8 x!8", M: "~@10 x ~@2 x!2 ~", N: "~@14 x!2", O: "~@7 x",
  P: "~@9 x!2 ~@2 x!2 ~", Q: "~@2 x ~@4 x ~ x ~ x!2 ~@3", R: "~@13 x!3",
})).gain(0.51)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@8 A ~ A B A ~ A ~ A ~ A ~ A ~ A B ~@4 A ~ A ~ A@5 ~@8 A ~ A B ~@28
>`.pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.51)

stack(
  tubular_bells, acoustic_guitar_nylon, drawbar_organ, overdriven_guitar, electric_guitar_jazz, kick, rim, snare, hihat,
  low_tom, mid_tom, crash
)

More by Led Zeppelin