Strudelify

This Cowboy Song

Sting

KeyG majorTempo98 bpm
0:00/0:00
// This Cowboy Song — Sting
// 98 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 103 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(98/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.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C D E F G D A B C D E F G D A B C D E F G H I J K L M N O P Q R S T U V W X Y Z G AA AB AC AD AE AF AC AG AH AB
  AC AD AE AF AC AG AH I J K L M N O P Q R S T AI AJ AK AL M N O P Q R S T U V W X Y Z G AA Y Z G AA Y Z G AM AN AO
>`.pickRestart({
  A: "g1@4 ~ g1 g1@3 g1@4 ~ g1 g1@2 ~ g1@2 g1 g1@2 ~", B: "g1@4 ~ g2@2 ~ g2 g2@4 ~ g1 g1@2 ~ g1 ~ g1 g1@2 ~",
  C: "f1@4 ~ f1 f1@2 ~ f1@3 ~@2 f1 f1@2 ~ f1 ~ f1 f1@2 ~", D: "f1@4 ~ f1 f1@2 ~ f1@4 ~ f1 f1@2 ~ f1 ~ f1 f1@2 ~",
  E: "g1@4 ~ g1 g1@2 ~ g1@4 ~ g1 g1@2 ~ g1 ~ g1 g1@2 g1", F: "g1@4 ~ g1 g1@2 ~ g1@4 ~ g1 g1@2 g1 g1@2 g1 g1@2 g1",
  G: "f1@3 ~@2 f1 f1@2 ~ f1@4 ~ f1 f1@2 ~ f1 ~ f1 f1@3", H: "f1@4 ~ f1 f1@2 ~ f1@4 ~ c2!2 ~@2 c2@2 ~ d2@3",
  I: "d#2@4 ~ a#1 d#2@3 [c#2,d2] c2 b1 ~@2 d#2 a#1@2 ~ d#2@2 ~ a#1@2 ~", // Dmaj7
  J: "d#2@5 a#1 d#2@3 a#1 ~@4 d#2 a#1 ~@2 d#2@2 ~ a#1@2 ~", K: "c2@4 g1 ~ c2@2 ~ g1 ~ c2 ~@2 c2 g1@3 c2@2 ~ g1 ~@2",
  L: "c2@4 ~ g1 c2@2 ~ g1@2 d2@2 ~ d2 a1@3 d2@2 ~ d2@3", M: "g1@4 ~ g1 g1@2 ~ g1@3 ~@2 g1 g1@2 ~ g1@2 ~ g1 ~ g1",
  N: "b1@3 b1 ~ b1 b1@2 ~ b1@3 ~ b1 b1@2 ~@2 b1@3 b1@2 ~", O: "c2@3 c2 ~ c2 c2@2 ~ c2@2 ~@3 c2 g1@2 ~ c2@2 ~ c2@2 ~",
  P: "a1@4 ~ a1 a1@3 d2@2 ~@3 d2 d2@3 e2@2 d2 g2@2 ~", Q: "g1@4 ~ g1 g1@2 ~ g1@2 ~ g1 ~ g1 g1@2 ~ g1@2 ~ g1 ~ g1",
  R: "b1@4 ~ b1 b1@2 ~ b1@3 ~@2 b1 b1@2 ~ b1@2 ~ b1 ~ b1", S: "c2@3 c2 ~ c2 c2@2 ~ c2@2 ~@3 c2 c2@2 ~ g1@2 ~ c2@2 ~",
  T: "a1@3 ~@2 a1 a1@2 ~ d2@3 ~@2 d2 d2@2 ~ d2@2 ~ d2 ~@2", U: "f1@5 ~ f1@3 f1 f1@2 ~@2 f1 f1@3 a1@3 a1@2 ~",
  V: "g1@5 ~ g1@3 g1 g1@2 ~@2 g1 g1@2 ~ b1@3 b1@2 ~", W: "f1@4 ~ f1 f1@2 ~ f1@3 ~@2 f1 f1@2 ~ g1@3 g1@2 ~",
  X: "f1@4 ~ f1 f1@2 ~ f1@4 ~ f1 f1@2 ~ g1@3 g1@2 ~", Y: "g1@4 ~ g1 g1@2 ~ g1@4 ~ g1 g1@2 ~ a1@3 a1@3",
  Z: "g1@4 ~ g1 g1@2 ~ g1@4 ~ g1 g1@2 g1 a1@3 a1@3", AA: "f1@4 ~ f1 f1@2 ~ f1 d2@2 f2 ~ f2 d2@3 c2@3 d2@2 ~",
  AB: "g1@4 ~ g1 g1@3 g1 ~ g2 ~@2 g2 e2@3 d2@2 ~ e2@3", AC: "g1@4 ~ g1 g1@3 d2 ~ g2 ~@2 g2 e2@3 d2@2 ~ e2@3",
  AD: "f2@5 c2 f1@3 c2 ~ f2 ~@2 f2 d2@3 c2@3 d2@2 ~", AE: "f1@4 ~ f1 f1@3 c2 ~ f2 ~@2 f2 d2@3 c2@3 d2@3",
  AF: "g1@3 ~@2 g1 g2@3 g1 ~ g2 ~@2 g2 e2@3 d2@3 e2@3", AG: "f2@5 c2 f1@3 ~@2 f2 ~@2 f2 d2@3 c2@3 d2@3",
  AH: "f2@5 c2 f2@3 d2 ~ f2 ~@2 f2 d2@3 c2@2 ~ d2@2 ~", AI: "d#2@4 ~ d#2 ~@3 d#2@4 ~ a#1 d#2 ~@2 d#2@2 a#1 d#2@2 ~",
  AJ: "c2@4 ~ c2 ~@3 c2@4 ~ g1 c2@2 ~ c2 ~ g1 c2 ~@2", AK: "c2@4 ~ c2 ~@3 c2@4 g1 ~ c2 ~@2 c2 ~ c2 g1 ~ c2",
  AL: "d2@4 ~ d2 ~@3 d2@4 ~ a1 d2 ~@2 d2 ~ a1 d2@2 ~", AM: "f1@4 ~ f1 f1@2 ~ f1 d2@2 f2 ~ f2 d2@3 d2@3 ~@3",
  AN: "~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2", AO: "~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@12",
})).s("gm_fretless_bass").gain(0.4)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@7 A@2 B ~@15 C@4 D@2 E F G@2 H@2 I@2 ~@22 C@4 D@2 E F J@2 H@2 K L M N O@2 E F G@2 H@2 P@2 Q R ~@14
>`.pickRestart({
  A: "[~@6 [g4,d5,g5]@38 ~ [d6,g6]@3, ~@45 [b5,f6] ~@2]/2", B: "[a5,b5,c6] [a4,b4,c5,d5,e5,f5,g5] g4 ~@21",
  C: "[a#4@16 c5 ~ a4@29 ~ [f4,a#4,d5]@36 [g4,a4,d5]@12, g4@83 ~@13, d5@47 ~@49, ~@17 a#4@31 ~@48]/4", // A# Gsus2
  D: "[[a4,d5], g4 ~@47]/2", E: "[g4,c5,d5]@23 ~", F: "[g4,a4,c5,d5]", G: "[b4@23 ~ g4@23 ~, [a4,d5]@47 ~]/2",
  H: "[~ a4, [g4,c5,d5]]/2", // Gsus4
  I: "[~@9 g6@11 g6@2 d6@2 f6@2 g6 d6@2 ~@19, [g4,d5], f4 a4, ~@9 [c6,c#6,f6]@13 ~@5 c#6 ~@20]/2", // G5 C#maj7
  J: "[b4@23 ~@10 [d6,d#6] ~@8 d6@6, [a4,d5]@47 ~, ~@24 g4@23 ~, ~@11 e6@3 ~@2]/2", // D#maj7 D5
  K: "~ d#4 ~ f4 ~ g4@5 ~@2 g4@2 a4 ~@2 a#4@4 ~@3", L: "[a#4,d5]@4 c5@3 ~ a#4 c5@4 a#4@3 a4@3 ~ g4@4, ~@2 a4@5 ~@5",
  M: "g4@11 ~", N: "[g4,d5]@22 b5 [c6,d6,e6]", O: "[[g4,a4,d5], g6 ~@23, f6 ~@47]/2",
  P: "[~@9 [g6,b6] ~@13 d6 [g6,b6] ~ d6 c7@2 [g6,b6] ~@2 [g6,c7] ~@2 [g6,b6] ~ [d6,c7] a#6 ~@2 [g6,a6,a#6] a6 [d6,e6,f6,g6] [g5,a5,b5,c6] [b4,c5,d5,e5,f5] [f4,g4,a4] ~, [g4,d5]@23 ~, f4 ~, ~@9 c7@14 ~@18 b6@2 ~@5]/2", // G C5 G D7 Gm Em7 Cmaj7 Bdim …
  Q: "~@11 e6 [a6,a#6] ~ a6 g6 ~ e6 a6 ~ g6 e6 ~ d6", // A#maj7
  R: "g6 ~ e6 d6 ~ b5 e6 ~ d6 a#5 ~ g5 [d6,e6] ~ a#5 a5 ~@2 [f5,g5] e5 [b4,c5,d5] [e4,f4,g4,a4] [b3,c4,d4] ~", // Dsus2 Fsus2 Bm Fmaj7 Bm
})).s("gm_percussive_organ").gain(0.17).pan(0.4)

