Strudelify

Divine

Korn

KeyA minorTempo247 bpm
0:00/0:00
// Divine — Korn
// 247 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 1 overdriven guitar (copy of ch 4 slap bass 1)
// note: Full arrangement: all 173 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(247/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · electric guitar clean
const electric_guitar_clean = note(`<
  ~@21 A B@4 C@2 D@2 B@4 C@2 E@2 F G H I F G H F@2 J K I F J L M@2 C@2 D@2 B@4 C@2 D@2 B@4 C@2 E@2 F G H I F G H F@2 J K
  I F J L N@8 ~@10 O P Q R S T@2 U V@2 W@3 X@2 Y@5 Z@3 AA AB AC AD@4 AE AF@3 AG AH@8 AI@7 AJ@8 AK@7
>`.pickRestart({
  A: "~ e3 e3@2", B: "[e3@2 e3!2 e3@2 e3@4 e3@2 e3@4]/2", C: "[e3@2 e3!2 e3@2 e3@4 e3@2 e3@2 e3@2]/2",
  D: "[e3 c3 g3@3 e3 e3@2]/2", E: "[e3 c3 g3@6]/2", F: "e3", G: "d3!2", H: "e3 c3", I: "c3", J: "d3!4", K: "e3@2 e3 c3",
  L: "e3@2 c3!2", M: "[e3@5 e3 e3@2]/2", N: "e3/8", O: "~@13 a2@3", P: "~ a2@7 a2@2 a2@2 a2@4",
  Q: "~ a2@2 a2@7 a2@2 a2@2 a2@2", R: "a2@2 ~ a2@2 a2@4 a2@2 ~ a2@2 a2@2", S: "a2@2 a2@2 a2@2 ~ a2@9",
  T: "[a2@4 a2@4 a2@7 a2@2 a2@2 ~ a2@4 a2@2 a2@6]/2", U: "~ a2@2 a2@2 a2@2 ~ a2@2 a2@2 a2@4",
  V: "[~ a2@2 a2@2 a2@2 a2@2 a2@2 ~ a2@2 a2@9 a2@4 a2@4 ~]/2",
  W: "[a2@6 a2@2 ~ a2@2 a2@4 a2@2 a2@7 a2@2 a2@2 ~ a2@2 a2@2 a2@2 a2@4 ~ a2@2 a2@2 a2@2 a2@2]/3",
  X: "[~ a2@2 a2@2 a2@9 a2@4 a2@4 ~ a2@7 a2@2]/2",
  Y: "[a2@2 a2@4 a2@2 ~ a2@6 a2@2 ~ a2@2 a2@2 a2@2 a2@2 a2@4 ~ a2@2 a2@2 a2@2 ~ a2@2 a2@2 a2@2 a2@9 a2@4 ~ a2@4 a2@7 a2@2 a2@2 a2@4 ~ a2@2]/5",
  Z: "[a2@7 a2@2 a2@2 a2@2 a2@2 a2@2 ~ a2@4 a2@2 a2@2 ~ a2@2 a2@2 a2@2 a2@2 ~ a2@12]/3", AA: "~ a2@4 a2@7 a2@2 a2@2",
  AB: "a2@4 ~ a2@2 a2@7 a2@2", AC: "a2@2 a2@2 a2@2 ~ a2@2 a2@4 a2@2 ~",
  AD: "[a2@2 a2@2 a2@2 a2@2 a2@2 ~ a2@13 a2@4 ~ a2@6 a2@2 a2@2 ~ a2@4 a2@2 a2@7 a2@2 a2@2 a2@2 ~ a2@2 a2@2]/4",
  AE: "a2@4 ~ a2@2 a2@2 a2@2 a2@2 a2@2 ~", AF: "[a2@2 a2@13 a2@4 ~ a2@6 a2@2 ~ a2@2 a2@4 a2@2 ~ a2@6 a2@2 a2@2]/3",
  AG: "~ a2@2 a2@2 a2@2 a2@4 ~ a2@2 a2@2", AH: "[a2@2 a2@2 ~ a2@2 a2@2 a2@85 e3@16 d3@8 d3@8 e3@2]/8",
  AI: "[~@3 c3@4 c3@8 e3@8 d3@4 d3@4 e3@4 c3@4 e3@8 e3@8 d3]/7",
  AJ: "[~ d3@2 d3@2 d3@2 e3@4 e3@2 c3@2 c3@8 e3@8 d3@2 d3@2 d3@2 d3@2 e3@4 c3@2 c3@2 e3@10 a3@2 a3@4 a3]/8",
  AK: "[~ a3@4 a3@4 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@4 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@4 a3@2 a3@2 a3@2 a3@2 a3@4 a3@2 ~]/7",
})).s("gm_electric_guitar_clean").gain(0.64)

