Strudelify
This Used to Be My Playground cover art

1995 · Something to Remember

This Used to Be My Playground

Madonna

KeyG minorTempo75 bpm
0:00/0:00
// This Used to Be My Playground — Madonna
// 75 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 98 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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.

// other · orchestral harp · Gsus2 Csus2 Fsus2 Bm Fsus2 Asus2 Fmaj7 C …
const orchestral_harp = note(`<
  ~@3
  [~@31 c2 d2 e2 f2 [g2,a2] b2 [c3,d3] e3 [f3,g3] a3 [b3,c4,d4] e4 [f4,g4] [a4,b4] c5 d5 [e5,f5]]
  [~ [g5,e6]@9 ~@38]
  ~@29
  [~@7 c3 d3 e3 f3 [g3,a3] b3 [c4,d4] e4 [f4,g4] a4 [b4,c5,d5] e5 [f5,g5] [a5,b5] c6 d6 [e6,f6] ~ g6@9 ~@14]
  ~@11
  [~@7 g1 a1 b1 c2 [d2,e2] gb2 [g2,a2] b2 [c3,d3] e3 [gb3,g3,a3] b3 [c4,d4] [e4,gb4] g4 a4 [b4,c5] ~ d5@9 ~@14]
  ~@51
>`).s("gm_orchestral_harp").gain(0.16).pan(0.6)

// chords · epiano2
const epiano2 = note(`<
  A B C@2 D E F G ~@4 H@3 I J@4 ~@18 H@3 I J@4 ~@18 H@3 K@2 ~@3 L@2 M N@2 ~@3 O@2 M N@2 ~@3 L@2 M N@2 ~@5
>`.pickRestart({
  A: "[d5,bb5]@2 [bb4,g5]@2 [d5,bb5]@2 [c5,a5]@7 [a4,f5] [c5,a5] [a4,f5], [bb3,d4]@17 ~ [a3,c4]@30", // Gm Eb Gm F Dm F Dm Bb …
  B: "[bb4,g5]@5 ~ [g4,d5]@6 [bb4,g5]@6 [a4,f5]@12 [f4,c5]@6 d5@2 ~ c5@3 bb4@2 ~ a4@3, [bb3,d4]@3 [a3,c4]@3 [g3,d4,g4] [f3,c4,f5]", // Eb G5 Eb Dm F5 Bb Am G5 …
  C: "[[d5,bb5]@6 [bb4,g5]@6 [d5,bb5]@6 [c5,a5]@12 [a4,f5]@6 a5@6 ~@24 [g3,b3]@29 ~, [eb3,bb3,g4]@6 a3@10 g4 d3 a3 c4@3 b4@2 ~@8, ~@18 [d3,f4]@30 g2@47 ~, ~@18 c5@5 ~ [c5,d5]@6 d4@6 ~@12, ~@14 g5@7 g4@3 ~@8]/2", // Gm Eb Gm F Dm G Eb Dm …
  D: "[d5,bb5]@2 [bb4,g5]@2 [d5,bb5]@2 [c5,a5]@7 [a4,f5] [c5,a5] [a4,f5], [bb3,d4]@3 [a3,c4]@5", // Gm Eb Gm F Dm F Dm Bb …
  E: "[bb4,g5]@6 [g4,d5]@6 [bb4,g5]@6 [a4,f5]@12 [f4,c5]@6 bb3@3 a3@2 ~ g3@3 f3@3, [bb3,d4]@3 [a3,c4]@3 [g4,d5] [bb4,f5]", // Eb G5 Eb Dm F5 Bb Am G5 …
  F: "d5@6 bb4@6 d5@6 c5@12 a4@9 f4@2 ~ c5@3 f4@3, [eb3,g4]@3 d3@5, ~@9 f4@10 ~@5", G: "bb4 [f4,f5], [c3,eb4]@47 ~",
  H: "[~@9 [c5,a5]@3 [d5,bb5]@20 ~ [bb4,g5]@3 [c5,a5]@25 ~@11]/3", I: "~ [d5,bb5]",
  J: "[d6@24 [f5,f6]@37 ~@5 bb5@6 [c5,a5]@48 [d5,d6]@52 ~@20, d5@20 ~@46 d5@3 ~@123]/4", // F D
  K: "[~@18 d5@6 g5@17 ~ [c5,a5]@18 [d5,bb5]@13 ~@23]/2", // F Gm
  L: "[~@6 [c5,a5]@2 [d5,bb5]@13 ~ [c5,a5] [d5,bb5] [c5,a5]@8]/2", M: "[a4,a5]@11 ~ [f4,f5]@10 ~@2 [f4,f5]@24",
  N: "[[bb4,bb5]@8 [d5,d6]@11 ~@13]/2", O: "[~@18 [c5,a5]@6 [d5,bb5]@39 ~@3 [c5,a5]@2 ~ [d5,bb5]@3 [c5,a5]@24]/2",
})).s("gm_epiano2").gain(0.53)

