Strudelify
I Wanna Be Down cover art

Brandy

I Wanna Be Down

Brandy

KeyE majorTempo88 bpm
0:00/0:00
// I Wanna Be Down — Brandy
// 88 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 1 "BASS" named as a bass, played on electric bass finger (its pad new age patch is not one); ch 2 "HIGH STRINGS" named as a string part, played on string ensemble 1 (its acoustic bass patch is not one); ch 6 "LOW STRINGS" named as a string part, played on string ensemble 1 (its electric bass pick patch is not one)
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@8 A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A
  B A C A B A C A B A C A B A C ~@8 A B A C A B A C A B A C A B A C A B A C ~
>`.pickRestart({
  A: "b2@2 ~@5 b2 b2@2 ~@2 d2@4", B: "e2@2 ~@5 d2 e2@2 ~@2 e2@2 f#2@2", C: "e2@2 ~@5 e2!2 ~@3 e2@2 f#2@2",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · string ensemble 1 · "HIGH STRINGS"
const string_ensemble_1 = note("<~@32 A@2 B@4 C@2 ~@16 D@2 E@4 C@2 D@2 E@4 C@2 ~@37>".pickRestart({
  A: "[~ f#4@7 ~@20 a6@4, b6@7 ~]/2", B: "[~@32 f#4@7 ~@21 a6@4, b6@15 ~]/4", C: "b6/2", D: "[b6@7 a6, f#4 ~@3]/2",
  E: "[~@8 f#4@2 ~@5 a6, b6@15 ~]/4",
})).s("gm_string_ensemble_1").gain(0.22)

// chords · harpsichord · "PIANO"
const harpsichord = note(`<
  A@8 B C D@3 C E C F ~ G@2 H I J K G J@2 H L@2 J K M N D@2 N M D@3 N C@2 D@2 O@2 C D@4 I C N H C@2 P M P M C@2 P C M@2
  P C@3 D@2 C@3 D Q C N C@3 N D@3 N D C@2 P D@7 N D@3 H D@2 ~
>`.pickRestart({
  A: "~@6 [b3,e4] ~@9", B: "[b3,e4] ~@5 [b3,e4]@8 ~@2", C: "~@6 [b3,e4]@7 ~@3", D: "~@3 [b3,e4]@4 ~", E: "~@6 e4@7 ~@3",
  F: "b3 ~@5 [b3,e4]@9 ~", G: "~@3 e4@5", H: "~@6 [b3,e4]@9 ~", I: "~@3 [b3,f#4]@4 ~", J: "~@3 [b3,e4]@5",
  K: "~@3 e4@4 ~", L: "[~@6 e4@12 ~@4 [b3,e4]@9 ~]/2", M: "~@3 [b3,e4]@3 ~@2", N: "~@6 [b3,f#4]@7 ~@3",
  O: "[~@6 b3@16 [b3,f#4]@7 ~@3, ~@3 e4@4 ~@9]/2", P: "~@3 [b3,f#4]@3 ~@2", Q: "~@7 e4@7 ~@2",
})).s("gm_harpsichord").gain(0.33)

// chords · harpsichord · "PIANO" · soft notes
const harpsichord_soft = note("<~@14 A ~ B C D E ~@3 E D ~@3 F@2 ~ E ~@47 G ~@29>".pickRestart({
  A: "~@6 b3@7 ~@3", B: "e4 ~@15", C: "~@3 [b3,f#4]@5", D: "~@3 b3@5", E: "~@3 b3@4 ~", F: "[~@3 b3@6 ~@7]/2",
  G: "~@7 b3@7 ~@2",
})).s("gm_harpsichord").gain(0.22)

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

// drums · snare
const snare = s("sd").struct(`<
  A@3 B A@3 C A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3
  B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@5 x ~ x!2 ~@2",
})).gain(0.36)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[x!8]!108 ~>").gain(0.31)

stack(bass, string_ensemble_1, harpsichord, harpsichord_soft, kick, snare, pedal_hat)

More by Brandy