Strudelify

Bad Meets Evil

Eminem

KeyF♯ minorTempo95 bpm
0:00/0:00
// Bad Meets Evil — Eminem
// 94.8 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 85 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(94.8/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.

// chords · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note("<A@8 B@2 C@6 ~@69>".pickRestart({
  A: "[~@9 c4@76 [f3,f4]@19 [c3,c4]@94 [g3,g4]@28 ~ b3@43 [f#3,f#4]@9 [e3,e4]@14 c#4@85 ~ f4@2 ~@2 [g#4,a4], ~@293 c#3@57 ~@31 f#4@2 ~, ~@191 g4]/8", // F C G F# E Amaj7
  B: "[[a#4,b4]@2 ~@4 [g#5,a5]@2 ~ [c6,c#6]@2 ~@8 c5@2 ~@4 f5@2 ~@5 f5@2 ~@4 c5@2 ~@5 c5@2 ~@4 d#5@2 ~@4 c5@2 ~@5 c5@2 ~@3 c5 c5@2 ~ a#4!4 a#4@2 ~ f4@2 ~ g4@4 g#4@5 f4@2 g4@2, ~ [c5,c#5] c4@38 ~@8, ~@3 [d5,d#5]@2 [f#5,g5]@2 ~ [a#5,b5]@2 ~@5 c5@2 c5@2 ~@3 c5@2 c5@2 ~ c5@2 c5@2 c5@2 ~ c5@2 c5@2 ~@3 c5@2 c5@2 ~@3 c5@2 c5@2 ~ c5@2 c5@2 ~@3 c5@2 c5@2 ~@2 c#5@2 c#5@2 ~@26, ~@4 [e5,f5]@2 ~@8 f5@2 f5@2 f5@2 ~ f5@2 f5@2 ~@3 f5@2 f5@2 ~@3 f5@2 f5@2 ~ f5@2 d#5@2 d#5@2 ~ d#5@2 d#5@2 ~@3 d#5@2 d#5@2 ~ d#5@2 c#5@2 d#5@2 ~@2 c5@2 ~@3 c5@2 ~@5 a#4@2 ~@15]/2", // Bmaj7 Amaj7 C#maj7 D#maj7 Gmaj7 Bmaj7 Fmaj7
  C: "[f4@21 ~ e4@5 c4@61 f4@2 ~@6 [d5,d#5]@2 ~@4 c6@2 ~@5 f5@2 ~@4 c5@2 ~@4 f5@2 ~@5 f5@2 ~@4 c5@2 ~@5 c5@2 ~@4 d#5@2 ~@4 c5@2 ~@5 c5@2 ~ c5!2 ~ a#4@2 a#4!4 a#4@2 ~@37 f4@2 ~@5 g#4@5 f4@2 ~ g4@2 f4@36 e4@7 c4@17, ~@91 f#4@2 [g#4,a4]@2 [c5,c#5]@2 ~ [e5,f5]@2 [g#5,a5]@2 ~@5 f5@2 ~@3 f5@2 f5@2 ~ f5@2 f5@2 ~@3 f5@2 f5@2 ~@3 f5@2 f5@2 ~ d#5@2 d#5@2 d#5@2 ~ d#5@2 d#5@2 ~@3 d#5@2 d#5@2 ~@2 c5@2 c5@2 ~@5 c5@2 ~@48 g4@5 ~@68, ~@46 g4 [a#4,b4] ~ c4@19 c4@38 ~@38, ~@99 [f#5,g5]@2 [a#5,b5]@2 ~@5 c5@2 ~ c5@2 c5@2 ~@3 c5@2 c5@2 ~ c5@2 c5@2 c5@2 ~ c5@2 c5@2 ~@3 c5@2 c5@2 ~@3 c5@2 c5@2 ~ c5@2 c5@2 ~@2 c#5@2 d#5@2 c#5@2 ~ c#5@2 ~@124]/6", // D#maj7 Amaj7 C#maj7 Fmaj7 Amaj7 Bmaj7 Gmaj7 Bmaj7
})).s("gm_acoustic_guitar_steel").gain(0.24)

// chords · piano
const piano = note("<A@2 B@3 C@2 D ~@3 E ~@2 F@2 ~@69>".pickRestart({
  A: "[~@18 a5@9 ~ g5@9 ~@24 g5@5 f5@4 g5@14 ~@12, ~@37 f5@5 f5@5 f5@4 a5@33 ~@12, ~@40 e5@4 e5@5 g5@5 ~@42]/2",
  B: "[~@8 f5@52 ~@6 g5@27 g5@2 f5@2 ~@20 [c6,a6]@14 [c6,a6]@13, ~@65 f5@5 ~@28 e5@24 ~@22]/3", // F
  C: "[~ [c6,a6]@5 [c6,a6]@5 [c6,a6]@4 [c6,a6]@5 [c6,a6]@5 [c6,a6]@28 ~@20 g5@6 g#5@5 ~@2 g#5@2 ~ g5@2 f5@5, ~@72 f5@5 ~@19]/2", // F
  D: "d5@5 f5@4 g5@5 f#5@2 d5@2 ~ c5@5 d5@9 ~@15", E: "~@13 g5@35, ~ [d5,f5]@3",
  F: "[~@21 g5@38 ~@37, ~@19 [d5,f5]@38 ~@39]/2", // Dm
})).s("gm_piano").gain(0.11)

