Strudelify

The Crunge

Led Zeppelin

KeyA majorTempo110 bpm
0:00/0:00
// The Crunge — Led Zeppelin
// 110 bpm, 9/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (9/8 at bar 1, 4/4 at bar 9, 9/8 at bar 12, 4/4 at bar 13, ...) are rendered on a constant 9/8 grid of one bar per cycle
// note: Full arrangement: all 81 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/4.5)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · "Guitar 1"
const electric_guitar_clean = note(`<
  ~@5 A@4 B C D E F@2 G H I J K@8 L M N O P Q@2 R@2 S T@2 U@6 V W X@2 Y Z AA AB@2 AC@2 AD AE@4 AF@18 AG ~
>`.pickRestart({
  A: "[~@4 [g5,b5,e6]!2 ~ [g5,b5,e6] [a5,c#6,f#6] [g5,b5,e6] ~@3 [g5,b5,e6] ~@5 [g5,b5,e6]!2 ~@2 [g5,b5,e6]@3 ~@2 [g5,b5,e6]!2 ~ [g5,b5,e6] [a5,c#6,f#6] [g5,b5,e6] ~@3 [g5,b5,e6] ~@5 [g5,b5,e6]!2 ~@2 [g5,b5,e6]@3 ~@2 [g5,b5,e6]!2 ~ [g5,b5,e6] [a5,c#6,f#6] [g5,b5,e6] ~@3 [g5,b5,e6] ~@5 [g5,b5,e6]!2 ~@2 [g5,b5,e6]@3 ~@2 [g5,b5,e6]!2 ~ [g5,b5,e6] [a5,c#6,f#6] [g5,b5,e6] ~@3 [g5,b5,e6] ~@3 [g5,b5,e6] ~ [g5,b5,e6] ~@3 [g5,b5,e6]]/4", // Em F#m Em F#m Em F#m Em F#m …
  B: "[g5,b5,e6] ~@4 [c5,e5,a5]@4 [c5,e5,a5] ~ [c5,e5,a5] ~@5 [b4,d#5,g#5] ~@2 [c5,e5,a5] ~@3", // Em Am G#m Am
  C: "~@4 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@2 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 ~ [c#5,f#5,a#5]@7 ~", // G#m A G#m A F#
  D: "[c#5,e5,a5]@4 [c#5,e5,a5]!2 ~@6 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 ~@5 [b4,d#5,g#5]", // A G#m A G#m
  E: "~ [c#5,e5,a5]@3 [b4,d#5,g#5] ~@6 [a#4,d5,g5]@4 ~ [a#4,d#5,g5]@5 [c5,e5,a5]@3", // A G#m Gm D# Am
  F: "[~ [c5,e5,a5] ~ [c5,e5,a5] ~@5 [b4,d#5,g#5] ~@2 [c5,e5,a5]@3 ~@5 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@2 [b4,d#5,g#5]@3 [c#5,e5,a5]!2 ~@2 [c#5,f#5,a#5]@7 ~ [c#5,e5,a5]@4 [c#5,e5,a5] [c#5,e5,a5]@3]/2", // Am G#m Am G#m A G#m A F# …
  G: "~@4 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 ~@5 [b4,d#5,g#5] ~ [c#5,e5,a5]@3 [b4,d#5,g#5]@3 ~", // G#m A G#m A G#m
  H: "~@3 [a#4,d#5,g5]@5 [b4,d#5,g#5]@5 [c5,e5,a5]@4 [c5,e5,a5] ~ [c5,e5,a5] ~@4", // D# G#m Am
  I: "~ [b4,d#5,g#5] ~@2 [c5,e5,a5] ~@7 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@2 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 ~", // G#m Am G#m A G#m A
  J: "[c#5,f#5,a#5]@7 ~ [c5,e5,a5]@4 [c5,e5,a5]!2 ~@5 [b4,d#5,g#5] ~ [c5,e5,a5]@3", // F# Am G#m Am
  K: "[~@7 [b4,d#5,g#5] ~ [c#5,e5,a5]@3 [b4,d#5,g#5] ~@2 [c#5,e5,a5]!2 [g5,b5,e6] ~ [g5,b5,e6]!2 [a5,c#6,f#6] ~ [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6] ~ [g#5,b5,e6]!2 [a5,c#6,f#6] ~ [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6] ~ [g#5,b5,e6]!2 [a5,c#6,f#6] ~ [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6] ~ [g#5,b5,e6]!2 [a5,c#6,f#6] ~ [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6] ~ [g#5,b5,e6]!2 [a5,c#6,f#6] ~ [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6] ~ [g#5,b5,e6]!2 [a5,c#6,f#6] ~ [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6] ~ [g#5,b5,e6]!2 [a5,c#6,f#6] ~ [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6] ~ [g#5,b5,e6]!2 [a5,c#6,f#6] ~ [g#5,b5,e6]]/8", // G#m A G#m A Em F#m E F#m …
  L: "~@3 [g#5,b5,e6]!2 ~@2 [g#5,b5,e6]!2 ~@3 [g#5,b5,e6]@3 ~ [g#5,b5,e6] ~@2 [c5,e5,a5]@4 [c5,e5,a5]", // E Am
  M: "[c5,e5,a5] ~@6 [b4,d#5,g#5] ~ [c5,e5,a5] ~@7 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 [b4,d#5,g#5]", // Am G#m Am G#m A G#m
  N: "~ [c#5,e5,a5]@3 ~ [c#5,f#5,a#5]@7 ~ [c#5,e5,a5]@4 [c#5,e5,a5] ~ [c#5,e5,a5] ~@4", // A F# A
  O: "~ [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 ~@5 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@2 [b4,d#5,g#5] ~@6", // G#m A G#m A G#m
  P: "[a#4,d5,g5]@4 ~ [a#4,d#5,g5]@5 ~ [c5,e5,a5]@4 [c5,e5,a5]!2 ~@6 [b4,d#5,g#5]", // Gm D# Am G#m
  Q: "[~ [c5,e5,a5]@3 ~@5 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 [b4,d#5,g#5]@2 [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,f#5,a#5]@7 ~ [c#5,e5,a5]@4 [c#5,e5,a5] ~ [c#5,e5,a5]@3 ~@3 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 ~]/2", // Am G#m A G#m A F# A G#m …
  R: "[~@3 [c5,e5,a5] [b4,d#5,g#5] ~@2 [c5,e5,a5]@2 [b4,d#5,g#5]@3 ~@4 [a#4,d#5,g5]@5 [b4,d#5,g#5]@5 ~ [c5,e5,a5]@4 [c5,e5,a5]!2 ~@6 [b4,d#5,g#5] ~ [c5,e5,a5] ~@6]/2", // Am G#m Am G#m D# G#m Am G#m …
  S: "~ [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 [b4,d#5,g#5] ~ [c#5,e5,a5]@3 ~ [c#5,f#5,a#5]@7 ~ [c5,e5,a5]@3", // G#m A G#m A F# Am
  T: "[~ [c5,e5,a5] ~ [c5,e5,a5] ~@4 [b4,d#5,g#5] ~@2 [c5,e5,a5]@3 ~@6 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@2 [b4,d#5,g#5] ~@2 [c#5,e5,a5]!2 ~ [g5,b5,e6]!3 ~ [a5,c#6,f#6] [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]@3]/2", // Am G#m Am G#m A G#m A Em …
  U: "~ [g#5,b5,e6]@3 ~@3 [g#5,b5,e6]!3 ~ [a5,c#6,f#6] [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]@3", // E F#m E
  V: "~ [g#5,b5,e6]@3 ~@3 [g#5,b5,e6]!3 ~ [a5,c#6,f#6] [g#5,b5,e6]@3 ~ [g#5,b5,e6]!2 ~@2 [g#5,b5,e6]!2 ~@2", // E F#m E
  W: "~ [g#5,b5,e6]@3 ~ [g#5,b5,e6] ~@2 [c5,e5,a5]@4 [c5,e5,a5]!2 ~@6 [b4,d#5,g#5] ~@2 [c5,e5,a5]", // E Am G#m Am
  X: "[~@7 [b4,d#5,g#5] ~ [c#5,e5,a5]@3 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 ~ [c#5,f#5,a#5]@7 ~ [c#5,e5,a5]@4 [c#5,e5,a5]!2 ~@6 [b4,d#5,g#5] ~ [c#5,e5,a5]@3 ~@4]/2", // G#m A G#m A F# A G#m A
  Y: "~ [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 [b4,d#5,g#5] ~@5 [a#4,d5,g5]@4 ~@2 [a#4,d#5,g5]@5", // G#m A G#m Gm D#
  Z: "[c5,e5,a5]@4 [c5,e5,a5]!2 ~@6 [b4,d#5,g#5] ~@2 [c5,e5,a5]@3 ~@5 [b4,d#5,g#5]", // Am G#m Am G#m
  AA: "~ [c#5,e5,a5]@3 [b4,d#5,g#5]@3 [c#5,e5,a5]!2 ~@2 [c#5,f#5,a#5]@7 ~ [c#5,e5,a5]@4 [c#5,e5,a5]", // A G#m A F# A
  AB: "[[c#5,e5,a5]@3 ~@4 [b4,d#5,g#5] ~ [c#5,e5,a5]@3 ~@4 [c5,e5,a5] [b4,d#5,g#5] ~@2 [c5,e5,a5]@3 [b4,d#5,g#5]@3 ~@3 [a#4,d#5,g5]@5 ~ [b4,d#5,g#5]@5 [c5,e5,a5]@4 [c5,e5,a5]!2 ~@2]/2", // A G#m A Am G#m Am G#m D# …
  AC: "[~@4 [b4,d#5,g#5] ~@2 [c5,e5,a5] ~@7 [b4,d#5,g#5] ~ [c#5,e5,a5]@3 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 ~ [c#5,f#5,a#5]@7 ~ [c5,e5,a5]@4 [c5,e5,a5]!2 ~@4 [b4,d#5,g#5] ~@2]/2", // G#m Am G#m A G#m A F# Am …
  AD: "[c5,e5,a5]@3 ~@6 [b4,d#5,g#5] ~@2 [c#5,e5,a5]@3 [b4,d#5,g#5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] [g5,b5,e6]!2 ~ [g5,b5,e6]", // Am G#m A G#m A Em
  AE: "[a5,c#6,f#6] [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@3 [g#5,b5,e6]@3 ~ [g#5,b5,e6]@3 ~@2 [g#5,b5,e6]!2 ~ [g#5,b5,e6]", // F#m E
  AF: "[a5,c#6,f#6] [g5,b5,e6] ~@3 [g5,b5,e6] ~ [g5,b5,e6] ~@3 b5@2 [b5,e6] ~ b5@2 [b5,e6]@3 [g5,b5,e6]!2 ~ [g5,b5,e6]", // F#m Em E5 Em
  AG: "[a5,c#6,f#6] [g5,b5,e6] ~@3 [a5,c#6,f#6] ~ [g5,b5,e6] ~@16", // F#m Em F#m Em
})).s("gm_electric_guitar_clean").gain(0.32)