// bass · electric bass finger
const bass = note(`<
  ~@8 A B@2 C D E F G@2 H I J K L@4 M@4 N@6 B@2 O D E F P@2 H I J K L@4 M@4 N@6 Q@2 O D E F R@2 B@2 O D E F R@2 Q@2 S D
  E F T@2 B@2 S D E F U@4 ~@3
>`.pickRestart({
  A: "~@24 eb1@13 ~@5 eb1 ~@5", B: "[eb1@14 ~@4 eb1 ~@5 eb1@14 ~@4 eb1@15 ~@3 eb1@11 ~ d1@13 ~@5 d1@2 ~@4]/2",
  C: "d1@15 ~@3 d1@6 g1@17 ~ g1@5 ~", D: "g1@12 c1@7 ~@2 c1 ~@2", E: "c1@24 f1@15 ~@3 f1@5 ~",
  F: "eb1@21 ~@3 d1@14 ~@4 d1@3 ~@3", G: "[d1@17 ~ c1@2 ~ d1@3 g1@17 ~ g1@23 ~ g1@2 ~ bb1@3 c1@14 ~@4 c1@3 ~@3]/2",
  H: "c1@23 ~ f1@15 ~@3 f1@4 ~@2", I: "eb1@15 ~@3 eb1@4 ~@2 d1@14 ~@4 d1@2 ~@4", J: "d1@23 ~ d1@14 ~@4 d1@2 ~ a0@3",
  K: "d1@10 ~@2 d1@9 ~@3 eb1@15 ~@3 eb1@3 ~@3",
  L: "[eb1@23 ~ d1@15 ~@3 d1@29 ~ g1@15 ~@3 g1@29 ~ f1@16 ~@2 f1@30 eb1@14 ~@4 eb1@2 ~@4]/4",
  M: "[eb1@24 d1@15 ~@3 d1@30 g1@15 ~@3 g1@29 ~ f1@15 ~@3 f1@30 eb1@24]/4",
  N: "[d1@72 c1@96 g1@16 ~@2 g1@28 ~@2 g1@15 ~@3 g1@17 ~ g1@8 ~@4 eb1@13 ~@5 eb1 ~@5]/6",
  O: "d1@15 ~@3 d1@6 g1@18 g1@5 ~", P: "[d1@17 ~ c1@2 ~ d1@3 g1@17 ~ g1@22 ~@2 g1@2 ~ bb1@3 c1@14 ~@4 c1@3 ~@3]/2",
  Q: "[eb1@14 ~@4 eb1@2 ~@4 eb1@14 ~@4 eb1@15 ~@3 eb1@11 ~ d1@13 ~@5 d1@2 ~@4]/2",
  R: "[d1@17 ~ c1@2 ~ d1@3 g1@17 ~ g1@22 ~@2 g1@2 ~ bb1@3 eb1@13 ~@5 eb1 ~@5]/2", S: "d1@14 ~@4 d1@6 g1@18 g1@5 ~",
  T: "[d1@16 ~@2 c1@2 ~ d1@3 g1@17 ~ g1@21 ~@3 g1@2 ~ bb1@3 eb1@13 ~@5 eb1 ~@5]/2",
  U: "[d1@17 ~ c1@2 ~ d1@3 g1@17 ~ g1@23 ~ g1@2 ~ bb1@3 eb1@96 ~@24]/4",
})).s("gm_electric_bass_finger").gain(0.48)

