Strudelify
Hanky Panky cover art

1990 · I'm Breathless (Music from and Inspired By the Film Dick Tracy)

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, A@4 for four bars: 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 A B C B@5 C B@4 D E F G D I J K L K M K N O L K P K L K Q A B C B@5 C B@4 D E F G D I
  L K L K M R N O L K P K L K Q A B C B@5 C B@4 D E F G D I S K L K L T N O L K P K L K Q O U K L K L K N O U K L K L K
  N O U K L K L K N O U K L K L V
>`.pickRestart({
  A: "b1@8 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: "a1@4 db2@4 e2@4 ~ g2 ~ f2, ~@12 a2@3 ~",
  J: "d2 d2@3 gb2@4 a2@4 c3@4, ~ c2 ~@14", K: "d3 c3 a2 gb2", L: "d2 gb2 a2 c3", M: "d2@4 gb2@4 a2@5 c3@3",
  N: "c2 e2 g2 bb2", O: "g2@4 b2@4 a2@4 db3@3 ~", P: "d2@5 gb2@3 a2@4 c3@4", Q: "c2@4 e2@4 g2@4 bb2@3 ~",
  R: "d3@4 c3@5 a2@3 gb2@4", S: "d2 [c2,d2] b1 ~ gb2@4 a2@4 ~ c3@3, ~@4 e2 ~@11", T: "d3@4 c3@4 a2@3 ~ gb2@4",
  U: "~ [b1,c2] ~ e2 gb2@4 a2@4 c3@4, d2@3 ~@13", V: "~@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@3 D@3 E@2 F@2 G H I@2 A ~ J@3 C@3 K@2 L M@2 N@2 G H O P Q R S T U V W X S R Y Z S V AA AB AC AD AE AF
  C@3 D@3 AG@2 N@2 G H O AH Q R S T U V W AI S T Y Z S V AA AB AC AD AE AF C@3 D@3 M@2 AJ AK@2 AL AM AN Q R S T U V W X
  S R Y Z S V AA AO Q R S T U T W X Q R S T U T W X Q R S T U T W AP Q R S T AQ AR
>`.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 ~ [g4,c5]@2 ~ [f4,a4,d5]@2 ~@2 [f4,a4,d5] ~@11 [f4,a4,d5]@4 ~ [f4,c5]@2 ~@2 [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5]]/3", // Dm F5 Fdim C5 Dm F5 Fdim C5 …
  D: "[~@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
  E: "[[f4,a4,d5]@3 ~ [f4,c5]@3 ~ [f4,b4]@3 ~ [g4,c5]@2 ~ [f4,a4,d5]@2 ~@15]/2", // Dm F5 Fdim C5 Dm
  F: "[[f4,ab4,d5]@12 ~@3 [g4,a4,db5,e5]@7 ~@10]/2", // Ddim A7
  G: "[g4,b4,f5]@2 ~ [g4,b4,f5] ~@3 [g4,b4,f5]@2 ~@2 [g4,b4,d5] ~@4, ~@3 d5@2 ~@11", // G7 G
  H: "[b4,d5,f5] ~@2 [g4,b4,d5,f5] ~@3 [f4,a4,c5]@2 ~@7, g4 ~@7", // Bdim G7 F
  I: "[[bb4,d5] ~@14 [g4,a4,db5,e5]@10 ~@7, f4@3 ~@5]/2", J: "[~@11 [d4,f4] g4 f4 ~ g4@20 [f4,g4] d4@2 ~ f4@2 ~@7]/3",
  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", O: "[ab4,c5,f5] ~@6 [ab4,c5,f5] ~@3 [ab4,c5,f5] ~@3 [ab4,c5,f5]",
  P: "~@3 [a4,db5,e5] ~@4 [g4,a4,db5,e5] ~@3 [g4,a4,db5,e5] ~@3, ~@3 g4@2 ~@11", // A A7
  Q: "~@3 [gb4,d5]@2 ~@3 [gb4,a4,c5,d5] ~@7, ~@3 a4 ~@12", // D D7
  R: "[gb4,a4,c5,d5] ~@6 [gb4,a4,d5] ~@3 [gb4,a4,d5] ~@4, ~@7 c5@2 ~@2 c5@2 ~@3", // D7 D
  S: "~@3 [a4,c5,d5] ~@4 [gb4,a4,c5,d5] ~@7, ~@3 gb4@2 ~@11", // D7
  T: "[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
  U: "~ d5 ~ [gb4,a4,c5,d5] ~@4 [gb4,a4,c5,d5] ~@7", // D7
  V: "[gb4,a4,c5,d5] ~@6 [gb4,a4,c5,d5]@2 ~@2 [gb4,d5]@2 ~@3, ~@11 [a4,c5] ~@4", // D7 D Am
  W: "~@3 [g4,bb4,d5,e5]@2 ~@3 [g4,bb4,d5,e5]@2 ~@2 [g4,bb4,d5,e5]@2 ~@2", // Em7b5
  X: "~@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
  Y: "~@3 [gb4,a4,c5,d5]@2 ~@3 [gb4,a4,c5,d5]@2 ~@6", // D7
  Z: "[gb4,a4,c5,d5] ~@6 [gb4,a4]@2 ~@2 [gb4,a4,c5,d5]@2 ~@3, ~@7 [c5,d5] ~@8", // D7 Gbm D7 Csus2
  AA: "~@3 [g4,bb4,d5,e5]@2 ~@3 [bb4,d5,e5]@2 ~@2 [bb4,d5,e5] ~@3, ~@8 g4 ~@3 g4@2 ~@2", // Em7b5
  AB: "[f4,ab4,bb4,d5]@8 ~ [g4,a4,db5,e5]@7", AC: "[f4,a4,d5] ~@7 [f4,a4,d5] ~@7",
  AD: "~@3 [f4,a4,d5] ~@2 d5 ~ [f4,a4,d5] ~@7", AE: "~@3 [f4,a4] ~@4 [f4,a4,d5] ~@7, ~@3 d5@2 ~@11",
  AF: "[f4,a4,d5] ~@6 [f4,a4,d5] ~@8", // Dm
  AG: "[[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
  AH: "[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
  AI: "~@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
  AJ: "[ab4,bb4,d5]@10 ~ [ab4,bb4,d5]@2 ~@2 [g4,a4,db5,e5], f4@11 ~@5", // Bb7 A7
  AK: "[~@7 [g4,a4,db5,e5] ~@3 [g4,a4,db5,e5] ~@3 [g4,b4,d5,f5]@16 ~]/2", // A7 G7
  AL: "~@3 [c5,f5]@2 ~@3 [a4,c5,f5] ~@7, ~@3 a4 ~@12", AM: "[f4,ab4,bb4,d5]@7 ~",
  AN: "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
  AO: "~@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
  AP: "~@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
  AQ: "~ d5 ~ [gb4,c5,d5] ~@4 [gb4,a4,c5,d5] ~@7, ~@3 a4@2 ~@11", // D7
  AR: "~@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 ~ B D E F B ~ C ~ B D E ~@12 G ~ H@2 ~@3 B ~ C ~ B D E F B ~ C ~ B D E ~@5 I J@4 K L@2 ~@6 B ~ C ~ B
  D E F B ~ C ~ B D E M N O P Q R@2 E F N O P Q R@2 E F N O P Q S@2 E F N O P Q R@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: "~@3 c5 f5@2 ~ d5@2 ~@7",
  E: "~@11 [g4,bb4,d5,e5] ~@4", F: "~@3 [g4,b4,d5,f5]@2 ~@3 [b4,d5,f5] ~@3 [g4,a4,db5,e5]@2 ~@2, ~@4 g4 ~@3",
  G: "~@3 [d5,f5,a5,d6] f5 g5 f5 g5@4 f5@2 ~ d5 ~", H: "[~@9 d4 ~ c4 d4@2 ~ d4@2 ~@15, ~@4 f4 ~@11]/2",
  I: "[f3,a3,d4]@3 ~ c4@2 ~@2 [f3,b3]@3 ~ [g3,c4] ~@2 [f3,a3,d4], ~@4 f3 ~@11", // Dm Fdim C5 Dm
  J: "[~@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
  K: "~@3 [a4,d5] c5 ~@3 [f4,b4]@3 ~ [f4,c5]@2 ~@2, ~@3 f4@3 ~@10", // D5 Fdim F5
  L: "[[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 …
  M: "~@3 [g4,b4,d5,f5]@2 ~@3 [b4,d5,f5] ~@3 d4 f4 ~ a4, ~@4 g4 ~ [g4,a4,db5,e5] ~", N: "d5@12 f4@2 ~ d4",
  O: "~@12 d4 f4@2 [g4,a4]", P: "c5@3 a4 b4@2 ~ a4@2 ~@7", Q: "~@12 d4 f4 ~ g4",
  R: "[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
  S: "[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
})).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 V@2 W@2 AA ~ AB@3 J AC@5
  AD@2 N O ~ P Q R Y Z U V@2 W@2 X Y Z U V@2 W@2 AA ~@12 AE@2 AF AG AH AI S T AJ V@2 W@2 X Y Z U V@2 AK@2 AL AM AN AO AP
  AQ@2 ~@2 AM AN AO AP AR@2 ~@2 AM AN AO AP AR@2 ~@2 AM AS AO AT AU@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@2 ~ d5@2 ~@2 d5 ~@7 [a4,c5,d5,gb5] ~@4, ~@15 e5 ~@16]/2", // D7
  W: "[~@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
  X: "~@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
  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: "~ f6 ~ d6 ab5 g5 ~ [d5,f5] e5 db5 ~ a4 g4 ~@3", AB: "[~@11 [d4,f4] g4 f4 ~ g4@20 [f4,g4] d4 ~@2 f4@2 ~@7]/3",
  AC: "[~@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 ~ [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 ~@2 d5 ~@31 d6 ~@3 f5@3 ~@10]/5", // Dm F5 Fdim F Dm F5 Fdim F5 …
  AD: "[[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
  AE: "[bb3@14 ~ a3@2 ~@2 d4 e4 g4 ~ [d4,e4] g4@4 e4@2 ~ d4]/2", AF: "g3@15 ~", AG: "~@4 f4 ~ f4 ~", AH: "bb3@13 ~@3",
  AI: "~@3 d4 g4@2 ~@2 g4@2 ~ e4 ~@4", AJ: "d5@2 ~ [c5,d5,gb5] ~ d5@2 ~ [a4,d5]@2 ~@6, ~@3 a4@2 ~@3 [c5,gb5] ~@7",
  AK: "[~@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
  AL: "~@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 …
  AM: "[d5,d6]@12 [f4,f5]@2 ~ [d4,d5]", AN: "~@12 [d4,d5] [f4,f5] ~ [g4,a4,g5,a5]",
  AO: "[c5,c6]@3 [a4,a5] [b4,b5]@2 ~ [a4,a5] ~@8", AP: "~@12 [d4,d5] [f4,f5] ~ [g4,g5]",
  AQ: "[[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
  AR: "[[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
  AS: "~@12 [d4,d5] f5@2 [g4,a4,g5,a5], ~@13 f4 ~@2", AT: "~@12 [d4,d5] [f4,f5] g4 [a4,g5,a5]",
  AU: "[[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]/2", // C A B A G Gb 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@4 L@2 ~ J M@2 N O P Q R@2 S T@2 U V W X Y Z AA AB AC AD AE ~@5 AF K@2 L@2 ~ J
  M@2 N O P Q AG@2 AH T@2 U V W X Y Z AA AB AC AD AE ~@5 AF K@2 L@2 ~ J AI@2 ~@5 AJ S T@2 U V W X Y Z AA AB AC AD AE X
  AK AH AL AM U V W X AK AH T@2 U V W X AN S T@2 U V W X AN AH T@2 U AO
