Strudelify
Hanky Panky cover art

1990 · I'm Breathless

Hanky Panky

Madonna

KeyD minorTempo170 bpm
0:00/0:00
// Hanky Panky — Madonna
// 170 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 160 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(170/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 · acoustic bass · "bass"
const bass = note(`<
  ~@8 A B C B@5 C B@4 D E F G D H I B C B@5 C B@4 D E F G D J K L M L N O P Q M L R L M O S I B C B@5 C B@4 D E F G D T
  U L M L N V P Q M L R L M O W I B C X@2 B@3 C B@4 D E F G D T Y L M O M O P Q M L R L M L W Q Z L M L M O P Q Z L M O
  M L P Q Z L M L M O P Q Z L M L M AA
>`.pickRestart({
  A: "b1@7 ~ a1@7 ~", B: "d2@4 f2@4 g2@4 a2@3 g2", C: "d2 f2 g2 a2", D: "bb1 d2 bb1 ab1", E: "a1 db2 e2 a1",
  F: "g1 b1 d2 b1", G: "g2 gb2 f2 a1", H: "a1 db2 e2 ~", I: "b1@8 a1@7 ~",
  J: "a1@4 db2@3 ~ e2@4 ~ g2 ~ f2, ~@12 a2@3 ~", K: "d2 d2@3 gb2@4 a2@4 c3@4, ~ c2 ~@14", L: "d3 c3 a2 gb2",
  M: "d2 gb2 a2 c3", N: "d2@4 gb2@4 a2@5 c3@3", O: "d3@4 c3@4 a2@3 ~ gb2@4", P: "c2 e2 g2 bb2",
  Q: "g2@4 b2@4 a2@4 db3@3 ~", R: "d2@5 gb2@3 a2@4 c3@4", S: "c2@2 e2@2 g2@2 bb2 ~",
  T: "a1@4 db2@4 e2@4 ~ g2 ~ f2, ~@12 a2@3 ~", U: "d2@3 ~ gb2@4 a2@4 c3@4", V: "d3@4 c3@5 a2@3 gb2@4",
  W: "c2@4 e2@4 g2@4 bb2@3 ~", X: "[d2@4 f2@4 g2@4 a2@3 ~ d2@4 f2@4 g2@4 a2@3 g2, ~@15 g2@2 ~@15]/2",
  Y: "d2 [c2,d2] b1 ~ gb2@4 a2@4 ~ c3@3, ~@4 e2 ~@11", Z: "~ [b1,c2] ~ e2 gb2@4 a2@4 c3@4, d2@3 ~@13",
  AA: "~@7 d2 ~@8, ~@4 d3@7 ~@5",
})).s("gm_acoustic_bass").gain(0.4)

// chords · piano
const piano = note("<~ A@8 ~@151>".pickRestart({
  A: "[~@24 f5@4 ~@26 db5@3 ~@7, [d6,f6]@3 ~ [f6,a6]@3 ~ [d6,f6]@3 ~ d6@3 ~ [f5,b5,d6]@3 ~ [g5,d6]@3 ~ [a5,d6]@6 [db5,e5,g5]@3 ~ [e5,g5]@3 ~ [e5,g5]@3 ~ [c5,e5]@3 ~ db5@3 ~ e5@3 ~@11, ~@2 [e6,g6]@3 ~ [e6,g6]@3 ~ [c6,e6]@3 ~ db6@3 ~ e6@3 ~ db6@3 ~@3 [c5,d5,f5]@3 ~ [d5,f5]@3 ~ [d5,f5,a5]@3 ~ [d5,f5]@3 ~ d5@3 ~ [f4,b4,d5]@3 ~ d5@3 ~@9]/8", // Dm F Dm Bdim G5 D5 Dbdim Em …
})).s("gm_piano").gain(0.48).pan(0.6)

// chords · pad metallic · "pad"
const pad_metallic = note("<A@2 B C D E F G ~@152>".pickRestart({
  A: "[d4@23 ~ [c4,e4]@8]/2", B: "[b3,f4]@7 ~ [a3,e4]@8", C: "[g3,d4]@7 ~ [a3,e4]@8",
  D: "a3@7 ~ [bb3,ab4]@3 ~ [a3,g4]@4", E: "[b3,f4]@7 ~ c4@7 ~", F: "b3@7 ~ a3@8", G: "g3 [a3,e4]",
})).s("gm_pad_metallic").gain(0.4)

