Strudelify

Good God

Korn

KeyA minorTempo125 bpm
0:00/0:00
// Good God — Korn
// 125 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 8 "guitar effects" named as a guitar, played on electric guitar clean (its string ensemble 1 patch is not one); ch 9 "guitar effects" named as a guitar, played on electric guitar clean (its string ensemble 1 patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): extra guitar, guitar effects.
setcpm(125/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 · slap bass 1 · "bass- Fieldy"
const bass = note(`<
  ~ A@8 B C B@3 D B C B@3 C A@4 E F E F E F E F B C B@3 D B C B@3 C A@4 E F E F E F E F E F E F E F E F A G A G A G A
  G@2 A G H A@8 E F E F E F E F E F E F E F I@3 ~
>`.pickRestart({
  A: "[a#0,a#1]@2 [a0,a1]@2 ~@2 [a0,a1]!2 ~ [a0,a1] ~@2 [a#0,a#1]@2 [a0,a1]@2", // A# A A# A
  B: "[a#0,a#1]@2 [a0,a1]@3 ~ [a0,a1] [a0,a1]@2 [a0,a1] [a0,a1]@2 [a#0,a#1]@2 [a0,a1]@2", // A# A A# A
  C: "[a#0,a#1]@2 [a0,a1]@3 ~@4 [a0,a1] [a0,a1]@2 [a#0,a#1]@2 [a0,a1]@2", // A# A A# A
  D: "[a#0,a#1]@2 [a0,a1]@3 ~ [a0,a1]@4 [a0,a1]@2 [a#0,a#1]@2 [a0,a1]@2", E: "[a0,a1]@3 [d#1,d#2]@5",
  F: "[d1,d2]@3 [c1,c2]@2 [b0,b1] [a#0,a#1] [a0,a1]", // D C B A# A
  G: "[a#0,a#1]@2 [a0,a1]@2 ~@2 [a0,a1]!2 ~ [a0,a1]!2 ~ [a#0,a#1]@2 [a0,a1]@2", H: "[a#0,a#1] [a0,a1] ~@6",
  I: "[[a0,a1]@3 ~@5 [d1,d2]@11 [c1,c2]@2 [b0,b1] [a#0,a#1] [a0,a1], ~@3 [d#1,d#2]@16 ~@5]/3", // A D C B A# A D#
})).s("gm_slap_bass_1").gain(0.8)

// bass · distortion guitar · "guitar 1- Head"
const bass_2 = note(`<
  ~ A@8 B@12 A@4 C D C D C D C D B@12 A@4 C D C D C D C D C D C D C D C D ~@12 A@8 C D C D C D C D C D C D C D E@3 ~
>`.pickRestart({
  A: "a#1@2 a1@2 ~@2 a1!2 ~ a1 ~@2 a#1@2 a1@2", B: "a#1 a1 ~@6", C: "a1@3 d#2@5", D: "d2@3 c2@2 b1 a#1 a1",
  E: "[a1@3 ~@5 d2@11 c2@2 b1 a#1 a1, ~@3 d#2@16 ~@5]/3",
})).s("gm_distortion_guitar").gain(0.8)

// other · distortion guitar · "extra guitar"
const distortion_guitar = note(`<
  ~ A@3 B A@4 C D C E C D C D C D C D A@4 ~@7 F G@4 C D C D C D C D A@4 ~@7 F ~@35 F ~@10
>`.pickRestart({
  A: "~@2 a5 ~@2 a5 ~@2", B: "~@2 g#5 ~@2 a5 ~@2", C: "~@11 e5@5, ~@3 f5@5", D: "~@11 c5@5, ~@3 e5@5",
  E: "~@7 g4, ~@3 e5@5, ~@11 c5@5", F: "~@9 c5!3 d5!4",
  G: "[~@11 e5@5 ~@11 c5@5 ~@11 e5@5 ~@14 g4@2, d5, ~@3 f5@5 ~@3 e5@5 ~@3 f5@5 ~@3 e5@5, ~@59 c5@5]/4",
})).s("gm_distortion_guitar").gain(0.8)

// other · distortion guitar · "extra guitar" · soft notes
const distortion_guitar_soft = note("<~@31 A@2 ~@22 A@2 ~@34 A@2 ~@10>".pickRestart({
  A: "[~@12 a4@8 b4!4 c5 ~@7]/2",
})).s("gm_distortion_guitar").gain(0.4)

// chords · distortion guitar · "guitar 2- Munky"
const distortion_guitar_2 = note(`<
  ~ A@8 B@12 A@4 C@4 D@2 E@2 B@12 A@4 C@4 D@4 F G F G F G F G ~@12 A@8 C@4 D@4 F G F G F G H@3 ~
>`.pickRestart({
  A: "[f2,a#2]@2 [e2,a2]@2 ~@2 [e2,a2]!2 ~ [e2,a2] ~@2 [f2,a#2]@2 [e2,a2]@2", B: "[f2,a#2] [e2,a2] ~@6", C: "a3/2",
  D: "[g3 a3@7]/2", E: "[g3 a3@4 ~@3]/2", F: "[e2,a2]@3 [a#2,d#3]@5",
  G: "[a2,d3]@3 [g2,c3]@2 [f#2,b2] [f2,a#2] [e2,a2]", // D5 C5 B5 A#5 A5
  H: "[[e2,a2]@3 ~@5 [a2,d3]@11 [g2,c3]@2 [f#2,b2] [f2,a#2] [e2,a2], ~@3 [a#2,d#3]@16 ~@5]/3", // A5 D5 C5 B5 A#5 A5 D#5
})).s("gm_distortion_guitar").gain(0.8)

// chords · electric guitar clean · "guitar effects"
const electric_guitar_clean = note("<~@25 A@2 B@4 A@2 ~@16 A@2 C@6 ~@28 A@2 D@6 ~@10>".pickRestart({
  A: "a3/2", B: "[~@15 g3@2 a3@15, a3 ~]/4", C: "[~@15 g3@2 ~@14 g3@2 a3@14 ~, a3@16 ~ a3@15 ~@16]/6",
  D: "[~@15 g3@2 a3@14 g3@2 a3@14 ~, a3 ~@2]/6",
})).s("gm_electric_guitar_clean").gain(0.8)

// drums · kick
const kick = s("bd").struct(`<
  A B@3 C D C E C F@11 G B H I J K L K M K M K N F@11 G B H I J K L K M K M K N K L K M K M K O ~@12 B H I H B H I J K L
  K M K M K N K L K M K M K P ~@2
>`.pickRestart({
  A: "~ x!2 ~", B: "x ~ x ~@3 x!2 ~ x ~@4 x ~", C: "x ~ x ~@3 x!2 ~ x ~@6", D: "x ~@5 x!2 ~ x ~@4 x ~",
  E: "~@2 x ~@3 x!2 ~ x ~@4 x ~", F: "x!2 ~@3 x ~ x", G: "x!2 ~@3 x ~@2", H: "x ~ x ~@3 x!2 ~ x ~ x!2 ~@3",
  I: "~@2 x ~@3 x!2 ~ x!2 ~@3 x ~", J: "x!2 ~@6", K: "x ~ x!2 ~ x!2 ~@3 x ~@3 x!2", L: "x ~ x!2 ~ x ~@2 x ~ x ~@3 x ~",
  M: "x ~ x!2 ~ x ~@2 x ~ x ~@5", N: "x ~ x!2 ~ x ~@10", O: "x ~ x!2 ~ x ~@4 x ~ x ~ x ~", P: "x",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  A B@3 C D E F G B@11 H B E F I B@3 E B J B I B@11 H B E F I B@3 E B J B I B@3 E B J B K ~@12 B E F E B E F L B@3 E B J
  B I B@3 E B J B ~@3
>`.pickRestart({
  A: "~@7 x", B: "~ x ~ x", C: "~@4 x ~@7 x!4", D: "~ x!2 ~@3 x ~", E: "~@2 x ~@3 x!2", F: "x!2 ~ x",
  G: "~@4 x ~@7 x!3 ~", H: "~@4 x ~@6 x!3 ~@2", I: "~@4 x ~ x!4 ~@6", J: "~@4 x ~@7 x!2 ~@2", K: "~@4 x ~ x!4 ~@4 x ~",
  L: "~@4 x ~ x!2 ~ x ~@6",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~@19 B ~@3 C ~@5 B ~ C ~@11 B ~@3 C ~@5 B ~ C ~@5 B ~@21 D ~@5 B ~ C ~@5 B ~@4
>`.pickRestart({
  A: "x", B: "~@15 x", C: "~@13 x!3", D: "~@14 x!2",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@9 A@11 B ~@12 A@11 B ~@20 C@11 D ~@26>".pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "x!16", D: "x!2 ~@6 x ~@3 x ~@3",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~@19 B ~@3 C ~@5 D ~ C ~@11 B ~@3 C ~@5 D ~ C ~@5 D ~@21 E ~@5 D ~ C ~@5 D ~@4
>`.pickRestart({
  A: "x", B: "~@14 x!2", C: "~@11 x!2 ~@3", D: "~@7 x", E: "~@12 x!2 ~@2",
})).gain(0.8)

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

// drums · high tom
const high_tom = s("ht").struct("<~@20 A ~@3 B ~@7 B ~@11 A ~@3 B ~@7 B ~@27 C ~@7 B ~@10>".pickRestart({
  A: "~@7 x", B: "~@5 x ~@2", C: "~@10 x!2 ~@4",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct("<A ~@20 B ~@23 B ~@11 C D C D C D C D ~@12 B ~@15 C D C D C D C B ~@2>".pickRestart({
  A: "~ x", B: "x", C: "x ~@2 x ~@4", D: "x ~@2 x ~ x!3",
})).gain(0.8)

// drums · ride bell
const ride_bell = s("rd").struct("<A ~@24 B@7 C ~@16 B@7 C ~@9 D ~ D ~ D ~ D@2 ~ D ~@9 B@7 C ~@10>".pickRestart({
  A: "~ x ~@2", B: "x!8", C: "x!4 ~@4", D: "~@6 x!2",
})).gain(0.8)

stack(
  bass, bass_2, distortion_guitar, distortion_guitar_soft, distortion_guitar_2, electric_guitar_clean, kick, snare,
  low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride_bell
)

More by Korn