Strudelify
KeyE minorTempo124 bpm
0:00/0:00
// Deep Kick — Red Hot Chili Peppers
// 124 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 62 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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.

// bass · slap bass 1 · "bass 1"
const bass = note("<~@11 A@3 B C D@8 E@3 F G H G I G J G K G H G L M N M O P Q R S R T U V ~@8 W X>".pickRestart({
  A: "a3 g3 e3 a3 g3 e3 g3@2 e3 d3 b2 e3 d3 b2 d3@2", B: "a3 g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a3",
  C: "g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a1@2",
  D: "[e2 e1 e2@2 e2 e1 b1@2 d2 e2 e1 e2!2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2!2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2]/8",
  E: "[~ e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2]/3",
  F: "[e1,e2]@13 ~@3", G: "~@3 g2 ~ g2 ~@5 d3 ~ d3 ~@2", H: "~@3 c3 ~ c3 ~@5 f2 ~ g2 ~ g2", I: "~@3 c3 ~@12",
  J: "~@3 c3 ~ c3 ~@4 f2 ~@2 g2 ~@2", K: "~@3 c3 ~ c3 ~@3 f3 ~ f3 ~ c3@2 ~", L: "~@3 c3 ~ c3 ~@3 f2 g2 ~ g2 f2 ~@2",
  M: "~@3 g2 ~ g2 ~@5 a#2 ~ a#2 ~@2", N: "~@3 c3 ~ c3 ~@3 g2 ~ b2 ~ d3 ~ d#3", O: "~@3 c3 ~ c3 ~@6 f2@2 ~@2",
  P: "g2@3 ~ g2@2 a#1 a1@2 a#1@6 ~", Q: "c2@3 ~ c2!3 e1!2 f1@2 ~@3 g2@2", R: "g2@3 ~ g2@2 ~ a1!2 a#1@6 ~",
  S: "c1 c2@3 d#1 d#2@3 a1 a2@3 d#3@2 e3@2", T: "c2@3 ~ c2@2 ~ e1!2 f1@5 f1 f#1", U: "g1@3 ~ a1@3 ~ a#1@3 ~ d2@3 ~",
  V: "c2@3 ~ c2!3 e2@2 f2@6 ~", W: "[c1,c2]@13 ~@3", X: "[c1,c2]@3 ~@13",
})).s("gm_slap_bass_1").gain(0.31)

// bass · slap bass 2 · "bass 2"
const bass_2 = note(`<
  ~@11 A@3 B C D@8 E@3 F G H G I G J G K G H G L M N M O P Q R S R T U V W X Y Z AA AB AC AD AE AF
>`.pickRestart({
  A: "a3 g3 e3 a3 g3 e3 g3@2 e3 d3 b2 e3 d3 b2 d3@2", B: "a3 g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a3",
  C: "g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a1@2",
  D: "[e2 e1 e2@2 e2 e1 b1@2 d2 e2 e1 e2!2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2!2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2]/8",
  E: "[~ e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2@2 e1 d2@2 e2 e1 b1@2 d2 e2 e1 e2@2 e1 d2 e2]/3",
  F: "[e1,e2]@13 ~@3", G: "g1@2 g1 ~ g1 ~ a1@2 a#1@2 d2 ~ d2 ~ c#2@2", H: "c2@2 c2 ~ c2 ~ d2@2 d#2@2 g1 ~ g1 ~ g1 ~",
  I: "c2@2 c2 ~@2 g1 f1 g1 ~ a#1 c2 a#1 ~ f1 g1 f1", J: "c2@2 c2 ~ g1 ~ d2@2 d#2@2 ~ g1!2 ~ g1!2",
  K: "c2@2 c2 ~ c2 ~ f2@2 ~@2 f2 ~ f2 ~@2 f2", L: "c2@2 c2 ~@3 c2 d2!2 ~@2 d2 ~@2 d2 c2",
  M: "g1@2 g1 ~ g1 ~ a1@2 a#1@2 a#1 ~ a#1 ~ b1@2", N: "c2@2 c2 ~ c2 ~ d#2 e2!2 ~ e2 ~ e2 ~ e2 ~",
  O: "c2@2 c2 ~ c2 ~ d2@2 d#2 e2 ~@2 f2@2 ~@2", P: "g2@3 ~ g2@2 a#1 a1@2 a#1@6 ~", Q: "c2@3 ~ c2!3 e1!2 f1@2 ~@3 g2@2",
  R: "g2@3 ~ g2@2 ~ a1!2 a#1@6 ~", S: "c1 c2@3 d#1 d#2@3 a1 a2@3 d#3@2 e3@2", T: "c2@3 ~ c2@2 ~ e1!2 f1@5 f1 f#1",
  U: "g1@3 ~ a1@3 ~ a#1@3 ~ d2@3 ~", V: "c2@3 ~ c2!3 e2@2 f2@6 ~", W: "g1 ~@2 g1 ~ g2 a#2 b2 ~ f2 ~ d2 g2 f2 d2 ~",
  X: "c2 ~@4 g1 a#1 g1 c2 a#1 g1 ~ f1 e1 f#1 ~", Y: "g1@2 g1!2 f1@2 f1@2 ~@2 g1@2 g2@3 ~",
  Z: "c2@2 c2!2 a#1@2 a#1@2 ~ a#1 c2 a#1 c#2 a#1 d2 a#1", AA: "d2 ~ g2 ~ d2 ~ f2 ~@3 a#2 ~@2 c#2@2 ~",
  AB: "c2@2 ~@2 a#1@2 ~@2 c2 b1 g1 ~ f1 e1 f#1 ~", AC: "g1@2 ~@3 d2 g2!2 a#2 b2 g2 d2 f2 a1 c#2 a#1",
  AD: "c2 ~ c3 ~@7 a#1@2 b2@3 ~", AE: "[c1,c2]@13 ~@3", AF: "[c1,c2]@3 ~@13",
})).s("gm_slap_bass_2").gain(0.31)

