Strudelify

Bonzo's Montreaux

Led Zeppelin

KeyD majorTempo85 bpm
0:00/0:00
// Bonzo's Montreaux — Led Zeppelin
// 85 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 6, 4/4 at bar 6, 3/4 at bar 10, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 74 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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 · steel drums · "Steel Drums I"
const steel_drums = note("<~@29 A B C B C B C B D ~@22 E@8 F@2 ~@4>".pickRestart({
  A: "~@6 [b4,c6]!2", B: "~@2 [c4,c5] [c4,c5]@2 [g4,g5]!3 [f#4,f#5] [b3,a4]@2 ~ [b4,c6]@2 [b4,c6]@2, [a4,a5] ~@3",
  C: "~@2 [c4,c5] [c4,c5]@2 [g4,g5]!2 [f#4,f#5] [b3,a4]@2 ~@2 [b4,c6]@2 [b4,c6]@2, [a4,a5] ~@3", // C G F# B7 Cmaj7 A
  D: "~@2 [c4,c5] [c4,c5]@2 [g4,g5]!2 [f#4,f#5] [b3,a4]@2 ~@6, [a4,a5] ~@3", // C G F# B7 A
  E: "[~@40 d3@15 ~@17 d3@15 ~@16 d3@15 ~@18 d3@15 ~@17 a#3@15 ~@17 a#3@15 ~@17 a#3@15 ~@3 b2@4 d3@2, ~@25 c4@8 e3@15 ~@14 a3@15 ~@13 c4@10 b2@15 ~@16 g3@15 ~@11 e3@15 ~@14 b2@7 a3@15 ~@16 g3@15 ~@17, ~@27 a#3@9 b2@15 ~@13 g3@15 ~@15 a#3@15 ~@13 c4@10 b2@15 ~@12 g3@15 ~@14 d3@8 c4@15 ~@14 a3@15 ~@16, ~@29 a3@15 ~@14 c4@7 e3@15 ~@16 a3@15 ~@15 a#3@15 ~@12 c4@8 a3@15 ~@14 e3@15 ~@13 b2@10 c4@15 ~@13, ~@31 g3@15 ~@14 a#3@8 b2@15 ~@15 g3@15 ~@15 a3@15 ~@12 a#3@9 c4@15 ~@13 g3@15 ~@15 d3@15 ~@19]/8",
  F: "[~@7 a#3@15 ~@14 c4@15 ~@13, e3@15 ~@11 b2@15 ~@23, ~@2 g3@15 ~@13 d3@15 ~@19, ~@4 c4@15 ~@13 e3@15 ~@17, ~@35 g3@15 ~@14]/2",
})).s("gm_steel_drums").gain(0.1).pan(0.6)

// other · timpani
const timpani = note("<~@2 A@3 B@6 C@4 D E F@2 G H@4 I J@2 K ~ L M N O P M N O Q@4 R ~@32>".pickRestart({
  A: "~ e1@10 e1@6 e1@15",
  B: "[~ e1@4 e1@2 e1@17 ~@13 e1@17 ~ e1@8 ~@6 e1@17 ~ e1@8 ~@6 e1@17 ~ e1@8 e1@2 e1@6 e1@4 e1@37 ~@16, ~@31 e1@6 ~@26 e1@6 ~@26 e1@6 ~@91, ~@2 a4 ~ a4 ~ a4 ~@5]/6",
  C: "[~@5 d1@6 d1@4 d1@4 d1@6 d1@12 d1@6 d1@4 d1@4 d1@6 d1@12 d1@6 d1@4 d1@4 d1@6 d1@12 d1@24 ~@3]/4",
  D: "~@12 c2 ~ g2 ~@3 f2 ~ d2 ~ f2 ~ a2 ~ e2 ~ g2 ~ d2 ~, ~@3 d2@7 ~@6",
  E: "e2 ~ g2 ~ f2 ~ g2 ~ d2 ~ g2 ~ b1 ~ c2 ~ c2 ~ e2 ~ d2 ~ f2 ~ a2 ~ e2 ~ g2 ~ d2 ~",
  F: "[e2 ~ g2 ~ f2 ~ g2 ~ d2 ~ g2 ~ e2 ~ d2 ~ c2 ~ a#1 ~ f2@2 f2@2 f2@2 f2@2 [c2,f2] ~ f2@4 f2 ~ d2@2 f2 ~ a2 ~ e2 ~ g2 ~ d2 ~ e2 ~ g2 ~ f2 ~ g2 ~ d2 ~ g2 ~ b1 ~ c2 ~, ~@6 d2@3 ~@7, ~@30 g2 ~@33]/2", // F5
  G: "c2 ~ e2 ~ d2 ~ f2 ~ a2 ~ e2 ~ g2 ~ d2 ~ e2 ~ g2 ~ f2 ~ g2 ~ d2 ~ g2 ~ e2 ~ d2 ~",
  H: "[c2 ~ a#1 ~ f2@2 f2@2 f2@4 ~@2 f2@2 f2 ~ f2@4 d2@4 d2@2 d2@2 d2@4 e2 ~ f2@2 f2@2 f2@4 ~@2 f2@2 f2 ~ f2@4 d2@6 d2@2 d2@6 ~@2 g2 ~ f2@4 ~@2 f2@2 f2 ~ f2@4 ~@6 c2 ~ g2 ~@3 f2 ~ d2 ~ f2 ~ a2 ~ e2 ~ g2 ~ d2 ~ e2 ~ g2 ~ f2 ~ g2 ~ d2 ~ g2 ~ e2 ~ d2 ~, ~@34 f2@2 ~@7 d2@7 ~@14]/4",
  I: "c2 ~ a#1 ~ f2@4 f2@4 ~@2 f2@2 ~@2 f2@4 ~@6 f2 ~@3, ~@11 d2@5",
  J: "[d2@4 f2@2 f2@2 d#2@4 ~@2 f2@2 f2 ~ f2@4 d2@6 c1 ~ d2@4 e2 ~ a#2@4 e3@4 ~@2 d3 ~ b2 ~ c2 ~ f2 ~@3 g2@2 d2 ~ f2 ~ a2 ~]/2",
  K: "~@2 e2 ~ g2@4 e3@4 ~@2 e2 ~ f2 ~ c2 ~@13", L: "~@16 [a#1,b1]!2 ~ [a#1,b1] a#1!2 ~ a#1 f1@4 f1@4",
  M: "~@2 f1@2 ~@2 f1@4 ~@6 f1 ~@3 d1@4 f1@2 f1@2 d#1@4, ~@5 d1@5 ~@6",
  N: "~@2 f1@2 f1 ~ f1@4 d1@6 d1@2 d1@6 ~@2 g1 ~ f1@4, ~@6 f1 ~",
  O: "~@2 f1@2 f1 ~ f1@4 ~@6 c1 ~ g1 ~@3 f1 ~@3 g1 ~ f1@4, ~@5 d1@7 f1@2 ~@2",
  P: "e1 ~ f1@2 f1 ~ f1@4 d1@6 c1 ~ d1@4 e1 ~ f1@4 f1@4",
  Q: "e1 ~ f1@2 f1 ~ f1@4 d1@6 c1 ~ d1@4 e1 ~@3 g1 ~ f1@4, ~@6 f1 ~", R: "e1 ~ f1@2 f1 ~ f1@4 d1@9 ~@13",
})).s("gm_timpani").gain(0.21).pan(0.4)

