Strudelify
You Give Love a Bad Name cover art

1986 · Slippery When Wet

You Give Love a Bad Name

Bon Jovi

KeyC minorTempo124 bpm
0:00/0:00
// You Give Love a Bad Name — Bon Jovi
// 124 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 45, 4/4 at bar 46) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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, A@4 for four bars: edit a riff to change every repeat.

// chords · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@4 A@2 B@4 C@3 ~@15 D@4 E@2 F@4 G@4 ~@17 H@2 I J K L M N K L M N O@2 P Q P Q P Q P R@2 ~@8 K L M N K L M N M N M N M
  N M N M N M N M N M N M S@2
>`.pickRestart({
  A: "[~@8 [c5,eb5]@6 [ab4,c5]@9 ~ [bb4,d5]@7 ~]/2", // Cm Ab Bb
  B: "[[c5,eb5]@7 ~ [ab4,c5]@6 [bb4,d5]@5 ~@5 [eb5,g5]@2 ~@2 [c5,eb5]@9 ~@3 [c5,eb5]@15 ~ [bb4,d5]@7 ~]/4", // Cm Ab Bb Eb Cm Bb
  C: "[[c5,eb5]@7 ~ [ab4,c5]@6 [bb4,d5]@22 ~@12]/3", // Cm Ab Bb
  D: "[~@8 [f4,bb4,d5]@31 ~ [f4,a4,c5]@15 ~ [g4,d5]@2 ~ [g4,d5]@2 ~ [g4,d5]@2]/4", // Bb F G5
  E: "[d5@4 g4 ~@3 [c5,eb5]@6 [ab4,c5]@9 ~ [bb4,d5]@7 ~, g4@3 ~@29]/2", // Cm Ab Bb
  F: "[[c5,eb5]@7 ~ [ab4,c5]@6 [bb4,d5]@5 ~@5 [eb5,g5]@2 ~@2 [c5,eb5]@9 ~@3 [c5,eb5]@6 [ab4,c5]@9 ~ [bb4,d5]@7 ~]/4", // Cm Ab Bb Eb Cm Ab Bb
  G: "[[c5,eb5]@7 ~ [ab4,c5]@6 [bb4,d5]@5 ~@5 [eb5,g5]@2 ~@2 [c5,eb5]@9 ~@3 [ab4,c5]@6 [bb4,d5]@12 ~@6]/4", // Cm Ab Bb Eb Cm Ab Bb
  H: "[[f4,bb4,d5]@31 ~]/2", I: "[f4,a4,c5]@15 ~", J: "[g4,d5]@2 ~ [g4,d5]@2 ~ [g4,d5]@2 d5@4 g4 ~@3, ~@8 g4@3 ~@5",
  K: "[c5,eb5]@6 [ab4,c5]@9 ~", L: "[bb4,d5]@7 ~ [c5,eb5]@7 ~", M: "[ab4,c5]@6 [bb4,d5]@5 ~@5",
  N: "[eb5,g5]@2 ~@2 [c5,eb5]@9 ~@3", O: "[[ab4,c5]@3 [bb4,d5]@6 ~@7]/2", P: "[eb4,g4,c5]@5 ~ [eb4,ab4,c5]@10",
  Q: "[d4,f4,bb4]@3 ~ [d4,f4,bb4]@4 [eb4,g4,c5]@7 ~", R: "[[b3,d4,g4]@15 ~]/2", S: "[[eb5,g5] ~ [c5,eb5]@10 ~@4]/2",
})).s("gm_lead_2_sawtooth").gain(0.38)

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@4 A@2 B@4 C@3 D E D E D E D E D E D F G H I J K L M N@2 O@4 P@5 Q R Q R Q R Q R Q R Q R S T Q U K V S W X Y Z AA X
  AB AC AD AE@2 X AF X AG X AH AI AJ AK ~@7 AL AM AB AC AN X AB AC AO AP AQ AP AQ AP AQ AP AQ AP AQ AP AQ AP AQ AP AQ AP
  AR ~
>`.pickRestart({
  A: "[~@4 eb2@4 c2@6 ab1@6 bb1@2 c2@2 bb1@3 ~ bb1@3 ~]/2",
  B: "[c2@5 ~ c2@2 ab1@5 ~ bb1@6 g1@2 bb1@2 eb2@3 ~ c2@6 g1@2 bb1@2 c2 ~ c2@5 ~ ab1@5 ~ bb1@2 c2@2 bb1@3 ~ bb1@3 ~]/4",
  C: "[c2@5 ~ c2@2 ab1@5 ~ bb1@25 ~ c2@2 g1@2 bb1@2 c2@2]/3", D: "eb2 ~ eb2@2 c2@2 bb1@2 c2@2 g1@2 bb1@2 c2@2",
  E: "eb2 ~ eb2@2 c2@3 ~ c2@2 g1@2 bb1@2 c2@2", F: "eb2 ~ eb2@2 c2@3 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  G: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1@2", H: "bb1@2 b1@2 c2 g1 bb1 c2",
  I: "eb2 ~ eb2@2 c2@2 bb1@2 c3@2 g2@2 bb2@2 c3@2", J: "eb3 ~ eb3@2 c3@4 bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  K: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", L: "bb1@2 c2@2 g1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  M: "f1 ~ f1 ~ f1 ~ f1@2 g1 ~ g1 ~ g1 ~ g1 ~", N: "[g1 ~ g1 ~ g1 ~ g1 ~ c2@6 ab1@6 bb1@2 c2@2 bb1@3 ~ bb1@3 ~]/2",
  O: "[c2@8 ab1@6 bb1@6 g1@2 bb1@2 eb2@4 c2@11 ~ c2@6 ab1@5 ~ bb1@2 c2@2 bb1@3 ~ bb1@3 ~]/4",
  P: "[c2@3 ~ c2@2 bb1@2 ab1@6 bb1@6 g1@2 bb1@2 eb2@3 ~ c2@6 eb2@2 c2@2 bb1@2 ab1@6 bb1@30 ~@4]/5",
  Q: "c2@2 g1@2 bb1@2 c2@2 eb2 ~ eb2@2 c2@2 bb1@2", R: "c2@2 g1@2 bb1@2 c2@2 eb2 ~ eb2@2 c2@3 ~",
  S: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", T: "f1 ~ f1 ~ f1 ~ f1 ~ bb1@3 ~ b1@4",
  U: "c3@2 g2@2 bb2@2 c3@2 eb3 ~ eb3@2 c3@4", V: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2 c2@2 g1@2 f1 ~",
  W: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2", X: "c2@6 ab1@5 ~ bb1@2 c2@2", Y: "bb1@3 ~ bb1@3 ~ c2@7 ~",
  Z: "ab1@6 bb1@5 ~ g1@2 bb1 ~", AA: "eb2@3 ~ c2@10 ~@2", AB: "bb1@3 ~ bb1@3 ~ c2@4 c2@2 bb1@2",
  AC: "ab1@3 bb1@3 g1 bb1", AD: "eb2@3 ~ c2@6 eb2@2 c2@2 bb1@2", AE: "[ab1@6 bb1@25 ~]/2",
  AF: "bb1@3 ~ bb1@3 ~ c2@4 g1@2 bb1 ~", AG: "bb1@2 c2@2 d2@3 ~ c2@4 g1@2 bb1@2",
  AH: "bb1@3 ~ bb1@3 ~ c2@4 bb1 ~ bb1 ~", AI: "c2@6 ab1@9 ~", AJ: "g1@3 ~ g1@3 ~ g1@3 ~ g1 ~ g1 ~",
  AK: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@3 ~", AL: "c3!5 ~ c3!5 ~ c3!4", AM: "c2@3 ab1@3 bb1 c2",
  AN: "eb2@4 c2@4 bb2 ~ b2@2 c3@2 g2 eb2", AO: "eb2@3 ~ c2@5 ~ c2 ~ bb1@4",
  AP: "ab1 ~ ab1 ~ ab1@2 bb1@3 ~ bb1@2 g1@2 bb1@2", AQ: "eb2 ~ eb2@2 c2 ~ c2 ~ c2 ~ c2@2 bb1 ~ bb1@2", AR: "eb2 c2@3",
})).s("gm_synth_bass_1").gain(0.44)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@4 A@2 B@4 C@3 D E D E D E D E D E D F@2 G@8 H@4 I@4 ~ J K J K J K J K J K J K L@2 M@2 N@2 O P Q R S T Q R S U V ~ W
  X W X W X Y Z@2 AA ~@7 AB R S T Q R S U AC U AC U AC U AC U AC U AC U AC U AC U AC AD@2