// other · accordion · "Keyboard 1"
const accordion = note("<~@23 A@5 ~@14 B@5 ~@18 C@14 D ~>".pickRestart({
  A: "[~@21 a4 ~ b4@4 a4 e4 ~@2 e4@2 d4@3 e4@3 f#4@2 a4 ~@3 a4 ~ b4@4 a4 e4 ~@2 e4@2 d4@3 e4@3 f#4@2 a4 ~@3 a4 ~ b4@4 a4 e4 ~@2 e4@2 d4@3 e4@3 f#4@2 a4 ~@3 a4 ~ b4@4 a4 e4 ~@2 e4@2 d4@3 e4@3 f#4@2 a4 ~@6]/5",
  B: "[~@11 a4 b4@4 a4 e4 ~@2 e4@3 d4@2 e4@3 f#4@3 e4 ~@3 a4 b4@4 a4 e4 ~@2 e4@3 d4@2 e4@3 f#4@3 a4 ~@3 a4 b4@4 a4 e4 ~@2 e4@3 d4@2 e4@3 f#4@3 a4 ~@3 a4 b4@4 a4 e4 ~@2 e4@3 d4@2 e4@3 f#4@3 a4 ~@16]/5",
  C: "e4 f#4@4 d4 ~ b3@2 b3@3 d4@3 e4@2 d4@3 e4 ~@3", D: "e4 f#4@4 d4 ~ b3@2 b3@3 d4@3 e4@2 e4 ~@6",
})).s("gm_accordion").gain(0.56)

