Strudelify
Spirits In The Material World cover art

1982 · Ghost In The Machine

Spirits In The Material World

The Police

KeyA minorTempo140 bpm
0:00/0:00
// Spirits In The Material World — The Police
// 140 bpm, 4/4, key A minor. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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(`<
  ~ A B C D E B F D E B F D E B F D E B F D E B F G H I J K J L J M E B F D E B F D E B F D E B F G H I J K J L J N@2
  O@2 P Q R S T S T S T S U S V S T S V S W X Y S V S Z H I J K J I J K J I J K J I J K J I J AA ~
>`.pickRestart({
  A: "~@2 [e4,b4,c5,e5]@2 ~@2 [e4,a4,c5,e5] ~@3 [e4,a4,c5,e5] ~@3 [d4,g4,c5,d5] ~", // Cmaj7 Am Csus2
  B: "~@2 [d4,g4,b4,d5] ~@3 [b3,e4,a4,b4] ~@3 [b3,e4,g4,b4] ~@3 [b3,e4,g4,b4] ~", // G Esus4 Em
  C: "~@2 [b4,c5,e5]@2 ~@2 [e4,a4,c5,e5] ~@3 [e4,a4,c5,e5] ~@3 [d4,g4,c5,d5] ~, ~@2 e4 ~@13", // Cmaj7 Am Csus2
  D: "~@2 [d4,b4,d5] ~@3 [b3,e4,a4,b4] ~@3 [b3,e4,g4,b4] ~@3 [b3,e4,g4,b4] ~, ~ g4 ~@6", // G Esus4 Em
  E: "~@2 [b4,c5,e5] ~@3 [e4,a4,c5,e5] ~@3 [e4,a4,c5,e5] ~@3 [d4,g4,c5,d5] ~, ~ e4 ~@6", // Cmaj7 Am Csus2
  F: "~@2 [b4,c5,e5] ~@3 [e4,a4,c5,e5] ~@3 [e4,a4,c5] ~@3 [d4,g4,c5,d5] ~, ~ e4 ~@3 e5 ~@2", // Cmaj7 Am Csus2
  G: "~@2 [d4,b4,d5] ~@3 [b3,e4,a4,b4] ~@3 [b3,e4,g4,b4] ~@5, ~ g4 ~@6", // G Esus4 Em
  H: "[d4,f4,a4]@2 ~@4 [c4,e4,g4] ~ [d4,f4,a4]@2 ~@4 [c4,e4,g4] ~", // Dm C Dm C
  I: "[d4,f4,a4] ~ [e4,g4,b4] ~ [f4,a4,c5] ~ [b4,d5] ~@3 [e4,g4] ~@3 [d4,f4,a4]@2, ~@3 g4 ~ c4 ~@2", // Dm Em F Bm Em Dm
  J: "~@6 [c4,e4,g4] ~ [d4,f4,a4]@2 ~@4 [c4,e4,g4] ~", // C Dm C
  K: "[d4,f4,a4] ~ [e4,g4,b4] ~ [f4,a4,c5] ~ [b4,d5] ~@3 [c4,e4,g4]@2 ~@2 [d4,f4,a4]@2, ~@3 g4 ~@4", // Dm Em F Bm C Dm
  L: "[d4,f4,a4] ~ [e4,g4,b4] ~ [f4,a4,c5] ~ [g4,b4]@2 ~@2 [c4,e4,g4]@2 ~@2 [d4,f4,a4]@2, ~@6 d5 ~@9", // Dm Em F G C Dm
  M: "[d4,f4,a4] ~ [e4,g4,b4] ~ [f4,a4,c5] ~ [b4,d5] ~@3 [c4,e4] ~@5, ~@3 g4 ~ g4 ~@2", // Dm Em F Bm C
  N: "[[d4,f4,a4] ~ [e4,g4,b4] ~ [f4,a4,c5] ~ [b4,d5] ~@3 [c4,e4] ~@3 d4@16 b4@2, ~@3 g4 ~ g4 ~@10]/2", O: "c5@7 b4",
  P: "a4@3 g4 f4@2 e4 f4", Q: "e4 [e4,b4,c5,e5] ~ [e4,a4,c5,e5] ~ [e4,a4,c5,e5] ~ [d4,g4,c5,d5]",
  R: "~ [d4,g4,b4,d5] ~ [b3,e4,a4,b4] ~ [b3,e4,g4,b4] ~ [e4,g4,b4], ~@14 b3 ~", // G Esus4 Em
  S: "~ [e4,b4,c5,e5] ~ [e4,a4,c5,e5] ~ [e4,a4,c5,e5] ~ [d4,g4,c5,d5]", // Cmaj7 Am Csus2
  T: "~ [d4,g4,b4,d5] ~ [b3,e4,a4,b4] ~ [b3,e4,g4,b4] ~ [b3,b4], ~@14 [e4,g4] ~", // G Esus4 Em B Em
  U: "~ [d4,g4,b4,d5] ~ [b3,e4,a4,b4] ~ [b3,e4,g4,b4] ~ [b3,e4,g4,b4]", // G Esus4 Em
  V: "~ [d4,g4,b4,d5] ~ [b3,e4,a4,b4] ~ [b3,e4,g4,b4] ~ [b3,g4,b4], ~@14 e4 ~", // G Esus4 Em
  W: "~ [d4,g4,b4,d5] ~ [b3,e4,a4,b4] ~ [b3,e4,g4,b4] ~ [g4,b4], ~@14 [b3,e4] ~", // G Esus4 Em G E5
  X: "~@2 [e4,b4,c5,e5]@3 ~ [e4,a4,c5,e5]@2 ~@2 [e4,a4,c5,e5]@2 ~@2 [d4,g4,c5,d5]@2", // Cmaj7 Am Csus2
  Y: "~ [d4,g4,b4,d5] ~ [b3,e4,b4] ~ [b3,e4,g4,b4] ~ [b3,g4,b4], ~@6 a4 ~@7 e4 ~", // G E5 Em
  Z: "~ [d4,g4,b4,d5] ~ [b3,e4,a4,b4] ~ [b3,e4,g4,b4] ~@2", // G Esus4 Em
  AA: "[d4,f4,a4] ~ [e4,g4,b4] ~ [f4,a4,c5] ~ [b4,d5] ~@3 [g4,b4,d5]@2 ~@2 [a4,c5,e5]@2, ~@3 g4 ~@4", // Dm Em F Bm G Am
})).s("gm_synth_brass_1").gain(0.33).pan(0.3)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D A B A E A B A D C B F E C G C D A G F H I J K J L J M N O P A D C B F E C G C D A G F H I J K J L J M Q@2
  R@2 S T U C D A B A E A B A D C B F E C G C D A G F H I J K J L J M V M J K W X Y Z Y X Y Z AA ~
>`.pickRestart({
  A: "~@6 a1@2 c2 ~@2 c2!3 a1@2", B: "g1@2 ~ g1 g1@2 a1@2 e1@4 g1@3 ~", C: "~@6 a1@2 c2@2 ~ c2!3 a1@2",
  D: "g1@2 ~ g1 g1@2 a1@2 e1@3 ~ g1@2 ~@2", E: "g1@2 ~ g1 g1@2 a1@2 e1@4 g1@2 ~@2", F: "~@6 a1@2 c2 ~ c2!4 a1@2",
  G: "g1@2 ~ g1 g1@2 a1@2 e1@3 ~ g1@3 ~", H: "g1@2 ~ g1 g1@2 a1@2 e1@3 ~ g1@2 c2@2", I: "d2@3 ~@3 c2@2 d2@2 ~@4 c2@2",
  J: "d2@2 e2@2 f2@2 g2@2 ~@2 c2@3 ~ d2@2", K: "~@6 c2@2 d2@3 ~@3 c2@2", L: "~@6 c2@2 d2@2 ~@4 c2 ~",
  M: "~@3 c2 d2 ~@2 c2", N: "d2 e2 f2 g2 ~ c2 ~@2", O: "~@6 a1@2 c2@3 c2@3 a1@2", P: "g1@3 g1@3 a1@2 e1@4 g1@3 ~",
  Q: "[d2@2 e2@2 f2@2 g2@2 ~@2 c2@2 ~@2 d2@15 ~ d2@2]/2", R: "[f2@7 g2@7 ~ g2]/2", S: "f2@3 e2 d2@2 c2 b1",
  T: "a1@4 a1 ~ a1@2 c2@4 a1@4", U: "g1@3 ~ g1@2 a1@2 e1@4 g1@3 ~", V: "d2 e2 f2 g2 ~ c2 ~ d2",
  W: "d2@2 e2@2 f2@2 g2@2 ~@2 c1@3 ~ d1@2", X: "~@3 c1 d1 ~@2 c1", Y: "d1@2 e1@2 f1@2 g1@2 ~@2 c1@3 ~ d1@2",
  Z: "~@6 c1@2 d1@3 ~@3 c1@2", AA: "d1@2 e1@2 f1@2 g1@2 ~@2 g1@3 ~ a1@2",
})).s("gm_acoustic_bass").gain(0.44)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A C D E F E F E F G A B A B A B A B A B A B A B A C D E H I F J F K@2 L
  M N O P Q P Q R S T Q U Q V Q V Q P Q W Q P Q P Q X Y E F E F E F E F E F E F E F E F E H Z ~
