Strudelify
I'll Remember cover art

1995 · Something to Remember

I'll Remember

Madonna

KeyD majorTempo83 bpm
0:00/0:00
// I'll Remember — Madonna
// 83 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(83/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 · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  ~@23 A B C D E F G H C I G J K L K M N O@2 B P Q R S T U V W@2 X@3 ~@5 Y C D Z@2 AA@2 AB@3 AC AD AC D C AE AF AG AH AI
  AJ AK AC AL AF AM B AC AN AO ~
>`.pickRestart({
  A: "c1@5 ~ d1@3 ~ d1@3 ~@3", B: "c1@5 ~ d1@3 ~ d1@2 ~@4", C: "c1@6 d1@3 ~ d1@2 ~@4", D: "b1@6 a1@9 ~",
  E: "c1@6 d1@3 ~ d1@3 ~@3", F: "a1@3 b1@2 b1 ~@2", G: "g1@6 f#1@3 ~ f#1@2 ~@4", H: "e1@6 a1@3 ~ a1@3 ~@3",
  I: "a1@6 b1@3 ~ b1@2 ~@4", J: "e1@15 ~", K: "d1@5 ~ g1@3 ~ g1@3 ~@3", L: "b1@5 ~ a1@3 ~ a1@2 ~@4",
  M: "a1@5 ~ b1@3 ~ b1@3 ~@3", N: "d1@6 g1@3 ~ g1@3 ~@3", O: "[b1@6 a1@19 ~@7]/2", P: "c1@6 d1@3 ~ d1@2 f#1@2 a1 f#1",
  Q: "b1@6 a1@3 ~ a1@2 ~@4", R: "g1@6 d1@3 ~ d1@3 ~@3", S: "e1@5 ~ a1@3 ~ a1@2 ~@4", T: "g1@3 c2@2 c2 ~@2",
  U: "d1@5 ~ b1@3 ~ b1@3 ~ a1 ~", V: "g1@4 ~@2 d1@3 ~ d1@3 ~ d1@2", W: "[e1@5 ~ a1@20 ~@6]/2", X: "[c1@47 ~]/3",
  Y: "~@6 d1@3 ~ d1@2 ~@4", Z: "[d1@15 ~]/2", AA: "[d1@31 ~]/2", AB: "[d1@7 ~]/3", AC: "c1@5 ~ d1@4 d1@2 ~@4",
  AD: "c1@5 ~ d1@3 ~ d1@2 ~@2 d1@2", AE: "c1@6 d1@3 ~ d1@2 ~ f#1 e1 d1", AF: "c1@6 d1@3 ~ d1@2 ~@3 f#1",
  AG: "b1@3 a1@5", AH: "c1@3 c1@2 ~ d1@3 ~ d1@2 ~@4", AI: "c1@2 ~ c1@2 ~ d1@3 ~ d1@2 ~@2 d1@2",
  AJ: "c1@2 ~ c1@2 ~ d1@3 ~ d1@2 ~@3 f#1", AK: "b1@6 a1@4 f#1 g1@5", AL: "c1@3 d1@2 d1 ~ d1", AM: "b1@3 a1@3 g1@2",
  AN: "c1@5 ~ d1@3 ~ d1@2 ~@3 b1", AO: "b1@3 ~@5",
})).s("gm_synth_bass_2").gain(0.56)

// bass · synth bass 2 · "SYN BASS 2" · soft notes
const bass_soft = note("<~@57 [c1@6 d1@3 ~ d1@2 ~@4] [b1@6 a1@9 ~] [c1@5 ~ d1@3 ~ d1@3 ~@3] [c1@5 ~@11] ~@30>")
  .s("gm_synth_bass_2").gain(0.16)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B@2 C D A@2 E@2 F G H I J K L M N M O P Q@2 ~ R@2 S@2 T U V W T X Y Z AA Z AB Z AC@2 ~@2 AD X V AE AF X AG@2 AH ~@2
  AI AJ AK AL AK AJ AM AN ~@7 AJ@2 AK AL AK AJ AM AN AJ@2 AK AL AK AJ AM AN AJ@2 AK AO ~
>`.pickRestart({
  A: "c3@3 d2@5", B: "[c3@3 ~@5 g2@3 d2@5, ~@3 d2@5 ~@8, ~@5 d3@9 ~@2, ~@3 a3@4 ~, ~@7 d4@7 ~@2]/2",
  C: "[b2,f#3,b3]@3 [a2,e3,a3,c#4]@5, d4@15 ~", D: "g2@3 d2@5",
  E: "[[b2,f#3,b3]@3 ~@5 [c3,g3]@3 [d2,f#3]@5, d4@7 d4@7 ~@2, ~@6 [a2,e3,a3,c#4]@10 a3@15 ~]/2", // B5 C5 D A
  F: "[a2,e3,a3,c#4]@3 [b2,f#3,b3,d4]@5", G: "[g2,g3,b3,d4]@6 [f#3,a3,d4]@7 ~@3, ~@3 f#2@5",
  H: "[e2,g3,b3,d4]@3 [a2,a3]@5, ~@3 [e3,c#4]@4 ~", I: "[c3,g3]@3 [d2,f#3]@5, [a3,d4]@15 ~",
  J: "[a2,e3,a3,c#4]@3 [b2,b3,d4]@5, ~@3 f#3@4 ~", K: "[g2,g3,b3,d4]@3 [f#2,f#3,a3,d4]@5",
  L: "[e2,g3,b3,d4]@3 [a2,e3,a3,c#4]@5", M: "[d2,a3,d4,f#4]@3 [g2,b3,d4,g4]@5", N: "[b2,a3,d4,f#4]@3 [a2,a3,c#4,e4]@5",
  O: "[a2,a3,c#4,e4]@3 [f#3,b3,d4]@4 ~, ~@3 b2@5", P: "[d2,a3,d4,f#4]@6 [g2,b3,d4,g4]@9 ~",
  Q: "[[b2,a3,d4,f#4]@3 [a3,c#4,e4]@7 ~@6, ~@3 a2@8 ~@5]/2", R: "[~@7 d4@7 ~@2, ~@5 d3@9 ~@2, ~@3 a3@4 ~]/2",
  S: "[[f#3,b3]@5 ~ [e3,a3,c#4]@8 ~@2 g3@5 ~ f#3@9 ~, d4@14 d4@17 ~, ~@16 a3@15 ~]/2", // B5 A
  T: "[e3,a3,c#4]@5 ~ [f#3,b3,d4]@9 ~", U: "[g3,b3,d4]@5 ~ [f#3,a3,d4]@7 ~@3", V: "[e3,g3,b3,d4]@5 ~ [e3,a3,c#4]@9 ~",
  W: "g3@5 ~ f#3@9 ~, [a3,d4]@15 ~", X: "[g3,b3,d4]@5 ~ [f#3,a3,d4]@9 ~", Y: "[g3,b3,d4]@5 ~ [e3,a3,c#4]@7 ~@3",
  Z: "[a3,d4,f#4]@5 ~ [b3,d4,g4]@9 ~", AA: "[a3,d4,f#4]@5 ~ [a3,c#4,e4]@9 ~", AB: "[a3,c#4,e4]@5 ~ [f#3,b3,d4]@8 ~@2",
  AC: "[[a3,d4,f#4]@5 ~ [a3,c#4,e4]@14 ~@12]/2", AD: "[f#3,b3,d4]@5 ~ [e3,a3,c#4]@9 ~",
  AE: "[g3,b3,d4]@5 ~ [g3,c4,e4]@9 ~", AF: "[a3,d4,f#4]@5 ~ [f#3,b3,d4]@8 [e3,a3,c#4]@2",
  AG: "[[e3,g3,b3,d4]@5 ~ [e3,a3,c#4]@21 ~@5]/2", AH: "[d3,g3,a3,d4]", AI: "[g3,c4,d4]@3 [d3,f#3,a3]@5, ~@6 d4 ~@9",
  AJ: "[g3,c4,d4]@3 [d3,f#3,a3]@5, ~@3 d4@3 ~@2", AK: "[g3,c4,d4]@3 [d3,f#3,a3,d4]@5",
  AL: "~@4 a3@2 [a3,c#4]@2 c#4@2 a3@5 ~, [f#3,b3,d4]@3 e3@5, ~@2 c#4@4 d4@5 ~@5", // A Bm
  AM: "[g3,c4,d4]@6 [d3,f#3,a3]@9 ~, ~@3 d4@3 ~@2", // Gsus4 D
  AN: "d4@2 c#4@2 a3@2 [a3,c#4,d4]@2 c#4@2 ~@2 d4@2 c#4 ~, [f#3,b3]@6 e3@9 ~, ~@5 a3@2 ~", // Dmaj7 B5
  AO: "~ a3 ~@2, [f#3,b3,d4]@3 ~@5, ~ c#4@2 ~@5", // Bm
})).s("gm_epiano2").gain(0.16)