// other · accordion · "Keyboard 2"
const accordion_2 = note("<~@23 A@5 ~@3 B@2 ~ C@2 D ~@5 E@5 ~@2 F G H ~ I J ~@6 K@18 L ~>".pickRestart({
  A: "[~@21 e4 ~ f#4@4 e4 c#4 ~@2 c#4@2 b3@3 c#4@3 d4@2 e4 ~@3 e4 ~ f#4@4 e4 c#4 ~@2 c#4@2 b3@3 c#4@3 d4@2 e4 ~@3 e4 ~ f#4@4 e4 c#4 ~@2 c#4@2 b3@3 c#4@3 d4@2 e4 ~@3 e4 ~ f#4@4 e4 c#4 ~@2 c#4@2 b3@3 c#4@3 d4@2 e4 ~@6]/5",
  B: "[f4 f#4@4 g#4 ~ a4@4 c#5 d5@8 ~ b4 ~ a4@2 a4@3 b4@3 f4 e4 d4 ~@2 d4 ~@2 b3 ~ b3 ~@6]/2",
  C: "[~@16 f4 f#4@4 g#4 ~ a4@4 c#5 d5@8 ~ b4 ~ a4@2 a4@3 b4@3 f4]/2", D: "e4 d4 ~@2 d4 ~@2 b3 ~@2 f4 f#4 ~@12",
  E: "[~@11 e4 f#4@4 e4 c#4 ~@2 c#4@3 b3@2 c#4@3 d4@3 c#4 ~@3 e4 f#4@4 e4 c#4 ~@2 c#4@3 b3@2 c#4@3 d4@3 e4 ~@3 e4 f#4@4 e4 c#4 ~@2 c#4@3 b3@2 c#4@3 d4@3 e4 ~@3 e4 f#4@4 e4 c#4 ~@2 c#4@3 b3@2 c#4@3 d4@3 e4 ~@16]/5",
  F: "~@13 f4 ~ f#4@4 g#4 a4@4", G: "c#5 d5@8 ~@2 b4 a4@3 a4@2 b4@3 f4 e4 ~ d4", H: "~ d4 ~@2 b3 ~@2 d4 ~@16",
  I: "~@5 f4 ~ f#4@4 g#4 a4@4 c#5 d5@7", J: "~@3 b4 a4@3 a4@2 b4@3 f4 e4 ~ d4 ~ d4 ~@2 b3 ~@2 b3",
  K: "c#4 d4@4 b3 ~ g3@2 g3@3 b3@3 c#4@2 b3@3 c#4 ~@3", L: "c#4 d4@4 b3 ~ g3@2 g3@3 b3@3 c#4@2 c#4 ~@6",
})).s("gm_accordion").gain(0.56)