>`.pickRestart({
  A: "~@2 [b3,c4] ~@3 [a3,c4] ~@3 [a3,c4] ~@3 [g3,c4] ~", B: "~@2 [g3,b3] ~@3 [e3,a3] ~@3 [e3,g3] ~@3 [e3,g3] ~",
  C: "~@2 [g3,b3] ~@3 [e3,a3] ~@3 [e3,g3] ~@5", D: "[d3,f3] ~@5 [c3,e3] ~ [d3,f3] ~@5 [c3,e3] ~",
  E: "[d3,f3] ~ [e3,g3] ~ [f3,a3] ~ [g3,b3] ~@3 [c3,e3] ~@3 [d3,f3] ~", F: "~@6 [c3,e3] ~ [d3,f3] ~@5 [c3,e3] ~",
  G: "[d3,f3] ~ [e3,g3] ~ [f3,a3] ~ [g3,b3] ~@3 [c3,e3] ~@5", H: "~@6 [c3,e3] ~ [d3,f3]@2 ~@4 [c3,e3] ~",
  I: "[d3,f3] ~ [e3,g3] ~ [f3,a3] ~ [g3,b3]@2 ~@2 [c3,e3]@2 ~@2 [d3,f3]@2", // Dm Em F G C Dm
  J: "[d3,f3] ~ [e3,g3] ~ [f3,a3] ~ [g3,b3] ~@3 [c3,e3]@2 ~@2 [d3,f3]@2", // Dm Em F G C Dm
  K: "[[d3,f3] ~ [e3,g3] ~ [f3,a3] ~ [g3,b3] ~@3 [c3,e3] ~@3 f3@16 g3@2]/2", L: "a3@13 ~ b3@2", M: "c4@13 ~ b3@2",
  N: "a3@5 ~ b3@2 a3@3 ~ b3@2 c4@2", O: "b3 ~ [b3,c4]@2 ~@2 [a3,c4]@2 ~@2 [a3,c4]@2 ~@2 [g3,c4]@2",
  P: "~@2 [g3,b3]@2 ~@2 [e3,a3]@2 ~@2 [e3,g3]@2 ~@2 [e3,g3] ~", Q: "~ [b3,c4] ~ [a3,c4] ~ [a3,c4] ~ [g3,c4]",
  R: "~@2 [g3,b3]@2 ~@2 [e3,a3]@2 ~@2 [e3,g3] ~@3 [e3,g3]@2", // G A5 Em
  S: "~@2 [b3,c4]@2 ~@2 [a3,c4] ~@3 [a3,c4]@2 ~@2 [g3,c4]@2", // Cmaj7 Am C5
  T: "~@2 [g3,b3]@2 ~@2 [e3,a3] ~@3 [e3,g3]@2 ~@2 [e3,g3]@2", // G A5 Em
  U: "~@2 [g3,b3]@2 ~@2 [e3,a3] ~@3 [e3,g3]@2 ~@2 [e3,g3] ~", V: "~ [g3,b3] ~ [e3,a3] ~ [e3,g3] ~ [e3,g3]",
  W: "~@2 [g3,b3]@2 ~@2 [e3,a3] ~@3 [e3,g3] ~@3 [e3,g3] ~", X: "~ [g3,b3] ~ [e3,a3] ~ [e3,g3] ~@2",
  Y: "[d3,f3]@2 ~@4 [c3,e3] ~ [d3,f3]@2 ~@4 [c3,e3] ~", // Dm C Dm C
  Z: "[d3,f3] ~ [e3,g3] ~ [f3,g3,a3] ~ [g3,b3] ~@3 [d3,g3] ~@3 [e3,a3]@2", // Dm Em F G G5 A5
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.8)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@9 A B@2 ~ C@2 D ~ E F ~@2 G@3 H@2 I J I J I J I K L ~@2 M N O ~ P Q ~@2 R S T H@2 I J I J I J U@5 ~@8 K V ~@3 W@2 ~
  X@3 ~ Y@3 H@2 I J I J I J I J I J I J I J I ~@5
>`.pickRestart({
  A: "~@6 [a3,c4,e4]@2 [a3,c4,e4]@2 [b3,d4,f#4]@3 [a3,c4,e4]@2 ~", // Am Bm Am
  B: "[[c4,e4,g4]@2 [b3,d4,f#4]@3 ~ [a3,c4,e4]@3 [g3,b3,d4]@3 [a3,c4,e4]@3 [e3,a3,c4]@3 ~@14]/2", // C Bm Am G Am
  C: "[~@5 [a3,c4,a4] [b3,d4,b4] [c4,e4,c5]@2 [b3,d4,b4]@2 [a3,c4,a4]@2 [g3,b3,g4]@2 [a3,c4,a4]]/2", // Am Bm C Bm Am G Am
  D: "~ [e3,a3,c4,e4]@3 ~@12", E: "~@10 [a3,c4,e4]@2 ~ [b3,d4,f#4]@3",
  F: "[c4,e4,g4]@3 [b3,d4,f#4]@2 [a3,c4,e4,a4]@3 [g3,b3,d4,g4]@2 ~ [a3,c4,e4,a4]@2 [e3,a3,c4,e4]@2 ~", // C Bm Am G Am
  G: "[~@6 [c4,e4,a4]@2 [c4,e4,a4]@2 [d4,f#4,b4]@4 [e4,g4,c5]@4 [d4,f#4,b4]@4 [c4,e4,a4]@3 [g3,b3,d4,g4]@3 [a3,c4,e4,a4]@2 ~ [a3,c4,e4,a4]@2 ~@15]/3", // Am Bm C Bm Am G Am
  H: "[~@14 [d3,f4,a4]@4 [d3,f4,a4]@3 ~ [d3,f4,a4]@2 [d3,f4,a4]@3 ~@5]/2", // Dm
  I: "[d3,f4,a4] [e3,g4,b4] [f3,a4,c5] [g3,b4,d5]@2 [e3,g4,b4]@2 [d3,f4,a4]", // Dm Em F G Em Dm
  J: "~@2 [d3,f4,a4]@3 ~ [d3,f4,a4]@2 [d3,f4,a4]@3 ~@5", K: "~@7 [a3,c4,e4]",
  L: "[c4,e4,g4]@2 [b3,d4,f#4]@4 [a2,a3,c4,e4]@2 [b2,g3,b3,d4]@4 [c3,a3,c4,e4]@3 ~", M: "~@7 [b3,d4,g4,b4]",
  N: "[c4,e4,a4,c5]@2 [b3,d4,g4,b4]@3 ~ [a3,c4,e4,a4]@3 [g3,b3,d4,g4]@3 [a3,c4,e4,a4]@4", O: "~ [e3,a3,c4,e4]@5 ~@10",
  P: "~@13 [a3,c4,e4]@2 ~", Q: "[c4,e4,g4]@3 [b3,d4,f#4]@3 [a2,a3,c4,e4]@3 [g2,g3,b3,d4]@4 [a2,c4,e4,a4]@2 ~",
  R: "~@5 [a3,c4,e4,a4]!2 [b3,d4,f#4,b4]", // Am Bm
  S: "[c4,e4,g4,c5]@2 [b3,d4,f#4,b4]@4 [a3,c4,e4,a4]@3 [g3,b3,d4,g4]@3 [a3,c4,e4,a4]@4", T: "[c3,e3,a3,e4] ~@3",
  U: "[[d3,f4,a4] [e3,g4,b4] [f3,a4,c5] [g3,b4,d5]@2 [e3,g4,b4]@2 d3 ~@7 b4 ~@7 d5 e5@14 ~@2, ~@7 [f4,a4]@31 ~@2, ~@8 c5@11 ~]/5", // Dm Em F G Em F
  V: "[c4,e4,g4] [b3,d4,f#4]@2 [a3,c4,e4] [g3,b3,d4]@2 [a3,c4,e4]@2", // C Bm Am G Am
  W: "[[d4,g4,b4]@2 [e4,a4,c5]@2 [d4,g4,b4]@4 [c4,e4,a4]@4 [b3,d4,g4]@2 [c4,e4,a4]@5 ~@13]/2", // G Am G Am G Am
  X: "[~@10 [e3,a3,c4]@2 [g3,b3,d4]@2 [a3,c4,e4]@4 [g3,b3,d4]@4 [a2,a3,c4,e4]@2 [g2,g3,b3,d4]@4 [a2,c4,e4,a4]@9 ~@11]/3", // Am G Am G Am G Am
  Y: "[~@10 [e3,a3,c4]@2 [g3,b3,d4]@2 [a3,c4,e4]@4 [g3,b3,d4]@4 [a3,c4,e4]@4 [b3,d4,g4]@4 [c4,e4,a4]@7 ~@11]/3", // Am G Am G Am G Am
})).s("gm_epiano2").gain(0.19)

