Strudelify

Trash

Korn

KeyE majorTempo92 bpm
0:00/0:00
// Trash — Korn
// 92 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 6 "Verse guit" named as a guitar, played on electric guitar clean (its music box patch is not one); ch 8 "guite fx" named as a guitar, played on electric guitar clean (its pad sweep patch is not one); ch 9 "guit fx2" named as a guitar, played on electric guitar clean (its pad metallic patch is not one)
// note: duplicate parts dropped: ch 9 "guit fx2" electric guitar clean (copy of ch 4 "Guit2" electric guitar clean)
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): extra guit.
setcpm(92/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"
const bass = note(`<
  A B C B ~@12 D E F E A B C B A B C B ~@12 G E F E A B C B A B C B H@8 A B C B A B C B A B C B A B C B A B C B
>`.pickRestart({
  A: "a0 a0@15", B: "a#0", C: "b0 b0@15", D: "~ a0 b0@2 b0 b0@2 a0 b0 a0 b0 ~@3 c1@2, b0 ~@7",
  E: "b0 a0 b0@2 b0 b0@2 a0 b0 a0 b0@2 c1@4", F: "b0 a0 b0@2 b0 b0@2 a0 b0 a0 b0 ~@3 c1@2",
  G: "~ a0 b0@2 b0 b0@2 a0 b0 a0 b0 ~@3 c1@2", H: "b0 a0 b0@2 b0 b0@2 a0 b0 a0 b0@2 a#0@4",
})).s("gm_slap_bass_1").gain(0.64)

// bass · electric bass pick · "Bass"
const bass_2 = note("<~@4 A B A B A B A B A B A B ~@12 C@8 D@4 ~@40>".pickRestart({
  A: "~ b0 ~@2 b0 ~@3, d1 ~@2 d1 ~@4, ~ c#1@2 ~@4 c#1@2 ~@7",
  B: "~ b0 ~@2 b0!2 c1@2, d1 ~@2 d1 ~@4, ~ c#1@2 ~@4 c#1@2 ~@7",
  C: "[~@12 b0 ~ c1@2 ~@12 b0 ~ c1@2 ~@12 b0 ~ c1@2 ~@12 b0 ~ c1@2, d1@2 b0@5 c#1@2 ~@7 d1@2 b0@5 c#1@2 ~ b0@7 c#1@2 ~@3 d1@2 b0@9 c#1@2 ~@3 d1@2 ~@8 d1@2 b0@5 c#1@2 ~@7 d1@2 b0@5 c#1@2 ~ b0@7 c#1@2 ~@3 d1@2 b0@9 c#1@2 ~@3 d1@2 ~@8, ~ c#1@2 ~@3 d1@2 b0@9 c#1@2 ~@3 d1@2 ~@8 d1@2 b0@5 c#1@2 ~@7 d1@2 b0@5 c#1@2 ~ b0@7 c#1@2 ~@3 d1@2 b0@9 c#1@2 ~@3 d1@2 ~@8 d1@2 b0@5 c#1@2 ~@7 d1@2 b0@5 c#1@2 ~ b0@6]/8",
  D: "[~@12 b0 ~ c1@2 ~@12 b0@2 c1@2, d1@2 b0@5 c#1@2 ~@7 d1@2 b0@5 c#1@2 ~ b0@7 c#1@2 ~@3 d1@2 b0@9 c#1@2 ~@3 d1@2 ~@8, ~ c#1@2 ~@3 d1@2 b0@9 c#1@2 ~@3 d1@2 ~@8 d1@2 b0@5 c#1@2 ~@7 d1@2 b0@5 c#1@2 ~@7]/4",
})).s("gm_electric_bass_pick").gain(0.64)

// chords · overdriven guitar · "Guit1"
const overdriven_guitar = note(`<
  A B C B ~@12 D E D E A B C B A B C B ~@12 D E D E A B C B A B C B F@8 A B C B A B C B A B C B A B C B A B C B
>`.pickRestart({
  A: "~@3 a3@2 e3 a3@2, [a1,e2], ~ a2@2 ~@5, ~ e3 ~@2", B: "~@3 a3@2 e3 a3@2, [a#1,f2], ~ a2@2 ~@5, ~ e3 ~@2",
  C: "~@3 a3@2 e3 a3@2, [b1,f#2], ~ a2@2 ~@5, ~ e3 ~@2", // B5
  D: "[b1,f#2] [a1,e2] [b1,f#2]@2 [b1,f#2] [b1,f#2]@2 [a1,e2] [b1,f#2] [a1,e2] [b1,f#2] ~@3 [c2,g2]@2", // B5 A5 B5 A5 B5 A5 B5 C5
  E: "[b1,f#2] [a1,e2] [b1,f#2]@2 [b1,f#2] [b1,f#2]@2 [a1,e2] [b1,f#2] [a1,e2] [b1,f#2]@2 [c2,g2]@4", // B5 A5 B5 A5 B5 A5 B5 C5
  F: "[b1,f#2] [a1,e2] [b1,f#2]@2 [b1,f#2] [b1,f#2]@2 [a1,e2] [b1,f#2] [a1,e2] [b1,f#2]@2 [a#1,f2]@4", // B5 A5 B5 A5 B5 A5 B5 A#5
})).s("gm_overdriven_guitar").gain(0.72)

// other · electric guitar clean · "Guit2"
const electric_guitar_clean = note(`<
  A B A C ~@16 A B A C A B A C ~@16 A B A C A B A C ~@8 A B A C A B A C A B A C A B A C A B A C
>`.pickRestart({
  A: "e4@5 d4@3", B: "g4@3 f4@2 e4@2 d4", C: "g4@2 a4 f4@3 e4@2",
})).s("gm_electric_guitar_clean").gain(0.8)

// other · electric guitar clean · "Verse guit"
const electric_guitar_clean_2 = note("<~@4 A B@10 C@2 ~@11 A B@10 C@2 ~@39>".pickRestart({
  A: "~@3 g5@2 ~@2 b5, b4@5 ~@5 b4@4 ~@2, ~@3 c#6@5 ~@4 f#5@4",
  B: "[~@3 g5@2 ~@6 g5@2 ~@2 b5, b4@5 ~@5 f#5@4 b5@4 ~ c#6@5 ~@4 f#5@4, ~@3 c#6@5 ~@4 b4@4 b4@5 ~@5 b4@4 ~@2]/2",
  C: "[~@3 g5@2 ~@2 b5@2 ~@7, b4@5 ~@5 f#5@4 ~@18, ~@3 c#6@5 ~@4 b4@4 ~@16]/2",
})).s("gm_electric_guitar_clean").gain(0.72)

// other · electric guitar clean · "guite fx"
const electric_guitar_clean_3 = note("<~@4 A B A B A B A B A B A B ~@12 A B A B A B A B A B A B ~@40>".pickRestart({
  A: "e4", B: "~@5 g4@3, d#4@3 ~",
})).s("gm_electric_guitar_clean").gain(0.41).pan(1)

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

// drums · snare
const snare = s("sd").struct("<~@3 A B@12 C D C D B@11 E B@8 C D C D B@8 C D C D C D C D B@20>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@4 x ~@2 x ~@4 x ~ x ~", E: "~@2 x!3 ~@7 x ~@3",
})).gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@4 [x ~ x!6]!12 ~@12 [x ~ x!6]!3 x [x ~ x!6]!8 ~@40>").gain(0.8)

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

// drums · crash
const crash = s("cr").struct("<x!4 ~@16 x!8 ~@16 x!8 ~@8 x!20>").gain(0.8)

stack(
  bass, bass_2, overdriven_guitar, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_clean_3, kick, snare,
  pedal_hat, open_hat, crash
)

More by Korn