// other · string ensemble 1
const string_ensemble_1 = note("<~@7 A@2 ~@51 B C@2 D E F G H ~@30>".pickRestart({
  A: "[~@11 [c2,g2,c3,bb3,d4,f4]@19 ~@2]/2", B: "~@30 [bb4,bb5] ~@5 [bb4,bb5]@6 [a4,a5]@2 ~@4",
  C: "[~@6 [a4,a5] ~@5 [a4,a5]@5 ~ g5@3 ~@8 g5@3 [a4,a5]@3 [bb4,bb5] ~@5 [bb4,bb5] ~@6 bb4@2 [c5,c6]@3 [a4,a5]@9 ~@16 [bb4,bb5] ~@5 [bb4,bb5]@6 [a4,a5]@2 ~@4, ~@17 g4@3 ~@27 bb5@3 ~@46]/2", // A Bb C A Bb A
  D: "~@6 a5 ~@5 [a4,a5]@5 ~ g5@4 ~@2 [g4,g5]@11 [a4,a5]@12 ~, ~@17 g4@5 ~@26", // A G A
  E: "[bb4,bb5]@5 [a4,a5]@6 [g4,g5]@6 ~ c6@6 [bb4,bb5]@24, ~@17 c5@6 ~@25", F: "[a4,a5] ~", G: "[a4,a5] bb4",
  H: "[c5,c6] ~", // C
})).s("gm_string_ensemble_1").gain(0.36).pan(0.6)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@7 A@2 ~@52 B ~ C ~ D E F ~@30>".pickRestart({
  A: "[~@11 eb4@14 ~@7]/2", B: "~@29 g4@3 ~@16", C: "~@6 a4 ~@41", D: "~ [g4,g5]", E: "~ bb5", F: "~ [d5,d6]",
})).s("gm_string_ensemble_1").gain(0.21).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@8 A@3 B C@5 D@7 E@6 F@8 G@2 H@4 I@2 J@7 K@8 ~@7 L@6 M@8 N@6 O@4 P@6>".pickRestart({
  A: "[~@26 bb3@45 a3@10 bb3@36 g3@27]/3", B: "~@3 e3@4 d3@9",
  C: "[~@95 g3@22 ~@2 bb4@71 ~@25 d4@25, ~@23 c3@95 ~@95 c3@27, ~@23 f3@72 ~@22 bb3@123, ~@71 a4@49 ~@120]/5",
  D: "[~@23 [a3,c4]@22 ~@50 g3@71 ~@26 a3@21 [f3,c4]@49 ~@2 g3@72, ~@7 f3@8 eb3@8 g3@8 ~@81, ~@47 d4@117 ~@3 d4@48 ~@48 d4@73, ~@71 d3@96 ~@169, ~@72 c4@94 ~ bb3@169]/7", // Am F5
  E: "[~@23 bb3@18 ~@3 bb3@25 ~@3 c4@45 ~@3 g3@46 ~@2 [bb3,d4]@46 ~ [bb3,d4]@18 [a3,c4]@55, ~@23 d4@46 f3@45 ~@3 d4@47 ~@124, ~@41 a3@29 ~@2 bb3@94 ~ g3@46 ~@2 g3@73]/6", // Bb Am
  F: "[~@23 c3@96 bb3@19 c4@29 bb3@19 ~@5 bb4@5 ~ c5@6 d5@6 bb5@5 ~@2 bb5@83 g5@6 a5@30 d5@31 ~@5 bb4@12 d5, ~@23 g3@142 ~@2 g3@45 ~@172, ~@62 c4@9 ~@57]/8",
  G: "[~@9 f5@13 ~ g5@42 c5@6 f5@24 a4]/2",
  H: "[~@5 bb4@12 c5@6 f4@23 ~ f5@24 [bb4,d5]@12 [a4,c5]@12 ~@12 [a4,f5]@12 bb5@12 a5@10 ~@20 c5@4 ~@2 c6@17 ~ [c4,f5]@6 [f4,bb5], ~@95 [bb4,d5]@12 ~@12 g4@48 ~@25, ~@96 g5@23 f5@19 ~@3 g5@24 f4@19 ~@8]/4", // Bb Am Dm F5 Bb5 Bb
  I: "[~@5 [d4,a5]@6 [c4,g5]@6 a3@6 ~@24 d5@24 g5@22 a5@3, ~@17 a5@30 ~@49, ~@23 d4@66 ~@7]/2", // D5 C5
  J: "[~@48 a3@21 [f3,c4]@49 ~@17 bb5@7 ~ a5@10 g5@12 ~@2 f5@16 eb5@8 ~ d5@9 c5@13 ~ bb4@22 a4@18 g4@7 ~ a4@45 ~@21 a3@7, ~@23 bb3@189 ~@3 d4@47 ~@74, ~@23 d4@38 ~@59 g3@94 ~@122]/7", // F5
  K: "[~@17 c4@6 ~@18 a4@6 bb4@12 d5@12 d4@18 ~@6 c5@37 d4@11 g4@10 a4@14 bb4@72 d4@22 ~@2 bb3@19 c4@29 bb3@6 [a3,c4]@7 [bb3,d4]@5 f4@6 [d4,bb4]@6 [f4,c5]@6 ~ bb4@5 ~ f4@4 ~@26, bb3@22 ~ [g3,d4]@47 ~ g3@69 ~@27 c3@96 ~@48 g3@45 ~@28, ~@71 g5@24 ~@234 c4@28 ~@27, ~@89 c4@54 ~@118 g4@81 ~@5 d5@6 d4@5 ~@26]/8", // Am Bb Gm F5 G5
  L: "[~@23 [f5,f6]@119 ~ [a4,a5]@19 [d4,d5]@5 [bb4,bb5]@48 ~@21 [c4,c5]@3 ~ g4@18 [c4,c5]@4 ~ [a4,a5]@25, ~@239 g5@19 ~@30]/6", // F A D Bb C A
  M: "[~@5 bb4@16 [f4,f5]@24 [bb4,bb5]@24 ~@2 d6@10 ~@2 bb5@10 [g4,g5]@24 ~@50 c4@22 d4@25 ~ [a3,d4,f4]@18 [d4,d5]@6 ~ g4@15 ~@2 d5@6 [a4,a5]@6 [d4,d5]@6 [bb4,bb5]@30 [d4,d5]@6 [a4,a5]@6 [d4,d5]@6 bb5@6 ~ g4@21 ~@2 c4@4 [a4,a5]@20 [c4,c5]@4 [a4,a5]@3, ~@3 bb5@18 ~@48 d5@12 bb4@12 ~@26 g4@96 ~@24 g5@16 ~@74 g5@21 ~ c5@7 ~@26, ~@120 bb3@95 ~@40 d4@7 ~@122]/8", // F Bb G Dm D A D Bb …
  N: "[~@3 [bb4,bb5]@7 ~ [c5,c6]@4 [g4,g5]@6 [f4,f5]@26 [bb4,bb5]@10 [d5,d6]@12 [f5,f6]@25 ~ [g4,g5]@6 [a4,a5]@6 [bb4,bb5]@4 [d5,d6]@8 ~ [g4,g5]@23 [bb4,bb5]@24 [f4,f5]@24 [g4,g5]@18 [a4,a5]@3 [bb4,bb5]@3 [a4,a5]@6 [g4,g5]@6 [a4,a5]@28 [d4,d5]@7 ~ [bb4,bb5]@25]/6", // Bb C G F Bb D F G …
  O: "[~@5 [c5,c6]@6 [d5,d6]@6 [g5,g6]@6 [f5,f6]@12 ~@10 [bb4,bb5]@14 [d5,d6]@12 [f4,f5]@37 ~@23 [f4,f5]@12 [bb4,bb5]@10 ~@2 d6@22 [c5,c6]@12 [d5,d6]@3, ~@35 f4@11 ~@146, ~@36 f5@35 ~@82 d5@24 ~@15]/4", // C D G F Bb D F Bb …
  P: "[~@11 [g5,g6]@12 [d4,g4,f5]@96 ~@21 f5@130 ~@18, ~@23 f6@247 ~@18, ~@23 bb3@93 ~@3 [c4,a5]@151 ~@18, ~@20 f4@25 ~@3]/6", // G G7 F
})).s("gm_string_ensemble_2").gain(0.21).pan(0.9)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@8 A@6 B@3 ~@31 C@8 D@4 ~@16 E@3 ~ F ~@17>".pickRestart({
  A: "[~@23 bb2@94 a2@49 ~ bb4@97 ~@24, ~@167 g2@49 ~@72]/6", B: "[~@21 bb2@50 g2@48 ~@25]/3",
  C: "[~@23 d4@94 ~@2 bb3@18 ~@3 bb3@25 ~@3 [bb3,c4]@45 ~@3 g3@46 ~@2 bb3@46 ~ bb3@18 a3@51 ~@4, ~@137 a3@28 f3@45 ~@3 d4@47 ~@124]/8", // Bbsus2
  D: "[~@23 g3@142 ~@27]/4", E: "[~ g3@4 ~, ~@23 f5@96 ~@25, ~@23 d4@51 ~@70]/3", F: "~@35 bb4@7 ~@6",
})).s("gm_string_ensemble_2").gain(0.12).pan(0.9)