>`.pickRestart({
  A: "[~@4 [g4,g5]@3 [f4,f5]@4 [eb4,eb5] [g4,g5] [f4,f5] [eb4,eb5]@2]/2", // G F Eb G F Eb
  B: "[[c4,c5]@4 [bb3,bb4]@2 [c4,c5]@2 [g4,g5]@6 [f4,f5]@8 [eb4,eb5]@2 [g4,g5]@2 [f4,f5] [eb4,eb5] [c4,c5]@9 ~@3 [g4,g5]@6 [f4,f5]@8 [eb4,eb5]@2 [g4,g5]@2 [f4,f5]@2 [eb4,eb5]@4]/4", // C Bb C G F Eb G F …
  C: "[[c4,c5]@4 [bb3,bb4]@2 [c4,c5]@2 [g4,g5]@6 [f4,f5]@22 ~@4 c4@2 g3 ~ bb3@2 c4@2]/3", // C Bb C G F
  D: "eb4 ~ eb4@2 c4@2 bb3@2 c4@2 g3@2 bb3@2 c4@2", E: "eb4 ~ eb4 ~ c4@3 ~ c4@2 g3 ~ bb3 ~ c4 ~",
  F: "[eb4 ~ eb4 ~ c4@3 ~ [f2,c3,f3]@18 ~@6]/2", // F5
  G: "[~@8 [c3,g3,c4]@28 ~@4 [bb2,f3]@25 ~@7 [f2,c3,f3]@13 ~@3 [g2,d3]@12 ~@4 [c3,eb3]@5 ~ [ab2,c3]@9 ~ [bb2,d3]@7 ~]/8", // C5 Bb5 F5 G5 Cm Ab Bb
  H: "[[c3,eb3]@7 ~ [ab2,c3]@5 ~ [bb2,d3]@5 ~@5 [eb3,g3]@2 ~@2 [c3,eb3]@8 ~@4 [c3,eb3]@5 ~ [ab2,c3]@9 ~ [bb2,d3]@7 ~]/4", // Cm Ab Bb Eb Cm Ab Bb
  I: "[[c3,eb3]@7 ~ [ab2,c3]@5 ~ [bb2,d3]@5 ~@5 [eb3,g3]@2 ~@2 [c3,eb3]@8 ~@10 [bb2,d3]@4 ~@14]/4", // Cm Ab Bb Eb Cm Bb
  J: "c4@2 g3 ~ bb3 ~ c4 ~ eb4 ~ eb4@2 c4@2 bb3@2", K: "c4@2 g3@2 bb3@2 c4@2 eb4 ~ eb4 ~ c4@3 ~",
  L: "[[f2,c3,f3]@9 ~@7]/2", M: "[[c3,g3,c4]@7 ~]/2", N: "[[bb2,f3]@25 ~@7]/2", O: "[f2,c3,f3]@13 ~@3",
  P: "[g2,d3]@3 ~", Q: "[c3,eb3]@6 [ab2,c3]@9 ~", R: "[bb2,d3]@7 ~ [c3,eb3]@7 ~", S: "[ab2,c3]@5 ~ [bb2,d3]@5 ~@5",
  T: "[eb3,g3] ~ [c3,eb3]@4 ~@2", U: "[eb3,g3] ~@3 [c3,eb3]@9 ~@3", V: "~@3 [bb2,d3]@2 ~@3", W: "c3@3 ab2@5",
  X: "bb2@8 c3@7 ~", Y: "c3@6 ab2@9 ~", Z: "g2/2", AA: "g2 ~@15", AB: "~@6 [ab2,c3]@9 ~", AC: "~@6 [bb2,d3]@5 ~@5",
  AD: "[[eb3,g3] ~@3 [c3,eb3]@20 ~@8]/2", // Eb Cm
})).s("gm_overdriven_guitar").gain(0.22).pan(0.1)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A B ~@21 C D ~@2 E F G H@4 ~ I@3 ~@16 J ~@3 K ~ L M N@2 ~ O@2 P ~@13 Q@2 ~ R@2 S ~@2 T@2 ~@2 T@2 ~@21
>`.pickRestart({
  A: "~@3 d5 d5@2 d5 eb5", B: "eb5@3 ~@13", C: "~@4 a4@3 g4", D: "f4 ~@3", E: "~@4 bb4@3 g4", F: "f4@3 ~@13", G: "~ a4",
  H: "[g4@5 a4@3 b4@12 ~@4 [eb4,c5,eb5]@14 [d4,bb4,d5]@8 [eb4,c5,eb5]@10 ~@8]/4", // Cm Gm Cm
  I: "[~@3 [eb4,c5,eb5]@9 [d4,bb4,d5]@3 [eb4,c5,eb5]@5 ~@4]/3", J: "a4@3 g4 f4@2 ~@2", K: "bb4@6 g4@2 f4@3 ~@5",
  L: "a4@8 g4@5 a4@3", M: "b4@3 ~", N: "[[eb4,c5,eb5]@7 [d4,bb4,d5]@4 [eb4,c5,eb5]@5]/2", O: "[~@7 [eb4,c5,eb5]@9]/2",
  P: "[d4,bb4,d5]@3 [eb4,c5,eb5]@5", Q: "[[eb4,g4,c5,eb5]@14 [d4,f4,bb4,d5]@8 [eb4,g4,c5,eb5]@7 ~@3]/2",
  R: "[~@7 [eb4,g4,c5,eb5]@9]/2", S: "[d4,f4,bb4,d5]@3 [eb4,g4,c5,eb5]@5",
  T: "[[eb4,c5,eb5]@14 [d4,bb4,d5]@8 [eb4,c5,eb5]@7 ~@3]/2", // Cm Gm Cm
})).s("gm_string_ensemble_1").gain(0.32).pan(0.6)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note(`<
  ~@36 A ~@3 B ~@25 C ~@3 D ~@18 D ~@3 D ~@3 D E F E G E F E G E F E G E F E G ~@3
>`.pickRestart({
  A: "[eb3,eb4]@4 [c3,c4] ~@11", B: "[eb3,eb4]@4 [c3,c4]@3 ~@9", C: "~@4 [eb3,eb4]@2 [c3,c4] ~",
  D: "~@8 [eb3,eb4]@4 [c3,c4]@3 ~", E: "g4@3 f4@3 eb4 f4", F: "g4 f4 eb4@2 c4@2 ~@2",
  G: "g4@2 f4@2 eb4@4 [eb3,c4]@4 c3@3 ~", // Cm
})).s("gm_string_ensemble_1").gain(0.45).pan(0.6)

