Strudelify
Nothing Really Matters cover art

1998 · Ray of Light

Nothing Really Matters

Madonna

KeyD minorTempo120 bpm
0:00/0:00
// Nothing Really Matters — Madonna
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 129 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 1 · "Bass"
const bass = note(`<
  ~@28 A B C D A B E F G@2 H A I J H A I J H A K L H A I J A B C D A B E F A B C D A B E F H A M@2 A@2 N@2 O@2 P@2 Q R S
  T U V H A I J H A I J A B C D A B E F G@2 W@2 A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "d2@3 ~ d2@2 ~ d2 f1@2 f1@2 g1@2 a1@2", B: "c2@3 ~ c2@2 ~ c2 f1@2 f1@2 g1@2 a1@2",
  C: "g1@3 ~ g1@2 ~ g1 d1@2 d1@2 f1@2 f1@2", D: "g1@3 ~ g1@2 ~ f1 g1@2 g1@2 a1@2 c2@2",
  E: "g1@3 ~ g1@2 ~ g1 d1@2 d1@2 f1@2 g1@2", F: "f1@3 ~ f1@2 ~ f1 e1@3 ~ e1@3 ~", G: "[d1@29 ~@3]/2",
  H: "d2@3 ~ d2@2 ~ d2 f1@2 f1@2 g1@2 g1@2", I: "bb1@3 ~ bb1@2 ~ bb1 f1@2 f1@2 bb1@2 a1@2",
  J: "f1@3 ~ f1@2 ~ f1 g1@2 g1@2 a1@2 c2@2", K: "c2@3 ~ c2@2 ~ c2 g1@2 g1@2 a1@2 a1@2",
  L: "c2@3 ~ c2@2 ~ c2 g1@2 a1@2 c2@2 db2@2", M: "d2@3 ~ d2@3 ~ f1@2 f1@2 g1@2 a1@2",
  N: "bb1@3 ~ bb1@3 ~ f1@2 f1@2 g1@2 f1@2", O: "bb1@3 ~ bb1@2 ~ bb1 f1@2 f1@2 g1@2 f1@2",
  P: "g1@3 ~ g1@3 ~ f1@2 g1@2 d1@2 f1@2", Q: "g1@3 ~ g1@2 ~ g1 f1@2 g1@2 d1@2 f1@2",
  R: "g1@3 ~ g1@2 ~ g1 f1@2 g1@2 a1@2 c2@2", S: "a1@3 ~ a1@3 ~ e1@2 e1@2 g1@2 g1@2",
  T: "a1@3 ~ a1@2 ~ a1 e1@2 e1@2 g1@2 a1@2", U: "bb1@3 ~ bb1@2 ~ bb1 f1@2 f1@2 bb1@2 d2@2",
  V: "c2@3 ~ c2@2 ~ c2 g1@2 g1@2 a1@2 c2@2", W: "[d1@22 ~ d1 f1@2 f1@2 g1@2 a1@2]/2",
})).s("gm_synth_bass_1").gain(0.39)

// chords · clavinet · "Clavi"
const clavinet = note(`<
  A B C D E@2 F G H@2 I@2 J K L@2 M C N O@2 P Q R@2 S ~@2 T@10 ~@16 T@10 U T@7 ~@24 T@32 ~
>`.pickRestart({
  A: "~@5 f5@2 ~ f5@2 ~@2 f5 ~ e5@2", B: "~@2 e5@2 ~ e5 ~ f5@2 ~@2 f5@2 ~ f5 ~",
  C: "~ e5@2 ~ e5@2 ~@2 e5 ~ f5@2 ~ f5@2 ~", D: "~ f5 ~ e5@2 ~@2 e5@2 ~ e5 ~ f5@2 ~@2",
  E: "[f5@2 ~ f5 ~@2 d5@2 ~ d5@2 ~ d5 ~@2 f5@2 ~ f5@2 ~@2 f5 ~ e5@2 ~ e5@2 ~@2 e5]/2",
  F: "~ f5@2 ~@2 f5@2 ~ f5 ~ e5@2 ~@2 e5@2", G: "~ e5 ~@2 f5@2 ~ f5@2 ~@2 f5 ~ e5@2 ~",
  H: "[e5@2 ~@2 e5 ~ f5@2 ~@2 f5@2 ~ f5 ~ d5@2 ~@2 d5@2 ~ d5 ~@2 f5@2 ~ f5@2 ~@2]/2",
  I: "[f5 ~ e5@2 ~ e5@2 ~@2 e5 ~ f5@2 ~@2 f5@2 ~ f5 ~ d5@2 ~@2 d5@2 ~ d5 ~@2 f5@2]/2",
  J: "~ f5@2 ~ f5 ~@2 e5@2 ~ e5@2 ~@2 e5 ~", K: "f5@2 ~ f5@2 ~@2 f5 ~ d5@2 ~@2 d5@2 ~",
  L: "[d5 ~ f5@2 ~@2 f5@2 ~ f5 ~@2 e5@2 ~ e5@2 ~@2 e5 ~ f5@2 ~ f5@2 ~@2 f5 ~ d5@2]/2",
  M: "~@2 d5@2 ~ d5 ~ f5@2 ~@2 f5@2 ~ f5 ~", N: "~ f5 ~ d5@2 ~@2 d5@2 ~ d5 ~ f5@2 ~@2",
  O: "[f5@2 ~ f5 ~@2 e5@2 ~ e5@2 ~ e5 ~@2 f5@2 ~ f5@2 ~@2 f5 ~ d5@2 ~ d5@2 ~@2 d5]/2",
  P: "~ a5@2 ~@2 a5@2 ~ a5 ~ f5@2 ~@2 g5@2", Q: "~ a5 ~@2 g5@2 ~ g5@2 ~@2 g5 ~ d5@2 ~",
  R: "[d5@2 ~@2 e5 ~ f5@2 ~@2 f5@2 ~ f5 ~ e5@2 ~@2 e5@2 ~ e5 ~@2 f5@2 ~ f5@2 ~@2]/2", S: "f5 ~ d5@2 ~ d5@2 ~@2 d5 ~@6",
  T: "~@4 [f3,a3,c4,d4]@2 ~ [f3,a3,c4,e4]@2 ~ [f3,a3,c4,e4] ~@3 [a3,d4,f4] ~", // Dm7 Fmaj7 Dm
  U: "~@4 [f3,a3,c4,d4] ~@2 [f3,a3,c4,e4]@2 ~ [f3,a3,c4,e4] ~@3 [a3,d4,f4] ~", // Dm7 Fmaj7 Dm
})).s("gm_clavinet").gain(0.24)

// chords · piano
const piano = note("<~@21 A ~@50 B@2 C@2 D@2 E@2 F@2 G H I J K L ~@41>".pickRestart({
  A: "~ f6@15", B: "[[f3,a3,d4,f4]@19 ~ [c4,c5]@3 ~ [d4,d5]@3 ~ [f4,f5]@3 ~]/2",
  C: "[e5@13 ~@3 d5@11 ~ [d4,f4,a4]@3 ~, [f3,a3,c4,e4]@27 ~@5]/2", // Dm Fmaj7
  D: "[[f3,bb3,d4,bb4]@19 ~ [c4,c5]@3 ~ [d4,d5]@3 ~ [f4,f5]@3 ~]/2", // Bb C D F
  E: "[e5@13 ~@3 e5@8 [d4,f4,bb4]@6 ~@2, [f3,bb3,e4]@3 ~]/2", // Bb
  F: "[[g3,bb3,d4,f4]@19 ~ [c4,c5]@3 ~ [d4,d5]@3 ~ [f4,f5]@3 ~]/2", G: "[e4,g4,bb4,e5]@13 ~@3",
  H: "[d4,g4,bb4,d5]@13 ~@3", I: "[g3,db4,e4]@13 ~@3", J: "[g3,db4,e4]@11 ~ [a3,db4]@3 ~",
  K: "[f3,bb3,d4]@4 [f3,bb3,d4]@3 ~", L: "[f3,g3,bb3,d4]@3 ~ [g3,bb3,c4,f4]@3 ~",
})).s("gm_piano").gain(0.29)

// other · synth strings 1 · "Synth"
const synth_strings_1 = note("<A@7 B@7 C@7 D@7 ~@46 E@2 ~@2 E@2 ~@2 E@2 F@2 E@2 G@8 ~@33>".pickRestart({
  A: "[~@5 a4@18 a4@18 ~ a4@18 a4@18 ~ a4@33]/7", B: "[~@4 a4@37 [f3,a3,d4]@37 [f3,bb3,d4]@34]/7",
  C: "[~@2 [f3,a3,d4]@37 [f3,bb3,d4]@37 [f3,a3,d4]@36]/7", // Dm Bb Dm
  D: "[~ [a3,c4,f4]@18 ~ [g3,c4,e4]@18 [f3,a3,d4]@37 [f3,bb3,d4]@18 ~ [f3,a3,c4]@18]/7", // F C Dm Bb F
  E: "d5 e5 d5 e5 d5 e5 d5 e5 d5 e5 d5 e5 d5 e5 d5 e5", F: "e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5",
  G: "[~@8 d4@14 ~@2 d4@14 ~@2 d4@14 ~@2 d4@14 ~@2 d4@14 ~@2 d4@14 ~@2 d4@14 bb5 ~ bb4 ~ bb5 ~ bb4!2 bb5 ~, ~@60 d4@3 ~]/8",
})).s("gm_synth_strings_1").gain(0.19)

// other · lead 1 square · "Electronic"
const lead_1_square = note(`<
  ~@3 A B@2 C D E@2 F@2 G H I@2 J K L M@2 N O P@2 ~@13 Q@2 R@2 Q@2 R@2 Q@2 S T Q@2 U V ~@8 W X W Y W X W Y ~@18 Q@2 R@2
  Q@2 Z@2 W X W Y W X W Y ~@4 W X W Y W X W Y W X W Y W X W Y W AA ~@3
>`.pickRestart({
  A: "~ f5 ~ e5@2 ~@2 e5@2 ~ e5 ~ f5@2 ~@2",
  B: "[f5@2 ~ f5 ~@2 d5@2 ~ d5@2 ~ d5 ~@2 f5@2 ~ f5@2 ~@2 f5 ~ e5@2 ~ e5@2 ~@2 e5]/2",
  C: "~ f5@2 ~@2 f5@2 ~ f5 ~ e5@2 ~@2 e5@2", D: "~ e5 ~@2 f5@2 ~ f5@2 ~@2 f5 ~ e5@2 ~",
  E: "[e5@2 ~@2 e5 ~ f5@2 ~@2 f5@2 ~ f5 ~ d5@2 ~@2 d5@2 ~ d5 ~@2 f5@2 ~ f5@2 ~@2]/2",
  F: "[f5 ~ e5@2 ~ e5@2 ~@2 e5 ~ f5@2 ~@2 f5@2 ~ f5 ~ d5@2 ~@2 d5@2 ~ d5 ~@2 f5@2]/2",
  G: "~ f5@2 ~ f5 ~@2 e5@2 ~ e5@2 ~@2 e5 ~", H: "f5@2 ~ f5@2 ~@2 f5 ~ d5@2 ~@2 d5@2 ~",
  I: "[d5 ~ f5@2 ~@2 f5@2 ~ f5 ~@2 e5@2 ~ e5@2 ~@2 e5 ~ f5@2 ~ f5@2 ~@2 f5 ~ d5@2]/2",
  J: "~@2 d5@2 ~ d5 ~ f5@2 ~@2 f5@2 ~ f5 ~", K: "~ e5@2 ~ e5@2 ~@2 e5 ~ f5@2 ~ f5@2 ~",
  L: "~ f5 ~ d5@2 ~@2 d5@2 ~ d5 ~ f5@2 ~@2",
  M: "[f5@2 ~ f5 ~@2 e5@2 ~ e5@2 ~ e5 ~@2 f5@2 ~ f5@2 ~@2 f5 ~ d5@2 ~ d5@2 ~@2 d5]/2",
  N: "~ a5@2 ~@2 a5@2 ~ a5 ~ f5@2 ~@2 g5@2", O: "~ a5 ~@2 g5@2 ~ g5@2 ~@2 g5 ~ d5@2 ~",
  P: "[d5@2 ~@2 e5 ~ f5@2 ~@2 f5@2 ~ f5 ~ e5@2 ~@2 e5@2 ~ e5 ~@2 f5@2 ~@5]/2", Q: "[[f3,a3,d4]@29 ~@3]/2",
  R: "[[f3,bb3,d4]@29 ~@3]/2", S: "[a3,c4,f4]@13 ~@3", T: "[g3,c4,e4]@13 ~@3", U: "[f3,bb3,d4]@13 ~@3",
  V: "[f3,a3,c4]@13 ~@3", W: "~ f5 g5 d6@2 f5 g5 a5", X: "~ f5 g5 c6@2 f5 g5@2", Y: "~ f5 g5 bb5@2 d5 e5 f5",
  Z: "[~@22 bb5 ~ bb4 ~ bb5 ~ bb4!2 bb5 ~, [f3,bb3,d4]@29 ~@3]/2", AA: "~ f5 g5 c6@2 ~@3",
})).s("gm_lead_1_square").gain(0.12)

// other · lead 1 square · "Electronic" · soft notes
const lead_1_square_soft = note("<A B C ~@21 D E ~@99 F G H ~>".pickRestart({
  A: "~@5 f5@2 ~ f5@2 ~@2 f5 ~ e5@2", B: "~@2 e5@2 ~ e5 ~ f5@2 ~@2 f5@2 ~ f5 ~",
  C: "~ e5@2 ~ e5@2 ~@2 e5 ~ f5@2 ~ f5@2 ~", D: "~@6 f5 ~", E: "f5 ~ d5@2 ~ d5@2 ~@2 d5 ~@6", F: "~@5 f5 g5@2",
  G: "~ f5 g5 d6@2 f5 g5 a5", H: "~ f5 g5 bb5@2 d5 e5 f5",
})).s("gm_lead_1_square").gain(0.06)

// drums · kick
const kick = s("bd").struct(`<
  ~@28 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B C ~ A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x",
})).gain(0.39)