// chords · piano
const piano = note(`<
  ~@20 A@6 B@3 C D@6 E@2 F@2 G H I@2 J@2 K@6 L@3 M N@6 E@2 O@2 P Q@2 R@3 S T U V@2 W X@2 Y Z AA AB AC@2 AD AE AF@2 AG@4
  ~@4
>`.pickRestart({
  A: "[~@18 c4@6 ~@48 d4@18 f4@24 c4@6 [g3,bb3,d4]@36 ~@12 [g3,bb3,d4]@34 ~@2 bb3@10 ~@2 [eb2,g3,bb3,d4]@45 ~@3 [d2,c4,d4]@24, ~@3 d5@20 ~ [d4,d5]@46 ~@50 d5@35 ~@49 d5@57 ~@3 g4@16 ~@8, ~@6 g3@63 ~@3 [g3,a3,c4,d5]@44 ~@40 d3@22 ~@86 [g3,a3]@20 ~@4, ~@12 a3@47 ~@7 d2@41 ~@181]/6", // Gm Ebmaj7 D7 D Gsus4 Gsus2
  B: "[a4@11 ~@13 bb4@10 ~@2 bb3@12 bb4@9 ~@3 [eb2,g3,bb3,c4,d4]@12, ~@24 [g2,a3,bb3,d4]@44 ~@4 [f2,g3,d4,d5]@45 ~@27]/3", // Ebmaj7 Gm G7
  C: "~@24 [d3,d5]@23 ~, d2@7 ~@5, ~@6 a2@9 ~", // D
  D: "[d4@12 g4@12 [d4,f4]@24 [c4,eb4]@23 ~ [bb3,d4]@24 ~@18 c3@6 ~@12 d3@6 ~@6 d3@8 ~@4 d3@6 g2@3 d3@3 ~@12 d3@6 ~@6 d3@9 ~@3 d3@9 ~@3 d4@24 c4@19 ~@5 f4@22 ~@2, ~@24 c3@87 ~@9 g2@37 ~@11 g2@47 ~@46 g3@24 ~@3, ~@96 [a3,c4]@23 ~ [g3,bb3,d4]@17 ~ [a3,c4,f4]@28 ~@2 [g3,bb3,c4,d4]@16 ~@2 [a3,c4,f4]@29 ~ [g3,bb3]@43 ~ f3@3 c4@22 ~@3, ~@262 bb3@23 ~@3]/6", // Dm Cm Bb Am Gm F Gm F …
  E: "[~@2 [g3,a3,c4]@3 ~ [g3,a3,bb3]@2, ~@5 d4@3]/2", // Am7 Gm
  F: "[~@12 g4@11 ~@19 g3@21 ~@3 a3@3 bb3@3 a3@24, ~@12 [bb3,d4,f4]@19 ~@17]/2", G: "c3@7 ~ [d3,f3,bb3]@8",
  H: "f4 [g3,a3,d4], ~@4 bb3 ~@3", I: "[g4@21 ~@3 [bb3,d4,f4]@36 g4@10 ~@2 [a3,c4,f4]@24]/2",
  J: "[g3@10 ~@14 a4@12 d5@11 ~, ~@12 [g3,a3,d4]@31 ~@5]/2", // Gsus2
  K: "[~@18 c4@6 d4@39 ~@9 d4@18 f4@24 c4@6 [g3,bb3,d4]@36 ~@12 [g3,bb3,d4]@34 ~@2 bb3@10 ~@2 [eb2,g3,bb3,d4]@45 ~@3 [d2,c4,d4,g4]@24, ~@6 g3@58 ~@2 d2@41 ~@181, ~@12 a3@33 ~@27 [g3,a3,c4]@44 ~@40 d3@22 ~@86 [g3,a3]@20 ~@4]/6", // Gm Ebmaj7 Csus2 Am7 Gsus2
  L: "[a4@11 ~@13 bb4@10 ~@14 bb4@9 ~@3 [eb2,g3,bb3,c4,d4]@12, ~@24 [g2,a3,bb3,d4]@44 ~@4 [f2,g3,bb3,d4]@45 ~@27]/3", // Ebmaj7 Gm Gm7
  M: "~@24 d3@23 ~, d2@7 ~@5, ~@18 a2@29 ~",
  N: "[c4@12 d4@11 ~ [d4,f4]@24 [c4,eb4]@23 ~ [bb3,d4]@24 ~@18 c3@6 ~@12 d3@6 ~@6 d3@8 ~@4 d3@6 g2@3 d3@3 ~@12 d3@6 ~@18 d3@9 ~@3 d4@24 c4@19 ~@5 f4@22 ~@2, ~@24 c3@87 ~@9 g2@37 ~@11 g2@46 ~@49 c4@22 ~@3, ~@96 [a3,c4]@23 ~ [g3,bb3,d4]@17 ~ [a3,c4,f4]@28 ~@2 [g3,bb3,c4,d4]@17 ~ [a3,c4,f4]@27 ~@3 [g3,bb3]@43 ~ f3@4 ~@24, ~@64 d3@3 ~@20 g3@8 ~, ~@197 [b4,d5]@50 ~@15 bb3@23 ~@3]/6", // Dm Cm Bb Am Gm F Gm F …
  O: "[~@6 a3@6 bb3@6 d4@5 ~@19 g3@21 ~@3 a3@3 bb3@3 a3@24, ~@12 [bb3,d4,f4]@19 ~@17]/2", P: "c3@23 ~ [d3,f3,bb3]@24",
  Q: "[~@18 d4@6 g4@17 ~ a4@18 bb4@8 ~@4 [bb3,d4,g4]@24, f4@12 [g3,d4]@23 ~@13, ~ a3 ~@2, ~@4 bb3 ~@11]/2", // Gm G5
  R: "[[d4,d5]@11 ~ [bb3,d4,g4]@16 ~@2 [d4,g4,d5]@5 ~ [c4,g4,c5]@8 ~@13 a4@3 [d4,bb4]@11 ~, ~@45 [c4,g4,c5]@14 ~@13]/3", // D Gm G5 C5 Gm C5
  S: "[f4,d5]@12 [d4,bb4]@11 ~ [f4,d5]@18 ~@6", T: "~@18 [a4,c5]@2 [bb4,d5]@4 [a4,c5]@18 c4@5 ~",
  U: "[f4,a4]@9 g4@9 f4@5 ~ bb4@18 a4@6, c4@17 ~@7 [c4,f4]@23 ~", // F F5
  V: "[bb4@5 ~ c5@6 d5@6 a4@6 [g4,bb4]@15 ~@3 g4@15 ~@3 f4@9 ~@3 [g3,bb3,d4,g4]@23 ~, ~@21 [d4,bb4,d5]@14 ~@13]/2", // Gm
  W: "[g4,bb4,d5,g5]@24 [g3,bb3,d4,g4]@23 ~", // Gm
  X: "[[g4,bb4,d5,g5]@17 ~ [f4,f5]@3 [eb4,eb5]@3 [d4,g4,a4,d5]@16 ~@2 [d4,d5]@26 ~@4 [d4,g4,bb4]@23 ~]/2", // Gm F Eb Dsus4 D Gm
  Y: "~@6 [bb3,d4,f4,bb4,d5,f5]@5 ~", // Bb
  Z: "[bb3,d4,f4,bb4,d5,f5]@13 ~@5 [bb3,f4,bb4,d5,f5]@5 ~ [a3,c4,f4,a4,c5,f5]@16 ~@2 f4@5 ~, ~@6 d4 ~@9", // Bb F
  AA: "a4@5 ~ bb4@5 ~ c5@5 ~ a4@5 ~ [f3,d4,f4,bb4]@15 ~@3 [f3,d4,f4,bb4]@6, [f3,c4,f4]@19 ~@29", // Bb F5
  AB: "[f3,d4,f4,bb4]@13 ~@5 [c4,f4,a4]@5 ~ [d4,g4,bb4]@10 ~@2 [c4,f4,a4]@10 ~@2", // Bb F Gm F
  AC: "[[c4,f4,bb4,d5]@9 ~@3 [f4,bb4,d5,f5]@11 ~ [bb3,d4,g4,bb4,d5,g5]@18 [g3,bb3,d4]@20 ~@4 [a3,c4,f4,a4]@4 ~@2 [bb3,d4,f4,ab4,bb4]@19 ~@5]/2", // Bb Gm F Bb7
  AD: "[g4,bb4,d5,g5]@18 g5@5 ~ [c4,d4,g4,c5,g5]@22 ~@2", AE: "[d4,a4,c5,a5]@15 ~@9 [g4,bb4,d5,bb5]@18 d4@5 ~",
  AF: "[[d4,g4,bb4]@4 ~@2 [d4,g4,bb4,c5]@5 ~ [g4,bb4,d5]@5 ~ [bb4,d5,g5]@2 ~@4 [bb3,d4,f4,bb4,d5,f5]@16 ~@2 [g4,bb4,d5,g5]@18 [bb3,d4,f4]@10 ~@2 [a3,c4,f4]@21 ~@3, ~@12 d4@6 g4 ~@77]/2", // Gm Bb Gm Bb F
  AG: "[a4@6 bb4@6 c5@6 f4@4 ~@2 [c4,d4,f4,bb4]@18 [f4,bb4]@12 d4@4 ~@2 [d4,f4,bb4]@4 ~@2 [c4,f4,a4]@5 ~ [d4,f4,bb4]@16 ~@2 d4@5 ~ d4@5 ~ [c4,f4,a4]@5 ~ [d4,f4,bb4]@4 ~@2 [d4,f4,bb4,d5]@3 ~@3 [eb3,d4,g4,bb4]@72, c4@22 ~@20 d4@9 ~@141, f4@13 ~@77 [f4,bb4]@10 ~@92]/4", // Bb Bb5 Bb F Bb F Bb Ebmaj7 …
})).s("gm_piano").gain(0.17)

