Strudelify

Cinderella

Britney Spears

KeyC♯ minorTempo125 bpm
0:00/0:00
// Cinderella — Britney Spears
// 125 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 shamisen (copy of ch 2 pizzicato strings)
// note: Full arrangement: all 14 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · pizzicato strings
const pizzicato_strings = note("<A B ~@2 C D ~@3 E F ~@3>".pickRestart({
  A: "e3@2 ~@3 c#3@2 ~@2 a2@2 ~@3 e3@2 ~@2 d#3@2 ~@3 b2@2 ~@2 f#2@2 ~@3", B: "d#3@2 ~@3 c#3@2 ~@25",
  C: "~@18 e3@2 ~@3 c#3@2 ~@3 a2@2 ~@2", D: "e3@2 ~@3 d#3@2 ~@2 b2@2 ~@3 f#2@2 ~@3 d#3@2 ~@2 c#3@2 ~@7",
  E: "~@5 e3@2 ~@3 c#3@2 ~@2 a2@2 ~@3 e3@2 ~@2 d#3@2 ~@3 b2@2 ~@2", F: "f#2@2 ~@3 d#3@2 ~@3 c#3@2 ~@20",
})).s("gm_pizzicato_strings").gain(0.38)

// other · orchestra hit
const orchestra_hit = note("<~@2 [~@9 c#5@4 ~@19] ~@2 [~@23 c#5@4 ~@5] ~@4 [~@5 c#5@2 ~@9] ~@3>")
  .s("gm_orchestra_hit").gain(0.28)

// other · synth bass 1
const synth_bass_1 = note("<~@2 A B C D A B E F G B E H>".pickRestart({
  A: "~@9 c#6@2 ~@17 c#6@2 ~@2", B: "~@7 c#6 ~@8", C: "c#6 ~@15", D: "~@23 c#6@2 ~@7", E: "c#6@2 ~@17 c#6@2 ~@11",
  F: "~@5 c#6@2 ~@16 c#6@2 ~@7", G: "~@5 c#6 ~@8 c#6 ~", H: "~@5 c#6@2 ~@25",
})).s("gm_lead_8_bass_lead").gain(0.12)

// bass · piano
const bass = note("<~@2 [~@9 c#2@4 ~@19] ~@2 [~@23 c#2@4 ~@5] ~@4 [~@5 c#2@2 ~@9] ~@3>").s("gm_piano").gain(0.12)

// bass · fretless bass
const bass_2 = note("<~@5 A B C D E F G H I>".pickRestart({
  A: "~@23 c#1@2 ~@3 c#1@2 ~@2", B: "~@9 c#1@2 ~@17 c#1@2 ~@2", C: "c#1 ~@6 c#1 ~@8",
  D: "c#1@2 ~@3 c#1@2 ~@12 c#1@2 ~@11", E: "~@5 c#1@2 ~@3 c#1@2 ~@11 c#1@2 ~@7", F: "~@5 c#1 ~ c#1 ~@6 c#1 ~",
  G: "~@14 c#1@2 ~@3 c#1@2 ~@11", H: "c#1@2 ~@17 c#1@2 ~@2 c#1@2 ~@7", I: "~@5 c#1@2 ~@25",
})).s("gm_fretless_bass").gain(0.38)

// drums · kick
const kick = s("bd").struct("<~ A B C D E B F G H I C J K>".pickRestart({
  A: "~@5 x ~@17 x ~@8", B: "~@9 x ~@18 x ~@3", C: "~@7 x ~@8", D: "x ~@8 x ~@6", E: "~@17 x ~ x ~ x ~ x ~@8",
  F: "~@7 x ~@6 x ~", G: "x ~@18 x ~@12", H: "~@5 x ~@17 x ~@4 x ~@3", I: "~@5 x ~@4 x ~@17 x ~@3",
  J: "x ~@13 x ~@4 x ~@12", K: "~@5 x ~@26",
})).gain(0.48)

// drums · rim
const rim = s("rim").struct("<~@2 [~@5 x!5 ~@22] ~@3 [~@23 x!5 ~@4] ~@4 [~@10 x!5 ~@17] ~@2>").gain(0.32)

// drums · clap
const clap = s("cp").struct("<~ [~@7 x ~@8] [x ~@8 x ~@6] [~@5 x ~@17 x ~@8] [~@9 x ~@22] ~@9>").gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@5 A B C D A B C E A>".pickRestart({
  A: "~@7 x ~@8", B: "x ~@18 x ~@12", C: "~@5 x ~@17 x ~@8", D: "~@9 x ~@18 x ~@3", E: "~@5 x ~@8 x ~",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~ A B C D E F G H I J K L M>".pickRestart({
  A: "~@14 x ~@16 x", B: "x ~@4 x!5 ~@8 x ~@13", C: "~@5 x ~@17 x ~@8", D: "~@8 x!2 ~@8 x ~@4 x ~@4 x ~@3",
  E: "x ~@4 x ~@3 x ~@4 x ~@4 x ~@3 x ~@4 x ~@3", F: "x ~@2 x ~ x ~@3 x ~@4 x ~@4 x ~@3 x!6 ~@3",
  G: "x ~@4 x ~@3 x ~@4 x ~@8 x ~@4 x ~@3", H: "x ~@4 x ~@3 x ~@2 x ~ x ~@4 x ~@3 x ~@4 x ~@3",
  I: "x ~@4 x ~@4 x ~@3 x ~@4 x ~@3 x ~@8", J: "x ~@4 x ~@4 x ~@3 x ~@4 x ~ x ~ x ~@4 x ~@3",
  K: "x ~@4 x ~@4 x!5 ~@4 x ~@3 x ~@4 x ~@3", L: "x ~@9 x ~@3 x ~@4 x ~@3 x ~@4 x ~ x ~",
  M: "x ~@4 x ~@4 x ~@3 x ~@4 x ~@12",
})).gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@6 A B C D E F ~ G>".pickRestart({
  A: "~@7 x ~@24", B: "~@7 x ~@4 x ~@19", C: "~ x", D: "~@16 x ~@4 x ~@10", E: "~@13 x ~@2", F: "~@13 x ~ x",
  G: "~@3 x ~@28",
})).gain(0.24)

// drums · china
const china = s("cr").struct("<~ A B ~@2 C D ~@3 E F ~@2>".pickRestart({
  A: "~@5 x ~@26", B: "~@9 x ~@22", C: "~@23 x ~@8", D: "~@7 x", E: "~@5 x ~@10", F: "~@7 x ~@8",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~@31 x] ~@2 [~ x ~@2] ~@9>").gain(0.32)

// drums · bongos
const bongos = s("bongo:18").struct("<~@5 [~@7 x!4 ~ x!6 ~ x!4 ~@9] ~@8>").gain(1.05)

stack(
  pizzicato_strings, orchestra_hit, synth_bass_1, bass, bass_2, kick, rim, clap, snare, hihat, hihat_soft, china,
  tambourine, bongos
)

More by Britney Spears