Strudelify
Can't Stop cover art

2002 · By the Way

Can't Stop

Red Hot Chilli Peppers

KeyE majorTempo180 bpm
0:00/0:00
// Can't Stop — Red Hot Chilli Peppers
// 180 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5934306; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 188 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/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.

// other · alto sax · "Altový saxofon"
const alto_sax = note(`<
  ~@24 A B C D E F G H I@4 J@2 K@2 I@4 J@2 K@2 I@4 J@2 K@2 L@4 M N O@2 L@4 M N O@2 I@4 J@2 K@2 I@4 J@2 K@2 I@4 J@2 K@2
  L@4 M N O@2 L@4 M N O@2 P@2 Q@2 R S T U P@2 Q@2 R S T U V W X Y Z AA AB AC V W X Y Z AA AB AC ~@8 I@4 J@2 K@2 I@4 J@2
  K@2 I@4 J@2 K@2 I@4 J@2 K@2 I@4
>`.pickRestart({
  A: "b4@2 ~@4 b4!2", B: "~@5 b4!3", C: "a4@2 ~@4 a4!2", D: "~@5 a4 b4 a4", E: "f#4@2 ~@4 f#4!2", F: "~@5 f#4!3",
  G: "g4@2 ~@4 g4!2", H: "~@5 g4!3", I: "[~@2 d4@2 e4@2 d4 e4@2 d4 e4 d4 e4@2 d4@2]/2",
  J: "[~@2 d4@2 d4@2 d4 d4@2 d4!3 d4@2 d4@2]/2", K: "[~@2 e4@2 e4@2 e4 e4@2 e4!3 e4@2 e4@2]/2",
  L: "[a4@2 g4@2 g4@2 e4 a4@3 g4@2 g4@2 e4 a4@3 g4@2 g4@2 e4 a4@3 g4@2 g4@4]/4", M: "g4 e4!2 d4", N: "d4 g4@3",
  O: "[g4 a4@3]/2", P: "~ e4 ~ e4", Q: "~ d4 ~ d4", R: "~ b3 ~ b3", S: "~ b3 ~ c4", T: "~ c4 ~ c4", U: "~ c4 ~ d4",
  V: "e4 b4 g4 e4 b4 g4 e4 b4", W: "g4 e4 b4 g4 e4 b4 g4 e4", X: "d4 a4 f#4 d4 a4 f#4 d4 a4",
  Y: "f#4 d4 a4 f#4 d4 a4 f#4 d4", Z: "b3 f#4 d4 b3 f#4 d4 b3 f#4", AA: "d4 b3 f#4 d4 b3 f#4 d4 b3",
  AB: "c4 g4 e4 c4 g4 e4 c4 g4", AC: "e4 c4 g4 e4 c4 g4 e4 c4",
})).s("gm_alto_sax").gain(0.41)

// other · flute · "Flétna"
const flute = note(`<
  ~@4 A@12 ~@8 B C B C B C B C B C B C B C B C B C B C B C B C D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 H@2 I@2 J@2 K@2 B C B C B
  C B C B C B C B C B C D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 H@2 I@2 J@2 K@2 L@2 M@2 N O P Q L@2 M@2 N O P Q L@2 M@2 N O P Q
  L@2 M@2 N O P Q ~@8 B C B C B C B C B C B C B C B C B C B C B C B C D@2 E@2 F@2 G@2 ~@4
>`.pickRestart({
  A: "[d5 e5@2 d5 e5@2 d5 e5@2 d5 e5@2 d5 e5@3]/2", B: "~@2 d5 ~ e5 ~@3", C: "~ d5 ~ e5 ~@4", D: "[g5@23 ~ b5@8]/2",
  E: "[f#5@23 ~ a5@8]/2", F: "[d5@23 ~ f#5@8]/2", G: "[e5@15 ~]/2", H: "[d5@11 ~ a5@19 ~]/2", I: "[b5@11 ~ c6@19 ~]/2",
  J: "[g5@11 ~ a5@19 ~]/2", K: "[b5@8 c6@23 ~]/2", L: "~ e5 ~ e5", M: "~ d5 ~ d5", N: "~ b4 ~ b4", O: "~ b4 ~ c5",
  P: "~ c5 ~ c5", Q: "~ c5 ~ d5",
})).s("gm_flute").gain(0.46)

