Strudelify
Scar Tissue cover art

1999 · Californication

Scar Tissue

Red Hot Chili Peppers

KeyD minorTempo88 bpm
0:00/0:00
// Scar Tissue — Red Hot Chili Peppers
// 88 bpm, 4/4, key D 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 79 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/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.

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  A B C D@7 E@8 F@4 G H I J@7 K@8 L@4 M N O M@2 N O P@7 F@4 G H Q G@2 H Q G@2 H Q G@2 H R S@2
>`.pickRestart({
  A: "f3@4 a4@2 f3 a4 f3 a4 f3 a4@3 [c3,e4] ~", B: "[c3,e4] [d3,f4]@3 f4@2 d3 f4 d3 f4 d3@2 f4 e4 [c3,e4]@2",
  C: "f3@4 a4@2 f3 a4 f3 a4 f3 a4 ~ g4 ~@2",
  D: "[[c3,e4] [d3,f4]@7 g4 f4 g4 f4 e4 f4 f3@4 a4@2 f3 a4 f3 a4 f3 a4@3 [c3,e4] ~ [c3,e4] [d3,f4]@3 f4@2 d3 f4 d3 f4 d3@2 f4 e4 [c3,e4]@2 f3@4 a4@2 f3 a4 f3 a4 f3 d5 ~ c5@3 f4@4 f4@3 f4@2 e4@2 d4@2 c4@3 f3@4 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4] d3@2 [c3,g3,c4]@3 [g3,c4]@3 f3@2]/7", // C Dm C Dm C Am C5 D5 …
  E: "[~@2 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4] d3@2 [c3,g3,c4]@3 [g3,c4]@3 f3@4 a4@2 f3 a4 f3 a4 f3 a4@3 [c3,e4] ~ [c3,e4] [d3,f4]@3 f4@2 d3 f4 d3 f4 d3@2 f4 e4 [c3,e4]@2 f3@4 a4@2 f3 a4 f3 a4 f3 d5 ~ c5@3 e4 f4@3 f4@3 f5 ~ e5 ~ d5 ~ c5@3 f3@4 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4] d3@2 [c3,g3,c4]@3 [g3,c4]@3 f3@2]/8", // Am C5 D5 Dm D5 C5 C Dm …
  F: "[~@2 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4] d3@2 [c3,g3,c4]@3 [g3,c4]@3 f3@4 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4] [a3,d4,f4]@2 [a3,d4]@3 [a3,d4,f4]@2 [a3,d4]@2 [d3,a3]@2]/4", // Am C5 D5 Dm D5 C5 Am C5 …
  G: "[a3,d4]@2 [a3,d4,f4]@2 [a3,d4] [a3,d4,f4]@2 [a3,d4]@3 [a3,d4,f4]@2 [a3,d4]@2 [d3,a3]@2", // D5 Dm D5 Dm D5 Dm D5
  H: "[a3,d4]@2 [a3,d4,f4]@2 [a3,d4] [a3,d4,f4]@2 [a3,d4]@3 [a3,d4,f4]@2 [a3,d4]@2 [c3,g3]@2", // D5 Dm D5 Dm D5 Dm D5 C5
  I: "[g3,c4]@2 [c3,g3]@2 [g3,c4]@2 [g3,c4] [c3,g3]@2 [g3,c4]@5 [d3,a3]@2", // C5 D5
  J: "[[a3,d4]@2 [a3,d4,f4]@2 [a3,d4] [a3,d4,f4] [d3,a3]@4 [e3,b3]@4 f3@4 a4@2 f3 a4 f3 a4 f3 a4@3 [c3,e4] ~ [c3,e4] [d3,f4]@3 f4@2 d3 f4 d3 f4 d3@2 f4 e4 [c3,e4]@2 f3@4 a4@2 f3 a4 f3 a4 f3 d5 ~ c5 e4 ~ [e4,g4] [f4,a4]@3 a4@3 b4 ~ c5 ~ b4 ~ a4@3 f3@4 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4] d3@2 [c3,g3,c4]@3 [g3,c4]@3 f3@2]/7", // D5 Dm D5 Dm D5 E5 C Dm …
  K: "[~@2 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4] d3@2 [c3,g3,c4]@3 [g3,c4]@3 f3@4 a4@2 f3 a4 f3 a4 f3 a4@3 [c3,e4] ~ [c3,e4] [d3,f4]@3 f4@2 d3 f4 d3 f4 d3@2 f4 e4 [c3,e4]@2 f3@4 a4@2 f3 a4 f3 a4 f3 d5 ~ c5 e4 ~ [e4,g4] [f4,a4]@3 a4@3 e5 ~ d5 ~ c5 ~ a4@3 f3@4 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4] d3@2 [c3,g3,c4]@3 [g3,c4]@3 f3@2]/8", // Am C5 D5 Dm D5 C5 C Dm …
  L: "[~@2 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4] d3@2 [c3,g3,c4]@3 [g3,c4]@3 f3@4 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [d4,f4]@2 [a3,d4] [d4,f4]@2 [a3,d4]@3 [d4,f4]@2 [d4,f4]@2 d4 a3]/4", // Am C5 D5 Dm D5 C5 Am C5 …
  M: "a3!2 d4 a3!2 d4 a3 d4 a3!2 d4 a3!3 d4 a3", N: "a3!2 d4 a3!2 d4 a3 d4 a3!2 d4 a3!3 c4 g3",
  O: "g3!2 c4 g3!2 c4 g3 c4 g3!2 c4 g3!3 d4 a3",
  P: "[a3!2 d4 a3!2 d4 [d3,a3]@4 [e3,b3]@4 f3@4 a4@2 f3 a4 f3 a4 f3 a4@3 [c3,e4] ~ [c3,e4] [d3,f4]@3 f4@2 d3 f4 d3 f4 d3@2 f4 e4 [c3,e4]@2 f3@4 a4@2 f3 a4 f3 a4 f3 d5 ~ c5@3 f4@4 f4@3 f4@2 e4@2 d4@2 c4@3 f3@4 [a3,c4]@3 [a3,c4] [a3,c4]@2 [c3,g3,c4]@2 a2@2 [d3,a3]@2 [a3,d4]@4 [a3,d4,f4]@2 [a3,d4,f4] [a3,d4] d3@2 [c3,g3,c4]@3 [g3,c4]@3 f3@2]/7", // D5 E5 C Dm C Am C5 D5 …
  Q: "[g3,c4]@2 [c3,g3]@2 [g3,c4]@2 [g3,c4] [c3,g3]@2 [g3,c4]@3 [c3,g3]!2 [d3,a3]@2", // C5 D5
  R: "[g3,c4]@2 [c3,g3]@2 [g3,c4]@2 [c3,g3]@5 [g3,c4]@2 ~ [c3,g3]@2, ~@13 [g3,c4]@2 ~", // C5
  S: "[~@2 [d3,a3,d4,f4]@27 ~@3]/2", // Dm
})).s("gm_electric_guitar_clean").gain(0.52)

// bass · electric bass finger · "Bass"
const bass = note("<A B C D@8 E@8 F@7 G@8 H@8 I@8 J@8 K@8 L@8 M@3 N@2>".pickRestart({
  A: "f2@3 f2!2 f2@2 [c2,e3]", B: "[c2,e3] [d2,f3]@5 d2@2 d2@2 d2@4 c2@2", C: "f2@3 f2!3 f2@2",
  D: "[[c2,e3] [d2,f3]@9 f2 d2 c2@2 f2@4 f2@6 a1@4 [c2,e3]@2 [c2,e3] [d2,f3]@3 d2@3 d2@3 f2 ~ d2 ~ c2@2 f2@4 f2@3 a1 ~@2 c2 ~@3 c2 ~ [c2,e3] [d2,f3]@5 d2@2 d2 a1@2 c2@2 d2 c2@2 f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@6 f2 ~ d2 ~ c2 ~ f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2]/8", // C Dm C Dm C Dm
  E: "[~@2 d2@6 f2 ~ d2 ~ c2@2 f2@4 f2@6 a1@4 [c2,e3]@2 [c2,e3] [d2,f3]@3 d2@3 d2@3 f2 ~ d2 ~ c2@2 f2@4 f2@3 a1 ~@2 c2 ~@3 c2 ~ [c2,e3] [d2,f3]@3 d2@3 d2@2 f2@2 d2@2 c2@3 f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@6 f2 ~ d2 ~ c2 ~ f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2]/8", // C Dm C Dm
  F: "[~@2 d2@6 f2 ~ d2 ~ c2 ~ f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@4 f2@4 f2@4 d4@4 d4@3 d4 ~@2 d4@3 c4@3 a3@4 a3@3 a3 ~@2 a3@3 a3@3 g3@4 e3@3 c3 ~@2 c3@4 a2@2 d3@4 d3@4 d3@2 ~@2 e2@2 ~@2 f2@2]/7",
  G: "[~@2 f2@3 f2@3 a1@4 [c2,e3]@2 [c2,e3] [d2,f3]@3 d2@3 d2@3 f2 ~ d2 ~ c2@2 f2@4 f2@3 a1 ~@2 c2 ~@3 c2 ~ [c2,e3] [d2,f3]@5 d2@2 d2 a1@2 c2@2 d2 c2@2 f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@6 f2 ~ d2 ~ c2 ~ f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@6 f2 ~ d2 ~ c2 ~ f2@2]/8", // C Dm C Dm
  H: "[~@2 f2@6 a1@4 [c2,e3]@2 [c2,e3] [d2,f3]@3 d2@3 d2@3 f2 ~ d2 ~ c2@2 f2@4 f2@3 a1 ~@2 c2 ~@3 c2 ~ [c2,e3] [d2,f3]@5 d2@2 d2 a1@2 c2@2 d2 c2@2 f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@6 f2 ~ d2 ~ c2 ~ f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@6 f2 ~ d2 ~ c2 ~ f2@2]/8", // C Dm C Dm
  I: "[~@2 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@4 f2@4 f2@4 d4@4 d4@3 d4 ~@2 d4@3 c4 ~@2 a3@4 a3@3 a3 ~@2 a3@4 a3@2 g3@4 e3@3 c3 ~@2 c3@5 a2 d3@4 d3@3 d3 ~@2 d3@6 d4@4 d4@3 d4 ~@2 e4@3 c4@3 a3@4 a3 c4 ~ d4 ~ c4 ~ a3@3 c4@2 g3@2]/8",
  J: "[~@2 e3@3 c3 ~@2 c3@5 a2 d3@4 d3@4 d3@4 e3@4 f2@4 f2@6 a1@4 [c2,e3]@2 [c2,e3] [d2,f3]@3 d2@3 d2@3 f2 ~ d2 ~ c2@2 f2@4 f2@3 a1 ~@2 c2 ~@3 c2 ~ [c2,e3] [d2,f3]@5 d2@2 d2 a1@2 c2@2 d2 c2@2 f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@6 f2 ~ d2 ~ c2 ~ f2@2]/8", // C Dm C Dm
  K: "[~@2 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@6 f2 ~ d2 ~ c2 ~ f2@4 f2@6 a1 ~@2 c2 ~@2 c2 d2@3 d2@4 f2@4 f2@4 d4@4 d4@3 d4 ~@2 d4@3 c4@3 a3@4 a3@3 a3 ~@2 a3@2 g3@2 e3@2 c3@4 c3@3 c3 ~@2 c3@5 a2 d3@4 d3@3 d3 ~@2 d3@6 d4@2]/8",
  L: "[~@2 d4@3 d4 ~@2 e4@3 c4@3 a3@4 a3 c4 ~ d4 ~ c4 ~ a3@3 c4@2 g3@4 e3@3 c3 ~@2 c3@5 a2 d3@4 d3@3 d3 ~@2 d3@6 d4@4 d4@3 d4 ~@2 e4@3 c4@3 a3@4 a3 c4 ~ d4 ~ c4 ~@2 d4 c4 a3@2 c3@4 c3@3 c3 ~@2 c3@5 a2 d3@4 d3@3 e3 ~@2 d3@6 d4@2]/8",
  M: "[~@2 d4@3 d4 ~@2 d4@3 c4@3 a3@4 a3 c4 ~ d4 ~ c4 ~ d4 ~ c4@3 g3@4 e3@4 c3@3 e2@2 f2@2 ~ c2@2, ~@45 e2@2 ~]/3",
  N: "[~@2 d2@27 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.45)

stack(electric_guitar_clean, bass)

More by Red Hot Chili Peppers