Strudelify

Celebration Day

Led Zeppelin

KeyD majorTempo120 bpm
0:00/0:00
// Celebration Day — Led Zeppelin
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Guitar 1" named as a guitar, played on electric guitar clean (its viola patch is not one); ch 2 "Guitar 2" named as a guitar, played on electric guitar clean (its viola patch is not one)
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "Guitar 1"
const electric_guitar_clean = note(`<
  A B C D E F G F G F G F G F G F G F G F G F G F G H I J K L M N ~ F G F G F G F G F G F G F G F G O P Q K R M S ~@56
>`.pickRestart({
  A: "[c5,e5,a#5] [d5,f5,b5]!7 [c5,e5,a#5] [d5,f5,b5]!7", // C7 Bdim C7 Bdim
  B: "[c5,e5,a#5] [d5,f5,b5]!3 [c5,e5,a#5] [d5,f5,b5]!3 [c5,e5,a#5] [d5,f5,b5]!4 [d5,f#5,c6]!3", // C7 Bdim C7 Bdim C7 Bdim D7
  C: "[d#5,f#5,c6] [e5,g5,c#6]!15", // Cdim C#dim
  D: "[a3,e4]@2 [f#4,e5]@2 [a3,e4] [f#4,c#5]@2 [a3,e4] [f#4,c#5] [e4,b4] [a3,e4] [e4,b4] ~ [e4,b4] [f#4,c#5] [e4,b4]", // A5 F#7 A5 F#5 A5 F#5 E5 A5 …
  E: "[a3,e4]@2 [f#4,e5]@2 [a3,e4] [f#4,c#5]@2 [a3,e4] [f#4,c#5] [e4,b4] [a3,e4] [d4,a4] [c4,g4] [a3,e4] [d4,a4] [c4,g4]", // A5 F#7 A5 F#5 A5 F#5 E5 A5 …
  F: "[a3,e4]@2 [b3,f#4]@2 [a3,e4]@2 [a4,e5]@9 ~", // A5 B5 A5
  G: "~@2 [a4,e5]@2 [f#4,c#5]@2 [a3,e4]!2 [g4,d5] [f#4,c#5] [a3,e4] [f#4,c#5] [e4,b4] [a3,e4] [e4,b4]@2", // A5 F#5 A5 G5 F#5 A5 F#5 E5 …
  H: "[c4,g4,a#4]@3 ~ [c4,g4,a#4]@3 [c4,g4,a#4] [c4,g4,a#4]@2 [c4,g4]@2 [c4,g4,a#4]@3 ~", // C7 C5 C7
  I: "[g4,d5,f5]@11 ~ [g4,d5,g5]@3 ~", J: "[a#3,f4,a#4]@11 ~ [a#3,f4,a#4]@3 ~", K: "[f4,c5,f5]@11 ~@5",
  L: "[c4,g4,a#4]@11 ~ [c4,g4,c5]@3 ~", M: "[g4,d5,g5]@11 ~ [g4,d5,g5]@3 ~", N: "[a#3,f4,a#4]@7 ~ d5@7 ~",
  O: "[c4,g4]@3 ~ [c4,e4,a#4]@3 [c4,e4,a#4] [c4,e4,a#4]@2 [c4,e4,a#4]@2 [c4,g4,c5]@4", // C5 C7 C5
  P: "[g4,d5,g5]@11 ~ [g4,d5,g5]@4", Q: "[a#3,f4,a#4]@11 ~ [a#3,f4,a#4]@4", R: "[c4,g4,c5]@11 ~ [c4,g4,c5]@4",
  S: "[a#3,f4,a#4]@11 ~@5", // A#5
})).s("gm_electric_guitar_clean").gain(0.56)