// other · woodblock · "Woodblocks"
const woodblock = note("<~@29 A B C B C B C B D E@2 F G ~@32>".pickRestart({
  A: "~@6 b4!2", B: "~@2 a5 a5@2 f#5!3 g5 c6@2 ~ b4@2 b4@2, c5 ~@3",
  C: "~@2 a5 a5@2 f#5!2 g5 c6@2 ~@2 b4@2 b4@2, c5 ~@3", D: "~@4 a5@2 a5@4 f#5@2 f#5@2 g5@2 c6@4 ~@8 a5 ~ a5 ~, c5 ~@3",
  E: "b5 ~@11 a5 ~ a5 ~@5 a5 ~ a5 ~@5 a5 ~ a5 ~", F: "b5 ~@3 a5 ~ a5 ~@5 a5 ~ a5 ~@7 a5 ~ a5 ~ b5 ~@5",
  G: "~@6 a5 ~ g5 ~@5 a5 ~ f5 ~@15",
})).s("gm_woodblock").gain(0.21)

// chords · synth drum · "Synthesized Drums"
const synth_drum = note("<~@27 A@3 ~@7 B C D@3 ~@30 E ~>".pickRestart({
  A: "[~@30 g3 ~ f#3 g3 [f3,g3] f#3 [e3,f#3] [f3,g3] [d#3,f3,g3] [e3,f#3] [d3,e3,f#3] [d#3,f3,g3] [c#3,d#3,f3,g3] [d3,e3,f#3] [c3,d3,e3,f#3] [c#3,d#3,f3] [b2,c#3,d#3,f3] [c3,d3,e3] [a#2,c3,d3,e3] [b2,c#3,d#3] [a2,b2,c#3,d#3] [a#2,c3,d3] [g#2,a#2,c3,d3] [a2,b2,c#3] [g2,a2,b2,c#3] [g#2,a#2,c3] [f#2,g#2,a#2,c3] [g2,a2,b2] [f2,g2,a2,b2] [f#2,g#2,a#2] [e2,f#2,g#2,a#2] [f2,g2,a2] [d#2,f2,g2,a2] [e2,f#2,g#2] [d2,e2,f#2,g#2] [d#2,f2,g2] [c#2,d#2,f2,g2] [d2,e2,f#2] [c2,d2,e2,f#2] [c#2,d#2,f2] [b1,c#2,d#2,f2] [c2,d2,e2] [a#1,c2,d2,e2] [b1,c#2,d#2]!2 [a#1,c2,d2]!2 c#2 ~ [a#1,c2,d2]@7 ~@10, ~@31 g3@2 f#3@2 [f3,g3]@2 [e3,f#3]@2 [d#3,f3,g3]@2 [d3,e3,f#3]@2 g3@6 [a#2,c3,d3,e3]@2 e3@6 [f#2,g#2,a#2]@2 [f2,g2,a2,b2]@2 [e2,f#2,g#2,a#2]@2 [d#2,f2,g2,a2]@2 [d2,e2,f#2,g#2]@2 g#2@7 ~ e2@8 ~@13, ~@43 [c#3,d#3,f3]@2 [c3,d3,e3,f#3]@2 f#3@6 [g#2,a#2,c3,d3]@2 [c#3,d3]@8 a#2@6 [c2,d2,e2]@2 [b1,c#2,d#2,f2]@2 [a#1,c2,d2,e2]@2 [b1,c#2,d#2]@2 [b1,d#2]@8 ~@11, ~@47 [b2,c#3,d#3,f3]@2 f3@6 [g2,a2,b2]@2 c3@7 ~ a2@7 ~ f2@8 ~@15, ~@51 [a2,b2,c#3,d#3]@2 d#3@7 ~ b2@6 [c#2,d#2,f2,g2]@2 [f#2,g2]@7 ~ [a#1,c2,d2] c#2@7 ~@11]/3", // Fsus2 Esus2 Fsus2 D# Esus2 D D# D#7 …
  B: "~@10 a5 ~ b5@3 ~, ~@11 a5@3 ~@2", C: "~@2 d#6 d#6@3 a6 a6@3 a6 ~ b6@3 ~, ~@11 a6@3 ~@2",
  D: "[~@2 a6 a6@3 f#6 f#6@3 d#6 ~ f6@2 c6 c6@3 a5 a5@3 ~ a5 ~ b5@3 ~@4 g#6@3 ~ g6@3 ~@9, ~@11 d#6@3 ~@10 a5@3 ~@4 a6@3 ~ a6@3 ~@10]/3",
  E: "~@13 a#3@15 ~@4, b2@9 c4@15 ~@8, ~@3 d3@15 ~@14, ~@6 g3@15 ~@11, ~@7 a3@15 ~@10",
})).s("gm_synth_drum").gain(0.34).pan(0.3)

