Strudelify

My Own Summer (Shove It)

Deftones

KeyD♭ majorTempo70 bpm
0:00/0:00
// My Own Summer (Shove It) — Deftones
// 70 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 31, 4/4 at bar 31) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 2 distortion guitar (copy of ch 1 distortion guitar)
// note: Full arrangement: all 65 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/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 · distortion guitar
const distortion_guitar = note(`<
  A B@7 C D@3 E B@7 C D@3 F G H I G H J@6 ~@5 K L@7 M G N O G N P@3 Q@3 L R S T
>`.pickRestart({
  A: "~@8 db2 c3 db3 db2 c3 a2 db2 a2", B: "db2 a2 ab2 db2 a2 gb2@2 gb2 db2 c3 db3 db2 c3 a2 db2 a2",
  C: "db2 a2 ab2 db2 a2 gb2@2 gb2 [db2,ab2,db3] [ab2,eb3,ab3] [a2,e3,a3] [db2,ab2,db3] [a2,e3,a3] [gb2,db3,gb3] [db2,ab2,db3] [gb2,db3,gb3]", // Db5 Ab5 A5 Db5 A5 Gb5 Db5 Gb5
  D: "[db2,ab2,db3] [gb2,db3,gb3] [ab2,eb3,ab3] [db2,ab2,db3] [a2,e3,a3] [f2,c3,f3]@2 [f2,c3,f3] [db2,ab2,db3] [ab2,eb3,ab3] [a2,e3,a3] [db2,ab2,db3] [a2,e3,a3] [gb2,db3,gb3] [db2,ab2,db3] [gb2,db3,gb3]", // Db5 Gb5 Ab5 Db5 A5 F5 Db5 Ab5 …
  E: "[db2,ab2,db3] [gb2,db3,gb3] [ab2,eb3,ab3] [db2,ab2,db3] [a2,e3,a3] [f2,c3,f3]@2 [f2,c3,f3] db2 c3 db3 db2 c3 a2 db2 a2", // Db5 Gb5 Ab5 Db5 A5 F5
  F: "[db2,ab2,db3] [gb2,db3,gb3] [ab2,eb3,ab3] [db2,ab2,db3] [a2,e3,a3] [f2,c3,f3]@2 [f2,c3,f3] [a2,e3,a3,eb4]!8", // Db5 Gb5 Ab5 Db5 A5 F5 A
  G: "[a2,e3,a3,eb4]!16", H: "[a2,e3,a3,eb4]!7 [db2,ab2] [gb2,db3,gb3]!3 [a2,e3,a3] [db2,ab2,db3]@2 [gb2,db3,gb3]!2",
  I: "[gb2,db3,gb3] [a2,e3,a3]!2 [db2,ab2,db3] [db2,ab2,db3]@4 [a2,e3,a3,eb4]!8", // Gb5 A5 Db5 A
  J: "[[gb2,db3,gb3] [a2,e3,a3]!2 [db2,ab2,db3] [db2,ab2,db3]@80 ~@12]/6", // Gb5 A5 Db5
  K: "~@4 [db2,ab2,db3] [ab2,eb3,ab3] [a2,e3,a3] [db2,ab2,db3] [a2,e3,a3] [gb2,db3,gb3] [db2,ab2,db3] [gb2,db3,gb3] [db2,ab2,db3] [gb2,db3,gb3] [ab2,eb3,ab3] [db2,ab2,db3]", // Db5 Ab5 A5 Db5 A5 Gb5 Db5 Gb5 …
  L: "[a2,e3,a3] [f2,c3,f3]@2 [f2,c3,f3] [db2,ab2,db3] [ab2,eb3,ab3] [a2,e3,a3] [db2,ab2,db3] [a2,e3,a3] [gb2,db3,gb3] [db2,ab2,db3] [gb2,db3,gb3] [db2,ab2,db3] [gb2,db3,gb3] [ab2,eb3,ab3] [db2,ab2,db3]", // A5 F5 Db5 Ab5 A5 Db5 A5 Gb5 …
  M: "[a2,e3,a3] [f2,c3,f3]@2 [f2,c3,f3] [a2,e3,a3,eb4]!12", // A5 F5 A
  N: "[a2,e3,a3,eb4]!3 [db2,ab2] [gb2,db3,gb3]!3 [a2,e3,a3] [db2,ab2,db3]@2 [gb2,db3,gb3]!3 [a2,e3,a3]!2 [db2,ab2,db3]", // A Db5 Gb5 A5 Db5 Gb5 A5 Db5
  O: "[db2,ab2,db3]@4 [a2,e3,a3,eb4]!12", // Db5 A
  P: "[db2,ab2,db3,gb3,bb3]@4 [gb2,db3,gb3]!3 [a2,e3,a3] [db2,ab2,db3]@2 [gb2,db3,gb3]!3 [a2,e3,a3]!2 [db2,ab2,db3]", // Gb Gb5 A5 Db5 Gb5 A5 Db5
  Q: "[[db2,ab2,db3,gb3,bb3]@36 [db2,ab2,db3] [ab2,eb3,ab3] [a2,e3,a3] [db2,ab2,db3] [a2,e3,a3] [gb2,db3,gb3] [db2,ab2,db3] [gb2,db3,gb3] [db2,ab2,db3] [gb2,db3,gb3] [ab2,eb3,ab3] [db2,ab2,db3]]/3", // Gb Db5 Ab5 A5 Db5 A5 Gb5 Db5 …
  R: "[a2,e3,a3] [f2,c3,f3]@2 [f2,c3,f3] db2 ab2 a2 db2 a2 gb2 db2 gb2 db2 gb2 ab2 db2", // A5 F5
  S: "a2 f2@2 f2 db2 ab2 a2 db2 a2 gb2 db2 gb2 db2 gb2 ab2 db2", T: "a2 [f2,c3,f3]@3 ~@12",
})).s("gm_distortion_guitar").gain(0.8)

