Strudelify

Whatever

Godsmack

KeyC♯ minorTempo122 bpm
0:00/0:00
// Whatever — Godsmack
// 122 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  A B@7 C B@8 D E F G D E H I J K@2 C B@11 L D E F G D E H M D E F G D E H M J K@2 N J K@2 N O ~@8 P C P C P C P C P Q@3
  C J K@2 N J K@2 N B@7 C
>`.pickRestart({
  A: "~ [f#2,c#3,f#3]", B: "[c#2,g#2]!2 ~ [g4,g#4] ~ [g4,g#4] ~ [g4,g#4]", C: "[c#2,g#2]!2 ~@6", D: "[c#2,g#2,c#3]",
  E: "[c#3,g#3,c#4]", F: "[g2,d3,g3]", G: "[g2,d3]!2 ~@6", H: "[b2,f#3,b3]", I: "[f#2,c#3,f#3]!2 ~@2 [e2,b2,e3]!2 ~@2",
  J: "[c#2,g#2,c#3]@3 [g2,d3,g3]@2 [f#2,c#3,f#3]@2 [e2,b2,e3]", // C#5 G5 F#5 E5
  K: "[c#2,g#2,c#3] [c#2,g#2,c#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3]@2 [e2,b2,e3]", // C#5 G5 F#5 E5
  L: "[c#2,g#2]@2 [c#2,g#2]@2 ~@2 [g4,g#4]@2 ~@4 [f#2,c#3] [e2,b2]@2 [d#2,a#2]", // C#5 G#maj7 F#5 E5 D#5
  M: "[f#2,c#3,f#3]@2 [f#2,c#3,f#3]@4 e2 c#2 [e2,b2,e3]@2 [e2,b2,e3]@6", // F#5 E5
  N: "c#2 [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3]", O: "[c#3,g#3,c#4]!2 ~@6", P: "~@7 [c#2,g#2,c#3]",
  Q: "[c#2,g#2]!2 ~@5 [c#2,g#2,c#3]", // C#5
})).s("gm_distortion_guitar").gain(0.56)

// chords · distortion guitar · "Guitar 2" · C# G F# E C#sus4 E5 C#sus4 E5 …
const distortion_guitar_2 = note(`<
  ~@61
  [[c#3,c#4]@3 [g3,g4]@2 [f#3,f#4]@2 [e3,e4]]!3
  [[g#2,c#3,f#3]!2 [e3,b3,e4]@2 [g#2,c#3,f#3]!2 [e3,b3,e4]@2 [g#2,c#3,f#3]!2 [e3,b3,e4]@2 [g#2,c#3,f#3]!2 [e3,b3,e4]@2]
  [[c#2,g#2]@3 ~@13]
  ~@25
  [[c#3,c#4]@3 [g3,g4]@2 [f#3,f#4]@2 [e3,e4]]!3
  [[g#2,c#3,f#3]!2 [e3,b3,e4]@2 [g#2,c#3,f#3]!2 [e3,b3,e4]@2 [g#2,c#3,f#3]!2 [e3,b3,e4]@2 [g#2,c#3,f#3]!2 [e3,b3,e4]@2]
  ~@8
>`).s("gm_distortion_guitar").gain(0.4)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~ A@3 B A@3 C A@3 B A@4 D E F G H E I J K@3 C A@3 B A@3 B A@3 L D E F G H E I M H E F G H E I M K@3 N K@3 N A B A B A
  B A B A B A B A B A B A B O@3 C K@3 N K@3 N A@4 K@3 C
>`.pickRestart({
  A: "c#1@2 c#1@2 ~@2 c#1 c#1@2 c#1 c#1@2 ~@2 c#1@2", B: "c#1@2 c#1@2 ~@2 c#1 c#1@2 c#1 c#1@2 ~@2 [g#2,c#3]@2",
  C: "c#1!2 ~@6", D: "c#1, c#2@7 ~", E: "[c#2,g#2,c#3]", F: "g1", G: "g1!2 ~@6", H: "c#1", I: "b1",
  J: "f#1!2 ~@2 e1!2 ~@2", K: "c#1 c#1@2 g1@2 f#1@2 e1", L: "c#1@2 c#1@2 ~@2 c#1 c#1@2 c#1 c#1@2 f#1 e1@2 d#1",
  M: "f#1@2 f#1@4 e1 c#1 e1@2 e1@6", N: "c#1 e1 ~ e1 ~ e1 ~ e1", O: "c#1!2 ~@5 c#1",
})).s("gm_electric_bass_pick").gain(0.56)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@20 A ~@3 A ~@19 A ~@7 A ~@11 B ~@29 B ~@8>".pickRestart({
  A: "~@7 x", B: "~ x ~ x ~ x ~ x",
})).gain(0.41)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@6 B ~ A@7 ~ A@3 C A@3 ~ A@3 ~ A@11 ~ A@3 C A@3 ~ A@3 C A@3 ~ A@26 ~@4 A@15 ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~@2 x", C: "x!3 ~",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A ~@11 B ~@3 C ~@3 D ~@11 D ~@3 B ~@3 D ~@3 B ~@3 D ~@25 E D@3 A ~ F ~@13 A
>`.pickRestart({
  A: "x!2 ~@6", B: "~@12 x!2 ~@2", C: "x ~ x ~@5 x ~ x ~ x!2 ~@2", D: "x!2 ~@5 x", E: "~@7 x", F: "~@15 x",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct("<~@7 [~@3 x] ~@8 [x!4] ~@86>").gain(0.41)

// drums · high tom
const high_tom = s("ht").struct("<~@20 A ~@7 B ~@11 B ~@3 A ~@3 B ~@3 A ~@3 B ~@46>".pickRestart({
  A: "~@10 x!2 ~@4", B: "~@10 x!2 ~ x ~@2",
})).gain(0.41)

stack(distortion_guitar, distortion_guitar_2, bass, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom)

More by Godsmack