Strudelify

The Way You Make Me Feel

Michael Jackson

KeyF majorTempo120 bpm
0:00/0:00
// The Way You Make Me Feel — Michael Jackson
// 120 bpm, 12/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 138 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/6)

// 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 · slap bass 2 · "Bass"
const bass = note("<~ A@25 B@3 C A@3 D A@16 B@3 C A@3 D A@7 D A@8 B@3 C A@3 D A@54 E ~>".pickRestart({
  A: "f1@3 ~ f1@2 c2@2 eb2@2 f2@2 f1@3 ~ f1@2 c2@2 eb2@2 f2@2",
  B: "bb1@3 ~ bb1@2 f2@2 ab2@2 bb2@2 bb1@3 ~ bb1@2 f2@2 ab2@2 bb2@2",
  C: "bb1@3 ~ bb1@2 f2@2 ab2@2 bb2@2 c2@3 ~ c2@2 g2@2 bb2@2 c3@2", D: "f1@3 ~@15 c2@2 eb2@2 f2@2", E: "f1 ~@7",
})).s("gm_slap_bass_2").gain(0.32)

// other · electric guitar muted · "Guitar 1"
const electric_guitar_muted = note("<~@42 A B A C D E F B G H I J K L M N ~@16 G H I J K L M N ~@56>".pickRestart({
  A: "f2@11 ~ eb3@2 ~@10", B: "f3 ~@4 eb3 ~@5 f3", C: "f3 ~@9 eb3@2 ~@10 f3@2", D: "f2@5 ~ eb3 ~@5",
  E: "f3@2 ~@8 eb3 ~@11 f3@2", F: "f2@9 ~@3 eb3@2 ~@10", G: "bb2@7 ~@5 ab3@2 ~@10", H: "bb3 ~@4 ab3 ~@5 f3",
  I: "bb2@5 ~ ab3 ~@5", J: "bb3 ~@4 c4 ~@5 f3", K: "f2@8 ~@4 eb3 ~@11", L: "f3 ~@9 eb3 ~@11 f3@2",
  M: "f2@5 ~@7 eb3@2 ~@10", N: "f3 ~@23",
})).s("gm_electric_guitar_muted").gain(0.41).pan(0.4)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@10 A B A B A B A B A B A B A B A B C D C E A B A F G H G H G H G H I B A B A B A B C D C E A B A F A B A B A B A F
  A@8 C D C E A B A F A B A B A B A J A B A B A B A J A B A B A B A J A B A B A B I B ~@16 I B A B A B F ~
>`.pickRestart({
  A: "[f3,a4] [eb3,g4]", B: "[f3,a4] [g3,bb4]", C: "[bb3,d5] [ab3,c5]", D: "[bb3,d5] [c4,eb5]", E: "[bb3,d5] [c4,e5]",
  F: "[f3,a4] ~@11", G: "[f3,c5] [eb3,f5]", H: "[f3,c5] [g3,bb4]", I: "[f3,a4] [eb3,g4], g3 ~@23",
  J: "[f3,a4] [g3,bb4], eb3 ~@23", // F Gm
})).s("gm_string_ensemble_2").gain(0.22).pan(0.6)

// chords · pad poly · "Synth"
const pad_poly = note(`<
  ~@10 A B A B A B A B A B A B A B A B C D C E A B A F A B A B A B A B A B A B A B A B C D C E A B A F A B A B A B A F
  G@8 C D C E A B A 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 B ~@16 A B A B A B ~@2
>`.pickRestart({
  A: "~@4 [c4,f4,a4] ~@5 [c4,f4,a4] ~@5 [bb3,eb4,g4] ~@5 [bb3,eb4,g4] ~", // F Eb
  B: "~@4 [c4,f4,a4] ~@5 [c4,f4,a4] ~@5 [d4,eb4,g4,bb4] ~@5 [d4,eb4,g4,bb4] ~", // F Ebmaj7
  C: "~@4 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [eb4,ab4,c5] ~@5 [eb4,ab4,c5] ~", // Bb Ab
  D: "~@4 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [g4,ab4,c5,eb5] ~@5 [g4,ab4,c5,eb5] ~", // Bb Abmaj7
  E: "~@4 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [g4,c5,e5] ~@5 [g4,c5,e5] ~", F: "[c4,f4,a4] ~@23",
  G: "~@4 [c4,f4,a4] ~@5 [c4,f4,a4] ~@5 [c4,f4,a4] ~@5 [c4,f4,a4] ~", // F
})).s("gm_pad_poly").gain(0.3).pan(0.6)

// other · lead 8 bass lead · "Solo"
const lead_8_bass_lead = note("<~@66 A B A B A B A C ~@64>".pickRestart({
  A: "~@4 f4 ~ g4@4 f4 ~ g4@4 f4 ~@5 f4 ~", B: "~@4 f4 ~ g4@4 f4 ~ g4@4 eb4 ~@5 f4 ~",
  C: "~@4 f4 ~ g4@4 f4 ~ g4@4 eb4 ~@7",
})).s("gm_lead_8_bass_lead").gain(0.22).pan(0.4)

// other · brass section · "Brass"
const brass_section = note(`<
  ~@41 A@2 ~@8 B C@2 ~ D E ~ F G ~ H I J ~@11 B C@2 ~ D E K F G ~ H I J A@2 ~@3 H I J ~@5 H I J ~ A@2 ~@2 H I J ~@21 H I
  J ~@2
