Strudelify
The Soul Cages cover art

1991 · The Soul Cages

The Soul Cages

Sting

KeyA minorTempo105 bpm
0:00/0:00
// The Soul Cages — Sting
// 105 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 13 "ENGL.HORN" english horn (copy of ch 12 "SOPRAN SAX" soprano sax)
// note: Full arrangement: all 155 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/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 · "FINGERDBAS"
const bass = note(`<
  ~ A B A B A B A B C D C D C D C D C D C D C D C D C D C D C D C D C D C E F G F G F G F H A B A B A B A B I J K L I J
  K L I M I M I M I M I M I M I M I M I M I M I M I M N O N O N O N O I M I M I M I M N O N O N A P Q N A P Q R S T P R
  S T P R S U V W@7 X P Y P Y P Y P Y P Y P Y P Y P Y P Y P Y P ~
>`.pickRestart({
  A: "g1!8", B: "a#1!3 c2!5", C: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  D: "g2 ~ g2@2 a#2 ~ a#2 ~ c3 ~ c3@2 f2 ~ f2 ~", E: "c3!5 a#2@2 a#1", F: "a#1!8", G: "a#2!8", H: "c2!8",
  I: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", J: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2",
  K: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", L: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2",
  M: "a1 ~ a1@2 c2 ~ c2 ~ d2 ~ d2@2 g1 ~ g1 ~", N: "a1!8", O: "c2!3 d2!5", P: "f#1!8", Q: "f1!6 e1!2", R: "c#2!8",
  S: "d2!8", T: "b1!8", U: "b1!3 c#2!5", V: "d2!3 e2!5", W: "f#2!8", X: "f#2!6 f#2@2", Y: "a1!3 b1!5",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  ~ A@10 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@4 A@2 B@2 A@2 D@2 E@8 A@8 F@2 G@2 F@2 G@2 H@2 I@2 H@2 I@2 H@2 I@2 H@2 I@2 H@2 I@2
  H@2 I@2 H@20 J@4 K@8 ~@16 L@20 M ~
>`.pickRestart({
  A: "[[f3,d4]@3 [g3,e4]]/2", B: "[[f3,d4]@3 [e3,c4]]/2", C: "[~ a4, [g3,a#3,c4,e4]]/4", D: "[f3,d4]/2",
  E: "[f4@15 e4, a#3]/8", F: "[g3,c4]/2", G: "[a#3,d#4]/2", H: "[[g3,e4]@3 [a3,f#4]]/2", I: "[[g3,e4]@3 [f#3,d4]]/2",
  J: "[g3 a3@3, [e4,a4]]/4", K: "[g3 a3@3 ~@4, a4, e4 ~]/8", L: "[[e3,c#4]@3 [f#3,d#4]]/2", M: "[e3,c#4]",
})).s("gm_pad_warm").gain(0.3).pan(0.3)

// other · fretless bass · "FRETLESS"
const fretless_bass = note(`<
  ~@9 A B C D E@2 F G H I J K L M N O ~@4 P Q R@2 L S@2 ~ T@2 U V W@2 X Y@3 Z@6 ~@8 AA AB AC AD AE AF AG AH AI AJ AK
  AL@2 AM@2 AN AO@2 AP AQ@2 AR AS AT AU@2 AV@2 AU@2 AW@2 AX AY AZ@2 BA@2 BB BC AU@2 AV@2 AU@2 AV@2 AU@2 BD@6 BE@4 BF BG
  BH@3 ~@29
>`.pickRestart({
  A: "~@2 a#3@2 a#3@2 g3@2 a#3@2 a#3@2 g3@2 a#3!2", B: "c4 g3 ~@2", C: "~ g3 a#3@2 g3@2 a#3@3 a#3 ~ g3 a#3@2 g3@2",
  D: "f3 g3@3 ~@4", E: "[~ g3 a#3@2 g3 a#3@2 ~ a#3@4 a#3@2 a#3@4 c4@2 d4@2 c4@2 ~@2 f3@2 g3@2 a#3@2]/2",
  F: "a#3 g3 a#3 g3 ~ f3 g3 a#3", G: "~@2 a#3@2 ~@2 a3@4 a#3 a3 g3@4", H: "~ a#3!2 g3 a#3!3 ~", I: "a#3 c4 d4 c4@2 ~@3",
  J: "~@2 a#3@2 a#3 ~ g3 ~ a#3@2 g3 ~ g3 ~ g3 ~", K: "f3 g3 ~ g3 ~ a#3 g3 a#3", L: "~ a#3 g3 a#3 ~ a#3 g3 a#3",
  M: "~@2 a#3 c4@2 ~ g3@6 ~@4", N: "~@2 a#3@2 a#3@2 g3 ~ a#3@4 a#3@2 g3 ~", O: "a#3@2 a#3 a#3@5",
  P: "~@2 a#3 g3 a#3!2 g3 a#3", Q: "~ c4@7 ~@8",
  R: "[~@2 a#3 ~ g3 ~ a#3@3 a#3 ~ g3 c4@3 g3@3 g3@4 ~@4 a#3@2 g3@2 a#3@2]/2",
  S: "[~ a#3@2 a#3@2 d3 ~ a#3@2 a#3@2 a#3!2 g3@3]/2",
  T: "[a#3@2 a#3@2 a#3@2 a#3@4 c4@2 d4@2 d4@6 c4@2 a#3@2 ~ g3@5 ~@2]/2", U: "~@2 d4@2 c4 ~ a#3@4 a#3@2 g3 ~ d4 ~",
  V: "c4 ~ c4@6 ~@8", W: "[~@2 d4@2 c4 ~ c4@2 a#3 ~ a#3@2 ~@2 d4@4 c4 ~ a#3 ~ a#3 c4 g3@6 ~@2]/2",
  X: "~ d4!3 d4@2 c4 a#3", Y: "[d4@4 d4@4 d4@12 ~@4 a#3@2 c4@2 d4 ~ c4@8 a#3@4 g3@6]/3",
  Z: "[~@8 a#3@2 c4@2 d4 ~ c4@8 a#3@4 g3@6]/2", AA: "~ c4!2 a3 c4 a3!2 c4", AB: "g3@2 a3@4 c4@2 ~@2 a3@2 ~@2 c4 a3",
  AC: "a3@3 a3@3 ~@4 g3@2 a3 ~ c4@2", AD: "g3@2 a3 ~ g3@2 a3@2 ~@2 c4@2 a3@2 c4@2", AE: "~ c4!3 ~ c4 a3 c4",
  AF: "d4 ~ a3@2 c4@2 ~@4 g3@2 a3@2 c4 ~", AG: "c4@2 ~ c4@2 ~ c4@2 a3 ~@3 a3@2 c4@2",
  AH: "g3 ~ g3 ~ a3@3 ~ a3@3 ~@3 a3@2", AI: "d#4@2 d4@2 c4@2 d4@3 a3 a3@2 ~@4", AJ: "d#4 d4 ~ c4 d4 e4@3 ~@6 a3@2",
  AK: "c4!2 a3 c4 ~ g3 a3 c4", AL: "[a3!2 ~ a3@3 ~@4 c4@2 a3@2 c4@4 c4@2 a3@2 c4@4 c4@2 a3@2 c4@2]/2",
  AM: "[c4 d4 a3 g3@2 ~@2 c4@2 c4 ~ c4 a3 a3@2 c4]/2", AN: "g3 ~ a3@4 a3@4 ~@4 a3@2",
  AO: "[d#4@2 d4 ~ c4 ~ d4@4 a3@4 d#4 d4@2 c4 d4@2 a3@4 ~@8]/2", AP: "c4!4 a3!2 e3 g3",
  AQ: "[~@2 a3@2 ~@2 a3@2 ~@2 c4@2 a3@2 c4@6 c4@2 c4@2 a3@2 ~@2 a3 ~ a3@2]/2", AR: "c4 d4 ~ c4 d4@2 ~@4 c4@2 c4@2 a3@2",
  AS: "c4 ~ c4 ~ a3@2 c4@2 a3@2 a3@2 g3@2 c4@2", AT: "g3 a3 a3@2 ~@4", AU: "[~@8 c4@2 d4@2 e4 ~ d4@8 c4@4 d4@6]/2",
  AV: "[~@8 c4@2 d4@2 e4 ~ d4@8 c4@4 a3@6]/2", AW: "[~@8 c4@2 d4@2 e4 ~ d4@8 c4@4 a3@2 ~@2 a3@2]/2",
  AX: "c4!2 c4@2 c4!4", AY: "d4@2 a3@2 a3@2 a3@2 g3 ~ a3 ~ g3 ~@3",
  AZ: "[~@2 c4@2 c4 a3 c4 ~@2 c4 ~ a3 c4@2 ~ d4@3 a3@4 ~@10]/2", BA: "[~@2 c4@2 c4 ~ c4@4 d4 e4 d4@3 c4@3 d4@4 ~@10]/2",
  BB: "~@2 c4@2 c4@2 ~@2 c4@2 ~@2 c4 ~ c4 ~", BC: "c4 ~ c4@2 c4@4 c4@4 ~@4",
  BD: "[~@8 c4@2 d4@2 e4 ~ d4@8 c4@4 a3@8 ~@8 a3@2 b3@2 c#4@4 d4@2 e4@2 c#4@4 b3@2 a3@2 c#4@10 ~@2 a3@2 b3@2 c#4@4 d4@2 e4@2 c#4@4 b3@2 a3@3 ~]/6",
  BE: "[a3@5 ~@5 a3@2 b3@2 c#4@4 d4@2 e4@2 c#4@4 b3@2 a3@2 c#4@10 ~@2 a3@2 b3@2 c#4@4 d4@2 e4@2 f#4@4 g#4@2 a4@4]/4",
  BF: "a4@5 ~@2 a4", BG: "g#4@3 f#4@2 e4@3 d4@3 c#4@2 a3@3", BH: "[a3@4 ~ a3 b3 c#4@2 d4 e4 c#4@2 b3 a3@3 g#3 f#3@6]/3",
})).s("gm_fretless_bass").gain(0.4)

// other · celesta
const celesta = note(`<
  ~ A B C D@2 B C E@3 F@12 G@8 F@4 H I@2 ~@7 A B C D@2 B C J@8 ~@3 K@6 L@2 M N O@2 P@6 Q@5 R S T@2 R S T@2 R S T@2 R S
  T@2 R S U V@8 W@2 X@2 W@2 X@2 W@2 Y Z@2 AA AB AC@2 AA AB AD@2 AE AF AG@2 AE AF AG@2 AE AF AG@2 AE AF AG@2 AE AF AH@3
>`.pickRestart({
  A: "~ [g4,g5] [a#4,a#5] [g4,g5] [a#4,a#5] [c5,c6] [d5,d6] [g4,g5]", // G A# G A# C D G
  B: "[a#4,a#5]@2 [a#4,a#5] [g4,g5] [a#4,a#5] [c5,c6] [f4,f5] [g4,g5]", // A# G A# C F G
  C: "[a#4,a#5] [d4,d5] [a#4,a#5] [g4,g5] [a#4,a#5] [c5,c6] [d5,d6] [g4,g5]", // A# D A# G A# C D G
  D: "[[f5,f6] [g4,g5] [c5,c6] [e5,e6] [g4,g5] [c5,c6] [f4,f5] [d4,d5]@2 [g4,g5] [a#4,a#5] [g4,g5] [a#4,a#5] [c5,c6] [d5,d6] [g4,g5]]/2", // F G C E G C F D …
  E: "[[f5,f6] [g4,g5] [c5,c6] [e5,e6] [g4,g5] [c5,c6] [f4,f5] [d4,d5]@2 [d4,d5] [c4,c5] [a#3,a#4] [f4,f5] [g4,g5] [a4,a5] [f4,f5]@2 [d4,d5]@2 [c4,c5] [e4,e5] [c4,c5] [f4,f5] [g4,g5]]/3", // F G C E G C F D …
  F: "[[a#4,a#5] [c4,c5] [d4,d5] [g4,g5]@2 [a4,a5]@2 [f4,f5]@2 [d4,d5]@2 [c4,c5] [e4,e5] [g4,g5] [d4,d5]@3 [d4,d5] [c4,c5] [a#3,a#4] [f4,f5] [g4,g5] [a4,a5] [f4,f5]@2 [d4,d5]@2 [c4,c5] [e4,e5] [c4,c5] [f4,f5] [g4,g5]]/4", // A# C D G A F D C …
  G: "[[a#4,a#5]@2 [c4,c5]@2 [d4,d5]@2 [g4,g5]@4 [a4,a5]@4 [f4,f5]@4 [d4,d5]@4 [c4,c5]@2 [e4,e5]@2 [g4,g5]@2 [d4,d5]@38 [g5,g6] [c5,e5,c6,e6] [a4,a5]@30 [d4,d5]@2 [c4,c5]@2 [a#3,a#4]@2 [f4,f5]@2 [g4,g5]@2 [a4,a5]@2 [f4,f5]@4 [d4,d5]@4 [c4,c5]@2 [e4,e5]@2 [c4,c5]@2 [f4,f5]@2 [g4,g5]@2]/8", // A# C D G A F D C …
  H: "[a#4,a#5] [c4,c5] [d4,d5] [g4,g5]@2 [a4,a5]@2 [f4,f5]", // A# C D G A F
  I: "[[c4,c5] [d4,d5] [f4,f5] [c4,c5] [d4,d5] [f4,f5] [c4,c5] [a#3,a#4]@4 ~@5]/2", // C D F C D F C A#
  J: "[[f5,f6] [g4,g5] [c5,c6] [e5,e6] [g4,g5] [c5,c6] [f4,f5] [d4,d5]@57]/8", // F G C E G C F D
  K: "[[e5,e6]@10 [b4,b5] [c5,c6] [b4,b5] [g4,g5]@2 [e5,e6]@12 [c5,c6] [b4,b5] [g4,g5]@2 [e5,e6]@11 [g4,g5] [c5,c6] [b4,b5]@2 [g4,g5]@2]/6", // E B C B G E C B …
  L: "[[e5,e6]@12 [c5,c6] [b4,b5] [g4,g5]@2]/2", M: "[e5,e6]@7 [c5,c6]",
  N: "[b4,b5] [g4,g5] [d4,d5] [e4,e5]@3 [g4,g5]@2", // B G D E G
  O: "[[e5,e6]@4 [c5,c6] [b4,b5]@2 [g4,g5]@2 [d4,d5]@2 [e4,e5]@3 [g4,g5] [c5,c6]]/2", // E C B G D E G C
  P: "[[e5,e6]@11 [c5,c6] [b4,b5] [g4,g5] [d4,d5] [e4,e5]@3 [g4,g5] [a4,a5] [c5,c6] [b4,b5] [g4,g5] [a4,a5]@2 [d4,d5] [e4,e5] [g4,g5] [f#4,f#5]@2 [d4,d5] [e4,e5]@3 [c5,c6] [b4,b5]@2 [g4,g5] [a4,a5] [e5,e6]@2 [a4,a5] [c5,c6]@2 [d5,d6] [b4,b5] [g4,g5] [e4,e5]]/6", // E C B G D E G A …
  Q: "[[d4,d5] [e4,e5] [g4,g5]@2 [a4,a5] [b4,b5]@2 [d5,d6]@3 [b4,b5] [c5,c6] [a4,a5] [g4,g5] [e4,e5] [d4,d5]@3 [e4,e5] [g4,g5] [a4,a5] [b4,b5]@4 [g4,g5] [b4,b5] [c5,c6] [b4,b5] [g4,g5] [e4,e5]@3 [a4,a5] [c5,c6] [a4,a5] [c5,c6] [d5,d6] [e5,e6] [a4,a5]]/5", // D E G A B D B C …
  R: "[c5,c6]@2 [c5,c6] [a4,a5] [c5,c6] [d5,d6] [g4,g5] [a4,a5]", // C A C D G A
  S: "[c5,c6] [e4,e5] [c5,c6] [a4,a5] [c5,c6] [d5,d6] [e5,e6] [a4,a5]", // C E C A C D E A
  T: "[[g5,g6] [a4,a5] [d5,d6] [f#5,f#6] [a4,a5] [d5,d6] [g4,g5] [e4,e5]@2 [a4,a5] [c5,c6] [a4,a5] [c5,c6] [d5,d6] [e5,e6] [a4,a5]]/2", // G A D F# A D G E …
  U: "[g5,g6] [a4,a5] [d5,d6] [f#5,f#6] [a4,a5] [d5,d6] [g4,g5] [e4,e5]", // G A D F# A D G E
  V: "[a5,a6] [a4,a5] [a5,a6] [a4,a5] [a5,a6] [a4,a5] [a5,a6] [a4,a5]", // A
  W: "[b4 f#4 b4 e5@2 b4@2 c#5@2 f#4 b4 e5@2 c#5 e5 f#5]/2",
  X: "[c#4@2 f#4@2 b4@2 c#5@2 f#4@2 b4@2 c#5@2 e5@4 f#3 g#3 a3 b3 c#4 f#4 b4@2 f#3 g#3 a3 b3 c#4 f#4]/2",
  Y: "c#4 f#4 b4 c#5 f#4 b4 c#5 e5",
  Z: "[a3 e4 f#4 b4 b3 e4 f#4 b4@2 [c#4,c#5] [g#4,g#5] [a4,a5] [b4,b5] [e5,e6] [c#4,c#5] [a4,a5]]/2", // C# G# A B E C# A
  AA: "[b4,b5] [e5,e6] [c#4,c#5] [f#4,f#5] [c#5,c#6] [f#4,f#5] [b4,b5] [e4,e5]", // B E C# F# C# F# B E
  AB: "[c#4,c#5] [f#4,f#5] [a4,a5] [e5,e6] [b4,b5] [c#4,c#5] [g#4,g#5] [a4,a5]", // C# F# A E B C# G# A
  AC: "[[c#5,c#6] [c#4,c#5] [f#4,f#5] [a4,a5] [b4,b5] [g#4,g#5] [a4,a5] [e4,e5]@2 [c#4,c#5] [g#4,g#5] [a4,a5] [b4,b5] [e5,e6] [c#4,c#5] [a4,a5]]/2", // C# F# A B G# A E C# …
  AD: "[[c#5,c#6] [c#4,c#5] [f#4,f#5] [a4,a5] [b4,b5] [g#4,g#5] [a4,a5] [e4,e5]@2 [f#4,f#5] [a4,a5] [f#4,f#5] [a4,a5] [b4,b5] [c#5,c#6] [f#4,f#5]]/2", // C# F# A B G# A E F# …
  AE: "[a4,a5]@2 [a4,a5] [f#4,f#5] [a4,a5] [b4,b5] [e4,e5] [f#4,f#5]", // A F# A B E F#
  AF: "[a4,a5] [c#4,c#5] [a4,a5] [f#4,f#5] [a4,a5] [b4,b5] [c#5,c#6] [f#4,f#5]", // A C# A F# A B C# F#
  AG: "[[e5,e6] [f#4,f#5] [b4,b5] [d#5,d#6] [f#4,f#5] [b4,b5] [e4,e5] [c#4,c#5]@2 [f#4,f#5] [a4,a5] [f#4,f#5] [a4,a5] [b4,b5] [c#5,c#6] [f#4,f#5]]/2", // E F# B D# F# B E C# …
  AH: "[[e5,e6] [f#4,f#5] [b4,b5] [d#5,d#6] [f#4,f#5] [b4,b5] [e4,e5] [c#4,c#5]@2 [f#4,f#5] [a4,a5] [f#4,f#5] [a4,a5] [b4,b5] [c#5,c#6] [f#4,f#5]@4 ~@5]/3", // E F# B D# F# B E C# …
})).s("gm_celesta").gain(0.1).pan(0.2)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@25 A@2 B C@2 ~@6 D@8 E F@2 G@2 H@2 I@2 ~@8 J@8 ~@8 K@8 L@8 ~@8 M@4 N@8 ~@16 O@8 P@4 Q R@2 S@3 T U V@2 T U W ~
>`.pickRestart({
  A: "[~@2 g5@8 d5 ~ c#5 ~ c5@6 g4 ~@5 g4 ~ a#4 ~ c5 ~]/2", B: "a#4 ~ c5 ~ a#4@2 g4@2 a#4 ~ c5@2 ~ g5@2 d5, ~@6 d5 ~",
  C: "[c5@2 a#4 g4 c5@2 g4@2 a#4 ~ d4 g4@2 ~ f4@18, ~@9 g4@2 ~@21]/2",
  D: "[c5@2 d5@2 f5@2 c5@2 d5@2 f5@2 c5@2 ~@2 d5@16 d#5@16 d5@16 ~@11 g#5 a5 ~@3 d5@16 d#5@16 d5@16, ~@7 a#4@57, ~@4 d#5 ~@3, ~@19 a#5@13]/8",
  E: "[g5,c6]", F: "[~@4 d5@19 ~ c5@2 a#4@6, ~ g5@7, ~@4 c#5 ~@19 c#5 ~@7]/2",
  G: "[~@4 d5@18 c5@6 a#4@2 c5 ~, ~ g5@7, ~@4 c#5 ~@17 c#5 ~@9]/2",
  H: "[~@2 d5@10 c5 a#4 g4@2, ~ g5@7, ~@4 c#5 ~@19 c#5 ~@7]/2",
  I: "[~@4 d6@15 ~ c#6 d6 a#5 ~ c6@7 ~, ~@4 [g5,g6]@27 ~, ~@4 c#6 ~@16 c6@2 ~@9]/2", J: "[[g6,g#6] ~@127, a6]/8",
  K: "[[g6,g#6] ~@127, a6@127 ~]/8", // G#maj7
  L: "[e6@24 d#6 d6@6 ~ e6@24 d#6 c6@3 d6@5 ~@3 e6@20 d6@3 ~ c6@6 ~@2 [a5,d#6,a6] ~@15 d6@2 c6 ~ d6@4 c6@4, [a5,a6]@33 ~ [a5,a6]@15 ~@15, d#6 ~@31 d#6 ~@35 d#6 ~@19 d#6 ~@11 e6@15 ~ d#6 ~@11]/8", // Adim A
  M: "[e6@24 d6@2 c6 ~ d6@3 ~ e6@28 [d6,d#6] ~ c6@2, [a5,a6], d#6 ~@23 d#6 ~@7 d#6 ~@31]/4", // D#maj7 A
  N: "[~ [a5,e6,a6]@31, ~@4 d#6 ~@123]/8", // A5
  O: "[c#6@88 b5@2 a5 ~ b5@6 ~@2 [f#5,c#6,f#6]@19 ~ b5@4 a5@4, [f#5,f#6]@99 ~@21 [f#5,f#6]@8, c6 ~@87 c6 ~@11 c6 ~@19 c6 ~@7]/8", // F#5 F#
  P: "[~@2 f#5 ~ c#6@18 ~@2 b5@2 a5 ~ b5@2 a5@4 f#5 ~ [f#5,c#6,f#6]@14 [c#6,e6]@2 [c#6,e6] ~ [c#6,e6]@2 [c#6,e6] ~ e6@2 [b5,d#6]@4, ~@4 [f#5,f#6]@30 ~@26 [a5,a#5] ~@3, ~@4 c6 ~@19 c6 ~@11 c6 ~@21 c#6 ~@5]/4", // F#5 C#m B F# A#maj7
  Q: "~@4 f#5@11 ~, a5@15 ~, ~ c#6@15",
  R: "[~@10 f#5 ~ b5@2 [b5,d#6]@4 [a5,c#6]@2 f#5@9 ~ [c#6,e6]@2, ~@12 d#6 ~@17 c6 ~]/2", // B A C#m
  S: "[~@2 [c#6,e6] ~ [c#6,e6] c6 [a5,b5] ~ [f#5,b5] a5 f#5 e5 [e5,f#5] c#5 c5 a4@2 f#4@3 ~@6 f#5 ~ [f#5,d#6] ~ [f#5,a5]@4 ~@2 [a5,c#6]@2 b5@2 f#5@2 [f#5,d#6]@2 [a5,c#6]@2 f#5 ~, ~@28 b5@2 c#6@6 ~@2 d#6 ~ b5@4 ~@4, ~@34 f#5@5 ~ d#6 ~@7]/3", // C#m Asus2 B5 Esus2 D#m F#m A D#m …
  T: "~@4 [c6,c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~ [c6,c#6,f#6] b5", // F# F#5 F#
  U: "a5@2 f#5 ~ [f6,f#6] ~ f#6 ~ [b5,f#6]@2 a5 ~ [f#5,f#6]@4, f#6 ~@3 a5@2 ~@6 g#5 ~@3", // F#maj7 B5 F#
  V: "[~ f#4@3 ~@6 f#5 ~ [f#5,d#6] ~ [f#5,a5]@4 ~@2 [a5,c#6]@2 b5@2 f#5@2 [f#5,d#6]@2 [a5,c#6]@2 f#5 ~, ~@12 b5@2 c#6@6 ~@2 d#6 ~ b5@4 ~@4, ~@18 f#5@5 ~ d#6 ~@7]/2", // D#m F#m A D#m A
  W: "~@2 [f#5,f#6] ~ f#6@2 b5 ~ [c6,c#6,f#6] ~ [c#6,f#6] ~ [c#6,f#6] ~ c#6@2, ~@4 a5 ~@9 e6 ~", // F# F#5
})).s("gm_percussive_organ").gain(0.3).pan(0.7)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A B C@4 D@4 ~@6 E F@7 G H@2 I J@8 K@2 ~@7 B C@4 L@2 M@2 N@3 ~ O@3 P@2 Q@2 R@2 S@2 T@2 U@4 V W X Y Z AA@2 AB@3 AC AD@10
  AE@2 AF@4 AD@2 AG AH@8 ~@20 AI AJ@3 AI AJ@3 AI AJ@3 AI AJ@3 AI AJ@3 AI ~
>`.pickRestart({
  A: "~@10 [c3,f3] ~ [a#1,f2]@4", B: "~ d3 [f3,a#3]@4 d3!2",
  C: "[[a#2,f3,a#3] ~ [a#2,f3,a#3]@2 f3@5 d3 [f3,a#3]@4 d3 [c4,f4]@2 [c4,f4] ~ [c4,e4] ~ [c4,e4]@4 d3 [f3,a#3]@4 d3!2, ~@4 a#2@3 ~@25, ~@4 a#3 ~@27]/4", // A#5 F5 C A#5
  D: "[[a#2,f3,a#3] ~ [a#2,f3,a#3]@2 f3@5 d3 [f3,a#3]@4 d3 [c4,f4]@2 [c4,f4] ~ [c4,e4] ~ [a#3,d4]@11, ~@4 a#2@3 ~@25, ~@4 a#3 ~@27]/4", // A#5 F5 C A#
  E: "~@15 g3", F: "[g3@20 a#3@4 c4@4 f3@24 a#3@4 c4@4 d4@24 d3@4 e3@4 f3@18 f3!2]/7",
  G: "f3!2 g3@2 g3@2 g3!4 g3@2 g3@4", H: "[~@2 g4@8 d4 ~ c#4 ~ c4@6 g3 ~@5 g3 ~ a#3 ~ c4 ~]/2",
  I: "a#3 ~ c4 ~ a#3@2 g3@2 a#3 ~ c4@2 ~ g4@2 d4, ~@6 d4 ~",
  J: "[c4@2 a#3 g3 c4@2 g3@2 a#3 g3@2 d3 g3@2 f3@22 a#3@4 ~@4 f3@24 a#3@4 c4@4 d4@24 a#3@4 ~@4 f3@20, ~@10 c4@7 ~@9 c4@5 ~]/8",
  K: "[c4 ~ f4 c4 ~ f4 c4 a#3@9, ~ d4@2 ~ d4@2 ~@10]/2",
  L: "[[a#2,f3,a#3] ~ [a#2,f3,a#3]@2 f3@5 d3 [f3,a#3]@4 d3!2, ~@4 a#2@3 ~@9, ~@4 a#3 ~@11]/2", // A#5
  M: "[[a#2,f3,a#3] ~ [a#2,f3,a#3]@2 f3@12, ~@4 a#2@3 ~@9, ~@4 a#3 ~@11]/2", // A#5
  N: "[~@12 c4 ~ c4@4 a#3 ~ a#3@4 f3@4 a3@20]/3", O: "[~@12 c4 ~ c4@4 a#3@2 a3@4 f3@2 a#3@2 g3@16 g3@4]/3",
  P: "[~@5 c4 ~ g3, [e3,a3]@3 d4]/2", Q: "[~@9 e3 [g3,c4]@2 f#3@2 g3@2, a3@11 ~ d4@4]/2",
  R: "[a3@18 a3 ~ [c4,e4]@4 ~@4 g3@4, ~@3 d4]/2", S: "[~@7 [d4,g4] [d4,g4]!2 ~ [d4,f#4] ~ [d4,f#4]@3, a3@9 ~@7]/2",
  T: "[~@5 [c4,g4] f#4 g3, a3@3 d4]/2", U: "[~@5 c4 ~ g3, a3@3 d4]/2", V: "a3",
  W: "d4 e4@3 d4 e4@3 [d4,f#4]@4 [d4,f#4]@4, g4!2 ~@2", X: "~@4 e3 [g3,c4] ~ e3, a3",
  Y: "[g3,c4] ~ [g3,c4]@2 ~@2 g3@2, ~ d4", Z: "~@2 [g3,c4]!2 e3 g3@2 e3, a3",
  AA: "[[g3,c4] ~ [g3,c4]@2 ~@2 g3@4 [g3,c4]!2 e3 g3@2 e3, ~ d4 ~@2]/2", // C5
  AB: "[[g3,c4] ~ [g3,c4]@2 ~@2 g3@4 [g3,c4] g3 e3 a3@2 [c4,g4]@2 [c4,g4] ~ [c4,f#4] ~ [c4,f#4]@3, ~@4 d4@4 ~@3 c4@3 ~@10]/3", // C5 Cdim
  AC: "~ e3 [g3,c4]@4 e3!2", AD: "[[c3,g3,c4] ~ [c3,g3,c4]@2 g3@5 e3 [g3,c4]@4 e3!2, ~@4 c3@3 ~@9, ~@4 c4 ~@11]/2",
  AE: "[[c3,g3,c4] ~ [c3,g3,c4]@2 d3 c3 d3@3 e3 [g3,c4]@4 e3!2]/2", // C5
  AF: "[[c3,g3,c4] ~ [c3,g3,c4]@2 g3@5 e3 [g3,c4]@4 e3 [d4,g4]@2 [d4,g4] ~ [d4,f#4] ~ [c4,e4]@4 e3 [g3,c4]@4 e3!2, ~@4 c3@3 ~@25, ~@4 c4 ~@27]/4", // C5 G5 D C C5
  AG: "[c3,g3,c4] ~ [c3,g3,c4]@2 g3@4, ~@4 c3@3 ~, ~@4 c4 ~@3", // C5
  AH: "[~ [c4,g4]!2 [a3,e4] [c4,g4]!2 ~ [c4,g4]@2 [c4,g4]!2 [a3,e4] d4 e4 c4@3 [c4,g4]!2 [a3,e4] [c4,g4]!2 ~ [c4,g4]@2 [c4,g4]!2 [a3,e4] d4 e4 c4@3 [c4,g4]!2 [a3,e4] [c4,g4]!2 ~ [c4,g4]@2 [c4,g4]!2 [a3,e4] d4 e4 c4@3 [c4,g4]!2 [a3,e4] [c4,g4]!2 ~ [c4,g4]@2 [c4,g4]!2 [a3,e4] d4 e4 c4@2, ~@6 g3 ~@7 g3 ~@7 g3 ~@7 g3 ~]/8", // C5 A5 C5 A5 C5 A5 C5 A5 …
  AI: "~ c#3 [e3,a3]@4 c#3!2", // A5
  AJ: "[[a2,e3,a3] ~ [a2,e3,a3]@2 e3@5 c#3 [e3,a3]@4 c#3 [b3,e4]@2 [b3,e4] ~ [b3,d#4] ~ [a3,c#4]@3, ~@4 a2@3 ~@17, ~@4 a3 ~@19]/3", // A5 E5 B A
})).s("gm_overdriven_guitar").gain(0.25)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  A B ~@14 C ~@20 D@2 E@4 F G B ~@14 H ~@24 I ~@19 J ~ J ~ J ~ J ~@43
>`.pickRestart({
  A: "~@8 [a2,d3] ~@7", B: "[g2,g3] ~@3, d3 ~@7", C: "~@14 g3 ~", D: "[a#2,f3]/2", E: "[a#2,f3,a#3]/2",
  F: "[a#2,f3,a#3]", G: "[c3,g3,c4]", H: "~@3 c4", I: "[a2,a3] ~@3, e3 ~@7", J: "[a2,e3]",
})).s("gm_overdriven_guitar").gain(0.15)

// chords · electric bass pick · "PICK BASS"
const electric_bass_pick = note(`<
  ~@29 A@8 B@8 ~@24 C D C D C D C D C D C D C D C D ~@28 E@6 F@6 G@8 ~@22
>`.pickRestart({
  A: "[d4,g4] ~@3 [d4,g4] ~@3 [d4,g4] ~@3 [d4,g4] ~@3", // G5
  B: "[~@63 g4, d4@3 d4@3 d4@3 d#4@3 d#4@3 d#4@3 d4@3 d4@3 d#4@3 d#4@3 d#4@3 d4@3 d4@3 d4@3 d#4@3 d#4@3 d4@3 d4@3 d4@2 ~@2 c5@4 c5@2, ~ a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@3 a#4@2 g4@2 g4@2 g4@2 ~, ~@2 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@3 f4@4 e4@4]/8",
  C: "[c4,g4] ~@3 [c4,g4] ~@3 [c4,g4] ~@3 [c4,g4] ~@3", D: "[c4,g4] ~@3 [c4,g4] ~@3 [c4,f#4] ~@3 [c4,f#4] ~@3",
  E: "[~@4 a4 ~@7 a4 ~@7 c#5 ~@7 c#5 ~@7 a4 ~@7 a4 ~@2 f#4, c#4@8 d4@8 ~@7 a4@8 a4@3 a4@2 ~ g#4@3 ~@2 a4@2 ~ g#4@3, ~ e4@2 e4@3 e4@2 ~ e4@2 e4@3 e4@2 e4@8 e4@8 c#4@8 d4@8, ~@2 a4@2 ~ g#4@3 ~@2 a4@2 ~ g#4@3 ~@2 c#5@2 ~ c#5@3 ~@2 c#5@2 ~ c#5@3 ~@7 f#4@2 ~@7, ~@7 f#4@2 ~@6 f#4@2 f#4@2 f#4@3 f#4@3 f#4@2 f#4@3 f#4@2 ~ e4@2 e4@3 e4@2 ~ e4@2 e4@3 e4@2]/6",
  F: "[~@4 a4 ~@7 a4 ~@7 a4 ~@7 b4 ~@2 [b4,d5]@2 [b4,d5]@2 [a4,c#5]@2 [a4,c#5]@2 [f#4,b4]@2 [f#4,b4]@2 [g#4,b4]@2 [g#4,b4]@3, e4 e4 c#4 d4 ~@2, ~ f#4@2 f#4@3 f#4@3 f#4@2 f#4@3 f#4@2 ~ e4@2 e4@3 e4@2 ~ e4@2 e4@3 f#4@3 ~@15, ~@2 c#5@2 ~ c#5@3 ~@2 c#5@2 ~ c#5@3 ~@7 b4@2 ~@23, ~@7 a4@5 ~@3 a4@3 a4@2 ~ g#4@3 ~@2 a4@2 ~ a4@3 ~@16]/6", // Bm A B5 G#m
  G: "[c#5,f#5]@2 [c#5,f#5]!6 [c#5,f#5]@2 [c#5,f#5]!6", // F#5
})).s("gm_electric_bass_pick").gain(0.2).pan(0.8)

// other · banjo
const banjo = note("<~@53 [a4@11 b4@2 e5@3] [c5@8 c5!8] [c5!16]!2 [a4@11 b4@2 e5@3] [c5@8 c5!8] [c5!16]!2 ~@94>")
  .s("gm_banjo").gain(0.15).pan(0.7)

// other · soprano sax · "SOPRAN SAX"
const soprano_sax = note("<~@53 A B@3 A C@2 D E ~@67 E F E F ~@22>".pickRestart({
  A: "a4@11 b4@2 e5@3", B: "c5/3", C: "c5/2", D: "d5 d#5", E: "e5", F: "d#5",
})).s("gm_soprano_sax").gain(0.35).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A B C B C B C B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B E B D B D B D B D B D B D B D
// … 54 more lines

More by Sting