// chords · synth bass 1 · "SYN BASS 1"
const synth_bass_1 = note(`<
  A B C D E B C D F G H I F G H J K L M N O P Q A B C D F G H I F G H J R L M N O P Q A B S T U V W X Y ~@4 Z AA C AB AC
  AA C AB AD AE AF AG O P AH AI AA C D AJ AA C D AI AA C D AJ AA C D AI AA C AK ~
>`.pickRestart({
  A: "d5 [c3,g3] [g3,d4,d5] [c3,g3] [g3,d4,d5] [c3,g3] [g3,a3,d4,d5] [c3,g3] [g3,a3,c4,d4,d5] [d3,a3] [g3,a3,c4,d4,d5] [d3,a3] [g3,a3,c4,d4,d5] [d3,a3] [g3,a3,c4,d4,d5] [d3,a3]", // C5 G5 C5 G5 C5 Gsus2 C5 Gsus4 …
  B: "[a3,c4,d4,d5] [d3,a3] [a3,c4,d4,d5] [d3,a3] [a3,c4,d4,d5] [c3,g3] [a3,c4,d4,d5] [c3,g3] [a3,c4,d4,d5] [d3,a3] [a3,c4,d4,d5] [d3,a3] [c4,d4,d5] [d3,a3] [c4,d4,d5] [d3,a3]", // D7 D5 D7 D5 D7 C5 D7 C5 …
  C: "[c4,d4] [d3,a3] [c4,d4] [d3,a3] [c4,d4] [d3,a3] [a3,d4] [d3,a3] [a3,d4] [d3,a3] [a3,d4] [d3,a3] [a3,d4] [d3,a3] [a3,d4] [d3,a3]", // Csus2 D5 Csus2 D5 Csus2 D5
  D: "[a3,b3,d4] [d3,a3] [a3,b3,d4] [c#3,a3] [a3,b3,d4] [b2,a3] [a3,c#4,d4] [b2,a3] [a3,c#4,d4] [a2,a3] [a3,c#4,d4] [a2,a3] [a3,c#4,d4] [a2,a3] [a3,c#4,d4] a2", // Bm7 D5 Bm7 F#m Bm7 B7 Dmaj7 B7 …
  E: "[g3,d4,d5] [c3,g3] [g3,d4,d5] [c3,g3] [g3,d4,d5] [c3,g3] [g3,a3,d4,d5] [c3,g3] [g3,a3,c4,d4,d5] [d3,a3] [g3,a3,c4,d4,d5] [d3,a3] [g3,a3,c4,d4,d5] [d3,a3] [g3,a3,c4,d4,d5] [d3,a3]", // G5 C5 G5 C5 G5 C5 Gsus2 C5 …
  F: "[a3,d4]!16", G: "[a3,c#4]!6 [a3,d4]!10", H: "[b3,d4]!6 [a3,d4]!10", I: "[g3,d4]!6 [g3,e4]!10",
  J: "[g3,d4]!6 [g3,e4]!3 g3 [g3,e4]!2 e4 ~@3", // G5 C
  K: "[d4,f#4] [a3,d4,f#4] [d4,f#4] [a3,d4,f#4,a4] [d4,f#4] [a3,d4,f#4,a4] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5]", // D G5
  L: "[d4,f#4] [b3,d4,f#4,d5] [d4,f#4] [b3,d4,f#4,d5] [d4,f#4] [d4,f#4,d5] [c#4,e4,f#4,a4] [a3,c#4,e4,b4] [c#4,e4,f#4,a4] [a3,c#4,e4,b4] [c#4,e4,f#4,a4] [a3,b4] [f#4,a4] [c#4,e4,b4] [c#4,e4,f#4,a4] [a3,c#4,e4]", // D Bm D Bm D F#m7 A F#m7 …
  M: "[d4,f#4,f#5] [a3,d4,f#4] [d4,f#4,f#5] [a3,d4,f#4] [d4,f#4,f#5] [a3,d4,f#4] [d4,g4,f#5] [d4,g4] [d4,g4,g5] [d4,g4] [d4,g4,g5] [d4,g4] [d4,g4,g5] [d4,g4] [d4,g4,g5] [d4,g4]", // D Gmaj7 G5
  N: "[c#4,e4,c#5] [a3,c#4,e4] [c#4,e4,c#5] [a3,c#4,e4] [c#4,e4] [a3,c#4,e4] [b3,d4,b4] [b3,d4] [b3,d4,b4] [b3,d4] [b3,d4,b4] [b3,d4] [b3,d4,b4] [b3,d4]!3", // C#m A C#m A C#m A Bm
  O: "[d4,f#4] [a3,d4,f#4] [d4,f#4] [a3,d4,f#4] [d4,f#4] [a3,d4,f#4] [d4,g4]!10", // D G5
  P: "[d4,f#4] [b3,d4,f#4] [d4,f#4] [b3,d4,f#4] [d4,f#4] [b3,d4,f#4] [c#4,e4,a4] [a3,c#4,e4] [c#4,e4,a4] [a3,c#4,e4] [c#4,e4,a4] [c#4,e4] [c#4,e4,a4] [c#4,e4] [c#4,e4,a4] [c#4,e4]", // D Bm D Bm D Bm A C#m …
  Q: "[c#4,e4]!5 ~@11", // C#m
  R: "[d4,f#4] f#4 [d4,f#4] [a3,d4,f#4,a4] [d4,f#4] [a3,d4,f#4,a4] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5]", // D G5
  S: "[b4,d5] ~ [b4,d5]!2 [b4,c#5] [b4,d5] ~@6 [a4,b4] [a4,c#5] [a4,b4] [a4,c#5]", // Bm Bsus2 Bm Asus2 A Asus2 A
  T: "[g4,b4] ~ [g4,b4]!2 [g4,a4] [g4,b4] [d4,a4] ~ [d4,a4]!2 ~@2 [d4,g4] [d4,a4] [d4,g4] [d4,a4]", // G Gsus2 G D5 G5 D5 G5 D5
  U: "[e4,g4] ~ [e4,g4]!2 ~ [e4,g4] ~ [c#4,g4] ~@4 [c#4,a4] ~ [c#4,a4] ~", // Em C#dim F#m
  V: "[d4,a4] ~ [d4,a4] ~ [d4,b4] ~ [d4,b4] ~ [e4,b4] [e4,c5] ~ [e4,c5] ~ [e4,c5] ~ [e4,c5]", // D5 G E5 C
  W: "[e4,c5]!2 ~ [e4,c5]!3 [f#4,d5]!2 ~ [f#4,d5]!3 [f#4,c#5] ~@2 [f#4,d5]", // C D F#5 D
  X: "[d4,b4] ~ [d4,b4]!2 ~ [d4,b4] [d4,a4] ~ [d4,a4]!4 [d4,g4] [d4,a4] [d4,g4] [d4,f#4]", // G D5 G5 D5 G5 D
  Y: "[d4,g4] ~ [d4,g4] ~ [d4,g4] g4 [e4,g4,a4] a4 ~ a4 [e4,g4,a4] ~@5", // G5 A7
  Z: "~@5 [c3,g3] [a3,d4] [c3,g3] [a3,c4,d4] [d3,a3] [a3,c4,d4] [d3,a3] [a3,c4,d4] [d3,a3] [a3,c4,d4] [d3,a3]", // C5 D5 C5 D7 D5 D7 D5 D7 …
  AA: "[a3,c4,d4] [d3,a3] [a3,c4,d4] [d3,a3] [a3,c4,d4] [c3,g3] [a3,c4,d4] [c3,g3] [a3,c4,d4] [d3,a3] [a3,c4,d4] [d3,a3] [c4,d4] [d3,a3] [c4,d4] [d3,a3]", // D7 D5 D7 D5 D7 C5 D7 C5 …
  AB: "[a3,d4] [d3,a3] [a3,d4] [c#3,a3] [a3,d4] [b2,a3] [a3,d4] [b2,a3] [a3,d4] [a2,a3] [a3,d4] [a2,a3] [a3,d4] [a2,a3] [a3,d4] a2", // D5 F#m D5 B7 D5 B7 D5 A …
  AC: "d4 [c3,g3] d4 [c3,g3] d4 [c3,g3] [a3,d4] [c3,g3] [a3,c4,d4] [d3,a3] [a3,c4,d4] [d3,a3] [a3,c4,d4] [d3,a3] [a3,c4,d4] [d3,a3]", // C5 D5 C5 D7 D5 D7 D5 D7 …
  AD: "[d4,f#4]!3 [d4,f#4,a4] [d4,f#4] [d4,f#4,a4] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5] [d4,g4] [d4,g4,d5]", // D G5
  AE: "[d4,f#4] [d4,f#4,d5] [d4,f#4] [d4,f#4,d5] [c4,d4,f#4] [d4,f#4,d5] [c#4,e4,f#4,a4] [c#4,e4,b4] [c#4,e4,f#4,a4] [c#4,e4,b4] [c#4,e4,f#4,a4] [c#4,e4,b4] [c#4,e4,f#4,a4] [c#4,e4,b4] [c#4,e4,f#4,a4] [c#4,e4]", // D D7 D F#m7 C#m7 F#m7 C#m7 F#m7 …
  AF: "[d4,f#4,f#5] [d4,f#4] [d4,f#4,f#5] [d4,f#4] [d4,f#4,f#5] [d4,f#4] [d4,g4,f#5] [d4,g4] [d4,g4,g5] [d4,g4] [d4,g4,g5] [d4,g4] [d4,g4,g5] [d4,g4] [d4,g4,g5] [d4,g4]", // D Gmaj7 G5
  AG: "[c#4,e4,c#5] [c#4,e4] [c#4,e4,c#5] [c#4,e4]!3 [b3,d4,b4] [b3,d4] [b3,d4,b4] [b3,d4] [b3,d4,b4] [b3,d4] [b3,d4,b4] [b3,d4]!3", // C#m Bm
  AH: "[c#4,e4]!7 ~@9", // C#m
  AI: "~ [c3,g3] [g3,d4] [c3,g3] [g3,d4] [c3,g3] [g3,a3,d4] [c3,g3] [g3,a3,c4,d4] [d3,a3] [g3,a3,c4,d4] [d3,a3] [g3,a3,c4,d4] [d3,a3] [g3,a3,c4,d4] [d3,a3]", // C5 G5 C5 G5 C5 Gsus2 C5 Gsus4 …
  AJ: "[g3,d4] [c3,g3] [g3,d4] [c3,g3] [g3,d4] [c3,g3] [g3,a3,d4] [c3,g3] [g3,a3,c4,d4] [d3,a3] [g3,a3,c4,d4] [d3,a3] [g3,a3,c4,d4] [d3,a3] [g3,a3,c4,d4] [d3,a3]", // G5 C5 G5 C5 G5 C5 Gsus2 C5 …
  AK: "[a3,b3,d4] [d3,a3] [a3,b3,d4] [c#3,a3] [a3,b3,d4] ~@11", // Bm7 D5 Bm7 F#m Bm7
})).s("gm_synth_bass_1").gain(0.07).pan(0)

