Strudelify

Wicked Garden

Stone Temple Pilots

KeyD majorTempo80 bpm
0:00/0:00
// Wicked Garden — Stone Temple Pilots
// 80 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 78 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): Dean (guitar 2), Dean (guitar clean).
setcpm(80/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.

// chords · overdriven guitar · "Dean (guitar 1)"
const overdriven_guitar = note(`<
  A B A C D@4 E F E G D@4 E F E G D@3 H@8 I J@8 K D@4 E F E G D@3 L@7 M N@3 O@8 P A B A Q@3
>`.pickRestart({
  A: "[g2,d3,g3,d4,g4]@3 [d3,a3,d4,f#4]@3 [a2,e3,a3,d4,g4]@10", // G5 D Asus4
  B: "[g2,d3,g3,d4,g4]@3 [d3,a3,d4,f#4]@3 [a2,e3,a3,c#4]@10", // G5 D A
  C: "[g2,d3,g3,d4,g4]@3 [d3,a3,d4,f#4]@3 [a2,e3,a3,c#4]@9 ~", // G5 D A
  D: "[g2,d3,g3] [a2,e3,a3] a2!2 [a2,e3,a3] a2!2 [a2,e3,a3]@2 [a2,e3,a3] a2 [a2,e3,a3] [a2,e3,a3]@2 [g2,d3,g3]@2", // G5 A5 G5
  E: "[a2,g3] a3 [a2,a3]!5 [a2,a3]@2 [a2,a3]!3 [a2,a3,d4]@2 [a3,c#4]@2", F: "[a2,a3]!16", G: "[a2,a3]!14 [g2,d3,g3]@2",
  H: "[[g2,d3,g3] [a2,e3,a3] a2!2 [a2,e3,a3] a2!2 [a2,e3,a3]@2 [a2,e3,a3] a2 [a2,e3,a3]@2 [a2,e3,a3]!2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3] e2 [d3,a3,d4]@5 [d3,a3,d4]!2 e2 [b2,f#3,b3]@2 e2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [a2,f#3,b3] b2 a2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3] e2 [d3,a3,d4]@5 [d3,a3,d4]!2 e2 [b2,f#3,b3]@2 e2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [a2,f#3,b3] b2 a2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3] e2 [d3,a3,d4]@5 [d3,a3,d4]!2 e2 [b2,f#3,b3]@2 e2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [a2,f#3,b3] b2 a2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3] [d3,a3,d4]@9 [e3,g#3,d4,g#4]]/8", // G5 A5 F#5 D5 B5 B7 B5 B7 …
  I: "e2 ~ [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4] [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4] [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4] [e3,g#3,d4,g#4]@3", // E7
  J: "[~@2 [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4] [e3,g#3,d4,g#4]@2 [e3,d4]@2 ~@6 [g#2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [e2,b2,e3] [f#2,c#3,f#3] [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [g2,d3,g3]!2 [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [e2,b2,e3] [f#2,c#3,f#3] [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [g2,d3,g3]!2 [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [e2,b2,e3] [f#2,c#3,f#3] [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [g2,d3,g3]!2 [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [e2,b2,e3] [f#2,c#3,f#3] [g2,d3,g3], ~@7 [g#3,g#4]@121]/8", // E7 G G5 F#5 G5 F#5 G5 A5 …
  K: "~ [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3] ~ [f#2,c#3,f#3] [g2,d3,g3]@2 ~@7", // G5 F#5 G5 F#5 G5
  L: "[[g2,d3,g3] [a2,e3,a3] a2!2 [a2,e3,a3] a2!2 [a2,e3,a3]@2 [a2,e3,a3] a2 [a2,e3,a3]@2 [a2,e3,a3]!2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3] e2 [d3,a3,d4]@5 [d3,a3,d4]!2 e2 [b2,f#3,b3]@2 e2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [a2,f#3,b3] b2 a2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3] e2 [d3,a3,d4]@5 [d3,a3,d4]!2 e2 [b2,f#3,b3]@2 e2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [a2,f#3,b3] b2 a2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3] e2 [d3,a3,d4]@5 [d3,a3,d4]!2 e2 [b2,f#3,b3]@2 e2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]@2 [a2,f#3,b3] [b2,f#3,b3]@2 [a2,f#3,b3] b2 a2 [f#2,c#3,f#3]]/7", // G5 A5 F#5 D5 B5 B7 B5 B7 …
  M: "~ e2 [f#2,c#3,f#3]@2 e2 [f#2,c#3,f#3] [d3,a3,d4]@9 [e3,g#3,d4,g#4]", // F#5 D5 E7
  N: "[e2 ~ [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4]!3 [e3,g#3,d4,g#4]@3 [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4]!3 [e3,g#3,d4,g#4]@3 [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4]!3 [e3,g#3,d4,g#4]@3 [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4]!3 [e3,g#3,d4,g#4]@3 [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4]!3 [e3,g#3,d4,g#4]@3 [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4]!4]/3", // E7
  O: "[~@2 [e3,g#3,d4,g#4]@2 [e3,g#3,d4,g#4]!3 [e3,d4]@6 ~@2 [g#2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [e2,b2,e3] [f#2,c#3,f#3] [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [g2,d3,g3]!2 [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [e2,b2,e3] [f#2,c#3,f#3] [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [g2,d3,g3]!2 [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [e2,b2,e3] [f#2,c#3,f#3] [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [g2,d3,g3]!2 [g2,d3,g3]@2 [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3] [g2,d3,g3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [e2,b2,e3] [f#2,c#3,f#3] [g2,d3,g3], ~@7 [g#3,g#4]@121]/8", // E7 G G5 F#5 G5 F#5 G5 A5 …
  P: "~ [g2,d3,g3] [f#2,c#3,f#3]@2 [g2,d3,g3] ~ [f#2,c#3,f#3] [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [e2,b2,e3] [f#2,c#3,f#3] [e2,a2,e3]", // G5 F#5 G5 F#5 G5 E5 F#5 A5
  Q: "[[g2,d3,g3,d4,g4]@3 [d3,a3,d4,f#4]@3 [a2,e3,a3,c#4]@41 ~]/3", // G5 D A
})).s("gm_overdriven_guitar").gain(0.56)

// chords · overdriven guitar · "Dean (guitar 3)"
const overdriven_guitar_2 = note("<~@3 A ~@71 B@3>".pickRestart({
  A: "~@3 [b3,e4] [e4,a4]@4", B: "[~@6 [b3,e4]@2 [e4,a4]@39 ~]/3",
})).s("gm_overdriven_guitar").gain(0.8)

// other · electric guitar clean · "Dean (guitar clean)"
const electric_guitar_clean = note("<~@4 A@3 B ~ C@2 ~ A@3 B ~ C@2 ~ A@3 ~@18 A@3 B ~ C@2 ~ A@3 ~@26>".pickRestart({
  A: "~@13 g3 ~@2", B: "~@6 g3 ~", C: "[~@12 d4@2 c#4@13 ~@5]/2",
})).s("gm_electric_guitar_clean").gain(0.8)

// bass · electric bass pick · "Robert (bass)"
const bass = note(`<
  A B A B C@4 D E D E C@4 D E D E C@3 F@8 G@8 H@2 C@4 D E D E C@3 F@8 I@8 J@4 A B A K@3
>`.pickRestart({
  A: "g2@3 d2@3 a1@10", B: "g1@3 d2@3 a1@10", C: "g1 a1 ~@2 a1 ~@2 a1@2 a1 ~ a1 a1@2 g1@2",
  D: "a1 d2 c#2 e1 g1 e1 f#1 g1@2 g1!2 f#1!2 g1!2 a1", E: "a1 d2 c#2 e1 g1 e1 f#1 g1@2 g1!2 f#1!2 d2 c#2 a1",
  F: "[g1 a1 ~@2 a1 ~@2 a1@2 a1 ~ a1@2 a1!2 f#1@2 ~ f#1@2 e1 f#1@2 d2@5 d2!2 ~ b1@2 ~ b1@2 a1 b1@2 b1@2 a1 b1@2 a1 b1 a1 f#1@2 ~ f#1@2 e1 f#1@2 d2@5 d2!2 ~ b1@2 ~ b1@2 a1 b1@2 b1@2 a1 b1@2 a1 b1 a1 f#1@2 ~ f#1@2 e1 f#1@2 d2@5 d2!2 ~ b1@2 ~ b1@2 a1 b1@2 b1@2 a1 b1@2 a1 b1 a1 f#1@2 ~ f#1@2 e1 f#1@2 d2@5 d2!2 ~ b1]/8",
  G: "[~@2 b1@2 a1 b1@2 b1@2 a1 b1@2 a1 b1 a1 b1@2 ~ b1@2 a1 b1@2 b1@2 ~@6 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~ e1 f#1 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~@3 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~ e1 f#1 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~@3 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~ e1 f#1 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~@3 g1]/8",
  H: "[~ g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~ e1 f#1 g1@2 g1 f#1@2 g1 ~ f#1 g1@2 ~@7]/2",
  I: "[~@2 b1@2 a1 b1@2 b1@2 b1@3 a1 b1 a1 b1@2 ~ b1@2 a1 b1@2 b1@2 b1@3 a1 b1 a1 b1@2 ~ b1@2 a1 b1@2 b1@2 b1@3 a1 b1 a1 b1@2 ~ b1@2 a1 b1@2 b1@2 ~@6 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~ e1 f#1 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~@3 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~ e1 f#1 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~@3 g1]/8",
  J: "[~ g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~ e1 f#1 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~@3 g1@2 g1 f#1@2 g1@2 f#1 g1 ~ a1 ~ a1 ~ e1 f#1 g1@2 g1 f#1@2 g1 ~ f#1 g1 ~ g1 ~ g1 ~@4]/4",
  K: "[g1@3 d2@3 a1@41 ~]/3",
})).s("gm_electric_bass_pick").gain(0.8)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@31
  [~@2 x!4 ~@2 x ~ x!6]
  [~@2 x!5 ~ x ~@7]
  ~@27
  [~@2 x!4 ~@2 x ~ x!6]!3
  [~@2 x!5 ~ x ~@7]
  ~@14
>`).gain(0.8)

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

// drums · mid tom
const mid_tom = s("mt").struct("<[~@6 x!2] ~ [~@11 x ~@2 x!2] x ~@70 [~@12 x!4] ~@3>").gain(0.8)

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

// drums · high tom
const high_tom = s("ht").struct("<[~@9 x ~@2 x ~@3] ~ [~@13 x!2 ~] ~@71 [~@8 x!4 ~@4] ~@3>").gain(0.8)

// drums · tambourine
const tambourine = s("tb").struct("<~@32 A B@7 C ~@22 D B@7 C ~@6>".pickRestart({
  A: "~@7 x ~@7 x", B: "x!16", C: "x!9 ~@7", D: "~@15 x",
})).gain(0.8)

// drums · splash
const splash = s("cr").struct("<A@4 B ~@18 C D C D C D C D C ~@20 C D C D C D C D C@3 ~@9 A@4 ~@2>".pickRestart({
  A: "x ~@2 x ~@2 x ~@9", B: "x", C: "~@15 x", D: "~@7 x ~@7 x",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@24 A B@6 C ~@21 A B@6 C ~@17>".pickRestart({
  A: "~ x!15", B: "x!16", C: "x",
})).gain(0.8)

stack(
  overdriven_guitar, overdriven_guitar_2, electric_guitar_clean, bass, kick, snare, hihat, low_tom, mid_tom, open_hat,
  high_tom, tambourine, splash, ride
)

More by Stone Temple Pilots