// other · pad warm
const pad_warm = note("<~@34 A@3 ~@28>".pickRestart({
  A: "[~ eb7@11]/3",
})).s("gm_pad_warm").gain(0.8)

// bass · electric bass finger
const bass = note(`<
  ~@4 A B@3 C D@3 E ~@3 A B@3 F D@3 G H I J H K L@4 M@7 N O@7 P H Q R H S T@3 U@3 O@3 V
>`.pickRestart({
  A: "~@8 ab1 db2!4 c2!3", B: "c2 a1!4 gb1!3 ab1 db2!4 c2!3", C: "c2 a1!4 gb1 gb1@2 db1 ab1 a1 db1 a1 gb1 db1 gb1",
  D: "db1 gb1 ab1 db1 a1 f1@2 f1 db1 ab1 a1 db1 a1 gb1 db1 gb1", E: "db1 gb1 ab1 db1 a1 f1@3 ~@8",
  F: "c2 a1!4 gb1!3 db1 ab1 a1 db1 a1 gb1 db1 gb1", G: "db1 gb1 ab1 db1 a1 f1@2 f1 a1!8", H: "a1!16",
  I: "a1!7 db1 gb1!3 a1 db1@2 gb1!2", J: "gb1 a1!2 db1 db1@4 a1!8", K: "a1!8 gb1!3 a1 db1@2 gb1!2",
  L: "[gb1 a1!2 db1 db1@48 ab1 db2!4 c2!4 a1!3]/4", M: "a1 gb1!3 ab1 db2!4 c2!4 a1!3",
  N: "a1 gb1!3 db1 ab1 a1 db1 a1 gb1 db1 gb1 db1 gb1 ab1 db1",
  O: "a1 f1@2 f1 db1 ab1 a1 db1 a1 gb1 db1 gb1 db1 gb1 ab1 db1", P: "a1 f1@2 f1 a1!12",
  Q: "a1!3 db1 gb1!3 a1 db1@2 gb1!3 a1!2 db1", R: "db1@4 a1!12", S: "a1!4 gb1!3 a1 db1@2 gb1!3 a1!2 db1",
  T: "db1!2 db1@2 gb1!3 a1 db1@2 gb1!3 a1!2 db1", U: "[db1@36 db1 ab1 a1 db1 a1 gb1 db1 gb1 db1 gb1 ab1 db1]/3",
  V: "a1 f1@3 ~@12",
})).s("gm_electric_bass_finger").gain(0.8)

// drums · kick
const kick = s("bd").struct("<A@24 B C@2 B C@2 ~ D@18 E@2 F E@2 F@4 ~@2 D@4 ~>".pickRestart({
  A: "~@8 x ~@6 x", B: "~ x", C: "x!2", D: "~@4 x ~@6 x ~@4", E: "~ x ~ x", F: "~ x ~@2",
})).gain(0.8)

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

// drums · hihat
const hihat = s("hh").struct("<A B@7 C ~@3 A B@7 C ~@10 D B@9 E ~@18 F ~@4>".pickRestart({
  A: "~@4 x!4", B: "x!8", C: "x!4 ~@4", D: "~@2 x!6", E: "x!2 ~@6", F: "~ x ~@14",
})).gain(0.8)

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

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

// drums · crash
const crash = s("cr").struct("<~@8 A@4 ~@8 A@4 B C@5 D E ~@9 E@8 F C@8 G ~ E@4 H>".pickRestart({
  A: "~ x", B: "~@4 x!4", C: "x!8", D: "x!3 ~@5", E: "~ x ~@2", F: "~@2 x!6", G: "x", H: "~ x ~@14",
})).gain(0.8)

stack(distortion_guitar, pad_warm, bass, kick, snare, hihat, mid_tom, open_hat, crash)

More by Deftones