// chords · synth bass 1 · "SYN BASS 1" · soft notes
const synth_bass_1_soft = note(`<
  ~@15 A B C ~ D ~ E F ~@11 G B C ~ D ~ E F ~@2 H I J K L M N O@2 ~@2 P ~@7 B Q ~ D ~ E R ~@21
>`.pickRestart({
  A: "~@12 g3 [g3,e4]!3", B: "~ a4 ~@14", C: "~@5 b3 ~@5 [c#4,e4]!2 a3 ~ b4", D: "~@4 c#5 ~@9 b4 ~",
  E: "~@11 a3 ~ a3 ~ a3",
  F: "a4 a3 a4 a3 a4 [a3,c#4,e4] [c#4,e4,a4] [a3,c#4,e4] [c#4,e4,a4] [a3,c#4,e4] [c#4,e4,a4] [c#4,e4]!5", // A C#m
  G: "~@12 g3 [g3,e4]!2 g3", H: "~@6 [e4,a4] ~ [e4,a4] [a4,c#5] [a4,b4] [a4,c#5] ~@4", I: "~@10 [d4,g4] [d4,a4] ~@4",
  J: "~@9 [c#4,a4] ~ [c#4,a4] ~@4", K: "~@10 [e4,c5] ~ [e4,c5] ~ [e4,c5] ~",
  L: "~@2 [e4,c5] ~@5 [f#4,d5] ~@4 [f#4,d5] [f#4,c#5] ~", M: "~ d4 ~@2 [d4,b4] ~@2 [d4,a4] ~@8",
  N: "~@3 g4 ~@4 [e4,g4,a4] ~@2 a4 [e4,g4,a4] a4 [e4,g4,a4] a4", // A7
  O: "[e4,g4,a4] a4 [e4,g4,a4] a4 [e4,g4,a4] a4 [e4,g4,a4] a4 [e4,g4,a4] a4 [e4,g4,a4] a4 [e4,g4,a4] a4 [e4,a4] ~", // A7 A5
  P: "~ [c3,g3] d4 [c3,g3] d4 ~@11", Q: "~@15 b4",
  R: "a4 a3 a4 a3 a4 a3 a4 [a3,c#4,e4] [c#4,e4,a4] [a3,c#4,e4] [c#4,e4,a4] [c#4,e4]!5", // A C#m
})).s("gm_synth_bass_1").gain(0.03).pan(0)

