Strudelify
Message in a Bottle cover art

Reggatta De Blanc

Message in a Bottle

The Police

KeyC♯ minorTempo150 bpm
0:00/0:00
// Message in a Bottle — The Police
// 150 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 158 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(150/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 · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K L M N O P Q R S T@2 U@2 V@5 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 W X Y Z O P Q R
  S T@2 U@2 AA@6 AB AC@8 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 W X Y Z O P Q R S T@2 U@2 AA@6 AB AD@6 A@2 B@2 C@2 D@2 E@2 F@2
  G@2 H@2 I@2 A@2 B@2 C@2 D@2 E@2 F@2 G@2 AE@2
>`.pickRestart({
  A: "[~@4 d#4@2 ~@4 e3@2 b3 ~@7 b3@2 f#2@4 c#3@2 g#3@2 a3 ~, c#3@5 ~ a2@7 ~ b2@8 ~@10, ~ g#3@2 ~@6 f#3@2 ~@5]/2",
  B: "[~@4 d#4@2 ~@4 e3@2 ~@8 b3@2 f#2@4 c#3@2 g#3@2 a3 ~, c#3@6 a2@8 b2@7 ~@11, ~ g#3@2 ~@3 b3@3 f#3@2 ~@5]/2",
  C: "[~@4 d#4@2 ~@4 e3@2 ~@8 b3@2 f#2@4 c#3@2 g#3@2 a3 ~, c#3@5 ~ a2@7 ~ b2@7 ~@11, ~ g#3@2 ~@3 b3@4 ~@6, ~@9 f#3@2 ~@5]/2",
  D: "[~@4 d#4@2 ~@4 e3@2 ~@8 b3 ~ f#2@4 c#3@2 g#3@2 a3 ~, c#3@5 ~ a2@7 ~ b2@6 ~@12, ~ g#3@2 ~@3 b3@4 ~@6, ~@9 f#3@2 ~@5]/2",
  E: "[~@4 d#4@2 ~@4 e3@2 ~@10 f#2@4 c#3@2 g#3@2 a3 ~, c#3@5 ~ a2@8 b2@7 ~@11, ~@2 g#3@4 ~@6 b3@8 b3@5 ~@7, ~@9 f#3@2 ~@5]/2",
  F: "[~@4 d#4@2 ~@4 e3@2 b3@2 ~@8 f#2@4 c#3@2 g#3@2 a3 ~, c#3@5 ~ a2@8 b2@6 b3@7 ~@5, ~ g#3@2 ~@6 f#3@2 ~@5]/2",
  G: "[~@4 d#4@2 ~@4 e3@2 ~@8 b3@2 f#2@4 c#3@2 g#3@2 a3 ~, c#3@5 ~ a2@8 b2@7 ~@11, ~ g#3@2 ~@3 b3@4 ~@6, ~@9 f#3@2 ~@5]/2",
  H: "[~@4 d#4@2 ~@4 e3@2 ~@10 f#2@4 c#3 ~ g#3@2 a3 ~, c#3@5 ~ a2@7 ~ b2@7 ~@11, ~@2 g#3@4 ~@6 b3@8 b3@7 ~@5, ~@9 f#3@2 ~@5]/2",
  I: "[~@4 d#4@2 ~@4 e3@2 ~@6 f#3@2 ~@2 f#2@4 c#3@2 g#3@2 a3 ~, c#3@6 a2@8 b2@7 ~@11, ~@2 g#3@4 ~@6 b3@8 b3@7 ~@5]/2",
  J: "[~@4 d#4@2 ~@4 e3@2 ~@10 f#2@4 c#3@2 a3@3 ~, c#3@6 a2@8 b2@7 ~@11, ~@2 g#3@4 ~@6 b3@8 b3@7 ~@5, ~@9 f#3@2 ~@5]/2",
  K: "[a2,e3]@2 e3@2 e3@2 [a2,e3]@2 e3@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3] ~, a3@3 a3@2 ~@3, ~ a2@2 ~@5", // A5
  L: "[d3,a3]@2 [d3,a3]@2 [d3,a3,d4] ~ [e3,e4]@2 e3@2 [e3,b3]@2 [e3,b3,e4]@2 [e3,b3,e4] ~, d4@2 ~ b3@2 ~@3, ~@2 e4 ~", // D5 E E5
  M: "[e3,a3]@2 e3@2 [a2,e3]@2 [e3,a3]@2 e3@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3] ~, a2@2 ~ a2@2 ~@3, ~ a3@2 ~@5", // A5
  N: "[d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4] ~ [e3,b3,e4]@2 [e3,b3]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 e3 ~", // D5 E5
  O: "[f#2,c#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3,f#3] ~ f#3 ~", // F#5
  P: "[d3,a3,d4] ~ d3 ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~ d3 ~ [d3,a3,d4] ~ d3 ~", // D5
  Q: "[f#2,c#3,f#3] ~ [f#2,c#3,f#3] ~ [f#2,c#3] ~ [f#2,c#3,f#3] ~@3 [f#2,c#3] ~ [f#2,c#3,f#3] ~ c#3 ~", // F#5
  R: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,d4] ~", // D5 D
  S: "[f#2,c#3,f#3] ~ [c#3,f#3] ~ [f#2,c#3] ~ c#3 ~ [f#2,c#3,f#3] ~ [c#3,f#3] ~ [f#2,c#3,f#3] ~@3", // F#5
  T: "[[d3,a3,d4] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [a3,d4] ~@3 g#4@12 ~@2, ~@15 c#3@14 ~@3, ~@8 [g#3,c#4]@7 ~, ~@17 e4@13 ~@2]/2", // D5 C#5
  U: "[~ a4@12 ~@4 g#4@12 ~@3, [a3,c#4,e4]@12 ~@3 [c#3,g#3]@14 ~@3, ~@16 [c#4,e4]@13 ~@3]/2", // A C#5 C#m
  V: "[~ a4@12 ~@4 g#4@12 ~@4 a4@11 ~@5 f#4@28 ~@3, [a3,c#4,e4]@12 ~@3 [c#3,g#3]@14 ~@3 [c#4,e4]@13 ~@2 [c#3,e3]@33, ~@16 [c#4,e4]@13 ~@2 a3@13 ~@2 f#2@34, ~@3 [a3,c#4]@2]/5", // A C#5 C#m A
  W: "[a2,e3,a3] ~ [a2,e3] ~ e3 ~ [a2,e3,a3] ~ e3 ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~", // A5
  X: "[d3,a3,d4] ~ [d3,a3] ~ [d3,a3,d4] ~ [e3,b3,e4] ~ [e3,e4] ~ [e3,b3] ~ [e3,b3,e4] ~ [e3,b3,e4] ~", // D5 E5 E E5
  Y: "[a2,e3,a3] ~ [e3,a3] ~ [a2,e3] ~ [a2,e3,a3] ~ e3 ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~", // A5
  Z: "[d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [e3,b3,e4] ~ [e3,b3] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ e3 ~", // D5 E5
  AA: "[~ a4@12 ~@4 g#4@12 ~@4 a4@11 ~@4 [e4,g#4]@13 ~@3 [c#4,e4,a4]@13 ~@4 [e4,g#4]@12 ~@3, [a3,c#4,e4]@12 ~@3 [c#3,g#3]@14 ~@3 [c#4,e4]@13 ~@18 a3@14 ~@3 [g#3,c#4]@13 ~@3, ~@16 [c#4,e4]@13 ~@2 a3@13 ~@3 [c#3,g#3,c#4]@14 ~@18 c#3@13 ~@4]/6", // E A E A C#5 C#m C#5 C#m …
  AB: "~ a4@11 ~@4, [a3,c#4,e4]@13 ~@3", // A
  AC: "[~ [e4,g#4]@12 ~@4 a4@13 ~@3 g#4@10 ~@5 [c#4,e4,a4]@13 ~@4 f#4@30 ~@15 a4@2 f#4@16, [c#3,g#3,c#4]@13 ~@2 a3@14 ~ c#3@14 ~@19 [f#2,c#3,e3]@31 ~ f#2@2 f#4@5 c#3@24 ~@2, ~@16 [c#4,e4]@14 ~ [g#3,c#4]@14 ~@2 a3@14 ~@3 [a3,c#4]@32 a3@6 c#4@26, ~@32 e4@13 ~@51 c#3@2 f#2@6 [a3,a4]@4 [f#3,f#4]@16 ~@4, ~@96 e3 c#4@3 e3@26 ~@2]/8", // E A C#5 F#7 C#m C#5 A F#
  AD: "[~ [e4,g#4]@12 ~@4 a4@13 ~@3 g#4@10 ~@5 [c#4,e4,a4]@13 ~@4 f#4@30 ~, [c#3,g#3,c#4]@13 ~@2 a3@14 ~ c#3@14 ~@19 [f#2,c#3,e3]@31 ~@2, ~@16 [c#4,e4]@14 ~ [g#3,c#4]@14 ~@2 a3@14 ~@3 [a3,c#4]@32, ~@32 e4@13 ~@51]/6", // E A C#5 F#7 C#m C#5 A
  AE: "[~@4 d#4@2 ~@4 e3@2 ~@2 b2@7 ~@11, c#3@5 ~ a2@7 ~@19, ~ g#3@2 ~@3 b3@4 ~@6]/2",
})).s("gm_electric_guitar_clean").gain(0.25)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@3 A B C D E F E F C F C F C F C F G H I H J K L M L N O P Q R S R T U@2 V ~@2 A B E D C B E F C F C F W H X H Y Z L
  AA L AB AC R AD R AD R AD R AE R AF R AD R AG AH@2 AI@2 F E D C F C F C B C B C B C D W AJ AK H AL AA AM AN L AO AP AQ
  AR R AD R AD R AS R S R AS R AT AU@3 ~@6 A F C F C F C F C F C F C F C B C F C F C F C F C F ~
>`.pickRestart({
  A: "~@14 c#2 ~", B: "c#2@5 ~ a1@8 b1 ~", C: "b1@6 f#2@8 c#2 ~", D: "c#2@6 a1@7 ~ b1 ~", E: "b1@6 f#2@7 ~ c#2 ~",
  F: "c#2@6 a1@8 b1 ~", G: "b1@6 f#2@6 g#2@3 ~", H: "a1!8", I: "d2!3 e2@2 e2!3",
  J: "d2@2 d2@2 d2@2 e2@3 ~ e2 ~ e2@2 e2 ~", K: "f#2 ~ f#2@2 f#2 ~ f#2@2 f#2@2 f#2@2 f#2@2 a2@2", L: "d2!7 a2",
  M: "f#2@2 f#2 ~ f#2@2 f#2@2 f#2@2 f#2 ~ f#2@2 a2@2", N: "f#2@2 f#2@2 f#2 ~ f#2@2 f#2 ~ f#2 ~ f#2@2 a2@2",
  O: "d2!6 a2@2", P: "c#2@3 ~ c#2@3 ~ c#2@5 c#2@2 ~", Q: "a1 ~ a1@2 ~@2 a1@2 g#1@5 ~ g#1 ~",
  R: "c#2@3 ~ c#2@3 ~ c#2@5 ~ c#2@2", S: "a1@2 a1@2 ~@2 a1@2 g#1@5 ~ g#1@2", T: "a1 ~ a1@3 ~ a1@2 g#1@7 ~",
  U: "[f#1@29 ~@3]/2", V: "c#2@5 ~@3", W: "b1@3 f#2@3 g#2 ~", X: "d2@2 d2@2 d2@2 e2@4 e2@2 e2 ~ e2@2",
  Y: "d2 ~ d2 ~ d2@2 e2@4 e2 ~ e2 ~ e2 ~", Z: "f#2@2 f#2@2 f#2 ~ f#2 ~ f#2@2 f#2 ~ f#2@2 a2@2",
  AA: "f#2 ~ f#2 ~ f#2 ~ f#2@2 f#2 ~ f#2 ~ f#2@2 a2@2", AB: "f#2@2 f#2@2 f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2@2 a2@2",
  AC: "d2@2 d2@2 d2@2 d2 ~ d2 ~ d2@2 a2@4", AD: "a1 ~ a1@2 ~@2 a1@2 g#1@5 ~ g#1@2",
  AE: "a1 ~ a1@2 ~@2 a1 ~ g#1@5 ~ g#1@2", AF: "a1 ~ a1@3 ~ a1@2 g#1@6 g#1@2", AG: "a1 ~ a1@2 ~@2 a1@2 g#1@8",
  AH: "f#1/2", AI: "[f#1@24 ~@2 f#1@4 c#2 ~]/2", AJ: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1 ~ a1 ~ a1@2",
  AK: "d2@2 d2 ~ d2 ~ e2@3 ~ e2 ~ e2 ~ e2@2", AL: "d2@2 d2 ~ d2 ~ e2@3 ~ e2 ~ e2 ~ e2 ~",
  AM: "d2@2 d2@2 d2 ~ d2@2 d2@2 d2@2 d2@2 a2@2", AN: "f#2 ~ f#2 ~ f#2@2 f#2 ~ f#2 ~ f#2 ~ f#2@2 a2@2",
  AO: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2@2 a2@2", AP: "d2@2 d2@2 d2@2 d2@2 d2@2 d2@2 a2@3 ~",
  AQ: "c#2@3 ~ c#2@3 ~ c#2@4 ~@2 c#2@2", AR: "a1 ~ a1@3 ~ a1@2 g#1@5 ~ g#1@2", AS: "a1@2 a1@3 ~ a1@2 g#1@5 ~ g#1@2",
  AT: "a1@2 a1@2 ~@2 a1@2 g#1@7 ~", AU: "[f#1@11 ~@5]/3",
})).s("gm_acoustic_bass").gain(0.38)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A@2 B C A@12 D@2 E@2 F G H I J K L M N O ~@8 A@2 B C A@12 F G H I J K L M N O ~@18 A@2 B C A@12 F G H I J K L M N O
  ~@16 P@2 Q@2 R@4 A@8 D@2 A@2 B C A@10 S@2
