Strudelify
True Blue cover art

1986 · True Blue

True Blue

Madonna

KeyB♭ majorTempo116 bpm
0:00/0:00
// True Blue — Madonna
// 116 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 5 "BASS" named as a bass, played on electric bass finger (its electric guitar jazz patch is not one)
// note: Full arrangement: all 106 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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.

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  ~ A@7 B@7 C@8 D@2 E@6 F@2 G@6 H@2 I@8 J@6 K@4 L@8 M@2 N@2 O P@8 Q R@6 S@2 T@8 U@8 V
>`.pickRestart({
  A: "[f4@47 ~@26 eb4@21 ~ f4@48 g4@24 eb4, bb4, d4@73 ~@22 d4@69 ~@4, ~@47 g4@48 ~@73]/7",
  B: "[~@23 f4@49 ~@48 eb4@46 ~@2, ~@23 d4@97 ~@48, ~@3 g4@4]/7",
  C: "[[f4,a4]@47 f4@49 ~@48 eb4@46 ~@2, c4@46 ~ bb4@143 ~@2, ~@47 d4@97 ~@48, ~ g4]/8", D: "[[c4,f4,a4]@47 ~]/2",
  E: "[f4@48 ~@47 eb4@46 ~@3, bb4@143 ~, d4@2 ~, ~@48 g4@95 ~]/6", F: "[[c4,f4]@15 ~, a4]/2",
  G: "[f4@24 ~@24 eb4@23 ~, bb4, d4@97 ~@47, ~ g4@2]/6", H: "[c4,f4,a4]/2",
  I: "[~@95 eb4@47 ~@2 c4@47 ~, bb4@143 a4@49, d4@97 ~@95, ~@48 g4@95 f4@47 ~@2]/8",
  J: "[f4@24 ~@24 eb4@23 ~, bb4@143 ~, d4@2 ~, ~ g4@2]/6", K: "[[f4,a4]@47 ~ [d4,bb4]@46 ~@2, c4@46 ~ f4@47 ~@2]/4",
  L: "[d4@47 eb4@47 ~@2 f4@47 ~ eb4@23 ~ a3@24, [g4,bb4]@96 a4@46 ~ g4@24 c4@22 ~@3, ~@96 c4@44 ~@3 [bb3,d4]@22 ~@2 [d4,f4]@24 ~]/8", // Gm Bb Dm
  M: "[[bb3,eb4,g4] [a3,f4], d4@23 ~, ~@12 c4@11 ~]/2", // Eb Dm
  N: "[[bb3,g4]@11 f4@12 [bb3,eb4,g4]@25, d4@9 ~@2 c4@11 ~@26, ~@11 a3@8 ~@29]/2", O: "[a3,c4,f4]",
  P: "[~@24 f4@48 ~@23 eb4@22 ~@3 f4@48 g4@24, ~@23 bb4@169, ~@24 d4@73 ~@23 d4@72, ~@3 g4@2 ~@3]/8", Q: "eb4@19 ~@5",
  R: "[f4@48 ~@48 eb4@47 ~, bb4@143 ~, d4@2 ~, ~ g4@2]/6", S: "[[f4,a4], c4@23 ~]/2",
  T: "[f4@48 ~@48 eb4@45 ~@2 [c4,f4]@47 ~@2, bb4@143 a4@49, d4@97 ~@95, ~ g4@2 ~]/8", // F5
  U: "[f4@48 ~@24 eb4@23 ~ f4@48 ~@24 eb4@23 ~, bb4, d4@3 ~ d4@3 ~, ~ g4 ~ g4]/8", V: "[d4,f4]",
})).s("gm_synth_strings_1").gain(0.25)

// other · pad new age · "FANTASIA"
const pad_new_age = note(`<
  ~@26 A B C D C E F G ~@16 H I J B K L M ~ N O P O P Q M ~@17 R B S T K E U V N O P O K Q W ~ R O X G N O X V
