Strudelify
Under The Bridge cover art

1991 · Blood Sugar Sex Magik

Under The Bridge

Red Hot Chili Peppers

KeyE majorTempo80 bpm
0:00/0:00
// Under The Bridge — Red Hot Chili Peppers
// 80 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 "Guitar 2" electric guitar clean (copy of ch 1 "Guitar 1" acoustic guitar steel)
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Dist. Guitar 1.
setcpm(80/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, A@4 for four bars: edit a riff to change every repeat.

// chords · acoustic guitar steel · "Guitar 1"
const acoustic_guitar_steel = note(`<
  A@2 B@2 C@6 D E D F D G D F H@2 D E D F D E D F H@2 I J I J I J I J K L K M D E D F D E D F H@2 I J I J I J I J K L K
  M I J I J I J I J K L K M N@2 ~@2
>`.pickRestart({
  A: "[~@21 d4@2 ~@4 d3 ~ c#3 b2 a2, ~@7 d3@6 ~@3, ~@2 f#3 ~, ~@18 a3@5 e4@6 ~@3]/2",
  B: "[~@7 f#3@2 ~@5 f#3@4 ~@7 d4@2 e4@5, f#2@17 ~@15, ~@2 a2@15 ~@6 a3@5 ~@4, ~@5 c#3@12 ~ d3@12 ~@2, ~@9 a3@9 ~@3 f#3@8 ~@3]/2",
  C: "[[d3,f#3]@5 ~@6 f#3@2 ~@5 f#3@5 ~@7 d4@2 e4@5 d3 c#3 b2 a2 ~@7 f#3@2 ~@5 f#3@4 ~@7 d4@2 ~@5 [d3,f#3]@5 ~@7 f#3@2 ~@4 f#3@5, ~@5 f#2@17 ~@19 f#2@17 ~@20 f#2@17 ~, ~@7 a2@15 ~@5 a3@5 ~@18 a3@9 ~@3 f#3@8 ~@12 c#3@12 ~@2, ~@9 c#3@12 ~@2 d3@12 ~@8 a2@15 ~@6 a3@5 e4@6 ~@12 a3@9, ~@14 a3@9 ~@2 f#3@8 ~@13 c#3@12 ~ d3@12 ~@9 a2@15 ~]/6", // D
  D: "[e4,g#4,b4]@3 ~@3 [b3,d#4,f#4]@8 ~@2", E: "[c#4,e4,g#4]@3 ~@3 [g#3,b3,e4] ~@3 [a3,c#4,e4]@6",
  F: "[c#4,e4,g#4]@3 ~@3 [e3,a3,c#4]@6 ~@4", G: "[c#4,e4,g#4]@3 ~@3 [g#3,b3,e4] ~@2 [a3,c#4,e4]@6 ~",
  H: "[[e3,d#4,g#4,b4]@29 ~@3]/2", I: "~@2 [c#4,e4,g#4] ~@3 [e4,g#4,b4] ~ [e4,g#4,b4] ~@3 [e4,g#4,b4]@3 ~",
  J: "[b3,d#4,f#4]!4 [b3,d#4,f#4]@4 ~@2 [f#4,a4,c#5] ~ [f#4,a4,c#5]@2 ~@2", K: "[e3,g#3,b3]@2 ~ [b2,d#3,f#3]@4 ~",
  L: "[c#3,e3,g#3]@4 ~@2 [g#2,c3,d#3]@3 ~ [a2,c#3,e3] ~ [a2,c#3,e3]@4", M: "[c#3,e3,g#3]@2 ~ [a2,c#3,e3]@3 ~@2",
  N: "[[e3,g#3,b3]@25 ~@7]/2", // E
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.8)

// chords · distortion guitar · "Dist. Guitar 1"
const distortion_guitar = note("<~@31 A ~ A ~ A ~ A ~@15 A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~@8>".pickRestart({
  A: "~@8 [f#4,a4,c#5]@7 ~", // F#m
})).s("gm_distortion_guitar").gain(0.3)

// bass · acoustic bass · "Bass Guitar"
const bass = note(`<
  ~@30 A B A B A B A B C D E F C D E F C D E F G@2 A B A B A B A B C D E F A B A B A B A B C D E F H@3 ~
>`.pickRestart({
  A: "~ c#2 ~ c#3 ~ e3 c#3 ~", B: "b1@5 ~ c#2@2 e2@2 f#2 ~ f#2@2 ~@2", C: "e2@6 b1@9 ~", D: "~@6 g#2@4 a2 ~ a2@4",
  E: "e3@5 ~ b2@10", F: "c#3@6 a2@9 ~", G: "[e2@15 ~]/2", H: "e2/3",
})).s("gm_acoustic_bass").gain(0.3)

// bass · acoustic bass · "Bass Guitar" · soft notes
const bass_soft = note("<~@30 A ~ A ~ A ~ A ~@15 A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~@9>".pickRestart({
  A: "~@7 b2",
})).s("gm_acoustic_bass").gain(0.15)

// other · overdriven guitar · "Lead Guitar"
const overdriven_guitar = note("<~@38 A B A C ~@18 A B A C ~@8 A B A C ~@4>".pickRestart({
  A: "~@10 b4@2 [d#4,f#4] b3@2 ~", B: "c#4@6 g#3@4 a3 ~ a3@4", C: "c#4@3 a3@5",
})).s("gm_overdriven_guitar").gain(0.35)

// drums · kick
const kick = s("bd").struct(`<
  ~@30 A B A B A B A B C D C D C D C D C D C D C D A B A B A B A B C D C D A B A B A B A B C D C D E ~@3
>`.pickRestart({
  A: "~ x ~ x ~@2 x ~", B: "~@2 x ~ x!2 ~ x", C: "x ~@2 x ~@4", D: "~@3 x ~ x!2 ~", E: "x",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@18 A B C@8 D@2 C@29 E ~@2 F C ~@16>".pickRestart({
  A: "~ x!3", B: "x!4", C: "~ x ~ x", D: "~@4 x ~@2 x ~@4 x ~@3", E: "~ x ~@2", F: "~@3 x",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@59 A B C B C B C B C B C B C B C B C ~@4>".pickRestart({
  A: "~@10 x ~ x!3 ~", B: "~ x ~ x", C: "~@4 x ~@5 x ~ x!3 ~",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~@18 [x!8]!42 ~@20>").gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@60 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3>".pickRestart({
  A: "x",
})).gain(0.45)

// drums · ride
const ride = s("rd").struct("<~@60 A B A B A B A B A B A B A B A B C ~@3>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x",
})).gain(0.5)

stack(
  acoustic_guitar_steel, distortion_guitar, bass, bass_soft, overdriven_guitar, kick, rim, snare, hihat, crash, ride
)

More by Red Hot Chili Peppers