Strudelify

Porno Creep

Korn

KeyD minorTempo135 bpm
0:00/0:00
// Porno Creep — Korn
// 135 bpm, 4/8, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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.

// other · overdriven guitar
const overdriven_guitar = note(`<
  A@2 B@2 C@4 D@4 E@5 F@7 ~@8 G@4 H@3 I J@4 K@3 L G@4 M@3 I J@4 H@3 I G@4 H@3 I J@4 K@3 L G@4 M@3 I J@4 H@3 I G@4 H@3 I
  J@4 K@3 L G@4 M@3 I N@4 O@3 I ~@7
>`.pickRestart({
  A: "c-1/2", B: "f-1/2", C: "[~ e-1@7]/4", D: "[~@3 d-1@13]/4", E: "[~ g-1@15]/5", F: "[~ e-1@13]/7",
  G: "[a4@7 bb4]/4", H: "[ab4 f4]/3", I: "d4", J: "[a4@7 d5]/4", K: "[ab4 d5]/3", L: "eb5", M: "[ab4 a4]/3",
  N: "[~@2 g5 f5@2 ~ f5 d5@3 ~@4 d5@2, a4@7 ~]/4", O: "[~@2 g5 f5@2 ~ f5 d5@3 ~@2, ab4 f4]/3",
})).s("gm_overdriven_guitar").gain(0.22)

// bass · electric bass finger
const bass = note(`<
  ~@16 A B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D A
  B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D A B@3 A C@2 D E@4 ~@3
>`.pickRestart({
  A: "d1 f1", B: "[c2 d2 ~ f2@9]/3", C: "[c2 d2 ~ f2@2 g2 c3 ~]/2", D: "f2 ~ d2 ~", E: "d1/4",
})).s("gm_electric_bass_finger").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B C ~ A B C ~ A B C ~ A B C ~ A B C ~ A ~ D E A B C ~ A B F E A B C ~ A B F E A B C ~ A B G ~ A B C ~ A B F E A
  B C ~ A B F E A B C ~ A B F E A B C ~ A B G ~ A B C ~ A B F E A B C ~ A B F E A B C ~ A B F E A B C ~ A B G ~ A B C ~
  A B F E A B C ~@3 G
>`.pickRestart({
  A: "x ~@2 x", B: "~@3 x", C: "x!2 ~@4 x!2", D: "~@7 x", E: "~@2 x!2 ~@4", F: "x ~@5 x!2", G: "x",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@23 A ~@6 B C ~@7 C ~@7 C ~@7 D ~@7 E ~@7 C ~@7 C ~@7 D ~@7 E ~@7 C ~@7 C ~@7 D ~@7 E ~@5 F ~
>`.pickRestart({
  A: "~@2 x!2", B: "~@3 x ~ x!2 ~", C: "~@4 x ~ x!2", D: "~@3 x ~@2 x ~", E: "~ x", F: "x",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A@4 B C A@6 B C A@6 B C A@2 D A@3 B C A@2 D A@3 B C A@2 D A@3 B C A@2 D A@3 B C A@2 D A@3 B C A@2 D A@3 B C A@2 D
  A@3 B C A@2 D A@3 B C A@2 D A@3 B C A@2 D A@3 B C A@2 D A@3 B C A@2 D A E@6 D E@2 ~@4
>`.pickRestart({
  A: "x!2 ~ x", B: "~ x!3", C: "x!4", D: "~@3 x", E: "~ x ~ x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@55 A ~@31 A ~@31 A ~@12 B C ~>".pickRestart({
  A: "x ~@2 x ~@4", B: "~ x ~@2", C: "x",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A@4 B ~ A@6 B ~ A@6 B ~ A@2 C A@3 B ~ A@2 C A@3 B ~ A@2 C A@3 B ~ A@2 C A@3 B ~ A@2 C A@3 B ~ A@2 C A@3 B ~ A@2 C
  A@3 B ~ A@2 C A@3 B ~ A@2 C A@3 B ~ A@2 C A@3 B ~ A@2 C A@3 B ~ A@2 C A ~@6 D ~@6
>`.pickRestart({
  A: "~ x", B: "x", C: "~ x!2 ~", D: "~ x ~@2",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  ~@32 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 B C D
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~@15 x", D: "x!2 ~@14",
})).gain(0.64)

// drums · splash
const splash = s("cr").struct(`<
  ~@32 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~ B@10 ~@2 C
>`.pickRestart({
  A: "~ x ~@2", B: "x!2", C: "~ x ~@6",
})).gain(0.64)

stack(overdriven_guitar, bass, kick, snare, low_tom, hihat, mid_tom, open_hat, ride, splash)

More by Korn