// chords · melodic tom · "Toms I"
const melodic_tom = note(`<
  A@2 ~@8 B ~@7 C D ~@2 E F ~@12 G H I J ~@5 K L M N O P Q R S T U V W X@2 Y Z@8 AA AB@2 AC ~
>`.pickRestart({
  A: "[~@25 [d1,e1,b1]@2 [c1,d1,b1]@2 [d1,e1,b1]@2 b1@2 [b0,a1,c2]@2 [a1,b1]@2 [g1,a1]@2 a1@2 [b0,g1,b1]@2 [g1,a1]@2 [f1,g1]@2 g1@2 [b0,f1,a1]@2 [b0,f1,g1]@2 [b0,f1]@2 [b0,f1]@3 ~@6]/2", // E7 G E7 F Asus2 Gsus2 Em Gsus2 …
  B: "e3 ~ [c#3,d#3] ~ c3 ~ [b2,c#3] ~ c3 ~ [a2,b2] ~ a#2 ~ g#2 ~ [a2,b2] ~ [a#2,c3] ~ [a2,b2] ~ g#2 ~@9", // C#sus2 Bsus2 Asus2 A#sus2 Asus2
  C: "[b2,d3] ~ [b2,c3] ~ [a2,b2] ~ b2 ~ [a2,c3] ~ [a2,b2] ~ [g2,a2] ~ a2 ~ [g2,b2] ~ [g2,a2] ~ [f2,g2] ~ g2 ~ [f2,a2] ~ [f2,g2] ~ f2 ~ f2 ~", // Bm Cmaj7 Asus2 Am Asus2 Gsus2 G Gsus2 …
  D: "f2 ~@31", E: "~@26 [f2,g2] ~@5",
  F: "d3 ~ d3!3 ~ d3!2 [b2,c3] ~ [b2,c3]!3 ~ [b2,c3]!2 [a2,b2] ~ [a2,b2]!3 ~ [a2,b2]!2 [g2,a2] ~ [g2,a2]!2 [f2,g2] ~ [f2,g2]!2", // Cmaj7 Asus2 Gsus2 Fsus2
  G: "~@12 b2!4",
  H: "[a2,b2,c3] [a2,b2] [g2,a2,b2] [a2,b2] [g2,a2,b2,c3] [g2,a2,b2] [f2,g2,a2] [g2,a2] [b1,f2,g2,a2,b2] [b1,f2,g2,a2] [b1,f2,g2]!2 [b1,f2,a2] [b1,f2,g2] [b1,f2]!2, ~@30 c2 ~", // Am Asus2 G Asus2 Cmaj7 G F Gsus2 …
  I: "~@4 g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@3 a2 ~ g2 ~@3",
  J: "a2 ~ g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@11",
  K: "~@2 [b2,c3]!2 ~ [b2,c3]!3 ~ [b2,c3] [a2,b2]!2 ~ [a2,b2]!3 c3 [a2,b2,c3] ~ c3!3 ~ c3 [b2,c3] c3 ~ c3 [b2,c3] c3 ~ c3", // Cmaj7 Asus2 Am Cmaj7
  L: "[b2,c3]!2 ~ c3 [b2,c3] c3 ~ [b2,c3]!3 ~ [b2,c3]!3 ~ [b2,c3]!3 ~ [b2,c3]!3 ~ [b2,c3] a2@3 ~@5", // Cmaj7
  M: "~@12 b1 ~ b1 ~@5 b1 ~ b1 ~ b1 ~@7", N: "d2 ~ d2 ~ d2 ~@3 b1 ~ b1 ~ b1 ~ b1 ~@5 b1 ~ b1 ~ b1 ~@7",
  O: "~@12 b1 ~ b1 ~@7 b1 ~ b1 ~@7", P: "d2 ~ d2 ~ d2 ~@7 b1 ~ b1 ~@5 d2@2 d2@3 ~ e2 ~ e2 ~ e2 ~",
  Q: "[d2,e2] ~ [d2,e2] ~ [d2,e2] ~ [b1,d2,e2] ~ e4@2 e4 ~ b1 ~ b1 ~@5 b1 ~ b1 ~ b1 ~ e4 ~ e4 ~@3, ~@8 b1 ~@23", // Dsus2 E7
  R: "d2 ~ d2 ~ d2 ~@3 e4@2 [b1,e4] ~ b1 ~ b1 ~@5 b1 ~ b1 ~ [b1,e4] ~ e4 ~ e4 ~@3, ~@8 b1 ~@23", // E5
  S: "~@8 e4@2 e4 ~ b1 ~ b1 ~@7 b1 ~ b1 ~ e4 ~ e4 ~@3",
  T: "d2 ~ d2 ~ d2 ~@3 e4@2 [e2,e4] ~@3 c2 ~ c2 ~@3 [e2,g2] ~ [e2,g2] ~ e4 ~ [g2,e4] ~ [g2,e4] ~@3, ~@8 e2 ~@23", // E Em C
  U: "[b1,g2] ~ [b1,g2] ~@5 e4@2 [e2,e4] ~@3 c2 ~ c2 ~@3 [e2,g2] ~ [e2,g2] ~ e4 ~ [g2,e4] ~ [g2,e4] ~@3, ~@8 e2 ~@23", // Em E Em C
  V: "d2 ~ d2 ~ [b1,d2] ~ [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@3 [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@9 d2 ~ [d2,e2] ~", // Bm Cmaj7 Dsus2
  W: "[d2,e2] ~ d2 ~ d2 ~ [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@3 [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@7 d2 ~ d2 ~ d2 ~", // Dsus2 Cmaj7
  X: "d2 ~ d2 ~ d2 ~ [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@3 [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@7 d2 ~ d2 ~ d2 ~", // Cmaj7
  Y: "d2 ~ d2 ~ d2 ~@3 [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [a2,c3] ~ [a2,c3] ~ [a2,c3] ~ [a2,c3] ~@9", // G Am
  Z: "~@8 [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [a2,c3] ~ [a2,c3] ~ [a2,c3] ~ [a2,c3] ~@9", AA: "~@30 [d2,e2] ~",
  AB: "[d2,e2] ~ d2 ~ d2 ~@25 [d2,e2] ~", AC: "[d2,e2] ~ d2 ~ d2 ~ e2 ~ e2@3 ~@21",
})).s("gm_melodic_tom").gain(0.59).pan(0.9)

