Strudelify
Love Is A Battlefield cover art

1983 · Best Shots

Love Is A Battlefield

Pat Benatar

KeyD minorTempo182 bpm
0:00/0:00
// Love Is A Battlefield — Pat Benatar
// 182 bpm, 4/4, key D minor. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 243 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(182/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 · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@13 A@2 ~@14 B@2 ~@6 C@2 ~@2 D@4 ~ E F ~@37 C@2 ~@2 B@2 ~@2 C@2 ~@2 B@2 ~@2 C@2 ~@2 B@2 ~@2 G@5 E F ~@37 C@2 ~@2 B@2
  ~@2 C@2 ~@2 B@2 ~@2 C@2 ~@2 B@2 ~@2 H@5 E F ~@33 B@2 ~@2 B@2 ~@2 C@2 ~@2 B@2 ~@2 C@2 ~@2 B@2 ~@2 C@2
>`.pickRestart({
  A: "[~@14 d5@8 [d5,e5] [b4,c5] [g4,a4] [e4,f4] [c4,d4] b3 a3 [f3,g3] [d3,e3] c3, ~@7 [f5,a5,c6]@5 ~@4]/2", // Dsus2 Cmaj7 Gsus2 Fmaj7 Csus2 Fsus2 Dsus2 F
  B: "[~@12 [d5,f5,a5,c6]@10 [d5,e5] [b4,c5] [g4,a4] [e4,f4] [c4,d4] b3 a3 [f3,g3] [d3,e3] c3]/2", // Dm7 Dsus2 Cmaj7 Gsus2 Fmaj7 Csus2 Fsus2 Dsus2
  C: "[~@3 [d4,f4,a4,c5]@5]/2", D: "[~@6 c5 bb3@25, ~@3 [d4,f4]@13, ~@12 a4@5 ~@47]/4",
  E: "~@8 c6@3 g5 e5 [b4,c5] [g4,a4] [d4,e4,f4], ~@8 [d5,f5,a5]@5 ~@3", F: "c4 ~@15",
  G: "[~@12 c5@2 bb3@63 ~@3, ~@6 [d4,f4]@33 ~, ~@12 a4@5 ~@63]/5", // Dm
  H: "[~@12 c5@2 bb3@65 ~, ~@3 [d4,f4]@17, ~@12 a4@5 ~@63]/5", // Dm
})).s("gm_synth_brass_1").gain(0.48).pan(0.4)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@3 A B C@2 A B D@2 A B E@2 A B F G A B D@2 A B D@2 A B C@2 A B D@2 A B D@2 A B H@6 I@8 J@2 K@2 L@2 M@2 J@2 K@2 L@2
  M@2 J@2 K@2 N O P Q R@4 A B D@2 A B D@2 A B D@2 S T D@2 S U D@2 S U D@2 S U V@2 W@4 I@8 J@2 K@2 L@2 M@2 J@2 K@2 L@2
  M@2 J@2 K@2 N O P Q R@4 S T D@2 S U D@2 S U D@2 S T D@2 S U D@2 S U D@2 S U V@2 W@4 X ~@8 Y ~ Y ~ Y Z AA AB AC AD AE
  AF AG AH AI AB AC AD AE AF AG AH AI S U D@2 S U D@2 S U D@2 S U D@2 S U D@2 S U D@2 S U D@2
>`.pickRestart({
  A: "d2@4 ~@2 d2@2 ~@2 a1 ~ d2@4", B: "~@2 a1 ~ c2@2 ~@2 c2@6 ~@2", C: "[a1@5 ~ a1@5 ~ bb1@12 ~@2 bb1 ~ bb1@2 c2@2]/2",
  D: "[a1@5 ~ a1@5 ~ bb1@14 ~@2 bb1@2 c2@2]/2", E: "[a1@5 ~ a1@5 ~ bb1@9 ~ bb1@5 ~ bb1@2 c2@2]/2",
  F: "a1@5 ~ a1@5 ~ bb1@4", G: "~@2 bb1@5 ~ bb1@6 ~@2", H: "[a1@5 ~ a1@5 ~ bb1@72 ~@4 a1@3 ab1 g1 gb1 [e1,f1]@2]/6",
  I: "[d1@15 ~]/8", J: "[d2@7 ~]/2", K: "[c2@29 ~@3]/2", L: "[bb1@29 ~@3]/2", M: "[g1@29 ~@3]/2",
  N: "bb1@5 ~ bb1@2 ~@2 bb1@2 ~@2 bb1 ~", O: "bb1@7 ~ bb1@8", P: "g1@5 ~ g1@2 ~@2 g1@2 ~@2 g1 ~", Q: "g1@7 ~",
  R: "[g1@15 ~]/4", S: "d2@2 ~ d2 ~ d1 d2@2", T: "e1 ~ g1@2 c2@3 ~ c2@6 ~@2", U: "e1@2 g1@2 c2@3 ~ c2@6 ~@2",
  V: "[a1@5 ~ a1@5 ~ bb1@18 ~@2]/2", W: "[bb1@15 ~]/4", X: "e1 ~@7", Y: "~@10 d1@2 f1 ~ f1@2",
  Z: "~@2 d1@2 f1 ~ f1@2 ~@2 d1@2 f1 ~ f1@2", AA: "~@2 d1@2 f1 ~ f1@2 a1 ~ a1@2 c2@2 db2@2", AB: "d2@2 ~ d2 ~@2 d2@2",
  AC: "~@2 d2@2 d2@2 ~@2 d2@2 a2 ~ f2@2 e2@2", AD: "c2@2 ~ c2 ~@2 c2@2",
  AE: "~@2 c2@2 c2@2 ~@2 d3@2 a2 ~ f2@2 e2@2, ~@8 c3 ~@7", AF: "bb1@4 ~@2 bb1@3 ~@3 bb1@4",
  AG: "~@2 bb1@2 bb1@2 ~@2 bb1 ~ bb1 ~ bb1@2 ~@2", AH: "bb1@2 ~ bb1 ~@2 bb1@2",
  AI: "~@2 bb1@2 bb1@2 f1@2 gb1@2 g1 ~ bb1@2 c2@2",
})).s("gm_electric_bass_finger").gain(0.57)