// chords · brass section · "brass"
const brass_section = note(`<
  ~@8 A ~ B@3 C@6 D@2 E@2 F G H@2 A ~ I@3 J@3 K@2 L M@2 N@2 O G P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK
  AL@3 AM@3 AN@2 N@2 AO G P AP R AQ AR AS V W X AT AU AA AV AC AW AE AX AG AH AI AY AK AL@3 AZ@3 M@2 BA BB@2 BC BD BE R
  BF AR BG V W X Y AU BH AB AC AD AE BI BJ R BK BL BG V BM BN Y BO BF BL AS V BP BQ Y BO BK BR U V BS BT BU R BK BL U BV
  BW
>`.pickRestart({
  A: "~ f5 ~ d5 ab4 g4 ~ f4 e4 db4 ~ a3 g3 ~@3", B: "[~@10 d4 f4 g4 f4 g4@20 g4 f4 d4@2 f4@2 ~@8]/3",
  C: "[[f4,a4,d5]@3 ~ [f4,c5]@3 ~ [f4,b4]@3 ~ c5@2 ~ [f4,d5]@2 ~@2 [f4,a4,d5] ~@11 [f4,a4,d5]@4 ~ [f4,c5]@2 ~@2 [f4,b4]@3 ~ [g4,c5]@2 ~ [a4,d5] ~@15 [f4,a4,d5]@4 ~ c5@2 ~@2 [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5]@2 ~@2 [f4,a4,d5] [f4,c5]@3 ~ [f4,b4]@3 ~ [g4,c5]@2 ~@2, ~@12 g4 ~@2 a4 ~@31 f4@2 ~@19 f4 ~@27]/6", // Dm F5 Fdim Dm F5 Fdim C5 D5 …
  D: "[[f4,a4,d5]@3 ~ [f4,c5]@3 ~ [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5]@2 ~@15]/2", // Dm F5 Fdim C5 Dm
  E: "[[f4,ab4,d5]@12 ~@3 [g4,a4,db5,e5]@7 ~@10]/2", // Ddim A7
  F: "[g4,b4,f5]@2 ~ [g4,b4,f5] ~@3 [g4,b4,f5]@2 ~@2 [g4,b4,d5] ~@4, ~@3 d5@2 ~@11", // G7 G
  G: "[b4,d5,f5] ~@2 [g4,b4,d5,f5] ~@3 [f4,a4,c5]@2 ~@7, g4 ~@7", // Bdim G7 F
  H: "[[bb4,d5] ~@14 [g4,a4,db5,e5]@10 ~@7, f4@3 ~@5]/2", I: "[~@11 [d4,f4] g4 f4 ~ g4@20 [f4,g4] d4@2 ~ f4@2 ~@7]/3",
  J: "[[f4,a4,d5]@3 ~ [f4,c5]@3 ~ [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4] ~@3 [f4,a4,d5] ~@11 [f4,a4,d5]@4 ~ [f4,c5]@2 ~@2 [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5], ~@15 d5@2 ~@31]/3", // Dm F5 Fdim C5 F Dm F5 Fdim …
  K: "[~@15 [f4,a4,d5]@5 [f4,c5]@2 ~@2 [f4,b4]@3 ~ [g4,c5]@2 [f4,a4,d5]@2]/2", // Dm F5 Fdim C5 Dm
  L: "~@2 [f4,a4,d5] ~ [f4,c5]@3 ~ [f4,b4]@3 ~ [g4,c5]@2 ~@2", // Dm F5 Fdim C5
  M: "[[f4,a4,d5]@3 ~ [f4,c5]@3 ~ [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5]@2 ~@2 d5 f5 g5 d5 g5@4 f5@2 ~ d5 ~, ~@23 f5 ~@8]/2", // Dm F5 Fdim C5 Dm
  N: "[~@15 [g4,a4,db5,e5]@7 ~@10]/2", // A7
  O: "[g4,b4,f5]@2 ~ [g4,d5]@2 ~@2 [g4,b4,f5]@2 ~@2 [g4,b4,d5] ~@4, ~@3 [b4,f5] ~@12", // G7 G5 G7 G Bdim
  P: "[ab4,c5,f5] ~@6 [ab4,c5,f5] ~@3 [ab4,c5,f5] ~@3 [ab4,c5,f5]", // Fm
  Q: "~@3 [a4,db5,e5] ~@4 [g4,a4,db5,e5] ~@3 [g4,a4,db5,e5] ~@3, ~@3 g4@2 ~@11", // A A7
  R: "~@3 [gb4,d5]@2 ~@3 [gb4,a4,c5,d5] ~@7, ~@3 a4 ~@12", // D D7
  S: "[gb4,a4,c5,d5] ~@6 [gb4,a4,c5,d5] ~@3 [gb4,a4,c5,d5] ~@4", // D7
  T: "~@3 [gb4,c5]@2 ~@3 [gb4,a4,d5] ~@7, ~@3 [a4,d5] ~@4 c5@2 ~@6", // Gbdim D D5
  U: "[gb4,a4,c5,d5] ~@6 [gb4,a4]@2 ~@2 [a4,c5]@2 ~@3, ~@7 [c5,d5] ~@3 [gb4,d5] ~@4", // D7 Gbm Am Csus2 D
  V: "~ d5 ~ [gb4,a4,c5,d5] ~@4 [gb4,a4,c5,d5] ~@7", // D7
  W: "[gb4,a4,c5,d5] ~@6 [gb4,a4,c5,d5]@2 ~@2 [gb4,d5]@2 ~@3, ~@11 [a4,c5] ~@4", // D7 D Am
  X: "~@3 [g4,bb4,d5,e5]@2 ~@3 [g4,bb4,d5,e5]@2 ~@2 [g4,bb4,d5,e5]@2 ~@2", // Em7b5
  Y: "~@3 [b4,d5,f5]@2 ~@2 a4 [g4,a4,db5] ~@3 [g4,a4,db5]@2 ~@2, ~@3 g4@4 ~ e5@2 ~@2 e5 ~@3", // Bdim A7
  Z: "~@3 [a4,c5,d5] ~@4 [gb4,a4,c5,d5] ~@7, ~@3 gb4@3 ~@10", // D7
  AA: "[gb4,a4,d5] ~@6 [gb4,a4,d5] ~@3 [a4,c5]@2 ~@3, c5@2 ~@5 c5@2 ~@2 [gb4,d5] ~@4", // D Am D
  AB: "~@3 [gb4,a4,c5,d5]@2 ~@3 [gb4,a4,c5,d5]@2 ~@6", // D7
  AC: "[gb4,a4,c5,d5] ~@6 [gb4,a4]@2 ~@2 [gb4,a4,c5,d5]@2 ~@3, ~@7 [c5,d5] ~@8", // D7 Gbm D7 Csus2
  AD: "~@3 [gb4,a4]@2 ~@3 [gb4,a4,c5,d5] ~@7, ~@3 [c5,d5] ~@12", // Gbm D7 Csus2
  AE: "[gb4,a4,c5,d5] ~@6 [gb4,a4,c5,d5]@2 ~@2 [gb4,a4,c5] ~@4, ~@11 d5@2 ~@3", // D7 Gbdim
  AF: "~@3 [g4,bb4,d5,e5]@2 ~@3 [bb4,d5,e5]@2 ~@2 [bb4,d5,e5] ~@3, ~@8 g4 ~@3 g4@2 ~@2", // Em7b5
  AG: "[f4,ab4,bb4,d5]@8 ~ [g4,a4,db5,e5]@7", AH: "[f4,a4,d5] ~@7 [f4,a4,d5] ~@7",
  AI: "~@3 [f4,a4,d5] ~@2 d5 ~ [f4,a4,d5] ~@7", AJ: "~@3 [f4,a4] ~@4 [f4,a4,d5] ~@7, ~@3 d5@2 ~@11",
  AK: "[f4,a4,d5] ~@6 [f4,a4,d5] ~@8", // Dm
  AL: "[[f4,a4,d5]@3 ~ [f4,c5]@3 ~ [f4,b4]@3 ~ c5@2 ~ [f4,a4] ~@3 [f4,a4,d5] ~@11 [f4,a4,d5]@4 ~ [f4,c5]@2 ~@2 [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5], ~@12 g4 ~@2 d5@2 ~@31]/3", // Dm F5 Fdim F Dm F5 Fdim C5 …
  AM: "[~@15 [f4,a4,d5]@5 c5@2 ~@2 [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5]@2 ~@2 [f4,a4,d5] [f4,c5]@3 ~ [f4,b4]@3 ~ [g4,c5]@2 ~@2, ~@20 f4 ~@27]/3", // Dm Fdim C5 Dm F5 Fdim C5
  AN: "[[f4,a4,d5]@3 ~ [f4,c5]@3 ~ [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5]@2 ~@2 d5 f5 g5 ~ d5 g5@4 f5@2 d5 ~, ~@24 f5 ~@7]/2", // Dm F5 Fdim C5 Dm
  AO: "[g4,b4,f5]@2 ~ [g4,d5]@2 ~@2 [g4,b4,f5]@2 ~@2 [b4,d5] ~@4, ~@3 [b4,f5] ~@7 g4@2 ~@3", // G7 G5 G7 Bm Bdim
  AP: "[g4,a4,e5] ~@2 [a4,db5,e5] ~@3 [g4,a4,db5,e5]!2 ~@3 [g4,a4,db5,e5] ~@3, db5@2 ~ g4@2 ~@11", // A7 A A7
  AQ: "[gb4,a4,c5,d5] ~@6 [gb4,a4,d5] ~@3 [gb4,a4,c5,d5] ~@4, ~@7 c5@2 ~@7", // D7 D D7
  AR: "~@3 [gb4,a4,c5]@2 ~@3 [gb4,a4,d5] ~@7, ~@3 d5 ~@4 c5@2 ~@6", // Gbdim D
  AS: "[gb4,a4,c5,d5] ~@6 [gb4,a4]@2 ~@2 [gb4,c5,d5] ~@4, ~@7 [c5,d5] ~@3 a4@2 ~@3", // D7 Gbm D7 Csus2
  AT: "~@3 [b4,d5,f5]@2 ~@2 a4 [g4,a4,e5]@2 ~@2 [g4,a4,db5]@2 ~@2, ~@3 g4@4 ~ db5 ~@3 e5 ~@3", // Bdim A7
  AU: "~@3 [gb4,c5]@3 ~@2 [gb4,a4,c5,d5] ~@7, ~@3 [a4,d5] ~@12", // Gbdim D7 D5
  AV: "~@3 [gb4,a4,c5,d5]@2 ~@3 [gb4,a4,c5]@2 ~@6, ~@8 d5 ~@7", // D7 Gbdim
  AW: "~@3 [gb4,a4,c5]@2 ~@3 [gb4,a4,c5,d5] ~@7, ~@3 d5 ~@12", // Gbdim D7
  AX: "~@3 [g4,bb4,d5,e5]@2 ~@3 [g4,d5,e5] ~@3 [bb4,d5,e5] ~@3, ~@4 bb4 ~ g4 ~", // Em7b5 Em7 Em7b5
  AY: "~@3 [f4,d5]@2 ~@3 [f4,a4,d5] ~@7, ~@3 a4 ~@12", // Dm
  AZ: "[~@15 [f4,a4,d5]@5 [f4,c5]@2 ~@2 [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5]@2 ~@2 [f4,a4,d5] [f4,c5]@3 ~ [f4,b4]@3 ~ [g4,c5]@2 ~@2]/3", // Dm F5 Fdim C5 Dm F5 Fdim C5
  BA: "[ab4,bb4,d5]@10 ~ [ab4,bb4,d5]@2 ~@2 [g4,a4,db5,e5], f4@11 ~@5", // Bb7 A7
  BB: "[~@7 [g4,a4,db5,e5] ~@3 [g4,a4,db5,e5] ~@3 [g4,b4,d5,f5]@16 ~]/2", // A7 G7
  BC: "~@3 [c5,f5]@2 ~@3 [a4,c5,f5] ~@7, ~@3 a4 ~@12", BD: "[f4,ab4,bb4,d5]@7 ~",
  BE: "e5 ~@2 [g4,a4,db5,e5] ~ [a4,e5] ~@2 [a4,db5]@2 ~@2 [g4,a4,db5,e5] ~@3, ~@8 [g4,e5] ~@7", // A7 A5 A A7 C
  BF: "[gb4,a4,c5,d5] ~@6 [gb4,a4,c5,d5] ~@3 [gb4,a4,d5] ~@4, ~@11 c5@2 ~@3", // D7 D
  BG: "[gb4,a4,c5,d5] ~@6 [gb4,a4]@2 ~@2 [gb4,a4,c5]@2 ~@3, ~@7 [c5,d5] ~@3 d5 ~@4", // D7 Gbm Gbdim Csus2
  BH: "[gb4,a4,d5] ~@6 [gb4,a4,c5,d5] ~@3 [a4,c5]@2 ~@3, c5@2 ~@9 [gb4,d5] ~@4", // D D7 Am D
  BI: "~@3 [g4,bb4,d5,e5]@2 ~@3 [g4,bb4,e5] ~@3 [g4,bb4,d5,e5] ~@3, ~@4 d5 ~@3", // Em7b5 Edim Em7b5
  BJ: "~@3 [b4,d5,f5]@2 ~@2 a4 [g4,a4,db5,e5]@2 ~@2 [g4,a4,db5]@2 ~@2, ~@3 g4@4 ~@5 e5 ~@3", // Bdim A7
  BK: "[gb4,a4,c5,d5] ~@6 [gb4,a4,d5] ~@3 [gb4,a4,d5] ~@4, ~@7 c5@2 ~@2 c5@2 ~@3", // D7 D
  BL: "~@3 [a4,c5,d5] ~@4 [gb4,a4,c5,d5] ~@7, ~@3 gb4@2 ~@11", // D7
  BM: "[gb4,a4,c5,d5] ~@6 [gb4,c5,d5] ~@3 [gb4,a4,c5,d5]@2 ~@3, ~@7 a4@2 ~@7", // D7
  BN: "~@3 [g4,bb4,d5,e5]@2 ~@3 [bb4,e5]@2 ~@2 [g4,bb4,d5,e5]@2 ~@2, ~@8 [g4,d5] ~@7", // Em7b5 Bbdim Em7b5 G5
  BO: "~@3 [gb4,d5]@2 ~@3 [a4,c5,d5] ~@7, ~@3 a4 ~@4 gb4@2 ~@6", // D D7
  BP: "[a4,c5,d5] ~@6 [gb4,c5,d5] ~@3 [gb4,d5]@2 ~@3, gb4@2 ~@5 a4@2 ~@2 [a4,c5] ~@4", // D7 D Am
  BQ: "~@3 [g4,bb4,d5,e5]@2 ~@3 [g4,bb4,d5,e5]@2 ~@2 [bb4,d5,e5]@2 ~@2, ~@12 g4 ~@3", // Em7b5
  BR: "~@3 [gb4,c5]@2 ~@3 [gb4,a4,c5,d5] ~@7, ~@3 [a4,d5] ~@12", // Gbdim D7 D5
  BS: "[gb4,a4,c5,d5] ~@6 [a4,c5]@2 ~@2 [gb4,d5]@2 ~@3, ~@7 [gb4,d5] ~@3 [a4,c5] ~@4", // D7 Am D Am
  BT: "~@3 [g4,bb4,d5,e5]@2 ~@3 [g4,bb4,d5,e5]@2 ~@2 [g4,bb4,e5]@2 ~@2, ~@12 d5 ~@3", // Em7b5 Edim
  BU: "~@3 [b4,d5,f5]@2 ~@2 a4 [g4,e5]@2 ~@2 [g4,a4,db5]@2 ~@2, ~@3 g4@4 ~ [a4,db5] ~@3 e5 ~@3", // Bdim C A7 A
  BV: "~ d5 ~ [gb4,c5,d5] ~@4 [gb4,a4,c5,d5] ~@7, ~@3 a4@2 ~@11", // D7
  BW: "~@4 [a4,c5,d5] ~@2 [gb4,c5,d5] ~@8, ~@4 gb4@2 ~ a4@2 ~@7", // D7
})).s("gm_brass_section").gain(0.4).pan(0.8)

