Strudelify
You Make Me Wanna cover art

My Way

You Make Me Wanna

Usher

KeyC minorTempo82 bpm
0:00/0:00
// You Make Me Wanna — Usher
// 82 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(82/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 · "tk2"
const bass = note(`<
  ~@5 A B A C A B A C A B A C D B D C D C D C A B A C A B A C ~@3 E D C D C A B A C A B A C ~@2 F G ~@2 F G D B D C D C
  D C A B A C A B A C
>`.pickRestart({
  A: "c2 ~@2 c2 ~@2 f1 ~@7 f1 g1", B: "ab1 ~@2 ab1 ~@2 g1 ~@5 b1@4", C: "ab1 ~@2 ab1 ~@2 g1 ~@5 b1@3 ~",
  D: "c2 ~@2 c2 ~@10 f1 g1", E: "~@12 b1@3 ~", F: "db2@3 ab1@4 db1@7 c2 ~", G: "bb1@3 f1@4 bb0@8 ~, ~@3 gb1 ~@12",
})).s("gm_electric_bass_finger").gain(0.5)

// bass · ocarina · "tk9"
const bass_2 = note(`<
  A ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ C ~ B
  ~ B ~ B ~ B ~ B ~ B ~ B ~ B
>`.pickRestart({
  A: "~@8 b1 ~ b1 ~ b1 ~ b1 ~", B: "~@6 b1 ~ b1!2 ~@6", C: "~@6 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · acoustic guitar steel · "tk13"
const acoustic_guitar_steel = note(`<
  ~ A B C B D@2 E B D@2 E B D@2 E B ~@8 D@2 E B D@2 E B ~@8 D@2 F@2 D@2 F@2 G H I J G H I K ~@8 D@2 E B D@2 E B
>`.pickRestart({
  A: "[c3,eb4]@6 ~@2 ab3 bb3 eb4 eb3@5, ~@3 f2@5, ~@7 g3@2 ~@7", // Cm
  B: "~@2 [ab2,ab3,c4] ~ [ab2,ab3,c4] ~@4 [g2,g3,b3] ~ [g2,g3,b3] ~@4", // Ab G
  C: "eb4@6 ~@2 ab3 bb3 eb4 eb3@5, c3@5 ~ f2@10, ~@7 g3@2 ~@2 e3 ~@4",
  D: "[eb4@6 ~@3 bb3 eb4 eb3@7 [ab2,ab3,c4] ~ [ab2,ab3,c4] ~@4 [g2,g3,b3] ~ [g2,g3,b3] ~@4, c3@5 ~ f2@11 ~@15, ~@7 g3@2 ~@23, ~@4 ab3 ~@11]/2", // Ab G
  E: "eb4@6 g2 ~ ab3 ~ eb4 eb3@5, c3@5 ~ f2@10, ~@7 g3@2 ~@7",
  F: "[eb4@6 g2 ~ ab3 ~ eb4 eb3@7 [ab2,ab3,c4] ~ [ab2,ab3,c4] ~@4 [g2,g3,b3] ~ [g2,g3,b3] ~@4, c3@5 ~ f2@10 ~@16, ~@7 g3@2 ~@23]/2", // Ab G
  G: "[c4,eb4]@2 ~@3 eb4 ~ [bb3,d4]@4 [bb3,d4]@2 ~@2 [d4,f4], ab2@3 c4@2 ~@9 bb3@2, ab3 ~ ab3@4 ~@10, ~@4 ab2@3 [bb2,f4]@6 bb2@3", // Cm Bb Dm Bb5
  H: "~@2 ab4 ~@2 f4@2 [c3,eb4]@4 ~ d4@2 ~@2, b2@3 [g4,ab4]@2 ~@11, ~@4 b2@2 ~@5 c3@4 ~", // Cm Abmaj7
  I: "[gb3,bb3,eb4]@3 [gb3,bb3,eb4] ~ gb3 bb3 eb4 ~ [gb3,bb3,eb4]@2 gb3 bb3 eb4 ~ f3", // Ebm
  J: "[f3,ab3,c4,db4,eb4]@2 ~ [f3,ab3,c4,eb4] ~ f3 ab3 [ab3,c4] f3 eb4 f3 f4@3 eb4 ~", // Fm7 Ab
  K: "[f3,ab3,c4,db4,eb4]@2 ~ [f3,ab3,c4,eb4] ~@12", // Fm7
})).s("gm_acoustic_guitar_steel").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A B C B C B C B C B C B C B C B C ~ C B C B C B C B C B C B C B C ~ C B C B C B C B C B C B C B C B C B C B C B D ~ C
  B C B C B C B C B C B C B C
>`.pickRestart({
  A: "~@4 x!4", B: "x ~@2 x ~@2 x ~@3 x ~@5", C: "x ~@2 x ~ x!2 ~ x!3 ~@2 x!2 ~", D: "x ~@2 x ~ x!2 ~ x ~ x ~ x ~ x ~",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A B A B A B A B A B A B A B C B A B A B A B A B A B A B A B C B A B A B A B A B A B A B A B A B A B A B A D C B
  A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~@3 x", D: "~@4 x ~@2 x ~@8",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~ [x!16]!72>").gain(0.4)

// drums · shaker
const shaker = s("sh").struct("<~ [x!8]!72>").gain(0.35)

stack(bass, bass_2, acoustic_guitar_steel, kick, snare, hihat, shaker)

More by Usher