// chords · celesta
const celesta = note("<A B C D A E F G ~@16 H ~@2 I J@3 K L@2 M ~ N@2 ~@18 O K P@2 ~@38>".pickRestart({
  A: "[d5,bb5]@2 [bb4,g5]@2 [d5,bb5]@2 [c5,a5]@7 [a4,f5] [c5,a5] [a4,f5]", // Gm Eb Gm F Dm F Dm
  B: "[bb4,g5]@5 ~ [g4,d5]@6 [bb4,g5]@6 [a4,f5]@12 [f4,c5]@6 ~@3 c5@3 bb4@2 ~ a4@3, ~@36 g4@5 ~@7, ~@39 d5@2 ~ f5@6", // Eb G5 Eb Dm F5
  C: "[d5,bb5] [bb4,g5] [d5,bb5] [c5,a5]@2 [a4,f5] a5 g5, g4@3 f4@5, ~@18 c5@5 ~", // Gm Eb Gm F Dm
  D: "~@6 [b4,b5]@9 ~, [g4,c5,d5]@9 c5@6 g5@29 ~@4, ~ d4@3 d5@3 ~@9, ~@6 a4@11 ~@31", // B Gsus4
  E: "[bb4,g5] [g4,d5] [bb4,g5] [a4,f5]@2 [f4,c5] [g4,d5] [bb4,f5]", // Eb G5 Eb Dm F5 G5 Bb5
  F: "d5@6 bb4@6 d5@6 c5@12 a4@9 f4@2 ~ c5@3 f4@3, g4@9 f4@10 ~@5", G: "bb4 [f4,f5], eb4@47 ~",
  H: "d5@11 ~ f4@12 g4@24", I: "~ g4@2 bb4 d5@4", J: "[g4@11 ~ a4@12 bb4@18 a4@54 f4@21 ~@3 f4@24]/3", K: "eb4 d4",
  L: "[c4@24 d4@18 f4@29 ~ d4@17 ~ a4@5 ~]/2", M: "bb4@5 ~ c5@6 d5@6 bb5@5 ~ bb6@18 ~@6, ~@8 bb5@3 ~@5",
  N: "[~@36 [bb5,d6]@4 ~@2 [a5,c6]@10 ~@2 [f5,a5]@10 ~@2 [bb5,d6]@5 ~ [g5,bb5]@24]/2", O: "~ f4",
  P: "[c4@24 d4@18 f4@29 ~ d4@6 ~@18]/2",
})).s("gm_celesta").gain(0.17)

