Strudelify

Kim

Eminem

KeyE minorTempo144 bpm
0:00/0:00
// Kim — Eminem
// 144 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 212 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(144/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 · rock organ
const rock_organ = note(`<
  ~@14 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2
  A@4 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2
  C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2
  D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@6
>`.pickRestart({
  A: "[f#5,b5,e6] ~@7 [f#5,b5,e6] ~@7", B: "[g5,c6,e6] ~@7 [g5,c6,e6] ~@7", C: "[a5,c6,e6] ~@7 [a5,c6,e6] ~@7",
  D: "[f#5,a5,d#6] ~@7 [f#5,a5,d#6] ~@7", // D#dim
})).s("gm_rock_organ").gain(0.4).pan(0.3)

// other · violin
const violin = note(`<
  ~@46 A@4 B@2 C@2 A@4 B@2 C@2 ~@40 A@4 B@2 C@2 A@4 B@2 C@2 ~@56 A@4 B@2 C@2 A@4 B@2 C@2 D@4 E@2 F G D@4 E@2 F G D@4 H@2
>`.pickRestart({
  A: "[[c4,c5]@4 [b3,b4]@8 [c4,c5] [b3,b4] [a3,a4] [g3,g4]]/2", // C B C B A G
  B: "[[b3,b4]@4 [a3,a4]@8 [b3,b4] [a3,a4] [g3,g4] [f#3,f#4]]/2", C: "[a3@6 g3 ~@3 e3@6, a4 f#4, ~@7 f#3@3 ~@6]/2",
  D: "[c5@4 b4@8 c5 b4 a4 g4]/2", E: "[b4@4 a4@8 b4 a4 g4 f#4]/2", F: "a4", G: "f#4", H: "[b4 a4@2 ~]/2",
})).s("gm_violin").gain(0.64)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~@6 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2
  A@2 B@2 C@2 D@2 A@4 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2
  C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2
  D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@6
>`.pickRestart({
  A: "~ [f#2,b2,e3]", B: "~ [g2,c3,e3]", C: "~ [a2,c3,e3]", D: "~ [f#2,a2,c3]",
})).s("gm_synth_strings_2").gain(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@6 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E ~
  A@2 B@2 C@2 D@2 A@4 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E ~ A@2 B@2
  C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2
  D@2 A@2 B@2 C@2 E ~@23
>`.pickRestart({
  A: "[b4,e5,f#5,b5]/2", B: "[c5,e5,g5,b5]/2", C: "[a4,c5,e5,g5]/2", D: "[f#4,a4,c5,d#5]/2", E: "[f#4,a4,c5,d#5]",
})).s("gm_string_ensemble_1").gain(0.32)

// other · music box · E B E A G# E F# C# …
const music_box = note(`<
  [[e5,e6] [b4,b5] [e5,e6] [a5,a6]]
  [[g#5,g#6] [e5,e6]]
  [[f#5,f#6] [c#5,c#6]]
  [[a5,a6] [e5,e6]]
  [[f#5,f#6] [b4,b5] [d#5,d#6] [b4,b5]]
  [[b5,b6] [a5,a6] [d#5,d#6]@2]
  [[e5,e6]]
  ~@205
>`).s("gm_music_box").gain(0.4).pan(0.2)

// other · tubular bells
const tubular_bells = note("<e4 ~ e4 ~ e4 ~ e4 ~@205>").s("gm_tubular_bells").gain(0.4).pan(0.4)

// other · music box · E B E A G# E F# C# …
const music_box_2 = note(`<
  [[e4,e5] ~ [b3,b4] ~ [e4,e5] ~ [a4,a5] ~]
  [[g#4,g#5] [e4,e5]]
  [[f#4,f#5] [c#4,c#5]]
  [[a4,a5] [e4,e5]]
  [[f#4,f#5] [b3,b4] [d#4,d#5] [b3,b4]]
  [[b4,b5] [a4,a5] [d#4,d#5]@2]
  [[e4,e5]]
  ~@205
>`).s("gm_music_box").gain(0.4).pan(0.9)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@14 A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ E@2 F G H@2 I@2 E@2 F G H@2 I@2 A ~ B ~ C ~ D ~ A
  ~ A ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ E@2 F G H@2 I@2 E@2 F G H@2 I@2 A ~ B ~ C ~ D ~ A ~ B ~
  C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ E@2 F G H@2 I@2 E@2 F G H@2
  I@2 E@2 F G H@2 I@2 J ~@13
>`.pickRestart({
  A: "[b2,e3,f#3]!2 ~@4 [b2,e3,f#3]!2", B: "[c3,e3,g3]!2 ~@4 [c3,e3,g3]!2", C: "[a2,e3,g3]!2 ~@4 [a2,e3,g3]!2",
  D: "[a2,c3,d#3]!2 ~@4 [a2,c3,d#3]!2", E: "[[b2,e3,f#3]!2 ~@4 [b2,e3,f#3]!2 ~@4 [e1,e2]@4, [e1,e2]@3 ~]/2",
  F: "[c3,e3,g3]!2 ~@4 [c3,e3,g3]!2, [c1,c2]@3 ~", G: "~ [c1,c2]",
  H: "[[a2,e3,g3]!2 ~@4 [a2,e3,g3]!2 ~@4 [a0,a1]@4, [a0,a1]@3 ~]/2", // A7 A
  I: "[[a2,c3,d#3]!2 ~@4 [a2,c3,d#3]!2 ~@4 [b0,b1]@4, [b0,b1]@3 ~]/2", J: "[b2,e3,f#3]!2 ~@6",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.4)

// bass · fretless bass
const bass = note(`<
  ~@14 A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A
  ~ A ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~
  C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D ~ A ~ B ~ C ~ D
  ~ A ~ B ~ C ~ D ~ E ~@13
>`.pickRestart({
  A: "[e1,e2]!2 ~@4 [e1,e2]!2", B: "[c1,c2]!2 ~@4 [c1,c2]!2", C: "[a0,a1]!2 ~@4 [a0,a1]!2",
  D: "[f#0,f#1]!2 ~@4 [f#0,f#1]!2", E: "[e1,e2]!2 ~@6",
})).s("gm_fretless_bass").gain(0.4).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@14 [x!2 ~@2 x ~ x ~]!176 ~@22>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@14 [~ x]!176 ~@22>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@14 [x!2 ~@6]!176 ~@22>").gain(0.64)

// drums · ride bell
const ride_bell = s("rd").struct("<~@14 [x!4]!176 ~@22>").gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@14 [x!4]!176 ~@22>").gain(0.64)

stack(
  rock_organ, violin, synth_strings_2, string_ensemble_1, music_box, tubular_bells, music_box_2, overdriven_guitar,
  bass, kick, snare, low_tom, ride_bell, tambourine
)

More by Eminem