// bass · slap bass 1
const bass = note(`<
  ~@5 A B A B A B A B A B A B A B A C D E D E D E D E D E D E D E D F@2 A B A B A B A B A B A B A B A B D E D G D E D E
  D E D E D E D E D E D F@2 A B A B A B A B A B A B A B A B H I@2 J K L M N@2 O P Q@2 R@2 S T@3 U V W X Y@2 O Z AA@3 AB
  AC AD AE@2 AF V AG@2 AH AI AJ AK AL@3 AM AC AN@3 AO AP AQ@5 AR@16 AS@6 AT@2
>`.pickRestart({
  A: "a1!2 e2@2 e2@2 a1!2", B: "e2@2 e2@2 a1!2 e2@2", C: "e2 ~@3 c2@2 a#1@2", D: "c2 b1 a#1 ~@3 c2 b1",
  E: "a#1 ~@3 c2 b1 a#1 ~", F: "[a#1 ~@3 c2@12]/2", G: "a#1 ~@3 c2@4", H: "a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a1@2 ~",
  I: "[a1@2 ~@2 a1@2 a1@2 ~@3 a#1@2 ~@2 a#1@2 ~@3 a1@2 a1@2 ~@2 a1@2 a1@2 ~@2]/2",
  J: "~ a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a#1@2", K: "~@3 a#1@2 ~@2 a1@2 a1@2 ~@3 a1@2",
  L: "a1@2 ~@3 a1@2 a1@2 ~@2 a1@2 a1@2 ~", M: "~@2 a#1@2 ~@2 a#1@2 ~@3 a1@2 a1@2 ~",
  N: "[~ a1@2 ~ a1@2 ~@2 a1@2 a1@2 ~@3 a1@2 a1@2 ~@3 a#1@2 ~@2 a#1@2 ~@2 a1@2]/2",
  O: "~ a1@2 ~@2 a1@2 a1@2 ~@3 a1@2 a1@2", P: "~@2 a1@2 ~ a1@2 ~@2 a#1@2 ~@3 a#1@2",
  Q: "[~@2 a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a1@2 ~ a1@2 ~@2 a1@2 a1@2 ~@3 a#1@2 ~]/2",
  R: "[~ a#1@2 ~@3 a1@2 a1@2 ~@2 a1@2 ~ a1@2 ~@2 a1@2 a1@2 ~@3 a1@2 a1@2 ~@2]/2",
  S: "a#1@2 ~@3 a#1@2 ~@2 a1@2 a1@2 ~@3",
  T: "[a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a1@2 a1@2 ~@3 a#1@2 ~@2 a#1@2 ~@3 a1@2 a1@2 ~@2 a1@2 ~ a1@2 ~@2 a1@2 a1@2 ~@2]/3",
  U: "~ a1@2 a1@2 ~@3 a#1@2 ~@2 a#1@2 ~@2", V: "a1@2 ~ a1@2 ~@2 a1@2 a1@2 ~@3 a1@2",
  W: "a1@2 ~@2 a1@2 ~ a1@2 ~@2 a#1@2 ~@3", X: "a#1@2 ~@2 a1@2 a1@2 ~@3 a1@2 a1@2 ~",
  Y: "[~ a1@2 ~ a1@2 ~@2 a1@2 a1@2 ~@3 a#1@2 ~@2 a#1@2 ~@3 a1@2 a1@2 ~@2 a1@2]/2",
  Z: "~@2 a#1@2 ~@3 a#1@2 ~@2 a1@2 a1@2 ~",
  AA: "[~@2 a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a1@2 a1@2 ~@3 a#1@2 ~@2 a#1@2 ~@3 a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a1@2 a1@2]/3",
  AB: "~@3 a1@2 a1@2 ~@3 a#1@2 ~@2 a#1@2", AC: "~@2 a1@2 ~ a1@2 ~@2 a1@2 a1@2 ~@3",
  AD: "a1@2 a1@2 ~@2 a1@2 ~ a1@2 ~@2 a#1@2 ~",
  AE: "[~@2 a#1@2 ~@2 a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a1@2 ~ a1@2 ~@2 a1@2 a1@2 ~@2]/2",
  AF: "~ a#1@2 ~@2 a#1@2 ~@3 a1@2 a1@2 ~@2",
  AG: "[a1@2 ~@2 a#1@2 ~@3 a#1@2 ~@2 a1@2 a1@2 ~@3 a1@2 a1@2 ~@3 a1@2 a1@2 ~]/2",
  AH: "~ a1@2 ~ a1@2 ~@2 a#1@2 ~@2 a#1@2 ~@2", AI: "~ a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a1@2",
  AJ: "a1@2 ~@3 a1@2 a1@2 ~@3 a#1@2 ~@2", AK: "a#1@2 ~@2 a1@2 ~ a1@2 ~@2 a1@2 a1@2 ~",
  AL: "[~@2 a1@2 a1@2 ~@2 a1@2 ~ a1@2 ~@2 a#1@2 ~@3 a#1@2 ~@2 a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a1@2 ~ a1@2 ~@2 a1@2 a1@2]/3",
  AM: "~@3 a#1@2 ~@2 a#1@2 ~@3 a1@2 a1@2",
  AN: "[a1@2 a1@2 ~@2 a#1@2 ~@3 a#1@2 ~@2 a1@2 a1@2 ~@3 a1@2 a1@2 ~@3 a1@2 a1@2 ~@2 a1@2 ~ a1@2 ~@2 a#1@2 ~@2 a#1@2]/3",
  AO: "~@3 a1@2 a1@2 ~@3 a1@2 a1@2 ~@2", AP: "a1@2 a1@2 ~@3 a1@2 a#1@2 a#1@2 ~ a#1@2",
  AQ: "[a#1@2 a#1@2 a#1@2 f2@71 ~ a1@2]/5", AR: "[a1 e2@2 e2@2 a1!2 e2@2 e2@2 a1!2 e2@2 a1]/2",
  AS: "[a1 a#2@2 a#2@2 a1!2 a#2@2 a#2@2 a1!2 a#2@2 a1]/2", AT: "[a1 a#2@2 a#2@2 a1!2 a#2@2 a#2@2 a1!2 a#2 ~@2]/2",
})).s("gm_slap_bass_1").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A B A B A B C D A B A B A B C D A B A B A B A B A B A B A B A E ~ A B A B A B A B A B A B A B A ~ A B A E A B A B
  A B A B A B A B A B A E ~ A B A B A B A B A B A B A B A ~@9 F ~@26 G H I J K L M N O P Q R S T U V W X ~@4 F Y Z Y Z Y
  Z Y Z Y Z Y Z Y Z AA ~@9
