Strudelify
Can't Get Enough cover art

1970 · 10 from 6

Can't Get Enough

Bad Company

KeyB♭ majorTempo128 bpm
0:00/0:00
// Can't Get Enough — Bad Company
// 128 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 131 bars on a 24-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): MUTED GTR.
setcpm(128/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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A@3 B C@3 B D@6 E F G@2 H I J K L M N O P Q C@3 B D@8 G@2 H I J K L M N O P Q D@6 E R S T U V W X W X Y X Z Q AA AB
  L AC L AD P Q AE AF L M AG AD G@2 AH AI AH AI AH AI AJ AK AL AM AN AO AP AQ AR@2 AS AT AS AT AS AT P AU AV AD AV O AV
  O AW AX A@3 B C@3 AY@2 ~
>`.pickRestart({
  A: "[bb1@34 ~@2 ab1@3 ~ ab1@2 ~@4 eb2@22 ~@2 ab1@2]/3", B: "~@2 eb2@9 ab1",
  C: "[bb1@34 ~@2 ab1@3 ~ ab1@2 ~@4 eb1@21 ~@3 ab1@2]/3",
  D: "[bb1@6 ~@4 bb1@2 ab1@6 ~@4 eb2@4 ~@2 eb2@2 g1@2 ~@4 ab1@3 ~ ab1@2 a1@3 ~@3]/2", E: "bb1@3 ~@2 bb1 ab1@3 ~@2 eb2",
  F: "eb2@2 ~@2 eb2@2 g1@2 ~@4 ab1@3 ~ ab1@2 a1@3 ~@3", G: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~",
  H: "ab1@2 ~@2 ab1 ~ ab1@2 ~@2 ab1 ~ ab1@2 ~@2 ab1 ~ ab1@2 ~@2 ab1 ~", I: "eb2@7 ~@5 db2@2 ~@4 db2@3 ~@3",
  J: "bb1 ~@3 bb1 ~ bb1 ~@3 bb1@2 bb1 ~@3 bb1@2 bb1@2 ~@2 db2@2",
  K: "eb2 ~@3 eb2@2 eb2 ~@3 eb2@2 eb2 ~@3 eb2@2 eb2 ~@3 ab1@2",
  L: "bb1 ~@3 bb1 ~ bb1 ~@3 bb1@2 bb1@2 ~@2 bb1@2 db2@2 ~@2 db2 ~",
  M: "eb2 ~@3 eb2@2 eb2 ~@3 eb2@2 eb2@2 ~@2 eb2@2 ab1@2 ~@2 ab1 ~",
  N: "bb1 ~@3 bb1 ~ bb1 ~@3 bb1@2 bb1 ~@3 bb1@2 db2@2 ~@2 db2@2", O: "eb2 ~ eb2!2 ~ eb2!2 ~ eb2!2 ~ eb2",
  P: "f2@8 ~@2 bb1@2 ~@4 bb1@3 ~@3 bb1@2", Q: "f2", R: "~@2 eb2 d1@3 eb1@3 e1@3",
  S: "f1 ~@3 f1@2 a1 ~@3 a1@2 c2 ~@3 c2@2 d2 ~@3 d2@2", T: "f2 ~@3 f2@2 eb2 ~@3 eb2@2 c2 ~@3 c2@2 a1 ~@3 a1@2",
  U: "ab1 ~@3 ab1@2 ab1@2 ~@2 ab1 ~ ab1@2 ~@2 ab1 ~ ab1 ~@3 ab1 ~", V: "eb2@10 ~@2 db2@3 ~@3 db2@3 ~@3",
  W: "bb1 ~ bb1 c2 ~ c2 db2 ~ db2 d2 ~ d2", X: "eb2@2 ~@2 eb2@2 g1@2 ~@2 g1@2 ab1 ~@3 ab1@2 a1@2 ~@2 a1@2",
  Y: "bb1 ~@3 bb1@2 c2@2 ~@2 c2@2 db2 ~@3 db2@2 d2 ~@3 d2@2", Z: "f2@7 ~@3 bb1@2 ~@4 bb1@6 eb2@2",
  AA: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 bb1 ~@3 bb1@2 bb1@2 ~@2 db2@2",
  AB: "eb2 ~@3 eb2@2 eb2 ~@3 eb2 ~ eb2 ~@3 eb2@2 eb2@2 ~@2 ab1@2",
  AC: "eb2@2 ~@2 eb2 ~ eb2@2 ~@2 eb2@2 eb2@2 ~@2 eb2@2 ab1@2 ~@2 ab1 ~",
  AD: "eb2@2 ~@2 eb2 ~ eb2@2 ~@2 eb2@2 eb2@2 ~@2 eb2@2 eb2@2 ~@2 eb2 ~",
  AE: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1@2 bb1@2 ~@2 db2@2", AF: "eb2 ~ eb2!2 ~ eb2!2 ~ eb2!2 ~ ab1",
  AG: "bb1@2 ~@2 bb1@2 bb1 ~@3 bb1@2 bb1@2 ~@2 bb1@2 db2@2 ~@2 db2 ~", AH: "bb1 ~ bb1 g2 ~ g2 bb2 ~ bb2 g2 ~ g2",
  AI: "eb2@2 ~@2 eb2@2 c3@2 ~@2 c3@2 bb2 ~@3 bb2@2 g2@2 ~@2 g2@2",
  AJ: "f2@3 ~ f2@2 eb2@3 ~ eb2 ~ d2@3 ~ d2 ~ c2@3 ~ c2@2", AK: "ab2@3 ~ ab2@2 g2@2 ~@2 g2 ~ ab2@2 bb2@2 g2@2 f2@5 ~",
  AL: "bb1@3 ~ bb1 ~ g1@3 ~ g1@2 bb1@2 ~@2 bb1@2 g1@3 ~ g1@2",
  AM: "eb1@3 ~ eb1@2 g1@3 ~ g1@2 bb1@3 ~ bb1@2 c2@3 ~ c2@2",
  AN: "bb2@3 ~ bb2@2 g2@3 ~ g2@2 bb2@2 ~@2 bb2@2 g2@3 ~ g2@2",
  AO: "eb2@3 ~ eb2@2 g1@3 ~ g1@2 ab1@3 ~ ab1@2 a1@3 ~ a1@2", AP: "bb1@3 ~ bb1@2 d2@3 ~ d2@2 eb2@3 ~ eb2@2 e2@4 f2@2",
  AQ: "eb2@2 ~@2 eb2@2 g2@3 ~ g2@2 bb2@3 ~ bb2@2 c3@4 bb2@2", AR: "f2@3 ~ f2 ~ f2@3 ~ f2 ~ f2@3 ~ f2 ~ f2@3 ~ f2 ~",
  AS: "bb2@3 ~ bb2@2 ab2@3 ~ ab2@2 g2@3 ~ g2@2 f2@3 ~ f2@2",
  AT: "eb2@3 ~ eb2 ~ db2@3 ~ db2@2 c2@3 ~ c2@2 bb1@3 ~ bb1@2", AU: "f2@5 ~ eb2@6 d2@5 ~ c2@5 ~",
  AV: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1 ~",
  AW: "f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~", AX: "f2 ~ f2 ~ f2@2 f2@2 ~@2 f2 ~ f2@4 ~@2 f2@5 ~",
  AY: "[~ eb1@11]/2",
})).s("gm_acoustic_bass").gain(0.72)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@10 A ~ A ~ A ~ B C D ~@2 E F@4 G ~@7 A ~ A ~ A ~ B C D ~@2 E F@4 G ~@3 H ~ A ~ A ~ B C D ~@2 E F@4 G ~@2 E F@4 G ~@2
  E F@4 G ~@2 E F@4 G ~@2 E F@4 G ~@2 E F@4 G ~@2 E F@4 G ~@12
>`.pickRestart({
  A: "~@6 bb3@3 ~ [bb3,eb4] ~@5 [bb3,eb4] ~ bb3@5 ~", B: "~@6 bb3@3 ~ [bb3,eb4]@2 ~@4 [bb3,eb4]@2 bb3@3 ~ [bb3,eb4]@2",
  C: "~@13 [c4,f4]@5 ~@6", D: "~@12 [c4,f4]@5 ~@7", E: "~@2 bb4 ~@8 f4", F: "[bb3@3 ~@19 bb4@4 ~@2 bb4@2 ~@16 f4@2]/2",
  G: "bb3@3 ~@19 [bb3,eb4]@2", H: "~@6 bb3@4 [bb3,eb4]@2 ~@4 [bb3,eb4] ~ bb3@5 ~",
})).s("gm_electric_guitar_muted").gain(0.48)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~ A@3 B A@3 B C D E@2 C D E@2 F@2 G H I@6 J K A@3 B C D E@2 L D E@2 F@2 G H I@6 J K C D E@2 L D E@2 F@2 G H I@6 J K
  I@6 J K I@6 M N I@6 O@2 I@6 J P I@6 J P I@6 J P A@3 B A@3 Q@2 ~
