Strudelify

Seven Days

Sting

KeyC majorTempo160 bpm
0:00/0:00
// Seven Days — Sting
// 160 bpm, 5/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 2) are rendered on a constant 5/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: ch 2 "E. Guitar | Sting" named as a guitar, played on electric guitar clean (its string ensemble 2 patch is not one); ch 3 "Ac. Guitar" named as a guitar, played on electric guitar clean (its piano patch is not one)
// note: Full arrangement: all 170 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/5)

// 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 · "Ac. Guitar"
const electric_guitar_clean = note(`<
  ~@2 A ~ B ~ B ~ B ~ A ~ C ~ D ~ E ~ F ~ C ~ D ~ G H D I J K@2 E@2 L D M N O P Q ~ R S T U V R T U V W V W V X ~@2 A
  ~@2 A ~ C ~ D ~ E ~ F ~ C ~ D ~ G H D I J K@2 E@2 L D M N O P Q ~ R S T U V R T U V W V W V X ~@2 A@2 Y@2 Z@2 AA@2 Z@2
  AB@4 AC@2 AD@2 AE AF@2 AG@4 AH AI AJ AK AL AI AJ AK AM AK AM AK ~ AN AO AP AQ AR AS AQ AT AS AN AT AU AN AO AU AV AO
  AS AN AO AS AN AO AS ~
>`.pickRestart({
  A: "~@7 [d4,e4,g4]@2 ~@15", B: "~@5 g3@2 [d4,e4,g4]@2 ~@15", C: "~@5 f3@2 [g3,c4,d4]@2 ~@15", D: "~@7 [a3,d4]@2 ~@15",
  E: "~@7 [g3,c4]@2 ~@15", F: "~@7 [c4,d4,g4]@2 ~@15", G: "~@7 [f#3,b3]@2 ~@15",
  H: "~@3 g4@2 ~@2 [d4,g4]@2 ~@3 [d4,g4]@2 ~@3 [d4,g4]@2 ~@3 [d4,g4]@2, ~ d4 ~@10", I: "~@7 f4@5 a4@7 a#3@2 ~ f4@2",
  J: "~@7 c4@5 f4@12", K: "~@5 d3@2 [a3,b3,d4]@2 ~@15", L: "[d4,g4]@19 ~@5", M: "[f4,a4]@19 ~@5",
  N: "~@5 f3@2 [g3,c4,f4]@2 ~@15", O: "[a3,d4]@19 ~@5", P: "~@5 d3@2 [a3,d4]@2 ~@15", Q: "~@5 e3@2 f#3@5 b3@12",
  R: "~@3 [f2,a2]@2 [f2,a2,f3,a3,c4,f4]@2 [f2,a2,c3]@2 ~ [f2,a2,f3,a3,c4,f4]@2 [f2,a2,c3]@2 ~ [a2,f3,a3,c4,f4]@2 [f2,a2,c3]@2 ~ [a3,c4,f4]@2 [f2,a2,c3]@2, [f2,a2,f3,a3,c4]@2 c3@2 ~@10 f2@2 ~@3 [f2,a2,f3]@2 ~@3, ~ f4@2 ~@21", // F
  S: "~@3 [e2,f#2,a2]@2 [e2,a2,e3,a3,c4,f#4]@2 ~ e2@2 [e2,a2,e3,a3,c4,f#4]@2 [e2,f#2,a2,c3]@2 ~ [a2,e3,a3,c4,f#4]@2 [e2,f#2,a2,c3]@2 ~ [a3,c4,f#4]@2 [e2,f#2,a2,c3]@2, [e2,a2,e3,a3,c4]@2 c3@2 ~@3 [f#2,a2,c3]@2 ~@5 e2@2 ~@3 [e2,a2,e3]@2 ~@3, ~ f#4@2 ~@21", // F#m7 F#m7b5 F#dim F#m7b5 Am F#dim A5
  T: "~@3 [g2,b2]@2 [g2,b2,d3,g3,b3,g4]@2 [g2,b2,d3]@2 ~ [g2,b2,d3,g3,b3,g4]@2 [g2,b2,d3]@2 ~ [b2,d3,g3,b3,g4]@2 [g2,b2,d3]@2 ~ [g3,b3,g4]@2 [g2,b2,d3]@2, [g2,b2,d3,g3,b3]@2 d3@2 ~@10 g2@2 ~@3 [g2,b2,d3]@2 ~@3, ~ g4@2 ~@21", // G
  U: "~@3 [g#2,b2]@2 [g#2,b2,e3,g#3,b3,e4]@2 [g#2,b2,e3]@2 ~ [g#2,b2,e3,g#3,b3,e4]@2 [g#2,b2,e3]@2 ~ [b2,e3,g#3,b3,e4]@2 [g#2,b2,e3]@2 ~ [g#3,b3,e4]@2 [g#2,b2,e3]@2, [g#2,b2,e3,g#3,b3]@2 e3@2 ~@10 g#2@2 ~@3 [g#2,b2,e3]@2 ~@3, ~ e4@2 ~@21", // G#m E
  V: "[a2,e3,a3,c4,e4]@2 ~ [a2,c3]@2 [a2,e3,a3,c4,e4]@2 [a2,c3,e3]@2 ~ [a2,e3,a3,c4,e4]@2 [a2,c3,e3]@2 ~ [e3,a3,c4,e4]@2 [a2,c3,e3]@2 ~ [c4,e4]@2 [a2,c3,e3]@2, ~@2 e3@2 ~@10 a2@2 ~@3 [a2,e3,a3]@2 ~@3", // Am C Am A5
  W: "[a#2,d3,g#3,c4,f4]@2 ~ [a#2,d3,f3,g#3]@2 [a#2,d3,g#3,c4,f4]@2 ~ [a#2,d3]@2 [a#2,d3,g#3,c4,f4]@2 [a#2,d3,f3,g#3,c4]@2 ~ [d3,g#3,c4,f4]@2 [a#2,d3,f3,g#3,c4]@2 ~ [c4,f4]@2 [a#2,d3,f3,g#3,c4]@2, ~@2 c4@2 ~@3 [f3,g#3,c4]@2 ~@5 a#2@2 ~@3 [a#2,d3,g#3]@2 ~@3", // A#7 A# A#7 Dm7b5 A#7 F5 A#7 Fm …
  X: "[f3,g#3,c4]@23 ~", Y: "[~@5 g#3@2 c4@5 e4@7 g#3@2 ~ c4@7 ~@2 c4@5 e4@10 c4@2]/2",
  Z: "[~@5 g3@2 d4@5 g4@2 d4@5 d4@2 ~ e4@7 g3@2 d4@5 g4@2 d4@5 d4@2 ~ e4@2]/2",
  AA: "[~@5 g#3@2 c4@5 e4@7 g#3@2 ~ c4@7 g#3@2 c4@5 e4@10 c4@2]/2",
  AB: "[~@5 g#3@2 c4@5 e4@7 g#3@2 ~ c4@7 g#3@2 c4@5 e4@10 c4@7 a3@2 c4@5 e4@7 a3@2 ~ c4@4 f3@5 a3@5 c4@5 f3@2 c4@5]/4",
  AC: "[~@5 g#3@2 c4@5 e4@2 a3@5 a3@2 ~ c4@7 g#3@2 c4@5 e4@12]/2", AD: "~@5 g3@2 d4@5 g4@2 d4@5 d4@2 ~ e4@2",
  AE: "~@5 g#3@2 c4@5 e4@7 d4@2 ~ e4@2", AF: "[~@5 g#3@2 c4@5 e4@7 g#3@2 ~ c4@7 g#3@2 c4@5 e4@7 c4@5]/2",
  AG: "[~@5 g3@2 d4@5 g4@2 d4@5 d4@2 ~ e4@7 g3@2 d4@5 g4@2 d4@5 d4@2 ~ e4@7 g3@2 d4@5 g4@2 d4@5 d4@2 ~@4 f2 ~ [a2,c3]@2 [f2,a2,f3,a3,c4,f4]@2 [f2,a2,c3]@2 ~ [f2,a2,f3,a3,c4,f4]@2 [f2,a2,c3]@2 ~ [f2,a2,f3,a3,c4]@2 [f2,a2,c3]@2 ~ [f2,a2,f3]@2 [f2,a2,c3]@2, ~@70 e4@17 ~@4 [a3,c4,f4]@2 ~@3, ~@36 [a2,f3,a3,c4,f4] f2 ~@5 f4 ~@4]/4", // Am F
  AH: "~ e2 ~ [f#2,a2,c3]@2 [e2,a2,e3,a3,c4,f#4]@2 ~ c3@2 [e2,a2,e3,a3,c4,f#4]@2 [e2,f#2,a2,c3]@2 ~ [e2,a2,e3,a3,c4]@2 [e2,f#2,a2,c3]@2 ~ [e2,a2,e3]@2 [e2,f#2,a2,c3]@2, [a2,e3,a3,c4,f#4]@2 e2@2 ~@3 [e2,f#2,a2]@2 ~@5 f#4@2 ~@3 [a3,c4,f#4]@2 ~@3", // F#dim F#m7b5 Am F#m7b5 A5 F#m7b5 F#m7 F#dim
  AI: "~ g2 ~ [b2,d3]@2 [g2,b2,d3,g3,b3,g4]@2 [g2,b2,d3]@2 ~ [g2,b2,d3,g3,b3,g4]@2 [g2,b2,d3]@2 ~ [g2,b2,d3,g3,b3]@2 [g2,b2,d3]@2 ~ [g2,b2,d3]@2 [g2,b2,d3]@2, [b2,d3,g3,b3,g4]@2 g2@2 ~@10 g4@2 ~@3 [g3,b3,g4]@2 ~@3", // Bm G
  AJ: "~ g#2 ~ [b2,e3]@2 [g#2,b2,e3,g#3,b3,e4]@2 [g#2,b2,e3]@2 ~ [g#2,b2,e3,g#3,b3,e4]@2 [g#2,b2,e3]@2 ~ [g#2,b2,e3,g#3,b3]@2 [g#2,b2,e3]@2 ~ [g#2,b2,e3]@2 [g#2,b2,e3]@2, [b2,e3,g#3,b3,e4]@2 g#2@2 ~@10 e4@2 ~@3 [g#3,b3,e4]@2 ~@3", // E5 E
  AK: "[a2,e3,a3,c4,e4]@2 ~ [c3,e3]@2 [a2,e3,a3,c4,e4]@2 [a2,c3,e3]@2 ~ [a2,e3,a3,c4,e4]@2 [a2,c3,e3]@2 ~ [a2,e3,a3,c4]@2 [a2,c3,e3]@2 ~ [a2,e3]@2 [a2,c3,e3]@2, ~@2 a2@2 ~@10 e4@2 ~@3 [a3,c4,e4]@2 ~@3", // Am C Am A5 Am
  AL: "~ f2 ~ [a2,c3]@2 [f2,a2,f3,a3,c4,f4]@2 [f2,a2,c3]@2 ~ [f2,a2,f3,a3,c4,f4]@2 [f2,a2,c3]@2 ~ [f2,a2,f3,a3,c4]@2 [f2,a2,c3]@2 ~ [f2,a2,f3]@2 [f2,a2,c3]@2, [a2,f3,a3,c4,f4]@2 f2@2 ~@10 f4@2 ~@3 [a3,c4,f4]@2 ~@3", // Am F
  AM: "[a#2,d3,g#3,c4,f4]@2 ~ [d3,f3,g#3,c4]@2 [a#2,d3,g#3,c4,f4]@2 ~ [g#3,c4]@2 [a#2,d3,g#3,c4,f4]@2 [a#2,d3,f3,g#3,c4]@2 ~ [a#2,d3,g#3,c4]@2 [a#2,d3,f3,g#3,c4]@2 ~ [a#2,d3]@2 [a#2,d3,f3,g#3,c4]@2, ~@2 a#2@2 ~@3 [a#2,d3,f3]@2 ~@5 f4@2 ~@3 [g#3,c4,f4]@2 ~@3", // A#7 Dm7b5 A#7 G# A#7 A# A#7 A# …
  AN: "~@3 [d4,e4]@2 ~@5 [d4,e4,g4]@5 ~@2 [d4,e4,g4]@2 ~@5, ~ g4 ~@10", // Dsus2 Em7
  AO: "[d4,e4,g4]@5 ~@2 [d4,e4,g4]@2 ~@6 [e4,g4]@5 ~@2 [d4,e4,g4]@2, ~@14 d4@5 ~@5", // Em7 Em Em7
  AP: "~@5 [d4,e4,g4]@5 ~@2 [d4,e4,g4]@2 ~@5 [c4,e4]@5", // Em7 C
  AQ: "~@3 [c4,e4]@2 ~@5 [c4,e4,g4]@5 ~@2 [c4,e4,g4]@2 ~@5, ~ g4 ~@10", // C
  AR: "[c4,e4,g4]@5 ~@2 [d4,e4,g4]@2 ~@6 [e4,g4]@5 ~@2 [d4,e4,g4]@2, ~@14 d4@5 ~@5", // C Em7 Em Em7
  AS: "~@5 [d4,e4,g4]@5 ~@2 [d4,e4,g4]@2 ~@5 [d4,e4,g4]@5", // Em7
  AT: "[c4,e4,g4]@5 ~@2 [c4,e4,g4]@2 ~@6 [e4,g4]@5 ~@2 [c4,e4,g4]@2, ~@14 c4@5 ~@5", // C Em C
  AU: "~@5 [c4,e4,g4]@5 ~@2 [c4,e4,g4]@2 ~@5 [c4,e4,g4]@5", // C
  AV: "~@3 [c4,d#4]@2 ~@5 [c4,d#4,g4]@5 ~@2 [c4,d#4,g4]@2 ~@5, ~ g4 ~@10", // Cm
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.6)

// chords · pizzicato strings · "Pizz. Strings 1"
const pizzicato_strings = note(`<
  ~ A@3 B C A@5 D E F G D A@3 D E F G H@2 A I D E F G ~@24 A@3 I A@2 D E F G D A@3 D E F G H@2 A I D E F G ~@24 A@3 J
  ~@36 A@2 K L A M K N B A O N C@2 O N C P O N C@2 O K Q
>`.pickRestart({
  A: "~@7 [a3,d4,g4]@2 ~@15", B: "~@7 [a3,d4,g4,b4]@2 ~@15", C: "~@7 [d4,e4,g4,b4]@2 ~@15", D: "~@7 [c4,f4,a4]@2 ~@15",
  E: "~@7 [a3,c4,d4,f4]@2 ~@15", F: "~@7 [d4,g4,b4]@2 ~@15", G: "~@7 [a3,b3,d4,g4]@2 ~@15", H: "~@7 [b3,e4,g#4]@2 ~@15",
  I: "~@7 [a3,d4]@2 ~@15", J: "~@7 [a3,d4,g4]@5 ~@12", K: "~@7 [g#3,c4,e4]@2 ~@15", L: "~@7 [g#3,c4]@2 ~@15",
  M: "~@7 [a3,d4,e4]@2 ~@15", N: "~@7 [g#3,c4,d4]@2 ~@15", O: "~@7 [g#3,c4,e4,g4]@2 ~@15",
  P: "~@7 [b3,d4,g4,b4]@2 ~@15", Q: "[c4,c5]@5 ~@19",
})).s("gm_pizzicato_strings").gain(0.3).pan(0.3)

// other · pizzicato strings · "Pizz. Strings 2"
const pizzicato_strings_2 = note(`<
  ~ A@10 B C D@2 E@2 A@2 B C F@2 G@2 A@2 B C D@2 E@2 A@2 B C D@2 G@2 ~@14 A@6 B C D@2 E@2 A@2 B C F@2 G@2 A@2 B C D@2
  E@2 A@2 B C D@2 G@2 ~@14 A@4 ~@36 A@2 C@2 A@2 C@2 A@2 C@2 A@2 C@2 A@2 C@2 A@2 C@2 H
>`.pickRestart({
  A: "c3@7 ~@17", B: "d#3@7 ~@17", C: "a#2@7 ~@17", D: "g3@7 ~@17", E: "f3@7 ~@17", F: "g2@7 ~@17", G: "e3@7 ~@17",
  H: "c3@5 ~@19",
})).s("gm_pizzicato_strings").gain(0.35).pan(0.7)

// chords · string ensemble 1 · "Strings 1"
const string_ensemble_1 = note(`<
  ~@41 A B C@2 B A D E B@6 ~@36 A B C@2 B A D E B@6 ~@4 F@2 G@2 F@2 G@2 F@2 H@2 F@2 I@2 J K L@4 A B C@2 B A D E B@6 ~@25
>`.pickRestart({
  A: "[c4,f4]", B: "[c4,e4]", C: "[b3,d4]", D: "[g3,b3,d4,g4]", E: "[b3,e4]", F: "[g#3,d4]/2", G: "[g3,d4]/2",
  H: "[f3,a3,c4]/2", I: "[g3,a3,d4]/2", J: "[g#3,d4]", K: "[g#3,c4]", L: "[~@41 d4@2 e4@5, [e3,g3,a3,c4]]/4",
})).s("gm_string_ensemble_1").gain(0.3)

// chords · string ensemble 2 · "Strings 2"
const string_ensemble_2 = note(`<
  ~@41 A B C D E F G H E I E I E J ~@36 A B C D E F G H E I E I E J ~@26 A B C D E F G H E I E I E J ~@25
>`.pickRestart({
  A: "[f3,a3]", B: "[f#2,a3]", C: "[g2,d3,g3]", D: "[g#2,d3,g#3]", E: "[a2,g3]", F: "[f2,f3,a3]", G: "[g2,d3]",
  H: "[g#2,e3,g#3]", I: "[a#2,g#3]", J: "[f2,f3,g#3]",
})).s("gm_string_ensemble_2").gain(0.3)

// chords · string ensemble 2 · "Strings 2" · soft notes
const string_ensemble_2_soft = note("<~@41 A B ~@48 A B ~@38 A B ~@37>".pickRestart({
  A: "f2", B: "e3",
})).s("gm_string_ensemble_2").gain(0.2)

// other · piano
const piano = note(`<
  ~@41 A@2 B@2 C A B C@2 D@8 ~@33 A@2 B@2 C A B C@2 D@8 ~@23 A@2 B@2 C A B C@2 E@5 C@24 ~
>`.pickRestart({
  A: "~@7 [c5,c6]@5", B: "~@7 [d5,d6]@5", C: "~@7 [e5,e6]@5",
  D: "[~@7 [e5,e6]@7 ~@5 [e5,e6]@7 ~@5 [e5,e6]@7 ~@5 [e5,e6]@7 ~@5 [e5,e6]@7 ~@5 [e5,e6]@7 ~@5 [e5,e6]@7 ~@5 [e5,e6]@5]/8", // E
  E: "[~@7 [e5,e6]@7 ~@5 [e5,e6]@7 ~@5 [e5,e6]@7 ~@5 [e5,e6]@7 ~@5 [e5,e6]@5]/5", // E
})).s("gm_piano").gain(0.25).pan(0.7)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~ A@4 B C B C B@2 D E F@2 G@2 B@2 D H F@2 I@2 B@2 D H F@2 G@2 B@2 D E F@2 J K L M N O P Q R O P S P S P T B C B C B@2
  D E F@2 G@2 B@2 D H F@2 I@2 B@2 D H F@2 G@2 B@2 D E F@2 J K L M N O P Q R O P S P S P T B C B U V W X Y V@2 Z Y V@2
  AA@2 V@2 Y AB V@2 Z@2 AC AD L M N O P Q R O P S P S P T AE AF AG AH AE AI AG AH AE AJ AG@2 AE AF AG AH AE AF AG AH AE
  AF AG AK AL
>`.pickRestart({
  A: "c2@7 ~@17", B: "c2@7 g2@2 ~@15", C: "c2@5 ~@7", D: "d#2@7 a#2@2 ~@15", E: "a#2@7 f2@2 ~@15", F: "g1@7 d2@2 ~@15",
  G: "f1@7 c2@2 ~@15", H: "a#1@7 f2@2 ~@15", I: "e2@7 b2@2 ~@15", J: "e1@7 b1@2 ~@15", K: "e1@7 e1@7 e2@10",
  L: "f1@7 f1@7 f2@10", M: "f#1@7 f#1@7 f#2@10", N: "g1@7 g1@7 g2@10", O: "g#1@7 g#1@7 g#2@10", P: "a1@7 a1@7 a2@10",
  Q: "f1@7 f1@7 f2@5 f1@5", R: "g1@7 g1@7 g2@5 g1@5", S: "a#1@7 a#1@17", T: "f1", U: "c2@7 g2@12 c2@5",
  V: "a#1@7 f2@7 a#2@10", W: "a#1@7 f2@7 a#2@7 ~ f2@2", X: "c2@7 g2@7 c3@5 g2@5", Y: "c2@7 g2@7 c3@2 ~ g2@2 c2@5",
  Z: "c2@7 g2@7 c3@10", AA: "f2@7 c3@7 f3@10", AB: "c2@7 g2@10 c3@2 c2@5", AC: "c2@7 c2@7 c3@10", AD: "c2@7 c2@7 c2@10",
  AE: "c2@7 c2@5 g2@2 g2@2 ~ g2@2 g2@2 ~ g2@2", AF: "c2@7 c2@5 g2@2 g2@2 ~ g2@2 g2@2 ~ f2@2",
  AG: "a#1@7 a#1@5 f2@2 f2@2 ~ f2@2 f2@2 ~ f2@2", AH: "a#1@7 a#1@5 f2@2 f2@2 ~ f2@2 f2@2 ~ g2@2",
  AI: "c2@7 c2@5 g2@2 g2@2 ~ g2@2 ~@3 f2@2", AJ: "c2@12 g2@2 g2@2 ~ g2@2 g2@2 ~ f2@2",
  AK: "a#1@7 a#1@5 a#1@2 f2@2 ~ f2@7", AL: "c2@5 ~@19",
})).s("gm_acoustic_bass").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~ A@40 B@11 C A@38 B@11 C A@26 B ~ B@11 C A@2 D@24 A>".pickRestart({
  A: "x", B: "x ~@6 x ~@16", C: "x ~@6 x ~@14 x ~", D: "x ~@4 x ~@4 x ~@3 x ~@4 x ~@4",
})).gain(0.48)

// drums · rim
const rim = s("rim").struct("<~ A@40 ~@14 A@36 ~@14 A@3 ~ B@20 A C ~@14 A@7 ~@18>".pickRestart({
  A: "~@7 x ~@4", B: "~@19 x ~@4", C: "~@5 x ~@8 x ~@9",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@41 A@11 B C ~@37 A@11 B C ~@27 A@11 B C ~@8 A@17 ~>".pickRestart({
  A: "~@7 x ~@4", B: "~@5 x ~@6 x ~@6 x ~@4", C: "~@5 x ~@6 x ~ x ~@9",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@53 A ~@49 A ~@4 B ~@20 C D ~@12 A ~@26>".pickRestart({
  A: "~@17 x ~ x ~@4", B: "~@19 x ~@4", C: "~@11 x", D: "~@7 x ~@6 x ~@4 x ~@4",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C@7 B D@31 E F@10 G H I B D@3 B D@31 E F@10 G H I B D@2 H ~@22 E F@10 G H ~@10 I J@14 ~
>`.pickRestart({
  A: "~@5 x ~@4 x ~@3 x ~@4 x ~@4", B: "~@5 x ~ x ~@2 x ~ x ~ x ~@2 x ~ x ~@2 x ~",
  C: "x ~ x ~@2 x ~ x ~@2 x ~ x ~ x ~@2 x ~ x ~@2 x!2", D: "x ~ x ~@2 x ~ x ~@2 x ~ x ~ x ~@2 x ~ x ~@2 x ~",
  E: "~@5 x ~@6 x ~@11", F: "~@7 x ~@11 x ~@4", G: "~@10 x ~@3 x ~@2 x ~@6", H: "x", I: "~@22 x!2", J: "~ x!2 ~@9",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@108 [~@7 x ~@4] ~@61>").gain(0.42)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@7 A ~@31 A ~@12 A@2 ~@3 A ~@31 A ~@12 A@2 ~@24 B A ~@12 A@2 ~@6 B A ~@16
>`.pickRestart({
  A: "x", B: "~@11 x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@53 A ~@49 A ~@4 B ~@34 A ~@26>".pickRestart({
  A: "~@7 x ~@2 x ~@13", B: "~@7 x ~@16",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct("<~@41 A B@10 ~@39 A B@10 ~@7 C@20 D E A B@10 ~@2 F G H@6 I J K L@14 ~>".pickRestart({
  A: "~@10 x ~@6 x ~ x ~@4", B: "~@5 x ~@8 x ~@9", C: "~@7 x ~@6 x ~@9", D: "~@5 x ~@6 x ~@6 x ~@4", E: "x",
  F: "~@23 x", G: "~@7 x ~@6 x ~@7 x!2", H: "x ~@4 x ~ x ~@2 x ~@6 x ~ x ~@4", I: "~@2 x ~@2 x ~@18",
  J: "~@7 x ~@2 x ~@11 x!2", K: "x ~ x ~@4 x ~@2 x ~@6 x ~ x ~@4", L: "x ~@11 x ~ x ~@4 x ~@4",
})).gain(0.42)

// drums · shaker
const shaker = s("sh").struct("<~@25 A@16 ~@14 A@4 ~@16 A@16 ~@14 A@26 ~@14 A@7 ~@18>".pickRestart({
  A: "x ~ x ~@2 x ~ x ~@2 x ~ x ~ x ~@4 x ~@2 x ~",
})).gain(0.3)

stack(
  electric_guitar_clean, pizzicato_strings, pizzicato_strings_2, string_ensemble_1, string_ensemble_2,
  string_ensemble_2_soft, piano, bass, kick, rim, snare, low_tom, hihat, mid_tom, crash, high_tom, ride, shaker
)

More by Sting