Strudelify

Naked

Spice Girls

KeyF majorTempo80 bpm
0:00/0:00
// Naked — Spice Girls
// 80.1 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80.1/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 · epiano1 · "Spice"
const epiano1 = note(`<
  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@2 B A B A B A B A B A B A B A B A B A ~@8 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 C D ~@7
>`.pickRestart({
  A: "[d4,f4,a4,bb4]", B: "[eb4,f4,ab4] [f4,g4,bb4]", C: "[eb4,f4,ab4] g4", D: "a4",
})).s("gm_epiano1").gain(0.33)

// chords · epiano1 · "Spice" · soft notes
const epiano1_soft = note("<~@81 A B C D C D C D ~>".pickRestart({
  A: "~ [f4,bb4]", B: "[d4,f4,bb4]", C: "[eb4,f4,ab4] [f4,g4,bb4]", D: "[d4,f4,a4,bb4]",
})).s("gm_epiano1").gain(0.05)

// other · acoustic guitar steel · "Girls"
const acoustic_guitar_steel = note(`<
  A B A B A B A B ~@4 A B A B A B A B A B A B A B A ~@4 A B A B A B A B A B A B A B A ~@16 A B A B A B A B A B A B A B A
  B ~@12
>`.pickRestart({
  A: "bb3 a3 f3 d3@5", B: "bb3 ab3@2 f3@3 c4@2",
})).s("gm_acoustic_guitar_steel").gain(0.48)