// chords · electric guitar clean · "Guitar 2"
const electric_guitar_clean_2 = note(`<
  A B C ~@2 D E D E D E D E D E D F D F D F D F D F G H I J K L M ~ D E D E D E D E D E D E D E D E N O P J Q L R ~@56
>`.pickRestart({
  A: "[c5,e5,a#5] [d5,f5,b5]!7 [c5,e5,a#5] [d5,f5,b5]!7", // C7 Bdim C7 Bdim
  B: "[c5,e5,a#5] [d5,f5,b5]!3 [c5,e5,a#5] [d5,f5,b5]!3 [c5,e5,a#5] [d5,f5,b5]!4 [d5,f#5,c6]!3", // C7 Bdim C7 Bdim C7 Bdim D7
  C: "[d#5,f#5,c6] [e5,g5,c#6]!15", D: "~@10 [e5,g5,c#6]!6", E: "[e5,g5,c#6]!2 [e5,g5,c#6]@2 ~@12",
  F: "[e5,g5,c#6]@3 ~@13", G: "[c4,g4,a#4]@3 ~ [c4,g4,a#4]@3 [c4,g4,a#4] [c4,g4,a#4]@2 [c4,g4]@2 [c4,g4,a#4]@3 ~",
  H: "[g4,d5,f5]@11 ~ [g4,d5,g5]@3 ~", I: "[a#3,f4,a#4]@11 ~ [a#3,f4,a#4]@3 ~", J: "[f4,c5,f5]@11 ~@5",
  K: "[c4,g4,a#4]@11 ~ [c4,g4,c5]@3 ~", L: "[g4,d5,g5]@11 ~ [g4,d5,g5]@3 ~", M: "[a#3,f4,a#4]@7 ~ d5@7 ~",
  N: "[c4,g4]@3 ~ [c4,e4,a#4]@3 [c4,e4,a#4] [c4,e4,a#4]@2 [c4,e4,a#4]@2 [c4,g4,c5]@4", // C5 C7 C5
  O: "[g4,d5,g5]@11 ~ [g4,d5,g5]@4", P: "[a#3,f4,a#4]@11 ~ [a#3,f4,a#4]@4", Q: "[c4,g4,c5]@11 ~ [c4,g4,c5]@4",
  R: "[a#3,f4,a#4]@11 ~@5", // A#5
})).s("gm_electric_guitar_clean").gain(0.56)