>`.pickRestart({
  A: "[[f4,bb4,d5]@33 ~@3 [c5,eb5,ab5]@3 ~ [c5,eb5,ab5]@2 ~@4 [bb4,eb5,g5]@21 ~@3 [c5,eb5,ab5]@2]/3", // Bb Ab Eb Ab
  B: "~@4 [bb4,eb5,g5]@19 ~", // Eb
  C: "[bb4,d5,f5]@3 ~@3 [bb4,d5,f5]@2 ~@4 [ab4,c5,eb5]@2 ~@2 [c5,eb5,ab5]@3 ~@3 [bb4,eb5,g5]@2", // Bb Ab Eb
  D: "~@4 [bb4,eb5,g5] ~ [c5,eb5,ab5]@3 ~@3 [bb4,eb5,g5]@3 ~@3 [c5,eb5,ab5]@3 ~ [eb4,ab4]@2", // Eb Ab Eb Ab Ab5
  E: "[[bb4,d5,f5]@3 ~@3 [bb4,d5,f5]@3 ~@3 [ab4,c5,eb5]@3 ~ [c5,eb5,ab5]@3 ~@3 [bb4,eb5,g5]@4 ~@4 [c5,eb5,ab5]@3 ~@3 [bb4,eb5,g5]@3 ~@3 [c5,eb5,ab5]@3 ~@3]/2", // Bb Ab Eb Ab Eb Ab
  F: "[f4,c5,f5]@5 ~ [f4,c5,f5]@11 ~ [f4,c5,f5]@5 ~", // F5
  G: "[c5,eb5,ab5] ~ [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2 [c5,eb5,ab5]@2", // Ab
  H: "[bb4,eb5,g5]@7 ~@5 [ab4,db5,f5]@3 ~@3 [ab4,db5,f5]@4 ~@2", // Eb Db
  I: "[[bb4,d5]@4 f4 ~ [g4,bb4,eb5]@2 ~@4 [f4,bb4,d5]@3 ~@3 [g4,bb4,eb5]@2 ~@4 [eb5,g5]@4 bb4 ~ [c5,eb5,ab5]@3 ~@3 [bb4,eb5,g5]@3 ~@3 [c5,eb5,ab5]@2 ~@4 [bb4,d5]@4 f4 ~ [g4,bb4,eb5]@2 ~@4 [f4,bb4,d5]@3 ~@3 [g4,bb4,eb5]@2 ~@4 [eb5,g5]@4 bb4 ~ [c5,eb5,ab5]@3 ~@3 [bb4,eb5,g5]@3 ~@3 [c5,eb5,ab5]@2 ~@4 [bb4,d5]@4 f4 ~ [g4,bb4,eb5]@2 ~@4 [f4,bb4,d5]@3 ~@3 [g4,bb4,eb5]@2 ~@4 [eb5,g5]@4 bb4 ~ [c5,eb5,ab5]@3 ~@3 [bb4,eb5,g5]@3 ~@3 [c5,eb5,ab5]@3 ~@3, f4@2 ~@20 bb4@5 ~@19 f4@5 ~@19 bb4@5 ~@19 f4@5 ~@19 bb4@5 ~@21]/6", // Bb Eb Bb Eb Ab Eb Ab Bb …
  J: "[c5,f5,a5]@4 ~ [d5,f5,bb5] ~@2 [d5,f5,bb5] ~@2 [d5,f5,bb5]", K: "[c5,f5,a5]@23 ~",
  L: "[bb4,d5,f5]@3 ~@3 [bb4,d5,f5]@2 ~@4 [ab4,c5,eb5]@3 ~ [c5,eb5,ab5]@3 ~@3 [bb4,eb5,g5]@2", // Bb Ab Eb
  M: "[c5,f5]@5 ~ [c5,f5]@5 ~ [c5,f5]@5 ~ [c5,f5]@3 ~ [c5,f5]@2", N: "[c5,f5]@6 [c5,f5]@5 ~ [c5,f5]@5 ~ [c5,f5]@6",
  O: "[c5,f5] ~ [c5,f5] ~ [c5,f5]@2 [c5,f5]@2 [c5,f5] ~ [c5,f5]@2 [c5,f5]@2 [c5,f5] ~ [c5,f5]@2 [c5,f5]@2 [c5,f5] ~ [c5,f5]@2", // F5
  P: "[c5,f5,a5]@6 [c5,f5,a5]@5 ~ [c5,f5,a5]@5 ~ [c5,f5,a5]@6", Q: "[~ [bb4,eb5]@11, ~@4 g5@41 ~@3]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.52)

// bass · fretless bass · "FRETLESS"
const bass_2 = note(`<
  ~ A@3 B C@3 B D@6 E F G@2 H I J K L M N O P Q C@3 B D@8 G@2 H I J K L M N O P Q D@6 E R S T U V W X W Y W X Z Q AA AB
  L AC L AD P Q AA AE L AC L AD G@2 AF AG AF AG AF AG AH AI AJ AK AL AM AN AO AP@2 AQ AR AQ AR AQ AR P AS AT AD AT O AT
  O AU AV A@3 B C@3 AW@2 ~