// chords · pad sweep · "SWEEP PAD" · Ebmaj7 Fsus2 Cm Fsus2 Ebmaj7 Fsus2 Ebmaj7 Bb5 …
const pad_sweep = note(`<
  ~@12
  [~@8 d6 [d6,eb6] eb6 c6 ~ g5 bb5 g5]
  [bb5 [f5,g5] eb5 ~ [c5,d5,eb5] d5 c5 bb4 [f4,g4] bb4 [f4,g4] eb4 d4 c4 [d4,eb4] c4]
  [bb3 [f3,g3] ~@6 d6 [d6,eb6] c6 bb5 g5 [f5,bb5] g5 f5]
  [~ [d5,eb5] [c5,eb5] eb5 [c5,d5] ~ bb4 [f4,g4] bb4 [f4,g4] eb4 d4 [c4,eb4] d4 c4 bb3]
  [g3 f3 g3@2 f3@2 ~@10]
  ~@100
>`).s("gm_pad_sweep").gain(0.55).pan(0.3)

// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note("<~@47 A B C@2 A B D E ~@31 F@4 ~@25 G@2>".pickRestart({
  A: "[g5,c6]", B: "[f5,bb5]@15 ~", C: "[[g5,c6]@29 ~@3]/2", D: "[g5,c6]@15 ~", E: "eb6@2 ~ d6@3 c6 ~ c6@5 ~@3",
  F: "[~@48 bb5@13 ~@3, [g5,c6]@61 ~@3]/4", G: "[~@4 [g3,c4,g4]@19 ~@9, eb4@23 ~@9]/2",
})).s("gm_synth_strings_2").gain(0.38).pan(0.4)