// other · accordion · "Keyboard 3"
const accordion_3 = note("<~@23 A@5 ~@3 B@2 ~ C@2 D ~@5 E@5 ~@2 F G H ~ I J ~@6 K@18 L ~>".pickRestart({
  A: "[~@21 c#4 ~ d4@4 c#4 a3 ~@2 a3@2 g3@3 a3@3 b3@2 c#4 ~@3 c#4 ~ d4@4 c#4 a3 ~@2 a3@2 g3@3 a3@3 b3@2 c#4 ~@3 c#4 ~ d4@4 c#4 a3 ~@2 a3@2 g3@3 a3@3 b3@2 c#4 ~@3 c#4 ~ d4@4 c#4 a3 ~@2 a3@2 g3@3 a3@3 b3@2 c#4 ~@6]/5",
  B: "[f3 f#3@4 g#3 ~ a3@4 c#4 d4@8 ~ b3 ~ a3@2 a3@3 b3@3 f3 e3 d3 ~@2 d3 ~@2 b2 ~ b2 ~@6]/2",
  C: "[~@16 f3 f#3@4 g#3 ~ a3@4 c#4 d4@8 ~ b3 ~ a3@2 a3@3 b3@3 f3]/2", D: "e3 d3 ~@2 d3 ~@2 b2 ~@2 f3 f#3 ~@12",
  E: "[~@11 c#4 d4@4 c#4 a3 ~@2 a3@3 g3@2 a3@3 b3@3 a3 ~@3 c#4 d4@4 c#4 a3 ~@2 a3@3 g3@2 a3@3 b3@3 a3 ~@3 c#4 d4@4 c#4 a3 ~@2 a3@3 g3@2 a3@3 b3@3 a3 ~@3 c#4 d4@4 c#4 a3 ~@2 a3@3 g3@2 a3@3 b3@3 a3 ~@16]/5",
  F: "~@13 f3 ~ f#3@4 g#3 a3@4", G: "c#4 d4@8 ~@2 b3 a3@3 a3@2 b3@3 f3 e3 ~ d3", H: "~ d3 ~@2 b2 ~@2 d3 ~@16",
  I: "~@5 f3 ~ f#3@4 g#3 a3@4 c#4 d4@7", J: "~@3 b3 a3@3 a3@2 b3@3 f3 e3 ~ d3 ~ d3 ~@2 b2 ~@2 b2",
  K: "a4 b4@4 g4 ~ e4@2 e4@3 g4@3 a4@2 g4@3 a4 ~@3", L: "a4 b4@4 g4 ~ e4@2 e4@3 g4@3 a4@2 a4 ~@6",
})).s("gm_accordion").gain(0.56)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@3 A@5 B C D E@2 F@2 G H I J K L@7 M N@2 O P@3 Q@2 R S@2 T@6 U@2 V@2 W X@2 Y@2 G Z@2 AA@7 AB AA AB AA AB AA@2 AB@2
  AA@2 AB@2 AA AB AC ~