// chords · distortion guitar · "+FEEDBCKGT"
const distortion_guitar = note(`<
  ~@29 A B C D@2 E F G ~ H@2 I@2 J@2 K@2 ~@19 A B C D@2 E F G ~@4 A B C D@2 E F G ~@18
>`.pickRestart({
  A: "[d3,g3]@20 [d3,g3] [d3,g3]@3", B: "[b2,g3]@14 [b2,g3] [b2,g3]@3 [b2,g3]@6",
  C: "[c3,g3]@18 [c3,g3]@2 g3 [c3,g3]@3", D: "[d3,g3]@20 g3 [d3,g3]@3", E: "[b2,g3]@18 [b2,g3]@2 [b2,g3] [b2,g3]@3",
  F: "[c3,g3]@14 [c3,g3] [c3,g3]@3 [c3,g3]@6", G: "[d3,g3]", H: "[~@11 f4@36 ~]/2",
  I: "[a#4@6 g4@5 d4 f4@2 d4 g4@2 ~ e4@3 [d4,g4]@19 ~@8]/2", J: "[~@12 f4@35 ~]/2",
  K: "[c5@4 ~@2 a#4@4 ~ d4 f4 d4 ~ g4@2 ~ [d4,g4]@30]/2", // G5
})).s("gm_distortion_guitar").gain(0.28).pan(0.7)

