Strudelify

Beautiful Girls

Van Halen

KeyA majorTempo104 bpm
0:00/0:00
// Beautiful Girls — Van Halen
// 104 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 92 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(104/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 · overdriven guitar
const overdriven_guitar = note(`<
  A B C B D E F E G H@2 I@2 J@2 K@3 L@3 M@2 N@2 O P Q R S T U V@2 W@2 X@2 Y@6 Z AA AB AC AD AE AF@2 AG AH AI B AJ E AK E
  AL B AM AN@2 AO AP AQ AR AS@2 AT P AT AU AD AV@5 AW@2 AX@4 AY@2 AZ@3
>`.pickRestart({
  A: "~@23 d4", B: "e4@2 f4 f#4@2 [e4,a4]@3 ~ f#3@2 ~ [e4,a4]@2 ~ g3@2 ~ [a3,d4]@2 b3 ~@2 a3",
  C: "[d4,a4]@2 a3 [d#4,a#4]@2 [e4,b4]@17 d4 ~", D: "[d4,a4]@2 a3 d#4@2 [e4,b4]@15 ~@4",
  E: "e4@2 f4 f#4@2 [e4,a4]@3 ~ f#3@2 ~ [e4,a4]@2 [e4,a4] g3@2 ~ [a3,d4]@2 b3 ~@2 a3", // A5 D5
  F: "[d4,a4]@2 ~ [d#4,a#4]@2 [e4,b4]@6 ~@10 [d#5,e5] [d4,b4,c#5] ~", G: "[d4,a4]@2 d4 [c#4,g#4]@2 [b3,f#4]@17 ~@2",
  H: "[e3@2 ~ [b3,e4]@2 ~ c#4@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ [c#4,e4]@2 [b3,e4] a3@2 e3@3 e3 [b3,e4]@2 ~ [c#4,f#4]@2 ~ [a3,d4,f#4]@5 b3 a3@2 b3 c#4@2 [b4,e5] ~@2 [b4,e5]]/2", // E5 D C#m E5 F#5 D E5
  I: "[~@2 e3 [b3,e4]@2 ~ [c#4,f#4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ [c#4,e4]@2 b3 a3@2 e3@3 e3 [b3,e4]@2 ~ [c#4,f#4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 b3 c#4@2 e4 c#4@2 ~]/2", // E5 F#5 D C#m E5 F#5 D
  J: "[e3@2 ~ [b3,e4]@2 ~ [c#4,f#4]@2 ~ [a3,d4,f#4]@5 ~ a3@2 ~ [c#4,e4]@2 a3 a3@2 e3@3 e3 b3@2 b3 c#4@2 c#4 [a3,d4,f#4]@5 d4 a3@2 b3 c#4@2 [b4,e5] ~@2 [b4,e5]]/2", // E5 F#5 D C#m D E5
  K: "[~@2 e3 [b3,e4]@2 ~ c#4@2 ~ [a3,d4,f#4]@5 ~ a3@2 ~ [c#4,e4]@2 b3 a3@2 e3@3 e3 [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@4 f#4@3 ~ [d#4,e4] [c4,c#4] b3 a3 g3@2 [a3,e4,a4]@3 ~ f#3@2 ~ [a3,e4]@2 ~ f#3@2 ~ [a3,e4]@2 ~ f#3@2 f#3 c4 b3 a3 g3@2 ~]/3", // E5 D C#m E5 C#m D Emaj7 C#maj7 …
  L: "[[a3,e4]@2 ~ f#3@2 ~ [a3,e4]@2 ~ f#3@2 ~ [a3,e4]@2 ~ f#3@2 ~ f4 e4 d4 c4@2 [b3,f#4]@3 ~ b3@2 ~ [b3,f#4,b4]@2 b3 b3@2 ~ [b3,f#4,b4]@2 ~ b3@2 ~ f4 e4 d4 c#4@2 f4 f#4@2 ~ b3@2 ~ [b3,f#4,b4]@2 ~ b3@2 ~ [b3,f#4,b4]@2 ~ b3@2 ~ [b3,f#4,b4]@5 ~, ~@47 [b3,b4]@3 ~@22]/3", // A5 B5 B
  M: "[e3@2 ~ b3@2 ~ c#4@2 ~ [a3,d4,f#4]@5 ~ a3@2 ~ [c#4,e4]@2 [b3,e4] a3@2 e3@3 e3 [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 b3 c#4@2 [b4,e5] ~@2 [b4,e5]]/2", // D C#m E5 C#m D E5
  N: "[e3@2 ~ [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ [c#4,e4]@2 c#4@3 e3@3 e3 [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@8 ~ b4@3 a4 [e4,f#4,g#4] [c#4,d#4]]/2", // E5 C#m D C#m E5 C#m D E …
  O: "[e3,b3]@2 ~ [b3,e4]@2 ~ [c#4,e4]@2 ~ [d4,g4]@8 ~ [d4,g4]@5 ~", // E5 C#m G5
  P: "a3@2 ~ [e4,a4]@2 ~ [f#4,b4]@2 ~ [g4,c5]@8 ~ [g4,c5] [a4,d5]@4 ~", // A5 B5 C5 D5
  Q: "e3@2 ~ [b3,e4]@2 ~ [c#4,e4]@2 ~ [d4,g4]@8 ~ [d4,g4]@5 ~", // E5 C#m G5
  R: "a3@2 ~ [e4,a4]@2 ~ [f#4,b4]@2 ~ [g4,c5]@8 ~ [e4,a4]@4 g3 ~", // A5 B5 C5 A5
  S: "[g3,d4,g4,d5]@10 ~@2 [c4,g4,c5]@5 ~ [d4,a4,d5]@4 e5 ~", // G5 C5 D5
  T: "f#5@2 g#5 e5 b4 ~ d5@2 d#5 e5 c5 g4 a4@2 a#4 b4 g4 d4 e4@2 c#4 b3@2 b3",
  U: "~@2 [d6,f#6] [d6,f#6]@2 [c#6,f6] [d6,f#6]@2 [c#6,f6] [c6,e6]@13 ~@2", // D C# D C# C
  V: "[~@3 [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ c#4@2 c#4 a3@2 e3@3 e3 [b3,e4]@2 ~ c#4@2 ~ [d4,f#4]@5 a3@3 c4@3 [c#5,e5] ~@2 [c#5,e5]]/2", // E5 C#m D E5 D C#m
  W: "[~@2 g#3 [b3,e4]@2 ~ c#4@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ [c#4,e4]@2 b5 g#6@2 e5@3 ~ f#4@2 e3@3 ~ g3@2 e4@3 ~ d5@2 ~ b4@5 ~]/2", // E5 D C#m
  X: "[~@2 e3 [b3,e4]@2 ~ c#4@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ [c#4,e4]@2 ~ a3@2 e3@3 e3 [b3,e4]@2 ~ [c#4,e4]@2 ~ d4@5 ~ a3@2 b3 c#4@2 e4 g4@2 ~]/2", // E5 D C#m E5 C#m
  Y: "[g4@2 ~ [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ [c#4,e4]@2 a3@3 e3@3 e3 [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 d4@2 [b3,c#4] a3 c4 b3 a3 b3@2 [a3,e4,a4]@3 ~ f#3@2 ~ [a3,e4]@2 ~ f#3@2 ~ [a3,e4,a4]@2 ~ f#3@2 ~ c4@2 a3 g#3@2 [a3,e4]@3 ~ f#3@2 ~ [a3,e4]@2 ~ f#3@2 ~ [a3,e4]@2 ~ d4@2 d4 f4 e4 d4 c4@2 [b3,f#4,b4]@3 ~ b3@2 ~ [b3,f#4,b4]@2 ~ b3@2 ~ [b3,f#4,b4]@2 ~ [b3,f#4]@2 ~ f4 e4 d#4 c4@2 [b3,f#4,b4]@3 ~ b3@2 ~ [b3,f#4,b4]@2 ~ b3@2 ~ [b3,f#4,b4]@5 ~ [e4,a4]@5 ~]/6", // E5 C#m D C#m E5 C#m D Bsus2 …
  Z: "e3@2 ~ [b3,e4]@2 ~ [c#4,f#4]@2 ~@4 g3@5 ~ [d4,g4]@5 ~, ~@9 [d4,g4]@8 ~@7", // E5 F#5 G5
  AA: "e3@2 ~ [e4,a4]@2 ~ [f#4,b4]@2 ~ [g4,c5]@8 ~ c5@2 d5 c5@2 ~", // A5 B5 C5
  AB: "e3@2 ~ [b3,e4]@2 ~ [c#4,f#4]@2 ~ [d4,g4]@8 ~ [d4,g4]@5 ~", // E5 F#5 G5
  AC: "e3@2 ~ [e4,a4]@2 ~ [f#4,b4]@2 ~ [g4,c5]@8 ~ g4@4 g3 ~", // A5 B5 C5
  AD: "[g3,d4,g4,d5]@10 ~@2 [g3,c4,g4,c5]@5 ~ [a3,d4,a4,d5]@5 ~", // G5 C5 D5
  AE: "[b3,f#4,b4]@2 ~ b3@2 ~ [b3,f#4,b4]@2 ~ b3@2 ~ [b3,f#4,a4]@2 ~ b3@2 b3 f#4 e4 d#4 c#4@2 [b3,f#4,b4]", // B5 B7 B5
  AF: "[[b3,f#4,b4]@2 ~ b3@2 ~ [b3,f#4,b4]@2 ~ b3@2 ~ [b3,f#4,b4]@5 ~ [a3,d#4]@2 ~ c5 a4 c5@3 g#4 [a3,a4]@2 a4!3 ~ e5 [f#5,a5] ~ g#5@5 ~ f#5@2 c#5 a5@2 c6]/2", // B5 Adim A F#m
  AG: "a6@2 c7@3 ~ a6@2 ~ b6 e6 ~ f#6@2 ~ e6@2 e6 e6@2 f#6 e6@2 f#6",
  AH: "c#6 e6 c#6 b5 [c6,c#6] b5 e6 c#6!2 b5@2 ~ c#6 a5 ~ b5 c#6 b5 e5@4 a#4@2", // C#maj7
  AI: "~@2 a4 f#4@2 f4 e4@2 c#4 c4@2 b3 ~@3 [e3,b3]@7 ~@2", AJ: "[d4,a4]@2 a3 [d#4,a#4]@2 [e4,b4]@18 d4",
  AK: "[d4,a4]@2 a3 [d#4,a#4]@2 [e4,b4]@5 f#4 ~ e5@10 d4 ~", // D5 D#5 E5
  AL: "[d4,a4]@2 [d4,a4] [d#4,a#4]@2 [e4,b4]@3 e5 g4@2 g#4 [b4,e5]@2 f#4 f#4@2 [a4,d5]@3 ~ e4@2 d4", // D5 D#5 E5 D5
  AM: "[d4,a4]@2 ~ [c#4,g#4]@2 [b3,f#4]@17 [b3,f#4] ~", // D5 C#5 B5
  AN: "[e3@2 ~ [b3,e4]@2 ~ [c#4,e4]@2 ~ [d4,f#4]@5 d4 a3@2 ~ [c#4,e4]@2 a3@3 e3@3 e3 [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 b3 c#4@2 [b4,e5] g3@2 [b4,e5]]/2", // E5 C#m D C#m E5 C#m D E5
  AO: "e3@2 ~ [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ [c#4,e4]@2 b3 a3@2 e3", // E5 C#m D C#m
  AP: "e3@2 ~ [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 f#4 c#5@2 d5 c#5@4 [a4,b4] g#4", // E5 C#m D Asus2
  AQ: "~@3 [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ c#4@2 b3 a3@2 e3", // E5 C#m D
  AR: "e3@2 e3 b3@2 ~ c#4@2 ~ [a3,d4,f#4]@5 d4 a3@2 c4 c#4@2 ~ g#5@2 ~", // D
  AS: "[e3@2 [b3,e4] [b3,e4]@2 ~ [c#4,e4]@2 ~ [a3,d4,f#4]@5 d4 a3@2 ~ [c#4,e4]@2 b3 a3@2 e3@3 ~@16 g#4@4 [e4,f#4] d#4]/2", // E5 C#m D C#m Esus2
  AT: "e3@2 ~ [b3,e4]@2 ~ [c#4,e4]@2 ~ [d4,g4]@9 [d4,g4]@5 ~", // E5 C#m G5
  AU: "a3@2 ~ [e4,a4]@2 ~ [f#4,b4]@2 ~ [g4,c5]@8 ~ d4@2 ~ a3@2 g#3", // A5 B5 C5
  AV: "[[e4,b4,e5]@2 ~ e3@2 ~ [e4,b4,e5]@2 ~@3 b4 e5@2 b4 e4@2 ~ [d4,d5]@2 ~ [d#4,d#5]@2 [e4,e5]@3 ~ [d#4,d#5]@2 ~ [d4,d5]@2 ~ [c#4,c#5]@2 [b3,b4]@3 ~ c#4 [a3,b3] g#3 g3@2 f#3 e3@2 [d4,a4,d5]@9 ~ e3@2 ~ [a3,e4,a4]@5 ~ g#3@2 f#3 e3@2 [e4,b4,e5]@3 ~ e3@2 ~ [a4,d5]@2 ~ e3@2 [b4,e5]@2 [e3,a3]@4 ~ g3@2 f#3 e3@2 [d4,a4,d5]@8 ~@2 a3@2 ~ [a3,e4,a4]@5 ~ e4@4 e5!2]/5", // E5 D D# E D# D C# B …
  AW: "[e5!5 f#5!6 g#6 ~ e5!4 b6 ~ [b4,e5]@2 ~ [d4,a4,d5]@9 ~@2 a3@2 ~ [a3,e4,a4]@5 ~ b4@2 b4 e5@2 g5]/2", // E5 D5 A5
  AX: "[a#5 c#6@4 ~ d#6@2 ~ b4 e5 g#5 b5 c#6@4 e5@4 d#5 c#5 [d4,a4,d5]@8 ~@2 a3@2 ~ [a3,e4,a4]@5 ~ b3@2 ~ e3@2 e4@3 ~ [g4,g5]@2 ~ [e4,e5]@2 ~ [g#4,g#5]@2 ~ [f4,f5]@2 ~ [b4,b5]@2 ~ [g#4,g#5]@4 [d4,a4,d5]@9 ~@2 a3@2 ~ [a3,e4,a4]@5 ~ a3 a4@2 ~ b4 ~, ~@23 b4 ~@72]/4", // D5 A5 G E G# F B G# …
  AY: "[g#5@2 ~ b5@2 e5 c#6@2 ~ e6@2 a5 f#6@2 ~ g6@2 g#6@5 [d4,a4,d5]@9 ~@2 a3@2 ~ [a3,e4,a4]@8 ~ b3@2 ~]/2", // D5 A5
  AZ: "[e4@2 ~ d4@2 f#4@3 ~ e4@2 g4@3 ~ e4@2 g#4@5 [d4,a4,d5]@4 ~ [d4,a4,d5]@2 ~ [d4,a4,d5]@5 ~ [a3,e4,a4]@5 ~ g#3@2 f#3 e3@2 [e4,b4,e5]@3 ~@22]/3", // D5 A5 E5
})).s("gm_overdriven_guitar").gain(0.48)