// chords · pad new age · "FANTASIA"
const pad_new_age = note(`<
  ~@47 A ~ B ~ C ~@3 A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~@37 A ~ B ~ C ~@3 A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A
  ~ B ~ C ~ D ~@37 A ~ B ~ C ~@3 A ~ B ~ C ~@3 A ~ B ~ C ~@3 A ~ B ~ C ~@31
>`.pickRestart({
  A: "[f5,a5,d6] ~@15", B: "[e5,g5,c6] ~@15", C: "[d5,f5,bb5] ~@15", D: "[bb4,d5,g5] ~@15",
})).s("gm_pad_new_age").gain(0.56).pan(0.3)

// chords · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~@2 A@6 B@8 C@8 D@8 E@8 F@7 ~@31 G@6 H@8 I@8 J@8 K@3 ~@35 G@6 H@8 I@8 L@8 M@7 ~@15 N@16 O@6 P@8 Q@8 R@7
>`.pickRestart({
  A: "[~@15 [f4,a4,d5]@20 e4@12 ~@12 [f4,bb4,d5]@20 [a4,d5,f5]@17, ~@35 c5@26 ~@35, ~@35 g4@13 e4@13 ~@35, ~@47 a4@13 ~@36]/6", // Dm Bb Dm
  B: "[~@3 e5@12 ~@12 [d5,f5,bb5]@20 [a4,d5,f5]@20 ~@24 [bb4,d5]@20 [a3,d4,f4]@17, ~@3 c5@26 ~@38 c5@26 ~@35, ~@3 g4@13 e5@13 ~@38 [g4,e5]@13 e4@13 ~@35, ~@15 a5@13 ~@51 a4@12 f4@19 ~@18]/8", // Bb Dm Bb Dm C
  C: "[~@3 e4@12 ~@12 [bb3,d4,f4]@20 [d4,f4,a4]@20 e4@12 ~@12 [bb3,d4,f4]@20 [d4,f4,a4]@17, ~@3 c4@26 ~@38 c4@26 ~@35, ~@3 g3@13 e4@13 ~@38 g4@13 e4@13 ~@35, ~@15 a3@13 ~@51 a3@13 ~@36]/8", // Bb Dm Bb Dm
  D: "[~@3 e4@12 ~@12 [d5,f5,bb5]@20 [a4,d5,f5]@20 e5@12 ~@12 [f4,bb4,d5]@20 [a4,d5,f5]@17, ~@3 [c4,g4]@13 e5@13 ~@38 g4@13 e4@13 ~@35, ~@15 [c5,a5]@13 ~@39 c5@26 ~@35, ~@79 a4@13 ~@36]/8", // Bb Dm Bb Dm C5 F
  E: "[~@3 e5@12 ~@12 [bb4,d5,f5]@20 [a4,d5,f5]@20 ~@24 [f4,bb4,d5]@20 [a4,d5,f5]@17, ~@3 c5@26 ~@38 c5@26 ~@35, ~@3 g4@13 e5@13 ~@50 a4@13 ~@36, ~@15 a4@13 ~@39 [g4,e5]@13 e4@13 ~@35]/8", // Bb Dm Bb Dm C
  F: "[~@3 e5@12 ~@64 a5@32 ~, ~@3 c5@26 ~@83, ~@3 g4@13 e5@13 ~@83, ~@15 a4@12 [bb4,d5,f5]@84 ~]/7", // Bb
  G: "[~@15 [g3,bb3]@64 [a3,d4,f4]@17, ~@5 d4@21 ~@6, ~@15 a4@17 ~@64]/6", // Gm Dm
  H: "[~@3 e4@12 ~@12 [bb3,d4,f4]@20 [d4,f4,a4]@20 e4@12 ~@12 [bb3,d4,f4]@20 [f4,a4,d5]@17, ~@3 c4@26 ~@38 c4@26 ~@35, ~@3 g3@13 e4@13 ~@38 g4@13 e4@13 ~@35, ~@15 a3@13 ~@51 a3@13 ~@36]/8", // Bb Dm Bb Dm
  I: "[~@3 e4@12 ~@12 [f4,bb4,d5]@20 [a4,d5,f5]@20 e5@12 ~@12 [bb4,d5,f5]@20 [a3,d4,f4]@17, ~@3 c5@26 ~@38 c5@26 ~@35, ~@3 g4@13 e4@13 ~@50 a5@13 ~@36, ~@15 a4@13 ~@39 g4@13 e5@13 ~@35]/8", // Bb Dm Bb Dm
  J: "[~@3 e4@12 ~@12 [bb3,d4,f4]@20 [d4,f4,a4]@20 [c4,e4]@12 ~@12 [bb3,d4,f4]@20 [a4,d5,f5]@17, ~@3 c4@26 ~@51 e4@13 ~@35, ~@3 g3@13 e4@13 ~@38 g4@14 ~@47, ~@15 a3@13 ~@51 [a3,c4]@13 ~@36]/8", // Bb Dm C Bb Dm Am
  K: "[~ e5@4 ~@4 [bb3,d4,f4]@7, ~@3 c5@26 ~@19, ~@3 g4@13 e4@13 ~@19, ~@15 a4@13 ~@20]/3", // Bb
  L: "[~@3 e4@12 ~@12 [bb3,d4,f4]@20 [d4,f4,a4]@20 [c4,e4]@12 ~@12 [bb3,d4,f4]@20 [f4,a4,d5]@17, ~@3 c4@26 ~@51 e4@13 ~@35, ~@3 g3@13 e4@13 ~@38 g4@14 ~@47, ~@15 a3@13 ~@51 [a3,c4]@13 ~@36]/8", // Bb Dm C Bb Dm Am
  M: "[~@3 e4@12 ~@12 [bb3,d4,f4]@84 ~, ~@3 c5@26 ~@83, ~@3 g4@13 e4@13 ~@83, ~@15 a4@13 ~@84]/7", // Bb
  N: "[~@15 [a4,d5,f5]@32 [g4,c5,e5]@32 [f4,bb4,d5]@49]/8", // Dm C Bb
  O: "[~@15 [a4,d5,f5]@20 e5@12 ~@12 [f4,bb4,d5]@20 [a4,d5,f5]@17, ~@35 c5@26 ~@35, ~@35 g4@13 e4@13 ~@35, ~@47 a4@13 ~@36]/6", // Dm Bb Dm
  P: "[~@3 e5@12 ~@12 [bb4,d5,f5]@20 [a4,d5,f5]@20 e5@12 ~@12 [d4,f4,bb4]@20 [d5,f5,a5]@17, ~@3 c5@26 ~@38 c5@26 ~@35, ~@3 g4@13 e5@13 ~@50 a4@13 ~@36, ~@15 a4@13 ~@39 g4@13 e4@13 ~@35]/8", // Bb Dm Bb Dm
  Q: "[~@3 e5@12 ~@12 [d5,f5,bb5]@20 [d5,f5,a5]@20 e5@12 ~@12 [bb4,d5,f5]@20 [d5,f5,a5]@17, ~@3 c5@26 ~@38 c5@26 ~@35, ~@3 g5@13 e5@13 ~@50 a5@13 ~@36, ~@15 a5@13 ~@39 g5@13 e5@13 ~@35]/8", // Bb Dm Bb Dm
  R: "[~@3 [c5,e5]@12 ~@12 [bb4,d5,f5]@20 [a4,d5,f5]@20 e4@12 ~@12 [f4,bb4,d5]@20 ~, ~@3 g5@13 e5@13 ~@38 g4@13 e4@13 ~@19, ~@15 a5@32 ~@32 a4@13 ~@20, ~@15 c5@13 ~@39 c5@26 ~@19]/7", // C Bb Dm Bb
})).s("gm_pad_poly").gain(0.39)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@12 A@2 ~@5 B C D@2 ~ E F G ~ A@2 ~ H I J K@4 L M N O P Q@2 ~@14 R@2 ~ S T ~@3 U@2 ~ V ~ W ~ X@3 ~ Y@5 Z@2 AA AB AC@2
  ~ AD AE AF AG AH AI@2 AJ AK AL AM AN AO@2 AP ~ AQ AR AS AT@2 AU@3 ~@13 R@2 ~ S T ~@3 U@2 ~ V ~ W ~ X@3 ~ AV@4 ~ Z@2 AA
  AB AC@2 ~ AD AE AF AG AH AI@2 AJ AK AL AM AN AO@2 AP ~ AQ AR AS AT@2 AU@3 ~@16 AW AX AY AZ BA BB BC BD BE AX AY AZ BA
  BB BC BD BF Z@2 AA AB AC@2 ~ AD AE AF AG AH AI@2 AJ AK AL AM AN AO@2 AP ~ AQ AR AS AT@2
>`.pickRestart({
  A: "[~ c5, ~@14 d4@17 ~, ~@15 [e4,a4]@17]/2", B: "[d4,f4,a4,c5] ~@5 [d4,f4,a4,c5]@2 ~@4 [d4,f4,a4,c5]@2 ~@2",
  C: "~@2 [d4,g4,c5] ~@5 [d4,g4,c5]@2 ~@6", D: "[[d4,g4,c5]@2 ~@4 [d4,g4,c5]@2 ~@4 [d4,f4,g4,c5]@19 ~]/2",
  E: "~@12 c4 ~ c4 ~", F: "~@8 c4 ~ [c4,c5] ~ c4 ~ c4 ~", G: "[c4,c5] ~@3 c4 ~@11", H: "~@4 c4 ~@5 d4 ~@5",
  I: "c4 ~@9 [g3,g4] ~@3 [g3,g4] ~", J: "~@4 c4 ~@5 c4 ~@5",
  K: "[c4 ~@15 f5@12 ~ c5@14 ~ [a4,d5]@2 [e4,a4]@15 ~@3, ~@15 [f4,a4,d5]@13 [e4,a4]@16 ~@20]/4", // D5 A5 Dm A5
  L: "~@4 d4 db4 [bb3,b3,c4] a3 d4 ~ a3 ~ c4@2 g3@2",
  M: "~@5 [e4,ab4] [f4,a4]@3 ~ [f4,a4]@2 [e4,a4]@4, ~@2 [eb4,g4] ~@5", // E F A5 Eb
  N: "[f4,a4] e4 [d4,eb4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4]@3 ~ [f4,a4]@3 ~", // F D A5 F
  O: "[e4,a4]@2 ~ [db4,d4,g4] c4 f4 ~@6 a3@4, ~ [eb4,ab4] ~@6", P: "c4",
  Q: "[~@7 a4@9, ~ bb3@15, ~@3 c4@13, ~@5 f4@11]/2", R: "[~@3 c5@13, [d4,f4], ~ a4@7]/2", S: "~@3 [ab4,c5]@5",
  T: "[g4,b4]", U: "[~@6 [d4,f4,a4,c5]@25 ~]/2", V: "~@6 [c4,d4,g4] [bb3,c4,f4]", W: "~@10 eb4@2 d4 ~@3",
  X: "[~@9 f4@7, ~@5 d4@11, ~@16 f4@11 ~@21, ~@11 [a4,c5]@13]/3", // Am
  Y: "[~@14 d4@4 ~@8 a4@51 ~@3, ~@12 g3@6 c4@59 ~@3, ~@13 bb3@6 ~@3 f4@55 ~@3]/5",
  Z: "[~ f5@18 ~@9 [a4,d5] ~ [d4,a4] ~, [f4,a4,d5]@19 ~@13]/2", AA: "~@12 [g4,c5] ~@3",
  AB: "[f4,c5] ~@5 [f4,c5] ~@5 [f4,c5] ~@3", // F5
  AC: "[[d4,a4,d5]@8 ~@4 c5@11 ~ c5@2 e4@2 c4@2 a3 ~, ~@10 c4@13 ~@9, ~@11 [e4,g4]@12 ~@9]/2", AD: "~@12 g2@2 c3 ~",
  AE: "d3@2 a3 ~ [a3,c4] ~@5 [a3,d4] ~@5", AF: "[a3,c4] ~@5 [a3,d4] ~@5 [a3,d4] ~ [a3,d4] ~",
  AG: "~@4 [a3,c4] ~@5 [a3,d4] ~@5", AH: "[a3,c4] ~@5 [a3,c4] ~@9",
  AI: "[~@3 f5@17 ~@3 e5@9, f4@5 c4@3, ~ a4@19 ~ g4@11, ~ d5@9 ~ c5@5]/2", AJ: "~@4 [g3,c4] ~@5 [g3,c4] ~@5",
  AK: "~@8 d3 ~ d3 ~ c3 ~ c3 ~", AL: "d3 ~ f3 ~ [a3,d4] ~@11", AM: "~@2 g3@2 [g3,c4]@2 ~@4 [g3,c4,e4] ~@5",
  AN: "~@8 c4 ~ c4 ~@5", AO: "[~ c5, ~@14 d4@17 ~, ~@15 [f4,a4]@17]/2", AP: "~@12 [e4,g4,c5] ~@3",
  AQ: "~@15 [eb4,e4,g4], ~@7 d4", AR: "[f4,ab4,a4] ~ [f4,a4]@2 [f4,a4] ~ [f4,a4]@2 [f4,a4]@4 [e4,a4]@2 [f4,a4] ~",
  AS: "[e4,a4]@2 [d4,a4]@2 [e4,a4] ~ [e4,a4] ~ [e4,a4]@3 ~ [f4,a4]@3 ~", // A5 D5 A5 F
  AT: "[[e4,a4]@3 ~@2 [db4,gb4] f4 c4@5 c4@19 ~, ~@3 [eb4,ab4]@2 ~@2 e4@2 ~@23, ~@2 [d4,g4] ~@13]/2", // A5 Gb5 Ab5 G5
  AU: "[~@7 a4@17, ~ bb3@23, ~ c4@7, ~@10 f4@37 ~]/3",
  AV: "[~@7 d4@2 ~@6 a4@17, ~@12 g3@6 c4@45 ~, ~@13 bb3@6 ~@5 f4@40]/4",
  AW: "~@4 [f3,c4,f4] ~@2 [ab3,eb4,ab4] ~@7 d5, ~@5 [gb3,db4,gb4]@2 ~@2 [b3,f4,bb4]@2 [c4,g4]@2 [a4,db5]@2 ~, ~@3 [g3,d4,g4] [a3,bb3,e4,a4] [gb4,b4] [db4,ab4,c5] d4", // F5 Ab5 Gb5 Bb C5 A G5 A …
  AX: "[g4,g5] ~@5 [f4,f5]@2 ~@4 [d4,a4,d5]@2 ~@2", // G F D5
  AY: "~@2 [c4,g4,c5]@2 ~@2 [c4,c5]@2 [d4,d5]@2 [c4,c5]@2 [d4,a4,d5]@2 [e4,e5] ~", // C5 C D C D5 E
  AZ: "[g4,g5]@4 ~@2 [d4,d5]@2 ~@4 [d4,d5]@2 [c4,c5] ~", // G D C
  BA: "[d4,d5]@2 [f4,f5] ~@3 [c4,c5]@2 [d4,a4,d5]@2 [c4,g4,c5]@2 [d4,a4,d5]@2 [c4,g4,c5]@2", // D F C D5 C5 D5 C5
  BB: "[g4,d5,g5]@2 ~ [f4,c5,f5] ~@2 [d4,d5] ~", // G5 F5 D
  BC: "~@2 [f4,c5,f5]@2 ~@2 [f4,c5,f5]@2 [d4,d5]@2 [db4,db5] ~ [db4,db5]@2 [c4,c5]@2", // F5 D Db C
  BD: "[g4,g5]@2 ~ [f4,f5] ~@2 [d4,d5] ~", BE: "~@2 [f4,c5,f5]@2 ~@4 [d4,d5]@2 [c4,c5] ~ [c4,c5]@2 [b3,b4]@2",
  BF: "~@2 [f4,c5,f5]@2 ~@10 [db4,ab4,db5] ~, ~@4 [ab3,eb4,ab4] [bb3,f4] [c4,gb4,c5] ~, ~@9 [a3,e4,a4,bb4]@2 [b3,b4]@2 g4@2 ~", // F5 Db5 Ab5 Bb5 Cdim A B
})).s("gm_electric_guitar_clean").gain(0.48).pan(0.6)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@46 A B C B D B E B D B E B D B E B D B E B D B E B D B E B D B E F G@2 H I J ~@31 A B K B D B L B D B E B D B E B D
  B E B D B E B D B E B D B E F G@2 H I J ~@31 A B C B D B E B D B E B D B E B M ~@44