// chords · piano · "A.PIANO 2"
const piano = note("<~@89 A B C D E F G H I J@2 K L M>".pickRestart({
  A: "~@18 [d5,d#5,f5,g5] ~@2 [d5,g5]@3, ~@6 e5 ~", // D#maj7 G5
  B: "c#5 c5 g5 a#4 ~ g4 [c5,g5]@3 a#4@2 ~ c#5 ~ d5 c#5 ~ [d5,g5] c5@2 ~ a#4 ~ g4, ~@7 g5 ~@4", // C5 G5
  C: "~@2 g4 ~ a#4 f5 ~ [a#4,f5] ~ g4 ~@2 a#4 ~ g4 [g4,c5] ~ [f4,a#4] ~ [c4,c#4] c4 a#3 ~ g3", // A#5 C5 A#5 C#maj7
  D: "a#3 ~ c4 ~@2 [c#4,d4] ~@2 c4 a#3 g3 ~ [c4,f4]@3 a#3 g3 ~ [c4,f4]@2 g3 a#3 ~ g3, ~@5 f4@2 ~@5 b3 ~@5 b3 ~@5", // Dmaj7 F5
  E: "~@3 [c#4,g4] ~@3 c#4 g4@2 ~ [c4,c#4,g4] ~ a#3 ~ f3 ~@2 [c4,e4] ~@2 [c4,e4] ~ a3, ~@3 d4@2 ~@3 c4 ~@15", // C#dim C
  F: "[a#3,d4] ~ b3 [g1,g2] ~@4 c4@2 ~ [a#3,b3,d4] ~ b3 d4 f3 ~ c3 [c4,e4] ~ g3 [b3,d4]@2 ~, ~@8 e4 ~@15", // A# G A# C Bm
  G: "~@3 [a3,f4]@2 ~@3 [a#3,f4]@2 ~@5 [a3,f4]@2 g#3 [a#3,d#4] ~ g3 [d#4,f4] ~ g3, ~@3 g#3 ~@4 [a3,d#4] ~@9 f4@2 ~ a#3@2 ~", // Dm A#5 Dm D#5 D#sus2 Adim
  H: "f3 ~ a#3 d4 ~ a#3 d4@2 f4 a#4 ~ d4 f4 ~ a#4 d5 ~@2 f5 ~@2 d5 ~@2",
  I: "[f5,g5,d6,f6,g6] ~@17 [c5,c#5,f5,g5] ~ d5 [d5,f5] f5 d5", // G7 Csus4 Dm
  J: "[f5 d5 [d5,f5] f5!2 d5 [c5,f5]@2 ~ a#4@2 ~ [c5,f5] ~ a#4 g4 ~@2 a#4 ~ c5 ~@2 [d5,f5]@2 ~ c5@2 ~ a#4 [c5,f5]@3 a#4 ~ c5 [g4,a#4] ~ a#4 g4 ~@2 f4 ~ a#4 g4@2 ~, ~@12 c#5@2 ~@9 c#5 ~@24]/2", // Dm F5 Dm F5 Gm
  K: "d4@2 g4 f4@2 ~ c4 ~ f4 d4@2 ~ a#3 ~ d4 c4@2 ~ [c#4,d4,c#6,d6,a6] ~@5", L: "[d#4,e4,d6,e6,b6] d4 d6 ~@21",
  M: "~@9 b5 ~@2 d6 ~@11",
})).s("gm_piano").gain(0.49).pan(0.6)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@4 A B C@3 D E F G H I J K L M N O P Q R S ~@20 D E F G H I J K D E F G H I J K ~@40 T U
>`.pickRestart({
  A: "~@18 a3@5 g3", B: "f3@7 ~@5",
  C: "[~@11 b3@5 d4@4 ~ e4@2 ~@2 g4@5 g4@31 ~@11, ~@23 c4@26 ~@23, ~@12 d4@13 ~@11]/3",
  D: "d3@3 d3 ~ d3@3 d3 d3@3 d3 d3@3 ~ d3 f3@2 d3 e3@2 ~", E: "d3@3 d3 d3@3 ~ d3 d3@3 d3 d3@3 ~ d3!3 ~ b2@2 ~",
  F: "c3@3 c3 ~ c3@3 c3 c3@3 c3 c3@3 ~ c3!2 ~ c3 c3@2 ~", G: "c3@3 c3 ~ c3@3 c3 c3@3 c3 c3@3 ~ c3 c3@2 ~ c3@2 ~",
  H: "f3@2 d3 e3@2 ~ d3@3 d3 d3@2 ~ d3 ~ d3@2 d3 f3@2 ~ e3@2 ~", I: "d3@3 d3 ~ d3@3 d3 d3@3 d3 d3@3 d3 ~ d3!2 ~ b2@2 ~",
  J: "c3@3 c3 ~ c3@3 c3 c3@3 c3 c3@3 ~ c3!2 ~ c3 c3@3", K: "c3@3 c3 ~ c3@2 c3 ~ c3@2 ~ c3 c3@2 ~@2 c3 c3@2 c3 c3@2 ~",
  L: "f3@3 f3 ~ f3@3 f3 f3@4 f3@3 f3 ~ b2@3 e3@3", M: "d3@3 d3 ~ d3@3 d3 d3@3 d3 d3@3 d3 ~ d3 ~ d3 b2@2 ~",
  N: "c3@3 ~ c3 c3@3 c3 c3@3 ~ c3 c3@3 c3 c3@2 ~ c3@2 ~", O: "c3@3 c3 ~ c3@2 c3 ~ c3@4 c3@3 ~ c3!3 ~ c3!2 ~",
  P: "f3@2 ~ e3@2 ~ d3@3 d3 d3@3 ~ d3 d3@3 f3@2 ~ e3@2 ~", Q: "d3@3 d3 d3@3 ~ d3 d3@4 d3@3 d3 ~ d3 ~ d3 b2@3",
  R: "c3@4 ~ c3@3 c3 c3@4 ~ c3@3 c3 c3@2 c3 c3@3", S: "c3@3 c3 ~ c3@2 c3 ~ c3@4 c3 c3@2 ~@2 c3@2 ~ c3@2 ~",
  T: "g2 ~@5 g2 ~@4 a#2 ~@3 g2 ~@2 g2 ~@2 g2 ~ a#2", U: "g2 ~@2 g2 ~@2 g2 ~@5 g2 ~@11",
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.6)

// chords · clavinet
const clavinet = note(`<
  ~@9 A B C D E F G D A H C D E F G D I J K L ~@9 M ~ N ~ N ~ N A B C D E F G D A B C D E F G D I J K L ~@20 O M P N P N
  P N P N P N P N P N Q R
