Strudelify
When It's Love cover art

1988 · OU812

When It's Love

Van Halen

KeyD majorTempo100 bpm
0:00/0:00
// When It's Love — Van Halen
// 100 bpm, 4/4, key D major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 5 "ed synth strings2" synth strings 2 (copy of ch 1 "ed harpsichord" harpsichord); ch 7 "harpsichord" harpsichord (copy of ch 1 "ed harpsichord" harpsichord); ch 3 "ed backing piano" piano (copy of ch 2 "ed piano" piano)
// note: Full arrangement: all 131 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · harpsichord · "ed harpsichord"
const harpsichord = note(`<
  A B C D A B C E F G H@2 I@4 J K L@2 M N M O M N M O M N M O M N M P ~@8 M N M O M N M O M N M P ~@16 M N M O M N M P
  ~@20 F G H@2 F G H@2 F G H@2 F G H@2 F G H@2 F G H@2 Q K R K S@2 T
>`.pickRestart({
  A: "f#3@7 g3@5 a3@4, d3@15 ~", B: "[e3,a3] e3@2 a2", C: "f#3@3 g3@3 a3@2, d3@3 ~", D: "a3 ~@2 d3, d3@11 ~@5, ~ g3@3",
  E: "a3@4 g3@8 d3@2 a3 ~, d3@11 ~@5", F: "[a3,f#4]@6 g4@6 a4@3 ~, d4@15 ~", G: "[d4,a4]@4 e4@6 c#4@5 ~, a3@13 ~@3",
  H: "[f#4@6 g4@6 a4@3 ~ a4@4 ~@6 d4@5 ~, a3@15 ~, d4@14 ~@2 d4@9 ~@7, ~@5 g4@3]/2",
  I: "[f#4@6 g4@6 a4@3 ~ [d4,a4]@4 e4@6 c#4@4 ~@2 f#4@6 g4@6 a4@3 ~ a4@4 ~@6 d4@5 a3, a3@29 ~ a3@32 ~@2, d4@15 ~@17 d4@15 ~ d4@9 ~@7, ~@13 g4@3]/4", // D5
  J: "g4 ~ e4@2 c4@10 d4@2", K: "g4 d4 c4@5 d4", L: "[[g3,d4], g4 ~@31]/2",
  M: "[a3,d4]@2 ~@4 g3 a3 [g3,c4]@4 a3@2 [a3,d4]@2", N: "~@2 [a3,c4,e4]!2", O: "~@10 [a3,c4,e4]@5 ~",
  P: "~@2 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@5 ~", Q: "g4!2 e4@2 c4@10 d4@2", R: "~ g4 e4@2 c4@10 d4@2", S: "[[d3,d4]@31 ~]/2",
  T: "[d3,f#3]@3 ~@13", // D
})).s("gm_harpsichord").gain(0.4).pan(0.6)

