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: 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 R S R Q P T@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 U@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: "[eb4,g4,c5]@5 ~ [eb4,ab4,c5]@9 ~",
  S: "[d4,f4,bb4]@4 [d4,f4,bb4]@3 ~ [eb4,g4,c5]@7 ~", T: "[[b3,d4,g4]@15 ~]/2", U: "[[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 S Q R Q R Q R Q R T U Q V K W T X Y Z AA AB AC
  AD AE AF AG@2 AH AI Y AJ AC AK AL AM AN ~@7 AO AP AQ AR AS Y AD AR AT AU AV AW AV AU AV AX AV AX AV AY AV AX AV AZ AV
  BA BB ~
>`.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@4]/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@4]/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: "c2@2 g1@2 bb1@2 c2@2 eb2 ~ eb2 ~ c2@3 ~", T: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  U: "f1 ~ f1 ~ f1 ~ f1 ~ bb1@3 ~ b1@4", V: "c3@2 g2@2 bb2@2 c3@2 eb3 ~ eb3@2 c3@4",
  W: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2 c2@2 g1@2 f1 ~", X: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2",
  Y: "c2@6 ab1@5 ~ bb1@2 c2@2", Z: "bb1@3 ~ bb1@3 ~ c2@7 ~", AA: "ab1@6 bb1@5 ~ g1@2 bb1 ~", AB: "eb2@3 ~ c2@10 ~@2",
  AC: "c2@3 ab1@3 bb1 c2", AD: "bb1@3 ~ bb1@3 ~ c2@4 c2@2 bb1@2", AE: "ab1@5 ~ bb1@5 ~ g1@2 bb1@2",
  AF: "eb2@3 ~ c2@6 eb2@2 c2@2 bb1@2", AG: "[ab1@6 bb1@25 ~]/2", AH: "c2@5 ~ ab1@5 ~ bb1@2 c2@2",
  AI: "bb1@3 ~ bb1@3 ~ c2@4 g1@2 bb1 ~", AJ: "bb1@2 c2@2 d2@3 ~ c2@4 g1@2 bb1@2",
  AK: "bb1@3 ~ bb1@3 ~ c2@4 bb1 ~ bb1 ~", AL: "c2@6 ab1@9 ~", AM: "g1@3 ~ g1@3 ~ g1@3 ~ g1 ~ g1 ~",
  AN: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@3 ~", AO: "c3!5 ~ c3!5 ~ c3!4", AP: "c2@5 ~ ab1@6 bb1@2 c2@2",
  AQ: "bb1@3 ~ bb1@3 ~ c2@3 ~ c2@2 bb1@2", AR: "ab1@3 bb1@3 g1 bb1", AS: "eb2@4 c2@4 bb2 ~ b2@2 c3@2 g2 eb2",
  AT: "eb2@3 ~ c2@5 ~ c2 ~ bb1@4", AU: "ab1@2 ab1 ~ ab1@2 bb1@3 ~ bb1@2 g1@2 bb1@2",
  AV: "eb2 ~ eb2@2 c2 ~ c2 ~ c2 ~ c2@2 bb1 ~ bb1@2", AW: "ab1 ~ ab1@2 ab1 ~ bb1@3 ~ bb1@2 g1@2 bb1@2",
  AX: "ab1 ~ ab1 ~ ab1@2 bb1@3 ~ bb1@2 g1@2 bb1@2", AY: "ab1 ~ ab1@2 ab1@2 bb1@3 ~ bb1@2 g1@2 bb1@2",
  AZ: "ab1 ~ ab1 ~ ab1@2 bb1@3 ~ bb1@2 g1@2 bb1 ~", BA: "ab1 ~ ab1 ~ ab1@2 bb1@4 bb1@2 g1@2 bb1@2", BB: "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 F D G D G D G D H@2 I@8 J@4 K@4 ~ L M N O P M P M P M P M Q@2 R@2 S@2 T U V W X Y Z W X AA AB ~
  AC AD AC AD AC AD AE AF@2 AG ~@7 AH W X Y Z W X AA AI AA AI AA AI AA AI AA AI AA AI AA AI AA AI AA AI AJ@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@2 bb3@2 c4@2",
  F: "eb4 ~ eb4 ~ c4@2 ~@2 c4@2 g3 ~ bb3 ~ c4 ~", G: "eb4 ~ eb4 ~ c4@3 ~ c4@2 g3 ~ bb3 ~ c4 ~",
  H: "[eb4 ~ eb4 ~ c4@3 ~ [f2,c3,f3]@18 ~@6]/2", // F5
  I: "[~@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
  J: "[[c3,eb3]@7 ~ [ab2,c3]@5 ~ [bb2,d3]@5 ~@5 [eb3,g3]@2 ~@2 [c3,eb3]@8 ~@4 [c3,eb3]@6 [ab2,c3]@9 ~ [bb2,d3]@7 ~]/4", // Cm Ab Bb Eb Cm Ab Bb
  K: "[[c3,eb3]@7 ~ [ab2,c3]@5 ~ [bb2,d3]@5 ~@5 [eb3,g3] ~@3 [c3,eb3]@9 ~@9 [bb2,d3]@4 ~@14]/4", // Cm Ab Bb Eb Cm Bb
  L: "c4@2 g3 ~ bb3@2 c4@2 eb4 ~ eb4@2 c4@2 bb3@2", M: "c4@2 g3@2 bb3@2 c4@2 eb4 ~ eb4 ~ c4@3 ~",
  N: "c4@2 g3@2 bb3@2 c4@2 eb4 ~ eb4@2 c4@2 bb3@2", O: "c4@2 g3@2 bb3@2 c4@2 eb4 ~ eb4 ~ c4@2 ~@2",
  P: "c4@2 g3 ~ bb3 ~ c4 ~ eb4 ~ eb4@2 c4@2 bb3@2", Q: "[[f2,c3,f3]@9 ~@7]/2", R: "[[c3,g3,c4]@7 ~]/2",
  S: "[[bb2,f3]@25 ~@7]/2", T: "[f2,c3,f3]@13 ~@3", U: "[g2,d3]@3 ~", V: "[c3,eb3]@5 ~ [ab2,c3]@9 ~",
  W: "[bb2,d3]@7 ~ [c3,eb3]@7 ~", X: "[ab2,c3]@5 ~ [bb2,d3]@5 ~@5", Y: "[eb3,g3] ~ [c3,eb3]@4 ~@2",
  Z: "[c3,eb3]@6 [ab2,c3]@9 ~", AA: "[eb3,g3] ~@3 [c3,eb3]@9 ~@3", AB: "~@3 [bb2,d3]@2 ~@3", AC: "c3@3 ab2@5",
  AD: "bb2@8 c3@7 ~", AE: "c3@6 ab2@9 ~", AF: "g2/2", AG: "g2 ~@15", AH: "~@6 [ab2,c3]@9 ~", AI: "~@6 [bb2,d3]@5 ~@5",
  AJ: "[[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 E F G F H F I F H F I J H F G F H ~@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: "~@8 [eb3,eb4]@3 ~ [c3,c4]@3 ~", F: "g4@3 f4@3 eb4 f4",
  G: "g4 f4 eb4@2 c4@2 ~@2", H: "g4@2 f4@2 eb4@4 [eb3,c4]@4 c3@3 ~", I: "g4@2 f4@2 eb4@4 c4@3 ~@5",
  J: "g4@6 f4@6 eb4@2 f4 ~",
})).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 D 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 W V T X@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 Y@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@7 ~]/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: "[g3,c4]@6 [eb3,ab3]@9 ~", X: "[d3,g3]/2",
  Y: "[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 F G D H D H D H D I ~ J@3 K L@2 M ~@10 N O N P Q R Q R Q R Q R ~@2 S@2 ~ T@2 U ~@35 V W X W V Y Z
  W Z Y Z W Z Y Z AA Z AB@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@2 c3@3 ~ c3@2 g2@2 bb2@2 c3@2",
  F: "eb3 ~ eb3@2 c3@2 bb2@2 c3@2 g2@2 bb2@2 c3 ~", G: "eb3 ~ eb3@2 c3@2 ~@2 c3@2 g2@2 bb2@2 c3 ~",
  H: "eb3 ~ eb3 ~ c3@3 ~ c3@2 g2@2 bb2@2 c3 ~", I: "eb3 ~ eb3 ~ c3@3 ~@9", J: "[~@8 [c4,eb4]@15 ~ [c4,eb4]@15 ~@9]/3",
  K: "~@10 c4@3 ~ eb4@2", L: "[f4@24 g4@2 ~ g4@2 ~ g4@2]/2", M: "g4 ~@3",
  N: "c3@2 g2@2 bb2@2 c3@2 eb3 ~ eb3@2 c3@2 bb2@2", O: "c3@2 g2@2 bb2@2 c3@2 eb3 ~ eb3@2 c3@3 ~",
  P: "c3@2 g2@2 bb2@2 c3 ~ eb3 ~ eb3@2 c3@2 ~@2", Q: "c3@2 g2@2 bb2@2 c3 ~ eb3 ~ eb3@2 c3@2 bb2@2",
  R: "c3@2 g2@2 bb2@2 c3@2 eb3 ~ eb3 ~ c3@3 ~", S: "[c4,eb4]@15 ~", T: "[~@2 c4@3 ~ eb4@2 f4@24]/2",
  U: "g4@2 ~ g4@2 ~ g4@2 g4@4 ~@4", V: "[g3,g4]@5 ~ [f3,f4]@6 [eb3,eb4]@2 [f3,f4] ~",
  W: "[g3,g4]@2 [f3,f4]@2 [eb3,eb4]@4 [c3,c4]@7 ~", X: "[g3,g4]@6 [f3,f4]@6 [eb3,eb4]@2 [f3,f4] ~",
  Y: "[g3,g4] [f3,f4] [eb3,eb4]@2 [c3,c4]@4", Z: "[g3,g4]@3 [f3,f4]@3 [eb3,eb4] [f3,f4]",
  AA: "[g3,g4]@2 [f3,f4]@2 [eb3,eb4]@3 ~ [c3,c4]@8", AB: "[[g3,g4] [c3,c4]@5 ~@2]/2",
})).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)

// … 44 more lines

More by Bon Jovi