Strudelify

Crackerman

Stone Temple Pilots

KeyF♯ minorTempo180 bpm
0:00/0:00
// Crackerman — Stone Temple Pilots
// 180 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "off of Core." distortion guitar (copy of ch 1 overdriven guitar)
// note: Full arrangement: all 131 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/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 B C D A B C D A B C D A B E F A B C D A B C D A B C D A B C D A B C D A B E F A B C D A B C D A B C D A B C D A B
  C D A B G H G I G H G I A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B E F G H G I G H G I A B C D A B C
  D A B C D A B C D E J@3
>`.pickRestart({
  A: "[a2,e3] [b2,f#3]!2 [a2,e3] [b2,f#3]!2 [a2,e3] [b2,f#3]", // A5 B5 A5 B5 A5 B5
  B: "[b2,f#3] [a2,e3] [b2,f#3]!2 [a2,e3] [b2,f#3]!2 [a2,e3]", // B5 A5 B5 A5 B5 A5
  C: "[e2,b2] [f#2,c#3]@2 [a2,e3] [f#2,c#3]@2 [e2,b2] [f#2,c#3]", // E5 F#5 A5 F#5 E5 F#5
  D: "[f#2,c#3] [a2,e3] [f#2,c#3]!2 [e2,b2] [f#2,c#3]!3", E: "[a2,e3,a3]", F: "[a2,a3,d#4,f#4]",
  G: "[f#2,c#3]!3 [a2,e3]@2 [a2,e3] [d3,a3,d4]!2", H: "a2 [a#3,d#4]!3 [b3,e4] [a#3,d#4] [b3,e4] [a#3,d#4]",
  I: "~@4 d3 a2!3", J: "[[a2,a3,d#4,f#4]@7 ~]/3",
})).s("gm_overdriven_guitar").gain(0.26)

// bass · electric bass pick · "It's missing the solo and vocal"
const bass = note(`<
  ~ A B C D A B C D A B C D A B E F A B C D A B C D A B C D A B C D A B C D A B E F A B C D A B C D A B C D A B C D A B
  C D A B G H G I G H G I A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B E F G H G I G H G I A B C D A B C
  D A B C D A B C D E F ~@2
>`.pickRestart({
  A: "[a1,e2] [b1,f#2]!2 [a1,e2] [b1,f#2]!2 [a1,e2] [b1,f#2]", // A5 B5 A5 B5 A5 B5
  B: "[b1,f#2] [a1,e2] [b1,f#2]!2 [a1,e2] [b1,f#2]!2 [a1,e2]", // B5 A5 B5 A5 B5 A5
  C: "[e1,b1] [f#1,c#2]@2 [a1,e2] [f#1,c#2]@2 [e1,b1] [f#1,c#2]", // E5 F#5 A5 F#5 E5 F#5
  D: "[f#1,c#2] [a1,e2] [f#1,c#2]!2 [e1,b1] [f#1,c#2]!3", E: "[a1,e2,a2]", F: "[a1,a2,d#3,f#3]",
  G: "[f#2,c#3]!3 [a2,e3]@2 [a2,e3] [d3,a3,d4]!2", H: "a1 [a#2,d#3]!3 [b2,e3] [a#2,d#3] [b2,e3] [a#2,d#3]",
  I: "~@4 d3 a2!3",
})).s("gm_electric_bass_pick").gain(0.41)

// drums · kick
const kick = s("bd").struct("<~ A@14 ~ B A@22 ~ B A@60 ~ B A@24 ~@4>".pickRestart({
  A: "x!2", B: "~@10 x!2 ~@4",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct("<A B@14 C D B@22 C D B@60 C D B@24 C@2 ~@2>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x", D: "x ~@7 x!2 ~@2 x ~@3",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<[~@3 x] ~@130>").gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~ A@14 B@2 A@22 B@2 A@60 B@2 A@24 B@2 ~@2>".pickRestart({
  A: "x!8", B: "x",
})).gain(0.51)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@5 A@2 ~@8 A ~@3 A ~@3 A ~@3 A ~ A@2 ~@8 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~ A@3 ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~ A ~ A ~ A ~ A@2 ~@2
>`.pickRestart({
  A: "x",
})).gain(0.51)

stack(overdriven_guitar, bass, kick, snare, low_tom, hihat, crash)

More by Stone Temple Pilots