// chords · piano · "ed piano"
const piano = note(`<
  A B C D E F G H I@8 J@8 K@2 L@2 K@2 L@2 K@2 M@5 N@4 O K@2 L@2 K@2 L@2 P@2 Q R S T U V S T U V W X W X W X Y Z Q AA Q
  AB Q AA Q AC W X W X W X Y AD S T U AE S T U AE S T U AF AG@24 AH AI AJ AI AK@2 AL
>`.pickRestart({
  A: "f#3@7 g3@5 a3@4, [d2,d3]", B: "a3 e3@2 a2, a2@3 ~, e3@3 ~@13", C: "f#3@6 g3@5 a3@4 ~, f#2, d3@3 ~",
  D: "[g3,a3] ~@2 d3, g2, d3@11 ~@5, ~ g3@3", E: "~@7 g3@5 a3@4, d3@15 ~, f#3@7 ~@9, ~ d2@15",
  F: "[e3,a3] e3@2 a2, a2@3 ~", G: "f#3@6 g3@5 ~ a3@4, f#2, d3@3 ~", H: "[g3,a3]@4 g3@8 d3@2 a3 ~, g2, d3@11 ~@5",
  I: "[[a3,f#4,a4,f#5]@6 [g4,g5]@6 [a4,a5]@3 ~ [d4,a4,d5,a5]@4 [e4,e5]@6 [c#4,c#5]@4 a3@2 [f#4,f#5]@6 [g4,g5]@6 [a4,a5]@3 ~ [a4,a5]@4 ~@6 [d4,d5]@5 ~ [f#4,a4,f#5]@6 [g4,g5]@6 [a4,a5]@3 ~ [d4,a4,d5,a5]@4 [e4,e5]@6 [c#4,c#5]@4 ~@2 [f#4,f#5]@6 [g4,g5]@6 [a4,a5]@3 ~ [a4,a5]@4 ~@6 [d4,d5]@5 ~, d3@28 [d4,d5] [g4,g5]@3, [d2,d4,d5] a2 [f#2,f#3] g2@5, ~@16 a3@13 ~@3 [d4,d5]@14 ~@2 g3@48 [f#2,f#3,d4,a4,d5]@16 g3@16, ~@16 a4@6 ~@2 [d4,d5]@2 [g4,g5]@6 [d2,a3,d4,d5]@8 [a2,a3]@7 a3@17]/8", // D G A D5 E C# F# G …
  J: "[[f2,f3]@8 [c3,c4]@8 ~@3 f3 ~@5 f3 g3 ~@2 d3 f3@2 a3@3 ~ c4@2 a3 a3@5 [a3,c4,e4]@2 [a3,c4,e4]@2 a3@3 ~ c4@2 a3 a3@6 [a3,c4,e4]@3, a3@64 d4@2 ~@5 a3@5 ~@2 d4@2 ~@16 d4@2 ~@5 a3@5 ~@2 d4@2 ~@16, ~@16 g3@4 g3@6 ~ g3@8 g3 g3@15 g3@3 ~@10]/8", // F C Am
  K: "[a3@6 g3 ~ [g3,c4]@4 a3@2 a3@10 [a3,c4,e4]@4 [a3,c4,e4]@4, d4@2 ~@5 a3@5 ~@2 d4@2 ~@16]/2", // C5 Am
  L: "[a3@6 g3 ~ [g3,c4]@4 a3@2 a3@12 [a3,c4,e4]@6, d4@2 ~@5 a3@5 ~@2 d4@2 ~@16]/2", // C5 Am
  M: "[a3@6 g3 ~ [g3,c4]@4 a3@2 d4@2 ~@2 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@5 ~ [d4,f#4,a4]@2 d4@2 f#4@2 [d4,f#4,a4]@4 [e4,g4]@2 [d4,f#4]@4 [e4,a4,c#5]@2 e4@2 a4@2 [e4,a4,b4]@4 [e4,a4,c#5]@6 [f#4,b4,d5]@4 b4@2 f#4@2 d4@2 [b3,d4,f#4]@4 ~@2, d4@2 ~@5 a3@5 ~@2 a3@66]/5", // C5 C D Em D A Esus4 A …
  N: "[[a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,c#4,e4]@4 [c#4,e4]@3 ~ [d4,f#4,a4]@2 d4@2 f#4@2 [d4,f#4,a4]@4 [e4,g4]@2 [d4,f#4]@4 [e4,a4,c#5]@2 e4@2 a4@2 [e4,a4,b4]@4 [e4,a4,c#5]@6 [f#4,b4,d5]@4 b4@2 f#4@2 d4@2 [b3,d4,f#4]@4 ~@2, ~@3 a3@13]/4", // D A C#m D Em D A Esus4 …
  O: "[a3,d4,f#4]!2 [a3,c#4,e4]!2", // D A
  P: "[a3@6 g3 ~ [g3,c4]@4 a3@2 a3@10 [c4,e4]@4 [c4,e4]@4, d4@2 ~@5 a3@5 ~@2 d4@2 ~@8 a3@8]/2", // C5 C
  Q: "[a3,d4]@2 ~@4 g3 a3 [g3,c4]@4 a3@2 [a3,d4]@2", R: "~ [g3,c4,e4]@3 ~ [g3,c4,e4]@3",
  S: "[d4,f#4,a4] d4 f#4 [d4,f#4,a4]@2 [e4,g4] [d4,f#4]@2", T: "[e4,a4,c#5] e4 a4 [e4,a4,b4]@2 [e4,a4,c#5]@3",
  U: "[f#4,b4,d5]@2 b4 f#4 d4 [b3,d4,f#4]@2 ~", V: "[a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,c#4,e4]@4 [a3,c#4,e4]@3 ~",
  W: "~ c4 f4 a4!2 c4@3", X: "~@2 b4@2 g4@2 d4@2 d4@2 e4@4 c4 ~", Y: "~ d4 e4 [b3,d4] [c4,e4] d4@2 b3", Z: "b3 g3 a3@6",
  AA: "~@2 [a3,c4,e4]!2", AB: "~@10 [a3,c4,e4]@5 ~", AC: "~@2 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@5 ~", AD: "b3@2 g3@2 a3@11 ~",
  AE: "[b3,d4,f#4]@4 [b3,d4,f#4]@4 [a3,c#4,e4]@4 [a3,c#4,e4]@3 ~", // Bm A
  AF: "[a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,d4,e4]@4 [a3,c#4,e4]@3 ~", // D Asus4 A
  AG: "[[a3,f#4,a4,f#5]@6 [g4,g5]@6 [a4,a5]@3 ~ [d4,a4,d5,a5]@4 [e4,e5]@6 [c#4,c#5]@4 a3@2 [f#4,f#5]@6 [g4,g5]@6 [a4,a5]@3 ~ [a4,a5]@4 ~@6 [d4,d5]@5 ~, d3, [d2,d4,d5] a2 [f#2,f#3] [g2,g3], ~@16 a3@13 ~@3 [d4,d5]@14 ~@2 [d4,d5]@9 ~@7, ~@8 a4@3 ~@2 [g4,g5]@3]/4", // D G A D5 E C# F# G …
  AH: "[f2,f3], a3 ~@15", AI: "[c3,c4]", AJ: "[f2,f3]", AK: "[d2,d3]/2", AL: "[d2,d3,f#3]@3 ~@13",
})).s("gm_piano").gain(0.4).pan(0.7)

