Strudelify
Bad cover art

Bad

Bad

Michael Jackson

KeyA minorTempo114 bpm
0:00/0:00
// Bad — Jackson Michael
// 114 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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 · "Bass"
const bass = note(`<
  ~ A B C B A B C B A B C B A B C B A B C B A B C B A B C B D@3 E F G H I J K H L A B C B A B C B A B C B A B C B D@3 E
  F G H I J K H L A B C B A B C B A B C B D@3 E F G H I F G H I F G H I F G H I F G H I F G H I F G H I J K H L
>`.pickRestart({
  A: "[a0,a1]@4 [c1,c2]@4 [d1,d2]@4 [d#1,d#2]@2 [e1,e2] ~", B: "~ [a0,a1] [c1,c2]@2 [d1,d2]@2 [d#1,d#2] [e1,e2]",
  C: "[a0,a1]@2 [c1,c2]@2 [d1,d2]@2 [d#1,d#2] e1, ~@14 e2 ~", D: "[b0,b1]@2 ~ [d1,d2] ~@2 [c#1,c#2]@9 ~",
  E: "[e1,e2]@2 ~@2 [e1,e2]@2 ~@2 [e1,e2] ~ [d1,d2]@4 [c1,c2] ~", // E D C
  F: "[a0,a1]@3 ~ [c1,c2]@4 [d1,d2]@3 ~ [d#1,d#2]@2 e1@2, ~@14 e2 ~", // A C D D#
  G: "[a0,a1]@3 ~ [c1,c2]@3 ~ [d1,d2]@2 c1@2 [d1,d2]@2 [c1,c2]@2, ~@10 c2 ~@5", // A C D C
  H: "[a0,a1]@2 [c1,c2]@2 [d1,d2]@2 [d#1,d#2] [e1,e2]", // A C D D# E
  I: "[a0,a1]@4 [c1,c2]@4 [d1,d2]@2 [d#1,d#2] [e1,e2] [d1,d2]@2 [c1,c2]@2", // A C D D# E D C
  J: "[a0,a1]@3 ~ [c1,c2]@4 [d1,d2]@4 [d#1,d#2]@2 [e1,e2]@2", K: "[a0,a1]@2 [c1,c2]@2 [d1,d2] [c1,c2] [d1,d2] [c1,c2]",
  L: "[a0,a1]@4 [c1,c2]@3 [d1,d2] ~@8", // A C D
})).s("gm_synth_bass_2").gain(0.38)

// other · epiano2 · "Electric Piano"
const epiano2 = note(`<
  ~@9 A B A B A B A B A B A B A B A B A B A B C D E F ~@12 A B A B A B A B A B A B C D E F ~@12 A B A B A B A B C D E F
  ~@32
>`.pickRestart({
  A: "~@4 g3@4 f#3@4 f3@2 e3 ~", B: "~ e3 g3@2 f#3@2 f3 e3", C: "[b2,d3,f#3]@3 [c#3,e3,b3]@5, a3@5 ~ g#3@8 ~@2",
  D: "[b2,a3]@3 [c#3,e3,g#3,b3]@5, [d3,f#3]@5 ~@11", E: "[b2,d3,f#3,a3]@3 [c#3,e3,g#3,b3]@4 ~",
  F: "[e3,e4] ~ [e3,e4] ~ e3 ~@3, ~@8 e4 ~@7", // E
})).s("gm_epiano2").gain(0.22).pan(0.6)

// chords · percussive organ
const percussive_organ = note(`<
  ~@17 A B A C A B A C A B A C ~@4 A B A C A B A C ~@4 A B A C A B A C A B A C ~@4 A B A C A B A C ~@4 A B A C A B A C
  ~@4 A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C
>`.pickRestart({
  A: "[e4,g4,a4]@2 ~ [e4,g4,a4] ~@12", B: "[g4,a4,c5]!2 ~ [e4,g4,a4] ~@12", C: "[g4,a4,c5] [g4,a4] ~ [e4,g4,a4] ~@12",
})).s("gm_percussive_organ").gain(0.2).pan(0.3)

// chords · electric guitar clean · "Clean Electric Guitar"
const electric_guitar_clean = note(`<
  ~@45 A B A B A B A B A B A B ~@4 C D C D C D C D ~@16 C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D
>`.pickRestart({
  A: "[e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5]!2 ~ [e4,a4,c5] ~@2 [e4,a4,c5]!2", // Am
  B: "~@2 [e4,a4,c5] ~ [e4,a4,c5]!2 ~ [e4,a4,c5] ~@8", // Am
  C: "[a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5]!2 ~ [a4,c5] ~@2 [a4,c5]!2", // Am
  D: "~@2 [a4,c5] ~ [a4,c5]!2 ~ [a4,c5] ~@8", // Am
})).s("gm_electric_guitar_clean").gain(0.19).pan(0.7)