// drums · snare
const snare = s("sd").struct("<~@28 [~ x ~ x]!76 ~@4 [~ x ~ x]!20 ~>").gain(0.39)

// drums · clap
const clap = s("cp").struct("<~@28 [~ x ~ x]!76 ~@4 [~ x ~ x]!20 ~>").gain(0.39)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@28 A B@9 A B@3 A B@3 A B@3 A B@3 A B@7 A B@7 A B@17 A B@3 A B@3 A B@11 A B@7 A B@7 A B@3 ~
>`.pickRestart({
  A: "~ x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", B: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2",
})).gain(0.29)

// drums · open hat
const open_hat = s("oh").struct("<~@28 [~ x ~ x ~ x ~ x]!100 ~>").gain(0.29)

// drums · crash
const crash = s("cr").struct(`<
  ~@28 A ~@9 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7 A ~@7 A ~@17 A ~@3 A ~@3 A ~@11 A ~@7 A ~@7 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.29)

// drums · tambourine
const tambourine = s("tb").struct("<~@28 [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!100 ~>").gain(0.24)

// drums · bongos
const bongos = s("bongo:4").struct("<~@28 [~@2 x ~ x ~@2 x ~@2 x ~@3 x ~]!100 ~>").gain(0.64)

stack(
  bass, clavinet, piano, synth_strings_1, lead_1_square, lead_1_square_soft, kick, snare, clap, hihat, open_hat, crash,
  tambourine, bongos
)

More by Madonna