// other · epiano1 · "E.PIANO 1"
const epiano1 = note("<~@57 A B@2 C D E F G H I F I F I H G F G H I F I H J K L H M ~@21>".pickRestart({
  A: "b4 ~@3 b4 ~@3 b4 ~@3 b4 ~@3", B: "b4 ~@3 b4 ~@3 b4 ~@3 b4 ~ b4 ~", C: "a4@2 ~@2 a4 ~ g4 ~ f4@3 ~ b4 ~ c5 ~",
  D: "b4 ~@3 b4@2 ~@2 b4@2 ~@2 b4 ~ c5 ~", E: "b4 ~ a4 ~ g4@2 ~@2 g4@3 ~ b4 ~ c5 ~",
  F: "b4@2 ~@2 b4 ~ c5 ~ b4@2 ~@2 b4 ~ c5 ~", G: "b4 ~ a4 ~ g4@3 ~ g4@2 ~@2 b4 ~ c5 ~",
  H: "b4@2 ~@2 b4 ~@3 b4@2 ~@2 b4 ~ c5 ~", I: "b4 ~ a4 ~ g4@2 ~@2 g4@2 ~@2 b4 ~ c5 ~",
  J: "b4 ~ a4 ~ g4@2 ~@2 g4@3 ~ b4 ~ c5@2", K: "b4@2 ~@2 b4 ~ c5@2 b4@2 ~@2 b4 ~ c5 ~",
  L: "b4 ~ a4 ~ g4@3 ~ g4@3 ~ b4 ~ c5 ~", M: "b4 ~ a4 ~ g4@2 ~@2 g4@3 ~@5",
})).s("gm_epiano1").gain(0.38).pan(0.2)