// chords · synth bass 1 · "SYN BASS 1"
const synth_bass_1_2 = note(`<
  A B C D E F G H I J K L M N O P Q R S T Q U V A B C D ~@8 Q R S T Q U V A B W X Y Z AA AB AC AD@2 ~@2 AE AF AG AH AI
  AJ AK AL AM AN AO AP AM@2 ~ AQ AR AS AT AQ AR AS AT AQ AR AS AT AQ AR AS AT AQ AR AS AU ~
>`.pickRestart({
  A: "a3 [g3,a3,d4]!5 [f#3,a3,d4]!7 [f#3,d4] [f#3,a3,d4]!2", B: "[g3,c4,d4]!6 [f#3,c4,d4]!7 [f#3,d4]!3",
  C: "[f#3,a3,d4] [g3,a3,d4]!5 [f#3,a3,d4]!10", // D Gsus2 D
  D: "[f#3,a3,d4] [f#3,b3,d4] [b3,d4]!4 [a3,d4] [a3,c#4,d4]!6 [a3,c#4]!2 c#4", // D Bm D5 Dmaj7 A
  E: "[g3,a3] [g3,a3,d4]!5 [f#3,g3,d4] [f#3,a3,d4]!9", F: "[g3,c4,d4]!7 [f#3,c4,d4]!6 [f#3,d4]!3",
  G: "[g3,a3,d4]!6 [f#3,g3,d4] [f#3,a3,d4]!9", H: "[f#3,b3,d4]!2 [b3,d4]!5 [a3,c#4,d4]!7 [a3,c#4]!2", I: "[a3,d4]!16",
  J: "[a3,c#4]!6 [b3,d4]!3 ~@3 [b3,d4]!4", K: "[g3,b3]!6 [f#3,a3]!10", L: "[g3,d4]!6 [a3,c#4]!10",
  M: "[a3,d4]!2 ~@3 [a3,d4]!8 ~@3", N: "[a3,c#4]!2 ~@2 [a3,c#4]!2 [b3,d4]!10", O: "[g3,b3]!2 ~ [g3,b3]!3 [f#3,a3]!10",
  P: "[g3,d4]!6 [a3,c#4]!3 a3 [a3,c#4]!4 ~@2", Q: "[d4,f#4]!6 [d4,f#4,g4]!2 [d4,g4]!8",
  R: "[d4,f#4,g4]!2 [d4,f#4]!4 [c#4,e4,f#4]!2 [c#4,e4]!8", S: "[d4,e4,f#4]!3 [d4,f#4]!3 [d4,f#4,g4]!2 [d4,g4]!8",
  T: "[c#4,e4,g4] [c#4,e4]!5 [b3,d4,e4]!2 [b3,d4]!8", U: "[d4,f#4]!6 [c#4,e4,f#4]!2 [c#4,e4]!7 ~",
  V: "[c#4,e4]!5 ~ [c#4,e4]!7 ~@3", W: "[a4,d5]!6 [a4,c#5]!6 [g4,b4]!2 [f#4,a4]!2",
  X: "[g4,b4]!6 [f#4,a4]!6 [e4,g4]!2 [d4,f#4]!2", Y: "[e4,g4]!6 [c#4,a4]!7 ~@3", Z: "~ [d4,b4]!5 [e4,c5]!10",
  AA: "[a4,d5] ~ [a4,d5]!4 [b4,d5] ~ [b4,d5]!4 [a4,c#5,d5]!2 [g4,b4,c#5]!2", // D5 Bm Dmaj7 C#m7b5
  AB: "[g4,b4,c#5] ~ [g4,b4]!4 [d4,a4] ~ [d4,a4]!4 [d4,g4,a4]!2 [d4,f#4,g4] ~", // C#m7b5 G D5 Dsus4 Gmaj7
  AC: "[e4,g4]!6 [c#4,g4,a4] ~ [c#4,a4] ~ [c#4,a4]!6", AD: "[c#4,a4]!16", AE: "~@5 [g3,d4] [a3,d4]!7 d4 [a3,d4]!2",
  AF: "[g3,d4]!6 [f#3,d4]!10", AG: "[f#3,d4] [g3,d4]!5 [a3,d4]!10", AH: "[a3,d4] [b3,d4]!5 [a3,d4]!7 a3!2 ~",
  AI: "g3 [g3,d4]!6 [a3,d4]!9", AJ: "[g3,d4]!7 [f#3,d4]!9", AK: "[g3,d4]!7 [a3,d4]!9", AL: "[b3,d4]!7 [a3,d4]!7 a3!2",
  AM: "~@6 f#4!2 ~@8", AN: "g4!2 ~@4 f#4!2 ~@8", AO: "e4!3 ~@3 f#4!2 ~@8", AP: "g4 ~@5 e4!2 ~@8",
  AQ: "[a3,d5] a3 [a3,d5] a3 [a3,d5] a3 [f#3,d5] f#3 [f#3,d5] f#3 [f#3,d5] f#3 [f#3,d5] f#3 [f#3,d5] f#3", // D5 D
  AR: "[c4,d5] c4 [c4,d5] c4 [c4,d5] c4 [c4,d5] c4 [c4,d5] c4 [c4,d5] c4 [c4,d5] ~ d5 ~", AS: "a3!6 f#3!10",
  AT: "f#3!2 ~@5 c#4!9", AU: "f#3!2 ~@14",
})).s("gm_synth_bass_1").gain(0.05).pan(1)