>`.pickRestart({
  A: "[bb2@34 ~@2 ab2@3 ~ ab2@2 ~@4 eb3@22 ~@2 ab2@2]/3", B: "~@2 eb3@9 ab2",
  C: "[bb2@34 ~@2 ab2@3 ~ ab2@2 ~@4 eb2@21 ~@3 ab2@2]/3",
  D: "[bb2@7 ~@3 bb2@2 ab2@6 ~@4 eb3@4 ~@2 eb3@2 g2@2 ~@4 ab2@3 ~ ab2@2 a2@3 ~@3]/2",
  E: "bb2@7 ~@3 bb2@2 ab2@6 ~@4 eb3@2", F: "eb3@2 ~@2 eb3@2 g2@2 ~@4 ab2@3 ~ ab2@2 a2@3 ~@3",
  G: "f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~ f2@2 ~@2 f2 ~",
  H: "ab2@2 ~@2 ab2 ~ ab2@2 ~@2 ab2 ~ ab2@2 ~@2 ab2 ~ ab2@2 ~@2 ab2 ~", I: "eb3@7 ~@5 db3@2 ~@4 db3@3 ~@3",
  J: "bb2 ~@3 bb2 ~ bb2@2 ~@2 bb2@2 bb2 ~@3 bb2 ~ bb2@2 ~@2 db3@2",
  K: "eb3 ~@3 eb3@2 eb3@2 ~@2 eb3@2 eb3 ~@3 eb3@2 eb3 ~@3 ab2@2",
  L: "bb2@2 ~@2 bb2@2 bb2@2 ~@2 bb2@2 bb2@2 ~@2 bb2@2 db3@2 ~@2 db3 ~",
  M: "eb3 ~@3 eb3@2 eb3 ~@3 eb3@2 eb3@2 ~@2 eb3@2 ab2@2 ~@2 ab2 ~",
  N: "bb2@2 ~@2 bb2@2 bb2 ~@3 bb2@2 bb2 ~@3 bb2@2 db3@2 ~@2 db3@2",
  O: "eb3@2 ~@2 eb3@2 eb3@2 ~@2 eb3@2 eb3 ~@3 eb3@2 eb3@2 ~@2 eb3@2", P: "f3@8 ~@2 bb2@2 ~@4 bb2@3 ~@3 bb2@2", Q: "f3",
  R: "~@2 eb3 d2@3 eb2@3 e2@3", S: "f2 ~@3 f2@2 a2 ~@3 a2@2 c3 ~@3 c3@2 d3 ~@3 d3@2",
  T: "f3 ~@3 f3@2 eb3 ~@3 eb3@2 c3@2 ~@2 c3@2 a2 ~@3 a2@2",
  U: "ab2 ~@3 ab2@2 ab2@2 ~@2 ab2@2 ab2@2 ~@2 ab2@2 ab2 ~@3 ab2 ~", V: "eb3@10 ~@2 db3@3 ~@3 db3@3 ~@3",
  W: "bb2 ~ bb2 c3 ~ c3 db3 ~ db3 d3 ~ d3", X: "eb3@2 ~@2 eb3@2 g2@2 ~@2 g2@2 ab2 ~@3 ab2@2 a2@2 ~@2 a2@2",
  Y: "eb3 ~@3 eb3@2 g2@2 ~@2 g2@2 ab2@2 ~@2 ab2@2 a2@2 ~@2 a2@2", Z: "f3@7 ~@3 bb2@2 ~@4 bb2@6 eb3@2",
  AA: "bb2 ~ bb2!2 ~ bb2!2 ~ bb2!2 ~ db3", AB: "eb3 ~@3 eb3@2 eb3@2 ~@2 eb3@2 eb3 ~@3 eb3@2 eb3@2 ~@2 ab2@2",
  AC: "eb3@2 ~@2 eb3 ~ eb3@2 ~@2 eb3@2 eb3@2 ~@2 eb3@2 ab2@2 ~@2 ab2 ~", AD: "eb3 ~ eb3!2 ~ eb3!2 ~ eb3!2 ~ eb3",
  AE: "eb3 ~ eb3!2 ~ eb3!2 ~ eb3!2 ~ ab2", AF: "bb2 ~ bb2 g3 ~ g3 bb3 ~ bb3 g3 ~ g3",
  AG: "eb3@2 ~@2 eb3@2 c4@2 ~@2 c4@2 bb3 ~@3 bb3@2 g3@2 ~@2 g3@2",
  AH: "f3@3 ~ f3@2 eb3@3 ~ eb3 ~ d3@3 ~ d3@2 c3@3 ~ c3@2", AI: "ab3@3 ~ ab3@2 g3@2 ~@2 g3 ~ ab3@2 bb3@2 g3@2 f3@5 ~",
  AJ: "bb2@3 ~ bb2 ~ g2@3 ~ g2@2 bb2@3 ~ bb2@2 g2@3 ~ g2@2", AK: "eb2@3 ~ eb2@2 g2@3 ~ g2@2 bb2@3 ~ bb2@2 c3@3 ~ c3 ~",
  AL: "bb3@3 ~ bb3@2 g3@3 ~ g3@2 bb3@3 ~ bb3@2 g3@3 ~ g3@2", AM: "eb3@3 ~ eb3@2 g2@3 ~ g2@2 ab2@3 ~ ab2@2 a2@3 ~ a2@2",
  AN: "bb2@3 ~ bb2@2 d3@3 ~ d3@2 eb3@3 ~ eb3@2 e3@4 f3@2", AO: "eb3@3 ~ eb3@2 g3@3 ~ g3@2 bb3@3 ~ bb3@2 c4@4 bb3@2",
  AP: "f3@3 ~ f3 ~ f3@3 ~ f3 ~ f3@3 ~ f3 ~ f3@3 ~ f3 ~", AQ: "bb3@3 ~ bb3@2 ab3@3 ~ ab3@2 g3@3 ~ g3@2 f3@3 ~ f3@2",
  AR: "eb3@3 ~ eb3@2 db3@3 ~ db3@2 c3@3 ~ c3@2 bb2@3 ~ bb2@2", AS: "f3@5 ~ eb3@6 d3@5 ~ c3@5 ~",
  AT: "bb2@2 ~@2 bb2 ~ bb2@2 ~@2 bb2@2 bb2@2 ~@2 bb2@2 bb2@2 ~@2 bb2@2",
  AU: "f3@2 ~@2 f3 ~ f3@2 ~@2 f3@2 f3@2 ~@2 f3 ~ f3@3 ~ f3@2", AV: "f3 ~ f3@2 f3@2 f3@2 ~@2 f3 ~ f3@4 ~@2 f3@5 ~",
  AW: "[~ eb2@11]/2",
})).s("gm_fretless_bass").gain(0.64)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@53 A@8 B@2 C@2 D@6 E F ~@22 G H I@2 J@3 K L@2 M N O P Q R S T U V W@2 X@2 Y Z AA@2 AB AC AD AE AB AF@2 ~
>`.pickRestart({
  A: "[[bb4,d5]@9 ~ [bb4,d5]@2 [ab4,c5]@4 [bb4,d5]@2 [ab4,c5]@4 [g4,bb4]@6 [eb5,g5]@11 ~ [eb5,g5]@2 [db5,f5]@4 [bb4,d5]@11 ~ [bb4,d5]@2 [ab4,c5]@4 [bb4,d5]@2 [ab4,c5]@4 ~@9 ab5 ~@4 [f5,ab5]@2 [eb5,g5]@2 [d5,f5]@2 [eb5,g5]@4 [bb4,d5]@11 ~ [bb4,d5]@2 [ab4,c5]@4 [bb4,d5]@2 [ab4,c5]@4 [g4,bb4]@6 [eb5,g5]@11 ~ [eb5,g5]@2 [db5,f5]@4 [bb4,d5]@11 ~ [bb4,d5]@2 [ab4,c5]@4 [bb4,d5]@2 [ab4,c5]@4 [g4,bb4]@25 ~, ~@70 [g4,bb4]@15 ~@107]/8", // Bb Ab Bb Ab Gm Eb Db Bb …
  B: "[[f5,bb5]@3 ~@3 [f5,bb5]@10 [c5,f5]@2 [d5,g5]@4 [f5,bb5]@5 ~ [c5,f5]@2 [d5,g5]@4 f5@5 ~ [c5,f5]@2 [d5,g5]@3 ~@3, ~@34 bb5@3 ~@11]/2", // Bb5 F5 G5 Bb5 F5 G5 F5 G5
  C: "[[bb5,db6]@3 ~@3 [bb5,db6]@10 [g5,bb5]@2 db6@4 [db6,f6]@5 ~ [db6,f6]@2 [c6,eb6]@2 [bb5,db6]@2 [g5,bb5]@2 [db6,f6]@3 ~ [db6,f6]@2 [c6,eb6]@2 [bb5,db6]@2 [g5,bb5]@2, ~@9 bb5 ~@14]/2", // Bbm Gm Db Cm Bbm Gm Db Cm …
  D: "[[d6,f6]@3 ~ [d6,f6]@17 ~ [db6,f6]@5 ~ [db6,f6]@2 [c6,eb6]@2 [bb5,db6]@2 [g5,bb5]@2 [db6,f6]@3 ~ [db6,f6]@2 [c6,eb6]@2 [bb5,db6]@2 [g5,bb5]@2]/2", // Dm Db Cm Bbm Gm Db Cm Bbm …
  E: "[f6,a6]@10 [g6,bb6]@5 ~ [g6,bb6]@5 ~ [g6,bb6]@2", F: "[f6,a6]@23 ~", G: "f5@2 db6@3 ~ db6@6 f5@2 db6@2 ~@2 db6@6",
  H: "f5@2 db6@3 ~ db6@6 f6@2 eb6@2 db6@2 bb5@6", I: "[bb5@3 db6@3 f6 eb6 db6 bb5@9 db6@3 eb6 f6 eb6]/2",
  J: "[db6@2 bb5@10 f5@2 ~ db5@3 eb5@4 db5@11 ~ f5@2 ab5@4 bb5@2 f5@4 ab5@6 bb5@12 f5@2 [bb5,db6] ~ [bb5,db6] ~ [bb5,db6]@2, ~@7 eb5 ~@28]/3", // Bbm
  K: "f5@2 [bb5,db6] ~ [bb5,db6] ~ [bb5,db6]@2 f5@2 [bb5,db6]@2 f5@2 [bb5,db6] ~ [bb5,db6]@2 bb5@2 [db6,f6]@2 [db6,f6]@2", // Bbm Db
  L: "[bb5@16 db6@2 eb6@4 f6@8 f6@5 ~ f6@6 f6@6]/2", M: "db6@3 ~@3 eb6@4 f6@2 db6@6 bb5@4 ab5@2",
  N: "bb5@3 ~@3 [ab5,db6]@2 ~@4 f6@2 eb6@2 db6@2 bb5@6", O: "db6@6 f6@4 eb6@2 db6 bb5@2 ~@3 bb5@6",
  P: "ab5@2 f5 [ab5,db6]@3 bb5@3 g5@2 f5", Q: "c5 ~ d5@2 ~@2 d6@6 f6@4 d6@2 c6@4 bb5@2",
  R: "eb6@2 ~ db6@2 ~ bb5@2 g5 bb5@2 c6", S: "d6@4 f6@6 g6@3 ~@3 f6@3 ~@3 g6@2",
  T: "~@4 eb6@2 f6@5 ~ f6@4 bb5@2 db6@4 bb5@2", U: "bb5@2 ~@4 db6@5 ~ f6@2 eb6@2 db6@2 eb6@6",
  V: "f6@6 f6@5 ~ f6@6 f6@6", W: "[bb5@15 ~ g5@2 bb5@4 d6@8 eb6@6 f6@5 ~ f6@2 eb6@2 db6@2]/2",
  X: "bb5@5 ~ bb5@4 g5@2 bb5@5 ~ bb5@4 g5@2", Y: "g6@6 g6@5 ~ g6@6 g6@5 ~",
  Z: "g6 ~ g6 ~ g6 ~ g6 ~ g6 ~ g6@2 g6@4 eb6@2 f6@6",
  AA: "[db6 bb5@27 ~@2 g6@6 ~ db6@2 f6@5 eb6@2 db6@2, ~@18 eb6 ~@5]/2", AB: "bb5@10 ~ db6", AC: "~ bb5@5",
  AD: "g6@8 f6 eb6@2 db6", AE: "bb5@6 ab5@2 db6 ~@2 db6", AF: "[~ bb5@11]/2",
})).s("gm_acoustic_guitar_steel").gain(0.64)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@3 A ~@48 B ~@7 C ~@11 B ~@6 D C ~@7 B ~@6 D C ~@6 E ~@4 F ~@2 G ~@7 D C ~@2 A ~@3 A ~@3
>`.pickRestart({
  A: "~@7 x!2 ~@3", B: "~@6 x!3 ~@3", C: "~@3 x!3 ~@6", D: "~ x!2 ~@9", E: "x!12", F: "~@7 x ~@4", G: "~@9 x!3",
})).gain(0.33)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@3 C B@3 C B@11 D B@6 E F B@2 F ~ B@11 D B G B G B@2 E F B@11 D B@6 E F B@6 E F B@6 E F B@6 E F B@22 E F B@3 C B@3
  C ~@2
>`.pickRestart({
  A: "~@2 x", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x", C: "~ x ~@4", D: "x ~ x!2", E: "x ~@4 x ~@2 x ~@3", F: "x",
  G: "x ~ x!2 ~ x!2 ~ x!2 ~@2",
})).gain(0.67)