// chords · distortion guitar · "eddie guitar"
const distortion_guitar = note(`<
  ~@20 A B A C A B A D A B A C A B A E F G H I F G H I A B A D A B A D A B A E F G H I F G H I J K J K J K L@2 A B A D A
  B A E J K J K J K L@2 M N O P Q R S T U V W@2 X ~@7 Y Z AA AB AC AD AE AF M AG AH AF M AI AJ AK AL AM AN AO AP@2 ~
>`.pickRestart({
  A: "[a3,d4]@2 ~@4 g3 a3 g3@4 a3@2 [a3,d4]@2, ~@4 c4@3 ~", B: "~@2 [a3,c4,e4]!2", C: "~ a#2!4 [a3,c4,e4]@3",
  D: "~@5 [a3,c4,e4]@3", E: "~ [a3,c4,e4]@4 [a3,c4,e4]@3", F: "d3!3 [d3,a3]@2 [d3,a3] [d3,a3]@2, [a3,d4]@3 d4@5",
  G: "a2!3 a2@2 a2!3, [e3,a3]@3 [e3,a3]@5", H: "b2@2 b2!6, [f#3,b3]", I: "[a3,d4,f#4]!2 [a3,d4,e4]!2",
  J: "f2 ~ f2!2 f3@2 f2!3 ~ f2!2 f3@2 f2@2", K: "g2 ~ g2!2 g3@2 g2!3 ~ g2!2 g3@2 g2@2", L: "[a2,e3,a3]/2",
  M: "[d3,a3]@15 ~", N: "[a2,e3]@7 ~", O: "[b2,f#3]@7 ~ [b2,f#3]@7 ~", P: "[g2,d3]@7 ~ [a2,e3]@7 ~, [a2,e3] ~@15",
  Q: "[d3,a3]@13 ~@3, c3 ~@15", R: "[a2,e3]@5 ~ [a2,e3]@8 ~@2, b2 ~@15", S: "[b2,f#3]@7 ~, g#3 ~@15",
  T: "[d3,f#3,a3]@4 [d3,f#3,a3]@3 ~ [d3,e3,a3]@3 ~ [d3,e3,g#3,a3]@2 ~@2, g3 ~@7, g#3 ~@15", U: "[d3,a3]@7 ~, g3 ~@15",
  V: "[a2,e3]@13 ~@3, f3 ~@15", // A5
  W: "[[b2,f#3]@13 ~@2 [d3,f#3,a3]@4 ~ [d3,f#3,a3]@3 ~ [d3,e3,a3]@6 ~@2, ~@15 a#3 ~@16]/2", X: "[d3,a3]@3 ~@13",
  Y: "[d3,a3]@7 ~", Z: "[a2,e3]@7 ~, d3 ~@15", AA: "[f#2,c#3]@7 ~", AB: "[g2,d3]@13 ~@3", AC: "[d3,a3]@13 ~@3",
  AD: "[a2,f3]@3 ~ [a2,e3]@9 ~@3", AE: "[f#2,c#3]@15 d3", AF: "[g2,d3]@7 ~",
  AG: "[b2,f3]@3 ~ [a2,e3]@10 ~@2, ~@4 d3 ~@11", AH: "[f#2,c#3]@15 ~", AI: "[a2,e3]@7 ~, [b2,f3] ~@15",
  AJ: "[b2,f#3]@13 ~@3", AK: "[f#2,c#3]@5 ~@3 [g2,d3]@7 ~, [a#2,d#3] ~@7 c3 ~@7", AL: "f2, c3@5 ~@3, g2 ~@15", AM: "c3",
  AN: "f2", AO: "c3@3 c3", AP: "[[d2,d3]@3 ~]/2",
})).s("gm_distortion_guitar").gain(0.22)