// bass · electric bass finger · "bass 3"
const bass_3 = note(`<
  A B C D@2 E F G H@2 I J K@2 L M ~@11 N ~@16 O P Q R Q S T U V W X Y Z AA AB AC AD AE
>`.pickRestart({
  A: "~ e1@2 ~ e2@2 g2@2 ~ c#3@4 ~ g2@2", B: "e2@2 ~ d3@4 ~ g2@2 e2@2 ~ a2@3",
  C: "~@2 g2@2 d2@2 e2@2 ~ e1@2 e2@2 ~ g2@2",
  D: "[c#3@4 ~ g2@2 ~ e2@2 d3@4 ~ g2@2 ~ e2@2 a2@2 ~ g2@2 f#2 g2 f#2 d2@2 c#2@2]/2",
  E: "~ e1@2 e2@2 ~ g2@2 c#3@4 ~ g2@2 ~", F: "e2@2 d3@4 ~ g2@2 e2@2 ~ a2@4", G: "~ g2@2 d2@2 ~ e2@2 e1@2 ~ e2@2 g2@2 ~",
  H: "[c#3@4 ~ g2@2 e2@2 ~ d3@4 ~ g2@2 e2@2 ~ a2@2 g2@2 ~ [f#2,g2] f#2 d2@2 ~ c#2@2]/2", // Gmaj7
  I: "e1@10 ~@2 [e1,f#1] [g1,a1,b1,c2] [d2,e2,f#2,g2] [a2,b2,c3,d3]", // Esus2 Cmaj7 Em7 D7
  J: "[d3,a3] g3 e3 a3 g3 e3 g3@2 e3 d3 b2 e3 d3 b2 d3@2", K: "a3 g3 e3 a3 g3 e3 g3@2 e3 d3 b2 e3 d3 b2 d3@2",
  L: "a3 g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a3", M: "g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a3 g3 e3 a1@2",
  N: "[e1,e2]@13 ~@3", O: "g2@3 ~ g2@2 a#1 a1@2 a#1@6 ~", P: "c2@3 ~ c2!3 e1!2 f1@2 ~@3 g2@2",
  Q: "g2@3 ~ g2@2 ~ a1!2 a#1@6 ~", R: "c1 c2@3 d#1 d#2@3 a1 a2@3 d#3@2 e3@2", S: "c2@3 ~ c2@2 ~ e1!2 f1@5 f1 f#1",
  T: "g1@3 ~ a1@3 ~ a#1@3 ~ d2@3 ~", U: "c2@3 ~ c2!3 e2@2 f2@6 ~", V: "g1 ~@2 g1 ~ g2 a#2 b2 ~ f2 ~ d2 g2 f2 d2 ~",
  W: "c2 ~@4 g1 a#1 g1 c2 a#1 g1 ~ f1 e1 f#1 ~", X: "g1@2 g1!2 f1@2 f1@2 ~@2 g1@2 g2@3 ~",
  Y: "c2@2 c2!2 a#1@2 a#1@2 ~ a#1 c2 a#1 c#2 a#1 d2 a#1", Z: "d2 ~ g2 ~ d2 ~ f2 ~@3 a#2 ~@2 c#2@2 ~",
  AA: "c2@2 ~@2 a#1@2 ~@2 c2 b1 g1 ~ f1 e1 f#1 ~", AB: "g1@2 ~@3 d2 g2!2 a#2 b2 g2 d2 f2 a1 c#2 a#1",
  AC: "c2 ~ c3 ~@7 a#1@2 b2@3 ~", AD: "[c1,c2]@13 ~@3", AE: "[c1,c2]@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.31)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@60 x!2>").gain(0.31)

// drums · hihat
const hihat = s("hh").struct("<~@5 A B C D A ~ E F@4 ~@46>".pickRestart({
  A: "~ x ~@4 x ~@4 x ~@4", B: "x ~@3 x ~@4 x ~@4 x ~", C: "~@3 x ~@4 x ~@4 x ~@2", D: "~@2 x ~@4 x ~@4 x ~@3",
  E: "~ x!3", F: "x!4",
})).gain(0.31)

// drums · mid tom
const mid_tom = s("mt").struct("<~@10 [x!4] x ~@15 x ~@34>").gain(0.31)

// drums · open hat
const open_hat = s("oh").struct("<~@16 [x!8]!11 ~@35>").gain(0.31)

// drums · china
const china = s("cr").struct("<~@10 A B ~@4 B ~@10 B@2 ~@3 B ~@3 B ~@3 B ~@7 B ~@3 B ~@3 B ~@3 B@2>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.31)

// drums · ride bell
const ride_bell = s("rd").struct("<~@28 [~ x!7] [x!8]!23 x ~@3 [x!8]!4 x!2>").gain(0.31)

stack(bass, bass_2, bass_3, kick, snare, low_tom, hihat, mid_tom, open_hat, china, ride_bell)

More by Red Hot Chili Peppers