>`.pickRestart({
  A: "~@4 c2 b1 ~ a#1 a1!2 ~@3 a2 ~@5 g2 ~ a2 ~ a2", B: "~@4 c2 b1 ~ a#1 a1!2 ~@3 a2 ~@5 g2@3 ~ a2",
  C: "~@5 d2@4 ~@8 c2@3 d2 ~@3", D: "~@4 c2@3 d2@2 c2@3 ~@4 d#2@7 ~",
  E: "[d2@4 ~@8 c2@3 d2 ~@7 c2@2 d2@3 c2@3 ~@4 c2@5 c#2@5 d2@3]/2",
  F: "[~@9 c2@3 d2 ~@7 c2@3 d2@2 c2@3 ~@4 d#2@7 ~ d2@4 ~@4]/2", G: "~@4 c2@3 d2 ~@7 c2@2 d2@3 c2@3 d2",
  H: "~@3 c2@5 c#2@5 d2@4 ~@7", I: "~ c2@3 d2 ~@7 c2@3 d2@2 c2@3 d2 ~@3", J: "d#2@7 ~ d2@4 ~@8 c2@3 d2",
  K: "~@7 c2@2 d2@3 c2@3 d2 ~ c2 ~ b1 a#1 a1 ~ a1", L: "~@3 a2 ~@4 g2 ~@2 a2!2 ~@4 c2 ~ b1 a#1 a1 ~ a1",
  M: "~@3 a2!2 ~@3 g2 ~@2 a2!3 ~@5 d2@4 ~", N: "[~@7 c2@2 d2 ~@7 c2@3 d2@3 c2@3 ~@3 d#2@7 ~ d2@4 ~@7]/2",
  O: "~ c2@3 d2 ~@7 c2@3 d2@2 c2@3 ~@4",
  P: "[c2@5 c#2@5 ~ d2@4 ~@8 c2@2 d2 ~@7 c2@3 d2@3 c2@3 ~@3 d#2@7 ~ d2@4 ~@8 c2@3 d2 ~@3]/3",
  Q: "[~@3 d2 c2@3 d2@2 c2@3 d2 ~@3 c2@5 c#2@5 ~ d2@4 ~@8 c2@2 d2 ~@6]/2", R: "~ c2@3 d2@3 c2@2 d2 ~@3 d#2@7 ~ d2@3",
  S: "[~@9 c2@3 d2 ~@7 c2@3 d2@2 c2@3 d2 ~@2 c2 b1 a#1 ~ a1!2 ~@3 a2 ~@4 g2 ~@2]/2",
  T: "a2!2 ~@5 c2 b1 a#1 ~ a1!2 ~@3 a2 ~@4 g2 ~@2",
  U: "[a2!2 ~@5 c2 b1 a#1 ~ a1!2 ~@3 a2!2 ~@3 g2 ~ g2@2 a2@3 ~@4 d2@4 ~@8 c2@3 d2]/2",
  V: "[~@7 c2@2 d2@3 c2@3 ~@4 d#2@7 ~ d2@4 ~@8 c2@2 d2 ~@6]/2", W: "~ c2@3 d2@3 c2@3 ~@3 c2@5 ~ c#2@5",
  X: "[d2@4 ~@8 c2@3 d2 ~@7 c2@2 d2@3 c2@3 ~@4 d#2@7 ~ d2@4 ~]/2",
  Y: "[~@7 c2@2 d2 ~@6 d2 c2@3 d2@3 c2@2 d2 ~@3 c2@5 ~ c#2@5 d2@4 ~@4]/2",
  Z: "[~@3 d#2@7 ~ d2@4 ~@8 c2@2 d2 ~@7 c2@3 d2@3 c2@2 d2 ~@2 c2 b1 ~ a#1]/2",
  AA: "a1!2 ~@3 a2 ~@5 g2 ~ a2 ~ a2 ~@4 c2 b1 ~ a#1", AB: "a1!2 ~@3 a2 ~@5 g2 ~ a2 ~ a2 ~@4 f#1 g1 ~ g#1",
  AC: "a1!2 ~@3 a2 ~ a2 ~@3 g2 ~@3 a2@3 ~@6",
})).s("gm_electric_bass_finger").gain(0.56)

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

// drums · hihat
const hihat = s("hh").struct(`<
  A B@8 C D E F G H I J K L M N@6 O P Q R S T U V W I X Y Z AA@6 AB Y AC AD AE E AF V AG AH AI AJ AK@22 AL ~