// other · piano · "A.PIANO 1"
const piano = note("<~@63 A@9 B ~@17 A@25 C@2>".pickRestart({
  A: "c6 ~@3 c6 ~@3 c6 ~@3 c6 ~@3", B: "c6 ~@3 c6 ~@11", C: "[c6 ~@3 c6@20 ~@8]/2",
})).s("gm_piano").gain(0.44).pan(0.6)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_2 = note(`<
  ~@4 A@2 B@4 C@3 ~@2 D@2 ~@7 E@6 ~ F@3 G@4 H@4 ~@4 I ~@8 J@2 K@2 L ~ M N O P Q R O P Q R S ~ T U T V T V T W@2 ~@8 O P
  Q R O P Q R Q R Q R Q R Q R Q R Q R Q R Q R Q X@2
>`.pickRestart({
  A: "[~@4 [c3,g3,c4]@4 c3@6 ab2@9 ~ bb2@8]/2", B: "[c3@8 ab2@6 bb2@9 ~ eb3@3 ~ c3@9 ~@3 ab2@16 bb2@8]/4",
  C: "[c3@4 ab2@3 bb2@11 ~@6]/3", D: "[~@8 [c4,eb4]@15 ~@9]/2", E: "[~@8 [f3,c4]@31 ~ [g3,c4]@31 ~ [bb3,f4]@14 ~@10]/6",
  F: "[~@2 c4@2 eb4 ~ a4@2 g4@11 ~@5 c3@6 ab2@9 ~ bb2@8]/3",
  G: "[c3@8 ab2@6 bb2@9 ~ eb3@3 ~ c3@9 ~@3 c3@6 ab2@9 ~ bb2@8]/4",
  H: "[c3@8 ab2@6 bb2@9 ~ eb3@3 ~ c3@9 ~@3 ab2@6 bb2@4 ~@14]/4", I: "[c4,eb4]@15 ~", J: "[[f3,c4]@31 ~]/2",
  K: "[[g3,c4]@31 ~]/2", L: "[bb3,f4]@7 ~", M: "~@10 c4@2 eb4 ~ a4@2", N: "g4@11 ~@5", O: "c3@6 ab2@9 ~", P: "bb2 c3",
  Q: "ab2@6 bb2@9 ~", R: "eb3@3 ~ c3@9 ~@3", S: "ab2@3 bb2@2 ~@3", T: "[g3,c4]@5 ~ [eb3,ab3]@9 ~",
  U: "[f3,bb3]@8 [g3,c4]@7 ~, ab3 ~@15", V: "[f3,bb3]@8 [g3,c4]@7 ~", W: "[d3,g3]/2", X: "[eb3@3 ~ c3@20 ~@8]/2",
})).s("gm_overdriven_guitar").gain(0.29).pan(0.9)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@4 A@2 B@4 C@3 D E D F D E D E D E D G ~ H@3 I J@2 K ~@10 L M L N L M L M L M L M ~@2 O@2 ~ P@2 Q ~@35 R S T S T S T
  S T S T S T S T S T U@2