>`.pickRestart({
  A: "~@12 c4 ~ c4@2", B: "d4 ~@3 c4@2 d4 ~@3 c4@2 d4 ~@3", C: "c4 ~ d4 ~@3 c4@2 d4 ~@3 c4 ~ c4@2",
  D: "c4@2 d4 ~@3 c4@2 d4 ~ d4@2 c4 ~ c4@2", E: "c4 ~ d4 ~@3 c4@2 d4 ~ d4 ~ c4 ~ c4@2",
  F: "d4 ~@3 c4@2 d4 ~@3 c4@2 d4@2 ~@2", G: "~@2 d4@2 ~@2 d4@2 ~@2 d4@2 d4 ~ d4@2",
  H: "~@2 d4 ~ d4 ~ d4@2 d4 ~ d4@2 d4 ~ d4@2", I: "~@2 d4 ~ d4 ~ d4@2 d4 ~ d4 ~ d4 ~ d4@2",
  J: "~@2 d4 ~ d4 ~ d4@2 ~@4 d4 ~ d4@2", K: "c4 ~ d4 ~@3 c4@2 d4@3 ~ c4 ~ c4@2", L: "c4 ~ d4 ~@3 c4@2 d4@4 c4 ~ c4@2",
  M: "c4@2 d4 ~@13",
})).s("gm_electric_guitar_muted").gain(0.56).pan(0.8)

// other · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@55 A@16 ~@52 A@16 B@8 ~@96>".pickRestart({
  A: "[~@15 [d5,d6]@113]/8", B: "[~@47 [e5,e6]@16 ~@17 d7@17 ~@31, ~@15 d5@48 d5@62 ~@3, ~@15 d6@35 ~@13 d6@65]/8",
})).s("gm_string_ensemble_2").gain(0.24)

// other · whistle
const whistle = note("<~@187 A B C ~ D E F G H@2 ~@46>".pickRestart({
  A: "~@4 c7@2 ~ bb6", B: "c7@4 ~ bb6@2 ~ c7@2 ~ bb6@3 ~@2", C: "f6@9 ~@7", D: "~@12 a6@3 ~",
  E: "c7@2 ~ d7@2 ~@2 e7@5 d7@3 ~", F: "a6@2 c7 ~@13", G: "~@3 c7",
  H: "[bb6@2 ~@2 c7@2 ~@2 bb6@2 ~ c7@2 ~ bb6@6 ~@2 g6@6 f6@2 ~@2]/2",
})).s("gm_whistle").gain(0.56)

// drums · kick
const kick = s("bd").struct(`<
  A B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C
  B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B
  C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C
  B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C B@3 C B C