>`.pickRestart({
  A: "f4@2 ~@4 d5 ~@5 c5@2 ~@4 d5@2 ~@4", B: "g4@7 ~@17", C: "g4 ~@2 d5 ~@2 c5 ~@2 d5 ~@2", D: "g4 ~@3",
  E: "bb4 ~@5 a4 ~@5 a4@2 ~@4 a4@2 ~@4", F: "~@6 a4@2 ~@4 a4@2 ~@4 g4 ~@5", G: "f4 ~@23",
  H: "f4 ~@5 d5 ~@5 c5@2 ~@4 d5@2 ~@4", I: "g4@5 ~@7", J: "g4@2 ~@4 d5 ~@5 c5 ~@5 d5 ~@5",
  K: "g4@2 ~@4 d5 ~@5 c5@2 ~@4 d5 ~@5", L: "bb4 ~@5 a4 ~@5 a4 ~@11", M: "a4 ~@5 a4 ~@5 g4 ~@5 f4 ~@5",
  N: "f4 ~@5 d5 ~@5 c5 ~@5 d5 ~@5", O: "g4 ~@23", P: "g4 ~@5 d5 ~@5 c5 ~@5 d5 ~@5", Q: "bb4 ~@5 a4 ~@5 a4 ~@5 a4 ~@5",
  R: "f4@2 ~@4 d5@2 ~@4 c5 ~@5 d5 ~@5", S: "g4@2 ~@4 d5@2 ~@4 c5 ~@5 d5 ~@5", T: "g4 ~@7",
  U: "~@6 a4@2 ~@4 g4 ~@5 f4 ~@5", V: "f5 ~@23", W: "~@6 a4 ~@5 g4 ~@5 f4 ~@5", X: "g4 ~@5 d5 ~@5 c5 ~@5 bb4 ~@5",
})).s("gm_pad_new_age").gain(0.29)

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~ A B C D E B F G H I J K L M N O A P J Q L M R S A B J Q L T U V E W J X L Y R Z E W AA AB L AC AD AE A AF J AG L AC
  AD AE A AH J X L AI R AJ T AK AL AM AN AO AD AP AQ W X G E I AR AS A W J AT L AC U AE AU AV J AW L AC AD AE AH AX Q AY
  A AZ AT AY BA
>`.pickRestart({
  A: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~",
  B: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 f2@4 a1@2",
  C: "g1@3 ~ g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1@2",
  D: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 f1@2 g1@2",
  E: "bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~",
  F: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1@2",
  G: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1@2 f1@2 eb1@2 f1@2",
  H: "bb1 ~@3 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1 ~",
  I: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 f2@2 bb1@2 a1@2",
  J: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~",
  K: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1 ~@3 g1@2 g1@3 ~ f1@2",
  L: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~",
  M: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 d1@2 eb1@2 ~@2 eb1@2",
  N: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2 f1@2 ~@2 f1 ~",
  O: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2 g1@2 ~@2 g1@2 a1@3 ~ a1@2",
  P: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 g2@2 f2 ~ bb1@2",
  Q: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@3 ~ f1@2",
  R: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~",
  S: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2 g1@2 ~@2 g1@2 a1@2 ~@2 a1 ~",
  T: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1@2",
  U: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 eb1@2",
  V: "f1@2 ~@2 f1@2 f1@2 ~@2 f1@2 g1@2 ~@2 g1 ~ a1@2 ~@2 a1@2",
  W: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 f2@2 bb1 ~ a1@2",
  X: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1@2 bb1@2 c2@2 bb1@2",
  Y: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1 ~ d1@2 eb1@2",
  Z: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2 g1 ~ a1@2 f1@2",
  AA: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1@2 g1@2 ~@2 g1 ~",
  AB: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1@2 g1@2 ~@2 g1@2 c2@2 bb1@2 g1@2",
  AC: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 d1@2 eb1@2",
  AD: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 eb1@2 e1@2",
  AE: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2 g1@2 ~@2 g1@2 a1@2 ~@2 a1@2",
  AF: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 f2 ~ a1@2",
  AG: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1@2 bb1@2 g1@2 f1@2",
  AH: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2",
  AI: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1 ~ eb1@2 e1@2",
  AJ: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 bb1@2 c2@2",
  AK: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 d1@2 f1@2",
  AL: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1@2 eb2@2 eb1 ~ eb2@2",
  AM: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2",
  AN: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1@2 f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2",
  AO: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1@2 eb2@2 eb1@3 ~",
  AP: "f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2 g1@2 ~@2 a1@2",
  AQ: "bb1@2 ~@2 bb1 ~ bb1 ~@3 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~",
  AR: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 bb1@2 c2@2",
  AS: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1@2 f1@2 g1@2 a1@2",
  AT: "g1@2 ~@2 g1 ~ g1@2 ~@2 g1 ~ g1@2 ~@2 g1@2 bb1@2 c2@2 f1@2",
  AU: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1 ~",
  AV: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 g2@2 f2 ~ a1@2", AW: "g1 ~ g1!2 ~ g1!2 ~ g1 bb1 c2 f1",
  AX: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1@2 bb2@2 bb1 ~ a1@2",
  AY: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1@2 bb1@2 c2@2 eb2@2",
  AZ: "bb1@2 ~@2 bb1@2 bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2 f2@2 bb1@2 a1@2", BA: "bb1@19 ~@5",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@5 A B C D E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 F@2 R@2 S@2 T@2 U@2 G@2 V@2 W@2 X@2 Y@2 Z@2 I@2 AA@2
  AB@2 AC@2 AD AE AF@2 AG AH P@2 AI@2 AJ D AK AL AM AN AO@2 AP@2 AQ@2 AR@2 W@2 F@2 G@2 AS@2 AT@2 AJ D AU@2 AJ AV AW
>`.pickRestart({
  A: "[f3,bb3,d4]@7 ~", B: "~@12 [f3,bb3,d4]@5 ~ [f3,a3,c4]@5 ~", C: "[d3,g3,bb3]@19 ~@5", D: "[eb3,g3,bb3,eb4]@19 ~@5",
  E: "[[f3,bb3,d4]@37 ~@11]/2", F: "[[g3,bb3,d4]@43 ~@5]/2", G: "[[eb3,g3,bb3,eb4]@11 ~]/2", H: "[[f3,a3,c4,f4]@2 ~]/2",
  I: "[[f3,bb3,d4]@11 ~]/2", J: "[[g3,bb3,d4]@43 ~@5, g2@13 ~@11]/2", K: "[[eb3,g3,bb3,eb4]@7 ~]/2",
  L: "[[a3,c4,f4]@7 ~, f3@37 ~@11]/2", M: "[[f3,bb3,d4]@33 ~@3 [f3,bb3,d4]@10 ~@2]/2",
  N: "[[g3,bb3,d4]@37 ~@5 [g3,bb3,d4]@4 ~@2]/2", O: "[[g3,bb3,eb4]@19 ~@5, eb3@31 ~@17]/2",
  P: "[[f3,a3,c4,f4]@36 ~@6 [f3,a3,c4]@5 ~]/2", Q: "[[f3,bb3,d4]@13 ~@3]/2", R: "[[eb3,g3,bb3,eb4]@43 ~@5]/2",
  S: "[[a3,c4,f4]@7 ~, f3@2 ~]/2", T: "[[f3,bb3,d4]@23 ~]/2", U: "[[g3,bb3,d4]@11 ~]/2",
  V: "[[f3,a3,c4,f4]@20 ~ [f3,a3,c4]@2 ~, ~@21 f4 ~@2]/2", W: "[[f3,bb3,d4]@43 ~@5]/2", X: "[[g3,bb3,d4]@5 ~]/2",
  Y: "[[eb3,g3,bb3,eb4]@19 ~@5]/2", Z: "[[f3,a3,c4,f4]@7 ~]/2", AA: "[[g3,bb3,d4]@15 ~]/2",
  AB: "[[eb3,g3,bb3,eb4]@15 ~]/2", AC: "[[f3,a3,c4]@37 ~@11, f4@13 ~@3]/2", AD: "[c2,c3,bb3,d4,eb4,g4]@19 ~@5",
  AE: "~ c3 ~@22, [d2,d3,a3,c4,f4]@19 ~@5", // Dm7
  AF: "[~ c3@20 ~@3 [a3,f4]@21 ~@3, [c2,bb3,eb4,g4]@19 ~@3 d2@15 ~@11, ~@24 c4@19 ~@5, ~@24 d3@17 ~@7]/2", // Dm Cm7
  AG: "[g3,bb3,g4]@10 c4 ~@2 f3@7 ~@4, d4@2 ~ [a3,c4,f4]@2 ~", AH: "[eb3,g3,bb3,eb4]@19 ~@5, eb2@2 ~",
  AI: "[[f3,bb3,d4]@33 ~@3 [f3,bb3,d4]@5 ~ [f3,a3,c4]@5 ~, bb2@5 ~@3]/2", AJ: "[d3,g3,bb3]@11 ~",
  AK: "[bb2,f3,bb3,d4]@23 ~", AL: "[bb2,f3,bb3,d4]@10 ~@2 [f3,bb3,d4]@5 ~ [f3,a3,c4]@5 ~", AM: "[d3,g3,bb3]@23 ~",
  AN: "[eb3,g3,bb3,eb4]@5 ~", AO: "[[f3,bb3,d4]@41 ~@7]/2", AP: "[[g3,bb3,d4]@15 ~, g4@43 ~@5]/2",
  AQ: "[[eb3,bb3,eb4,g4]@11 ~, g3 ~@5]/2", AR: "[[f3,a3,c4]@11 ~, f4@7 ~]/2",
  AS: "[[f3,a3,c4,f4]@19 ~@2 [f3,a3,c4]@2 ~]/2", AT: "[[f3,bb3,d4]@32 ~@4 [bb3,d4]@5 ~ [a3,c4]@5 ~]/2",
  AU: "[[f3,bb3,d4]@32 ~@4 [f3,bb3,d4]@6 [a3,c4]@5 ~]/2", AV: "[g3,bb3,eb4]@5 ~, eb3@3 ~", AW: "[bb2,f3,bb3,d4]@11 ~",
})).s("gm_piano").gain(0.4)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A@2 B C A@2 B C D@2 E@2 F@2 G@2 D@2 H E F I J K D@2 H L F I M@2 N O P H F@2 Q M N R E@2 F I J M R D S L F I Q J R O
  P T I@2 J U V J W X Y Z AA AB A@2 B Z AC A AD AE D@2 E AF AG I J AH D@2 E T F I M@2 AI AJ B C AJ A B C ~
>`.pickRestart({
  A: "~@6 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@7 [f4,bb4,d5] ~@5", B: "~@6 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~@7 [g4,bb4,d5] ~@5",
  C: "~@6 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@7 [g4,bb4,eb5] ~@5", D: "~@6 [f4,bb4,d5] ~@11 [f4,bb4,d5] ~@5",
  E: "~@6 [g4,bb4,d5] ~@11 [g4,bb4,d5] ~@5", F: "~@6 [g4,bb4,eb5] ~@11 [g4,bb4,eb5] ~@5",
  G: "~@6 [a4,c5,f5] ~@11 [c5,f5]@2 ~@4", H: "~@3 [g4,bb4,d5] ~@5 [g4,bb4,d5] ~@2",
  I: "~@6 [g4,bb4,eb5] ~@11 [g4,bb4,eb5]@2 ~@4", J: "~@3 [a4,c5,f5] ~@5 [a4,c5,f5] ~@2",
  K: "~@3 [c5,f5] ~@5 [c5,f5] ~@2", L: "~@6 [g4,bb4,d5] ~@11 [g4,bb4,d5] ~@3 [g4,bb4,d5]@2",
  M: "~@3 [a4,c5,f5] ~@5 [c5,f5] ~@2", N: "~@6 [f4,bb4,d5]@2 ~@10 [f4,bb4,d5] ~@5",
  O: "~@6 [f4,bb4,d5] ~@11 [f4,bb4,d5]@2 ~@4", P: "~@6 [g4,bb4,d5] ~@11 [g4,bb4,d5]@2 ~@4",
  Q: "~@6 [a4,c5,f5]@2 ~@10 [a4,c5,f5] ~@5", R: "~@3 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@2",
  S: "~@6 [g4,bb4,d5]@2 ~@10 [g4,bb4,d5] ~@5", T: "~@6 [g4,bb4,d5]@2 ~@10 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~",
  U: "~@6 [a4,c5,f5] ~@11 [c5,f5]@2 ~@2 [c5,f5]@2", V: "~@6 [bb4,d5,g5] ~@3 [bb4,d5,g5] ~@7 [bb4,d5,g5]@2 ~@4",
  W: "~@6 [bb4,d5,g5] ~@3 [bb4,d5,g5]@2 ~@6 [bb4,d5,g5]@2 ~@4", // Gm
  X: "~@6 [a4,c5,f5] ~@3 [a4,c5,f5]@2 ~@6 [a4,c5,f5]@2 ~@4", Y: "~@6 [bb4,d5,g5] ~@3 [bb4,d5,g5] ~@7 [a4,c5,f5]@2 ~@4",
  Z: "~@6 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@7 [g4,bb4,eb5]@2 ~@4", AA: "~@6 [a4,c5,f5] ~@3 [a4,c5,f5] ~@7 [c5,f5] ~@5",
  AB: "~@6 [c5,f5]@2 ~@10 [c5,f5] ~@5", AC: "~@6 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@7 [f4,bb4,d5]@2 ~@4",
  AD: "~@6 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~@7 [g4,bb4,d5]@2 ~@4", // Gm
  AE: "~@6 [g4,bb4,eb5]@2 ~@2 [g4,bb4,eb5] ~@7 [g4,bb4,eb5]@2 ~@4", // Eb
  AF: "~@6 [g4,bb4,d5] ~@11 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~", AG: "~@6 [g4,bb4,eb5]@2 ~@10 [g4,bb4,eb5] ~@5",
  AH: "~@3 [a4,c5,f5] ~@5 [c5,f5] ~ [c5,f5]", AI: "~@6 [f4,bb4,d5] ~@3 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@2 ~@4",
  AJ: "~@6 [f4,bb4,d5]@2 ~@2 [f4,bb4,d5] ~@7 [f4,bb4,d5] ~@5", // Bb
})).s("gm_electric_guitar_muted").gain(0.4)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~@9 A@2 B@2 C D E@2 A@2 B@2 F@2 E@2 A@2 B@2 G D E@2 A@2 B@2 D@2 E@2 A@2 H@2 F@2 E@2 A@2 B@2 D@2 E@2 A@2 B@2 I D E@2 J
  E J E K D E@2 A@2 B D A@2 B D L A B@2 I D E M N A B@2 D@2 E O A@2 B D A@2 B D P
>`.pickRestart({
  A: "[d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~", // Bb
  B: "[bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~", // Gm
  C: "[g3,bb3] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~", // Gm Eb
  D: "[g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~", // Eb
  E: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  F: "[bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~", // Eb
  G: "[g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~", // Eb Eb5 Eb
  H: "[d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~", // Gm
  I: "[bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~ [g3,bb3,eb4] ~", // Eb5 Eb
  J: "[bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~", // Ebmaj7
  K: "[bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [bb3,d4,g4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // Gm F
  L: "[d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4] ~", // Bb Dm
  M: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4] ~, ~@11 f4", // F Am
  N: "[bb3,d4,bb4] ~ [bb3,d4,f4,bb4] ~ [bb3,d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~", // Bb
  O: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F Dm F
  P: "[f3,bb3,d4] ~@23", // Bb
})).s("gm_pizzicato_strings").gain(0.2).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~
  [x ~@4 x!2 ~@5]!69
  [x ~@4 x!2 ~@4 x]
  [x ~@4 x!2 ~@5]
  [x ~@4 x!2 ~@4 x]
  [x ~@4 x!2 ~@5]!32
  x
>`).gain(0.55)

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

// drums · hihat
// … 10 more lines

More by Madonna