>`.pickRestart({
  A: "[~@4 [g3,g4]@3 [f3,f4]@4 [eb3,eb4] [g3,g4] [f3,f4] [eb3,eb4]@2]/2", // G F Eb G F Eb
  B: "[[c3,c4]@4 [bb2,bb3]@2 [c3,c4]@2 [g3,g4]@6 [f3,f4]@8 [eb3,eb4]@2 [g3,g4]@2 [f3,f4] [eb3,eb4] [c3,c4]@9 ~@3 [g3,g4]@6 [f3,f4]@8 [eb3,eb4]@2 [g3,g4]@2 [f3,f4]@2 [eb3,eb4]@4]/4", // C Bb C G F Eb G F …
  C: "[[c3,c4]@2 [bb2,bb3] [c3,c4] [g3,g4]@3 [f3,f4]@11 ~@2 c3 g2 bb2 c3]/3", // C Bb C G F
  D: "eb3 ~ eb3@2 c3@2 bb2@2 c3@2 g2@2 bb2@2 c3@2", E: "eb3 ~ eb3 ~ c3@3 ~ c3@2 g2@2 bb2@2 c3 ~",
  F: "eb3 ~ eb3@2 c3@3 ~ c3@2 g2@2 bb2@2 c3@2", G: "eb3 ~ eb3 ~ c3@3 ~@9", H: "[~@8 [c4,eb4]@15 ~ [c4,eb4]@15 ~@9]/3",
  I: "~@10 c4@3 ~ eb4@2", J: "[f4@24 g4@2 ~ g4@2 ~ g4@2]/2", K: "g4 ~@3",
  L: "c3@2 g2@2 bb2@2 c3 ~ eb3 ~ eb3@2 c3@2 bb2@2", M: "c3@2 g2@2 bb2@2 c3@2 eb3 ~ eb3 ~ c3@3 ~",
  N: "c3@2 g2@2 bb2@2 c3@2 eb3 ~ eb3@2 c3@3 ~", O: "[c4,eb4]@15 ~", P: "[~@2 c4@3 ~ eb4@2 f4@24]/2",
  Q: "g4@2 ~ g4@2 ~ g4@2 g4@4 ~@4", R: "[g3,g4]@5 ~ [f3,f4]@6 [eb3,eb4]@2 [f3,f4] ~",
  S: "[g3,g4]@2 [f3,f4]@2 [eb3,eb4]@4 [c3,c4]@7 ~", T: "[g3,g4]@3 [f3,f4]@3 [eb3,eb4] [f3,f4]",
  U: "[[g3,g4] [c3,c4]@5 ~@2]/2", // G C
})).s("gm_distortion_guitar").gain(0.32).pan(0.3)

// other · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note("<~@72 A@3 B C D E F G H ~@35>".pickRestart({
  A: "[~@7 g5@11 d5 eb5@3 ~@2]/3", B: "c5 d5 eb5 f5", C: "g5 a5@3 bb5@3 ~ c6@6 ab5 ~",
  D: "bb5!2 [g5,bb5]!2 g5 bb5 [g5,bb5] g5 [g5,bb5] bb5 [g5,bb5] g5 [g5,bb5] bb5 [g5,bb5] g5", // Gm
  E: "[g5,bb5]!2 bb5 g5 [g5,bb5] bb5 bb5@10, ~@6 g5 ~@9", F: "[c5,c6]@4 ~@2 [d5,d6]@9 ~",
  G: "c3 bb2 g2 bb2 c3 eb3 c3 bb2 c3 bb2 ~ bb2 c3 eb3 f3@2, ~@5 g2 ~@2", H: "gb3@7 ~",
})).s("gm_distortion_guitar").gain(0.49).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B@3 C B D E F G@3 H C@16 B@3 C B@3 C B I J@3 K L@16 B@3 L B@3 L B@5 L B@3 M N ~@4 L@3 O B@3 L B@3 L B L B L B L
  B L B L B L B L B L B P ~
>`.pickRestart({
  A: "~ x!2 ~", B: "x!2", C: "~ x ~@2 x ~@3", D: "x ~@3 x ~@2 x", E: "~@2 x!2", F: "~@3 x!2 ~@3", G: "x!2 ~@2 x ~@3",
  H: "x!2 ~ x!2 ~@3", I: "~ x ~@6", J: "x ~@3 x!2 ~@2", K: "x ~@3 x!2 ~ x", L: "x ~@4 x ~@2", M: "x!8", N: "x!7 ~",
  O: "x!4", P: "x",
})).gain(0.44)

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

// drums · low tom
const low_tom = s("lt").struct("<~@41 [~ x ~ x]!2 ~@29 [~@4 x ~@5 x ~@3 x!2] ~@9 [~ x ~ x]!4 ~@31>").gain(0.44)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B@7 ~@8 C ~@5 C ~ C ~ C ~ D B@9 E ~@7 F ~@5 F ~ F ~ F ~ F B@9 G B@9 ~@5 F ~@2 B@25 E ~
>`.pickRestart({
  A: "~@2 x!2", B: "x!4", C: "~ x ~@2", D: "~ x!3", E: "x!2 ~@2", F: "~@3 x", G: "x",
})).gain(0.38)

// drums · mid tom
const mid_tom = s("mt").struct("<~@72 [~@5 x ~ x] ~@9 [~ x ~ x]!4 ~@31>").gain(0.44)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@11 A B@4 C B@3 D B@5 D B D B D B E ~@10 B@4 F B@2 G B@5 G B G B G B G ~@23 B G B ~@28
// … 31 more lines

More by Bon Jovi