>`.pickRestart({
  A: "[~@2 b3@2 f#4 ~@5 b3@2 d#4 ~@5 c#4@2 e4 ~ f#2@4 g#3@2 d#4@2 e4 ~, e3@5 ~ e3@7 ~ d#3@7 ~@11]/2",
  B: "~@2 b3@2 f#4 ~@5 b3@2 d#4 ~@3, e3@5 ~ e3@7 ~@3", C: "~@2 c#4@2 e4 ~ f#2@4 g#3@2 d#4@2 e4 ~",
  D: "[~@2 b3@2 f#4 ~@5 b3@2 d#4 ~@5 c#4@2 e4 ~ f#2@4 g#3@2 d#4@2 e4 ~, e3@5 ~ e3@7 ~ d#3@6 ~@12]/2",
  E: "[~@2 b3@2 f#4 ~@5 b3@2 d#4 ~@5 c#4@2 e4 ~ f#2@4 g#3@2 e4 ~@3, e3@5 ~ e3@7 ~ d#3@7 ~@11]/2",
  F: "~@2 [a2,e3,a3] ~ [a2,e3,a3] [a2,e3]!2 ~", G: "[d3,a3,d4] ~@5 [e3,b3,e4]@6 [e3,b3,e4]@2 ~@2",
  H: "[a2,e3,a3] ~@3 [a2,e3,a3]@2 ~@2 [a2,e3]@2 e3@2 [e3,a3]@2 ~@2, ~@2 a3 ~, ~@5 a2@2 ~", // A5
  I: "[d3,a3,d4] ~@2 [e3,b3,e4]@3 [e3,b3,e4] ~", J: "[f#2,c#3]!2 ~ [f#2,c#3]!2 [f#2,c#3,f#3] ~@2",
  K: "[d3,a3,d4]@2 [d3,a3,d4]@2 ~@2 [d3,a3,d4]@2 [d3,a3]@2 [d3,a3,d4]@2 ~@2 [d3,a3] ~", // D5
  L: "[f#2,c#3]@2 [f#2,c#3]@2 ~@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3,f#3]@2 ~@2 [f#2,c#3] ~", // F#5
  M: "[d3,a3]@2 [d3,a3,d4]@2 ~@2 [d3,a3,d4] ~ [d3,a3,d4]@2 [d3,a3]@2 ~@4", // D5
  N: "[f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 ~@2 [f#2,c#3,f#3] ~ f#2@2 [f#2,c#3,f#3]@2 ~@2 [f#2,f#3] ~", // F#5 F#
  O: "[d3,a3,d4]@2 [d3,a3,d4]@2 ~@2 [d3,a3] ~ [d3,a3,d4]@2 [d3,a3,d4]@6", // D5
  P: "[~@2 g#3@2 d#4 ~ a2@4 e3@2 b3 ~@5 f#3@2 b3 ~ f#2@4 c#3@2 g#3@2 a3 ~, c#3@5 ~@9 b2@6 ~@12]/2",
  Q: "[~@2 g#3@2 d#4 ~@5 e3@2 b3 ~@5 f#3@2 b3 ~ f#2@4 c#3@2 g#3@2 a3 ~, c#3@5 ~ a2@7 ~ b2@7 ~@11]/2",
  R: "[~@2 b3@2 f#4 ~@5 b3@2 d#4 ~@5 c#4@2 e4 ~ f#2@4 g#3@2 d#4@2 e4 ~, c#3@5 ~ a2@7 ~ b2@7 ~@11]/2",
  S: "[~@2 b3@2 f#4 ~@5 b3@2 d#4 ~ d#3@7 ~@11, e3@5 ~ e3@7 ~@19]/2",
})).s("gm_overdriven_guitar").gain(0.19).pan(0.7)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  ~@2 A@2 ~@16 B ~@3 C D E F G ~@11 A@2 ~@12 B ~@3 C D E F G ~@21 A@2 ~@12 B ~@3 C D E F G ~@37 A@2 ~@12
>`.pickRestart({
  A: "[~@14 d#3@7 ~@11]/2", B: "~@5 a3!2 ~", C: "f#3@5 ~ f#3@2 f#3@2 ~@4 [f#2,c#3,f#3] ~", D: "~@8 d4@2 ~@4 d4 ~",
  E: "f#3@4 ~@2 f#3@4 ~@4 f#3 ~", F: "d4 ~@4 d4 ~@2", G: "~@4 [c#3,f#3] ~@3",
})).s("gm_overdriven_guitar").gain(0.1).pan(0.7)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note("<~@20 A@8 ~@26 A@8 ~@36 B@8 ~@52>".pickRestart({
  A: "[a4@11 b4@5 a4@11 b4@5 e4@32, e5]/8", B: "[a4@22 b4@10 a4@23 b4@9 e4@64, e5]/8",
})).s("gm_drawbar_organ").gain(0.24).pan(0.6)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@33 A@2 B ~@28 C D@2 E@2 F@3 G H I J@2 K@3 ~@20 L@2 ~@6 M N O@3 P Q@2 R S@2 T@2 U@3 ~@34
>`.pickRestart({
  A: "[~@14 f#4@11 ~ f#4@2 ~ e4 ~@2]/2", B: "f#4", C: "~ f#4@3",
  D: "[~@2 f#4@2 ~ e4@2 ~ c#4@2 ~@2 b3@7 ~@13, ~@11 c#4@2 ~@19]/2", E: "[~@2 f#4@4 c#5 ~ f#4@22 ~@2]/2",
  F: "[~@2 f#4@2 ~ e4 ~@2 c#4@2 ~@2 b3@2 c#4 c#4@25 ~@8, ~@15 b3 ~@32]/3", G: "~@8 e4 ~@2 f#4 ~ g#4 ~@2",
  H: "e4@4 c#4@6 c#4 ~ b3 g#3@3", I: "e3",
  J: "[~@2 c#3@3 e3@3 g#3@3 c#4@3 ~@2 c#4@15 ~, ~@2 b2 ~@5 f#3 ~@2 b3 ~@2 e4@8 ~@10]/2",
  K: "[~ f#4@2 f#4 e4 ~ e4 c#4@15 ~@2]/3", L: "[~@4 e4@14 d4@2 c#4@2 b3@9 ~]/2", M: "~@4 f#4@11 ~",
  N: "~@3 b4@3 a4 g#4", O: "[~@10 c#5@3 ~ g#4@4 ~ e4 f#4@2 ~@2 e4@2 c#4 ~ b3 g#3 c#4@17 ~, f#4@6 ~@3 g#4 ~@14]/3",
  P: "~@2 c#4@3 d#4@2 ~ e4@2 f#4@3 g#4@2 ~", Q: "[b4@4 a4@2 a4@4 g#4@11 ~ f#4@4 e4 ~@3 f#4@2]/2", R: "e4 c#4@3",
  S: "[~@2 f#3@4 e3@2 c#3 ~ c#3@2 b2@2 c#3@8 b3 ~ c#4@2 ~ e4@2 f#4@2 ~]/2", T: "[e4@3 c#4@22 ~@7]/2",
  U: "[~@2 [f#4,b4]@12 f#4@10 e4@2 f#4@17 ~ f#4 e4 ~@2]/3", // B5
})).s("gm_electric_guitar_muted").gain(0.19)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@146 A@3 ~ B@3 C@2 D@2 ~>".pickRestart({
  A: "[~@4 g#5@7 ~@3 g#5@5 ~ e5 ~ f#5 ~ d#5@4 c#5@16 ~@4]/3",
  B: "[g#4@2 b4@2 b4@4 g#4@2 b4 ~ b4@2 g#4@4 b4 ~ b4@2 g#4@2 b4@4 c#5@17 ~@3]/3", C: "[~@14 b4@5 ~ b4@5 ~ b4@5 ~]/2",
  D: "[c#5@3 ~ b4@2 ~@2 g#4@2 e4@4 c#4@16 ~@2]/2",
})).s("gm_distortion_guitar").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A@4 B@3 C B C@10 D E@10 F G@23 E@9 H F G@7 F G@3 F G@22 E@8 I F G@15 F G@15 F G@16 ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x", C: "~@3 x!2 ~@3", D: "~@3 x!2 ~@2 x", E: "x!2 ~ x!3 ~ x", F: "~ x!3", G: "x!4",
  H: "x!2 ~@6", I: "x!2 ~@4 x ~",
})).gain(0.44)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@3 A ~@19 B ~@45 C D ~@36 A ~@2 E F ~ G ~ H I J K ~@19 L M ~@18>".pickRestart({
  A: "~@7 x ~@8", B: "~@11 x ~@4", C: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", D: "x ~ x ~@5 x ~@2 x!2 ~ x ~",
  E: "x ~@2 x!2 ~ x ~@2 x!2 ~ x ~@2 x", F: "x ~ x ~@2 x!2 ~ x ~@7", G: "~@2 x!4 ~@2 x ~@7", H: "~ x!2 ~ x!3 ~",
  I: "x ~@2 x!2 ~@11", J: "~@8 x ~@2 x!2 ~ x ~", K: "~ x!2 ~ x ~@2 x!2 ~ x ~ x ~@3", L: "~@15 x",
  M: "~@4 x ~@2 x!2 ~@7",
})).gain(0.27)

// drums · low tom
const low_tom = s("lt").struct("<~@44 A@2 ~@2 A@2 ~@2 A@2 ~@17 B ~@9 A ~@41 C ~@23 D ~@10>".pickRestart({
  A: "~@3 x!2 ~@3", B: "~ x!2 ~", C: "~@5 x ~@2", D: "~@2 x ~@7 x!3 ~@3",
})).gain(0.38)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@37 [~@6 x!2]!2 ~@119>").gain(0.16)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@23 A B@5 ~@7 C D ~@2 B@4 ~@2 B@2 ~@2 B@2 ~@28 C E ~@40 C F ~@23 D ~@10
>`.pickRestart({
  A: "~@15 x", B: "~@3 x!2 ~@3", C: "~@7 x", D: "~@3 x ~@4", E: "~ x ~@6", F: "~ x ~@2",
})).gain(0.38)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B C A D A@6 D A@7 E ~@3 C ~@7 F ~ G B A ~@5 A B ~@6 A ~ A@3 ~@10 A@2 H A ~@2 A ~ A ~@3 I A ~@4 A J ~ K B L M N M@6 L
  O P Q@2 R ~@6 A ~@4 A ~@7 F ~@3 A B A ~@11 S ~@16 T ~
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@6", C: "~@3 x ~@4", D: "~@6 x!2", E: "~@3 x", F: "~@3 x ~ x ~@2", G: "~@5 x ~@2",
  H: "~ x ~@5 x", I: "~@5 x ~ x", J: "~@10 x!2 ~@2 x ~", K: "~@2 x ~@3 x!2 ~@2 x!2 ~@2 x!2", L: "~@3 x ~ x ~ x",
  M: "~ x ~ x ~ x ~ x", N: "~ x ~ x ~@4", O: "~ x ~@3 x ~@2", P: "~@3 x ~ x!3", Q: "x!4", R: "x!3 ~ x ~@3",
  S: "x ~ x ~ x!3 ~", T: "~@2 x!2",
})).gain(0.33)
// … 31 more lines

More by The Police