Strudelify

Babe I'm Gonna Leave You

Led Zeppelin

KeyA minorTempo140 bpm
0:00/0:00
// Babe I'm Gonna Leave You — Led Zeppelin
// 140 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 8 "Special Guitar" named as a guitar, played on electric guitar clean (its marimba patch is not one)
// note: duplicate parts dropped: ch 1 "Acoustic Guitar (steel)" acoustic guitar nylon (copy of ch 2 "Ac Guitar (nylon)" acoustic guitar nylon)
// note: Full arrangement: all 217 bars on a 16-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): El Guitar (Clean).
setcpm(140/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 clean · "El Guitar (Clean)"
const electric_guitar_clean = note(`<
  ~@81 A B C ~ A B C ~ A B C ~ A B C D E D E ~@33 A B C ~ A B C ~@17 A B C ~ A B C ~@21 A B C ~ A B C ~ A B C ~ A B C
  ~@13 F@4
>`.pickRestart({
  A: "~ d4!2 ~ d4 ~ d4 ~", B: "e3 ~@7", C: "e3 ~@2 e3 ~@4", D: "e4!3 e3 e4 ~ e4 ~", E: "[d4,g4]!5 ~ [d4,g4] ~",
  F: "[~ [a4,a5]@7]/4", // A
})).s("gm_electric_guitar_clean").gain(0.26).pan(0.7)

// chords · acoustic guitar nylon · "Ac Guitar (nylon)"
const acoustic_guitar_nylon = note(`<
  A@8 B@16 C@4 D@4 ~@8 B@16 C@4 D@4 ~@8 E@8 ~@28 A@8 F@16 ~@8 G@8 H@8 ~@8 I@8 F@8 J@4 ~@22 K L M N O@2 ~@5
>`.pickRestart({
  A: "[~ e3 c4 ~@2 e3 a3 ~@2 e3 g3 ~@2 e3 g3 ~@2 d3 a3 ~@2 d3 a3 ~@2 f3 a3 ~@2 e3 g#3 ~@2 e3 a3 ~@2 e3 a3 ~@2 e3 g3 ~@2 e3 g3 ~@2 d3 a3 ~@2 d3 a3 ~@2 f3 a3 ~@2 e3 g#3 b3, a2!2 g2!2 f#2!2 f2 e2 a2!2 g2!2 f#2!2 f2 e2, ~@3 e4@2 ~@2 c4@2 ~@2 d4@2 ~@2 c4@2 ~@2 d4@2 ~@2 c4@2 ~@2 d4@2 ~@2 b3@2 ~@2 g4@2 ~@2 e4@2 ~@2 g4@2 ~@2 e4@2 ~@2 d4@2 ~@2 c4@2 ~@2 c4@2 ~@3]/8",
  B: "[~ e3 a3 ~@2 e3 a3 ~@2 e3 g3 ~@2 e3 g3 ~@2 d3 a3 ~@2 d3 a3 ~@2 f3 a3 ~@2 e3 g#3 ~@2 e3 a3 ~@2 e3 a3 ~@2 e3 g3 ~@2 e3 g3 ~@2 d3 a3 ~@2 d3 a3 ~@2 f3 a3 ~@2 e3 g#3 b3, a2!2 g2!2 f#2!2 f2 e2 a2!2 g2!2 f#2!2 f2 e2, ~@3 g4@2 ~@2 e4@2 ~@2 g4@2 ~@2 e4@2 ~@2 d4@2 ~@2 c4@2 ~@2 c4@2 ~@2 b3@2 ~@2 g4@2 ~@2 e4@2 ~@2 g4@2 ~@2 e4@2 ~@2 d4@2 ~@2 c4@2 ~@2 c4@2 ~@3]/8",
  C: "[~ f3 a3 ~@2 f3 a3 ~@2 e3 g#3 ~@2 e3 g#3 ~@2 f3 a3 ~@2 f3 a3 ~@2 e3 g#3 ~@2 e3 g#3 b3, f2!2 e2!2 f2!2 e2!2, ~@3 d4@2 ~@2 c4@2 ~@2 d4@2 ~@2 b3@2 ~@2 d4@2 ~@2 c4@2 ~@2 d4@2 ~@3]/4",
  D: "[~ e3 a3 ~@2 e3 a3 ~@2 e3 g3 ~@2 e3 g3 ~@2 d3 a3 ~@2 d3 a3 ~@2 f3 a3 ~@2 e3 g#3 b3, a2!2 g2!2 f#2!2 f2 e2, ~@3 e4@2 ~@2 e4@2 ~@2 g4@2 ~@2 e4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@3]/4",
  E: "[~ e3 a3 ~@2 b3 e4 ~@2 a3 d4 ~@2 a3 d4 ~@2 e3 b3 ~@2 b3 e4 ~@2 a3 d4 ~@2 a3 d4 ~@2 e3 b3 ~@2 b3 e4 ~@2 a3 d4 ~@2 a3 d4 ~@2 e3 b3 ~@2 b3 e4 ~@2 a3 d4 ~@2 a3 d4 f4, a2!2 a2!2 a2!2 a2!2 a2!2 a2!2 a2!2 a2!2, ~@3 e4@2 ~@2 g4@2 ~@2 g4@2 ~@2 f4@2 ~@2 e4@2 ~@2 g4@2 ~@2 g4@2 ~@2 f4@2 ~@2 e4@2 ~@2 g4@2 ~@2 g4@2 ~@2 f4@2 ~@2 e4@2 ~@2 g4@2 ~@2 g4@2 ~@3]/8",
  F: "[~ e3 a3 ~@2 e3 a3 ~@2 g3 b3 ~@2 g3 b3 ~@2 f#3 a3 ~@2 f#3 a3 ~@2 f3 a3 ~@2 e3 g#3 ~@2 e3 e4 ~@2 e3 a3 ~@2 e3 g3 ~@2 e3 g3 ~@2 d3 a3 ~@2 d3 a3 ~@2 f3 a3 ~@2 e3 g#3 b3, a2!2 g2!2 f#2!2 f2 e2 a2!2 g2!2 f#2!2 f2 e2, ~@3 g4@2 ~@2 f4@2 ~@2 f4@2 ~@2 e4@2 ~@2 e4@2 ~@2 d4@2 ~@2 e4@2 ~@2 e4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@3]/8",
  G: "[~ e3 c4 ~@2 e3 a3 ~@2 e3 a3 ~@2 e3 a3 ~@2 d3 a3 ~@2 d3 a3 ~@2 f3 a3 ~@2 e3 g#3 ~@2 e3 a3 ~@2 e3 a3 ~@2 g3 b3 ~@2 g3 b3 ~@2 f#3 a3 ~@2 f#3 a3 ~@2 f3 a3 ~@2 e3 g#3 e4, a2!2 g2!2 f#2!2 f2 e2 a2!2 g2!2 f#2!2 f2!2, ~@3 e4@2 ~@2 c4@2 ~@2 d4@2 ~@2 c4@2 ~@2 d4@2 ~@2 c4@2 ~@2 d4@2 ~@2 b3@2 ~@2 g4@2 ~@2 f4@2 ~@2 f4@2 ~@2 e4@2 ~@2 e4@2 ~@2 d4@2 ~@2 e4@2 ~@3]/8",
  H: "[~ e3 g3 ~@2 e3 g3 ~@2 g3 b3 ~@2 g3 b3 ~@2 f#3 a3 ~@2 f#3 a3 ~@2 f3 a3 ~@2 e3 g#3 ~@2 e3 g3 ~@2 e3 g3 ~@2 g3 b3 ~@2 g3 b3 ~@2 f#3 a3 ~@2 f#3 a3 ~@2 f3 a3 ~@2 e3 g#3 e4, a2!2 g2!2 f#2!2 f2!2 a2!2 g2!2 f#2!2 f2 e2, ~@3 g4@2 ~@2 f4@2 ~@2 f4@2 ~@2 e4@2 ~@2 e4@2 ~@2 d4@2 ~@2 e4@2 ~@2 e4@2 ~@2 g4@2 ~@2 f4@2 ~@2 f4@2 ~@2 e4@2 ~@2 e4@2 ~@2 d4@2 ~@2 e4@2 ~@3]/8",
  I: "[~ e3 c4 ~@2 e3 a3 ~@2 e3 g3 ~@2 e3 g3 ~@2 d3 a3 ~@2 d3 a3 ~@2 f3 a3 ~@2 e3 g#3 ~@2 e3 a3 ~@2 e3 a3 ~@2 g3 b3 ~@2 g3 b3 ~@2 f#3 a3 ~@2 f#3 a3 ~@2 f3 a3 ~@2 e3 g#3 e4, a2!2 g2!2 f#2!2 f2 e2 a2!2 g2!2 f#2!2 f2 e2, ~@3 e4@2 ~@2 c4@2 ~@2 d4@2 ~@2 c4@2 ~@2 d4@2 ~@2 c4@2 ~@2 c4@2 ~@2 b3@2 ~@2 g4@2 ~@2 f4@2 ~@2 f4@2 ~@2 e4@2 ~@2 e4@2 ~@2 d4@2 ~@2 e4@2 ~@3]/8",
  J: "[e4 e3 e4 ~@2 e3 a3 ~@2 e3 g3 ~@2 e3 g3 ~@2 d3 a3 ~@2 d3 a3 ~@2 f3 a3 ~@2 e3 g#3 b3, a2!2 g2!2 f#2!2 f2 e2, ~@3 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@3]/4",
  K: "b4@5 a4 b4 a4 b4@5 a4 b4 a4", L: "b4@3 ~", M: "~ a4 e5 a5", N: "~ a4 d#5 a5", O: "~ a4 d5 a5",
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.3)

// other · acoustic guitar nylon · "Ac Guitar (nylon)"
const acoustic_guitar_nylon_2 = note(`<
  ~@54 A B C@2 ~@52 D E F G H I J ~@48 K L M N O P Q R S T@2 U V W X@2 Y Z ~@29 AA@5
>`.pickRestart({
  A: "~@6 e3 [g3,b3] d4@2 e4@2 ~@2 e3 [g3,b3]", B: "d4@2 e4@4 d4 c4!2 [c4,d4] b3@2 c4@2 b3 [b3,c4]", C: "[a3@7 ~]/2",
  D: "~@11 e4@2 f4@3", E: "g4@3 f4@2 e4 f4 e4 d4@3 e4@2 d4@3", F: "c4 [c4,d4] b3@4 a3@2 a3@8", G: "~ a3 c4@2 ~@3 a3",
  H: "b3@2 c4@2 d4@2 e4@3 d4 c4 b3 c4 b3 ~ a3", I: "b3 a3 ~ g3 f3 e3 ~ d3!2 c3 ~ b2!2 c3 ~ b2", J: "a2",
  K: "~@2 [e4,g4] b4 d5@3 c5@3 b4@2 c5 b4 a4 ~", L: "b4 a4 g4 ~ f#4@8 ~@4",
  M: "~@2 d4@3 c4@3 b3@2 c4@2 b3@2 a3@2, ~@2 c#4 ~@13", N: "b3 e3@7", O: "~@7 e4@4 e4@3 e4 [c4,d4]",
  P: "d4@13 e4 d#4 ~", Q: "d4@6 d4 c4 c4@2 c4@4 d4@2", R: "~ a3 ~ e3@13, c4 ~@7",
  S: "~@2 a2@2 c3@2 d3@2 e3@2 g3@3 e3@2 ~", T: "[g3@2 e3@16 d3@2 e3@2 g3@4 e3@2 g3@2 e3 [c3,d3]]/2", U: "d3 c3 a2@14",
  V: "~@2 e4 [g4,b4] d5@2 e4 [g4,b4] d5@2 e4 [g4,b4] d5@2 e4 [g4,b4]", // G
  W: "d5@2 e4 [g4,b4] d5@2 e4 [g4,b4] d5@2 e4 [g4,b4] d5@2 e4 [g4,b4]", // G
  X: "[d5@2 c5@2 b4 c5 ~ b4 a4 b4 ~ a4 g4 f#4 ~ g4@7 a4@6 ~@4]/2", Y: "~@13 a4!2 ~", Z: "a4 ~",
  AA: "[a3 c4 ~@2 a3 c4 ~@2 a3 c4 ~@2 a3 c4 ~@2 a3 c4 b3@6 ~@4 e4@52, a2@2 b3@2 ~@2 e4@2 ~@2 b3@2 ~@2 e4@2 ~@9 a3@55, ~@3 a2@4 a2@4 a2@4 a2@9 a2@56, ~@13 b3@27, ~@27 c4@53]/5",
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.7)

// bass · acoustic bass · "Accoustic Bass"
const bass = note(`<
  ~@24 A B A B C D E F G@8 H ~@3 H I J F H I J F H I J F A B A B H D J F G@8 C@8 K L M N K L M N K L M N K L M N O P O P
  G@8 H I J F H I J F Q D J F R I J F S I J F S I J T U L M N U L M N V I J F S I J F W I J F W X Y Z U L M N U L M N AA
  AB AC AD AE I AF AG AA I J AG Q X J AH AA I J AI K L M N K L M N K L M N K L M N AJ@2 AK@2 AJ@2 AK@2 AL AM AN AO AP@5
>`.pickRestart({
  A: "f1", B: "e1", C: "a1!2", D: "g1!2", E: "f#1!2", F: "f1 e1",
  G: "[a1@2 a1!2 a1@2 a1@4 a1@4 a1@4 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2]/2", H: "a1", I: "g1", J: "f#1",
  K: "a1!5 ~ a1 ~", L: "g1!5 ~ g1 ~", M: "f#1!5 ~ f#1 ~", N: "f1!4 e1 ~ e1 ~", O: "f1!5 ~ f1 ~", P: "e1!5 ~ e1 ~",
  Q: "a0@3 a1", R: "a0@3 a1, ~@12 g1 ~@3", S: "a0", T: "f1@4 e1 d1 c1 b0", U: "a0!4 a1 ~ a1 ~",
  V: "a1@10 g#1 [e1,f1,f#1,g1] a1@4", W: "a0@11 g#1 a1@4", X: "g1@3 g1", Y: "f#1 f#1@2 f#1 f#1@2 f#1!2",
  Z: "f1!4 e1 d1 c1 b0", AA: "a0@3 a1, ~@12 g#1 ~@3", AB: "g1@10 a1@3 g1@3", AC: "f#1@3 a1@2 f#1@2 a1",
  AD: "f1!2 c1 e1@2 d1 c1 b0", AE: "a0 a0@5 a1@2, ~@12 g#1 ~@3", AF: "f#1@2 f#1 a1@2 f#1@2 e1", AG: "f1@2 e1!2",
  AH: "f1@3 f1 e1@2 e1@2", AI: "f1@2 f1@2 e1 d1 c1 b0", AJ: "f1/2", AK: "e1/2", AL: "c#1@2 c#1!2", AM: "c1@2 c1!2",
  AN: "b0@2 b0!2", AO: "a#0@2 a#0!2", AP: "[a0@3 a0@7]/5",
})).s("gm_acoustic_bass").gain(0.26).pan(0.3)

// chords · electric guitar clean · "Special Guitar"
const electric_guitar_clean_2 = note(`<
  ~@32 A@8 ~@24 A@8 ~@8 B C D E B C D E B C D E B C D E F G F G A@8 ~@24 B C D E B C D E ~@16 B C D E B C D E ~@20 B C D
  E B C D E B C D E B C D E H@2 I@2 J@2 K@2 ~@9
>`.pickRestart({
  A: "[[a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4]!2 [a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4]@2 ~@2 [a2,a3,e4,g4]@2 ~@2 [a2,a3,d4,e4,f4]@4 [a2,a3,d4,e4,f4]@2 [a2,a3,d4,e4,f4]@2 [a2,a3,d4,e4,f4]@2 [a2,a3,d4,e4,f4]@2 [a2,a3,d4,e4,f4]@2 [a2,a3,d4,e4,f4]@2 [a2,a3,d4,e4,f4]@2]/2", // Am A7 Dm
  B: "[a2,e3,a3,c4,e4]!3 [g3,b3,e4] [a2,e3,a3,c4,e4]@2 [a2,e3,a3,c4,e4]@2", // Am Em Am
  C: "[g2,e3,g3,c4,g4]!3 [g3,b3,e4] [g2,e3,g3,c4,g4]@2 [g2,e3,g3,c4,g4]@2", // C Em C
  D: "[f#2,d3,a3,c4,f#4]!3 [g3,b3,e4] [f#2,d3,a3,c4,f#4]@2 [f#2,d3,a3,c4,f#4]@2", // D7 Em D7
  E: "[f2,c3,f3,a3,c4,f4]!4 [e2,b2,e3,g#3,b3,e4]!4", // F E
  F: "[f2,c3,f3,a3,c4,f4]!4 [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]@2", G: "[e2,b2,e3,g#3,b3,e4]!8",
  H: "[~ f2@31, [c3,f3,a3,c4,f4]]/2", I: "[~@5 e4@27, e2 b3@7, ~ b2@31, ~ d3@15, ~@3 g#3@29]/2",
  J: "[~@5 f4@27, f2 c4@7, ~ c3@31, ~ f3@15, ~@3 a3@29]/2",
  K: "[~ e4@6 ~, e2@7 ~, ~ b2@27 ~@4, ~ e3@13 ~@2, ~@3 b3@25 ~@4]/2",
})).s("gm_electric_guitar_clean").gain(0.31).pan(0.3)

// chords · electric guitar jazz · "Hawaiian guitar" · A Adim Bm7 A#maj7 D5
const electric_guitar_jazz = note(`<
  ~@208
  [[c#4,e5,a5]!4]
  [[c4,d#5,a5]!4]
  [[b3,d5,a5]!4]
  [[a#3,d5,a5]@2 [a#3,d5,a5]@2 [a#3,d5,a5]@2 a#3 a3, ~@3 [d5,a5]]
  ~@5
>`).s("gm_electric_guitar_jazz").gain(0.31).pan(0.7)

// chords · synth strings 2
const synth_strings_2 = note("<~@72 A@8 ~@137>".pickRestart({
  A: "[~@63 c5, c0@4 e0@9 c#1 d1@6 f#1 g1@7 c#2 d2@3 f2@4 a2@2 b2@3 d3@3 f3@2 g3@2 a3@2 b3@2 c#4@7 g#4@2 a#4 b4@2, ~ c#0@5 f#0@2 g#0@14 g#1 a1@7 d#2 e2@9 c#3@5 f#3@6 c4@3 d#4@10, ~@2 d0@3 f0@2 g0@10 d#1 e1 f1@7 b1@8 g2@3 a#2@5 d#3@7 a#3@7 f4@2 g4@2 a4@4, ~@3 d#0@6 a0 a#0 b0 c1@13 a#1@2 c2@6 f#2@2 g#2@4 c3@4 e3@4 g#3@6 d4@2 e4@2 f#4@7]/8",
})).s("gm_synth_strings_2").gain(0.28)

// chords · synth strings 2
const synth_strings_2_2 = note("<~@72 A@8 ~@137>".pickRestart({
  A: "[~@63 c6, c1@4 e1@9 c#2 d2@6 f#2 g2@7 c#3 d3@3 f3@4 a3@2 b3@3 d4@3 f4@2 g4@2 a4@2 b4@2 c#5@7 g#5@2 a#5 b5@2, ~ c#1@5 f#1@2 g#1@14 g#2 a2@7 d#3 e3@9 c#4@5 f#4@6 c5@3 d#5@10, ~@2 d1@3 f1@2 g1@10 d#2 e2 f2@7 b2@8 g3@3 a#3@5 d#4@7 a#4@7 f5@2 g5@2 a5@4, ~@3 d#1@6 a1 a#1 b1 c2@13 a#2@2 c3@6 f#3@2 g#3@4 c4@4 e4@4 g#4@6 d5@2 e5@2 f#5@7]/8",
})).s("gm_synth_strings_2").gain(0.14)

// other · synth strings 1 · "melody (synth strings 1)"
const synth_strings_1 = note(`<
  ~@8 A ~ B C@3 ~ D@2 ~ E F G@2 ~ H@2 I J@2 K ~@11 L@2 M N O ~ P Q@2 ~ R S T@2 U V W ~ X Y Z ~@55 AA@2 AB AC AD ~ AE AF
  ~ AG AH ~@14 AI AJ ~ AK AL AM AN AO AP AQ AR AS ~@10 AT AU@3 ~@8 AV AW ~ AX AY AZ ~@19 BA BB BC ~ BD BE BF BG BH@4 BI
  ~@4
>`.pickRestart({
  A: "b4@3 ~", B: "~@4 b4@3 b4", C: "[b4 c5@3 b4@3 a4@2 a4 g4 a4@3 a4 g4@4 ~@5, ~@30 g#4 ~@17]/3",
  D: "[~@5 e4@2 e4@3 b4@3 b4 a4@2, ~@28 a#4 ~@3]/2", E: "~@7 b4", F: "b4@3 a4@5 ~@2 a4@4 a4@2, ~@3 a#4 ~@12",
  G: "[g4 a4@2 a4@2 ~@3]/2", H: "[~@10 g#4@4 [a4,a#4] ~@5 a4@3 g#4@4 a4@3 b4@2, ~@7 b4@3 ~@6]/2",
  I: "c5@2 ~ d5@2 c5@4 ~ b4@4 ~@2", J: "[~@4 a4 g#4 a4 b4@3 c5@2 b4@2 a4@2]/2", K: "g#4 a4@4 a4@3",
  L: "e5@3 d#5 e5@3 d#5", M: "e5@3 d#5 e5@3 e5", N: "d5@2 d5 c5 d5 c5 d5 c5", O: "d5@3 c5@2 d5@6 ~ d5@2 c5@2",
  P: "~ e5!3", Q: "[d5@2 c5@2 d5@2 c5@2 c5@3 b4@2 b4@7 b4@4 a4@2 g4@6, ~@26 g#4 ~@5]/2", R: "~ c5@3",
  S: "b4 a4@2 ~@5, ~@2 a#4 ~@13", T: "[~@8 b4@3 c5@2 b4@7 b4@2 a4@6 a4@2 g4@2, ~@22 a#4 ~@9]/2",
  U: "a4@3 g4@3 ~@8 d5@2", V: "d5@3 e5@5 ~@3 e5@2 d5@3", W: "c5@3 c5@3 ~@2", X: "~@4 a4 g#4 a4 b4",
  Y: "c5 d5 e5@3 d5 c5 d5", Z: "c5@2 a4 a4@3 ~@2", AA: "~@4 c5@2 c5@3 b4 a4@4 ~@2, ~@10 a#4 ~@5",
  AB: "~@6 c6@2 c6@2 c6@2 c6!3 ~", AC: "c6!2 ~ c6 c6@2 c6@2 b5@2 a5@2 a5@2 g5@2",
  AD: "a5@2 a5@2 d5 c5@7 ~@4, ~@5 c#5 ~@10", AE: "~@4 a4!4", AF: "c5 d5 c5@2 ~ c5 ~@2 b4@8, ~@4 d5@2 ~ c5@2 ~@7",
  AG: "~@8 a4@5 a4!3", AH: "a4@3 a4@2 a4@6 ~@5", AI: "~@3 d5@3 ~@2", AJ: "~@3 d5@2 d5 c5@2, ~@12 c#5 ~@3",
  AK: "~@2 e5 d5@2 c5@2 ~, ~@10 c#5 ~@5", AL: "~@5 c5 d5 c5, ~@14 c#5 ~", AM: "~@3 g4", AN: "a4@2 ~@5 a4",
  AO: "c5@3 d5@2 c5@3 d5@3 c5@2 d5@3", AP: "c5@3 d5@2 c5@3 c5@3 c5@2 c5@3", AQ: "c5@3 c5@5 c5@8", AR: "b4 a4 ~@4 a4!2",
  AS: "c5@7 [a4,a#4,b4] g4@2 a4@2 a4@2 a4@2, ~@8 g#4 ~@7", AT: "~@3 g5 a5 g5 a5 g5",
  AU: "[a5@2 e5 e5@15 d5@4 ~@2, ~@36 d#5 ~@11]/3", AV: "~@4 c5!4", AW: "~@4 c5!2 b4 a4, ~@14 a#4 ~", AX: "~@6 a4!2",
  AY: "a4@2 a4 a4@3 a4 a4@3 a4@2 a4@4", AZ: "a4 ~@3", BA: "~@2 a4 ~", BB: "~@2 a4 c5", BC: "c5 b4 a4 g4, ~@12 g#4 ~@3",
  BD: "~ f4", BE: "a4!3 b4", BF: "c5@2 b4@2 b4@4 ~@4 a4@3 g#4", BG: "g4@4 ~@2 a4 g4, ~@14 g#4 ~",
  BH: "[a4@63 [f#4,g4,g#4]]/4", BI: "e4, f4 ~@15",
})).s("gm_synth_strings_1").gain(0.26).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@33 A ~ A ~ A ~ A B ~@24 A ~ A ~ A ~ A B ~@7 C@20 ~ A ~@3 A ~ A B ~@23 C@8 B ~@15 C@8 B ~@19 C@16 B ~@16
>`.pickRestart({
  A: "~ x!7", B: "x", C: "x!2",
})).gain(0.31).pan(0.7)

// drums · snare
const snare = s("sd").struct(`<
  ~@67 A ~ A ~ B C ~@6 D E@20 F ~@2 G F ~ F ~@24 H E@7 I ~@15 H E@8 ~@19 J E@16 C ~@16
>`.pickRestart({
  A: "~@3 x!5", B: "~@3 x!4 ~", C: "x", D: "~@3 x", E: "~ x ~ x", F: "x ~ x!3 ~ x ~@3 x ~@3 x ~", G: "~ x!7",
  H: "x ~@10 x!2 ~@3", I: "~@4 x ~@5 x!3 ~@3", J: "x ~@9 x!3 ~@3",
})).gain(0.31).pan(0.7)

// drums · low tom
const low_tom = s("lt").struct("<~@32 A ~ B ~ B ~ B ~@25 A ~ B ~ B ~ B ~@31 B ~@28 C ~@23 C ~@27 C ~@33>".pickRestart({
  A: "x ~ x!3 ~ x ~@2 x ~@4 x ~", B: "x ~ x!3 ~ x ~@3 x ~@3 x ~", C: "~ x ~@2",
})).gain(0.31).pan(0.7)

// drums · hihat
const hihat = s("hh").struct("<~@141 A B@13 C ~@8 D B@18 C ~@33>".pickRestart({
  A: "~@3 x", B: "x!4", C: "x!3 ~", D: "~ x!3",
})).gain(0.31).pan(0.7)

// drums · mid tom
const mid_tom = s("mt").struct("<~@131 [~@8 x!2 ~@6] ~@23 [~ x] ~@27 [~ x] ~@33>").gain(0.31).pan(0.7)

// drums · crash
const crash = s("cr").struct(`<
  ~@32 A ~ A ~ A ~ A ~ B ~@23 A ~ A ~ A ~ A ~ B ~@7 C@20 A ~ A ~ A ~ A ~ B ~@23 C@8 B ~@15 C@8 B ~@19 C@16 B ~@16
>`.pickRestart({
  A: "~@7 x", B: "x", C: "x!4",
})).gain(0.31).pan(0.7)

stack(
  electric_guitar_clean, acoustic_guitar_nylon, acoustic_guitar_nylon_2, bass, electric_guitar_clean_2,
  electric_guitar_jazz, synth_strings_2, synth_strings_2_2, synth_strings_1, kick, snare, low_tom, hihat, mid_tom, crash
)

More by Led Zeppelin