Strudelify

Unplugged 02 Mad About You

Sting

KeyD majorTempo104 bpm
0:00/0:00
// Unplugged 02 Mad About You — Sting
// 104 bpm, 4/4, key D 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 96 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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 · "Fields Gold"
const bass = note(`<
  ~@2 A@8 B C D E A F G H I J E A K C E A F G E A C@2 E A F G L I M E A C D E A N G O D M D M D J P J Q J E A C@2 E R N
  S E A C@2 E A F G E A C@2 E B F G M G J G J@7 T ~@2
>`.pickRestart({
  A: "b1@5 ~ b1@5 ~ b1@2 a1@2", B: "b1@4 ~@2 b1@5 ~ b1@2 a1@2", C: "g1@5 ~ g1@9 ~", D: "g1@5 ~ g1@10",
  E: "d2@5 ~ d2@5 ~ d2@2 c#2@2", F: "g1@5 ~ d2@9 ~", G: "b1@5 ~ a1@9 ~", H: "b1@5 ~ b1@8 ~@2", I: "b1@5 ~ g1@9 ~",
  J: "d2@5 ~ d2@9 ~", K: "g1@5 ~ g1@8 ~@2", L: "b1@5 ~ b1@9 ~", M: "d2@5 ~ d2@10", N: "g1@6 d2@9 ~",
  O: "d2@5 ~ d2@5 ~ d2@4", P: "b1@3 a1@5", Q: "b1@5 ~ a1@10", R: "b1@5 ~ b1@6 b1@2 a1@2", S: "b1@6 a1@9 ~", T: "d2",
})).s("gm_fretless_bass").gain(0.5)

