Strudelify

Ready Or Not

Fugees

KeyB♭ minorTempo90 bpm
0:00/0:00
// Ready Or Not — Fugees
// 90 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Bass1" named as a bass, played on electric bass finger (its epiano1 patch is not one); ch 8 "Bass2" named as a bass, played on electric bass finger (its pad halo patch is not one)
// note: duplicate parts dropped: ch 8 "Bass2" electric bass finger (copy of ch 2 "Bass1" electric bass finger)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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 · "Bass1"
const bass = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C
  D A B C D A B C D A B C D A B C D A B C D A B C D E
>`.pickRestart({
  A: "~ bb2@3, bb1", B: "~ f3@3, f2", C: "~ gb3@3, gb2", D: "~ db3 ~ f3, db2 f2", E: "bb1 ~@15",
})).s("gm_electric_bass_finger").gain(0.41)

// other · alto sax · "Lauryn1"
const alto_sax = note(`<
  ~@4 A B C D A B C D ~@16 A B C D A B C D ~@12 A B C D E F@3 E G@3 ~@8 A B C D A B C D A B C D A B C D H
>`.pickRestart({
  A: "f4!2 db4 bb3 ~@4 f4 db4 ~ bb3 ~@4", B: "f4 db4 ~ bb3 ~@10 db4 eb4", C: "f4@5 eb4 db4@2 eb4@2 ~@4 ab4@2",
  D: "f4@2 eb4@2 db4@2 eb4 ~", E: "~@4 f4 ab4@2 bb4@3 db5 bb4@2 ab4 f4@2",
  F: "[~@4 f4 ab4@2 eb4@2 eb4@2 eb4@2 f4@2 eb4@2 db4@2 ~@2 f4@2 eb4@2 db4@2 ~ bb3 db4@2 f4@2 f4@2 f4@4 f4@2 f4 eb4@3 ~@3]/3",
  G: "[~@4 f4 ab4@2 eb4@2 eb4!2 eb4@2 f4@2 eb4@2 db4@2 ~@2 f4@2 eb4@2 db4@2 ~ bb3 db4@2 f4@3 f4@2 f4 eb4@2 f4 eb4@2 f4 eb4@2 ~@3]/3",
  H: "f4 ~@15",
})).s("gm_alto_sax").gain(0.41).pan(0.8)

// other · alto sax · "Lauryn2"
const alto_sax_2 = note(`<
  ~@6 A B C@2 ~ B ~@18 A B D@2 A B ~@13 E A B ~@2 F@2 G@2 H@2 ~@7 I@2 J A B C@2 ~ K L M A B D@2 A B ~
>`.pickRestart({
  A: "db4@5 c4 bb3@2 c4@2 ~@4 f4@2", B: "db4@2 c4@2 bb3@2 c4 ~", C: "[~@3 eb4@4 db4@3 ~@6]/2",
  D: "[~@6 eb4@8 db4@6 ~@10 bb3 c4]/2", E: "~@14 bb3 c4", F: "[~@15 ab4@2 ab4@2 ab4@4 ab4@2 ab4 gb4@3 ~@3]/2",
  G: "[~@7 db5@2 bb4@3 ~@4]/2", H: "[~@5 ab4@2 gb4@2 f4@2 ~@4 ab4@3 ab4@2 ab4 gb4@2 ab4 gb4@2 ab4 gb4@2 ~@3]/2",
  I: "[~@14 db5@4 bb4@4 ~@9 f4]/2", J: "bb4 db5 bb4@4 ~@10", K: "db4@4 c4@4 bb3@4 c4@2 ~ f4", L: "bb4 db5 bb4@4 ~@9 f4",
  M: "bb4 db5 bb4@4 ~@8 bb3 c4",
})).s("gm_alto_sax").gain(0.41).pan(0.2)

// other · alto sax · "Lauryn3"
const alto_sax_3 = note("<~@68 A@2 ~ B@2 ~ C ~ D ~ E@2 F G H ~@2>".pickRestart({
  A: "[~@7 db5@2 bb4@2 ~@5]/2", B: "[~@9 f4@2 ab4@2 bb4@2 db5@3 ~@14]/2", C: "~@6 bb4 ab4 bb4 ab4 f4 gb4 ab4 bb4@3",
  D: "~@7 f4 bb4 db5 bb4@4 ~@2", E: "[~@9 f4@2 ab4@2 bb4@2 db5@3 ~@11 bb4@2 ab4]/2", F: "f4 bb4@3 ~@12", G: "~@15 f4",
  H: "bb4 db5 bb4@4 ~@10",
})).s("gm_alto_sax").gain(0.36)

// other · epiano2 · "Ding"
const epiano2 = note("<~@84 [~ f4 ~@14]>").s("gm_epiano2").gain(0.51)

// drums · kick
const kick = s("bd").struct("<~@11 [~@11 x ~@4] [x ~@10 x ~@4]!71 [~@11 x ~@4] x>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@11 A B@11 A B@3 A B@11 A B@7 A B@3 A B@3 A B@5 A B@5 A B@7 A B@7 A ~>".pickRestart({
  A: "~@9 x ~@2 x ~@3", B: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~@12 [x!8]!27 [x ~@6 x] [x!8]!44 x>").gain(0.51)

stack(bass, alto_sax, alto_sax_2, alto_sax_3, epiano2, kick, snare, hihat)

More by Fugees