// other · trombone · "Pozoun"
const trombone = note(`<
  ~@12 A@4 ~@8 B C D E F G H I B C D E F G H I B C D E F G H I B C D E F G H I J@2 K@2 L@2 M@2 J@2 K@2 L@2 M@2 B C D E F
  G H I B C D E F G H I B C D E F G H I J@2 K@2 L@2 M@2 J@2 K@2 L@2 M@2 N O P Q@2 R@2 ~ S@2 T@2 U V@2 ~ N O P Q@2 R@2 ~
  S@2 T@2 U V@2 ~ W@2 X@2 Y@2 Z@2 W@2 X@2 Y@2 Z@2 B C D E F G H I B C D E F G H I B C D E F G H I ~@4
>`.pickRestart({
  A: "[d3 e3@2 d3 e3@2 d3 e3@2 d3 e3@2 d3 e3@3]/2", B: "e3@2 ~@4 e3!2", C: "~@5 e3!3", D: "d3@2 ~@4 d3!2",
  E: "~@5 d3 e3 d3", F: "b2@2 ~@4 b2!2", G: "~@5 b2!3", H: "c3@2 ~@4 c3!2", I: "~@5 c3!3", J: "[d3@3 a3@5]/2",
  K: "[b3@3 c4@5]/2", L: "[g3@3 a3@5]/2", M: "[b3 c4@3]/2", N: "~ e3!3", O: "e3!4", P: "d3!4", Q: "[d3!2 e3 b2@5]/2",
  R: "[~ b2 d3 c3@5]/2", S: "[~ b2@2 b2@2 c3!2 b2]/2", T: "[a2@2 g2 a2@2 a2!2 b2]/2", U: "f#2", V: "[~ f#2 a2 g2@5]/2",
  W: "[e4@12 e4 f4 f#4@2]/2", X: "[d4@12 d4 d#4 e4@2]/2", Y: "[b3@3 d4]/2", Z: "[a3 g3@6 ~]/2",
})).s("gm_trombone").gain(0.3)

// other · electric guitar clean · "Elektrická kytara (tabulatura)"
const electric_guitar_clean = note(`<
  A@16 B C D E F G H I B C D J F G H I B C D J F G H I B C D J F G H I B C D J F G H I K@2 L@2 K@2 L@2 K@2 L@2 K@2 L@2 B
  C D J F G H I B C D J F G H I B C D J F G H I K@2 L@2 K@2 L@2 K@2 L@2 K@2 L@2 M N O P Q@2 R S M N O P Q@2 R S T U V W
  X@2 Y Z T U V W X@2 Y Z B C D E F G H I B C D E F G H I B C D J F G H I B C D J F G H I B C D J F G H I ~@4
>`.pickRestart({
  A: "[d3 e3@2 d3 e3@2 d3 e3@2 d3 e3@2 d3 e3@3]/2", B: "e3@2 d4 ~ e4 ~ e3!2", C: "~ d4 ~ e4 ~ e3!3",
  D: "d3@2 d4 ~ e4 ~ d3!2", E: "~ d4 ~ e4 ~ d3!3", F: "b2@2 d4 ~ e4 ~ b2!2", G: "~ d4 ~ e4 ~ b2!3",
  H: "c3@2 d4 ~ e4 ~ c3!2", I: "~ d4 ~ e4 ~ c3!3", J: "~ d4 ~ e4 ~ d3 e3 d3",
  K: "[[g2,b2,d3,g3,d4,g4]@3 [d3,a3,d4,f#4]@5]/2", L: "[[b2,f#3,b3,d4,f#4]@3 [g3,c4,e4,g4]@5]/2",
  M: "~ [e3,g3,b3] ~ [e3,g3,b3]", N: "~ [e3,g3,b3] ~ [e3,g3,c4]", O: "~ [d3,f#3,a3] ~ [d3,f#3,a3]",
  P: "~ [d3,f#3,a3] ~ [d3,f#3,b3]", Q: "~ [b2,d3,f#3] ~ [b2,d3,f#3]", R: "~ [c3,e3,g3] ~ [c3,e3,g3]",
  S: "~ [c3,e3,g3] ~ [d3,f#3,a3]", T: "[e3,g3,b3] ~ [e3,g3,b3] ~", U: "[e3,g3,b3] ~ [e3,g3,c4] ~",
  V: "[d3,f#3,a3] ~ [d3,f#3,a3] ~", W: "[d3,f#3,a3] ~ [d3,f#3,b3] ~", X: "[b2,d3,f#3] ~ [b2,d3,f#3] ~",
  Y: "[c3,e3,g3] ~ [c3,e3,g3] ~", Z: "[c3,e3,g3] ~ [d3,f#3,a3] ~",
})).s("gm_electric_guitar_clean").gain(0.35)