// chords · melodic tom · "Toms II"
const melodic_tom_2 = note(`<
  A B ~@8 C ~@7 D E ~@2 F G ~@12 H I J K ~@5 L M N O P Q R S T U V W X Y@2 Z AA@8 AB AC@2 AD ~
>`.pickRestart({
  A: "~@12 [d3,e3,b3] [c3,d3,b3] [d3,e3,b3] b3", // E7 G E7
  B: "[b2,a3,c4]@2 [a3,b3]@2 [g3,a3]@2 a3@2 [b2,g3,b3]@2 [g3,a3]@2 [f3,g3]@2 g3@2 [b2,f3,a3]@2 [b2,f3,g3]@2 [b2,f3]@2 [b2,f3]@3 ~@7", // F Asus2 Gsus2 Em Gsus2 Fsus2 Bm7b5 G7 …
  C: "~ e2 ~ [c#2,d#2] ~ c2 ~ [b1,c#2] ~ c2 ~ [a1,b1] ~ a#1 ~ g#1 ~ [a1,b1] ~ [a#1,c2] ~ [a1,b1] ~ g#1 ~@8", // C#sus2 Bsus2 Asus2 A#sus2 Asus2
  D: "~ [b2,d3] ~ [b2,c3] ~ [a2,b2] ~ b2 ~ [a2,c3] ~ [a2,b2] ~ [g2,a2] ~ a2 ~ [g2,b2] ~ [g2,a2] ~ [f2,g2] ~ g2 ~ [f2,a2] ~ [f2,g2] ~ f2 ~ f2", // Bm Cmaj7 Asus2 Am Asus2 Gsus2 G Gsus2 …
  E: "~ f2 ~@30", F: "~@27 [f2,g2] ~@4",
  G: "~ d3!3 ~ d3!3 ~ [b2,c3]!3 ~ [b2,c3]!3 ~ [a2,b2]!3 ~ [a2,b2]!3 ~ [g2,a2]!3 ~ [f2,g2]!3", H: "~@12 c2!4",
  I: "[b1,c2,f2] [c2,f2] [c2,f2,g2] [c2,f2] [b1,c2,f2,g2] [c2,f2,g2] [f2,g2,a2] [f2,g2] [c2,f2,g2,a2,c3] [f2,g2,a2,c3] [g2,a2,c3]!2 [f2,a2,c3] [g2,a2,c3] [a2,c3]!2, ~@30 b2 ~", // F F5 Csus4 F5 Csus4 F Fsus2 F …
  J: "~@4 g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@3 f2 ~ g2 ~@3",
  K: "f2 ~ g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@3 g2 ~ g2 ~@11",
  L: "~@2 [b2,c3]!2 ~ [b2,c3]!3 ~ [b2,c3] [a2,b2]!2 ~ [a2,b2]!3 c3 [a2,b2,c3] ~ c3!3 ~ c3 [b2,c3] c3 ~ c3 [b2,c3] c3 ~ c3", // Cmaj7 Asus2 Am Cmaj7
  M: "[b2,c3]!2 ~ c3 [b2,c3] c3 ~ [b2,c3]!3 ~ [b2,c3]!3 ~ [b2,c3]!3 ~ [b2,c3]!3 ~ [b2,c3] a2@3 ~@5", // Cmaj7
  N: "~@12 b1 ~ b1 ~@5 b1 ~ b1 ~ b1 ~@7", O: "d2 ~ d2 ~ d2 ~@3 b1 ~ b1 ~ b1 ~ b1 ~@5 b1 ~ b1 ~ b1 ~@7",
  P: "~@12 b1 ~ b1 ~@7 b1 ~ b1 ~@7", Q: "d2 ~ d2 ~ d2 ~@7 b1 ~ b1 ~@5 d2@2 d2@3 ~ e2 ~ e2 ~ e2 ~",
  R: "[d2,e2] ~ [d2,e2] ~ [d2,e2] ~ [b1,d2,e2] ~ e4@2 e4 ~ b1 ~ b1 ~@5 b1 ~ b1 ~ b1 ~ e4 ~ e4 ~@3, ~@8 b1 ~@23", // Dsus2 E7
  S: "d2 ~ d2 ~ d2 ~@3 e4@2 [b1,e4] ~ b1 ~ b1 ~@5 b1 ~ b1 ~ [b1,e4] ~ e4 ~ e4 ~@3, ~@8 b1 ~@23", // E5
  T: "~@8 e4@2 e4 ~ b1 ~ b1 ~@7 b1 ~ b1 ~ e4 ~ e4 ~@3",
  U: "d2 ~ d2 ~ d2 ~@3 e4@2 [e2,e4] ~@3 c2 ~ c2 ~@3 [e2,g2] ~ [e2,g2] ~ e4 ~ [g2,e4] ~ [g2,e4] ~@3, ~@8 e2 ~@23", // E Em C
  V: "[b1,g2] ~ [b1,g2] ~@5 e4@2 [e2,e4] ~@3 c2 ~ c2 ~@3 [e2,g2] ~ [e2,g2] ~ e4 ~ [g2,e4] ~ [g2,e4] ~@3, ~@8 e2 ~@23", // Em E Em C
  W: "d2 ~ d2 ~ [b1,d2] ~ [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@3 [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@9 d2 ~ [d2,e2] ~", // Bm Cmaj7 Dsus2
  X: "[d2,e2] ~ d2 ~ d2 ~ [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@3 [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@7 d2 ~ d2 ~ d2 ~", // Dsus2 Cmaj7
  Y: "d2 ~ d2 ~ d2 ~ [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@3 [b1,c2] ~ [b1,c2] ~ [b1,c2] ~@7 d2 ~ d2 ~ d2 ~", // Cmaj7
  Z: "d2 ~ d2 ~ d2 ~@3 [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [a2,c3] ~ [a2,c3] ~ [a2,c3] ~ [a2,c3] ~@9", // G Am
  AA: "~@8 [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [a2,c3] ~ [a2,c3] ~ [a2,c3] ~ [a2,c3] ~@9", AB: "~@30 [d2,e2] ~",
  AC: "[d2,e2] ~ d2 ~ d2 ~@25 [d2,e2] ~", AD: "[d2,e2] ~ d2 ~ d2 ~ e2 ~ e2@3 ~@21",
})).s("gm_melodic_tom").gain(0.41).pan(0.1)