// bass · electric bass finger · "Programd"
const bass = note(`<
  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@2 B A B A B A B A B A B A B A B A B A ~@8 A B A B A B A B A ~ A
  B A B A B A B A B A B A B ~@12
>`.pickRestart({
  A: "d1 d2 ~ d2 ~ d2 ~ d2 a1!3 ~ a1@4", B: "ab1@2 ~ ab1 ~ ab1 ~ ab1 c2!3 ~ c2@3 ~",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · vibraphone
const vibraphone = note(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@16 A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~@9
>`.pickRestart({
  A: "~@3 f6, ~@7 [c6,d6]@5 ~@4, ~ a6", // Csus2
})).s("gm_vibraphone").gain(0.12).pan(0.9)

// chords · vibraphone · soft notes
const vibraphone_soft = note("<~@82 A ~ A ~ A ~ A ~>".pickRestart({
  A: "~@3 f6, ~@7 [c6,d6]@5 ~@4, ~ a6", // Csus2
})).s("gm_vibraphone").gain(0.04).pan(0.9)

// other · tremolo strings · "AlanTaff"
const tremolo_strings = note(`<
  ~@4 A B A C ~@10 A B A C A B A C A ~@10 A B A C A B A C A ~@8 D E D E D E D F G ~ A B A C A B A C A B A C A B A C A H
  ~@8
>`.pickRestart({
  A: "[f4,f5]", B: "[bb4,bb5] [ab4,ab5]", C: "[bb4,bb5] [c5,c6]",
  D: "[bb5,bb6] ~@3 [bb5,bb6] ~@3 [bb5,bb6] ~@3 [bb5,bb6] ~@3", // Bb
  E: "[db6,db7] ~@3 [db6,db7] ~@3 [c6,c7] ~@3 [c6,c7] ~@3", F: "[ab5,ab6] [g5,g6]", G: "[f5,f6]@3 ~", H: "bb5 ~",
})).s("gm_tremolo_strings").gain(0.24).pan(0.4)

// other · tremolo strings · "AlanTaff" · soft notes
const tremolo_strings_soft = note("<~@81 A B C B D B C B ~>".pickRestart({
  A: "bb4 [ab4,ab5]", B: "[f4,f5]", C: "[bb4,bb5] [c5,c6]", D: "[bb4,bb5] [ab4,ab5]",
})).s("gm_tremolo_strings").gain(0.07).pan(0.4)

// other · lead 1 square
const lead_1_square = note("<~@4 A@4 ~@3 B A@14 C ~@3 B A@14 C ~@9 B ~@3 B ~@3 B A@16 D@2 ~@8>".pickRestart({
  A: "[f6@6 eb6 ab6]/2", B: "~@3 c5", C: "f6", D: "[f6@3 ~]/2",
})).s("gm_lead_1_square").gain(0.11)

// other · lead 1 square · soft notes
const lead_1_square_soft = note("<~@81 A B@6 C@2>".pickRestart({
  A: "~@2 eb6 ab6", B: "[f6@6 eb6 ab6]/2", C: "[f6@3 ~]/2",
})).s("gm_lead_1_square").gain(0.05)

// chords · electric guitar jazz · "TAFFSTER"
const electric_guitar_jazz = note(`<
  ~@12 A B A B A B ~@13 A B A B A B ~@28 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@10
>`.pickRestart({
  A: "[d4,f4,a4,bb4]", B: "[eb4,f4,ab4] [f4,g4,bb4]", C: "[eb4,f4,ab4] ~",
})).s("gm_electric_guitar_jazz").gain(0.03).pan(0.2)

// chords · electric guitar jazz · "TAFFSTER" · soft notes
const electric_guitar_jazz_2 = note("<~@81 A ~ A ~ A ~ A ~@2>".pickRestart({
  A: "[eb4,f4,ab4] ~", // Fm7
})).s("gm_electric_guitar_jazz").gain(0.01).pan(0.2)

// other · string ensemble 1
const string_ensemble_1 = note("<~@46 A@8 B C B C B C B C B ~@27>".pickRestart({
  A: "[[f1,f2]@127 ~]/8", B: "bb2", C: "gb2 ab2",
})).s("gm_string_ensemble_1").gain(0.25)

// other · soprano sax
const soprano_sax = note("<~@46 [~ a3@2 ~] ~@43>").s("gm_soprano_sax").gain(0.62).pan(0.6)

// other · tremolo strings
const tremolo_strings_2 = note("<~@47 A@6 B ~@36>".pickRestart({
  A: "[[eb5,eb6]@9 ~@7]/2", B: "[eb5,eb6]",
})).s("gm_tremolo_strings").gain(0.03).pan(0.7)

// bass · lead 2 sawtooth
const bass_2 = note("<~@47 A@3 ~@40>".pickRestart({
  A: "[f1@11 ~]/3",
})).s("gm_lead_2_sawtooth").gain(0.28)

// drums · kick
const kick = s("bd").struct("<~@3 A B@3 ~ B@8 ~@2 B@8 C B@8 ~@2 B@8 C B@4 D@4 B@9 C B@14 ~@12>".pickRestart({
  A: "~@3 x", B: "x ~@2 x ~@3 x ~@2 x ~@5", C: "x", D: "x ~@2 x ~@6 x ~@5",
})).gain(0.42)

// drums · snare
const snare = s("sd").struct("<~@3 A B@3 ~ B@8 ~@2 B@8 ~ B@8 ~@2 B@8 ~ B@4 ~@4 B@9 ~ B@14 ~@12>".pickRestart({
  A: "~@3 x", B: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.42)

// drums · clap
const clap = s("cp").struct("<~@3 A B@3 ~ B@18 ~ B@18 ~ B@4 ~@4 B@9 ~ B@14 ~@12>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.42)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@4 A@3 ~ A@18 ~ A@18 ~ A@4 ~@4 A@9 ~ A@14 ~@12>".pickRestart({
  A: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@3 ~ A@18 ~ A@18 ~ A@4 ~@4 A@9 ~ A@14 ~@12>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.42)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@2 A@2 ~@9 A ~@7 A@2 ~@9 A ~@7 A@2 ~@7 A ~@9 A ~@13 A ~@11>".pickRestart({
  A: "x",
})).gain(0.36)

// drums · bongos
const bongos = s("bongo:4").struct("<~@4 A@3 ~ A@8 ~@2 A@8 ~ A@8 ~@2 A@8 ~ A@4 ~@4 A@9 ~ A@14 ~@12>".pickRestart({
  A: "~@9 x ~@6",
})).gain(1.1)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@4 A@3 ~ A@8 ~@2 A@8 ~ A@8 ~@2 A@8 ~ A@4 ~@4 A@9 ~ A@14 ~@12>".pickRestart({
  A: "~@14 x!2",
})).gain(1.1)

stack(
  epiano1, epiano1_soft, acoustic_guitar_steel, bass, vibraphone, vibraphone_soft, tremolo_strings,
  tremolo_strings_soft, lead_1_square, lead_1_square_soft, electric_guitar_jazz, electric_guitar_jazz_2,
  string_ensemble_1, soprano_sax, tremolo_strings_2, bass_2, kick, snare, clap, pedal_hat, open_hat, crash, bongos,
  bongos_2
)

More by Spice Girls