// chords · pad warm
const pad_warm = note(`<
  ~@2 A@8 B C@2 D B E F G@4 H C@2 D I E F J I C@2 D I E F K@4 H C@2 D B E F L@5 M@2 N J N O@2 I C@2 J B E F J I C@2 D B
  E F P@2 C@2 D B E F J F J F Q@7 R@2 ~
>`.pickRestart({
  A: "[b2,a3,d4]/8", B: "[a3,c#4,f#4]", C: "[b3,d4,g4]/2", D: "[a3,d4,f#4]", E: "[b3,d4,g4]@3 [f#3,a3,d4]@5",
  F: "[g3,b3,d4]@3 [a3,c#4,e4]@5", G: "[~ f#3, [a3,d4], ~@3 a4@13]/4", H: "c#4@3 b3@5, [a3,f#4]", I: "[b3,c#4,f#4]",
  J: "[f#3,a3,d4]", K: "[a4 f#4, [a3,d4]]/4", L: "[a3@10 f#3@2 b2@4 [d3,f#4]@3 ~, d4@19 ~, ~@12 a3@7 ~]/5",
  M: "[b2@4 [d3,f#4]@3 ~, [a3,d4,a4]@7 ~]/2", N: "[b3,d4,f#4]@3 [a3,c#4,e4]@5", O: "[[f#3,a3,d4]@7 ~]/2",
  P: "[~ [a3,c#4,f#4], [a3,d4] ~, ~@3 a4@5]/2", // F#m D5
  Q: "[[a2,f#3]@3 [b2,g3]@3 [a2,f#3]@2 [a2,f#3]@3 [b2,g3]@3 [a2,f#3]@2 [a2,f#3]@3 [b2,g3]@3 [a2,f#3]@2 [a2,f#3]@3 [b2,g3]@3 [a2,f#3]@2 [a2,f#3]@3 [b2,g3]@3 [a2,f#3]@2 [a2,f#3]@3 [b2,g3]@3 [a2,f#3]@2 [a2,f#3]@3 [b2,g3]@3 [a2,f#3]@2, d4]/7", // D Em D Em D Em D Em …
  R: "[a2,f#3]/2", // D
})).s("gm_pad_warm").gain(0.3)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~ A@3 B@2 C@8 ~@14 D@6 E F@2 G H I J@6 K L@6 M@3 N@3 O P Q@2 O R S@2 T@6 U@8 V@5 W@7 X@2 ~
>`.pickRestart({
  A: "[~ f#5@2, ~@7 b2@16 ~, ~@15 [a3,d4]@32 ~]/3", // D5
  B: "[~@31 a3, ~ e4 a3 d4 e4 a3 d4 e4 a3 d4 e4 a3 d4 e4 a3 d4, ~@3 d4@2 e4@2 a3@2 d4@2 e4@2 a3@2 d4@2 e4@2 a3@2 d4@2 e4@2 a3@2 d4@2 e4@3]/2",
  C: "[~@47 a3@3 ~@78, e4@2 a3@2 c#4@2 e4@2 a3@2 c#4@2 e4@2 a3@2 b3@2 e4@2 a3@2 b3@2 e4@2 a3@2 b3@2 e4@2 a3@2 b3@2 e4@2 a3@2 b3@2 e4@2 a3@2 b3@3 ~@79, ~ c#4@2 e4@2 a3@2 c#4@2 e4@2 a3@2 c#4@115, ~@15 e4@2 a3@2 b3@2 e4@2 a3@2 b3@2 e4@2 a3@2 b3@2 e4@2 a3@2 b3@2 e4@2 a3@2 b3@2 e4@3 ~@80]/8",
  D: "[~@12 d4@2 ~@2 b3@3 a3@3 a3@6 d4@2 ~@2 b3@3 a3@3 b3@10 a3 a3@3 a3@2 a3@6 d3@2 e3 e3@3 a3@10 d4@2 ~@2 b3@2 a3@4 a3@6 d4@2 ~@2, ~@7 c#4@8 c#4@24 c#4@9]/6",
  E: "b3@2 a3@3 ~ a3@6 ~ e3 ~ f#3", F: "[g3@3 f#3@3 f#3@4 e3@2 d3@20]/2", G: "~@3 a3@5",
  H: "d3@2 [f#3,d4] [g3,d4]@3 [f#3,d4]@2", I: "[d3,a3]",
  J: "[~@18 g4 ~@13 g4 ~ g4 d4 ~@27 d4@2 ~@14 d4@2 ~@8 a4 f#4 ~@4 a4, ~ a4@2 d4@2 f#4@2 a4@2 d4@2 f#4@2 a4@2 d4@2 a4@3 a4@2 d4@2 g4@2 a4@2 d4@2 g4@2 ~ a4@3 a4@2 d4@2 g4@2 a4@2 d4@2 g4@2 f#4@2 f#4@3 f#4@3 f#4@3 f#4@3 f#4@3 ~ f#4@3 f#4@3 f#4@3 f#4@3 f#4@3 ~ g4@3 g4@3 f#4@2 ~@3 f#4@3, ~@2 f#4@2 a4@2 d4@2 f#4@2 a4@2 d4@2 f#4@2 g4@2 ~ d4@2 g4@2 a4@2 d4@2 g4@2 a4@2 d4@4 ~@2 g4@2 a4@2 d4@2 g4@2 a4@2 d4@4 d4@3 d4@3 d4@3 d4@3 ~@4 d4@3 d4@3 d4@3 d4@3 ~@4 d4@3 d4@3 ~@2 d4@3 d4@2, ~@49 a4@3 a4@3 a4@3 a4@3 a4@3 ~ a4@3 a4@3 a4@3 a4@3 a4@3 ~ a4@3 a4@3 a4@2 ~@3 a4@3 ~]/6",
  K: "d4 ~@3 a4 ~@3 d4 ~@6 e4, ~ a4@2 d4@3 d4@2 ~ a3@2 d4@2 e4@2 ~, ~@2 g4@3 g4@2 e4@3 e4@2 a3@2 d4@2",
  L: "[a3 ~ d4 ~@92 d4, ~ e4@2 a3@2 d4@2 e4@2 a3@2 d4@2 e4@2 a3@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 ~, ~@2 e4 a3 d4 e4 a3 d4 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2, ~@9 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3]/6",
  M: "[~@7 d4@2 ~@3 f#4@2 g4@6 f#4@2 f#4@4 e4@2 d4@20, a4!2 ~@10, ~ d4@2 d4@2 d4@2 ~@41, ~ a3@2 a3@2 ~@19]/3",
  N: "[g4@2 f#4 f#4@2 e4 d4@14 ~@2 d5 c#5]/3", O: "b4@3 a4@3 a4@6 d5@2 c#5@2", P: "b4@3 a4@3 a4 a4@7 d4@2",
  Q: "[b4@4 a4@2 a4@6 d4@2 e4 e4@11 ~@2 d5@2 c#5@2]/2", R: "b4@3 a4@3 a4@7 e4 ~ f#4",
  S: "[g4@2 f#4 f#4@3 e4 d4@7 ~@2]/2",
  T: "[~@17 g4 ~@14 g4 d4 ~ g4 d4 ~@26 d4@2 ~@23 a4 f#4 ~@4 a4@2, ~ a4@2 d4@2 f#4@2 a4@2 d4@2 f#4@2 a4@2 d4@3 d4@2 g4@2 a4@2 d4@2 g4@2 a4@2 d4@3 ~@5 g4@2 a4@2 d4@2 g4@2 a4@2 f#4@2 f#4@3 f#4@3 e4@3 e4@3 e4@3 ~ f#4@3 f#4@3 f#4@3 f#4@3 f#4@3 g4@3 g4@3 f#4@2 ~@3 f#4@3 ~, ~@2 f#4@2 a4@2 d4@2 f#4@2 a4@2 d4@2 f#4@2 a4@3 a4@2 d4@2 g4@2 a4@2 d4@2 g4@2 a4@3 a4@2 ~ a4@2 d4@2 g4@2 a4@2 d4@4 a4@3 a4@3 a4@3 a4@3 a4@3 ~ a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@2 ~@3 a4@3 ~@2, ~@47 g4@3 ~ d4@3 d4@3 d4@3 d4@3 ~@4 d4@3 d4@3 d4@3 d4@3 d4@3 d4@3 d4@3 ~@2 d4@3 d4@3]/6",
  U: "[d4 ~@3 a4 ~@3 d4 ~@6 e4 a3 ~ d4 ~@12 a3@2 ~@16 g4 ~@14 g4 d4 ~ g4 d4 ~@26 d4@2 ~@23 a4 f#4 ~@4 a4@2, ~ a4@2 d4@3 d4@2 ~ a3@2 d4@2 e4@2 ~@2 e4@3 e4@2 a3@2 d4@2 e4@2 a3@2 d4@3 ~ f#4@2 a4@2 d4@2 f#4@2 a4@2 d4@2 f#4@2 a4@3 a4@2 d4@2 g4@2 a4@2 d4@2 g4@2 a4@3 a4@2 ~ a4@2 d4@2 g4@2 a4@2 d4@3 f#4@2 f#4@3 f#4@3 e4@3 e4@3 e4@3 ~ f#4@3 f#4@3 f#4@3 f#4@3 f#4@3 g4@3 g4@3 f#4@2 ~@3 f#4@3 ~, ~@2 g4@3 g4@2 e4@3 e4@2 a3@2 d4@4 ~ a3@2 d4@2 e4@2 a3@2 d4@2 e4@3 ~ a4@2 d4@2 f#4@2 a4@2 d4@2 f#4@2 a4@2 d4@3 d4@2 g4@2 a4@2 d4@2 g4@2 a4@2 d4@3 ~@5 g4@2 a4@2 d4@2 g4@2 a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 ~ a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@2 ~@3 a4@3 ~@2, ~@79 g4@3 ~ d4@3 d4@3 d4@3 d4@3 ~@4 d4@3 d4@3 d4@3 d4@3 d4@3 d4@3 d4@3 ~@2 d4@3 d4@3]/8",
  V: "[d4 ~@3 a4 ~@3 d4 ~@6 e4 a3 ~ d4 ~@13 d4 ~@3 a4 ~@3 d4 ~@6 e4 a3 ~ d4 ~@13 d4 ~@3 a4 ~@3 d4 ~@5 d4@2, ~ a4@2 d4@3 d4@2 ~ a3@2 d4@2 e4@2 ~@2 e4@3 e4@2 a3@2 d4@2 e4@2 a3@2 d4@2 ~ a4@2 d4@3 d4@2 ~ a3@2 d4@2 e4@2 ~@2 e4@3 e4@2 a3@2 d4@2 e4@2 a3@2 d4@2 ~ a4@2 d4@3 d4@2 ~ a3@2 d4@2 e4@3, ~@2 g4@3 g4@2 e4@3 e4@2 a3@2 d4@4 ~ a3@2 d4@2 e4@2 a3@2 d4@2 e4@2 a3@3 g4@3 g4@2 e4@3 e4@2 a3@2 d4@4 ~ a3@2 d4@2 e4@2 a3@2 d4@2 e4@2 a3@3 g4@3 g4@2 e4@3 e4@2 a3@3 ~]/5",
  W: "d3@2 [f#3,d4] [g3,d4]@3 f#3@2", X: "[d3,a3]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.07)

// other · acoustic guitar nylon
const acoustic_guitar_nylon_2 = note("<~@58 A B C D@2 B E F@2 ~@19 G@7 H@3>".pickRestart({
  A: "~@6 d4 c#4", B: "b3@3 a3@3 a3@6 d4@2 c#4@2", C: "b3@3 a3@3 b3@8 d3@2", D: "[b3@2 a3 a3@3 d3 f#3@7 d4 c#4]/2",
  E: "b3@3 a3@3 a3@7 e3 ~ f#3", F: "[g3@2 f#3 f#3@3 e3 d3@7 ~@2]/2",
  G: "[~@3 d3@4 [f#3,d4]@2 [g3,d4]@6 f#3@4 d3@4 [f#3,d4]@2 [g3,d4]@6 f#3@4 d3@4 [f#3,d4]@2 [g3,d4]@6 f#3@4 d3@4 [f#3,d4]@2 [g3,d4]@6 f#3@4 d3@4 [f#3,d4]@2 [g3,d4]@6 f#3@4 d3@4 [f#3,d4]@2 [g3,d4]@6 f#3@4 d3@4 [f#3,d4]@2 [g3,d4]@6 f#3]/7", // D G5 D G5 D G5 D G5 …
  H: "[~@3 [d3,a3]@32 ~@13]/3", // D5
})).s("gm_acoustic_guitar_nylon").gain(0.04)

// other · bagpipe
const bagpipe = note("<~@16 A@3 B C@2 ~@13 A@3 D@3 ~@55>".pickRestart({
  A: "[~@8 d5@30 c#5 b4 a4@3 [a4,b4] g4@4]/3", B: "a4@6 g4 d5", C: "f#4/2", D: "a4/3",
})).s("gm_bagpipe").gain(0.25).pan(0.3)

// other · tinkle bell
const tinkle_bell = note("<~@2 [e8 ~@5 e8 ~ e8 ~@5 e8 ~]!91 [e8 ~@15] ~@2>").s("gm_tinkle_bell").gain(0.01).pan(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C ~@2
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "x ~@2 x ~@4", C: "x",
})).gain(0.15)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@7 x",
})).gain(0.1)

// drums · rim
const rim = s("rim").struct("<~@2 [~ x ~ x]!91 ~@3>").gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!93 x ~@2>").gain(0.2)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@2 [~ x ~ x ~ x ~ x]!91 ~@3>").gain(0.1)

stack(
  bass, pad_warm, acoustic_guitar_nylon, acoustic_guitar_nylon_2, bagpipe, tinkle_bell, kick, kick_soft, rim, hihat,
  hihat_soft
)

More by Sting