// chords · trumpet · "trumpets"
const trumpet = note(`<
  ~@41 A ~@4 B ~ C ~ D E F G B ~ C ~ B E F ~@12 H ~ I@2 ~@3 B ~ C ~ J E F G B ~ C ~ D E F ~@5 K L@4 M N@2 ~@6 B ~ O ~ B
  E F G B ~ C ~ D E F P Q R S T U@2 F G Q R S T U@2 F G Q R S T V@2 F G Q W S T U@2
>`.pickRestart({
  A: "~ d4 ~ c4 d4 f4 ~ d4 f4@4 d4@2 ~ c4", B: "~@11 [a4,c5,d5,gb5] ~@4",
  C: "~@3 [c5,d5,gb5] ~@4 [a4,d5]@2 ~@6, ~@3 a4@2 ~@3 [c5,gb5] ~@7", D: "~@11 [a4,c5,d5] ~@4, ~@11 gb5@2 ~@3",
  E: "~@3 c5 f5@2 ~ d5@2 ~@7", F: "~@11 [g4,bb4,d5,e5] ~@4",
  G: "~@3 [g4,b4,d5,f5]@2 ~@3 [b4,d5,f5] ~@3 [g4,a4,db5,e5]@2 ~@2, ~@4 g4 ~@3", // G7 Bdim A7
  H: "~@3 [d5,f5,a5,d6] f5 g5 f5 g5@4 f5@2 ~ d5 ~", I: "[~@9 d4 ~ c4 d4@2 ~ d4@2 ~@15, ~@4 f4 ~@11]/2",
  J: "~@11 [c5,gb5]@2 ~@3, ~@11 [a4,d5] ~@4", // Cdim D5
  K: "[f3,a3,d4]@3 ~ c4@2 ~@2 [f3,b3]@3 ~ [g3,c4] ~@2 [f3,a3,d4], ~@4 f3 ~@11", // Dm Fdim C5 Dm
  L: "[~@3 [f3,a3,d4] ~@11 [f3,a3,d4]@4 ~ [f3,c4]@2 ~@2 [f3,b3]@3 ~ [g3,c4]@2 ~ [f3,a3,d4]@2 ~@14 [f3,a3,d4]@4 ~ c5@2 ~@2 [f4,b4]@3 ~ [f4,c5] ~@2 [f4,d5], ~@52 f4 ~@11]/4", // Dm F5 Fdim C5 Dm Fdim F5 Dm
  M: "~@3 [a4,d5] c5 ~@3 [f4,b4]@3 ~ [f4,c5]@2 ~@2, ~@3 f4@3 ~@10", // D5 Fdim F5
  N: "[[f4,a4,d5]@3 ~ [f4,c5]@2 ~@2 [f4,b4]@3 ~ g4@2 ~ [a4,d5] ~@3 [d4,f4,a4,d5,f5,a5,d6] [f4,f5] [g4,g5] [f4,f5] [g4,g5]@4 [f4,f5]@2 ~ [d4,d5] ~, ~@12 c5 ~@2 f4@2 ~@15]/2", // Dm F5 Fdim D5 Dm F G F …
  O: "~@3 [a4,d5]@2 ~@3 [a4,d5]@2 ~@6, ~@3 [c5,gb5] ~@4 [c5,gb5] ~@7", // D5 Cdim
  P: "~@3 [g4,b4,d5,f5]@2 ~@3 [b4,d5,f5] ~@3 d4 f4 ~ a4, ~@4 g4 ~ [g4,a4,db5,e5] ~", Q: "d5@12 f4@2 ~ d4",
  R: "~@12 d4 f4@2 [g4,a4]", S: "c5@3 a4 b4@2 ~ a4@2 ~@7", T: "~@12 d4 f4 ~ g4",
  U: "[c5@3 a4 b4@2 ~ a4@2 ~@3 g4@3 gb4@2 ~@3 [gb4,a4,c5,d5]@2 ~ [gb4,a4,c5,d5]@2 ~@7, a4 ~@31]/2", // D7
  V: "[c5@3 a4 b4@2 ~ a4@2 ~@3 g4@3 gb4@2 ~@2 [gb4,a4,c5,d5]@2 ~@2 [gb4,a4,c5,d5]@2 ~@7, a4 ~@31]/2", // D7
  W: "~@12 d4 f4 ~ [g4,a4]", // Gsus2
})).s("gm_trumpet").gain(0.48).pan(0.9)