>`.pickRestart({
  A: "~@5 x ~ x", B: "x ~@2 x ~ x ~ x", C: "x ~@6 x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A@27 B A@15 B ~@7 C A@26 D@2 A@15 E A@12 ~@11 C A@26 F D A@15 E A@12 ~@3 G ~@9 G ~ G ~ G A D A@7 E A@6 D@2 A@15 E
  A@12
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~@5 x!2 ~", D: "~ x!2 ~ x ~ x!2", E: "~@2 x ~@2 x!3", F: "~ x!3 ~ x!3",
  G: "~@3 x",
})).gain(0.48)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@3 A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 C A@3 B A@3 B A@3 B A@3 C A@3 B A@3 C A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B
  A@2 ~@2 A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 C A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@2 ~@2 A@3 B
  A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 C A@3 B A@3 B A ~ A ~ A ~@2 C A@3 B A@3 C A@3 B A@2 ~@2 A@3 B A@3 B A@3 B A@3
  C A@3 B A@3 B A@3 B
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@5 x", C: "~ x ~@6",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C
  E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C ~@2 G F B C D
  C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C
  D C ~@3 C ~@7 H E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B C D C E F B
  C
>`.pickRestart({
  A: "~ x", B: "x!2 ~@2", C: "~ x ~ x!2 ~@2 x", D: "~ x ~ x!2 ~ x!2", E: "x ~ x ~@4 x", F: "~ x!2 ~ x ~@3", G: "~@7 x",
  H: "x!3 ~ x ~@3",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@70 A ~@59 A ~@7 A ~@43 A ~@9 A ~ A ~ A B C ~@44>".pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@3 x ~@2", C: "x",
// … 27 more lines

More by Pat Benatar