Strudelify

Storytellers 04 King of Pain

Sting

KeyE majorTempo96 bpm
0:00/0:00
// Storytellers 04 King of Pain — Sting
// 96 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 110 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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 · electric bass finger · "IfILoseFaith"
const bass = note(`<
  ~ A@8 B C D E F G D@2 F G H I F J K L M N K L M O B C D E F G D@2 F G H I F J K L M N K L M P@2 Q@4 R S T U R S V@2 B
  C D E B C D@2 B C D E B W X Y Z AA AB AC Z AA AB AD K L M N K L M O@2 Q@11
>`.pickRestart({
  A: "a1@2 ~@7 a1@2 ~@7 e1@2 ~ f#1@2 ~", B: "a2 ~@2 a2@2 e2 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~@2",
  C: "g2 ~@2 g2@2 d2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2",
  D: "d2 ~@2 d2@2 d2!2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2",
  E: "d2 ~@2 d2@2 d2!2 ~@2 d2 ~@2 d3@2 c#3 a2@3 d3@2 c#3 a2 ~ b2",
  F: "a2 ~@2 a2@2 a2!2 ~@2 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~@2 a2 ~@2",
  G: "g2 ~@2 g2@2 g2!2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2",
  H: "d2 ~@2 d2@2 d2!2 ~@2 d2 ~@2 d2 ~ d3 d2@3 d2 ~@2 d2 ~@2",
  I: "d2 ~@2 d2@2 d2!2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~ b2",
  J: "f#2 ~@2 f#2@2 f#2!2 ~@2 f#2 ~@2 f#2 ~@2 f#2 ~@2 f#2 ~ f#2@4", K: "e1@3 e1@2 e1@3", L: "f#1@3 f#1@2 f#1@3",
  M: "g1@3 g1@2 g1@3", N: "a1@3 a1@2 b1!3", O: "a1@3 a1@5", P: "a1@3 a1@2 a1@3", Q: "g1@7 ~@2 e1@15",
  R: "f#1@2 ~ f#1@2 ~ f#1@2 ~ f#1@2 ~ f#1@2 ~ f#1@2 ~ f#1@2 ~ f#1@2 ~",
  S: "g#1@2 ~ g#1@2 ~ g#1@2 ~ g#1@2 ~ g#1@2 ~ g#1@2 ~ g#1@2 ~ g#1@2 ~",
  T: "a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~",
  U: "b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~ b1@2 ~",
  V: "a1@2 ~ e1@2 ~ a1@2 ~ e1@2 ~ a1@2 ~ e1@2 ~ a1@2 ~ e1@2 ~",
  W: "f#2 ~@2 f#2@2 c#2 f#2 ~@2 f#2 ~@2 f#2 ~@2 f#2 ~@2 f#2 ~@2 f#2 ~@2",
  X: "e2 ~@2 e2@2 b1 e2 ~@2 e2 ~@2 e2 ~@2 e2 ~@2 e2 ~@2 e2 ~@2",
  Y: "c#2 ~@2 c#2@2 g#1 c#2 ~@2 c#2 ~@2 c#2 ~@2 c#2 ~@2 c#2 ~ c#2@4", Z: "b1@3 b1@2 b1@3", AA: "c#2@3 c#2@2 c#2@3",
  AB: "d2@3 d2@2 d2@3", AC: "e2@3 e2@2 f#2!3", AD: "e2@3 e2@5",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A@8 B ~@47 C D@4 E@2 F@2 ~@2 G@2 ~@2 G@2 ~@2 G@2 ~@4 H I J@2 H I J@2 K L M@2 K L N@3 ~@11
>`.pickRestart({
  A: "[c4 c#4 [c4,d4] [b3,d#4], g3]/8", B: "[a3,c#4,e4]", C: "[b3,b4]", D: "[a4@2 ~@5 d#4, e4@7 ~, ~ b4@3]/4",
  E: "[g#4 ~@2 c4, f#4, c#4@3 ~, ~ a#4@3]/2", F: "[d#4 c#4 d#4 c#4, [e4,b4]]/2", G: "~@6 a4 ~@8 a4 ~@8",
  H: "c#4 d#4, [f#3,b3]", I: "f#4 f4, [g#3,c#4]", J: "[f#4 ~@2 g#4, [a3,d4] [b3,e4], ~ a4@2 ~]/2",
  K: "f#4 g#4, [b3,e4]", L: "b4 a#4, [c#4,f#4]", M: "[b4 ~@2 c#5, [d4,g4] [e4,a4], ~ d5@2 ~]/2",
  N: "[b4 ~@2 c#5 b4 c#5, [d4,g4] [e4,a4]@2, ~ d5@2 ~@3]/3", // G5 A5
})).s("gm_synth_strings_1").gain(0.35)

// chords · percussive organ
const percussive_organ = note(`<
  ~@9 A B@3 A B@3 A B@3 C@2 D E F@2 D E F@2 A B@3 A B@3 A B@3 C@2 D E F@2 D E G@3 H@4 I@6 J@2 A B@3 A B@3 A B@3 C@2 K@2
  L M N@2 L M N@2 D E F@2 D E G@3 O@11
>`.pickRestart({
  A: "[c#5,e5]", B: "[g5@8 e5@3 f#5@5 e5@3 f#5@5, d5]/3", C: "[c#5,e5]/2", D: "f#4 g#4, [b3,e4]",
  E: "b4 a#4, [c#4,f#4]", F: "[b4 ~@2 c#5, [d4,g4] [e4,a4], ~ d5@2 ~]/2",
  G: "[b4 ~@2 c#5 b4 c#5, [d4,g4] [e4,a4]@2, ~ d5@2 ~@3]/3", H: "[g3,d4]@7 ~@2 [e3,b3]@13 ~@2",
  I: "[a4@2 ~@2 g#4@2 ~@2 g#4 ~@2 c5, e4@14 ~ c#5@7 ~@2, ~@2 b4@6 ~ a#4@3, ~@3 a4 f#4@2]/6",
  J: "[d#5 c#5 d#5 c#5, b4]/2", K: "[f#4@4 ~@4 c#4@7 ~, e4@15 ~, b3 ~, ~@4 g#4@11 ~]/2", L: "c#5 d#5, [f#4,b4]",
  M: "f#5 f5, [g#4,c#5]", N: "[f#5 ~@2 g#5, [a4,d5] [b4,e5], ~ a5@2 ~]/2", O: "[g3,d4]@7 ~@2 [e3,b3]@15",
})).s("gm_percussive_organ").gain(0.3).pan(0.6)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@9 A B C@2 A B C@2 A B C@2 A@2 D@7 E@2 B C@2 A B C@2 A B C@2 A@2 F@8 G H@2 ~@10 I@2 J@2 I@2 J@2 I@2 J@2 I@2 K@2 L@8 M
  N@7 O@3 ~ P@2 ~@2 Q@2 ~@2
>`.pickRestart({
  A: "[b3,e4]@3 c#4@5", B: "[a3,d4]@3 b3@5", C: "[g3,d4]@3 a3@5",
  D: "[[b3,e4]@2 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4]!2]/7", // E5
  E: "[~@2 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@4 c#4@5]/2", // E5
  F: "[[b3,e4]@2 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4] [b3,e4]@3 [b3,e4]!2]/8", // E5
  G: "~@2 [b3,e4] [b3,e4]@3 [b3,e4]!2", H: "[~@6 [a4,d5,a5,d6]@9 ~]/2",
  I: "e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~, b4@3 a4@5",
  J: "e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~, g4@3 f#4@5",
  K: "e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~ e4@2 ~, f#4 g#4",
  L: "[[f#4,b4]@2 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4] [f#4,b4]@3 [f#4,b4]!2]/8", // B5
  M: "[e4,b4]@2 [e4,b4] [e4,b4]@3 [e4,b4]!2", // E5
  N: "[~@2 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@3 [e4,b4]!2]/7", // E5
  O: "[~@2 [e4,b4] [e4,b4]@3 [e4,b4] [e4,b4]@7 [a5,d6]@10]/3", P: "[~@3 [d6,g6]@5]/2", Q: "[~@3 [a5,d6]@5]/2",
})).s("gm_electric_guitar_muted").gain(0.26).pan(0.7)

// chords · electric guitar muted · soft notes
const electric_guitar_muted_2 = note("<~@66 A@16 ~@17 B@2 ~ C@2 ~@2 B@2 ~@2>".pickRestart({
  A: "~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 e4", B: "[~@3 [a4,d5]@5]/2", C: "[~@3 [d5,g5]@5]/2",
})).s("gm_electric_guitar_muted").gain(0.19).pan(0.7)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~ A B C A B C A B C A B C A B C A B C A B C A D@2 E D@2 E D@2 F A B C A B C A B C A B C A D@2 E D@2 E D@2 G H I J H
  K@2 L M N@2 O P Q@2 R S Q@2 R S Q@2 R S Q@2 E T U@2 V U@2 V U@2 W@2 X W@2 X W@2 X Y Z AA Y Z AA Y Z AA Y Z
>`.pickRestart({
  A: "[a4,e5]@2 [a4,e5] [a4,e5]@2 [a4,e5] ~@3 [a4,e5]@2 [a4,e5] [a4,e5]@2 [a4,e5] ~@3 [a4,e5]@2 [a4,e5] [a4,e5]@2 [a4,e5]", // A5
  B: "~@3 [a4,e5]@2 [a4,e5] [a4,e5]@2 [a4,e5] ~@3 [a4,e5]@2 [a4,e5] [a4,e5]@2 [a4,e5] ~@3 [a4,e5]@2 [a4,e5]", // A5
  C: "[a4,e5]@2 [a4,e5] ~@3 [a4,e5]@2 [a4,e5] [a4,e5]@2 [a4,e5] ~@3 [a4,e5]@2 [a4,e5] [a4,e5]@2 [a4,e5] ~@3", // A5
  D: "[[e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4]]/2", // E5
  E: "[e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4", // E5
  F: "[e4,a4,b4,e5]@2 [e4,b4]@4 [a4,e5]@2 [a4,e5] [a4,e5]@2 [a4,e5] ~@3 [a4,e5]@2 [a4,e5] [a4,e5]@2 [a4,e5] ~@3, ~@2 [a4,e5] ~@21", // Esus4 E5 A5
  G: "~@3 [e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4]", // E5
  H: "[b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5] ~@3 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5] ~@3 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5]", // E5
  I: "~@3 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5] ~@3 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5] ~@3 [b4,e5]@2 [b4,e5]", // E5
  J: "[b4,e5]@2 [b4,e5] ~@3 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5] ~@3 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5] ~@3", // E5
  K: "[[e4,a4,c#5]@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@4 [e4,a4,c#5]@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@4 [e4,a4,c#5]@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,g#4,b4]@4 [e4,g#4,b4]@2 [e4,g#4,b4] [e4,g#4,b4]@2 [e4,g#4,b4]@4 [e4,g#4,b4]@2 [e4,g#4,b4] [e4,g#4,b4]@2 [e4,g#4,b4]@4 [e4,g#4,b4]@2 [e4,g#4,b4]]/2", // A E
  L: "[e4,g#4,b4]@2 [e4,g#4,b4]@4 [e4,g#4,b4]@2 [e4,g#4,b4] [e4,g#4,b4]@2 [e4,g#4,b4]@4 [e4,g#4,b4]@2 [e4,g#4,b4] [e4,g#4,b4]@2 [e4,g#4,b4]@4", // E
  M: "[e4,a4,b4]@2 [e4,a4,b4] [e4,a4,b4]@2 [e4,a4,b4]@4 [e4,a4,b4]@2 [e4,a4,b4] [d#4,a4,b4]@2 [d#4,a4,b4]@4 [d#4,a4,b4]@2 [d#4,a4,b4] [d#4,a4,b4]@2 ~", // Esus4 B7
  N: "[[e4,g#4,c#5]@2 [e4,g#4,c#5] [e4,g#4,c#5]@2 [e4,g#4,c#5]@4 [e4,g#4,c#5]@2 [e4,g#4,c#5] [e4,a#4,c#5]@2 [e4,a#4,c#5]@4 [e4,a#4,c#5]@2 [e4,a#4,c#5] [e4,a#4,c#5]@2 [f#4,g#4,c#5]@4 [f#4,g#4,c#5]@2 [f#4,g#4,c#5] [f#4,g#4,c#5]@2 [f#4,g#4,c#5]@4 [f#4,g#4,c5]@2 [f#4,g#4,c5] [f#4,g#4,c5]@2 [f#4,g#4,c5]@4 [f#4,g#4,c5]@2 [f#4,g#4,c5]]/2", // C#m A#dim F#sus2 G#7
  O: "[e4,a4,c#5]@2 [e4,a4,c#5]@4 [e4,a4,c#5]@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@4 [e4,a4,c#5]@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@4", // A
  P: "[e4,a4,c#5]@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@4 [e4,a4,c#5]@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]@4 [e4,a4,c#5]@2 [e4,a4,c#5] [e4,a4,c#5]@2 ~", // A
  Q: "[[e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]]/2", // A5
  R: "[e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4]@4", // A5
  S: "[e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4] [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4] [e4,a4]@3", // A5
  T: "[e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4] [e4,b4]@2 [e4,b4]@4 [e4,b4]@2 [e4,b4] [e4,b4]@3", // E5
  U: "[[b4,f#5]@2 [b4,f#5] [b4,f#5]@2 [b4,f#5]@4 [b4,f#5]@2 [b4,f#5] [b4,f#5]@2 [b4,f#5]@4 [b4,f#5]@2 [b4,f#5] [b4,f#5]@2 [b4,f#5]@4 [b4,f#5]@2 [b4,f#5] [b4,f#5]@2 [b4,f#5]@4 [b4,f#5]@2 [b4,f#5] [b4,f#5]@2 [b4,f#5]@4 [b4,f#5]@2 [b4,f#5]]/2", // B5
  V: "[b4,f#5]@2 [b4,f#5]@4 [b4,f#5]@2 [b4,f#5] [b4,f#5]@2 [b4,f#5]@4 [b4,f#5]@2 [b4,f#5] [b4,f#5]@2 [b4,f#5]@4", // B5
  W: "[[b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5]@4 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5]@4 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5]@4 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5]@4 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5]@4 [b4,e5]@2 [b4,e5]]/2", // E5
  X: "[b4,e5]@2 [b4,e5]@4 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5]@4 [b4,e5]@2 [b4,e5] [b4,e5]@2 [b4,e5]@4", // E5
  Y: "[b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] ~@3 [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] ~@3 [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4]", // E5
  Z: "~@3 [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] ~@3 [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] ~@3 [b3,e4]@2 [b3,e4]", // E5
  AA: "[b3,e4]@2 [b3,e4] ~@3 [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] ~@3 [b3,e4]@2 [b3,e4] [b3,e4]@2 [b3,e4] ~@3", // E5
})).s("gm_acoustic_guitar_nylon").gain(0.09).pan(0.3)

// other · harmonica
const harmonica = note("<~ A@22 ~@8 A@14 ~@9 B@2 C ~@11 D@2 ~@2 D@2 ~@2 D@2 ~@21 C@11>".pickRestart({
  A: "~@3 a4 ~@4 a4 ~@3 a4 ~@11", B: "[~@2 e5@29 ~@17]/2", C: "~@3 e4 ~@4 e4 ~@3 e4 ~@11",
  D: "~@6 [a3,a4] ~@8 [a3,a4] ~@8", // A
})).s("gm_harmonica").gain(0.3).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@23 A@7 B@2 ~@13 C@8 D@2 ~@3 E@8 F@2 G@2 F@2 G@2 F@2 G@2 F@2 H@2 I@8 J K@7 L@2 ~@10
>`.pickRestart({
  A: "[[b4,e5] [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]]/7", // E5
  B: "[~ [b4,e5]@2 [b4,e5]@5]/2", // E5
  C: "[[b4,e5] [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]@2 [b4,e5]]/8", // E5
  D: "[~ [b4,e5]@2 [b4,e5]@4 ~]/2", // E5
  E: "[f#5,f#6]@2 [f#5,f#6] ~@3 [f#5,f#6]@2 [f#5,f#6] ~@3 [f#5,f#6]@2 [f#5,f#6] ~@3 [f#5,f#6]@2 [f#5,f#6] ~@3", // F#
  F: "b3@3 a3@5", G: "g3@3 f#3@5", H: "f#3 g#3",
  I: "[[f#5,b5] [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]@2 [f#5,b5]]/8", // B5
  J: "[e5,b5] [e5,b5]@2 [e5,b5]", // E5
  K: "[~ [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]@2 [e5,b5]]/7", // E5
  L: "[~ [e5,b5]@2 [e5,b5]@5]/2", // E5
})).s("gm_electric_guitar_clean").gain(0.15).pan(0)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@23 A@7 B@2 ~@13 C@8 D ~@4 E F G H E I J@2 ~@16 H K L M H K L M N E O G N E O J@2 ~@11
>`.pickRestart({
  A: "[[e3,b3] [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]]/7", // E5
  B: "[~ [e3,b3]@2 [e3,b3]@5]/2", // E5
  C: "[[e3,b3] [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]]/8", // E5
  D: "~ [e3,b3]@2 [e3,b3]", E: "[f#3,c#4]", F: "[g#3,e4]", G: "[a3,e4]", H: "[b3,f#4]", I: "[g#3,d#4]", J: "[a3,e4]/2",
  K: "[c#4,g#4]", L: "[d4,a4]", M: "[e4,b4]", N: "[e3,b3]", O: "[g3,d4]",
})).s("gm_overdriven_guitar").gain(0.22)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note("<~@66 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C@2 ~@28>".pickRestart({
  A: "b4@3 a4@5", B: "g4@3 f#4@5", C: "[e3,b3]",
})).s("gm_overdriven_guitar").gain(0.15)

// chords · epiano1
const epiano1 = note("<~@54 A@2 ~@43 A@2 ~ B@2 ~@2 A@2 ~@2>".pickRestart({
  A: "[~@7 [a5,d6]@9]/2", B: "[~@7 [d6,g6]@9]/2",
})).s("gm_epiano1").gain(0.3).pan(0)

// chords · epiano1 · soft notes
const epiano1_soft = note("<~@54 A@2 ~@43 A@2 ~ B@2 ~@2 A@2 ~@2>".pickRestart({
  A: "[~@7 [a4,d5]@9]/2", B: "[~@7 [d5,g5]@9]/2",
})).s("gm_epiano1").gain(0.15).pan(0)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  A B@4 C@2 D@2 B@3 C B@2 C E B@3 F G B ~@8 B@3 C B@2 C@5 H G B ~@9 I@4 ~@8 G B@13 G H ~@17 I@11
>`.pickRestart({
  A: "x!4", B: "x!8", C: "x!5 ~ x!2", D: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2", E: "x!3 ~ x ~ x!2",
  F: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~ x", G: "~ x!7", H: "x!7 ~", I: "x!3 ~",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A@4 ~@3 A ~@2 A B ~@3 A ~@9 C ~@3 A ~@2 A@5 C ~@22 C ~@32 C ~@11>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x ~ x ~@2", C: "~@7 x",
})).gain(0.25)

// drums · crash
const crash = s("cr").struct(`<
  ~@21 A ~ A ~ A ~ A ~@15 A ~ A ~ A ~ A ~ A ~@6 A ~ A ~ A ~ A ~ A ~@13 A ~ A ~@3 B ~ A ~ A ~ A ~ A ~ A ~@10 C ~@2
>`.pickRestart({
  A: "x", B: "x!2 ~@2", C: "~ x ~@10",
})).gain(0.3)
// … 19 more lines

More by Sting