Strudelify
Who Is It cover art

1991 · Dangerous

Who Is It

Michael Jackson

KeyD minorTempo103 bpm
0:00/0:00
// Who Is It — Jackson Michael
// 103 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 169 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 13 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(103/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  ~@9 A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B C D C D C D E F A@3 B A@3 G C ~ H ~ H ~ H ~ A@3 B A@3 B C D C D C D E F A@3 B
  A@3 G C ~ H ~ H ~ H ~ A@3 B A@3 B A@3 B A@3 G C ~ H ~ H ~ H ~ A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B
  A@3 B A@3 B A@3 B A@2 ~@6
>`.pickRestart({
  A: "d2@3 ~ d2@4 ~@2 a1@2 c2@2 a1@2", B: "g1@2 ~@2 g1@4 a1 ~ a1@2 c2@2 a1@2", C: "bb1@5 ~ bb1 ~ bb1@8",
  D: "a1@5 ~ a1@2 d1@7 ~", E: "eb1@4 ~@2 eb1 ~ eb1@8", F: "a1@5 ~ a1 ~ a1@7 ~", G: "g1@2 ~@2 g1@4 a1 ~@7",
  H: "bb1@4 ~@2 bb1 ~ bb1@5 ~@3",
})).s("gm_electric_bass_finger").gain(0.48)

// bass · electric bass finger · soft notes
const bass_soft = note(`<
  ~@9 A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~@9 A@3 ~ A@3 ~@9 A@3 ~ A@3 ~@9 A@3 ~ A@3 ~@9 A@3 ~ A@3 ~ A@3 ~ A@3 ~@9 A@3 ~
  A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@2 ~@6