// chords · taiko drum · "Snares I"
const taiko_drum = note(`<
  ~@2 A@3 B@5 C D E D F G H G I J@2 K L M G@3 N ~ O@8 P Q R S T U@4 ~ V W X Y Z W X AA@2 AB AC@3 AD AE@8 AF AG AH@2 ~
>`.pickRestart({
  A: "e2@5 ~@5 e2@5 ~ e2@5 ~@11",
  B: "[e2@4 e2@2 e2@5 ~@20 e2@5 ~ e2@5 ~ e2@5 ~@3 e2@4 e2@5 ~@3 e2@5 ~ e2@4 e2@5 ~@5 e2@4 e2@5 ~@3 e2@5 ~ e2@4 e2@5 ~@5 e2@4 e2@5 ~@3 e2@5 ~@3 e2@5 ~@20]/5",
  C: "~@24 e3@2 ~@2 e3@3 ~", D: "~@4 d1@3 ~@3 d1@2 ~@2 d1@3 ~ d1@3 ~@3 d1@2 ~@6",
  E: "~@4 e3@2 e3@3 ~ e3@2 ~@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 ~@2 e3@3 ~", F: "~@4 d1@3 ~@25",
  G: "~@8 [d2,e2]@3 ~@7 [d2,e2]@3 ~@3 [d2,e2]@2 d2@2 d2@3 ~", H: "~@8 [d2,e2]@2 ~@8 [d2,e2]@3 ~@3 [d2,e2]@3 ~ d2@3 ~",
  I: "~@9 f5 e5 d#5 d5 c#5 c5 b4",
  J: "[a#4@2 a4@2 g#4@2 g4@2 ~ f4@2 e4@2 d#4@2 d4@2 c#4@2 c4@2 b3@2 a#3@2 a3@2 g#3@2 g3@2 f#3@2 ~@7 [d2,e2]@3 ~@7 [d2,e2]@3 ~@3 [d2,e2]@2 d2@2 d2@3 ~, ~@8 f#4@3 ~@53]/2", // Dsus2
  K: "~@8 [d2,e2]@3 ~@7 [d2,e2]@3 ~@3 [d2,e2]@3 ~ d2@3 ~", L: "~@8 [d2,e2]@2 e2@3 ~ e2@2 e2@2 e2@2 e2@3 ~@9",
  M: "~@25 [a2,b2] ~@6", N: "~@8 [d2,e2]@3 ~ d2@2 d2@2 ~@16",
  O: "[~@32 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~@3 d2 ~@3 a4 ~@7 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~@3 d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@3 [d2,e2]@2 d2@2 [d2,e2]@3 ~, ~@24 a4@16 ~@16 a4@16 ~@17 a4@16 ~@16 a4@16 ~@16 a4@16 ~@18 a4@16 ~@16 a4@16 ~@21]/8", // Dsus2
  P: "[d2,e2]@2 d2@2 [d2,e2]@3 ~@25", Q: "~@26 e2 ~ e2 ~@3",
  R: "e2 ~ d2 ~@3 e2 ~ e2 ~@3 e2 ~ d2 ~@9 [d2,e2]@2 d2@3 ~ [d2,e2]@2", // Dsus2
  S: "d2@3 ~ [d2,e2]@2 d2@3 ~ [d2,e2]@2 d2@3 ~ [d2,e2]@2 d2@3 ~@3 [d2,e2]@2 d2@3 ~ [d2,e2]@2", // Dsus2
  T: "d2@3 ~ [d2,e2]@2 d2@3 ~ [d2,e2]@2 d2@3 ~ [d2,e2]@2 d2@3 ~@3 [d2,e2] ~@7", // Dsus2
  U: "[~@4 [d2,e2] ~@7 [d2,e2]@6 ~@2 [d2,e2]@6 d2@4 [d2,e2]@4 d2@2 d2@2 d2@2 d2@2 d2@2 ~@2 e2@6 [d2,e2]@6 d2@4 [d2,e2]@4 d2@2 d2@2 d2@2 d2@2 d2@2 d2@6 ~@2 [d2,e2]@6 d2@4 [d2,e2]@6 ~@28, ~@17 e2@3 e2@2 d2@3 ~@8 e2@3 e2@3 ~@25]/4", // Dsus2
  V: "~@8 [d2,e2]@4 ~ [d2,e2]@3", W: "d2@2 d2@2 d2@7 ~@5 [d2,e2]@8 ~@2 [d2,e2]@6, e2 ~@3",
  X: "[d2,e2]@8 d2@7 ~ [d2,e2]@8 ~@2 [d2,e2]@6", // Dsus2
  Y: "d2@2 d2@2 d2@7 ~@5 [d2,e2]@4 d2@2 d2@4 e2@2 e2@2 e2@2, e2@4 ~@6 e2@3 d2@3", // Dsus2
  Z: "[d2,e2]@2 [d2,e2]@2 [d2,e2]@2 [d2,e2]@7 ~@3 [d2,e2]@8 ~@2 [d2,e2]@6", // Dsus2
  AA: "[d2!2 ~@2 e2 e2@2 ~@3 e2 e2@2 ~ d2@4 ~@2 e2 e2@2 ~@3 e2 e2@2 ~ d2@2, e2@8 ~@6 e2@6 ~@6 e2@7 ~@13 e2@6 ~@6 e2@6, ~@4 d2@7 ~@5 d2@8 ~@24 d2@8 ~@8]/2",
  AB: "d2@2 d2@2 d2@7 ~ [d2,e2]@6 d2@8 ~@2 d2@2 [d2,e2]@2, e2 ~@3", // Dsus2
  AC: "d2!2 ~ e2@3 [d2,e2]@3 d2@2 [d2,e2]@2 d2!3, e2@4 d2@7 ~@15 e2@6", // Dsus2
  AD: "d2@2 d2@2 ~@2 e2@7 ~@3 d2@8 ~@8, e2@4 d2@7 ~@21", AE: "d2@4 d2@7 ~@5 d2@8 ~@8",
  AF: "d2@4 d2@7 ~ [d2,e2]@6 d2@4 [d2,e2]@4 [d2,e2]@4 [d2,e2]@2", // Dsus2
  AG: "d2!2 ~ e2@3 [d2,e2]@3 d2@2 [d2,e2]@2 [d2,e2]@2 [d2,e2], e2@4 d2@7 ~@21", // Dsus2
  AH: "[d2@2 d2@2 ~@2 e2@6 [d2,e2]@6 d2@4 [d2,e2]@4 [d2,e2]@4 ~@15 a#3@15 ~@4, e2@4 d2@7 ~@19 [d2,e2]@8 g3@15 ~@11, ~@32 b2@9 c4@15 ~@8, ~@35 d3@15 ~@14, ~@39 a3@15 ~@10]/2", // Dsus2
})).s("gm_taiko_drum").gain(0.2).pan(0.2)