// other · guitar harmonics
const guitar_harmonics = note("<~@51 A ~@6 B ~@9 C ~ D ~@21>".pickRestart({
  A: "~@3 e5@5 ~@16", B: "~@6 e5@5 ~", C: "~@18 g#5@5 ~", D: "~@3 g5@4 b5@3 d5 f#5@2 ~ g4 ~ b4@4 ~@4",
})).s("gm_guitar_harmonics").gain(0.33)

// bass · electric bass finger
const bass = note(`<
  ~@2 A B C D E D F G@8 H I J K L@4 M N M O P Q R S@8 H I J@2 M N M O P T U V@3 W ~@4 D X D F S@8 M N M N Y Z AA AB AC
  AB AC AB AC AB AC AB AC AB AD AE AF
>`.pickRestart({
  A: "~@12 d3@2 b2 d#3@2 e3@5 ~@2", B: "e3 [c#3,d#3] b2 ~@21", C: "~@9 d#3@2 ~ f#3@3 e3@2 g#3@5 ~@2",
  D: "e2@2 f2 f#2@2 a2 a2@2 ~ f#2@2 ~ a2@2 a2 g2@2 ~ d3@2 b2 ~@2 a2",
  E: "d3@2 ~ d#3@2 e3@3 ~ d#3@2 ~ f#3@3 e3@2 g#3@5 ~@2", F: "d3@2 c#3 c#3@2 b2@5 ~ f#3 g#3@3 f#3@2 e3@6 ~",
  G: "[e2@2 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ a2@2 ~ a2@2 ~ b2@2 e2]/8",
  H: "f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ c3 b2 a2 e2@2 ~",
  I: "f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~ f3 e3 d3 c#3@2 ~",
  J: "b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ f3 e3 d3 c#3@2 ~",
  K: "b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ f3 d#3 c#3 d#3@2 ~",
  L: "[e2@2 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2]/4",
  M: "e2@2 ~ b2@2 ~ c#3@2 ~ d3@8 ~@7", N: "a2@2 ~ a2@2 ~ b2@2 ~ c3@5 ~@10",
  O: "a2@2 ~ a2@2 ~ b2@2 ~ c3@5 ~ e2@2 ~ f2@2 ~ f#2@2 ~", P: "g2@5 ~ g3@2 ~ d3@2 ~ g2@2 ~ c3@2 ~ d3@2 ~ c#3 a2 f#2",
  Q: "e2@2 e2 e2@2 e2 e2@2 e2 f#2@2 g2 b2@2 e3 d3@2 c#3 b2@2 b2 ~@3", R: "~@3 d3@2 ~ c#3@2 ~ c3@14 ~",
  S: "[~@3 b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2@3 ~ b2@2 ~ c#3@2 ~ d3@5 ~ c#3@2 ~ b2@2 ~ a2@2 e2]/8",
  T: "b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~",
  U: "b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ b2@2 ~ a2@2 ~ a2 b2 c3",
  V: "f#2@2 ~ f#2@2 f#2 f#2@2 ~ f#2@2 f#2 f#2@2 ~ f#2@2 f#2 f#2@2 ~ f#2@2 f#2",
  W: "a#2@2 a3 f#3@2 f3 e3@2 c#3 c3@2 b2 ~@3 e2@7 ~@2", X: "d3@2 ~ d#3@2 e3@3 ~ d#3@2 ~ f#3@3 e3@2 a3@5 ~@2",
  Y: "g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~ c3@2 ~ c3@2 ~ d3@2 ~ d3@2 ~",
  Z: "e2@2 e2 e2@2 e2 e2@2 e2 e2@2 e2 e2@2 e2 e2@2 e2 e2@2 e2 e2@2 e2",
  AA: "e3@2 ~ f#3@2 ~ g#3@2 ~ a3@2 ~ b3@2 ~ a3@2 ~ g3@2 ~ f#3@2 ~",
  AB: "d3@2 ~ d3@2 d3 d3@2 ~ d3@2 d3 a2@2 ~ a2@2 ~ e3@2 ~ e3@2 b2",
  AC: "e3@2 ~ e3@2 ~ e3@2 ~ e3@2 ~ e3@2 ~ e3@2 ~ e3!6", AD: "e3@2 ~ f#3@2 ~ g#3@2 ~ a3@2 ~ b3@2 ~ c#4@2 ~ d#4@2 ~ e3!3",
  AE: "d3@2 ~ d3@2 d3 d3@2 ~ d3@2 d3 a2@2 ~ a2@2 ~ e3@2 ~ e3 d3 b2", AF: "e2 ~@11",
})).s("gm_electric_bass_finger").gain(0.11)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@16 A B@2 ~@6 C D E F G H ~@3 I@2 ~@2 J@2 K@2 ~@2 L D E M N O ~@15 P@2 ~@2 P@2 L D E Q R S T@8 U@7
>`.pickRestart({
  A: "~@21 f#5@2 f#5",
  B: "[f#5@2 ~ f#5@2 f#5 f5@2 f#5 f#5@2 f#5 f#5@2 f#5 f5@2 f#5 f#5@2 f#5 f#5@2 a5@3 ~ f#5@2 ~ e5@2 f#5@3 f#5@6 ~@7]/2",
  C: "~@3 d5@2 ~ e5@2 ~ e5@5 ~ c#5@2 ~ b4@2 ~@4", D: "e5@2 ~ e5@2 ~ e5@2 ~ e5@8 ~@7",
  E: "~@3 [d5,g5]@2 ~ [e5,g5]@2 ~ [e5,g5]@8 ~ [c#5,f#5]@2 ~ [b4,e5]@2 ~", // G5 Em F#5 E5
  F: "[e5,g5]@2 ~ [d5,g5]@2 ~ [e5,g5]@2 ~ [e5,b5]@10 ~@5", // Em G5 Em E5
  G: "[g5,b5]@10 ~@2 [g5,c6]@5 ~ [a5,c6]@2 [g5,a5]@2 [e5,g5]@2", H: "[e5,g#5]@7 ~@17",
  I: "[~@18 [g#5,b5]@2 [g#5,b5]@3 [g#5,b5]@8 ~@17]/2", J: "[~@18 [g#5,b5]@2 [g#5,b5]@3 [g#5,b5]@8 ~@14 f#5@2 f#5]/2",
  K: "[f#5@2 ~ f#5@2 f#5 e5@2 f#5 f#5@2 f#5 e5@2 f#5 f#5@2 f#5 e5@2 f#5 f#5@2 a5@3 ~ f#5@2 ~ e5@2 f#5@3 f#5@6 ~@7]/2",
  L: "~@3 d5@2 ~ e5@2 ~ e5@5 ~ c#5@2 ~ b4@5 ~", M: "[e5,g5]@2 ~ [d5,g5]@2 ~ [e5,g5]@2 ~ [e5,b5]@8 ~@7",
  N: "[g5,b5]@10 ~@2 [g5,c6]@5 ~ [a5,c6]@2 [a5,c6]@2 [a5,c6]@2", O: "[f#5,b5]@5 ~@7",
  P: "[~@18 [g#5,b5]@2 [g#5,b5] [g#5,b5]@2 [g#5,b5]@8 ~@17]/2", Q: "[e5,g5]@2 ~ [d5,g5]@2 ~ [e5,g5]@2 ~ [e5,b5]@11 ~@4",
  R: "[g5,b5]@10 ~@2 [g5,c6]@5 ~ [a5,c6]@2 [g5,b5]@2 [e5,g5]@2", S: "[e5,g#5]@5 ~@7",
  T: "[~@23 a5@11 ~@2 a5@5 ~ b5@2 b5 b5@2 b5@6 ~@18 a5@11 ~@2 a5@5 ~ b5@2 b5 b5@2 b5@6 ~@18 a5@11 ~@2 a5@5 ~ b5@2 b5 b5@2 b5@6 ~@18 a5@11 ~@2 a5@5 ~ b5@2 b5 b5@2 b5]/8",
  U: "[~@23 a5@11 ~@2 a5@5 ~ b5@2 b5 b5@2 b5@6 ~@18 a5@11 ~@2 a5@5 ~ b5@2 b5 b5@2 b5@6 ~@18 a5@11 ~@2 a5@5 ~ b5@2 b5 b5@2 b5@6 ~@19]/7",
})).s("gm_lead_2_sawtooth").gain(0.28)

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

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@5 A B C D E@7 F E@8 G@6 H E@11 I J@4 K J L J@3 M ~@4 E@12 N@6 H E@11 O@2 F
>`.pickRestart({
  A: "x ~@3 x ~@2 x", B: "x ~@3 x!2 ~ x", C: "x!2", D: "x ~@4 x ~@2", E: "x ~ x!2 ~@8 x ~@2 x ~@8", F: "x",
  G: "x ~@2 x ~@8 x ~@2 x ~@7 x", H: "~ x ~@6", I: "~ x ~ x ~ x ~@2", J: "~ x ~ x ~ x ~ x", K: "~@3 x ~ x ~ x",
  L: "~ x ~ x ~@4", M: "~@3 x ~@4", N: "~ x ~@3 x ~@2", O: "x ~ x!2 ~@20",
})).gain(0.42)

