Strudelify

Papa

Prince

KeyB♭ majorTempo78 bpm
0:00/0:00
// Papa — Prince
// 78 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 45 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(78/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 · fretless bass
const bass = note("<~@3 A@7 B@32 C@2 D>".pickRestart({
  A: "[~@47 bb1@4 ab1@2 bb1@5 ~@37 eb2@13 db2@9 bb1@3 ~@23 bb1@4 ab1@2 bb1@5 ~@37 eb2@13 db2@9 bb1@3 ~@23 bb1@4 ab1@2 bb1@5 ~@37 eb2@13 db2@9 bb1@3 ~@23 bb1, ~@46 ab1@3 ~@93 ab1@3 ~@93 ab1@3 ~@93 ab1@2]/7",
  B: "[~@3 ab1@2 bb1@5 ~@37 eb2@13 db2@9 bb1@3 ~@23 bb1@4 ab1@2 bb1@5 ~@37 eb2@13 db2@9 bb1@3 ~@23 bb1@4 ab1@2 bb1@5 ~@37 eb2@13 db2@9 bb1@3 ~@23 bb1@4 ab1@2 bb1@5 ~@37 eb2@13 db2@9 bb1@3 ~@23 bb1, ~@94 ab1@3 ~@93 ab1@3 ~@93 ab1@3 ~@93 ab1@2]/8",
  C: "[~@3 ab1@2 bb1@5 ~@37 eb2@13 db2@9 bb1@3 ~@22 ab1@2]/2", D: "bb1@5 ~@43",
})).s("gm_fretless_bass").gain(0.62)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 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
>`.pickRestart({
  A: "~@11 ab3@4 bb3@2 d4@4 bb3@20 ~@7", B: "~@12 g3@4 ab3@2 eb4@4 ab3@9 g3@3 ab3@2 f3@6 ab3@4 bb3@2",
  C: "[bb2,bb3] ~@11", // Bb
})).s("gm_electric_guitar_clean").gain(0.06).pan(0.4)

// other · reed organ
const reed_organ = note(`<
  ~@4 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
>`.pickRestart({
  A: "bb1@5 ~@7 f2@4 ~@8 d3@20 ~@4, ~@23 db3@2 ~@23", B: "eb2@7 ~@5 db2@7 ~@2 bb1@5 ~@22", C: "bb1@5 ~@43",
})).s("gm_reed_organ").gain(0.22).pan(0.7)

// other · guitar harmonics
const guitar_harmonics = note("<~@16 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B>".pickRestart({
  A: "bb2@6 ~@6 f3@6 ~@6 d4@19 ~@5", B: "[bb2,bb3] ~@7",
})).s("gm_guitar_harmonics").gain(0.16)

// drums · kick
const kick = s("bd").struct("<~@4 [x!2]!40 x>").gain(0.32)

// drums · rim
const rim = s("rim").struct("<~@4 [~ x ~ x]!40 x>").gain(0.2)

// drums · clap
const clap = s("cp").struct("<~@4 [~ x ~ x]!40 x>").gain(0.2)

// drums · snare
const snare = s("sd").struct("<~@16 A@7 B C D C E ~@11 F C D C E G>".pickRestart({
  A: "~ x ~ x", B: "~@12 x ~@23 x ~@10 x", C: "x ~@11 x ~@23 x ~@4 x!2 ~@5", D: "x ~@11 x ~@23 x ~@10 x", E: "x!2 ~ x",
  F: "~@47 x", G: "x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@4 [x ~@5 x ~@4 x!2 ~@4 x!2 ~@5 x ~@4 x!2 ~@4 x!2 ~@4 x!2 ~@4 x]!40 ~>").gain(0.16)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@4 [~@5 x ~@17 x ~@24]!40 ~>").gain(0.12)

// drums · crash
const crash = s("cr").struct("<~@4 x ~@23 x ~@15 x>").gain(0.16)

stack(bass, electric_guitar_clean, reed_organ, guitar_harmonics, kick, rim, clap, snare, hihat, hihat_soft, crash)

More by Prince