Strudelify

Take Me There (feat. Mya, Ma$e & Blinky Blink)

Blackstreet

KeyA minorTempo100 bpm
0:00/0:00
// Take Me There (feat. Mya, Ma$e & Blinky Blink) — Blackstreet
// 100 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · music box
const music_box = note(`<
  A B C D E B C D E B C D E B C D F ~ G H G I G J K L M N O L P Q R B C D E B C D F I G H G I G J K L M N O L P Q R B C
  D E B C D F ~@15 S B C D E B C D F B C D E B C D T
>`.pickRestart({
  A: "~@5 [c5,e5] [d5,f5] [e5,g5]", B: "[f5,a5] ~@2 [g5,b5]@3 [a5,c6]@2 ~@2 [a5,c6]@2 [g5,b5]@2 [f5,a5]@2",
  C: "[e5,g5] ~@2 [d5,f5]@3 [c5,e5]@2 ~@2 [c5,e5]@2 [d5,f5]@2 [e5,g5]@2", // Em Dm C Dm Em
  D: "[d5,f5] ~@2 [c5,e5]@3 [b4,d5]@2 ~@2 [b4,d5]@2 [c5,e5]@2 [d5,f5]@2", // Dm C Bm C Dm
  E: "[c5,e5] ~@2 [b4,d5]@3 [a4,c5]@2 ~@2 [c5,e5]@2 [d5,f5]@2 [e5,g5]@2", F: "[c5,e5] ~@2 [b4,d5]@3 [a4,c5]@10",
  G: "c5@5 c5 ~@2 c5 ~@2 c5 c5@4, [e4,g4]", H: "[d4,f4,a4]@3 [d4,g#4,b4]@5", I: "[e4,a4,c5] ~@2 [f4,a4,c5,d5]@5",
  J: "[d4,f4,a4]@3 [a3,d4,f4]@5", K: "[g3,c4,e4]@5 e4 d4 c4", L: "[c4,e4,a4]@3 [b3,d4,g4]@5",
  M: "c5@5 c5 ~@2 c5 ~@2 c5 c5@4, [e4,g4,a4]", N: "c5@5 c5 ~@2 c5 ~@2 c5 c5@4, [d4,f4,g#4]", O: "[e4,g4,c5]@5 e4 d4 c4",
  P: "[c4,e4,g4,a4]", Q: "[d#4,g4,g#4,c5]", R: "g4@2 f4@2 e4 [c5,e5] [d5,f5] [e5,g5], [d4,a#4] ~",
  S: "~@2 [e5,g5]@3 [c5,e5] [d5,f5] [e5,g5]", T: "[c5,e5] ~@2 [b4,d5]@3 [a4,c5]@6 ~@4",
})).s("gm_music_box").gain(0.32)

// bass · fretless bass
const bass = note(`<
  ~@9 A B C D A B C D E F C G E F H I J K L I J K L M A B C D A B C D E F C G E F H I J K L I J K L M A B C D A B C N E
  F C G E F C G E F C G E F C G A B C D A B C O A B C D A B C P
>`.pickRestart({
  A: "f3@3 d3@3 g2@2", B: "c3@6 a2@8 g2 a2", C: "b2@3 e3@3 e2@2", D: "a2@3 a3@4 a2", E: "f3 ~@2 g3@3 g2@2",
  F: "a2@14 g2 a2", G: "a2@9 ~@2 a2 d3@2 e3@2", H: "b2@3 a#2@5", I: "a2@5 e3 d3 c3", J: "f2@3 g2@5", K: "a2@7 g2",
  L: "a#2", M: "d#2@4 a2 c3 d3 c3", N: "a2@3 a2@4 a2", O: "a2@6 a3@4 g3 e3 d3@2 c3@2", P: "a2 ~@3",
})).s("gm_fretless_bass").gain(0.32)

// chords · xylophone · "Gregory Parish"
const xylophone = note(`<
  A B C D E B C D E B C D E B C D F ~@16 B C D E B C D F ~@16 B C D E B C D F ~@15 G B C D E B C D F B C D E B C D H
>`.pickRestart({
  A: "~@5 [c5,e5] [d5,f5] [e5,g5]", B: "[f5,a5] ~@2 [g5,b5]@3 [a5,c6]@2 ~@2 [a5,c6]@2 [g5,b5]@2 [f5,a5]@2",
  C: "[e5,g5] ~@2 [d5,f5]@3 [c5,e5]@2 ~@2 [c5,e5]@2 [d5,f5]@2 [e5,g5]@2", // Em Dm C Dm Em
  D: "[d5,f5] ~@2 [c5,e5]@3 [b4,d5]@2 ~@2 [b4,d5]@2 [c5,e5]@2 [d5,f5]@2", // Dm C Bm C Dm
  E: "[c5,e5] ~@2 [b4,d5]@3 [a4,c5]@2 ~@2 [c5,e5]@2 [d5,f5]@2 [e5,g5]@2", F: "[c5,e5] ~@2 [b4,d5]@3 [a4,c5]@10",
  G: "~@2 [e5,g5]@3 [c5,e5] [d5,f5] [e5,g5]", H: "[c5,e5] ~@2 [b4,d5]@3 [a4,c5]@6 ~@4",
})).s("gm_xylophone").gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@9 A@8 ~ A@3 ~ A@19 ~ A@3 ~ A@51>".pickRestart({
  A: "x!2 ~@2",
})).gain(0.64)

// drums · pedal hat
const pedal_hat = s("hh").struct("<A B@16 ~ B@3 ~ B@19 ~ B@3 ~ B@51>".pickRestart({
  A: "~@3 x", B: "x ~@3 x ~ x!2 ~ x ~@2 x ~@3",
})).gain(0.64)

// drums · woodblocks
const woodblocks = s("woodblock:4").struct("<~@9 A@8 ~ A@3 ~ A@19 ~ A@3 ~ A@51>".pickRestart({
  A: "~@4 x!3 ~",
})).gain(0.93)

stack(music_box, bass, xylophone, low_tom, pedal_hat, woodblocks)

More by Blackstreet