// chords · taiko drum · "Snares I" · soft notes · Fsus2 Cmaj7 Asus2
const taiko_drum_soft = note(`<
  ~@22
  [~@27 [f2,g2] ~@4]
  [~@2 d3!2 ~ d3!3 ~ d3 [b2,c3]!2 ~ [b2,c3]!3 ~ [b2,c3] [a2,b2]!2 ~ [a2,b2]!3 ~@8]
  ~@50
>`).s("gm_taiko_drum").gain(0.12).pan(0.2)

// chords · taiko drum · "Snares II"
const taiko_drum_2 = note(`<
  ~@2 A@2 B C@5 D E F E G ~@3 H@3 ~@8 I@8 J K L M N O@4 ~ P Q R S T Q R U@2 V W@3 X Y@8 Z AA AB@2 ~
>`.pickRestart({
  A: "d2@5 ~@5 d2@5 ~ d2@4 d2@5 ~@7", B: "d2@5 ~@5 d2@5 ~ d2@2 d2@2 d2@5 ~@7",
  C: "[d2@5 ~ d2@5 ~@26 d2@5 ~@13 d2@5 ~@9 d2@5 ~@13 d2@5 ~@9 d2@5 ~@13 d2@5 ~@3 d2@2 d2@5 ~ d2@4 d2@5 ~@16, ~@31 d2@5 ~@27 d2@5 ~@27 d2@5 ~@60, ~@2 a4 ~ a4 ~ a4 ~@3]/5",
  D: "~@25 e3@3 ~ e3@3", E: "~@5 d1@2 ~@4 d1@3 ~ d1@3 ~ d1@3 ~@3 d1@3 ~@4",
  F: "~@5 e3@2 e3@3 ~ e3@3 ~ e3@2 e3@2 e3@2 e3@2 e3@2 e3@3 ~ e3@3", G: "~@5 d1@2 ~@25",
  H: "[~@17 f#3@2 g3@2 g#3@2 a3@2 a#3@2 b3@2 c4@2 c#4@2 d4@2 d#4@2 e4@2 f4@2 f#4@2 g4@2 g#4@2 a4@2 a#4@2 b4@2 c5@2 c#5@2 d5@2 d#5@2 e5@2 f5@3 ~@30]/3",
  I: "[~@32 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~@3 d2 ~@3 a4 ~@7 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~@3 d2 ~@11 [d2,e2] ~@9 [d2,e2] ~@5 [d2,e2] ~ d2 ~ d2 ~@3 [d2,e2]@2 d2@2 [d2,e2]@3 ~, ~@24 a4@16 ~@16 a4@16 ~@17 a4@16 ~@16 a4@16 ~@16 a4@16 ~@18 a4@16 ~@16 a4@16 ~@21]/8", // Dsus2
  J: "[d2,e2]@2 d2@2 [d2,e2]@3 ~@25", K: "~@26 e2 ~ e2 ~@3",
  L: "e2 ~ d2 ~@3 e2 ~ e2 ~@3 e2 ~ d2 ~@9 [d2,e2]@2 d2@3 ~ [d2,e2]@2", // Dsus2
  M: "d2@3 ~ [d2,e2]@2 d2@3 ~ [d2,e2]@2 d2@3 ~ [d2,e2]@2 d2@3 ~@3 [d2,e2]@2 d2@3 ~ [d2,e2]@2", // Dsus2
  N: "d2@3 ~ [d2,e2]@2 d2@3 ~ [d2,e2]@2 d2@3 ~ [d2,e2]@2 d2@3 ~@3 [d2,e2]@6 ~@2", // Dsus2
  O: "[~@2 [d2,e2]@3 ~ [d2,e2]@3 ~ [d2,e2]@3 d2@2 [d2,e2]@2 d2!5 ~ e2@3 [d2,e2]@3 d2@2 [d2,e2]@2 d2!5 d2@3 ~ [d2,e2]@3 d2@2 [d2,e2]@3 ~@14, ~@17 e2@3 e2@2 d2@3 ~@8 e2@3 e2@3 ~@25]/4", // Dsus2
  P: "~@8 [d2,e2]@4 ~ [d2,e2]@3", Q: "d2@2 d2@2 d2@7 ~@5 [d2,e2]@8 ~@2 [d2,e2]@6, e2 ~@3",
  R: "[d2,e2]@8 d2@7 ~ [d2,e2]@8 ~@2 [d2,e2]@6", // Dsus2
  S: "d2@2 d2@2 d2@7 ~@5 [d2,e2]@4 d2@2 d2@4 e2@2 e2@2 e2@2, e2@4 ~@6 e2@3 d2@3", // Dsus2
  T: "[d2,e2]@2 [d2,e2]@2 [d2,e2]@2 [d2,e2]@7 ~@3 [d2,e2]@8 ~@2 [d2,e2]@6", // Dsus2
  U: "[d2!2 ~@2 e2 e2@2 ~@3 e2 e2@2 ~ d2@4 ~@2 e2 e2@2 ~@3 e2 e2@2 ~ d2@2, e2@8 ~@6 e2@6 ~@6 e2@7 ~@13 e2@6 ~@6 e2@6, ~@4 d2@7 ~@5 d2@8 ~@24 d2@8 ~@8]/2",
  V: "d2@2 d2@2 d2@7 ~ [d2,e2]@6 d2@8 ~@2 d2@2 [d2,e2]@2, e2 ~@3", // Dsus2
  W: "d2!2 ~ e2@3 [d2,e2]@3 d2@2 [d2,e2]@2 d2!3, e2@4 d2@7 ~@15 e2@6", // Dsus2
  X: "d2@2 d2@2 ~@2 e2@7 ~@3 d2@8 ~@8, e2@4 d2@7 ~@21", Y: "d2@4 d2@7 ~@5 d2@8 ~@8",
  Z: "d2@4 d2@7 ~ [d2,e2]@6 d2@4 [d2,e2]@4 [d2,e2]@4 [d2,e2]@2", // Dsus2
  AA: "d2!2 ~ e2@3 [d2,e2]@3 d2@2 [d2,e2]@2 [d2,e2]@2 [d2,e2], e2@4 d2@7 ~@21", // Dsus2
  AB: "[d2@2 d2@2 ~@2 e2@6 [d2,e2]@6 d2@4 [d2,e2]@4 [d2,e2]@4 ~@15 a#3@15 ~@4, e2@4 d2@7 ~@19 [d2,e2]@8 g3@15 ~@11, ~@32 b2@9 c4@15 ~@8, ~@35 d3@15 ~@14, ~@39 a3@15 ~@10]/2", // Dsus2
})).s("gm_taiko_drum").gain(0.2).pan(0.8)