>`.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
  G: "~@3 [g4,b4,d5,f5]@2 ~@3 [a4,c5] ~@3 [f4,a4,c5]@2 ~@2, ~@5 f4@5 ~@6", // G7 Am F
  H: "~@8 [ab4,bb4,d5] ~@3 [f4,ab4,bb4,d5]@2 ~@2, ~@3 [f4,ab4,bb4,d5]@2 ~@11, ~@2 f4@3 ~@3", // Bb7
  I: "[db5,e5]@3 ~ [a4,db5,e5]@2 ~@2 [g4,a4,db5,e5]@2 ~@6, g4 ~@3", J: "[f4,a4,d5]@13 ~@2 [f4,a4,d5]",
  K: "[~@15 [f4,a4,d5]@14 ~@2 [f4,a4,d5]]/2", L: "[~@15 [f4,a4,d5]@9 ~@8]/2",
  M: "[~@15 [f4,ab4,bb4,d5]@6 ~@2 [f4,ab4,bb4,d5] ~@4 [f4,ab4,bb4,d5] ~@3]/2", // Bb7
  N: "~@3 [g4,a4,db5,e5]@3 ~@2 [g4,a4,db5,e5]@2 ~@2 [g4,a4,db5,e5] ~@3", // A7
  O: "~@3 [g4,b4,d5,f5]@2 ~@3 [g4,b4,d5,f5]@2 ~@2 [g4,b4,d5,f5]@2 ~@2", // G7
  P: "~@3 [g4,b4,d5,f5]@2 ~@3 [c5,f5]@2 ~@2 [a4,c5,f5] ~@3, ~@5 a4@5 ~@6", // G7 F5 F
  Q: "~@3 [ab4,bb4] ~@4 [ab4,bb4,d5] ~@3 [f4,ab4,bb4,d5] ~@3, ~@3 f4@7 ~@6, ~@3 d5@2 ~@11", // Absus2 Bb7
  R: "[[g4,a4,db5,e5]@3 ~ [g4,a4,db5,e5]@2 ~@5 g4 g4@2 ~ a4@5 [c5,d5] ~@6 [a4,c5,d5,gb5]@2 a4 ~@2, ~@11 [a4,db5,e5]@4 ~@17]/2", // A7 Csus2 D7 A
  S: "[a4,c5,d5,gb5]@2 ~@2 [a4,c5,d5,gb5] ~@6 [a4,d5,gb5]@3 gb5 ~, ~@11 c5 ~@4", // D7 D
  T: "[[a4,c5,d5,gb5] ~@3 [a4,c5,d5,gb5] ~@6 [a4,c5,d5,gb5] ~@3 [a4,c5,d5,gb5]@2 ~@11 a4@4, ~@27 [a4,c5,d5,gb5]@2 ~@3]/2", // D7
  U: "[c5,d5,gb5] ~@3 [a4,c5,d5,gb5] ~@6 [a4,c5,d5,gb5]@2 ~@3", // D7
  V: "[a4,c5,d5,gb5] ~@6 [a4,c5,d5,gb5]@2 ~@2 [a4,c5,d5,gb5] ~@4", W: "[g4,bb4,d5,e5]@5 ~@2 [g4,bb4,d5,e5]@2 ~@7",
  X: "[b4,d5,f5]@4 g4 ~@2 [g4,a4,db5,e5]@3 ~ [g4,db5]@4 ~, g4@2 ~@9 [a4,e5]@2 ~@3", // Bdim A7 Gdim A5
  Y: "~@3 [a4,c5,d5]@3 ~@2 [gb4,a4,c5,d5] ~@4 gb4 ~ [gb4,a4,c5,d5]", Z: "~@3 [gb4,a4,c5,d5] ~@12",
  AA: "~@3 [a4,c5,d5]@2 gb4 ~@2 [gb4,a4,c5,d5]@2 ~@2 [gb4,a4,c5,d5] ~@3, ~@3 gb4 ~@12", // D7
  AB: "~@3 a4!2 gb5 ~ a4 [a4,c5,d5,gb5] ~@3 [a4,c5,d5,gb5] ~@3, ~@3 [c5,d5]@3 ~@10", // D7 Csus2
  AC: "~@3 [f4,a4,d5]@4 ~ [f4,a4,d5] ~@7", AD: "[f4,a4,d5] ~@6 [f4,a4,d5]@2 ~@2 [f4,a4,d5] ~@4",
  AE: "~@3 [g4,bb4,d5,e5]@2 ~@3 [g4,bb4,d5,e5] ~@3 [g4,bb4,d5,e5] ~@3", AF: "~@15 [f4,a4,d5]",
  AG: "[[g4,a4,db5,e5]@3 ~ [g4,a4,db5,e5]@2 ~@5 g4!2 ~@2 a4@5 [c5,d5] ~@6 [a4,c5,d5,gb5]@2 a4 ~@2, ~@11 [a4,db5,e5]@4 ~@17]/2", // A7 Csus2 D7 A
  AH: "[a4,c5,d5,gb5]@2 ~@2 [a4,c5,d5,gb5] ~@6 [a4,d5,gb5]@2 gb5 ~@2, ~@11 c5 ~@4", // D7 D
  AI: "[~@15 [f4,ab4,bb4,d5]@6 ~@11]/2", AJ: "~@4 [c5,d5] ~@6 [a4,c5,d5,gb5]@2 a4 ~@2",
  AK: "~@4 [c5,d5]@2 ~@6 a4 ~@3, ~@11 [a4,c5,d5,gb5]@2 ~@3", // Csus2 D7
  AL: "[a4,c5,d5,gb5] ~@3 [a4,c5,d5,gb5] ~@6 [a4,c5,d5,gb5] ~@3 [a4,c5,d5,gb5]", // D7
  AM: "~@3 a4, ~@11 [a4,c5,d5,gb5]@2 ~@3", AN: "~@4 [c5,d5] ~@7 a4 ~@3, ~@11 [a4,c5,d5,gb5]@2 ~@3",
  AO: "~@4 [a4,c5,d5,gb5] ~@2 [a4,c5,d5,gb5]@2 ~@7", // D7
})).s("gm_distortion_guitar").gain(0.4).pan(0.2)

// chords · brass section · "bra-hit"
const brass_section_2 = note(`<
  ~@8 A ~ B@3 ~@14 A ~ C@3 ~@13 D E ~ F ~ E G H I E ~ F ~ E G H A ~ B@3 ~@14 E ~ F ~ E G H I E ~ F ~ E G H A ~@18 E ~ F
  ~ E G H I E ~ F ~ E G H I E ~ J ~ E K H I E ~ J ~ E K H I E ~ J ~ E K H I E ~ J ~ E K
