Strudelify

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: 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 D 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 D 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",
  D: "b2@2 ~@5 b2!2 ~@3 d2@4",
})).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 H J G H@3 K@2 H J L M D@2 M L N@2 D O C@2 N D P@2 D@2 N D N I C O H C D Q L M C@3 Q D
  L@2 Q C@3 D@2 C@3 D R C M C@3 M N D@2 O D@2 C Q N D N D N D N O D@2 N H N D ~
>`.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: "~@3 [b3,e4]@5", I: "~@6 [b3,f#4]@9 ~", J: "~@3 e4@4 ~",
  K: "[~@3 e4@6 ~@2 [b3,e4]@5]/2", L: "~@3 [b3,e4]@3 ~@2", M: "~@6 [b3,f#4]@7 ~@3", N: "~@6 [b3,e4]@9 ~",
  O: "~@3 [b3,f#4]@4 ~", P: "[~@3 b3@8 [b3,f#4]@4 ~, ~@3 e4@4 ~@9]/2", Q: "~@3 [b3,f#4]@3 ~@2", R: "~@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 F D ~@3 G@2 ~ F ~@47 H ~@29>".pickRestart({
  A: "~@6 b3@7 ~@3", B: "e4 ~@15", C: "~@3 [b3,f#4]@5", D: "~@3 b3@5", E: "~@6 b3@9 ~", F: "~@3 b3@4 ~",
  G: "[~@3 b3@6 ~@7]/2", H: "~@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