// chords · epiano2 · "E.PIANO 2"
const epiano2_2 = note("<~@56 A@2 B C D E ~@44>".pickRestart({
  A: "[~@7 [f3,a3,d4]@8 [b3,e4,g4,b4]]/2", B: "[c4,f4,a4,c5]@7 [g4,b4,d5,e5]", C: "[f4,a4,c5,e5,f5]@7 [d4,g4,b4]",
  D: "[c4,f4,a4]@3 [g3,b3,e4] [f3,a3,d4]@2 [e4,g4] [d4,f4]", E: "[c4,e4]@3 ~",
})).s("gm_epiano2").gain(0.33).pan(0.4)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@56 A@5 ~@45>".pickRestart({
  A: "[~@7 [d3,f3,a3]@33]/5", // Dm
})).s("gm_synth_strings_1").gain(0.33).pan(0.6)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B C D E B A F A B E D C B G F H I C D E I G J K L M L N L O P Q R A D C B G F H I C D E I G J K L M L N L O P ~@4
  S T C D E B A F A B E D C B G F H I C D E I G J K L M L N L O U O L M V W X Y X W X Y Z ~
>`.pickRestart({
  A: "~@6 a2@2 c3 ~@2 c3!3 a2@2", B: "g2@2 ~ g2 g2@2 a2@2 e2@4 g2@3 ~", C: "~@6 a2@2 c3@2 ~ c3 ~ c3 a2@2",
  D: "g2@2 ~ g2 g2@2 a2@2 e2@3 ~ g2@2 ~@2", E: "~@6 a2@2 c3 ~@2 c3 ~ c3 a2@2", F: "g2@2 ~ g2 g2@2 a2@2 e2@4 g2@2 ~@2",
  G: "~@6 a2@2 c3 ~ c3!4 a2@2", H: "~@6 a2@2 c3@2 c3!2 ~ c3 a2@2", I: "g2@2 ~ g2 g2@2 a2@2 e2@3 ~ g2@3 ~",
  J: "g2@2 ~ g2 g2@2 a2@2 e2@3 ~ g2@2 c3@2", K: "d3@3 ~@3 c3@2 d3@2 ~@4 c3@2", L: "d3@2 e3@2 f3@2 g3@2 ~@2 c3@3 ~ d3@2",
  M: "~@6 c3@2 d3@3 ~@3 c3@2", N: "~@6 c3@2 d3@2 ~@4 c3 ~", O: "~@3 c3 d3 ~@2 c3", P: "d3 e3 f3 g3 ~ c3 ~@2",
  Q: "~@6 a2@2 c3@2 ~ c3@3 a2@2", R: "g2@2 ~ g2@3 a2@2 e2@4 g2@3 ~", S: "a2@4 a2 ~ a2@2 c3@4 a2@4",
  T: "g2@3 ~ g2@2 a2@2 e2@4 g2@3 ~", U: "d3 e3 f3 g3 ~ c3 ~ d3", V: "d3@2 e3@2 f3@2 g3@2 ~@2 c2@3 ~ d2@2",
  W: "~@3 c2 d2 ~@2 c2", X: "d2@2 e2@2 f2@2 g2@2 ~@2 c2@3 ~ d2@2", Y: "~@6 c2@2 d2@3 ~@3 c2@2",
  Z: "d2@2 e2@2 f2@2 g2@2 ~@2 g2@3 ~ a2@2",
})).s("gm_electric_guitar_muted").gain(0.22).pan(0.6)

// drums · kick
const kick = s("bd").struct("<A B@23 C D@7 E B@15 C D@8 F@3 G B@23 C D@11 E D@7 H ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2", D: "x ~@2 x!2 ~@2 x", E: "x ~@2 x!2 ~@3", F: "x ~@3 x ~@2 x",
  G: "x ~@3 x!2 ~@2", H: "x ~@2 x!3 ~ x",
})).gain(0.55)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A ~ B C ~@2 D ~ E ~ F G H I J K D C H E L C E G M N ~@4 O ~ E ~ F G H I J K D C H E L C E G M N ~@4 O ~ P Q R ~ S T
  F U H V E O E ~ F G H I J K D C H E L C E G M N ~@2 M N ~@2 M N ~@11
>`.pickRestart({
  A: "~ x ~ x ~@4", B: "~ x ~@2", C: "x!3 ~", D: "x ~@2 x", E: "~@2 x!2", F: "~ x!3", G: "x!2 ~@2", H: "~@3 x",
  I: "x ~ x ~@2 x ~@2", J: "~@9 x ~@6", K: "x ~@3 x!2 ~@10", L: "~ x ~@2 x ~ x ~", M: "~ x ~@5 x", N: "~ x ~@6", O: "x",
  P: "~ x ~ x ~ x ~@2", Q: "~@3 x ~ x ~@2", R: "~ x ~ x ~@3 x", S: "x!4", T: "x ~@3 x ~@3 x ~@3 x ~@2 x",
  U: "x ~@10 x ~@4", V: "x ~@7 x ~@3 x ~@2 x",
})).gain(0.22)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~@2 B ~@2 A ~ A ~ A ~ A ~@2 C A C ~ D A C E ~ A ~ A ~ A ~ F ~ A ~ A ~ A ~@2 C A C ~ D A C E ~ A ~ A ~ A ~ F ~@3
  A ~ A ~ G ~ A ~ H ~ A ~ A ~ A ~@2 C A C ~ D A C E ~ A ~ A ~ A ~ A ~ A ~ A ~@7 I ~
>`.pickRestart({
  A: "~@7 x", B: "x!2 ~@6", C: "~ x ~@6", D: "x", E: "~@6 x!2", F: "~@3 x", G: "~@3 x ~ x ~ x", H: "~@6 x ~@4 x ~@4",
  I: "~@5 x ~@2",
})).gain(0.27)

// drums · ride
const ride = s("rd").struct("<~@97 A B C D E D@2 F ~>".pickRestart({
  A: "x ~ x!3 ~ x ~", B: "x ~ x!5 ~", C: "x ~ x ~ x!3 ~", D: "x!8", E: "x!5 ~ x!2", F: "x!5 ~@3",
})).gain(0.33)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@97 [~ x ~@3 x ~ x] [~ x ~@5 x] [~ x ~ x ~@3 x] ~ [~@5 x ~@2] ~@4>").gain(0.22)

// … 13 more lines

More by The Police