// chords · string ensemble 2
const string_ensemble_2_2 = note("<~@8 A@2 B@7 C@4 ~@13 D@4 E@5 ~@17 F G@8 ~@3 H@2 ~@24>".pickRestart({
  A: "[~@23 g3@73]/2", B: "[bb3@23 a3@48 bb3@84 g3@12 a3@24 c4@24 ~@42 c4@6 d4@36 f4@12 g4@25, ~@215 f4@49 ~@72]/7",
  C: "[~@11 c4@13 a4@23 g4@24 ~@72 d6@25 ~@24, ~@72 a4@91 ~@29, ~@95 d5@72 ~@25, ~@5 a5@2 ~]/4",
  D: "[~@23 d4@97 c4@48 bb3@16 ~ bb3@7]/4",
  E: "[g4@6 f4@5 d4@6 c4@6 d4@42 g3@6 c4@48 bb3@48 d5@12 c5@11 bb4@13 a4@11 ~@26]/5",
  F: "~@29 [bb4,bb5] ~@5 [bb4,bb5]@6 [a4,a5]@2 ~@5", // Bb A
  G: "[~@5 [a4,a5] ~@5 [a4,a5]@6 [g4,g5]@3 ~@9 [g4,g5]@3 [a4,a5]@3 [bb4,bb5] ~@5 [bb4,bb5] ~@5 [bb4,bb5]@3 [c5,c6]@3 [a4,a5]@9 ~@16 [bb4,bb5] ~@4 [bb4,bb5]@6 [a4,a5]@2 ~@10 a4 a5 ~@5 [a4,a5]@5 [g4,g5]@5 ~@19 bb3@6 ~ g4@5 ~ f4@5 [d4,g4,g5]@6 [c4,c5,c6]@6 [bb4,bb5]@24 ~@18 g3@6 ~ g4@23 [a4,a5]@24 [bb4,bb5]@24 [c5,c6]@24 ~@12 c5@11 ~@2 [a4,a5]@11 [a4,bb4,bb5]@11 ~@26, ~@72 c4@47 [g4,g5]@12 [a4,a5]@12 [bb4,bb5]@6 [a4,a5]@7 ~@35 [a4,a5]@24 g5@24 ~@72 [d5,d6]@25 ~@48, ~@120 bb3@16 ~@31 d4@42 ~@6 c4@48 bb3@48 ~@23 bb4@12 ~@38]/8", // A G A Bb C A Bb A …
  H: "[~@5 [a3,c4]@6 bb3@6 g4@5 ~@25 c4@26 ~@23, ~@11 d4@36 ~@49, ~@23 f4@51 ~@22]/2", // Am
})).s("gm_string_ensemble_2").gain(0.17).pan(0.1)