// chords · synth bass 1 · "SYN BASS 1" · soft notes
const synth_bass_1_soft_2 = note(`<
  ~ A ~ B C A ~ D ~ E ~@2 F G H I J K J L J M N ~ A ~ B ~@8 J K J L J M N ~ A ~@2 O P Q R S ~@4 T ~@2 U C ~@2 V J K J L
  J W ~@2 A ~ X ~ A ~ X ~ A ~ X ~ A ~ X ~ A ~ Y ~
>`.pickRestart({
  A: "~@13 c4 b3 a3", B: "~@2 f#3!4 c#4 ~@6 d4!2 [a3,d4]", C: "d4 ~@15", D: "~@2 f#3!4 c#4 ~@7 d4!2",
  E: "~@9 [b3,d4]!3 ~@4", F: "~@2 [a3,d4]!3 ~@8 [a3,d4]!3", G: "~@2 [a3,c#4]!2 ~@12", H: "~@2 [g3,b3] ~@13",
  I: "~@14 [a3,c#4]!2", J: "~@8 f#4 ~@7", K: "~@2 g4 ~@5 f#4 ~@7", L: "~ g4!2 ~@5 e4 ~@7",
  M: "g4!3 ~@5 f#4!2 ~@5 [c#4,e4]", N: "~@5 [c#4,e4] ~@7 [c#4,e4] ~@2", O: "~@13 [c#4,a4]!3", P: "[d4,b4] ~@15",
  Q: "~ [a4,d5] ~@5 [b4,d5] ~@8", R: "~ [g4,b4] ~@5 [d4,a4] ~@7 [d4,f#4,g4]", S: "~@7 [c#4,g4,a4] ~ [c#4,a4] ~@6",
  T: "~ [g3,d4]!4 ~@11", U: "~@13 d4!2 [a3,d4]", V: "~@14 d4!2", W: "g4!3 ~@5 f#4!2 ~@6", X: "~@2 f#3!4 c#4 ~@9",
  Y: "~@2 f#3!3 ~@11",
})).s("gm_synth_bass_1").gain(0.04).pan(1)

