Strudelify

Jump

Van Halen

KeyC majorTempo132 bpm
0:00/0:00
// Jump — Van Halen
// 132 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 16 "BRASS 2" named as a brass, played on brass section (its pad poly patch is not one)
// note: duplicate parts dropped: ch 13 "GUIT SOLO" distortion guitar (copy of ch 9 "GUIT SOLO" overdriven guitar)
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GUITAR DIS, HARMONIC.
setcpm(132/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.

// bass · synth bass 2 · "BASS"
const bass = note(`<
  A ~@2 B C@3 D E@3 F E@3 G E@3 F E@3 G H@2 I J I J K L M E@3 N E@3 F O@4 P@2 O@2 Q@2 R@2 S@2 T@2 U@2 V@2 W@2 X Y@6 ~
  Z@4 AA E@2 AB AC E@2 AB AD E@2 AB AC E@2 AE ~
>`.pickRestart({
  A: "c2", B: "~ f1@2 g1@2 ~@2 g1", C: "[c2 g1 c2@16 ~@6]/3", D: "~ f1@3 g1@2 e1 g1",
  E: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", F: "c2@2 f1@4 g1@3 ~ g1 ~ g1 ~ g1@2",
  G: "c2@2 f1@4 g1@3 ~ g1 ~ g1 ~ g1 ~", H: "[a1@3 g1@3 a1@3 g1@3 a1 g1@3]/2", I: "f1@3 ~ f1@3 ~ f1@2 e1@4 d1@2",
  J: "~@2 d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1@2", K: "f1@3 ~ f1@3 ~ f1@2 e1@4 g1@2",
  L: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", M: "~ g1!2 ~ g1 ~ g1@2 e2@2 d2@2 b1@2 g1@2",
  N: "c2 ~ f1@4 g1@3 ~ g1 ~ g1 ~ g1 ~", O: "[a#1@3 f#1@4 g#1@4 c#1@5]/2", P: "[a#1 a#1@4 ~ f#1 f#1@6 ~ g#1@8 c#1@10]/2",
  Q: "[c2@31 ~]/2", R: "c2/2", S: "f1/2", T: "g1/2", U: "a#1/2", V: "a1/2", W: "g#1/2", X: "g1@15 ~",
  Y: "[g1 a1 g1 a1 g1 e1 c1@22 ~@4]/6", Z: "[~ g1 c2 g1 c2@22 ~ f1@3 g1@2]/4",
  AA: "e1@2 g1@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", AB: "c2 ~ c2 ~ c2@2 f1@4 g1@3 ~ g1 ~",
  AC: "g1 ~ g1@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", AD: "g1 ~ g1 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  AE: "c2 ~ c2 ~ c2@2 f1@4 ~@6",
})).s("gm_synth_bass_2").gain(0.66).pan(0.6)

// chords · pad poly · "BASS SYNTH"
const pad_poly = note(`<
  A@8 B@3 C B@3 C B@3 C B@3 C D@2 E@7 F@8 G@8 H@4 I@2 J@4 K@4 L@2 M@5 N O@8 ~@4 P@8 ~
>`.pickRestart({
  A: "[c2@25 f1@2 g1@7 c2@23 f1@2 g1@5]/8", B: "c2/3", C: "~ f1@2 g1@5", D: "[a2@3 g2@3 a2@3 g2@3 a2 g2@3]/2",
  E: "[f2@5 e2@2 d2@9 f2@5 e2@2 d2@9 f2@5 e2@2 g2@17]/7", F: "[c2@127 ~]/8", G: "[a#2@3 f#2@4 g#2@4 c#2@5]/2",
  H: "[d5 b4 g4 d5 b4 g4 e5 c5 g4 e5 c5 g4 d5 b4 g4 d5 b4 g4 d5 b4 g4 c5 a4 f4 c5 a4 f4 c5 a4 f4 a4 c5, c2]/2",
  I: "[b4 g4 d4 b4 g4 d4 c5 a4 f4 d5 b4 g4 c5 a4 f4 d5 b4 g4 c5 a4 f4 c5 a4 f4 b4 g4 d4 b4 g4 d4 g4 b4, f2]/2",
  J: "[a4 f4 c4 a4 f4 c4 a4 f4 c4 b4 g4 d4 a4 f4 c4 b4 g4 d4 c5 a4 f4 d5 b4 g4 c5 a4 f4 d5 b4 g4 c5 a4 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5, g2 a#2]/4",
  K: "[g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 ~ g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 ~, a2 g#2]/4",
  L: "[~@3 c4@3 d4@2 e4@3 c4@3 d4@2 e4@3 g4@3 e4@3 d4@3 c4@3 d4, g2]/2",
  M: "[~@2 d4@6 ~@6 c4@27 ~@39, ~ c2@39, ~ c4@6 ~@33, ~@4 e4@17 ~@19]/5", N: "~@3 f1@2 g1@3", O: "[~ c2@15]/8",
  P: "[~ c2@31]/8",
})).s("gm_pad_poly").gain(0.72).pan(0.3)

// chords · synth brass 1 · "SYNTH"
const synth_brass_1 = note(`<
  A B@3 A B@3 A C@3 D E F@2 A C@3 A C@3 ~@9 A B@3 A B@3 ~@26 G H I J@2 H I J@2 K L J@2 H I J@2 K L M@2 D N O@2
>`.pickRestart({
  A: "~@2 [g4,b4,d5] ~@2 [g4,c5,e5] ~@2", // G C
  B: "[[f4,a4,c5]@2 ~@4 [f4,a4,c5]@2 ~@2 [g4,b4,d5]@2 ~@2 [g4,b4,d5]@5 ~ [g4,c5,e5]@2 ~@4 [f4,a4,c5]@2 ~@2 [f4,a4]@4 [e4,g4]@2 ~@2 [c4,d4,g4]@10, ~@5 c4 ~@2]/3", // F G C F Em Csus2
  C: "[[f4,a4,c5]@2 ~@4 [f4,c5]@2 ~@2 [g4,d5] ~@3 [g4,b4,d5]@5 ~ [g4,c5,e5]@2 ~@4 [f4,a4,c5] ~@3 [f4,a4]@4 [e4,g4]@2 ~@2 [c4,d4,g4]@10, ~@6 a4 ~@3 b4@2 ~@18 c4@6 ~@12]/3", // F F5 G5 G C F Em Csus2
  D: "~@2 [f5,a5,c6] ~@2 [f5,a5,c6] ~@2", E: "[f5,a5,c6] ~@2 [f5,a5,c6] ~@2 [c5,e5,g5]@2",
  F: "[~@2 [f4,a4,c5] ~@2 [c4,f4,a4] ~ [f4,a4]@2 [e4,g4] ~ [c4,d4,g4]@5, ~@7 c4@3 ~@6]/2", // F Em Csus2
  G: "~@4 [g4,b4,d5] ~@2 [g4,c5,e5]", H: "~@2 [f4,a4,c5] ~@2 [f4,a4,c5] ~ [g4,b4,d5]",
  I: "~@2 [g4,b4,d5]@5 ~ [g4,c5,e5]@2 ~@4 [f4,a4,c5]@2", // G C F
  J: "[~ [f4,a4]@2 [e4,g4] ~ [c4,d4,g4]@5 ~@2 [g4,b4,d5] ~@2 [g4,c5,e5], ~ c4@3 ~@12]/2", // F Em Csus2 G C
  K: "~@4 [f4,a4,c5]@2 ~@4 [f4,c5]@2 ~@2 [g4,d5] ~, ~@10 a4 ~@3 b4@2", // F F5 G5
  L: "~@2 [g4,b4,d5]@5 ~ [g4,c5,e5]@2 ~@4 [f4,a4,c5] ~", // G C F
  M: "[~ [f4,a4]@2 [e4,g4] ~ [c4,d4,g4]@5 ~@2 [f5,a5,c6] ~@2 [f5,a5,c6], ~ c4@3 ~@12]/2", // F Em Csus2 F
  N: "[c5,e5,g5]@5 ~@3 [f4,a4,c5]@2 ~@4 [c4,f4,a4]@2", O: "[~ [f4,a4]@2 [e4,g4] ~ [c4,d4,g4]@5 ~@6, ~ c4@3 ~@12]/2",
})).s("gm_synth_brass_1").gain(0.4).pan(0.8)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@24 A@2 B@4 C@3 D@8 E@8 F@4 ~@22 G@8 H@8 ~>".pickRestart({
  A: "[[a4,c5]@3 [g4,b4]@3 [a4,c5]@3 [g4,b4]@3 [a4,c5] [g4,b4]@3]/2", B: "[[f5,a5]@4 [e5,g5]@3 [d5,f5]@9]/2",
  C: "[[f5,a5]@8 [e5,g5]@6 [g5,b5]@33 ~]/3", D: "[c4@63 ~ c6@64, c5]/8", E: "[a#3@3 f#3@4 g#3@4 c#4@5]/2", F: "c4/4",
  G: "[~ c4@7 c6@9 c4@8 c6@7, ~@4 c5@63 ~ c5@60]/8", H: "[~ c4@8 c6@8 c4@8 c6@7, ~ c5@31]/8",
})).s("gm_string_ensemble_1").gain(0.5).pan(0.3)