// other · piccolo · "Whistle"
const piccolo = note("<~@2 A@2 ~@81>".pickRestart({
  A: "[~@19 a6@2 ~ d7@2 a6@2 ~ d7@2 a6@26 ~@41]/2",
})).s("gm_piccolo").gain(0.08)

// bass · fretless bass · "Bass!"
const bass = note(`<
  ~@15 A@8 B@5 C D E F C D E F C D E F C D E F C D E F C D E F C D E F C D E F C D E F C D G H I J K H I J K H I J K H I
  J K H L
>`.pickRestart({
  A: "[~@47 f#1@12 ~@12 c#2@6 c#2@6 ~@6 e1@6 f#1@12 ~@18 c#2@6 c#2@6 f#1@6 c#2@12 ~@12 g#2@6 g#2@6 ~@6 g#1@6 c#2@12 ~@6 c#3@3 d3@3 c#3@6 b2@6 a2@6 g#2@6 f#1@12 ~@12 c#2@6 c#2@6 ~@6 e1@6 f#1@12 ~@18 c#2@6 c#2@6 f#1@6 c#2@12 ~@12 g#2@6 g#2@6 ~@6 g#1@6 c#2]/8",
  B: "[~@17 c#3@3 d3@3 c#3@6 b2@6 a2@6 g#2@6 f#1@12 ~@12 c#2@6 c#2@6 ~@6 e1@6 f#1@12 ~@18 c#2@6 c#2@6 f#1@6 c#2@12 ~@12 g#2@6 g#2@6 ~@6 g#1@6 c#2@12 ~@7 c#3@3 d3@3 c#3@6 b2@6 a2@6 g#2@6]/5",
  C: "f#1@2 ~@2 c#2!2 ~ e1", D: "f#1@2 ~@3 c#2!2 f#1", E: "c#2@2 ~@2 g#2!2 ~ g#1",
  F: "c#2@4 ~@2 c#3 d3 c#3@2 b2@2 a2@2 g#2@2", G: "c#2@12 ~@12 g#2@6 ~ g#2@6 ~@6 g#1@5",
  H: "~ c#2@12 ~@6 c#3@3 d3@3 c#3@6 b2@6 a2@6 g#2@5", I: "~ f#1@12 ~@12 c#2@6 c#2@6 ~@6 e1@5",
  J: "~ f#1@12 ~@18 c#2@6 c#2@6 f#1@5", K: "~ c#2@12 ~@12 g#2@6 g#2@6 ~@6 g#1@5", L: "~ f#1@12 ~@35",
})).s("gm_fretless_bass").gain(0.8)

// chords · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel_2 = note(`<
  ~@28 A@2 B C D E F G D E F G A@2 B C ~@8 A@2 B C H@2 I J@3 I K@2 ~@6 L@3 M N@3 M N@3 M O@2
