Strudelify

Free Your Mind

En Vogue

KeyA minorTempo105 bpm
0:00/0:00
// Free Your Mind — En Vogue
// 105 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · "FingerBs"
const bass = note("<~@4 A@16 B C A@2 B C D@2 E@8 A@16 B C A@2 B C D@2 E@16 ~@12 A@3 ~ B C A@2 F G@3 E@16>".pickRestart({
  A: "a2 g2 g#2 a2 ~@4", B: "d3 a2 d3 c#3 c3 g2 c3!2", C: "b2 g2 b2!2 a#2 g2 a#2!2", D: "a#2/2",
  E: "a2@2 g2@2 g#2@2 a2@2 c3 ~ c3@2 a2@2 g2@2", F: "d3 a2 d3 c#3 g#2 c#3 c3 g2", G: "[c3 b2 g2 b2 a#2@20]/3",
})).s("gm_electric_bass_finger").gain(0.37)

// chords · overdriven guitar · "OverDrGt"
const overdriven_guitar = note("<~@92 A B C ~ D@4 ~@16>".pickRestart({
  A: "d6 a5 d6@2 c6 g5 c6@2", B: "b5 g5 b5@2 a#5 g5 a#5@2", C: "a4 ~@3",
  D: "[[f5,a5,d6]@3 [e5,g#5,c#6]@3 [e5,g5,c6]@3 [d5,g5,b5]@3 [d5,f5,a#5]@20]/4", // Dm C#m C G A#
})).s("gm_overdriven_guitar").gain(0.23).pan(0.8)

// drums · kick
const kick = s("bd").struct("<[x ~@3 x!2 ~@2]!91 ~ [x ~@3 x!2 ~@2]!24>").gain(0.37)

// drums · snare
const snare = s("sd").struct(`<
  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 C@2
  D@2 A@3 B A@3 B A@3 ~ A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B
>`.pickRestart({
  A: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", B: "~@4 x ~@2 x ~ x ~@2 x ~ x!2", C: "~@4 x ~@2 x ~ x ~@2 x!2 ~ x",
  D: "~@4 x ~@2 x ~ x ~ x!3 ~ x",
})).gain(0.23)

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

// drums · open hat
const open_hat = s("oh").struct("<[~@3 x]!91 ~ [~@3 x]!24>").gain(0.37)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.37)

// drums · tambourine
const tambourine = s("tb").struct("<[x!16]!76 ~@2 [x!16]!13 ~ [x!16]!24>").gain(0.23)

// drums · cowbell
const cowbell = s("cb").struct("<[x ~ x ~ x!2 ~ x]!76 ~@4 [x ~ x ~ x!2 ~ x]!36>").gain(0.23)

stack(bass, overdriven_guitar, kick, snare, hihat, open_hat, crash, tambourine, cowbell)

More by En Vogue