// chords · pad warm · "WARM PAD"
const pad_warm = note("<~@52 A@4 ~@35>".pickRestart({
  A: "[g4@26 f#4@6 a4@3 f#4@3 a4@3 f#4@3 a2 ~@3 a4@13 ~@3, [c4,d4], g3@11 a4 ~@4, ~@23 a3@8 ~]/4", // Csus2
})).s("gm_pad_warm").gain(0.04).pan(0.3)

// other · violin
const violin = note("<~@52 A@3 B C D@2 E B F ~@21 G H ~@6>".pickRestart({
  A: "[~@12 [f#4,d5,a5]@31 g#5 [g#5,a5] [f#5,g#5] [e5,f#5]!2]/3", B: "d5@11 g#4 [g#4,a4] [f#4,g#4] [e4,f#4]!2", C: "d4",
  D: "[[d5,a5]@25 b5 d5 ~@3 [d5,b5] ~]/2", E: "b5@6 a5@5 g#5 [g#5,a5] [f#5,g#5] [e5,f#5]!2, d5@3 ~", F: "d4@3 ~@5",
  G: "a5@11 g#5 [g#5,a5] [f#5,g#5] [e5,f#5]!2", H: "d5@11 ~@5",
})).s("gm_violin").gain(0.03)

// bass · fretless bass · "FRETLESS" · Dsus2 Esus2 Gmaj7
const bass_2 = note("<~@54 [~@10 e3 [d3,e3] f#3 [e3,f#3] g3 [f#3,g3]] a3 ~@35>").s("gm_fretless_bass").gain(0.07).pan(1)