// chords · alto sax · "sax"
const alto_sax = note(`<
  ~@8 A ~ B@3 C D@2 E@4 ~ F@2 G H I@2 A ~ B@3 J K@4 L M@2 N O ~ P Q R S T U V@2 W@2 X Y Z U AA@2 AB@2 AC ~ AD@3 J AE@5
  AF@2 N O ~ P Q R Y Z AG AH@2 AB@2 AI Y Z U AA@2 AJ@2 AC ~@12 AK@2 AL AM AN AO S AP AQ AR@2 AS@2 AI Y Z U AH@2 AT@2 AU
  AV AW AX AY AZ@2 ~@2 AV AW BA AY BB@2 ~@2 AV AW BC AY BB@2 ~@2 AV BD AX BE BF@2
>`.pickRestart({
  A: "~ f6 ~ d6 ab5 g5 ~ f5 e5 db5 ~ a4 g4 ~@3", B: "[~@11 [d5,f5] g5 f5 ~ g5@20 [f5,g5] d5@2 ~ f5@2 ~@7]/3",
  C: "d5@4 c5 ~@3 b4@4 c5@2 ~ d5", D: "[~@3 d5 ~@11 d5@5 c5 ~@3 b4@4 c5@3 d5]/2",
  E: "[~@15 d5@5 c5@2 ~@2 b4@4 c5@2 ~ d5@4 ~ c5@4 b4@4 c5@2 ~ d5@5 c5@2 ~@2 b4@4 c5 ~@2 d5]/4",
  F: "[[f5,ab5,d6]@12 ~@3 [g5,a5,db6,e6]@7 ~@10]/2", // Ddim A7
  G: "[g5,b5,f6]@2 ~ [g5,b5,f6] ~@3 [g5,b5,f6]@2 ~@2 [g5,b5,d6] ~@4, ~@3 d6@2 ~@11", // G7 G
  H: "[b5,d6,f6] ~@2 [g5,b5,d6,f6] ~@3 [f5,a5,c6]@2 ~@7, g5 ~@7", I: "[[f5,bb5,d6]@12 ~@3 [g5,a5,db6,e6]@10 ~@7]/2",
  J: "[f4,a4,d5]@3 ~ c5@2 ~@2 [f4,b4]@3 ~ g4@2 ~ [f4,a4,d5], ~@4 f4 ~@7 c5 ~@3", // Dm Fdim Dm
  K: "[~@3 [f4,a4,d5] ~@11 [f4,a4,d5]@4 ~ [f4,c5]@2 ~@2 [f4,b4]@3 ~ g4@2 ~ [f4,a4]@2 ~@14 [f4,a4,d5]@4 ~ c5@2 ~@2 [f4,b4]@3 ~ [f4,c5] ~@2 [f4,d5], ~@28 c5 ~@2 d5 ~@20 f4 ~@11]/4", // Dm F5 Fdim F Dm Fdim F5 Dm
  L: "~@3 [a4,d5] c5 ~@3 [f4,b4]@3 ~ [f4,c5]@2 ~@2, ~@3 f4@3 ~@10", // D5 Fdim F5
  M: "[[f4,a4,d5]@3 ~ [f4,c5]@2 ~@2 [f4,b4]@3 ~ g4@2 ~ [a4,d5] ~@3 [d4,f4,a4,d5] f4 g4 f4 g4@4 f4@2 ~ d4 ~, ~@12 c5 ~@2 f4@2 ~@15]/2", // Dm F5 Fdim D5 Dm
  N: "~@3 c5 d5 f5 ~ d5 f5@4 d5@2 ~ f5", O: "~@3 [e5,a5] ~@4 [e5,a5] ~@7", P: "~@11 d5 f5 g5 ~ f5",
  Q: "g5@4 f5@2 ~ g5 ~@8", R: "~@3 g5 f5@2 ~@2 g5@2 ~ e5@2 ~@3", S: "~@3 d5 a4@2 ~@2 c5@3 [a4,c5,d5,gb5] ~ d5@2 ~",
  T: "d5 ~@10 a4 c5@2 ~ a4", U: "d5@2 ~ [c5,d5,gb5] ~ d5@2 ~@2 [c5,d5,gb5] ~@6, ~@3 a4@2 ~@4 a4@2 ~@5",
  V: "[~@3 d5 e5 d5 ~ e5 f5@3 e5 d5@3 d5@3 ~ d5 ~@7 [a4,c5,d5,gb5] ~@4, ~@15 e5 ~@16]/2", // D7
  W: "[~@3 [c5,d5] f5@2 ~ d5 ~ d5@2 a4 c5@3 d5@2 ~@10 [g4,bb4,d5,e5] ~@4, ~@3 a4@2 ~@27]/2", // Csus2 Em7b5
  X: "~@3 [g4,b4,d5,f5]@2 ~@2 [d5,f5] [b4,d5,f5] ~@3 [g4,a4,db5,e5]@2 ~@2, ~@4 g4 ~@3", // G7 Dm Bdim A7
  Y: "~@3 d5 a4@2 ~@2 c5@3 [a4,c5,d5,gb5] d5@2 ~@2", Z: "d5@2 ~@2 d5 ~@6 a4 c5@2 ~ a4",
  AA: "[~@3 d5 e5 d5 ~ e5 f5@3 e5 d5@2 ~ d5@2 ~@2 d5 ~@7 [a4,c5,d5,gb5] ~@4, ~@15 e5 ~@16]/2", // D7
  AB: "[~@3 [c5,d5] f5@2 ~ d5@2 d5@2 a4 c5@3 d5@2 ~@10 [g4,bb4,d5,e5] ~@4, ~@3 a4@2 ~@27]/2", // Csus2 Em7b5
  AC: "~ f6 ~ d6 ab5 g5 ~ [d5,f5] e5 db5 ~ a4 g4 ~@3", AD: "[~@11 [d4,f4] g4 f4 ~ g4@20 [f4,g4] d4 ~@2 f4@2 ~@7]/3",
  AE: "[~@3 [f4,a4,d5] ~@11 [f4,a4,d5]@4 ~ [f4,c5]@2 ~@2 [f4,b4]@3 ~ g4@2 ~ [f4,a4,d5]@2 ~@14 [f4,a4,d5]@4 ~ [f5,c6]@2 ~@2 [f5,b5]@3 ~ [f5,c6] ~@2 f5@2 ~@2 [a5,d6] c6 ~@3 [f5,b5]@3 ~ [f5,c6]@2 ~@2, ~@28 c5 ~@34 d6 ~@3 f5@3 ~@10]/5", // Dm F5 Fdim Dm F5 Fdim F5 D5 …
  AF: "[[f5,a5,d6]@3 ~ [f5,c6]@2 ~@2 [f5,b5]@3 ~ g5@2 ~ [a5,d6] ~@3 [d5,f5,a5,d6] f5 g5 f5 g5@4 f5@2 ~ d5 ~, ~@12 c6 ~@2 f5@2 ~@15]/2", // Dm F5 Fdim D5 Dm
  AG: "d5@2 ~ [c5,d5,gb5] ~ d5@2 ~@2 [a4,d5]@2 ~@5, ~@3 a4@2 ~@4 [c5,gb5] ~@6", // D7 D5 Cdim
  AH: "[~@3 d5 e5 d5 ~ e5 f5@3 e5 d5@3 d5@2 ~@2 d5 ~@7 [a4,c5,d5,gb5] ~@4, ~@15 e5 ~@16]/2", // D7
  AI: "~@3 [g4,b4,d5,f5]@2 ~@2 [d5,f5] [b4,d5,f5] ~@3 [g4,a4,db5]@2 ~@2, ~@8 g4@2 ~@2 e5 ~@3", // G7 Dm Bdim A7
  AJ: "[~@3 [c5,d5] f5@2 ~ d5@2 d5@2 a4 c5@3 d5@2 ~@10 [g4,bb4,d5,e5] ~@4, ~@3 a4@3 ~@26]/2", // Csus2 Em7b5
  AK: "[bb3@14 ~ a3@2 ~@2 d4 e4 g4 ~ [d4,e4] g4@4 e4@2 ~ d4]/2", AL: "g3@15 ~", AM: "~@4 f4 ~ f4 ~", AN: "bb3@13 ~@3",
  AO: "~@3 d4 g4@2 ~@2 g4@2 ~ e4 ~@4", AP: "d5@2 ~@9 a4 c5@2 ~ a4",
  AQ: "d5@2 ~ [c5,d5,gb5] ~ d5@2 ~ [a4,d5]@2 ~@6, ~@3 a4@2 ~@3 [c5,gb5] ~@7", // D7 D5 Cdim
  AR: "[~@3 d5 e5 d5 ~ e5 f5@3 e5 d5@2 ~ d5@3 ~ d5 ~@7 [a4,c5,d5,gb5] ~@4, ~@15 e5 ~@16]/2", // D7
  AS: "[~@3 [c5,d5] f5@2 ~ d5 ~ d5@2 a4 c5@3 d5@2 ~@10 [g4,bb4,d5,e5] ~@4, ~@3 a4@3 ~@26]/2", // Csus2 Em7b5
  AT: "[~@3 [c5,d5] f5@2 ~ d5@2 d5 ~ a4 c5@3 d5@2 ~@10 [g4,bb4,d5,e5] ~@4, ~@3 a4@2 ~@27]/2", // Csus2 Em7b5
  AU: "~@3 [g4,b4,g5,b5,d6,f6]@2 ~@2 [d5,f5] [b4,d5,f5,b5,d6,f6] ~@3 [d4,d5,e5] [f4,f5] ~ [a4,a5], ~@3 [d5,f5] ~@4 [g4,g5]@2 ~@2 [g4,a4,db5,g5,a5,db6,e6]@2 ~@2", // G7 Dm Bdim Dsus2 F A Dm G …
  AV: "[d5,d6]@12 [f4,f5]@2 ~ [d4,d5]", AW: "~@12 [d4,d5] [f4,f5] ~ [g4,a4,g5,a5]",
  AX: "[c5,c6]@3 [a4,a5] [b4,b5]@2 ~ [a4,a5] ~@8", AY: "~@12 [d4,d5] [f4,f5] ~ [g4,g5]",
  AZ: "[[a4,a5] [c5,c6]@2 [a4,a5] [b4,b5]@2 ~ [a4,a5]@2 ~@3 [g4,g5]@3 [gb4,gb5]@2 ~@3 [gb4,a4,c5,d5]@2 ~ [gb4,a4,c5,d5]@2 ~@7]/2", // A C A B A G Gb D7
  BA: "[c5,c6]@3 [a4,a5] [b4,b5]@2 ~ a5@2 ~@7, ~@7 a4 ~@8", // C A B
  BB: "[[c5,c6]@3 [a4,a5] [b4,b5]@2 ~ [a4,a5]@2 ~@3 [g4,g5]@3 [gb4,gb5]@2 ~@3 [gb4,a4,c5,d5]@2 ~ [gb4,a4,c5,d5]@2 ~@7, [a4,a5] ~@31]/2", // C A B A G Gb D7 A
  BC: "[c5,c6]@3 [a4,a5] [b4,b5]@2 ~ [a4,a5]@2 ~@7", BD: "~@12 [d4,d5] f5@2 [g4,a4,g5,a5], ~@13 f4 ~@2",
  BE: "~@12 [d4,d5] [f4,f5] g4 [a4,g5,a5]", // D F A7
  BF: "[[c5,c6]@3 [a4,a5] [b4,b5]@2 ~ [a4,a5]@2 ~@3 [g4,g5]@3 [gb4,gb5]@2 ~@3 [gb4,a4]@2 ~ [gb4,a4,c5,d5]@2 ~@7, ~@20 [c5,d5] ~@11]/2", // C A B A G Gb Gbm D7 …
})).s("gm_alto_sax").gain(0.48).pan(0.7)