// other · distortion guitar · "GUITAR DIS"
const distortion_guitar = note("<~@24 A@2 ~@24 B ~ C ~ D ~ E ~ F ~ G ~ H ~@15 I ~@3 J ~@3 I ~@5>".pickRestart({
  A: "[a3@29 ~@3]/2", B: "~@14 [c3,g3]!2", C: "~@12 [c3,g3]!2 [c3,g3]@2", D: "~@12 [c3,f3]!4",
  E: "~@12 [d3,g3]!2 [d3,g3]@2", F: "~@14 [f3,a#3]!2", G: "~@12 [f3,a#3]!2 [f3,a#3]@2", H: "~@14 [d#3,g#3]!2",
  I: "~@6 c2@3 ~ d2@3 ~@3", J: "~@6 c2@3 ~@7",
})).s("gm_distortion_guitar").gain(0.32).pan(0.2)

// other · distortion guitar · "GUITAR DIS" · soft notes
const distortion_guitar_soft = note("<~@82 [~@10 d2@3 ~@3] ~@7 [~@6 c2@3 ~ d2@3 ~ g2 ~] [g2 ~@15]>")
  .s("gm_distortion_guitar").gain(0.16).pan(0.2)

// other · electric guitar clean · "GUITAR CLN"
const electric_guitar_clean = note(`<
  ~@24 A@2 B@2 C@2 D@3 E@3 F E@3 G ~@8 H@2 I@2 J@2 K@2 L@2 M@2 N@2 O@8 ~@4 P Q@2 R S Q@2 R T U V R W Q X ~@2
>`.pickRestart({
  A: "[e4@29 ~@3]/2", B: "[~@6 f3@2 ~@2 g3@2 c4 ~ d4@17 ~, f3 c4 ~@6, ~ a3@2 ~ e3@2 ~@10]/2",
  C: "[~@4 c4@2 f3@2 e3@2 g3@2 c4 ~ d4@16 ~@2, f3 ~@7, ~ a3@2 ~@13]/2",
  D: "[~@2 a3@2 c4@2 f3@2 ~@2 g3@2 c4 ~ g4@34, f3 ~ e3 ~@9]/3", E: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~",
  F: "c3 f2@2 g2@5", G: "c3 ~ f2@4 g2@10", H: "[[c3,g3,c4]@31 ~]/2", I: "[c3,g3,c4]/2", J: "[f2,c3,f3]/2",
  K: "[[g2,d3,g3]@31 ~]/2", L: "[a#2,f3,a#3]/2", M: "[a2,e3,a3]/2", N: "[g#2,d#3,g#3]/2",
  O: "[[g2,d3,g3]@33 ~ [c3,g3,c4]@84 ~@10]/8", P: "~@4 [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ c3 ~ [c3,c4] ~ [c3,c4] ~",
  Q: "[c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~", // C
  R: "[c3,c4] ~ [c3,c4] ~ [c3,c4]@2 [f2,f3]@3 ~ [g2,g3]@3 ~ [g2,g3] ~", // C F G
  S: "[g2,g3] ~ [g2,g3] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ c4 ~ [c3,c4] ~ [c3,c4] ~", // G C
  T: "[g2,g3] ~ g3 ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,b3] ~ [c3,b3] ~", // G C Cmaj7
  U: "[c3,c4] ~ [c3,a3] ~ [c3,a3] ~ [c3,a3] ~ [c3,c4] ~ [c3,c4] ~ [c3,b3] ~ [c3,b3] ~", // C F C Cmaj7
  V: "[c3,c4] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~", // C C5 C
  W: "[g2,g3] ~ [g2,g3] ~ [c3,c4] ~ c4 ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~", // G C
  X: "[c3,c4] ~ [c3,c4] ~ [c3,c4] ~@11", // C
})).s("gm_electric_guitar_clean").gain(0.48).pan(0.8)

