Strudelify

Root

Deftones

KeyC majorTempo100 bpm
0:00/0:00
// Root — Deftones
// 100 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  A@3 B A@4 C@2 D C E@3 ~ F G H I F G H I ~ J K L M N O P E@3 ~ F G H I F G H I ~ J Q R M N O S T U T U T U T U C@2 D C
  V W V X Y Z AA ~ AB AC AD AE AF AG AD AE AH AI
>`.pickRestart({
  A: "c4!2 c5!2 g4!2 g#4!2 a#4!2 g#4!2 g4!2 d#4!2", B: "c4!2 c5!2 g4!2 g#4!2 c4!2 ~@2 c4!2 ~@2",
  C: "[d4,e4]@12 [d4,e4]!4", D: "[d4,e4]@12 [d4,e4]!2 ~ [d4,e4]", E: "[[c4,e4]@5 ~]/3", F: "g3@3 g3@2 g3@3 ~@6 g3@2",
  G: "g3@3 g3@2 g3@3 ~@2 g3@2 a#3@4", H: "a#3 g#3 g3@2 ~@3 f3", I: "g3 f3@3", J: "~ g3!5 ~ g3",
  K: "g3!2 a#3 g#3 ~@2 g#3 g3", L: "f3 g3!2 ~@5", M: "g3!3 ~ g3@2 g3@2 g3@2 g3@2 ~@4",
  N: "g4!2 g4@2 g4@2 c5@2 g4@2 ~@6", O: "~@8 g3@3 g3 ~@2 g3@2", P: "~@12 g3!4", Q: "c4!3 a#3 ~@2 c4!2",
  R: "a#3 c4!2 ~@5", S: "~@12 c3!4", T: "g3 f#3 ~ f#3 f3 ~ f3 e3 ~ e3 d#3 ~ d3 ~ d3 c#3",
  U: "~ c3!4 ~ c3!2 ~ c3!4 ~ c3!2", V: "g3", W: "g3@3 f3", X: "~@6 g3 f3", Y: "g3@3 g3@7 ~@6", Z: "f3@8 ~@6 d3 ~",
  AA: "e3", AB: "c3@3 c#3@3 e3@3 f3@3 e3@2 c#3@2, g5", AC: "c3@3 c#3@3 e3@3 f3@3 [e3,f5]@2 c#3@2, g5",
  AD: "c3 ~@2 c3 ~@2 c3@4 ~@6, e5", AE: "c3 ~@2 c3 ~@2 c3@4 ~@6",
  AF: "c3!3 c#3 [c#3,d3] c#3 e3 e3@2 f3!3 e3!2 c#3!2, g5", // Dmaj7
  AG: "c3!3 c#3 [c#3,d3] c#3 e3 e3@2 f3!3 [e3,f5] e3 c#3!2, g5", AH: "c#3 ~@2 c#3 ~@2 c#3 ~@9", AI: "d3 ~@2 c#3 ~@12",
})).s("gm_overdriven_guitar").gain(0.64).pan(0.7)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@3 A B@4 C@2 D C B@10 E@9 F B@12 E@7 G H I H I H I H J C@2 D C K@2 L M K@2 N ~ K@2 O@2 K@2 O@2 P Q
>`.pickRestart({
  A: "~@8 c2!2 ~@2 c2!2 ~@2", B: "c1 c2 g1 g#1 a#1 g#1 g1 d#1", C: "c1@8 ~@4 c1!4", D: "c1@8 ~@4 c1!2 ~ c1",
  E: "c1!2 c2!2 g1!2 g#1!2 a#1!2 g#1!2 g1!2 d#1!2", F: "c1!2 c2!2 g1!2 g#1!2 a#1!2 g#1!2 g1!4",
  G: "c1!2 c2!2 g1!2 g#1!2 a#1!2 g#1!2 c1!4", H: "g1 f#1 ~ f#1 f1 ~ f1 e1 ~ e1 d#1 ~ d1 ~ d1 c#1",
  I: "~ c1!4 ~ c1!2 ~ c1!4 ~ c1!2", J: "~ c1!4 ~ c1!2 ~ c1!4 ~@3", K: "c2@3 c#2@3 e2@3 f2@2 ~ e2@2 c#2@2",
  L: "c2@3 c2@3 c2@7 ~@3", M: "c1@3 c1@3 c1@7 ~@3", N: "c1@3 c1@3 c1@3 ~@7", O: "c2 ~@2 c2 ~@2 c2@4 ~@6",
  P: "c#2 ~@2 c#2 ~@2 c#2 ~@9", Q: "d2 ~@2 c#2 ~@12",
})).s("gm_electric_bass_pick").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A B C B C D@4 E F E@2 F@7 G B@7 H E F E@2 F@7 I B@7 H J K J K J K J L D@4 ~@2 M@2 ~@3 M N O ~@2 N O ~@2 M P
>`.pickRestart({
  A: "~@8 x!2 ~@2 x!2 ~@2", B: "x!2 ~ x ~@4 x!2 ~ x ~@2 x ~", C: "x!2 ~ x ~@4 x!2 ~ x!2 ~ x ~",
  D: "x!2 ~ x ~@4 x!2 ~@6", E: "x!2 ~@14", F: "x!2 ~@6 x!2 ~@6", G: "x!16", H: "x!2 ~ x ~@4 x!2 ~ x ~@4", I: "x!12 ~@4",
  J: "x!2 ~@3 x ~@2 x ~@3 x!2 ~@2", K: "x!4 ~@4 x!4 ~@4", L: "x!4 ~@4 x!4 ~ x!2 ~", M: "x ~@2 x ~@2 x ~@9",
  N: "x!4 ~@4 x!2 ~ x ~@4", O: "x ~ x ~@10 x ~@2", P: "x ~@2 x ~@12",
})).gain(0.64)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 [~@9 x ~@6]!4 ~@48 [~@9 x ~@6]!4 ~@18>").gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@8 [~@4 x ~@2 x ~@8]!4 ~@48 [~@4 x ~@2 x ~@8]!4 ~@18>").gain(0.64)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@12 A@10 ~@10 A@11 ~@21 B@2 ~ C B@2 C ~@10 D>".pickRestart({
  A: "x!16", B: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~", C: "x ~@2 x ~@2 x ~@9", D: "x",
})).gain(0.64)

stack(overdriven_guitar, bass, kick, snare, mid_tom, high_tom, china, ride_bell)

More by Deftones