// drums · open hat
const open_hat = s("oh").struct("<~@46 [~@11 x] ~ [~@11 x] ~@82>").gain(0.67)

// drums · mid tom
const mid_tom = s("mt").struct("<~@31 [~@3 x] ~@99>").gain(0.67)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@8 A ~@11 A ~@6 B ~@3 C ~@12 A ~@6 B D ~@18 B D ~@6 B D ~@6 B D ~@6 B D ~@7 E ~@7 E ~@6 B D ~@10
>`.pickRestart({
  A: "~@2 x!2", B: "~@23 x", C: "~@4 x!5 ~@3", D: "~@9 x!3", E: "~@6 x!6",
})).gain(0.67)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~ B C A ~ B C ~@8 D@2 ~ A@2 ~@5 E A@2 ~ B C ~@8 D@2 ~ A@2 ~ F ~ F ~ E A D@7 ~ D@3 A F ~ F ~ F ~ E A G ~ A ~ F ~ E
  A@2 ~@3 F ~ E A@2 ~@3 F ~ E A D@6 ~@2 D@7 ~ A ~ A ~ A ~ E A@2 ~ B C A ~ B C ~@2
>`.pickRestart({
  A: "x", B: "~@11 x", C: "~ x ~@4", D: "~ x ~ x", E: "x ~@4 x ~@2 x ~@3", F: "~ x ~@2", G: "x!2 ~ x",
})).gain(0.67)

// … 7 more lines

More by Bad Company