Strudelify

Clown

Korn

KeyA minorTempo161 bpm
0:00/0:00
// Clown — Korn
// 161 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 5 distortion guitar (copy of ch 1 overdriven guitar); ch 4 slap bass 2 (copy of ch 3 slap bass 1)
// note: Full arrangement: all 156 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(161/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · overdriven guitar
const overdriven_guitar = note(`<
  ~ A@3 B C@4 D E F E F E F E F G H G H G H G I J K J K J K J K J K J K J K J L@2 M@14 N O P Q R S T S T S T S T S T S T
  S T S T U V U V U V U V U V U V U V U V ~@2 W@10 X@2 W@2 Y@2 ~@2 Z AA Z AA Z AA Z AA AB AC AB AC AB AC AB AC AD@2 M@14
  N AE AF AG AH AI AJ AK AL ~
>`.pickRestart({
  A: "[~@5 [a#2,f3,a#3] ~ [a#2,f3,a#3]!3 [a2,e3,a3]@4 [a#3,f4,a#4]@9 [a#2,f3,a#3]!4 [a2,e3,a3]@4 [a3,e4,a4]@9 [a#2,f3,a#3]!4 [a2,e3,a3]@4]/3", // A#5 A5 A#5 A5 A#5 A5
  B: "[a#3,f4,a#4]@9 [a#2,f3,a#3]!4 [a2,e3,a3]@3", // A#5 A5
  C: "[~ [a3,e4,c#5]@42 [c3,g3,c4]@2 [c#3,g#3,c#4]@2 [c3,g3,c4]@2 [b2,f#3,b3]@2 [c3,g3,c4]@2 [b2,f#3,b3]@2 [c3,g3,c4]@2 ~ [c#3,g#3,c#4]@2 [c3,g3,c4]@2 [b2,f#3,b3]@2]/4", // A C5 C#5 C5 B5 C5 B5 C5 …
  D: "[c3,g3,c4] [b2,f#3,b3] [c3,g3,c4] [c#3,g#3,c#4] [b2,f#3,b3] ~ [c3,g3,c4] [c#3,g#3,c#4]", // C5 B5 C5 C#5 B5 C5 C#5
  E: "[c3,g3,c4] [b2,f#3,b3] [c3,g3,c4] [b2,f#3,b3] [c3,g3,c4] [c#3,g#3,c#4] [c3,g3,c4] [b2,f#3,b3]", // C5 B5 C5 B5 C5 C#5 C5 B5
  F: "[c3,g3,c4] [b2,f#3,b3] [c3,g3,c4] [c#3,g#3,c#4] [b2,f#3,b3]@2 [c3,g3,c4] [c#3,g#3,c#4]", // C5 B5 C5 C#5 B5 C5 C#5
  G: "[c3,g3,c4] ~ [b2,f#3,b3]@2 [c3,g3,c4]@2 [b2,f#3,b3] ~ [c3,g3,c4]@2 [c#3,g#3,c#4]@2 [c3,g3,c4] ~ [b2,f#3,b3]@2", // C5 B5 C5 B5 C5 C#5 C5 B5
  H: "[c3,g3,c4]@2 [b2,f#3,b3] ~ [c3,g3,c4]@2 [c#3,g#3,c#4]@2 [b2,f#3,b3]@2 ~@2 [c3,g3,c4]@2 [c#3,g#3,c#4]@2", // C5 B5 C5 C#5 B5 C5 C#5
  I: "[c3,g3,c4]@2 [b2,f#3,b3] ~ [c3,g3,c4]@2 [c#3,g#3,c#4]@2 [b2,f#3,b3]@2 ~@2 [c3,g3,c4] ~ [c#3,g#3,c#4] ~", // C5 B5 C5 C#5 B5 C5 C#5
  J: "[c3,g3,c4] ~ [b2,f#3,b3] ~ [c3,g3,c4] ~ [b2,f#3,b3] ~ [c3,g3,c4] ~ [c#3,g#3,c#4] ~ [c3,g3,c4] ~ [b2,f#3,b3] ~", // C5 B5 C5 B5 C5 C#5 C5 B5
  K: "[c3,g3,c4] ~ [b2,f#3,b3] ~ [c3,g3,c4] ~ [c#3,g#3,c#4] ~ [b2,f#3,b3]@4 [c3,g3,c4] ~ [c#3,g#3,c#4] ~", // C5 B5 C5 C#5 B5 C5 C#5
  L: "[[c3,g3,c4] ~ [b2,f#3,b3] ~ [c3,g3,c4] ~ [c#3,g#3,c#4] ~ [b2,f#3,b3]@4 [a2,e3,a3]@16 [c#3,g#3,c#4]@2 [c3,g3,c4]@2]/2", // C5 B5 C5 C#5 B5 A5 C#5 C5
  M: "[[c3,g3,c4] [b2,f#3,b3]!2 [a#2,f3,a#3]!2 [a2,e3,a3] [a2,e3,a3]@8 [c#3,g#3,c#4] [c3,g3,c4]]/2", // C5 B5 A#5 A5 C#5 C5
  N: "[c3,g3,c4]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [a#2,f3,a#3]@2 [a#2,f3,a#3]@2 [a2,e3,a3]@2 [a#2,f3,a#3]!4", // C5 B5 A#5 A5 A#5
  O: "[a2,e3,a3]@4 [a#3,f4,a#4]@9 [a#2,f3,a#3]!3", P: "[a#2,f3,a#3] [a2,e3,a3]@4 [a3,e4,a4]@9 [a#2,f3,a#3]!2",
  Q: "[a#2,f3,a#3]!2 [a2,e3,a3]@4 [a#3,f4,a#4]@9 [a#2,f3,a#3]", R: "[a#2,f3,a#3]!3 [a2,e3,a3]@4 [a3,e4,a4]@9",
  S: "[c3,g3,c4] ~ [c#3,g#3,c#4] ~ [c3,g3,c4] ~ [b2,f#3,b3] ~ [c3,g3,c4] ~ [b2,f#3,b3] ~ [c3,g3,c4] ~ [c#3,g#3,c#4] ~", // C5 C#5 C5 B5 C5 B5 C5 C#5
  T: "[c3,g3,c4] ~ [b2,f#3,b3] ~ [c3,g3,c4] ~ [b2,f#3,b3] ~ [c3,g3,c4] ~ [c#3,g#3,c#4] ~ [b2,f#3,b3]@4", // C5 B5 C5 B5 C5 C#5 B5
  U: "[a2,e3,a3]", V: "[c#3,g#3,c#4] [c3,g3,c4]!2 [b2,f#3,b3]!2 [a#2,f3,a#3]!2 [a2,e3,a3]",
  W: "[[a2,e3,a3]@2 [a2,e3,a3]!2 [a#3,f4,a#4]@5 [a2,e3,a3] [a2,e3,a3]@2 [a#3,f4,a#4]@4]/2", // A5 A#5 A5 A#5
  X: "[[a2,e3,a3]@2 [a2,e3,a3]!2 [a#3,f4,a#4]@5 [a2,e3,a3] [a2,e3,a3]@2 [a2,e3,a3] [a#2,f3,a#3] [c3,g3,c4]@2]/2", // A5 A#5 A5 A#5 C5
  Y: "[[a2,e3,a3]@2 [a2,e3,a3]!2 [a#3,f4,a#4]@5 [a2,e3,a3] [a2,e3,a3]@2 [a2,e3,a3]!3 ~]/2", // A5 A#5 A5
  Z: "[c3,g3,c4] [c#3,g#3,c#4] [c3,g3,c4] [b2,f#3,b3] [c3,g3,c4] [b2,f#3,b3] [c3,g3,c4] [c#3,g#3,c#4]", // C5 C#5 C5 B5 C5 B5 C5 C#5
  AA: "[c3,g3,c4] [b2,f#3,b3] [c3,g3,c4] [b2,f#3,b3] [c3,g3,c4] [c#3,g#3,c#4] [b2,f#3,b3]@2", // C5 B5 C5 B5 C5 C#5 B5
  AB: "[c3,g3,c4]@2 [c#3,g#3,c#4]@2 [c3,g3,c4] ~ [b2,f#3,b3]@2 [c3,g3,c4]@2 [b2,f#3,b3] ~ [c3,g3,c4]@2 [c#3,g#3,c#4]@2", // C5 C#5 C5 B5 C5 B5 C5 C#5
  AC: "[c3,g3,c4] ~ [b2,f#3,b3]@2 [c3,g3,c4]@2 [b2,f#3,b3] ~ [c3,g3,c4]@2 [c#3,g#3,c#4]@2 [b2,f#3,b3]@2 ~@2", // C5 B5 C5 B5 C5 C#5 B5
  AD: "[~@6 [a2,e3,a3]@8 [c#3,g#3,c#4] [c3,g3,c4]]/2", AE: "[a2,e3,a3]@2 ~@11 [a#2,f3,a#3]!3",
  AF: "[a#2,f3,a#3] [a2,e3,a3]@2 ~@11 [a#2,f3,a#3]!2", AG: "[a#2,f3,a#3]!2 [a2,e3,a3]@2 ~@11 [a#2,f3,a#3]",
  AH: "[a#2,f3,a#3]!3 [a2,e3,a3]@2 ~@11", AI: "[a#2,f3,a#3]!4 ~ [a2,e3,a3]@2 ~@9",
  AJ: "~ [a#2,f3,a#3]!4 ~ [a2,e3,a3]@2 ~@8", AK: "~@2 [a#2,f3,a#3]!3 ~ [a#2,f3,a#3] [a2,e3,a3]@2 ~@7",
  AL: "~@3 [a#2,f3,a#3]!2 ~ [a#2,f3,a#3]!2 [a2,e3,a3]@2 ~@6", // A#5 A5
})).s("gm_overdriven_guitar").gain(0.64)

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