// bass · electric bass finger · "mike bass"
const bass = note(`<
  ~@8 A B C D A B C D E F G@2 H I H J H I H K H I H J H I H L M N O P M N O P H I H K H I H J H I H L M N O Q M N O Q R
  S R S R S N@2 H I H J H I H L R S R S R S N@2 M N O P M N O P M N O P A B C D A B C D M N T U@4 V M N T S M N T S E F
  E F A ~@2
>`.pickRestart({
  A: "d1", B: "a1", C: "f#1", D: "g1", E: "f1", F: "c2", G: "g1/2", H: "d1!4 c2!3 d2", I: "d2!4 e2!4",
  J: "d2 a#1!4 e2!3", K: "d2 c2 d2 d2@2 a1 c2@2", L: "d2 e2@4 e2@3", M: "d1!8", N: "a1!8", O: "b1!8", P: "d2!4 a1!4",
  Q: "d1!4 a1!4", R: "f1!8", S: "g1!8", T: "f#1!8", U: "[g1!7 ~ d1!8 a1!8 f#1!8, ~@7 g1@25]/4", V: "g1@2 g1!6",
})).s("gm_electric_bass_finger").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  ~@20 A B A C A B@2 D B E A F B G A H I@2 J K I@2 J L A B@2 M A B@2 A@2 B A N I O A P I O A Q R S R O@2 T U M A B A V A
  B A N R W X Y Z AA AB N AC O A@2 I O A P I F A ~@8 AD AE A@2 B AF A@2 AG G AE A B AE@2 ~ AH ~@7