// chords · distortion guitar · "guitar"
const distortion_guitar = note(`<
  ~@14 A ~ B ~@3 C D E F G H I ~ J ~ J K@2 L@2 M@2 ~ J N@2 O P Q R S@2 T U@2 V W X Y Z AA AB AC AD AE AF ~@5 AG L@2 M@2
  ~ J N@2 O P Q AH AI@2 AJ U@2 V W X Y Z AA AB AC AD AE AF ~@5 AG L@2 M@2 ~ J AK@2 ~@5 AL AM U@2 V W X Y Z AA AB AC AD
  AE AF Y AN AJ AO AP V W X AQ AN AR U@2 V W X AS AT AM U@2 V W X AU AT AJ U@2 V AV
>`.pickRestart({
  A: "~@3 [f4,a4,d5] ~@4 [f4,a4,d5] ~@7", B: "~@3 [f4,a4,d5]@2 ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3",
  C: "~@4 f4 ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3, ~@3 [f4,a4,d5]@2 ~@11", // Dm
  D: "[f4,ab4,bb4,d5]@3 ~ [f4,ab4,bb4,d5] ~@6 [f4,ab4,bb4,d5] ~ g4 ~ [g4,a4,db5,e5]", // Bb7 A7
  E: "~@3 [g4,a4,db5,e5] ~@3 [g4,a4,db5,e5] ~@3 [g4,a4,db5,e5] ~@4", // A7
  F: "g4 ~@3 g4@4 [b4,d5,f5] ~@3 [g4,b4,d5,f5] ~@3, ~@3 [g4,b4,d5,f5]@2 ~@11", // Bdim G7
// … 112 more lines

More by Madonna