Strudelify

Proud

Korn

KeyA majorTempo118 bpm
0:00/0:00
// Proud — Korn
// 118 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(118/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 · distortion guitar · "Guitar 1"
const distortion_guitar = note(`<
  ~@2 A@8 B A@8 C D C E C D C E B A@8 C D C E C D C E F@2 ~@2 G H G H G H G H I J I J I J I J K L A@8 C D C E C D C E C
  D C E C D C E M N O@2
>`.pickRestart({
  A: "[a2,d#3]@2 d2 [a2,d#3]@2 d2 [a2,d#3]@2 d2 [a2,d#3]@2 d2 [a2,d#3]@2 [a2,d#3]@2", // Adim
  B: "[g#3,a3]@3 [f3,a3]@3 [a3,b3]@2", C: "[f#3,a3]@3 [f3,a3]@5", D: "d3",
  E: "[a#2,d#3]@4 [a2,d3]@2 [a#2,d#3]@2 [g2,c3] ~ [a#2,d#3]@2 [g2,c3]@4", F: "a3/2", G: "a3",
  H: "[a3,a#3]@3 [a3,c#4]@3 [a3,c4]@2", I: "[a1,a2]", J: "[a#1,a#2]@3 [c#2,c#3]@3 [c2,c3]@2",
  K: "[d3,g#3]@2 d2 [d3,g#3]@2 d2 [d3,g#3]@2 d2 [d3,g#3]@2 d2 [d3,g#3]@2 [d3,g#3]@2", // Ddim
  L: "[d3,g#3]@2 d2 [d3,g#3]@2 d2 [d3,g#3]@2 d2 [d3,g#3]@2 d2 [d3,g#3]@4", M: "[a3,g#4]@3 [f#3,f4]@3 [d#3,d4]@2",
  N: "[g#3,g4]@3 [f3,e4]@3 [d3,c#4]@2", O: "[[g3,f#4]@3 [e3,e4]@3 [g2,c4,b4]@10]/2",
})).s("gm_distortion_guitar").gain(0.52)

// chords · distortion guitar · "Guitar 2"
const distortion_guitar_2 = note(`<
  ~@2 A@8 B A@8 C D C E C D C E B A@8 C D C E C D C E ~@4 F G F G F G F G F G F G F G F G ~@2 A@8 C D C E C D C D C E C
  E C E C H I J K@2
>`.pickRestart({
  A: "[a3,d#4]@2 c3 [a3,d#4]@2 c3 [a3,d#4]@2 c3 [a3,d#4]@2 c3 [a3,d#4]@2 [a3,d#4]@2", // Adim
  B: "[g#3,a3]@3 [f3,a3]@3 [a3,b3]@2", C: "[a3,f#4]@3 [a3,f4]@5", D: "[a3,d4]", E: "[a3,d4]@3 [a3,c4]", F: "a3",
  G: "[a3,a#3]@3 [a3,c#4]@3 [a3,c4]@2", H: "d5", I: "[a3,g#4]@3 [f#3,f4]@3 [d#3,d4]@2",
  J: "[g#3,g4]@3 [f3,e4]@3 [d3,c#4]@2", K: "[[g3,f#4]@3 [e3,e4]@3 [g2,c4,b4]@10]/2",
})).s("gm_distortion_guitar").gain(0.52)

// bass · electric bass finger
const bass = note(`<
  ~@2 A@8 B A@8 C D E F G H E I J A@8 C D E K G H E I L@12 M@7 N ~@2 A@8 C D E F G H E I G D O F G D O I P Q R@2
>`.pickRestart({
  A: "a0@2 a1 d#1@2 d#2 a0@2 a1 d#1@2 d#2 d#1 d#2 d#1@2", B: "g1@3 c#2@3 c1@2", C: "d1@5 d2 d2@4 d2@2 ~@4",
  D: "d#1@10 a1 a#1 d#2@2 d#2@2", E: "d1@5 d2 d2@4 d2@2 ~@3 d#1", F: "d#1@2 d#1@2 d#1 d#1@2 d#1 d#1@4 d#1@4",
  G: "d1@4 c2 c#2 d2@4 d2@2 ~@4", H: "d#1@10 a1 a#1 d#2 d#2@3", I: "d#1@2 d#1@2 d#1 d#1@2 d#1 d#1@4 d#2@2 d#2@2",
  J: "g1@3 c#2@3 g2@2", K: "d#1@2 d#1@2 d#1 d#1@2 d#1 d#1@4 c1 d1 c1@2", L: "a0!6 ~@2 a0!6 ~@2", M: "a0!16",
  N: "a#0 a0!2 a#0 a0!2 a#0 a0!2 a#0 a0!2 a#0 a0 a#0@2", O: "d1@6 c2 c#2 d2@2 d2@2 ~@3 d#1", P: "g2@3 c#2@3 g1@2",
  Q: "b1@3 g1@3 d#1@2", R: "[a1@3 d#2@3 a2@10]/2",
})).s("gm_electric_bass_finger").gain(0.52)

// bass · electric bass finger
const bass_2 = note("<~@19 A ~ B ~ A ~ B ~@10 A ~ B ~ A ~ B ~@31 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@5>".pickRestart({
  A: "~@3 d2", B: "~@12 d2@3 ~",
})).s("gm_electric_bass_finger").gain(0.52)

// bass · slap bass 1 · "Intro"
const bass_3 = note("<A@2 ~@92>".pickRestart({
  A: "[~@13 e1@11 ~@8]/2",
})).s("gm_slap_bass_1").gain(0.8)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~ [~@3 x] ~@42 [x!2]!19 ~@2 [~@3 x] ~@28>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@22 A ~@16 A ~@33 B ~@3 A ~@7 A ~@8>".pickRestart({
  A: "~@15 x", B: "~@14 x!2",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B A@3 C A@4 D A@3 E A@3 B F G ~@2 F G ~@2 D A@3 E A@3 C F G ~@2 F G ~@2 H@19 ~ A I A@3 C A@3 B F G ~@2 F G ~@2 F G
  ~@2 F G ~@2 J@2 A ~
>`.pickRestart({
  A: "x!8", B: "x!5 ~@3", C: "x!4 ~@4", D: "x ~@2 x ~@2 x ~", E: "x ~ x ~ x ~ x ~ x ~@4 x!3", F: "~@15 x", G: "~@7 x",
  H: "~ x ~ x ~ x ~ x", I: "x!6 ~@2", J: "~ x!2 ~ x!2 ~ x",
})).gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@22 A ~@16 A ~@33 B ~@3 A ~@7 A ~@8>".pickRestart({
  A: "~@13 x!2 ~", B: "~@13 x ~@2",
})).gain(0.8)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~ [~@3 x] ~@92>").gain(0.8)

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

More by Korn