// drums · rim
const rim = s("rim").struct("<[~@4 x ~@4 x ~@3 x ~@2] ~@155>").gain(0.64)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~ A B C D ~@36 E ~@15 F G H I J ~@15 K ~@52 L ~@15 F G H I J M N O P ~>".pickRestart({
  A: "~@5 x ~ x!4 ~@5", B: "~@7 x!5 ~@4", C: "~@8 x!5 ~@3", D: "~@9 x!5 ~@2", E: "~ x", F: "~@12 x!4", G: "x ~@12 x!3",
  H: "x!2 ~@12 x!2", I: "x!3 ~@12 x", J: "x!4 ~@12", K: "~@3 x", L: "x!3 ~", M: "x!4 ~ x ~@10", N: "~ x!4 ~ x ~@9",
  O: "~@2 x!3 ~ x!2 ~@8", P: "~@3 x!2 ~ x!3 ~@7",
})).gain(0.64)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A B C D ~@35 E F ~@15 G H I J K ~@15 L ~@52 M ~@15 G H I J K N O P Q ~
>`.pickRestart({
  A: "~@7 x!4 ~@5", B: "~@7 x!5 ~@4", C: "~@8 x!5 ~@3", D: "~@9 x!5 ~@2", E: "~@3 x", F: "~ x ~@6", G: "~@12 x!4",
  H: "x ~@12 x!3", I: "x!2 ~@12 x!2", J: "x!3 ~@12 x", K: "x!4 ~@12", L: "x ~@2 x ~@4", M: "~ x!2 ~", N: "x!4 ~ x ~@10",
  O: "~ x!4 ~ x ~@9", P: "~@2 x!3 ~ x!2 ~@8", Q: "~@3 x!2 ~ x!3 ~@7",
})).gain(0.64)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@3 A ~@3 A ~@3 A ~@19 B C ~@2 D C ~@2 B C ~@2 D C ~@23 E ~@3 F ~@3 E ~@3 F ~@5 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C G
  ~@2 C ~@3 C ~@3 C ~@3 C ~@3 B C ~@2 D C ~@2 B C ~@2 D C ~@12
>`.pickRestart({
  A: "~@3 x", B: "~@6 x!2", C: "x", D: "~@7 x", E: "x!3 ~@5", F: "~ x!2 ~@5", G: "~@4 x!3 ~",
})).gain(0.64)

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

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

More by Korn