>`.pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@3 x!2 ~ x", C: "x ~@5 x ~ x!3 ~@5", D: "~@2 x!2", E: "~@4 x ~@2 x", F: "x ~@4 x ~@2",
  G: "~@4 x!2 ~ x", H: "~ x ~@2 x!2 ~@2", I: "x ~@2 x!3 ~ x", J: "x ~@2 x!3 ~@2", K: "x!2 ~@2 x!2 ~@2",
  L: "~ x ~ x!4 ~", M: "~ x ~@2", N: "~ x ~ x ~@4", O: "x ~@2 x ~ x ~@2", P: "x!2", Q: "x ~@2 x ~@12",
  R: "x ~@2 x ~ x ~ x", S: "~@2 x ~@3 x!2 ~@2 x ~@3 x ~", T: "x ~ x!2 ~@2 x ~@3 x ~@5", U: "x ~@6 x ~@2 x ~@3 x ~",
  V: "x ~@2 x ~@4", W: "x ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~", X: "x ~@5 x ~@3 x!2 ~@2 x ~",
  Y: "x ~ x!2 ~@2 x ~@3 x!2 ~@2 x ~", Z: "x ~@5 x!2 ~@2 x ~ x ~@3", AA: "x ~@5 x!2 ~@2 x!2 ~@4",
  AB: "x ~@6 x ~@2 x ~@5", AC: "x!2 ~ x!3 ~ x", AD: "~@15 x", AE: "~@4 x!2 ~@2", AF: "x ~@6 x ~ x ~@4 x ~",
  AG: "x ~@2 x!2 ~ x!2", AH: "~@3 x!5",
})).gain(0.8).pan(0.4)

// drums · rim
const rim = s("rim").struct("<~@8 [x!4]!12 ~@80 [x!4]!7 ~@17 [x!2 ~@2] ~@6>").gain(0.72).pan(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@20 A@3 B A@3 C A@7 ~ A@3 D A@7 E A@7 F A@3 C A@3 G H I H J@3 A K A@3 B A@3 F H@4 L J A F A@3 D A@3 C A@3 M ~@8 A@7 N
  A O A P A@2 Q R ~@6 S
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@2 x ~@8", C: "~ x ~@2", D: "~@4 x ~@7 x ~ x!2", E: "x ~ x ~@2 x ~@2 x ~@7", F: "~ x",
  G: "~ x ~@8 x ~@5", H: "~ x!3", I: "x!4", J: "~@2 x ~ x ~ x!2", K: "x ~ x ~@2 x ~@2 x ~ x ~@5", L: "~@2 x ~ x ~@2 x",
  M: "~@13 x!2 ~", N: "~@2 x ~@2 x!3", O: "x!2 ~ x", P: "~@2 x ~@3 x!2", Q: "~@3 x", R: "~ x ~@2 x!4", S: "~ x ~@14",
})).gain(0.8).pan(0.4)

// drums · clap
const clap = s("cp").struct("<~@124 x ~@6>").gain(0.8).pan(0.4)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@35 A ~@7 B ~@3 C D ~@5 E A ~@3 F ~@3 G ~@7 H ~@6 I J ~@4 K ~ I J ~@7 H ~ L ~ M ~@7 N ~@14 O P Q ~@5 R
>`.pickRestart({
  A: "x ~@12 x!3", B: "x ~@6 x!2 ~@7", C: "~@10 x!3 ~@3", D: "~@3 x", E: "~@15 x", F: "~@7 x", G: "~@7 x ~@5 x!2 ~",
  H: "~@13 x!2 ~", I: "~@14 x!2", J: "x ~@12 x!2 ~", K: "~@4 x!2 ~@2", L: "~@7 x ~@8", M: "~@7 x!2 ~ x ~ x ~ x ~",
  N: "~@10 x!4 ~@2", O: "~ x ~@2 x ~@2 x ~@8", P: "~@2 x!6", Q: "x", R: "~@3 x ~@12",
})).gain(0.8).pan(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@7 B A@4 ~@80 A@7 ~@17 C D ~@5>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x", C: "x ~ x!2", D: "x ~ x!3 ~@3",
})).gain(0.72).pan(0.4)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@34 A B ~@7 C ~@3 D ~@6 E F ~@3 G ~@3 H ~@7 G ~@6 E I ~@4 J ~ K L ~@7 I ~@3 M ~@6 A N ~@14 O ~@7 P
>`.pickRestart({
  A: "~@15 x", B: "~@11 x!2 ~@3", C: "x ~@2 x ~@4", D: "~@10 x!2 ~@4", E: "~@14 x!2", F: "~@10 x!5 ~",
  G: "~@12 x!2 ~@2", H: "~@6 x ~ x ~@3 x!2 ~@2", I: "~@10 x!3 ~@3", J: "~@7 x ~@8", K: "~@7 x", L: "x ~@9 x!3 ~@3",
  M: "x!3 ~ x ~ x ~@9", N: "x!3 ~ x!6 ~@6", O: "~ x ~@5 x ~@2 x ~@4 x", P: "~@2 x!2 ~@12",
})).gain(0.8).pan(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@20 A@3 B C A@9 D E C A@3 C A@2 D A@3 F A@3 D A@2 D G C D A H I A@2 J C K A@5 L ~@7 M C A@5 D N A@7 O C A@2 ~ P ~@27
  Q ~@2
>`.pickRestart({
  A: "x!8", B: "x!5 ~ x!2", C: "~ x!7", D: "x!7 ~", E: "~@2 x!2 ~@4", F: "x ~ x ~ x!2 ~@2 x ~ x ~ x ~ x ~",
  G: "~ x!2 ~", H: "x!2 ~@2 x ~ x ~ x ~ x ~@5", I: "x ~ x!6", J: "x!2 ~@2 x ~@11", K: "x!3 ~ x!4",
  L: "x ~ x ~ x!2 ~@2 x ~ x ~@5", M: "~@3 x!2 ~@3", N: "~@2 x!3 ~@3", O: "x!5 ~@3", P: "x", Q: "~@15 x",
})).gain(0.72).pan(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@47 A ~@6 B C ~@17 D ~@4 B A E ~@6 F ~@42 G>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x", C: "~@10 x!2 ~@4", D: "~@9 x ~@6", E: "x", F: "~ x ~@3 x ~@2", G: "~@2 x!2 ~@12",
})).gain(0.72).pan(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@7 A B ~@6 C B D B ~ B ~@2 E B ~@2 F B ~@2 F B ~@2 G B ~ B H B@3 I B ~@3 B ~@2 J B ~@2 K L M B H L N@2 O B P B@2 L Q
  B ~ R S R T R@2 U V L W B X B@3 V L N Y H L B@2 Z L AA P ~ B ~@6 AB AC R@15 B@2 ~@2 AD B ~
>`.pickRestart({
  A: "~@12 x ~ x!2", B: "x", C: "~@9 x!2 ~@2 x!3", D: "x ~@13 x!2", E: "~@5 x ~@2", F: "~@3 x", G: "~ x ~@2 x!2 ~@2",
  H: "x!2", I: "~@2 x!2", J: "~@6 x!2", K: "~ x ~ x!2 ~@3", L: "x ~@6 x", M: "x ~@5 x!2", N: "x ~@2 x",
  O: "x!2 ~@2 x ~@11", P: "x!2 ~@2", Q: "x ~@4 x ~ x", R: "x!8", S: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~",
  T: "x ~ x ~ x ~ x!2 ~@2 x ~ x ~ x ~", U: "x!7 ~", V: "~ x ~ x ~@4", W: "x!2 ~@5 x", X: "x!2 ~@6", Y: "~ x ~@6",
  Z: "x!3 ~", AA: "x ~@4 x!3", AB: "~@15 x", AC: "~ x!7", AD: "~ x ~@7 x ~ x!5",
})).gain(0.8).pan(0.4)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@6 A B ~@4 C ~ D E F G H I ~@105 J K L M ~@2>".pickRestart({
  A: "~@9 x!7", B: "x!12 ~ x ~@2", C: "~@13 x ~@2", D: "~@7 x ~@4 x!4", E: "x!13 ~@3", F: "~@7 x",
  G: "~@2 x ~ x ~@6 x!3 ~@2", H: "~@3 x ~@2 x!3 ~@6 x", I: "~ x ~@6 x ~@2 x ~@4", J: "~@9 x ~@2 x!4", K: "x!2 ~@4 x!10",
  L: "x ~@6 x ~@2 x!3 ~@3", M: "x!2 ~@4 x!5 ~@5",
})).gain(0.32).pan(0.4)

// drums · ride
const ride = s("rd").struct(`<
  ~@43 A ~@11 B ~@2 C ~ D ~@6 E ~@4 F G H ~ G@3 B D A ~@5 B ~@2 D ~@5 I J K ~@13 L ~@18
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@6", C: "~@4 x!2 ~@2", D: "x", E: "~ x", F: "x ~@6 x!4 ~@5", G: "~@7 x ~ x ~@6",
  H: "~@8 x!2 ~@6", I: "x ~@6 x", J: "x ~@4 x!2 ~", K: "x!2 ~@2", L: "~@4 x ~@2 x",
})).gain(0.8).pan(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@72 x ~@58>").gain(0.48).pan(0.4)

// drums · cowbell
const cowbell = s("cb").struct("<~@112 x ~@18>").gain(0.72).pan(0.4)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@121 x ~@9>").gain(7.52).pan(0.4)

stack(
  harpsichord, piano, distortion_guitar, bass, kick, rim, snare, clap, low_tom, hihat, mid_tom, open_hat, high_tom,
  crash, crash_soft, ride, tambourine, cowbell, vibraslap
)

More by Van Halen