>`.pickRestart({
  A: "[~@2 eb5@2 ~@2 d5@2 ~@2 c5@2 ~@2 bb4 ~ f4 ~ ab4@2 g4@2 f4@19 ~@7]/2", B: "~@15 c5@2 ~@3 bb4@2 ~@2",
  C: "[ab4@2 g4@2 f4@30 [e4,g4]@2 ~@2 a5 ~ bb5 ~ a5@2 e5 ~ f5 ~]/2", D: "~@16 c5 ~ c5@2 d5@2 f5 ~", E: "f4",
  F: "~@20 c5 ~ d5 ~", G: "f5 ~ f5 ~@9", H: "c5@3 ~@3 a4@3 ~@3 f4@6 ~@2 f4@2 eb4@2", I: "f4 ~@8 c5 d5 f5",
  J: "~@2 f5@2 ~@2 c5@2 d5@2 f5 ~@13", K: "f4 ~@23",
})).s("gm_brass_section").gain(0.31).pan(0.4)

// other · pad metallic · "Guitar Pad"
const pad_metallic = note(`<
  ~@42 A@4 B@2 C@2 D@4 E@2 F G H@8 I@5 J K F D@4 E@2 F G L@7 M H@16 N@8 ~@16 O@7 ~
>`.pickRestart({
  A: "[f2@44 ~@3 f2@45 ~@4]/4", B: "[f2@23 ~]/2", C: "[f2@11 ~]/2", D: "[bb2@44 ~@3 bb2@36 c3@13]/4", E: "[f2@15 ~]/2",
  F: "f2@23 ~", G: "f2 ~@23", H: "[f2@21 ~ f2@20 ~@4 f2@23 ~ f2@29 ~ f2@17 f2@29 ~@2 f2@17 ~ f2@4 ~@22]/8",
  I: "[f2@21 ~ f2@17 ~ f2@5 f2@18 ~ f2@23 ~ f2@7 f2@15 ~ f2@8 ~]/5", J: "f2@15 f2@8 ~", K: "f2@16 ~ f2@6 ~",
  L: "[f2@21 ~ f2@20 ~@4 f2@23 ~ f2@29 ~ f2@17 f2@29 ~@2 f2@17 ~ f2@2]/7", M: "f2@21 ~ f2@2",
  N: "[f2@21 ~ f2@20 ~@4 f2@23 ~ f2@29 ~ f2@17 f2@29 ~@2 f2@17 ~ f2@24 ~@2]/8",
  O: "[f2@21 ~ f2@20 ~@4 f2@23 ~ f2@29 ~ f2@17 f2@29 ~@22]/7",
})).s("gm_pad_metallic").gain(0.45).pan(0.3)

// other · pad metallic · "Guitar Pad" · soft notes
const pad_metallic_soft = note("<~@59 A ~@23 A ~@7 A ~@7 A ~@7 A ~@23 A ~@6>".pickRestart({
  A: "~@6 f2 ~",
})).s("gm_pad_metallic").gain(0.15).pan(0.3)

// other · synth strings 2 · "Synth Intro"
const synth_strings_2 = note("<~@14 A@3 B ~@120>".pickRestart({
  A: "[f4@12 ~@36 [f3,f4]@3 ~ [f3,f4]@3 ~ [f3,f4]@3 ~ [f3,f4]@3 ~ [f3,f4]@3 ~ [f3,f4]@3 ~, ~@12 eb4@43 ~@17]/3", // F
  B: "[f3,f4]@3 ~ [f3,f4]@3 ~ [f3,f4]@3 ~ [f3,f4]@3 ~@9", // F
})).s("gm_synth_strings_2").gain(0.22).pan(0.1)

// drums · kick
const kick = s("bd").struct("<A B@32 C B@23 C B@7 C B@15 C B@54 C ~>".pickRestart({
  A: "x ~@5 x ~ x!2 ~@2", B: "x ~@2 x!2 ~", C: "x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<A B@32 C B@23 C B@7 D B@15 C B@54 D ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x ~@2 x", D: "x",
})).gain(0.54)

// drums · clap
const clap = s("cp").struct("<~@34 A@8 ~@16 A@7 B A@15 ~ A@54 ~@2>".pickRestart({
  A: "~ x ~ x", B: "x",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~@4 B ~@3 C ~@3 D ~@3 C ~@3 E F ~@2 G ~@7 E ~@4 F ~@2 E F ~@2 E F ~@2 G ~@7 E ~@4 F ~@2 C ~@4 F ~@2 C ~@3 H ~@3 E
  ~@4 F ~@2 H ~@3 E F ~@2 C ~ E F E ~ E F I ~@7 C ~@3 J ~@3 B ~@3 E F ~@2 I ~@3 C ~@4
>`.pickRestart({
  A: "~ x ~", B: "~@3 x", C: "~@10 x!2", D: "~@5 x", E: "~@11 x", F: "x", G: "~@9 x ~ x", H: "~@9 x!3", I: "~@9 x!2 ~",
  J: "~@7 x ~ x ~@2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~ A@31 B C A@22 B C A@7 D A@15 C A@54 C ~>".pickRestart({
  A: "x!12", B: "x!10 ~@2", C: "x", D: "x ~@10 x",
})).gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~@4 B ~@3 C ~@3 D ~@3 C ~@3 E ~@3 F ~@7 E ~@3 G ~@3 H ~@3 E ~@3 F ~@7 E ~@3 G ~@3 C ~@3 G ~@3 C ~@3 B ~@3 E ~@3 G
  ~@3 I ~@3 J ~@3 K ~ E ~ J ~ E ~ B ~@7 L ~@3 M ~@3 N ~@3 E ~@3 O ~@3 P ~@4
>`.pickRestart({
  A: "x ~ x ~@3 x!3 ~@3", B: "~@7 x!2 ~@3", C: "~@8 x!2 ~@2", D: "~@2 x", E: "~@5 x", F: "~@7 x!2 ~ x ~", G: "~@10 x!2",
  H: "~@9 x!2 ~", I: "~@3 x ~@3 x!2 ~@3", J: "~@4 x!2", K: "~@6 x!2 ~ x ~@2", L: "~@2 x ~@2 x ~@2 x!2 ~@2",
  M: "~@5 x ~@6", N: "~@5 x ~ x ~@4", O: "~@5 x ~ x!2 ~@2 x", P: "~@5 x ~@2 x!2 ~@2",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<A ~@4 B ~@3 C ~@3 C ~@3 D ~@23 D ~@23 D ~@3 E ~@3 D ~@64>".pickRestart({
  A: "x!2", B: "~@5 x ~@6", C: "~ x", D: "~@7 x ~@4", E: "~@3 x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@4 B ~@3 B ~@7 B ~@7 B ~@2 C ~@3 D ~@8 B ~@7 B ~@2 C ~@3 D ~@8 B ~@3 B ~@3 B ~@2 C ~@3 D ~@8 B ~@7 B ~@3 B ~@3 B
  ~@7 B ~@3 B ~@3 B ~@7 B ~@3 B ~@3
>`.pickRestart({
  A: "~ x ~@22", B: "x", C: "~@9 x ~@12 x ~", D: "~@23 x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct("<~ x ~@136>").gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@32 B A@23 B A@7 B A@15 B A@32 ~@16 A@6 B ~>".pickRestart({
  A: "x!2 ~@4", B: "x",
})).gain(0.18)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ A@32 B A@23 B A@7 B A@15 B A@32 ~@16 A@6 B ~>".pickRestart({
  A: "x!12", B: "x",
})).gain(1.22)

// drums · shaker
const shaker = s("sh").struct("<~ A@32 B A@23 B A@7 B A@15 B A@32 ~@16 A@6 B ~>".pickRestart({
  A: "x!12", B: "x",
})).gain(0.18)

stack(
  bass, electric_guitar_muted, string_ensemble_2, pad_poly, lead_8_bass_lead, brass_section, pad_metallic,
  pad_metallic_soft, synth_strings_2, kick, snare, clap, low_tom, hihat, mid_tom, high_tom, crash, ride, tambourine,
  cabasa, shaker
)

More by Michael Jackson