// other · pad metallic · "METAL PAD"
const pad_metallic = note("<A@2 B C@2 ~@86>".pickRestart({
  A: "[~@2 d5@8 ~@3 e5 ~@2]/2", B: "~ a4@7", C: "[~@14 e4@4 d4@13 ~]/2",
})).s("gm_pad_metallic").gain(0.04)

// drums · kick
const kick = s("bd").struct("<~@23 A@12 B@5 A C A@9 C D ~@7 E A@2 F D F D F D ~ A@19 D ~>".pickRestart({
  A: "x ~@2 x ~ x ~ x", B: "x ~@2 x!3 ~ x", C: "x ~@2 x ~ x ~@2", D: "x", E: "~@7 x", F: "x ~@6 x",
})).gain(0.42)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@57 [x ~@2 x ~ x ~ x]!3 [x ~@2 x ~ x ~@2] ~@30>").gain(0.18)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@34 A ~@8 A ~@3 A ~@9 B C B D ~ E D B@3 D B D ~@21>".pickRestart({
  A: "~@11 x ~@4", B: "~ x ~ x", C: "~@4 x ~@4 x ~@2 x ~@2 x", D: "~ x ~@2", E: "~@9 x ~ x ~@4",
})).gain(0.24)

// … 66 more lines

More by Madonna