>`.pickRestart({
  A: "~@2 [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~", B: "~@2 [c4,d4] ~ [c4,d4] ~ [c4,d4] ~",
  C: "[c4,d4] ~ [c4,d4] ~ [c4,d4] ~@3", // Csus2
  D: "f#5@2 ~@10 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2, ~@2 [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~", // F#5
  E: "e5 e5@2 e5 e5@2 e5 e5@2 e5 e5@2 d5 d5@2 d5 d5@2 d5 d5@2 d5 d5@2 c#5 c#5@2 c#5 c#5@2 c#5 c#5@2 c#5 c#5@2 [f#3,c#4,f#4]@6 ~@6, ~@2 [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~@3", // F#5
  F: "b4 b4@2 b4 b4@2 b4 b4@2 b4 b4@2 [c4,d4]@6 ~@6 [c4,d4]@6 ~@6 [c4,d4]@6 ~@6", // Csus2
  G: "[c4,d4]@6 ~@6 [c4,d4]@6 ~@6 [c4,d4]@6 ~@7 b4@2 ~ c#5@2 ~ d#5@2 ~ f5@2, ~@36 a#4@2 ~ c5@2 ~ d5@2 ~ e5@2 ~", // Csus2
  H: "[f#5@2 ~@10 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 ~ e5@2 e5 e5@2 e5 e5@2 e5 e5@2 ~ d5@2 d5 d5@2 d5 d5@2 d5 d5@2 ~ c#5@2 c#5 c#5@2 c#5 c#5@2 c#5 c#5@2 ~ [f#3,c#4,f#4]@6 ~@6, ~@12 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@5 f#5@2 ~@10 e5@2 ~@10 d5@2 ~@10 c#5@2 ~@11, ~@10 [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~@3]/2", // F#5
  I: "b4@2 b4 b4@2 b4 b4@2 b4 b4@2 ~ [c4,d4]@6 ~@6 [c4,d4]@6 ~@6 [c4,d4]@6 ~@6, ~@11 b4@2 ~@35", // Csus2
  J: "[[c4,d4]@6 ~@6 [c4,d4]@6 ~@6 [c4,d4]@6 ~@6 a#4@2 ~ c5@2 ~ d5@2 ~ e5@2 ~ f#5@2 ~@10 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 ~ e5@2 e5 e5@2 e5 e5@2 e5 e5@2 ~ d5@2 d5 d5@2 d5 d5@2 d5 d5@2 ~ c#5@2 c#5 c#5@2 c#5 c#5@2 c#5 c#5@2 ~ [f#3,c#4,f#4]@6 ~@6, ~@38 b4@2 ~ c#5@2 ~ d#5@2 ~ f5@2 ~@11 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@5 f#5@2 ~@10 e5@2 ~@10 d5@2 ~@10 c#5@2 ~@11, ~@18 [f#3,c#4,f#4] ~ [f#3,c#4,f#4] ~@3]/3", // Csus2 F#5
  K: "[[c4,d4]@6 ~@6 [c4,d4]@6 ~@6 [c4,d4]@6 ~@6 a#4@2 ~ c5@2 ~ d5@2 ~ e5@2 f5@2 ~@47, ~@38 b4@2 ~ c#5@2 ~ d#5@2 ~@50]/2", // Csus2
  L: "[~@38 b4@2 ~ c#5@2 ~ d#5@2 ~ f5@2 f#5@2 ~@10 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 e5 e5@2 e5 e5@2 e5 e5@2 e5 e5@2 d5 d5@2 d5 d5@2 d5 d5@2 d5 d5@2 c#5 c#5@2 c#5 c#5@2 c#5 c#5@2 c#5 c#5@2 [f#3,c#4,f#4]@6 ~@5, ~@37 a#4@2 ~ c5@2 ~ d5@2 ~ e5@2 ~@13 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@18 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@17]/3", // F#5
  M: "~ b4 b4@2 b4 b4@2 b4 b4@2 b4 b4@2 [c4,d4]@6 ~@6 [c4,d4]@6 ~@6 [c4,d4]@6 ~@5", // Csus2
  N: "[~ [c4,d4]@6 ~@6 [c4,d4]@6 ~@6 [c4,d4]@6 ~@7 b4@2 ~ c#5@2 ~ d#5@2 ~ f5@2 f#5@2 ~@10 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 f#5 f#5@2 e5 e5@2 e5 e5@2 e5 e5@2 e5 e5@2 d5 d5@2 d5 d5@2 d5 d5@2 d5 d5@2 c#5 c#5@2 c#5 c#5@2 c#5 c#5@2 c#5 c#5@2 [f#3,c#4,f#4]@6 ~@5, ~@37 a#4@2 ~ c5@2 ~ d5@2 ~ e5@2 ~@13 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@18 [f#3,c#4,f#4]@6 ~@6 [f#3,c#4,f#4]@6 ~@17]/3", // Csus2 F#5
  O: "[~ [c4,d4]@6 ~@6 [c4,d4]@6 ~@6 [c4,d4]@6 ~@7 b4@2 ~ c#5@2 ~ d#5@2 ~ f5@2 f#5@2 ~@45, ~@37 a#4@2 ~ c5@2 ~ d5@2 ~ e5@2 ~@48]/2", // Csus2
})).s("gm_acoustic_guitar_steel").gain(0.18)

// drums · kick
const kick = s("bd").struct(`<
  ~@15 A B C B D B C B D B C B E F G F H F G F H F G F H F G F H F G F H F G F H F G F H F G F H F G F H F G F I J K J I
  J K J I J K J I J K J I L
>`.pickRestart({
  A: "~@47 x", B: "~@5 x ~@5 x ~@35 x", C: "~@5 x ~@41 x", D: "~@5 x ~@38 x ~@2 x", E: "~@2 x ~@12 x", F: "x!3 ~@5",
  G: "x!2 ~@6", H: "x ~ x ~@12 x", I: "~ x ~@5 x ~@38 x ~", J: "~ x ~@5 x ~@5 x ~@34", K: "~ x ~@5 x ~@40",
  L: "~ x ~@46",
})).gain(0.72)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@15 A B C B C B C B C B C B D E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F G H I H I H
  I H I H I H I H I H I H J
>`.pickRestart({
  A: "~@47 x", B: "~@17 x ~@5 x ~@17 x ~@5 x", C: "~@5 x ~@11 x ~@23 x ~@5 x", D: "~ x ~ x ~@3 x", E: "x ~@2 x!2 ~@2 x",
  F: "x!2 ~ x ~@3 x", G: "x ~@17 x ~@5 x ~@18 x ~@4", H: "~ x ~@5 x ~@11 x ~@23 x ~@4",
  I: "~ x ~@17 x ~@5 x ~@17 x ~@4", J: "~ x ~@46",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@16
  [~@11 x ~@23 x ~@12]!11
  [~ x ~ x]!39
  [~@12 x ~@24 x ~@10]
  [~@13 x ~@23 x ~@10]!17
  ~
>`).gain(0.72)

stack(acoustic_guitar_steel, piano, piccolo, bass, acoustic_guitar_steel_2, kick, pedal_hat, open_hat)

More by Eminem