>`.pickRestart({
  A: "~@19 x ~@4", B: "~@4 x!2 ~@2 x!2 ~@9 x ~@4", C: "~@5 x ~@3 x ~@6 x!2 ~@2 x ~@3",
  D: "~@3 x!2 ~@2 x ~ x ~@2 x ~@3 x ~@7", E: "x ~@3 x ~@6 x!2 ~@2 x ~@5 x ~ x",
  F: "~ x ~@2 x ~@2 x ~@3 x ~@4 x ~@4 x ~@2", G: "~ x ~@6 x!2 ~@2 x ~@6 x!2 ~@2 x",
  H: "~ x ~@2 x ~@3 x ~@7 x ~@3 x ~@3", I: "~@3 x ~@3 x ~@5 x ~@3 x ~@6", J: "~@3 x ~@4 x ~@4 x ~@3 x ~@6",
  K: "x ~@3 x ~@6 x!2 ~@2 x ~ x ~@2 x ~@3", L: "x ~@7 x ~@3 x ~@6 x ~@3 x",
  M: "~@5 x ~ x ~ x ~@2 x ~@2 x ~ x ~ x!3 ~@2", N: "~@8 x ~@4 x ~@3 x ~ x ~ x ~@2", O: "~@8 x ~@4 x ~@3 x ~ x ~ x ~ x",
  P: "~@8 x ~@10 x ~@3 x", Q: "~@5 x ~ x ~ x ~@6 x!2 ~@2 x ~@2 x", R: "~ x ~@3 x ~@7 x ~@3 x ~@6",
  S: "x!2 ~@2 x ~@6 x!2 ~@2 x ~ x ~@2 x ~@3", T: "x ~@4 x ~@5 x ~@3 x ~@5 x ~ x",
  U: "~ x ~@6 x!2 ~@2 x ~@2 x ~ x ~@3 x ~@2", V: "~@5 x ~@3 x ~@6 x ~@3 x ~@3", W: "~@3 x ~@3 x ~@8 x ~@4 x ~@2",
  X: "x!2 ~@2 x ~@2 x ~ x ~@3 x ~@7 x ~@2", Y: "~ x ~@6 x ~@3 x ~@6 x!2 ~@2 x", Z: "~ x ~@2 x ~@2 x!3 ~ x ~@9 x ~@2",
  AA: "~@3 x ~@3 x!2 ~@2 x ~@9 x ~@2", AB: "~@3 x ~@3 x!2 ~@2 x!2 ~@8 x ~ x", AC: "~@5 x ~ x ~ x ~@2 x ~@2 x ~@3 x ~@4",
  AD: "~@3 x ~@3 x ~@5 x ~ x ~ x ~@6", AE: "x!2 ~@2 x ~@2 x ~ x ~@3 x ~@5 x ~@4",
  AF: "~ x ~@2 x ~@2 x ~@3 x ~@7 x ~@3 x", AG: "~@5 x ~@5 x ~@4 x ~@3 x ~@3",
  AH: "~@3 x ~@3 x ~@5 x ~ x ~ x ~@2 x ~@2 x", AI: "~@3 x ~@7 x ~@3 x ~@5 x ~@2",
  AJ: "~ x ~@6 x!2 ~@2 x ~@2 x ~ x ~@2 x!2 ~ x", AK: "x ~@10 x ~@4 x ~@3 x!2 ~@2", AL: "x ~@10 x ~@12",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A B@6 ~@12 C D@6 ~@11 E F@23 ~>".pickRestart({
  A: "~@17 x ~@3 x ~@2", B: "~@7 x", C: "~@7 x ~@3 x ~@12", D: "~@11 x ~@12", E: "~@5 x", F: "x",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct("<A B@7 C D C@9 E F@6 G H C@10 I J@6 C@11 K L@22 M ~>".pickRestart({
  A: "~@7 x", B: "x ~@2 x ~ x ~@5 x ~ x ~@2 x ~@4 x ~@2", C: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
  D: "~@5 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", E: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@7",
  F: "x ~@2 x ~ x ~@5 x ~ x ~@2 x ~@2 x ~@4", G: "x ~@2 x ~ x ~@5 x ~ x ~@2 x ~@2 x ~ x ~@2",
  H: "x ~@2 x ~ x ~@2 x ~@2 x ~@7 x ~ x ~@2", I: "x ~@2 x ~ x ~@7 x ~@2 x ~@2 x ~@4",
  J: "x ~@2 x ~ x ~@2 x ~@4 x ~@2 x ~@2 x ~@4", K: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@4",
  L: "~@3 x ~ x ~@2 x ~@4 x ~@2 x ~@2 x ~ x ~@2", M: "~@3 x ~ x ~@2 x ~@4 x ~@10",
})).gain(0.56)

stack(electric_guitar_clean, accordion, accordion_2, accordion_3, bass, snare, hihat, mid_tom, ride)

More by Led Zeppelin