Strudelify

Voodoo

Godsmack

KeyE minorTempo120 bpm
0:00/0:00
// Voodoo — Godsmack
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · trumpet
const trumpet = note(`<
  ~@6 A@2 ~@30 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 ~@22 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 ~@8
>`.pickRestart({
  A: "[e4@2 e4 e4@2 e4@2 d4@2 e4 e4@6]/2", B: "[e4@2 e4!3 e4@2 d4@2 d4@2 e4 e4@2 e4!2]/2",
  C: "[e4@2 e4 e4@2 e4@2 g4@2 g4@2 g4 f#4 g4 f#4@2]/2", D: "[e4!5 e4@2 d4@2 d4@2 e4 e4@2 e4!2]/2",
})).s("gm_trumpet").gain(0.51)

// bass · electric bass finger
const bass = note(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@16 A B A B A B A B A B A B A B A B A B A B A B ~@16
  A B A B A B A B
>`.pickRestart({
  A: "e1@2 e1!2 e1@2 e1!2", B: "b1 c2 b1 e1 f#1 g1 f#1 e1",
})).s("gm_electric_bass_finger").gain(0.51)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@15 A B A B A B A B A B A B A B A B A B A B ~ C D E@14 F@2 B A B A B A B A B A B A B A B A B A B ~ C D E@14 F@2 B A B
  A B A B A
>`.pickRestart({
  A: "~@7 e3", B: "f#3 g3 f#3 ~@5", C: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  D: "[e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", E: "[e2,b2,e3]/2",
  F: "[e3@15 e3, [e2,b2]]/2", // E5
})).s("gm_distortion_guitar").gain(0.51)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "x!2", B: "~ x",
})).gain(0.46)

// drums · snare
const snare = s("sd").struct("<~@38 [~ x ~ x]!16 ~@22 [~ x ~ x]!16 ~@8>").gain(0.46)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "x!2 ~@6",
})).gain(0.46)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "x ~ x!3 ~ x!2", B: "~@2 x!6",
})).gain(0.46)

// drums · crash
const crash = s("cr").struct("<~@38 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@23 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9>".pickRestart({
  A: "x",
})).gain(0.51)

// drums · ride bell
const ride_bell = s("rd").struct("<~@7 [~@3 x] ~@92>").gain(0.46)

// drums · congas
const congas = s("conga:18").struct(`<
  ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~ x ~@6",
})).gain(1.15)

// drums · congas
const congas_2 = s("conga:33").struct(`<
  ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x!2 ~@2",
})).gain(1.15)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@8 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@6 x!2",
})).gain(0.41)

stack(trumpet, bass, distortion_guitar, kick, snare, mid_tom, high_tom, crash, ride_bell, congas, congas_2, shaker)

More by Godsmack