// other · electric guitar clean · "GUITAR CLN" · soft notes
const electric_guitar_clean_2 = note("<~@75 A ~@3 B ~@3 C ~@3 D ~ E F ~>".pickRestart({
  A: "~@10 c4 ~@5", B: "~@10 c3 ~@5", C: "~@2 g2 ~@13", D: "~@6 c3 ~@9",
  E: "~@6 [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~ [c3,c4] ~", F: "[c3,c4] ~ [c3,c4] ~ [c3,c4]@2 [f2,f3]@3 ~@7",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.8)

// other · overdriven guitar · "GUIT SOLO"
const overdriven_guitar = note("<~@41 A B C D@3 E@4 ~@41>".pickRestart({
  A: "~ [c#5,f5] a#5@6 ~@2 a#4@2 g#4@4", B: "a#4@2 f4@6 d#4@2 c#4@5 ~", C: "~@2 [a#4,c#5] f#5 ~ f5 ~@2 f#5 ~ e5@4 f3@2",
  D: "[f3@4 d#3 g#3 f3@2 c#3@6 a#4@8 c5@4 g#4@2 a#4@2 d#3@4 d#3@4 d#4@4 d#4@6]/3",
  E: "[~ a#3 ~ c#4 f4 a#4 ~ c#5 d#5 ~@2 d#5@7 c4@2 f4@2 c4@2 f4@2 a#4@2 d#5@3 g5@25 ~@8]/4",
})).s("gm_overdriven_guitar").gain(0.5).pan(0.4)

// other · lead 8 bass lead · "SYNTHSOLO"
const lead_8_bass_lead = note("<~@49 A B A B C D E F G H G I G I J K L@3 ~@24>".pickRestart({
  A: "d5 b4 g4 d5 b4 g4 e5 c5 g4 e5 c5 g4 d5 b4 g4 d5", B: "b4 g4 d5 b4 g4 c5 a4 f4 c5 a4 f4 c5 a4 f4 a4 c5",
  C: "b4 g4 d4 b4 g4 d4 c5 a4 f4 d5 b4 g4 c5 a4 f4 d5", D: "b4 g4 c5 a4 f4 c5 a4 f4 b4 g4 d4 b4 g4 d4 g4 b4",
  E: "a4 f4 c4 a4 f4 c4 a4 f4 c4 b4 g4 d4 a4 f4 c4 b4", F: "g4 d4 c5 a4 f4 d5 b4 g4 c5 a4 f4 d5 b4 g4 c5 a4",
  G: "g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4", H: "c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5",
  I: "c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 c5 d5 g5 d5 g4 ~", J: "~@3 c4@3 d4@2 e4@3 c4@3 d4@2",
  K: "e4@3 g4@3 e4@3 d4@3 c4@3 d4", L: "[~@2 d4@6 ~@6 c4@27 ~@7, ~ c4@6 ~@17, ~@4 e4@17 ~@3]/3",
})).s("gm_lead_8_bass_lead").gain(0.45).pan(0.6)

// other · pad poly · "PAD"
const pad_poly_2 = note("<A@3 B@5 C@3 D E@4 ~@76>".pickRestart({
  A: "[c1@23 ~]/3", B: "[~ f2@2 g2@7 [c1,c3]@23 f2@2 g2@5]/5", C: "[c1,c3]/3", D: "~ f2@2 g2@5",
  E: "[c3@49 ~ f2@4 g2@10]/4",
})).s("gm_pad_poly").gain(0.8).pan(0.3)

// chords · brass section · "BRASS 2"
const brass_section = note("<~@67 A B C D@2 B C D@2 E F D@2 B C D@2 E F G@2 H I J ~>".pickRestart({
  A: "~@4 [g4,b4,d5] ~@2 [g4,c5,e5]", B: "~@2 [f4,a4,c5] ~@2 [f4,a4,c5] ~ [g4,b4,d5]",
  C: "~@2 [g4,b4,d5]@5 ~ [g4,c5,e5]@2 ~@4 [f4,a4,c5]@2", // G C F
  D: "[~ [f4,a4]@2 [e4,g4] ~ [c4,d4,g4]@5 ~@2 [g4,b4,d5] ~@2 [g4,c5,e5], ~ c4@3 ~@12]/2", // F Em Csus2 G C
  E: "~@4 [f4,a4,c5]@2 ~@4 [f4,c5]@2 ~@2 [g4,d5] ~, ~@10 a4 ~@3 b4@2", // F F5 G5
  F: "~@2 [g4,b4,d5]@5 ~ [g4,c5,e5]@2 ~@4 [f4,a4,c5] ~", // G C F
  G: "[~ [f4,a4]@2 [e4,g4] ~ [c4,d4,g4]@5 ~@2 [f5,a5,c6] ~@2 [f5,a5,c6], ~ c4@3 ~@12]/2", // F Em Csus2 F
  H: "~@2 [f5,a5,c6] ~@2 [f5,a5,c6] ~@2", I: "[c5,e5,g5]@5 ~@3 [f4,a4,c5]@2 ~@4 [c4,f4,a4]@2",
  J: "~ [f4,a4]@2 [e4,g4] ~@4, ~ c4@3 ~@4", // F Em
})).s("gm_brass_section").gain(0.57).pan(0.7)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@19 A B ~@2 C ~@5 D ~@2 E ~@7 F ~@13 E ~@5 G ~ E ~ H ~@18 I ~@8>".pickRestart({
  A: "~@7 x", B: "x", C: "~@3 x ~ x!3", D: "~@10 x!3 ~@3", E: "~@14 x!2", F: "~@12 x!3 ~", G: "~@3 x ~@3 x",
  H: "~@6 x ~@8 x", I: "~ x ~@6",
})).gain(0.72)

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

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@19 [~@10 x!2 ~@4] ~@9 [~@6 x!2 ~@8] ~@62>").gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@27 A ~@13 B@8 C D E@11 F E ~@28>".pickRestart({
  A: "~@3 x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", C: "x ~@3 x!2 ~@2 x ~@3 x ~@3", D: "x ~@3 x ~@3 x ~@3 x!2 ~@2",
  E: "x!4", F: "x!3 ~",
})).gain(0.4)

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

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct("<~@15 [~@5 x ~@2] ~@7 [~@3 x ~@12] ~@8 [~@3 x ~ x ~@2] ~@59>").gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A B ~@3 C ~@6 A C ~@7 D E F ~ F ~ F ~@2 C ~@3 G ~ H I F J F J K L F J C M ~@2 C ~ C D C M ~@2 C ~ C N O P ~@4 Q
// … 49 more lines

More by Van Halen