>`.pickRestart({
  A: "~@8 a1 ~@7",
})).s("gm_electric_bass_finger").gain(0.16)

// chords · epiano1
const epiano1 = note("<~@33 A B A B A B C D ~@24 A B A B A B C D ~@88 E@3 ~@5>".pickRestart({
  A: "[d4,f4,bb4]", B: "e4 [a3,f4], [d4,a4]", C: "[bb3,eb4,g4]", D: "[d4,e4,a4]",
  E: "[~@3 [f4,a4]@32 ~@13, ~ a3@32 ~@15, ~ [d4,e4]@16 ~@7]/3", // F Dsus2
})).s("gm_epiano1").gain(0.56).pan(0.7)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@8 A ~@8 B C B D E F E G ~@14 H I J@3 K L M N O P@6 Q R ~@3 S T U V ~@7 H I J@3 K L M N O P@6 Q R J@3 K L M N O J@3 K
  W X Y Z AA@2 AB@2 AC@2 AD AE J@3 K L M N AF J@3 K L M N AF J@3 K L M N AF J@3 K L M N AF AG@2 AH AI ~@4 AG@2 AH AI ~@3
  AJ AK@2 AL AM ~@4
>`.pickRestart({
  A: "~ [f5,a5]@2 ~", B: "[f3,d4] [e3,c4], a3", C: "[f3,a3,d4] [g3,c4,e4]", D: "[f3,bb3,d4] [a3,d4,e4]",
  E: "[d4,f4] [c4,e4], a3", F: "[a3,d4,f4] [c4,e4,g4]", G: "[bb3,d4,f4] [d4,e4,a4]", H: "[bb3,eb4,g4]",
  I: "~ a5, [d4,e4,a4]", J: "[f3,a3,d4] [e3,a3,c4]", K: "[d3,g3,bb3] [e3,a3,c4]", L: "[f4,a4,d5] [a4,c5,e5], db-1 ~@7",
  M: "[a4,d5,f5] [c5,e5,g5]", N: "[a4,d5,f5] [a4,c5,e5]", O: "[a4,d5,e5,a5] ~", P: "[[f3,bb3,d4]@7 [g3,c4,e4]]/2",
  Q: "[f3,bb3,d4]", R: "~ [a3,d4,e4]@3", S: "~@12 e5 [e5,f5]!3", T: "a4 ~@7, c5 ~@15", U: "~@15 [e6,f6]",
  V: "a6 ~, g6 ~@15", W: "[db-1,f4,a4,d5,a6]@2 g6 c7, ~ [a4,c5,e5]", X: "[a4,d5,f5,a6]@2 g6 c7, ~ [c5,e5,g5]",
  Y: "[a4,d5,f5,a6]@2 g6 c7, ~ [a4,c5,e5]", Z: "[a4,d5,e5,a5,a6] ~", AA: "[~@8 f4@4 a4@4 g4@15 ~, [f3,bb3,d4]@31 ~]/2",
  AB: "[~@8 f4@4 a4@4 g4@15 ~, [f3,bb3,d4]@15 ~]/2", AC: "[~@8 f4@4 a4@4 g4@13 ~@3, [f3,bb3,d4]@15 ~]/2",
  AD: "~ f4, [f3,bb3,d4]", AE: "~@4 [a3,d4,e4,a4]@9 ~@3", AF: "[a4,d5,e5,a5]", AG: "a3@2 g3 c4", AH: "a3 g3",
  AI: "f3 a3", AJ: "~@2 [a4,d5,e5] [a5,d6,e6,a6]", AK: "[f3,a3]@2 ~ c4, ~ g3", AL: "[f3,a3] g3", AM: "[f3,bb3] a3",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.8)

// other · flute
const flute = note("<~@89 A@3 B C@3 D E F G H I J I K ~@64>".pickRestart({
  A: "a2@2 g2 c3", B: "a2@3 g2@2 f2@3 e2@4 c2@3 ~", C: "a3@2 g3 c4", D: "a3@3 g3@2 f3@3 e3@4 c3@3 ~",
  E: "~@2 d4 c4 d4@2 f4@2 e4@3 [e4,f4] c4@3 ~", F: "~@2 d4 c4 d4@2 f4@2 g4@3 f4@3 e4@2",
  G: "~@2 d4 c4 d4@2 f4@2 g4@3 f4@3 g4@2", H: "a4@3 g4@3 f4@2 e4@3 [e4,f4] c4@4",
  I: "a4@3 g4@3 f4@2 e4@3 [e4,f4] c4@3 ~", J: "a4@3 g4@2 f4@2 ~ e4@3 f4 c4@3 ~, ~@12 e4 ~@3",
  K: "d4@3 e4@3 f4@2 e4 ~@7",
})).s("gm_flute").gain(0.4).pan(0.3)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@25 A B C D E F G H I J K@2 L M N O P Q R S P Q T U V@2 W X Y@2 Z AA A B C D E F G H I J K@2 L M N O P Q R S P Q T U
  V@2 W X Y@2 Z AA ~@15 AB V@2 W X Y@2 Z AC P Q R S P Q T AD P Q R S P Q T AD P Q R S P Q T AD P Q R S P Q T AD P Q R S
  P Q T AD P Q R S P Q T AE ~@8
>`.pickRestart({
  A: "~@4 a4@2 f4 ~ g4@2 g4@2 ~@4", B: "~@4 a4@2 f4 ~ g4@4 ~@4", C: "~@2 a4 ~ a4@2 f4 ~ g4 ~ g4 ~ g4@2 e4 ~",
  D: "f4!4 f4@2 d4 ~ e4@4 ~@4, ~@8 eb4 ~@7", E: "~@2 a4 ~ a4@2 f4@2 g4@2 g4@2 ~@4",
  F: "~@2 [ab4,a4] ~ a4@2 f4 ~ g4@3 ~@5", G: "~@2 [ab4,a4] ~ a4@2 f4 ~ g4 ~ g4 ~ g4@2 e4 ~",
  H: "f4 ~ f4 f4@2 d4 ~ e4@5 ~@2 a4!2, ~@7 eb4 ~@8", I: "bb4 ~ bb4 bb4@2 c5 ~ d5@2 c5@2 ~ bb4 ~ bb4 ~",
  J: "a4 ~ a4!2 ~ d5 ~ a4@4 ~@4 f4", K: "[bb4 ~ bb4!2 ~ c5 ~ d5@2 c5 ~ bb4 ~ bb4 ~ a4@3 g4 f4@2 g4 a4@6 ~@2 f4!2]/2",
  L: "bb4@2 bb4!2 ~ c5 ~ d5@2 c5 ~ bb4 ~ bb4@2 ~", M: "a4 ~ a4 a4@2 d5@2 [g4,ab4] ~@7 a4, ~@7 a4@4 ~@5",
  N: "bb4@2 bb4!2 ~ c5 ~ d5@2 c5@2 ~@3 d5 ~",
  O: "f5@2 e5 [d5,e5] ~ e5 ~ f5@2 e5@2 ~ [f4,a4,d5]@2 [g4,c5,e5]@2, ~@7 e5 ~@8", // Dsus2 Dm C
  P: "[a4,d5] ~ [a4,d5,f5] ~ [a4,d5,f5]@2 [g4,c5,e5] ~ [g4,c5,e5]@2 [e4,a4,c5] ~ [f4,a4,d5]@2 [g4,c5]@2, f5@2 ~@12 e5 ~", // D5 Dm C Am Dm C5
  Q: "[a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5]@2 [g4,e5] ~ [g4,c5,e5]@2 ~@2 [f4,a4,d5]@2 [g4,c5,e5]@2, ~@3 c5 ~@4", // Dm C Dm C
  R: "[a4,d5] ~ [a4,f5] ~ [a4,d5,f5]@2 [g4,c5,e5] ~ [g4,c5,e5]@2 [e4,a4] ~ [f4,a4,d5]@2 [g4,c5,e5]@2, f5 d5 ~@3 c5 ~@2", // D5 Dm C A5 Dm C
  S: "[f4,bb4] ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 [g4,c5] ~ [g4,c5,e5]@2 ~@2 [f4,a4,d5]@2 [g4,e5]@2, d5@2 ~@4 e5@2 ~@6 c5 ~", // Bb5 Bb C5 C Dm C
  T: "[a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5]@2 [g4,c5,e5] ~ [g4,c5,e5]@2 [e4,a4] ~ [f4,a4,d5]@2 [g4,c5,e5]@2, ~@5 c5 ~@2", // Dm C A5 Dm C
  U: "[f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 [g4,c5,e5] ~ [g4,c5] ~ [a4,a5]@2 [g4,g5] [f4,f5] [d4,d5] ~, ~@4 e5 ~@3", // Bb C C5 A G F D
  V: "[~@11 d4@2 f4 g4 a4@2 g4 ~ g4@2 f4 d4@3 ~ [a4,a5]@2 [g4,g5] [f4,f5] [d4,d5] ~]/2", W: "~@11 a4@2 g4 f4 ~",
  X: "a4@3 g4@2 f4 d4@4 [a4,a5]@2 [g4,g5] [f4,f5] [d4,d5] ~, g4 ~@15", // A G F D
  Y: "[~@11 d4@2 f4 g4 ~ ab4 ~ g4 ~ g4@2 f4 d4@2 ~ [a4,a5]@2 [g4,g5] [f4,f5] d5@2, ~@15 a4@2 ~@13 d4 ~]/2", // A G F
  Z: "~@12 a4 ~ a4 ~", AA: "a4 ~ a4 ~ a4 ~ g4@2 a4@4 ~@4", AB: "~@10 [a4,a5]@2 [g4,g5] [f4,f5] [d4,d5] ~",
  AC: "a4 ~ a4 ~ a4 ~ g4@2 a4@4 [f4,a4,d5]@2 [g4,c5,e5]@2", // Dm C
  AD: "[f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 [g4,c5,e5] ~ [g4,c5,e5]@2 ~@2 [f4,a4,d5]@2 [g4,c5,e5]@2", // Bb C Dm C
  AE: "[f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 [g4,c5,e5] ~ [g4,c5,e5]@3 ~ [g4,c5,e5]@3 ~", // Bb C
})).s("gm_synth_brass_1").gain(0.4).pan(0.4)

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

// drums · snare
const snare = s("sd").struct("<~@9 A@24 B@3 C B@2 D A@8 E A@16 B@3 C B@2 D A@8 E A@23 E A@7 E A@47 E ~@8>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~@4 x ~@2 x ~ x ~@2 x ~@3", D: "~@4 x ~@2 x ~ x ~@3 x ~@2",
  E: "~ x ~@2",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A B A B A B A B A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A
  B A B A B A B A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2
  A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@8
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@9 A@24 B C ~@6 A@7 D A@7 D A@8 B C ~@6 A@7 D A@7 D A@15 D A@7 D A@48 E@8
>`.pickRestart({
  A: "~ x ~ x!3 ~@2", B: "~ x ~ x ~@2 x ~@2 x ~@6", C: "~ x ~ x ~@2 x ~@2 x ~ x ~@4", D: "~ x ~ x!2 ~@3",
  E: "~@4 x!5 ~@7",
})).gain(0.4)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@9 A@24 B@8 A@24 B@8 A@88 C D C D C D C D>".pickRestart({
  A: "~@5 x ~ x ~@8", B: "x!9 ~@7", C: "~ x ~ x ~@2 x ~@2 x ~@6", D: "x ~ x ~@2 x ~@2 x ~ x ~@5",
})).gain(1.38)

stack(bass, bass_soft, epiano1, string_ensemble_1, flute, synth_brass_1, kick, snare, hihat, tambourine, jingle_bells)

More by Michael Jackson