>`.pickRestart({
  A: "~@6 [b3,d4,a4]@4 [b3,d4,g4] ~@13", B: "~@6 [b3,a4]@4 [b3,d4,f4] ~@13, ~@6 d4 ~@17",
  C: "~@6 [c4,d4,a4]@4 [c4,g4] d4 ~@12", D: "~@6 [c4,d4,a4]@4 ~ [c4,d4,f4] ~@12", E: "~@6 [b3,d4,a4]@4 g4 [b3,d4] ~@12",
  F: "~@6 [b3,d4,a4]@4 ~ [b3,d4,f4] ~@12", G: "~@6 [c4,d4,a4]@4 [c4,d4,g4] ~@13", H: "~@6 [b3,d4,a4]@4 [b3,d4,f4] ~@13",
  I: "~@6 c4@3 c4 a#3 a3 ~@12, ~@6 [d4,f4]@5 ~@13", J: "~@6 [c4,d4,f4]@4 a#3 a3 ~@12", K: "~@3 [a#3,d4]@2 ~@7",
  L: "~@3 [c4,d4]@2 ~@7", M: "~@6 [d4,f4,a4]@5 [c4,d4,f4] ~@12", N: "~@6 [c4,d4,f4,a4]@4 ~ [c4,d4,f4] ~@12",
  O: "~@6 [d4,f4,a4]@4 b3 [d4,f4] ~@12", P: "~@6 [d4,f4,a4]@4 ~ [b3,d4,f4] ~@12",
  Q: "[g3,d4] ~@4 [g3,d4] ~@3 [g3,d4] ~@4 [g3,d4] ~@2 d3 [g3,d4] ~@4 [g3,d4]", // G5
  R: "~@3 [g3,d4] ~@4 [g3,d4] ~@3 [g3,d4] ~@11", // G5
})).s("gm_clavinet").gain(0.26).pan(0.7)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A@7 B@16 C@5 D@7 E F@8 G@8 H@4 I@7 J@8 K@2 L M N O@8 P Q R@5 B@8 S T U
>`.pickRestart({
  A: "[~@50 g3 ~@5 d4 ~@3 d4 ~@4 d4 ~@24 f2@2 ~@54 g3 ~@5 d4 ~@3 d4 ~@4 d4 ~@3 g2@2 g3, f3@3 d4@3 g3@3 f3@3 d4@3 g3@3 f3@3 e3@3 d3@4 ~ d3@4 d3@4 ~ d3@4 d3@3 b2@3 c3@4 ~ c3@4 c3@4 ~ c3@4 c3@4 ~@2 f2@4 ~ f2@4 f2@4 ~ f2@4 ~@3 f2@4 ~ g3@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 g3@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 ~@4 g3@4 ~ g3@4 g3@4 ~ g3@3 ~, ~@2 g3@3 f3@3 d4@3 g3@3 f3@3 d4@10 d4@4 ~ d4@4 d4@4 ~ d4@9 ~ d4@5 ~@13 g2@4 ~@2 d4@4 ~ d4@4 d4@4 ~ d4@6 d4@4 d4@4 ~ d4@4 d4@4 ~ d4@10 d4@4 ~ d4@4 d4@4 ~ d4@9 ~ d4@5 ~@16, ~@20 g3@3 g3@3 g3@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 ~@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 g3@4 g3@4 ~ g3@4 g3@4 ~ g3@4 f3@4 ~ f3@4 f3@4 ~ f3@4 f3@3 e3@3 d3@4 ~ d3@4 d3@4 ~ d3@4 d3@3 b2@3 c3@4 ~ c3@4 c3@4 ~ c3@4 c3@4 ~@2]/7",
  B: "[~@18 f2@2 ~@54 g3 ~@5 d4 ~@3 d4 ~@4 d4 ~@24 f2@2 ~@54 g3 ~@5 d4 ~@3 d4 ~@4 d4 ~@3 g2@2 g3, f2@3 d4@3 g3@3 f2@3 d4@3 g3@4 ~ g3@4 f3@4 ~ f3@4 f3@4 ~ f3@4 f3@3 e3@3 d3@4 ~ d3@4 d3@4 ~ d3@4 d3@3 b2@3 c3@4 ~ c3@4 c3@4 ~ c3@4 c3@4 ~@2 f2@4 ~ f2@4 f2@4 ~ f2@4 ~@3 f2@4 ~ g3@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 g3@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 ~@4 g3@4 ~ g3@4 g3@4 ~ g3@3 ~, ~@2 g3@3 f2@3 d4@3 g3@3 f2@3 d4@6 d4@4 d4@4 ~ d4@4 d4@4 ~ d4@10 d4@4 ~ d4@4 d4@4 ~ d4@9 ~ d4@5 ~@13 g2@4 ~@2 d4@4 ~ d4@4 d4@4 ~ d4@6 d4@4 d4@4 ~ d4@4 d4@4 ~ d4@10 d4@4 ~ d4@4 d4@4 ~ d4@9 ~ d4@5 ~@16, ~@21 f2@4 ~ g3@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 g3@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 ~@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 g3@4 g3@4 ~ g3@4 g3@4 ~ g3@4 f3@4 ~ f3@4 f3@4 ~ f3@4 f3@3 e3@3 d3@4 ~ d3@4 d3@4 ~ d3@4 d3@3 b2@3 c3@4 ~ c3@4 c3@4 ~ c3@4 c3@4 ~@2]/8",
  C: "[~@18 f2@2 ~@25 g3 ~@11 g3@2 ~@3 g3 ~@6 g3@2 ~ g3@5 ~@13 g3@4 ~@5 g3@2 ~@4 c4@3 [g3,c4]@3 ~@6 d4@3, f2@3 d4@3 g3@3 f2@3 d4@3 g3@4 ~ g3@4 g3@8 ~ g3@4 ~ g3@6 ~@4 g3@8 ~@25 g3@2 ~@3 a#3@10 c4@8 ~@4 d4@5 ~@7, ~@2 g3@3 f2@3 d4@3 g3@3 f2@3 d4@6 d4@4 ~ a#3@5 ~ a#3@11 ~@2 a#3@4 ~@2 a#3@4 ~@2 a#3@7 c4@11 a#3@5 c4@13 g3@2 ~@7 g3@3 ~@4 g3@3 ~@2 g3@4, ~@21 f2@4 ~@5 f4@9 f4@15 f4@9 f4@15 f4@7 ~@2 f4@14 f4@9 ~@2 c4@7 ~]/5", // C5
  D: "[~@5 d4 d4@2 d4 d4@2 d4@3 d4 d4@2 ~ d4@2 ~ d4@2 ~@6 d4 d4@2 ~@3 g3@3 ~@15 d4 d4@2 ~ d4@2 d4@3 ~ d4@2 ~@12 d4 d4@2 ~ d4@2 d4@3 d4 d4@2 ~@13 d4@2 ~ d4@2 d4@3 d4 d4@2 ~@13 d4@2 ~ d4@2 d4@3 d4 d4@2 ~ d4@2 ~ d4@2 ~@7 d4@2 ~ d4@2 [g3,d4]@3 d4 d4@2 ~@4 g4@2 g3, d4@5 ~@19 d4@5 ~@4 [d4,g4]@6 ~@2 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 ~@3 g3@3 g3@3 g3@3 ~, ~@2 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 ~@3 [g3,d4]@4 d4@6 d4@5 ~@13 d4@6 d4@5 ~@13 d4@6 d4@6 ~@12 d4@6 d4@6 ~@18 d4@6 ~@12 d4@6, ~ g4@2 g4@2 g4@2 g4@2 g4@2 ~@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 ~]/7", // G5
  E: "~@6 d4@2 ~ d4@2 d4@3 ~ d4@2 ~ d4@2 ~ [d4,g4]@3, d4 ~@3, ~@2 g3@3 g3@3 g3@6 g3@3 g3@3 g3@4, ~ g4@2 g4@2 g4@2 ~", // G5
  F: "[~@90 f2@2 ~@94 f2@2 ~ f2@2 d4, f3@5 f3@4 f3@5 f3@4 f3@45 g3@3 c3@45 g3@3 f3@29 g3 c3@2 g3 d4@2 c3 g3@2 d4 c3@2 g3 d4@2 c3 g3@2 d4@3 g3 g2@27, ~@2 g3@4 g3@5 g3@4 g3@5 g3@3 g3 d3@3 d4@3 g3@3 d3@3 d4@3 g3@3 d3@3 d4@3 c3@2 g3 d4@2 c3 g3@2 d4 c3@2 g3 d4@2 c3@3 d4@6 g3 f2@2 g3 d4@2 f2 g3@2 d4 f2@2 g3 d4@2 f2 g3@2 d4@3 g3@3 d4 f3@2 g3 d4@2 f3 g3@2 d4 f3@2 g3 d4@2 f3@3 d4@6 g3 d3@2 g3 d4@2 d3 g3@2 d4 d3@2 g3 d4@2 d3 g3@2 d4@3 g3 b2@47 g3@4, ~@3 d4@5 d4@4 d4@5 d4@9 g3@3 d3@3 d4@3 g3@3 d3@3 d4@3 g3@3 d3@46 f2@45 d3@29 g3 f2@2 g3 d4@2 f2 g3@2 d4 f2@2 g3 d4@2 f2 g3@2 d4@6 ~, ~@21 e3@47 g3 g2@47 g3 e3@45 c3@30]/8",
  G: "[~@90 f2@2 ~@94 f2@2 ~ f2@2 d4, f3@5 f3@4 f3@5 f3@4 f3@29 g3 c3@2 g3 d4@2 c3 g3@2 d4 c3@2 g3 d4@2 c3 g3@2 d4@3 g3 g2@47 g3 e3@45 c3@30, ~@2 g3@4 g3@5 g3@4 g3@5 g3@3 g3 d3@3 d4@3 g3@3 d3@3 d4@3 g3@3 d3@29 g3 f2@2 g3 d4@2 f2 g3@2 d4 f2@2 g3 d4@2 f2 g3@2 d4@4 f2@45 d3@29 g3 f2@2 g3 d4@2 f2 g3@2 d4 f2@2 g3 d4@2 f2 g3@2 d4@6 ~, ~@3 d4@5 d4@4 d4@5 d4@9 g3@3 d3@3 d4@3 g3@3 d3@3 d4@3 g3 b2@47 g3@3 d4 f3@2 g3 d4@2 f3 g3@2 d4 f3@2 g3 d4@2 f3 g3@3 f3@29 g3 c3@2 g3 d4@2 c3 g3@2 d4 c3@2 g3 d4@2 c3 g3@2 d4@3 g3 g2@27, ~@21 e3@45 c3@47 d4@6 g3 d3@2 g3 d4@2 d3 g3@2 d4 d3@2 g3 d4@2 d3 g3@2 d4@3 g3 b2@47 g3@4]/8",
  H: "[~@90 f2@2 ~ f2@2 d4, f3@5 f3@4 f3@5 f3@4 f3@29 g3 c3@2 g3 d4@2 c3 g3@2 d4 c3@2 g3 d4@2 c3 g3@2 d4@3 g3 g2@27, ~@2 g3@4 g3@5 g3@4 g3@5 g3@3 g3 d3@3 d4@3 g3@3 d3@3 d4@3 g3@3 d3@29 g3 f2@2 g3 d4@2 f2 g3@2 d4 f2@2 g3 d4@2 f2 g3@2 d4@6 ~, ~@3 d4@5 d4@4 d4@5 d4@9 g3@3 d3@3 d4@3 g3@3 d3@3 d4@3 g3 b2@47 g3@4, ~@7 e3@15 c3@10]/4",
  I: "[~@90 f2@2 ~@73 a#3@3, f3@5 f3@4 f3@5 f3@4 f3@29 g3 c3@2 g3 d4@2 c3 g3@2 d4 c3@2 g3 d4@2 c3 g3@2 d4@3 g3 g2@29 g3 a#3@3 f4@14 g3 a#3@3 d#3@26 g3 a#3@3 d4@3 g3 a#3@4 g3 d4@3 g3@6, ~@2 g3@4 g3@5 g3@4 g3@5 g3@3 g3 d3@3 d4@3 g3@3 d3@3 d4@3 g3@3 d3@29 g3 f2@2 g3 d4@2 f2 g3@2 d4 f2@2 g3 d4@2 f2 g3@2 d4@4 f2@36 g3@3 a3@3 g3@2 a#3@7 c3@24, ~@3 d4@5 d4@4 d4@5 d4@9 g3@3 d3@3 d4@3 g3@3 d3@3 d4@3 g3 b2@47 g3@3 d4@45 g3 a3@27, ~@21 e3@45 c3@30 d#3@9 g3@3 a3@14 g3 a#3@3 f4@42]/7",
  J: "[~@29 d4 d4@2 d4 d4@2 d4@3 d4 d4@2 ~ d4@2 ~ d4@2 ~@6 d4 d4@2 ~@3 g3@3 ~@15 d4 d4@2 ~ d4@2 d4@3 ~ d4@2 ~@12 d4 d4@2 ~ d4@2 d4@3 d4 d4@2 ~@13 d4@2 ~ d4@2 d4@3 d4 d4@2 ~@13 d4@2 ~ d4@2 d4@3 d4 d4@2 ~ d4@2 ~ d4@2 ~@7 d4@2 ~ d4@2 [g3,d4]@3 d4 d4@2 ~@4 g4@2 g3, c3@18 d4@3 g3@3 d4@2 g3 g4@2 g3@3 g3 g4@5 g3 g4@2 g3@3 g3 g4@2 g3 d4@2 g3 g4@2 g3@3 g3@3 ~@3 [g3,d4]@4 d4@6 d4@5 ~@13 d4@6 d4@5 ~@13 d4@6 d4@6 ~@12 d4@6 d4@6 ~@18 d4@6 ~@12 d4@6, ~ g3@2 g3@3 d3@24 ~@66, ~@3 d4@11 g3 a3@48 ~@2 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 ~@3 g3@3 g3@3 g3@3 ~, ~@3 a#3@16 [d4,g4]@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 ~]/8", // G5
  K: "[~@6 d4@2 ~ d4@2 d4@3 ~ d4@2 ~ d4@2 ~@19 a#3@2 ~ g3@2 ~@2 g3@2, d4@6 ~@15 d4@6 d4@3 a#3@4 a#3@4 ~@6 a#3@4, ~@2 g3@3 g3@3 g3@6 g3@3 g3@3 g3@6 g3@3 g3@3 ~ g3@3 ~@2 g3@4 ~@6, ~@3 g4@6 g4@6 g4@6 g4@10 ~ d4@4 d4@4 ~ d4@4 d4@3, ~@12 d#3@11 ~]/2",
  L: "~ g3@2 ~@6 g3@2 ~ d4@2 ~@2 d4@2 ~ a#3@2 ~ g3 ~, c3@11 ~, ~@3 d4@3 a#3@4 ~ a#3@3 g3@3 ~ g3@3 ~@3, ~@4 g3@4 d4@3 ~@4 a#3@3 ~@3 d4@2 ~",
  M: "~ g3 ~ [c4,g4]@3 ~ [c4,g4]@4 ~ [c4,g4]@3 ~@2 [c4,g4]@3 ~ [c4,g4]@3, c3@17 ~@7, ~@6 g3@9 g3@4 ~ g3@4", // C5
  N: "~@3 [d4,g4]@3 ~ [d4,g4]@4 ~ [d4,g4]@3 ~ [d4,g4]@4 ~ [d4,g4]@3, d3@23 ~, ~ g3@4 ~ g3@4 ~ g3@4 g3@4 ~ g3@4", // G5
  O: "[~@5 d4 d4@2 d4 d4@2 d4@3 d4 d4@2 ~ d4@2 ~ d4@2 ~@6 d4 d4@2 ~@3 g3 ~@17 d4 d4@2 ~ d4@2 d4@3 ~ d4@2 ~@12 d4 d4@2 ~ d4@2 d4@2 ~ d4 d4@2 ~@13 d4@2 ~ d4@2 d4@2 ~ d4 d4@2 ~@13 d4@2 ~ d4@2 d4@2 ~ d4 d4@2 ~ d4@2 ~ d4@2 ~ d4@2 ~@4 d4@2 ~ d4@2 [g3,d4]@2 ~ d4 d4@2 ~@13 d4@2 ~ d4@2 d4@2 ~@2 d4@2 ~ d4@2 ~ [d4,g4]@3, d4@5 ~@19 d4@5 ~@4 [d4,g4]@6 ~@2 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 ~@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 ~@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@6 g3@3 g3@3 g3@4, ~@2 g3@3 g3@3 g3@6 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 g3@3 ~@3 [g3,d4]@4 d4@6 d4@5 ~@13 d4@6 d4@5 ~@13 d4@6 d4@6 ~@12 d4@6 d4@6 ~@36 d4@6 d4@6 ~@18, ~ g4@2 g4@2 g4@2 g4@2 g4@2 ~@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 g4@2 ~]/8", // G5
  P: "f3@2 ~ d4@2 ~ g3@2 ~ f3@2 g3 d4@2 ~ g3@2 ~ f3@2 g3 e3@2 g3, ~@2 g3@3 f3@3 d4@3 ~@3 f3@2 ~ d4@2 ~@5",
  Q: "d3@2 g3 d4@2 ~ g3@2 ~@4 d4@2 ~ g3@2 ~ d3@2 ~ d4@2 d3, ~@5 d3@3 d4@2 ~ g3@3 ~@3 d4@3 ~@4, ~@9 d3@4 ~ d3@3 ~@3 g3@2 ~@2",
  R: "[~@8 d4 ~@3 d4 ~@4 d4 ~@24 f2@2 ~@54 g3 ~@5 d4 ~@3 d4 ~@4 d4 ~@3 g2@2 g3, c3@3 d4@5 ~@13 g2@4 ~@2 d4@4 ~ d4@4 d4@4 ~ d4@6 d4@4 d4@4 ~ d4@4 d4@4 ~ d4@10 d4@4 ~ d4@4 d4@4 ~ d4@9 ~ d4@5 ~@16, ~@2 g3@3 c3@4 c3@4 ~ c3@4 c3@4 ~@2 f2@4 ~ f2@4 f2@4 ~ f2@4 ~@3 f2@4 ~ g3@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 g3@4 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 ~@4 g3@4 ~ g3@4 g3@4 ~ g3@3 ~, ~@6 g3@4 ~ g3@4 g3@4 ~ g3@3 g3@3 g3@4 g3@4 ~ g3@4 g3@4 ~ g3@4 f3@4 ~ f3@4 f3@4 ~ f3@4 f3@3 e3@3 d3@4 ~ d3@4 d3@4 ~ d3@4 d3@3 b2@3 c3@4 ~ c3@4 c3@4 ~ c3@4 c3@4 ~@2]/5",
  S: "~@9 f2 g3@2, f2@3 d4@3 g3@3 f2@3 d4@3 g3@4 ~@5, ~@2 g3@3 f2@3 d4@3 g3@3 f2@3 d4@6 ~",
  T: "~@2 d3 ~@2 g3 ~@7 d3 ~@3 g3 ~@2 d3 f3 ~@2", U: "~ d3 ~@3 g3 ~@7 d3 ~@10",
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x ~@4 x ~@3 x ~@4 x!2 ~@4 x!2 ~@2]!101 [x ~@4 x ~@3 x ~@14]>").gain(0.34)

// drums · snare
const snare = s("sd").struct(`<
  [~@15 x ~@2 x ~ x ~@2 x]
  [~@6 x ~@11 x ~@4 x]!71
  [~@3 x ~@2 x ~@5 x ~@5 x ~@4 x]
  [~@6 x ~@11 x ~@4 x]!27
  [~@6 x ~@5 x ~ x ~@2 x!2 ~@4 x]
  [~@6 x ~@11 x ~@4 x]
  [~ x ~@2]
>`).gain(0.51)

// drums · hihat
const hihat = s("hh").struct(`<
  [~@23 x]
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]!100
  [~@3 x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~@11]
>`).gain(0.23)

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

// drums · open hat
const open_hat = s("oh").struct("<~@101 x ~>").gain(0.34)

// drums · ride
const ride = s("rd").struct("<~@29 A B C D@2 A D@2 E ~@27 A B C D@2 A D@2 ~@4 A B C D@2 A D@2 E ~@17>".pickRestart({
  A: "x ~@2 x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~@2 x ~@2", B: "x ~@2 x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2",
  C: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2", D: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2", E: "x",
})).gain(0.28)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~ x ~ x ~ x ~ x]!101 [~ x ~ x ~@4]>").gain(0.34)

// drums · splash
const splash = s("cr").struct(`<
  ~ A ~@7 A ~@7 A ~@11 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@14 B ~@2
>`.pickRestart({
  A: "x", B: "~@3 x",
})).gain(0.28)

// drums · triangle
const triangle = s("triangles:30").struct(`<
  ~@29 A B C A D E A@2 ~@28 A B C A D E A@2 ~@4 A B C A D E A@2 ~@18
>`.pickRestart({
  A: "~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x", B: "~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2",
  C: "x ~@2 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x", D: "~@3 x ~ x ~@3 x ~ x ~@3 x ~@5 x ~ x",
  E: "~@5 x ~@5 x ~@3 x ~ x ~@3 x ~ x",
})).gain(1.98)

// drums · triangle
const triangle_2 = s("triangles:35").struct("<~@29 A B@7 ~@28 A B@7 ~@4 A B@7 ~@18>".pickRestart({
  A: "x!4", B: "x ~@2 x ~@2 x ~@2 x!2 ~",
})).gain(1.98)

// drums · jingle bells
// … 6 more lines

More by Sting