// chords · electric guitar clean · "Guitar 3"
const electric_guitar_clean_3 = note(`<
  ~@14 A ~ A ~ A ~ A ~ A ~ A ~@6 B C D E D E D E D E D E D E D E D E ~@7 F D G D G D G D ~ D E D E D E D E D E D E D E D
  E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D
>`.pickRestart({
  A: "~@2 [g4,d5]@2 ~@2 [g4,d5]@9 ~", B: "~@15 b4",
  C: "c5 [c5,d#5,a5] ~ [c5,d#5,a5] ~ [c5,d#5,a5]@2 a4 b4 [b4,d5,g#5] ~ [b4,d5,g#5] ~ [b4,d5,g#5]@2 a3", // Adim G#dim
  D: "a3@2 [a3,c4]@2 a3@2 a4@9 ~, ~@6 g4 ~@9", E: "g4@2 c#4@2 a3@2 a3@9 ~, ~@6 g3 ~@9",
  F: "[c5,d#5,a5]!2 ~ [c5,d#5,a5] ~ [c5,d#5,a5]@2 [c5,d#5,a5] [b4,d5,g#5]!2 ~ [b4,d5,g#5] ~ [b4,d5,g#5]@2 c#5", // Adim G#dim
  G: "g4@2 c4@2 a3@2 a3@9 ~, ~@6 g3 ~@9",
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · electric guitar clean · "Guitar 3" · soft notes
const electric_guitar_clean_4 = note("<A B C D E F G H G H G H I ~@99>".pickRestart({
  A: "[c5,e5,a#5] [d5,f5,b5]!7 [c5,e5,a#5] [d5,f5,b5]!7", // C7 Bdim C7 Bdim
  B: "[c5,e5,a#5] [d5,f5,b5]!3 [c5,e5,a#5] [d5,f5,b5]!3 [c5,e5,a#5] [d5,f5,b5]!4 [d5,f#5,c6]!3", // C7 Bdim C7 Bdim C7 Bdim D7
  C: "[d#5,f#5,c6] [e5,g5,c#6]!15", // Cdim C#dim
  D: "[a3,e4]@2 [f#4,e5]@2 [a3,e4] [f#4,c#5]@2 [a3,e4] [f#4,c#5] [e4,b4] [a3,e4] [e4,b4] ~ [e4,b4] [f#4,c#5] [e4,b4]", // A5 F#7 A5 F#5 A5 F#5 E5 A5 …
  E: "[a3,e4]@2 [f#4,e5]@2 [a3,e4] [f#4,c#5]@2 [a3,e4] [f#4,c#5] [e4,b4] [a3,e4] [d4,a4] [c4,g4] [a3,e4] [d4,a4] [c4,g4]", // A5 F#7 A5 F#5 A5 F#5 E5 A5 …
  F: "[a3,e4]@2 [b3,f#4]@2 [a3,e4]@2 [a4,e5]@9 ~", // A5 B5 A5
  G: "~@2 [a4,a5,e6]@2 [f#4,f#5,c#6]@2 [a3,a4,e5]!2 [g4,g5,c#6] [f#4,f#5,b5] [a3,a4,e5] [f#4,f#5,c#6] [e4,e5,b5] [a3,a4,e5] [e4,e5,b5]@2", // A5 F#5 A5 Gdim B5 A5 F#5 E5 …
  H: "[a3,e4,e5]@2 [b3,f#4,f#5]@2 [a3,e4,e5]@2 [a4,e5,e6]@9 ~", // A5 B5 A5
  I: "~@2 [a4,a5,e6]@2 [f#4,f#5,c#6]@2 [a3,a4,e5]!2 [g4,g5,d6] [f#4,f#5,c#6] [a3,a4,e5] [f#4,f#5,c#6] [e4,e5,b5] [a3,a4,e5] [e4,e5,b5]@2", // A5 F#5 A5 G5 F#5 A5 F#5 E5 …
})).s("gm_electric_guitar_clean").gain(0.16)

// chords · electric guitar clean · "Guitar 4"
const electric_guitar_clean_5 = note(`<
  A B C ~@2 D E D E D E D F ~ G ~ G H I J K L M L M N@2 O@2 P@2 Q@8 ~ G ~@5 G ~ R S@2 T@2 U@3 V@8 W ~@5 X ~@6 Y G Y G
  ~@31
>`.pickRestart({
  A: "[c5,e5,a#5] [d5,f5,b5]!7 [c5,e5,a#5] [d5,f5,b5]!7", // C7 Bdim C7 Bdim
  B: "[c5,e5,a#5] [d5,f5,b5]!3 [c5,e5,a#5] [d5,f5,b5]!3 [c5,e5,a#5] [d5,f5,b5]!4 [d5,f#5,c6]!3", // C7 Bdim C7 Bdim C7 Bdim D7
  C: "[d#5,f#5,c6] [e5,g5,c#6]!15", D: "~@10 [e5,g5,c#6]!6", E: "[e4,a4,c#5] [a3,e4] ~@14",
  F: "[e5,g5,c#6]!2 [e5,g5,c#6]@2 ~@12", G: "~@2 [g4,d5]@2 ~@2 [g4,d5]@9 ~",
  H: "a3@2 a3!2 a3@2 [a3,a4]!2 [a3,a4,e5]@2 [a3,a4,e5]@2 [a3,a4,e5]!4", // A A5
  I: "[a3,a4,e5,g5]@2 [a3,a4,e5,a5]@2 a3@2 a3 [a3,a4,e5,a5] [a3,a4,e5,a5]@2 [a3,a4,e5,a5]@2 [a3,a4,e5,a5]!4", // A7 A5
  J: "[a3,a4,e5,a5]@2 [a3,a4,e5,a5]@2 [a3,a4,e5,a5]!2 [a3,a4,e5,a5]@2 [a3,a4,e5,a5]@2 [a3,a4,e5,a5]@2 [a3,a4,e5,a5]!4", // A5
  K: "[a3,a4,e5,a5]@2 [a3,a4,e5,a5]@2 [a3,a4,e5,a5]@3 [a3,a4,e5,a5] [a3,a4,e5,a5]@2 [a3,a4,e5,a5]@2 [a3,a4,e5,a5]!4", // A5
  L: "a3@2 [a3,c4]@2 a3@2 a4@9 ~, ~@6 g4 ~@9", M: "g4@2 c#4@2 a3@2 a3@9 ~, ~@6 g3 ~@9",
  N: "[[c4,g4]@3 ~ [c4,g4]@3 [c4,g4] e3@2 f3@2 [f#3,c#4]@2 [g3,d4]@4 [g3,d4]@2 [a3,e4]@3 [g3,d4] [g3,d4]@2 [g3,d4]@2 [c4,g4]!2 [a#3,f4]@2]/2", // C5 F#5 G5 A5 G5 C5 A#5
  O: "[[b3,f4]@2 [b3,f4]@2 [b3,g4]@2 [b3,f4]!2 [b3,f4]@2 [b3,f4]@2 [b3,g4]@2 [f3,c4]@4 [f3,c4]@2 [f3,c4]@2 [f3,c4]!2 [f3,c4]@2 [f3,c4]@2 [a#3,f4]@2 [a3,d4] [a#3,f4]]/2", // Bdim Em Bdim Em F5 A#5 D5 A#5
  P: "[[c4,g4]@2 [c4,g4]@2 [c4,a4]@2 c4!4 e3@2 [f#3,c#4]@2 [g3,d4]@4 [g3,d4]@2 [g3,e4]@2 [g3,d4]!2 [g3,d4]@2 [g3,d4]!2 [c4,g4]@2 [a#3,f4]@2]/2", // C5 F F#5 G5 C G5 C5 A#5
  Q: "[[b3,f4]@2 [b3,f4]@2 [b3,g4]@2 [b3,f4]!2 [b3,f4]@2 [b3,f4]@2 [b3,f4]@3 [f4,c5,g5]@8 [e4,b4,d5,f#5]@8 ~@83 [g4,d5]@2 ~@2 [g4,d5]@9 ~, ~@15 d#5@113]/8", // Bdim Em Bdim Fsus2 Bm G5
  R: "~@2 [a4,e5]@2 [f#4,c#5]@2 [g4,d5] ~ [d#4,a#4] [e4,b4] [f4,c5] [f#4,c#5] ~ [c4,g4]!2 ~", // A5 F#5 G5 D#5 E5 F5 F#5 C5
  S: "[[c4,g4]@3 ~ [c4,g4]@3 [c4,g4] e3@2 f3@2 [f#3,c4]@2 [g3,d4]@4 [g3,d4]@2 [g3,e4] ~ [g3,d4]!2 [g3,d4]@2 [g3,d4]@2 [c4,g4]!2 [a#3,f4]@2]/2", // C5 F#dim G5 C G5 C5 A#5
  T: "[[b3,f4]@2 [b3,f4]@2 [b3,g4] ~ [b3,f4]!2 [b3,f4]@2 [b3,f4]@2 [b3,g4]@2 [f3,c4]@4 [f3,c4]@2 [f3,d4] ~ [f3,c4]!2 [f3,c4]@2 [f3,c4]!2 [a#3,f4]@2 [a3,d4] [a#3,f4]]/2", // Bdim Em Bdim Em F5 Dm F5 A#5 …
  U: "[[c4,g4]@2 [c4,g4]@2 [c4,a4] ~ [c4,g4]!4 e3@2 [f#3,c#4]@2 [g3,d4]@4 [g3,d4]@2 [g3,e4]@2 [g3,d4]!2 [g3,d4]@2 [g3,d4]!2 [c4,g4]@2 [b3,f4]@4 [b3,f4]@2 [b3,g4]!2 [b3,f4]!3 ~ e4@2 [f4,d5]@2 [f4,c5]@2]/3", // C5 F C5 F#5 G5 C G5 C5 …
  V: "[[f4,a4,g5]@7 ~ [d#4,g#4,d5,f#5]@7 ~ [c4,g4]@3 ~ [c4,g4]@3 [c4,g4] e3@2 f3@2 [f#3,c4]@2 [g3,d4]@4 [g3,d4]@2 [g3,e4] ~ [g3,d4]!2 [g3,d4]@2 [g3,d4]@2 [c4,g4]!2 [a#3,f4]@2 [b3,f4]@2 [b3,f4]@2 [b3,g4] ~ [b3,f4]!2 [b3,f4]@2 [b3,f4]@2 [b3,g4]@2 [f3,c4]@4 [f3,c4]@2 [f3,d4] ~ [f3,c4]!2 [f3,c4]@2 [f3,c4]!2 [a#3,f4]@2 [a3,d4] [a#3,f4] [c4,g4]@2 [c4,g4]@2 [c4,a4] ~ [c4,g4]!4 e3@2 [f#3,c#4]@2 [g3,d4]@4 [g3,d4]@2 [g3,e4]@2 [g3,d4]!2 [g3,d4]@2 [g3,d4]!2 [c4,g4]@2 [b3,f4]@4 [b3,f4]@2 [b3,g4]!2 [b3,f4]!3 ~ e4@2 [f4,d5]@2 [f4,c5]@2, d#5]/8", // F G#7 C5 F#dim G5 C G5 C5 …
  W: "[f4,a4,g5]@7 ~ [d#4,g#4,d5,f#5]@7 ~", // F G#7
  X: "~@2 [a4,e5]@2 [f#4,c#5]@2 [g4,d5] ~ [g4,d5] [f#4,c#5] [e4,b4] [f#4,c#5] ~ [e4,b4] [c4,f4] [c#4,f#4]", // A5 F#5 G5 F#5 E5 F#5 E5 F5 …
  Y: "~@2 [a4,e5]@2 [f#4,c#5]@2 [a4,e5]@9 ~", // A5 F#5 A5
})).s("gm_electric_guitar_clean").gain(0.32)

// other · distortion guitar · "Guitar 5"
const distortion_guitar = note(`<
  ~@13 A B C B C B C B C B C B D@2 E@2 F@2 G@2 H@4 C B C B I J K L C B C B M@2 N@2 O@3 P ~@8 Q R S T C B C B U V W X C B
  C B Y Z AA@2 AB ~ AB ~ Y Z AA@2 Y Z AA@2 Y Z AA@2 Y Z AA@2 Y Z AA@2 Y Z@2
>`.pickRestart({
  A: "~@2 [a3,c4]@2 a3@2 a4@9 ~, ~@6 g4 ~@9", B: "g4@2 c#4@2 a3@2 a3@9 ~, ~@6 g3 ~@9",
  C: "a3@2 [a3,c4]@2 a3@2 a4@9 ~, ~@6 g4 ~@9", // Am
  D: "[[c4,g4]@3 ~ [c4,g4]@3 [c4,g4] e3@2 f3@2 [f#3,c#4]@2 [g3,d4]@4 [g3,d4]@2 [a3,e4]@3 [g3,d4] [g3,d4]@2 [g3,d4]@2 [c4,g4]!2 [a#3,f4]@2]/2", // C5 F#5 G5 A5 G5 C5 A#5
  E: "[[b3,f4]@2 [b3,f4]@2 [b3,g4]@2 [b3,f4]!2 [b3,f4]@2 [b3,f4]@2 [b3,g4]@2 [f3,c4]@4 [f3,c4]@2 [f3,c4]@2 [f3,c4]!2 [f3,c4]@2 [f3,c4]@2 [a#3,f4]@2 [a3,d4] [a#3,f4]]/2", // Bdim Em Bdim Em F5 A#5 D5 A#5
  F: "[[c4,g4]@2 [c4,g4]@2 [c4,a4]@2 c4!4 e3@2 [f#3,c#4]@2 [g3,d4]@4 [g3,d4]@2 [g3,e4]@2 [g3,d4]!2 [g3,d4]@2 [g3,d4]!2 [c4,g4]@2 [a#3,f4]@2]/2", // C5 F F#5 G5 C G5 C5 A#5
  G: "[[b3,f4]@2 [b3,f4]@2 [b3,g4]@2 [b3,f4]!2 [b3,f4]@2 [b3,f4]@2 [b3,g4]@3 [f3,c4]@8 [e3,b3]@8 ~]/2", // Bdim Em Bdim Em F5 E5
  H: "a3@2 a3!2 a3@2 a3!2 a3@2 a3@2 a3!4", I: "a3@2 a3@2 a3@3 ~ a3@2 a3@2 a3@2 a3!2",
  J: "a3!2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@3 ~", K: "a3@2 a3@2 a3@2 a3@2 a3@3 ~ a3!4", L: "a3@2 a3@2 a3@2 a3!2 a3@3 ~ a3!4",
  M: "[[c4,g4]@3 ~ [c4,g4]@3 [c4,g4] e3@2 f3@2 [f#3,c4]@2 [g3,d4]@4 [g3,d4]@2 [g3,e4] ~ [g3,d4]!2 [g3,d4]@2 [g3,d4]@2 [c4,g4]!2 [a#3,f4]@2]/2", // C5 F#dim G5 C G5 C5 A#5
  N: "[[b3,f4]@2 [b3,f4]@2 [b3,g4] ~ [b3,f4]!2 [b3,f4]@2 [b3,f4]@2 [b3,g4]@2 [f3,c4]@4 [f3,c4]@2 [f3,d4] ~ [f3,c4]!2 [f3,c4]@2 [f3,c4]!2 [a#3,f4]@2 [a3,d4] [a#3,f4]]/2", // Bdim Em Bdim Em F5 Dm F5 A#5 …
  O: "[[c4,g4]@2 [c4,g4]@2 [c4,a4] ~ [c4,g4]!4 e3@2 [f#3,c#4]@2 [g3,d4]@4 [g3,d4]@2 [g3,e4]@2 [g3,d4]!2 [g3,d4]@2 [g3,d4]!2 [c4,g4]@2 [b3,f4]@4 [b3,f4]@2 [b3,g4]!2 [b3,f4]!3 ~ e3@2 [f3,d4]@2 [f3,c4]@2]/3", // C5 F C5 F#5 G5 C G5 C5 …
  P: "[f3,c4]@7 ~ [e3,b3]@7 ~", Q: "a4@2 a4!2 a4@2 a3!2 a3@2 a3@2 a3!4", R: "a3@2 a3@2 a3@2 a3!2 a3@2 [a3,a4,a5]!6",
  S: "[a3,a4,a5]@2 [a3,a4,a5] ~ [a3,a4,a5]@2 [a3,a4,a5]!2 [a3,a4,a5]@2 [a3,a4,a5] ~ [a3,a4,a5]@2 [a3,a4,a5]!2", // A
  T: "[a3,a4,a5]@2 [a3,a4,a5] ~ [a3,a4,a5]@2 [a3,a4,a5]!2 [a3,a4,a5]@7 ~", // A
  U: "[a3,a4]@2 [a3,a4]!2 [a3,a4]@3 ~ [a3,a4]@2 [a3,a4]!6", // A
  V: "[a3,a4]@2 [a3,a4]@2 [a3,a4]@3 ~ [a3,a4]@2 [a3,a4]!4 [a3,a4]@2", // A
  W: "[a3,a4]@2 [a3,a4]@2 [a3,a4]@3 ~ [a3,a4]@2 [a3,a4]@2 [a3,a4]!4", // A
  X: "[a3,a4]!2 [a3,a4]@2 [a3,a4]@3 ~ [a3,a4]@2 [a3,a4]@2 [a3,a4]!2 [a3,a4]@2", Y: "a3@2 a3@2 a3@2 a3!2 a3@2 a3@2 a3!4",
  Z: "a3@2 a3@2 a3@2 a3!2 a3@2 a3!4 a3@2", AA: "a3@2 a3@2 a3@2 a3!4 a3@2 a3!4", AB: "~@12 f#5@3 ~",
})).s("gm_distortion_guitar").gain(0.56)

// chords · rock organ · "Guitar 5"
const rock_organ = note("<~@57 A B C D A B C E ~@47>".pickRestart({
  A: "[c5,e5,g5,c6]@15 ~", B: "[g5,b5,d6,g6]@15 ~", C: "[a#4,a#5]@15 ~", D: "[f5,a5,c6,f6]@15 ~",
  E: "[f5,a5,d#6,g6]@7 ~ [d#5,g#5,d6,f#6]@7 ~", // F7 G#7
})).s("gm_rock_organ").gain(0.48)

// chords · distortion guitar · "Guitar 6"
const distortion_guitar_2 = note(`<
  ~@17 A B C@2 ~ D ~ D ~@8 E F G@2 ~@4 H I J@2 ~@20 K L M N ~@8 O P O D H L Q@2 R@2 S T H L Q@2 ~@19
>`.pickRestart({
  A: "a4@2 a4!2 c5 d5@10 ~", B: "~@4 d5 c5 ~@10",
  C: "[~@4 [c5,e5] [d5,f#5]@14 ~ [d5,f#5] [c#5,e5]@2 a4 a4@2 a4!2 a4@3 ~]/2", D: "~@2 [g4,d5]@2 ~@2 [g4,d5]@9 ~",
  E: "a3@2 a4@2 a4@11 ~", F: "a4@3 ~ [a4,d5] [g4,c5]@3 [a4,d5]@7 ~",
  G: "[~@4 [g4,c5] [a4,d5]@14 ~ [a4,d5] [g4,c5]@3 [e4,a4]@5 ~@3]/2", H: "~@4 [g4,c5] [a4,d5]@3 ~@8",
  I: "~@4 [a4,d5] [g4,c5]@3 [e4,a4]@5 ~@3", J: "[~@4 [g4,c5] [a4,d5]@14 ~ [a4,c5] [a4,d5]@10 ~, ~@20 b5@11 ~]/2",
  K: "~@4 [a4,d5,f#5]@3 ~@9", L: "~@4 [a4,d5] [g4,c5]@3 a4@7 ~", M: "~@4 [a4,d5]@3 ~@9",
  N: "~@4 [d5,f#5] [c5,e5]@3 [a4,c#5]@7 ~", O: "~@2 [a4,e5]@2 [f#4,c#5]@2 [a4,e5]@9 ~",
  P: "~@2 g4@3 ~ e4 f#4 g4@2 f#4 e4 f#4 e4 c#4@2", Q: "[~@4 [a4,d5]@15 ~ [a4,d5] [g4,c5]@3 [e4,a4]@7 ~]/2",
  R: "[~@10 c#6!3 c#6@6 ~ [b5,c#6]@2 b5 a5 b5@2 a5@4 ~@2]/2", S: "~@4 [b5,c#6]@2 b5 a5 [b5,c#6]@2 e6@5 ~",
  T: "~@4 e6@3 ~@9",
})).s("gm_distortion_guitar").gain(0.4)

// other · distortion guitar · "Guitar 7"
const distortion_guitar_3 = note(`<
  ~@57 A@2 B C D@2 E F ~@20 G@2 H@2 I@2 J K L K L K M K M K M@2 L K L K L K L M@2
>`.pickRestart({
  A: "[e6@3 ~ e6@3 ~ [d6,e6]@2 d6 c6 [d6,e6]@2 d6@4 g5@3 ~ g5@2 a5 c6 d6 c6 a5 d6 c6 a5, d6 ~@3 d6 ~@27]/2", // Dsus2
  B: "c6@3 ~ d6@2 c6@2 g6@2 [d6,e6]@2 ~@2 [d6,e6]@2", C: "~@2 e6@3 ~@3 c6 a5 g5 ~ g5 e5 d5 c5, ~@2 d6 ~@13",
  D: "[e5@4 e5@4 [d5,e5]@2 d5 c5 [d5,e5]@2 d5@4 g4@3 ~ g4@2 a4 c5 d5 c5 a4 d5 c5 a4, d5 ~@3 d5 ~@27]/2", // Dsus2
  E: "c5@3 ~ d5@2 c5@2 c5@3 c5 [d5,e5]@2 c6 ~", F: "a5 f6 ~ a5 f6@3 ~ g#5 e6 ~@2 e6@3 ~, ~@11 g#5@4 ~",
  G: "[~@10 c#6!3 c#6@6 ~ [b5,c#6]@2 b5 a5 b5@2 a5@4 ~@2]/2", // Bsus2
  H: "[~@4 [b5,c#6]@2 b5 a5 [b5,c#6]@2 e6@9 ~ c#6@3 b5 b5@2 a5@2 ~@4]/2", // Bsus2
  I: "[~@4 [b5,c#6]@2 b5 a5 [b5,c#6]@2 e6@9 ~ [b5,c#6]@2 b5!2 b5@2 a5@5 ~]/2", // Bsus2
  J: "~@2 e5 f#5 a5 b5 a5 f#5 a5@3 ~ e6@4, ~@12 b5 ~@3", K: "~@2 e5 f#5 a5 b5 a5 f#5 a5@3 ~ a5@3 ~",
  L: "~@2 e5 f#5 a5 b5 a5 f#5 a5@3 ~ c#6@4, ~@12 b5 ~@3", M: "~@2 e5 f#5 a5 b5 a5 f#5 a5@3 a5 f#5@2 e5@2",
})).s("gm_distortion_guitar").gain(0.72)

// bass · electric bass finger · "Bass Guitar"
const bass = note(`<
  ~@13 A B A B A B A B A B A B C@2 D E F G H@2 A B A B A B A B A B A B A B A B C@2 D E F G I J C@2 D E F G K L A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
>`.pickRestart({
  A: "a1@2 a1!2 a1@2 a2@4 a2!6", B: "a2@6 a2 a2@3 g2@3 g2 c#2@2",
  C: "[c2@3 ~ c2@3 c2 e1@2 f1@2 f#1@2 g1@5 ~ a1@3 g1 g1@2 g1@2 c2!2 a#1@2]/2",
  D: "a#1@2 a#1!2 a#1@2 a#1!2 a#1@2 a#1!2 a#1@2 a#1!2", E: "f2@2 f2!2 ~ f2 ~ f2 g2@2 g2!2 a#2@2 b2@2",
  F: "c3@2 g2@2 c2@3 ~ c2@3 ~ c2@3 ~", G: "g1@3 ~ g1@3 g1 g1@2 g1@2 g1@2 g1@2",
  H: "[a#1@3 ~ a#1@3 ~ a#1@3 ~ a#1@3 f2@2 f2 ~ f2 ~ f2@2 e2@2 e2 ~ e2 ~ e2@2 e2]/2",
  I: "a#1@3 ~ a#1@3 ~ a#1@3 ~ f2@3 ~", J: "f2!2 ~ f2 ~ f2@2 f2 e2!2 ~ e2 ~ e2@2 e2",
  K: "a#1@3 ~ a#1@3 ~ a#1@3 ~ a#1@3 ~", L: "f2!2 ~ f2 f2@3 ~ e2!2 ~ e2 e2@3 ~",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · distortion guitar · "Guitar 8"
const distortion_guitar_4 = note("<~@72 A B@3 C ~@12 B@3 C ~@19>".pickRestart({
  A: "~@12 [g3,g4,d5]@3 ~", // G5
  B: "[[a3,a4,e5]@3 ~ [f#3,f#4,c#5]@3 ~ [a3,a4,e5]@11 ~ [c#4,c#5,g#5]@3 ~ [a3,a4,e5]@11 ~ [f#3,f#4,c#5]@3 ~ [a3,a4,e5]@7 ~]/3", // A5 F#5 A5 C#5 A5 F#5 A5
  C: "[g3,g4,d5]@2 [g3,g4,d5]@2 [c#4,c#5,g#5]@3 ~ [a3,a4,e5]@7 ~", // G5 C#5 A5
})).s("gm_distortion_guitar").gain(0.32)

// other · lead 8 bass lead · "Strange humming part 1"
const lead_8_bass_lead = note("<A@2 B@8 ~@102>".pickRestart({
  A: "[[g1,g2]@27 ~@5]/2", B: "[a1,a2]/8",
})).s("gm_lead_8_bass_lead").gain(0.8)

// other · lead 8 bass lead · "Strange humming part 2" · G#
const lead_8_bass_lead_2 = note("<~ [~@12 [g#1,g#2]@3 ~] ~@110>").s("gm_lead_8_bass_lead").gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@13
  [~ x ~ x]!19
  [x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x]
  [~ x ~ x]!23
  [x!2 ~ x ~ x ~ x!3 ~ x ~ x ~ x]
  [~ x ~ x]!55
>`).gain(0.8)

// drums · low tom
// … 17 more lines

More by Led Zeppelin