>`.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: "[~@11 [d4,f4] g4 f4 ~ g4@20 [f4,g4] d4@2 ~ f4@2 ~@7]/3", D: "[a4,db5]@2 ~@5 [g4,a4,db5,e5]@2 ~@7, [g4,e5] ~@15",
  E: "~@11 [a4,c5,d5,gb5] ~@4", F: "~@3 [a4,d5]@2 ~@3 [a4,c5,d5,gb5]@2 ~@6, ~@3 [c5,gb5] ~@12",
  G: "~@3 c5 f5@2 ~ d5@2 ~@7", H: "~@11 [g4,bb4,d5,e5] ~@4",
  I: "~@3 [g4,b4,d5,f5]@2 ~@3 [b4,d5,f5] ~@3 [g4,a4,db5,e5]@2 ~@2, ~@4 g4 ~@3", // G7 Bdim A7
  J: "~@3 [c5,d5,gb5] ~@4 [a4,c5,d5,gb5] ~@7, ~@3 a4@2 ~@11", K: "~@4 [gb5,a5,c6,d6]@2 ~ [gb5,a5,c6,d6]@2 ~@7",
})).s("gm_brass_section").gain(0.64).pan(0)

// drums · kick
const kick = s("bd").struct("<~@8 A B@17 C A B@22 D B@10 A B@22 D B@5 E B@4 A B@63 F>".pickRestart({
  A: "x!2", B: "x!4", C: "x!3 ~", D: "x ~@3 x ~@3 x ~@4 x ~@2", E: "x ~@4 x ~@2 x ~@3 x ~@3", F: "x!2 ~@2",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A@17 B ~ A@17 B C A D A C E C D C A D A C A C ~ A@17 B C A D A C E C D C A D A C A C ~ A@17 B C A D A C E C D C A
  D A C A C D C A D A C F C D C A D A C F C D C A D A C F C D C A D A G H
// … 50 more lines

More by Madonna