// chords · electric guitar clean · "Clean Electric Guitar" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@46 A ~ A ~ A ~ A ~ A ~ A ~@5 B ~ B ~ B ~ B ~@17 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B
>`.pickRestart({
  A: "~ [e4,a4,c5] ~@14", B: "~ [a4,c5] ~@14",
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.7)

// other · brass section · "Brass"
const brass_section = note(`<
  A ~@31 B C ~ C ~ C ~@20 D ~ B C E F ~ C G ~@15 D ~ B ~@15 H I E F ~ C G ~ H I E F ~ C G ~@2
>`.pickRestart({
  A: "~@3 d5 ~@2 e5 ~@2 f#5 ~@2 g5 ~@3", B: "[e4,e5] ~ [e4,e5] ~ [e4,e5] ~@3", C: "~@6 [a4,a5] ~",
  D: "~@7 [b3,b4] ~ [b3,b4] ~ [b3,b4]@3 [c#4,c#5] ~", E: "~@8 [d4,d5] [c4,c5] ~ a3@2 ~ [g3,g4] ~, ~@11 a4 ~@4",
  F: "[a3,a4] c4 ~ [c4,c5]@3 [a3,a4] ~@5 [a4,a5]@2 ~@2", // A C A
  G: "~@6 [d#4,d#5] ~ [d4,d5]@2 [c4,c5] ~ [a3,a4] ~ [g3,g4] [a3,a4]", // D# D C A G A
  H: "~@9 [e3,e4] [a3,a4] [d4,d5] [a3,a4] [d4,d5] [g4,g5] [c5,c6]", I: "~ [c5,c6] [a4,a5] ~@9 [a4,a5]@2 ~@2",
})).s("gm_brass_section").gain(0.24)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<A B C B C B C B C ~@32 B D E D ~@24 B C B C ~@44>".pickRestart({
  A: "~@3 [g2,d4]@2 ~ [e4,e5,e6] ~@2 [f#4,f#5,f#6] ~@2 [c3,g4]@2 ~@2, ~@3 [d5,d6] ~@2 a2@2 ~ b2@2 ~ [g5,g6] ~@3", // G5 E F# C5 D G
  B: "a2@4 [c3,g3]@4 [d3,f#3]@4 [d#3,f3]@2 e3 ~", C: "~ [a2,e3] [c3,g3]@2 [d3,f#3]@2 [d#3,f3] e3",
  D: "~@2 [a2,e3]@2 [c3,g3]@4 [d3,f#3]@4 [d#3,f3]@2 e3 ~", E: "a2@4 [c3,g3]@4 [d3,f#3]@4 [d#3,f3]@2 e3 ~, e3@7 ~",
})).s("gm_string_ensemble_1").gain(0.15).pan(0.3)

// chords · orchestra hit · Cmaj7 Dmaj7 Emaj7 Fmaj7 Em
const orchestra_hit = note(`<
  [~@3 [c4,e4,g4,b4,d5] ~@2 [d4,f#4,a4,c#5,e5] ~@2 [e4,g#4,b4,d#5,f#5] ~@2 [f4,a4,c5,e5,g5] ~@3]
  ~@31
  [[e4,g4,g5]@2 ~@2 [e4,g4,g5]@2 ~@2 [e4,g4,g5]@3 ~@5]
  ~@27
  [[e4,g4,g5]@2 ~@2 [e4,g4,g5]@2 ~@2 [e4,g4,g5]@3 ~@5]
  ~@23
  [[e4,g4,g5]@2 ~@2 [e4,g4,g5]@2 ~@2 [e4,g4,g5]@3 ~@5]
  ~@32
>`).s("gm_orchestra_hit").gain(0.3)

// chords · synth strings 2 · "Synth Strings"
const synth_strings_2 = note(`<
  ~@29 A B C ~ D E F G H G I J ~@16 A B C ~ I E F G H G I J ~@12 A B C ~ I E F G I E F G I E F G I E F G I E F G I E F G
  I E F G H G I J
>`.pickRestart({
  A: "[a3,b3,d4]@4 ~@2 [b3,c#4,e4]@7 ~@3", B: "[d4,f#4]@6 [b3,e4,g#4]@9 ~, a3@5 ~@11",
  C: "[a3,d4,f#4,a4]@5 [b3,e4,g#4,b4]@9 ~@2, b3 ~@15", D: "[g4,c5] [f#4,a4], e4@3 ~@5",
  E: "g4@8 [f#4,a4]@7 ~, e4@3 ~@5", F: "g4 [f#4,a4], c5@3 ~@5", G: "[e4,g4] [f#4,a4]", H: "[g4,c5]@7 ~ [f#4,a4]@8",
  I: "[g4,c5] [f#4,a4]", J: "[g4,c5]@7 [f#4,d5] ~@8",
})).s("gm_synth_strings_2").gain(0.21)

// chords · rock organ
const rock_organ = note("<~@71 A B@2 C D E ~@40>".pickRestart({
  A: "~@7 e3 [f3,g3,a3] [b3,c4,d4] [e4,f4,g4] [a4,b4,c5] [d5,e5,f5] [g5,a5,b5] [c6,d6,e6] [f6,g6,a6]", // F Bm Em Am Dm G C F
  B: "[b6@3 ~ a6@3 ~ [d6,d#6,g6] e6 [d#6,g6] [c6,d6] a5 ~ [a6,c7]@8 [a6,c7] ~ b6 a6@2 [g6,c7] ~@2 [c6,d6,d#6,f#6] e6, a#6 ~@13 [g#6,d7] ~@9 [g6,c7]@3 ~@3 g6@2]/2", // D#maj7 D# Csus2 Am C5 Cdim G#dim C5
  C: "[d6,g6] d#6 c6 ~@3 c6 ~ [d6,d#6] ~ [a5,d6,f#6] ~@3 [d6,d#6,e6,f6] e6, ~@4 g6 ~@2 g6, ~@9 e6@2 ~@5", // G5 D#maj7 D
  D: "~@2 g6 e6 d6 [d#6,e6] g6@2 g6@2 d6 [d#6,g6] g6 [e6,g6] g6 ~, g6@2 ~ g6@2 ~@11, ~ e6@2 ~@5 e6 ~@2 e6@2 ~@3", // Emaj7 D# Em
  E: "d6 [d#6,g6] g6 ~ e6@2 [d6,d#6] [e6,g6] g6!2 ~ e6 [d6,d#6,f6,g6] [c6,d6,d#6,e6] [a5,c6] ~, ~@4 g6 ~@5 g6@2 ~@4", // D# D#maj7 Em D#maj7 Am
})).s("gm_rock_organ").gain(0.25).pan(0.6)

// chords · rock organ · soft notes · Cmaj7 Em
const rock_organ_soft = note(`<
  ~@71
  [~@4 a2@2 [b2,c3] d3 ~@8, ~@4 c3 ~@11]
  [~@10 d6 ~@5]
  ~
  [~@8 b5 ~@7]
  [~@5 g6 ~ e6 ~ e6@2 ~@3 e6 [e6,g6]]
  [~ e6 ~ e6 ~ g6 ~@2 e6@2 ~@6]
  ~@40
>`).s("gm_rock_organ").gain(0.15).pan(0.6)

// chords · lead 2 sawtooth · "Sawtooth"
const lead_2_sawtooth = note("<~@77 A@4 ~@36>".pickRestart({
  A: "[a4 e4 g4 a4 c5 g4 a4 c5 [c5,d5] a4 c5 d5 d#5 e5 [a5,c6]@13 ~ [g5,a5,c6]@2 [g5,a5,c6]@6 [g5,a5,c6] ~ [a5,b5,d6]@7 ~ [a5,b5,d6]@6 g5@2 [a5,b5,d6]@3 c6 a5 ~ a5@2 g5 ~, ~@52 c6 ~@11]/4", // Csus2 Am Am7 Bm7
})).s("gm_lead_2_sawtooth").gain(0.19).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~ 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 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 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 A B A B A B A B A B A B A B A B A B A C
>`.pickRestart({
  A: "x ~ x ~ x ~ x!2", B: "~@2 x ~ x ~ x!2", C: "~ x!2 ~",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct(`<
  ~ A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B
  ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2
>`.pickRestart({
  A: "x ~ x ~ x ~ x!2", B: "~ x!2 ~ x ~ x!2",
})).gain(0.2)

// drums · rim · soft notes
const rim_soft = s("rim").struct(`<
  ~@3 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A
  B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A C
>`.pickRestart({
  A: "x ~ x ~ x ~ x!2", B: "~ x!2 ~ x ~ x!2", C: "~ x!2 ~@5",
})).gain(0.15)

// drums · clap
const clap = s("cp").struct("<~@9 [~ x ~ x]!32 ~@4 [~ x ~ x]!24 ~@4 [~ x ~ x]!43 [~ x ~@2]>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ 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 C D C D C E C D A B A B A B A B A B A B A B A B A B
  A B C D C D C E C D A B A B A B A B A B A B A B A B C D C D C E C D C D C D C E C D C D C D C E C D C D C D C E C F
>`.pickRestart({
  A: "x ~ x!3 ~ x!3 ~@2 x!2 ~ x ~", B: "~@3 x!2 ~ x!10", C: "x ~ x!3 ~ x!3 ~@2 x!2 ~ x!2", D: "x!5 ~ x!10",
  E: "x!3 ~ x ~ x!10", F: "~@3 x!2 ~ x!2 ~@8",
})).gain(0.15)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ 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 A B A B A C 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 A B A B A B A B A B A B A B A B A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B
>`.pickRestart({
  A: "~ x ~@3 x ~@3 x!2 ~@2 x ~@2", B: "~@5 x ~@10", C: "~@3 x ~ x ~@10",
})).gain(0.05)

// drums · shaker
const shaker = s("sh").struct(`<
  ~ 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 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 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 A B A B A B A B A B A B A B A B A B A C
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~@3 x ~ x ~ x ~@3 x ~ x ~ x", C: "~@3 x ~ x ~ x ~@8",
})).gain(0.15)

stack(
  bass, epiano2, percussive_organ, electric_guitar_clean, electric_guitar_clean_2, brass_section, string_ensemble_1,
  orchestra_hit, synth_strings_2, rock_organ, rock_organ_soft, lead_2_sawtooth, kick, rim, rim_soft, clap, hihat,
  hihat_soft, shaker
)

More by Michael Jackson