// chords · pad warm
const pad_warm = note("<A@6 B@3 ~@11 C@7 D E@2 F@2 G H I@8 J@8 K@3 D E@2 F@2 G H L@8 M@8 N@8 O@8 P@6>".pickRestart({
  A: "[d4@63 c4@18 ~ bb3@5 [f3,c4]@6 [eb3,d4]@18 d3@30 ~@20 d4@28 d4@66 c4@18 ~ bb3@5 [f3,c4]@6 [eb3,d4]@3, g3@89 ~@22 c4@42 ~@2 g3@33 ~ g3@84 g3@6 ~@9, ~@141 g2@47 ~@100, ~@160 b3@29 ~@99]/6", // F5 Ebmaj7 F5 Ebmaj7
  B: "[~@5 [d3,c4]@10 [c2,c3,d4,eb4]@25 ~@8, ~@45 bb3@49 ~@50]/3", // D7 Cm
  C: "[~@21 g4@24 f4@24 g4@18 f4@18 d4@36 bb4@48 d5@11 ~ f4@12 g4@24 f4@24 g4@18 f4@18 d4@12 bb4@27]/7",
  D: "~ g4@4 bb4@2 d5@8 g4", E: "[~@3 a4@4 bb4@6 a4@10 d4@8 f4, ~@21 g4@73 ~@2]/2", F: "[~@7 f4@8 eb4@8 d4@8 c4]/2",
  G: "~@7 [bb3,d4]@6 [c4,f4]@3", H: "~@7 [bb3,d4]@6 [a3,c4,f4]@3",
  I: "[~@117 c4@22 ~@2 c4@24 ~@24 g3@24 c4@24 d4@24 a3@24 g3@24 ~@24 d4@23 ~@13 g3@12 bb3@3, ~@21 [g3,bb3,d4,g4]@96 a3@50 ~@46 f4@97 ~@74, ~@69 f4@96 [bb3,d4]@48 bb3@47 ~ c4@48 [f3,bb3]@48 [a3,d4]@26 ~]/8", // Gm Bb Bb5 D5
  J: "[~@9 c4@12 f3@24 ~@24 a3@24 ~@24 [a3,d4]@95 ~ g4@24 f4@24 g4@18 f4@18 d4@36 bb4@48 d5@3, ~@21 [bb3,d4]@48 c4@49 ~@266, ~@45 f4@71 ~@268, ~@93 g3@119 ~@172]/8", // D5 Bb
  K: "[~@9 f4@12 g4@24 f4@24 g4@17 ~ f4@18 d4@12 bb4@27]/3",
  L: "[~@21 [g3,bb3,d4]@48 ~@48 c4@22 ~@2 c4@24 ~@24 g3@24 c4@24 d4@24 a3@24 g3@24 ~@24 d4@24 ~@12 g3@12 bb3@3, ~@69 f4@96 [bb3,d4]@48 bb3@47 ~ c4@48 [f3,bb3]@48 [a3,d4]@26 ~, ~@117 a3@72 ~@24 f4@97 ~@74]/8", // Gm Bb Bb5 D5
  M: "[~@9 c4@12 ~@96 c4@22 ~@2 c4@24 ~@24 g3@24 c4@24 d4@24 a3@24 g3@24 ~@24 d4@23 ~@13 g3@12 bb3@3, ~@21 [f3,g3,bb3,d4]@96 a3@72 ~@24 f4@97 ~@74, ~@69 f4@96 [bb3,d4]@48 bb3@47 ~ c4@48 [f3,bb3]@48 [a3,d4]@26 ~]/8", // Gm7 Bb Bb5 D5
  N: "[~@9 c4@12 ~@96 c4@22 ~@2 c4@24 ~@24 g3@24 c4@24 d4@24 a3@24 g3@24 ~@24 d4@22 ~@14 g3@12 bb3@3, ~@21 [f3,bb3,d4]@96 a3@72 ~@24 f4@97 ~@74, ~@69 f4@96 [bb3,d4]@48 bb3@47 ~ c4@48 [f3,bb3]@48 [a3,d4]@26 ~]/8", // Bb Bb5 D5
  O: "[~@9 c4@12 ~@96 c4@22 ~@2 c4@24 ~@24 g3@24 c4@24 d4@24 a3@24 g3@24 ~@24 d4@23 ~@13 g3@12 bb3@3, ~@21 [f3,g3,bb3,d4]@94 ~@2 a3@72 ~@24 f4@97 ~@74, ~@69 f4@96 [bb3,d4]@48 bb3@47 ~ c4@48 [f3,bb3]@48 [a3,d4]@26 ~]/8", // Gm7 Bb Bb5 D5
  P: "[~@9 c4@12 [eb2,f3,bb3,d4]@96 [d2,f3,a3,c4]@146 ~@25, ~@7 g3@31 ~@58]/6", // Bb Dm7
})).s("gm_pad_warm").gain(0.24)

