Strudelify

Human

Metallica

KeyC♯ minorTempo109 bpm
0:00/0:00
// Human — Metallica
// 109 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(109/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
const distortion_guitar = note(`<
  A B@2 A B@2 A B@2 A B@2 C@6 D@2 E@4 F G H I J K@4 L@2 E@4 F A B@2 A B@2 C@6 M@4 N G H I J C@6 O@2 P Q@2 P R@8 S@2 P
  T@2 P U
>`.pickRestart({
  A: "[c#2,c#3]!3 [g#2,g#3]@2 [c#2,c#3] [g2,g3]@2", // C# G# C# G
  B: "[[e2,e3] [c#2,c#3] [e2,e3]@2 [c#2,c#3]!3 [g#2,g#3]@2 [g2,g3] [c#2,c#3] [d#2,d#3] [e2,e3] ~ [e2,b2,e3,b3]@2]/2", // E C# E C# G# G C# D# …
  C: "[[c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3 [g2,d3,g3] [g#2,d#3,g#3] [g2,d3,g3] [f#2,c#3,f#3]]/2", // C#5 G5 G#5 G5 F#5
  D: "[[e2,b2,e3] [f2,c3,f3] [e2,b2,e3] [d#2,a#2,d#3] [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3]/2", // E5 F5 E5 D#5 C#5
  E: "[[g2,d3,g3] [g#2,d#3,g#3] [g2,d3,g3] [f#2,c#3,f#3] [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3]/2", // G5 G#5 G5 F#5 C#5
  F: "[g2,d3,g3] [g#2,d#3,g#3] [g2,d3,g3] [f#2,c#3,f#3] [e2,b2,e3] [f2,c3,f3] [e2,b2,e3] [d#2,a#2,d#3]", // G5 G#5 G5 F#5 E5 F5 E5 D#5
  G: "[c#2,g#2,c#3,g#3]", H: "[e2,b2,e3]", I: "[f#2,c#3,f#3]",
  J: "[g2,d3,g3] [g#2,d#3,g#3]@2 [g2,d3,g3] [g#2,d#3,g#3]@2 [g2,d3,g3] [g#2,d#3,g#3]", // G5 G#5 G5 G#5 G5 G#5
  K: "[[e2,e3] [f2,f3] [e2,e3] [d#2,a#2,d#3] [c#2,g#2,c#3,g#3]@8 [e2,b2,e3]@8 [f#2,c#3,f#3]@8 [g2,d3,g3] [g#2,d#3,g#3]@2 [g2,d3,g3]]/4", // E F E D#5 C#5 E5 F#5 G5 …
  L: "[[g#2,d#3,g#3]@2 [g2,d3,g3] [g#2,d#3,g#3] [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3 [c#2,g#2,c#3,g#3]@3]/2", // G#5 G5 G#5 C#5
  M: "[[e2,b2,e3] [f2,c3,f3] [e2,b2,e3] [d#2,a#2,d#3] [c#2,g#2,c#3,g#3]@8 [e2,b2,e3]@8 [f#2,c#3,f#3]@8 [g2,d3,g3] [g#2,d#3,g#3]@2 [g2,d3,g3]]/4", // E5 F5 E5 D#5 C#5 E5 F#5 G5 …
  N: "[g#2,d#3,g#3]@2 [g2,d3,g3] [g#2,d#3,g#3] [e2,e3] [f2,f3] [e2,e3] [d#2,a#2,d#3]", // G#5 G5 G#5 E F E D#5
  O: "[[e2,b2,e3] [f2,c3,f3] [e2,b2,e3] [d#2,a#2,d#3] [c#2,c#3]!3 [g#2,g#3]@2 [c#2,c#3] [g2,g3]@2 [e2,e3] [c#2,c#3] [e2,e3]@2]/2", // E5 F5 E5 D#5 C# G# C# G …
  P: "[c#2,c#3]!3 [g#2,g#3]@2 [g2,g3] [c#2,c#3] [d#2,d#3]", // C# G# G C# D#
  Q: "[[e2,e3] ~ [e2,b2,e3,b3]@2 [c#2,c#3]!3 [g#2,g#3]@2 [c#2,c#3] [g2,g3]@2 [e2,e3] [c#2,c#3] [e2,e3]@2]/2", // E E5 C# G# C# G E C# …
  R: "[[e2,e3] ~ [e2,b2,e3,b3]@2 [c#2,g#2,c#3,g#3]@60]/8", // E E5 C#5
  S: "[~@4 [c#2,c#3]!3 [g#2,g#3]@2 [c#2,c#3] [g2,g3]@2 [e2,e3] [c#2,c#3] [e2,e3]@2]/2", // C# G# C# G E C# E
  T: "[[e2,e3] ~ [e2,b2,e3,b3]@2 [c#2,c#3]!3 [g#2,g#3]@2 [c#2,c#3] [g2,g3]@6]/2", U: "[e2,e3] ~ [e2,b2,e3,b3]@2 ~@4",
})).s("gm_distortion_guitar").gain(0.43)

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

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

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

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

stack(distortion_guitar, kick, snare, open_hat, crash)

More by Metallica