Strudelify

The Colour of My Dreams (Dream-In'-House-mix)

B.G. The Prince of Rap

KeyE minorTempo135 bpm
0:00/0:00
// The Colour of My Dreams (Dream-In'-House-mix) — B.G. The Prince of Rap
// 135 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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 · synth bass 2 · "SYN BASS"
const bass = note(`<
  ~@24 A B A B A B A B A B A ~ C D C E C D C E C D C E C D C F 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 ~ C D C E C D C E C D C E C D C F ~@8 A B A B A B A B A B A B A B A B A B A B A B ~@2
>`.pickRestart({
  A: "e1 ~ e2!2 e1 ~ e2!2 e1 ~ e2!2 g1 ~ g2!2", B: "c1 ~ c2!2 c1 ~ c2!2 d1 ~ d2!2 d1 ~ d2!2",
  C: "e1 ~ e2!2 e1 ~ e2!2 e1 ~ e2!2 e1 ~ e2!2", D: "f1 ~ f2!2 f1 ~ f2!2 d1 ~ d2!2 d1 ~ d2!2",
  E: "f1 ~ f2!2 f1 ~ f2!2 c1 ~ c2!2 c1 ~ c2!2", F: "c1 ~ c2 ~ c1 ~ c2 ~ d1 ~ d2!2 d1 ~ d2!2",
})).s("gm_synth_bass_2").gain(0.48)

// chords · string ensemble 2 · "SLOWSTRIN"
const string_ensemble_2 = note("<A@10 B@6 C@8 A@10 D@2 ~@16 A@30 D@2 ~@16 C@8 A@20 C@2 E ~>".pickRestart({
  A: "[b4@2 c4 [d4,f#4,a4], [e4,g4]@3 ~]/2", B: "[[b4,e5,g5,b5]@2 [c4,c5,e5,g5] [d4,f#4,a4,d5,f#5,a5], [e4,g4]@3 ~]/2",
  C: "[[b4,g5,b5]@2 [c4,e5,g5] [d4,f#4,a4,f#5,a5], [e4,g4]@3 ~]/2", D: "[[e4,g4]@3 ~, b4 ~]/2", E: "[e4,g4,b4,g5,b5]",
})).s("gm_string_ensemble_2").gain(0.18)

// other · synth brass 1 · "SYNBRASS"
const synth_brass_1 = note(`<
  ~@16 A B A B A B A B A B A B A B A B A B A B ~@16 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 ~@16
  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 ~@2
>`.pickRestart({
  A: "b3 ~ e4 ~ b3 ~ e4 b3 ~ b3 e4 ~ b4 ~ e4 ~", B: "g3 ~ c4 ~ g3 ~ d4 a3 ~ a3 d4 ~ a4 ~ d4 ~",
})).s("gm_synth_brass_1").gain(0.22)

// chords · lead 4 chiff · "CHIFFERLD"
const lead_4_chiff = note(`<
  A B A B A B A B A B A B A B A C D C E F D C E F ~@20 G@7 ~@49 A B A B A B A B ~@24
>`.pickRestart({
  A: "[e3,g3,b3]@15 ~", B: "[c3,e3,g3]@7 ~ [d3,f#3,a3]@7 ~", C: "[c1,c2]@7 ~ [d1,d2]@7 ~", D: "[e1,e2]@3 [g1,g2]",
  E: "[e1,e2]@15 ~", F: "[a0,a1]@7 ~ [d1,d2]@7 ~", G: "b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~",
})).s("gm_lead_4_chiff").gain(0.18)

// other · woodblock
const woodblock = note(`<
  ~@44
  [b7!2 ~@2 b7!2 ~@2 b7!2 ~@2 b7!2 ~@2]!7
  ~@41
  [b7!2 ~@2 b7!2 ~@2 b7!2 ~@2 b7!2 ~@2]!7
  ~@33
>`).s("gm_woodblock").gain(0.36)

// bass · synth bass 1 · "SYN BASS"
const bass_2 = note("<~@36 A B A C A B A C A B A C A B A ~@33 A B A C A B A C A B A C A B A C ~@32>".pickRestart({
  A: "e3!16", B: "f3!8 d3!8", C: "f3!8 c3!8",
})).s("gm_synth_bass_1").gain(0.14)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A ~@15 B@11 A B@3 C B@3 C B@3 C B@3 A B@31 A B@3 C B@3 C B@3 C B@3 A@2 ~@6 A B@20 ~@3 A
>`.pickRestart({
  A: "x", B: "x!4", C: "x ~@3 x ~@3 x ~@3 x ~@2 x",
})).gain(0.6)

// drums · snare
const snare = s("sd").struct("<~@24 A@11 ~@5 A@11 ~ A@31 ~ A@15 ~@9 A@22 ~@2>".pickRestart({
  A: "~@2 x ~@2 x ~@2",
})).gain(0.42)

// drums · clap
const clap = s("cp").struct("<~@12 A@3 B A@19 B ~@4 C@11 B A@31 B C@15 B ~@4 A@3 B A@22 B ~>".pickRestart({
  A: "~ x ~ x", B: "~@10 x!3 ~@3", C: "~ x ~@2",
})).gain(0.36)

// drums · hihat
const hihat = s("hh").struct("<~@24 [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!106 ~@2>").gain(0.3)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@24 [x!16]!12 ~@4 [x!16]!60 ~@8 [x!16]!22 ~@2>").gain(0.18)

stack(
  bass, string_ensemble_2, synth_brass_1, lead_4_chiff, woodblock, bass_2, kick, snare, clap, hihat, open_hat,
  tambourine
)