// bass · electric bass pick · "Basová kytara (tabulatura)"
const bass = note(`<
  A@16 ~@8 B C D E F G H I B C D E F G H I B C D E F G H I B C D E F G H I J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 B C D E F G H
  I B C D E F G H I B C D E F G H I J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 L@2 M@2 N O P Q L@2 M@2 N O P Q L@2 M@2 N O P Q L@2
  M@2 N O P Q ~@8 B C D E F G H I B C D E F G H I B C D E F G H I B C D E F G H I ~@4
>`.pickRestart({
  A: "[d1 e1@2 d1 e1@2 d1 e1@2 d1 e1@2 d1 e1@3]/2", B: "e2@2 d3 ~ e3 ~ e2!2", C: "~ d3 ~ e3 ~ e2!3",
  D: "d2@2 d3 ~ e3 ~ d2!2", E: "~ d3 ~ e3 ~ d2 e2 d2", F: "b1@2 d3 ~ e3 ~ b1!2", G: "~ d3 ~ e3 ~ b1!3",
  H: "c2@2 d3 ~ e3 ~ c2!2", I: "~ d3 ~ e3 ~ c2!3", J: "[g1@3 d2@5]/2", K: "[b1@3 c2@5]/2", L: "~ e1 ~ e1",
  M: "~ d1 ~ d1", N: "~ b0 ~ b0", O: "~ b0 ~ c1", P: "~ c1 ~ c1", Q: "~ c1 ~ d1",
})).s("gm_electric_bass_pick").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@24 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 C D C D C D C D C D C D C D C ~ A B A B A B A B A
  B A B A B A B A B A B A B A B C D C D C D C D C D C D C D C ~ E A E A E A E A E A E A E A E A E A E A E A E A E A E A
  E A E A ~@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 ~@4
>`.pickRestart({
  A: "x!2 ~@2", B: "x!2", C: "x ~@2 x", D: "~ x ~ x", E: "x",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct(`<
  A@16 ~@7 B C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C E C E C E C E C E C E C E C F C D C D C D
  C D C D C D C D C D C D C D C D C D C E C E C E C E C E C E C E C F C@32 ~@8 C D C D C D C D C D C D C D C D C D C D C
  D C D C D C D C D C D ~@4
>`.pickRestart({
  A: "x!8", B: "~@12 x!4", C: "~ x", D: "~@3 x ~@2 x ~", E: "~@3 x ~@4", F: "~@4 x!2 ~@2",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<~@24 A@47 ~ A@39 ~ A@32 ~@8 A@32 ~@4>".pickRestart({
  A: "x!4",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@71 [~@7 x] ~@39 [~@7 x] ~@76>").gain(0.32)

// drums · crash
const crash = s("cr").struct("<~@31 A ~@7 A ~@7 A ~@7 A ~@23 A ~@7 A ~@7 A ~@63 A ~@7 A ~@7 A ~@7 A ~@4>".pickRestart({
  A: "~ x",
})).gain(0.32)

stack(alto_sax, flute, trombone, electric_guitar_clean, bass, kick, snare, hihat, open_hat, crash)