// chords · taiko drum · "Snares II" · soft notes
const taiko_drum_soft_2 = note("<~@15 A B A ~@2 A B C D E@3 F ~@46>".pickRestart({
  A: "~@9 d1@3 ~@7 d1@3 ~@3 d1@2 d1@2 d1@3, ~@8 e3@3 ~@7 e3@3 ~@3 e3@3 ~@5",
  B: "~@9 d1@3 ~@7 d1@3 ~@3 d1@3 ~ d1@3, ~@8 e3@3 ~@7 e3@3 ~@3 e3@3 ~@5",
  C: "~@10 e3@3 ~ e3@2 e3@2 e3@2 e3@2 ~@5 [f2,g2] ~@4, ~@4 e3 ~@11, ~@9 d1@3 ~@20", // Fsus2
  D: "~ d3 ~ d3!3 ~ d3!2 [b2,c3] ~ [b2,c3]!3 ~ [b2,c3]!2 [a2,b2] ~ [a2,b2]!3 ~ [a2,b2] ~@8", // Cmaj7 Asus2
  E: "~@8 e3 d1 ~@8 e3 d1 ~@4 e3 d1 ~ d1 ~ d1 ~@2", F: "~@8 e3 d1 ~@3 d1@2 d1@4 ~@13",
})).s("gm_taiko_drum").gain(0.12).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  A B C D E F G H@2 I J K@3 L M N O P Q N@2 R P N S T U ~ V C D E@2 C D W X Y Z AA AB AC AD@2 ~@2 AE AF AG AH AI AF AG
  AJ AK AL AM@3 AN AO@8 AM@3 AP ~
>`.pickRestart({
  A: "~@13 x ~@2", B: "x ~@3 x ~@3 x!5 ~ x!2", C: "~@2 x!3 ~@2 x ~@2 x ~ x ~ x ~", D: "~@2 x!3 ~@2 x ~@2 x ~ x ~ x!2",
  E: "~@3 x!2 ~@2 x ~@2 x ~ x ~ x!2", F: "~@2 x ~@12 x", G: "x!2 ~ x!2 ~ x!5 ~@2 x ~ x", H: "x!2 ~ x ~ x!6 ~@2 x ~ x",
// … 124 more lines

More by Led Zeppelin