// drums · china
const china = s("cr").struct(`<
  ~@5 A ~@21 A ~ B ~ C A ~@9 A ~ A ~ A ~ B ~@4 A D A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~ A ~ B ~@2 E ~@3 E ~@3 E ~ E ~@2 A
>`.pickRestart({
  A: "x", B: "x!2", C: "x ~@2 x ~@2 x ~@2 x ~ x!2 ~@11", D: "~@2 x", E: "x!2 ~@10",
})).gain(0.42)

// drums · tambourine
const tambourine = s("tb").struct("<~@27 x ~@3 [~ x] ~@60>").gain(0.42)

// drums · cowbell
const cowbell = s("cb").struct("<~@78 x ~@13>").gain(0.42)

// drums · ride
const ride = s("rd").struct("<~@5 x ~@86>").gain(0.42)

// drums · bongos
const bongos = s("bongo:18").struct("<~@3 x ~@73 [~@12 x!3 ~ x!2 ~@6] ~@14>").gain(1.11)

// drums · congas
const congas = s("conga:18").struct("<~@71 x ~ x ~@3 [~@5 x ~@2] ~@13 x>").gain(1.35)

// drums · congas
const congas_2 = s("conga:33").struct("<~@3 A ~ A ~ B ~@8 B ~@38 A ~@5 A ~@15 C ~@11 D E ~>".pickRestart({
  A: "x", B: "~@7 x", C: "~@12 x!6 ~@6", D: "~@18 x!6", E: "~@18 x!3 ~@3",
})).gain(1.35)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@3 A ~ B@3 C D@7 E D@3 F D@3 F D@6 G D@7 F D@3 H D@6 G D@3 I J@4 D@15 K D@2 G D@7 K D@3 G L A
>`.pickRestart({
  A: "x", B: "x!8", C: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x",
  D: "x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x", E: "x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!4 ~@3",
  F: "x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~@3", G: "x ~ x!2 ~ x!2 ~ x!2 ~ x ~@12",
  H: "x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~@5", I: "x!2 ~ x ~@4", J: "x!4",
  K: "x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~@6", L: "x ~ x!2 ~ x ~@18",
})).gain(2.14)

// drums · claves
const claves = s("clave:2").struct("<~@58 [x!4] ~@33>").gain(2.07)

stack(
  overdriven_guitar, guitar_harmonics, bass, lead_2_sawtooth, mid_tom, high_tom, china, tambourine, cowbell, ride,
  bongos, congas, congas_2, cabasa, claves
)

More by Van Halen