// chords · vibraphone
const vibraphone = note("<~@35 A B ~@19 C D E@2 ~@38>".pickRestart({
  A: "~@42 eb6@2 ~ [f6,a6]@3, ~@42 g6 ~@5", B: "[g6,bb6] ~@7", C: "~ f4", D: "eb4 d4",
  E: "[c4@24 d4@18 f4@29 ~ d4@6 ~@18]/2",
})).s("gm_vibraphone").gain(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B A B@11 A@3 B A@2 C ~ C ~ A@2 D B A B@11 A@3 B A@2 C ~ C ~ A@3 B A B@7 A B@7 A B@7 A B@5 E ~@5
>`.pickRestart({
  A: "~@4 x ~@2 x", B: "x ~@3 x ~@2 x", C: "~ x", D: "~@7 x", E: "x",
})).gain(0.5)

// drums · rim
const rim = s("rim").struct(`<
  ~@9 A@4 B@6 A@11 C B A ~ A@5 B@6 A@11 C B A ~ A@5 B@3 A@5 B@3 A@5 B@3 A@5 B@3 A ~@5
>`.pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~@3 x",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B C D E C F G H G I J K B C D E C F G H G I J L ~ A B C D E C F G H G I J K B C D E C F G H G I J L ~ A B C D E
  C F G H G I J K B C D E C F G H G I J K B C D E C F G L ~@5
// … 23 more lines

More by Madonna