>`.pickRestart({
  A: "x!2 ~@4 x!2", B: "x ~ x!2 ~ x ~@2", C: "x!2 ~@6", D: "~@4 x!2 ~@2", E: "x ~ x!2 ~@4", F: "~@7 x", G: "~@5 x!2 ~",
  H: "x ~@6 x ~ x ~@4 x ~", I: "x ~@8 x ~@3 x ~ x", J: "~@4 x ~@6 x ~ x ~@2", K: "~ x ~@2 x ~@7 x ~@3",
  L: "~ x ~ x ~@4 x ~@5 x ~", M: "x ~@4 x ~ x ~@8", N: "x ~@3 x ~@2 x ~@3 x ~@4", O: "~@2 x ~ x ~@3 x ~@2 x ~@4",
  P: "~@4 x ~@3 x ~ x ~@4 x", Q: "~@5 x ~@2 x ~@3 x ~ x ~", R: "~@7 x ~@4 x ~ x ~", S: "~@2 x ~@6 x ~ x ~@4",
  T: "x ~ x ~@8 x ~@3 x", U: "~ x ~@4 x ~@6 x ~ x", V: "~@3 x ~@2 x ~@7 x ~", W: "~@3 x ~ x ~@4 x ~@5",
  X: "x ~ x ~@4 x ~@8", Y: "x ~@4 x!3", Z: "~ x!2 ~ x ~@2 x", AA: "x ~@4 x!2 ~",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  A B A B ~ C@7 B C@7 B C@16 ~ C@15 D C@20 ~ C@15 D E F G H I J K L M ~@24 N O P Q R S C T U V W ~ X Q Y S C T U ~ S ~@4
  S@14 Z ~ AA AB AA AB AA AB AA AB
>`.pickRestart({
  A: "~ x!2 ~", B: "x!2 ~ x", C: "~ x", D: "x", E: "x ~ x ~@4 x ~ x ~@3 x ~@2", F: "x ~@3 x ~ x ~@4 x ~@3 x",
  G: "~@2 x!2 ~ x!2 ~", H: "~ x ~ x ~@4 x ~ x ~@3 x ~", I: "~@3 x ~@3 x ~ x ~@4 x ~", J: "x ~@4 x ~ x ~@3 x ~ x ~@2",
  K: "~@2 x ~@3 x ~@4 x ~ x ~@2", L: "~ x ~@2 x ~@3 x ~ x ~@4 x", M: "~ x ~@4 x ~@3 x ~@5", N: "~@13 x ~ x",
  O: "~@3 x ~@2 x ~@3 x ~ x ~@3", P: "~ x ~ x ~@3 x ~@8", Q: "~@3 x ~@12", R: "~ x ~@2", S: "~@3 x ~@4", T: "~@5 x ~@2",
  U: "~@3 x", V: "~@13 x ~@2", W: "~@15 x", X: "~ x ~@14", Y: "~@5 x ~@10", Z: "~@3 x ~@3 x", AA: "~ x ~ x ~@3 x",
  AB: "~ x ~@3 x ~@2",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@3 [~@3 x] ~@16 x ~@151 [~@5 x ~@2]>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@53 A ~@36 A ~@17 B C D E F G H I J K L M N O P Q R ~@18 S T ~@19 U ~@8
>`.pickRestart({
  A: "~@2 x!2 ~@3 x", B: "~@4 x ~@3 x ~@4 x ~ x", C: "~@3 x ~@2 x ~@9", D: "~@2 x!2", E: "x ~@2 x ~@3 x ~ x ~@6",
  F: "~@11 x ~@4", G: "x ~@3 x ~ x ~@4 x ~ x ~@2", H: "~@15 x", I: "~@3 x ~@4 x ~ x ~@3 x ~", J: "~ x ~@14",
  K: "~@2 x ~@4 x ~@3 x ~ x ~@2", L: "~ x!2 ~@5", M: "~@6 x ~@3 x ~@4 x", N: "~ x ~@4 x ~ x ~@7", O: "~@5 x ~ x",
  P: "~@2 x ~@2 x ~@3 x ~ x ~@4", Q: "~@13 x ~@2", R: "~ x ~ x!2 ~@3", S: "~@9 x ~ x ~@2 x ~", T: "x!3 ~@5",
  U: "~ x!2 ~@3 x ~",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A B A B ~@7 C ~@7 C ~@33 D ~@36 D E F G H I J K L M ~@8 N O P Q R S T U V W X Y Z AA AB AC AD AE AF ~@16 AG AH ~@19 AI
  AJ AK AJ AK AJ AK AJ AL
>`.pickRestart({
  A: "~ x!2 ~@10 x!2 ~", B: "~@9 x!2 ~@5", C: "~@12 x!4", D: "~@5 x!2 ~", E: "x!5 ~ x!9 ~", F: "x!9 ~ x!6",
  G: "x!3 ~ x!9 ~ x!2", H: "x!6 ~ x!9", I: "~ x!9 ~ x!5", J: "x!4 ~ x!9 ~ x", K: "x!8 ~ x!7", L: "x!2 ~ x!9 ~ x!3",
  M: "x!5 ~ x!8 ~@2", N: "~@4 x ~@3 x ~@4 x ~ x", O: "~@3 x ~@2 x ~@9", P: "~@2 x!2", Q: "x ~@2 x ~@3 x ~ x ~@6",
  R: "~@11 x ~@4", S: "x ~@3 x ~ x ~@4 x ~ x ~@2", T: "~@15 x", U: "~@3 x ~@4 x ~ x ~@3 x ~", V: "~ x ~@14",
  W: "~@2 x ~@4 x ~@3 x ~ x ~@2", X: "~ x!2 ~@5", Y: "~@6 x ~@3 x ~@4 x", Z: "~ x ~@4 x ~ x ~@7", AA: "~@5 x ~ x",
  AB: "~@2 x ~@2 x ~@3 x ~ x ~@4", AC: "~@13 x ~@2", AD: "~@2 x ~@3 x ~ x ~@4 x ~ x", AE: "~@3 x ~ x!9 ~ x",
  AF: "x!8 ~ x ~@6", AG: "~@9 x ~ x ~@2 x ~", AH: "x!3 ~@5", AI: "~@8 x ~ x ~@4 x", AJ: "x ~@10 x!2 ~@3",
  AK: "~@7 x!2 ~@6 x", AL: "~@7 x!2 ~@7",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5 A B@7 A B@6 A@2 B@6 C A B@6 C ~ A B@3 A B@3 A B@3 A B@6 C A B@6 C A B@6 C ~ A B@3 A B@3 A B@3 A B@3 ~@35 D E F G H
  I J K G L M N O P Q R S T ~@5 U@3 V U@3 V U@3 V U@3 V ~@8
>`.pickRestart({
  A: "~ x", B: "x!2", C: "x", D: "~@7 x", E: "~@3 x ~@3 x ~@3 x ~@4", F: "x ~@3 x ~@4 x ~@6",
  G: "~@2 x ~@3 x ~@4 x ~@3 x", H: "~ x!3", I: "~@5 x ~@4 x ~@3 x ~", J: "~@3 x ~@3 x ~@4 x ~@3",
  K: "x ~@8 x ~@3 x ~@2", L: "~@4 x ~@8 x ~@2", M: "~ x ~@3 x ~@4 x ~@3 x ~", N: "~@3 x ~@3 x ~@8",
  O: "x ~@4 x ~@3 x ~@3 x ~@2", P: "~@2 x ~@3 x ~@4 x ~@4", Q: "~@4 x ~@3 x ~@4 x ~@2", R: "~ x ~@4 x ~@3 x ~@3 x ~",
  S: "~@7 x ~@4 x ~@3", T: "x ~@4 x ~@10", U: "~@3 x ~@3 x", V: "~@3 x ~@4",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<A B A B ~@49 B ~@36 B ~@73 C D C D C D C D E>".pickRestart({
  A: "x ~@2 x", B: "~ x", C: "~@3 x ~@3 x", D: "~@5 x ~@2", E: "~@3 x ~@4",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  A B A C ~ D ~@6 E D ~@6 E D ~@6 F D ~@6 F ~ D ~@3 D ~@3 D ~@3 D ~@6 F D ~@6 F D ~@6 F ~ D ~@3 D ~@3 D ~@3 D ~@11 G
  ~@26 H ~ I ~@2 J ~ K ~ F ~ E ~ L ~@2 M ~ N ~@3 G ~@3 G ~@3 G ~@3 G ~@4 O P O P O P O Q
>`.pickRestart({
  A: "~ x!2 ~", B: "x!2 ~ x", C: "x!2 ~@2", D: "x", E: "~@3 x", F: "~ x", G: "~@7 x", H: "~@5 x ~@2", I: "~@13 x ~@2",
  J: "~ x ~@14", K: "~ x ~@2", L: "~@15 x", M: "~@3 x ~@12", N: "~@3 x ~@4", O: "~ x ~ x ~@3 x", P: "~ x ~@3 x ~@2",
  Q: "~ x ~@6",
})).gain(0.64)

// drums · ride bell
const ride_bell = s("rd").struct("<~@147 [~@3 x] [~@5 x ~@10] ~@24>").gain(0.64)

stack(electric_guitar_clean, bass, kick, snare, hihat, low_tom, mid_tom, open_hat, high_tom, crash, ride_bell)

More by Korn