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 48-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: edit a riff to change every repeat.

// chords · acoustic guitar steel · "Guitar 1"
const acoustic_guitar_steel = note(`<
  A@2 B@8 C D C E C F C E G@2 C H C E C D C E G@2 I J I J I J I J K L K M C H C E C D C E G@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: "[~@62 d4@7 ~@13 d3@4 c#3@3 b2@3 ~ a2@3, ~@41 d3@36 ~@19, ~@48 f#3@25 ~@23, ~@55 a3@14 e4@19 ~@8]/2",
  B: "[~@21 f#3@6 ~@14 f#3@14 ~@20 d4@7 ~@14 [d3,f#3]@14 ~@20 f#3@7 ~@14 f#3@14 ~@20 d4@7 ~@14 d3@3 c#3@4 b2@3 a2@3 ~@21 f#3@7 ~@14 f#3@13 ~@21 d4@7 ~@14 f#3@13 ~@21 f#3@7 ~@13 f#3@14, f#2@51 ~@31 e4@19 ~@36 a3@27 ~@7 f#3@25 ~@30 a2@44 ~@18 a3@15 ~@40 c#3@37 ~@4, ~@7 a2@44 ~@18 a3@15 ~@39 c#3@37 ~@5 d3@36 ~@18 f#2@51 ~@32 e4@19 ~@36 a3@27, ~@14 c#3@37 ~@4 d3@36 ~@19 f#2@51 ~@31 e4@19 ~@36 a3@27 ~@7 f#3@25 ~@30 a2@44 ~@4, ~@27 a3@27 ~@8 f#3@25 ~@30 a2@44 ~@17 a3@15 ~@40 c#3@37 ~@4 d3@36 ~@5 d3@14 f#2@51 ~@4]/8", // D
  C: "[e4,g#4,b4]@5 ~@4 [b3,d#4,f#4]@12 ~@3", D: "[c#4,e4,g#4]@5 ~@4 [g#3,e4] ~@5 [a3,c#4,e4]@9, ~@9 b3@2 ~@13",
  E: "[c#4,e4,g#4]@5 ~@4 [e3,a3,c#4]@9 ~@6", F: "[c#4,e4,g#4]@5 ~@4 [g#3,e4] ~@4 [a3,c#4,e4]@9 ~, ~@9 b3@2 ~@13",
  G: "[[e3,d#4,g#4,b4]@29 ~@3]/2", H: "[c#4,e4,g#4]@10 ~@8 [g#3,e4]@2 ~@9 [a3,c#4,e4]@18 ~, ~@9 b3@2 ~@13",
  I: "~@7 e4@3 ~@9 b4@3 ~@3 b4@3 ~@9 b4@9 ~@2, ~@2 [c#4,g#4] ~@3 [e4,g#4] ~ [e4,g#4] ~@3 [e4,g#4]@3 ~", // C#5 E
  J: "~ b3@2 ~ b3@2 ~ b3@2 ~ b3@2 ~ b3@12 ~@6 c#5@3 ~@3 a4@6 ~@5, [d#4,f#4]!4 [d#4,f#4]@4 ~@2 [f#4,a4] ~ [f#4,c#5]@2 ~@2", // D#m F#m F#5
  K: "~ e3@12 ~@6 b2@24 ~@5, [g#3,b3]@4 ~@2 [d#3,f#3]@9 ~", // G#m D#m
  L: "~ e3@12 ~@6 c3@9 ~@3 c#3@3 ~@3 a2@9 ~@2, [c#3,g#3]@4 ~@2 [g#2,d#3]@3 ~ [a2,e3] ~ [c#3,e3]@4", // C#5 G#5 A5 C#m
  M: "~ e3@12 ~@6 c#3@17 ~@12, [c#3,g#3]@2 ~ [a2,e3]@3 ~@2", N: "[[e3,g#3,b3]@37 ~@11]/2",
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.8)

// chords · distortion guitar · "Dist. Guitar 1"
const distortion_guitar = note("<~@30 A B A B A B A B ~@14 A B A B A B A B ~@4 A B A B A B A B ~@8>".pickRestart({
  A: "~@19 e4@23 ~@6, ~@3 b4@4 ~", B: "~@25 c#5@22 ~, ~@12 [f#4,a4]@11 ~",
})).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@17 ~ b1@28 ~@2", D: "~@6 g#2@4 a2 ~ a2@4",
  E: "e3@16 ~@2 b2@29 ~", F: "c#3@6 a2@9 ~", G: "[e2@89 ~@7]/2", H: "[e2@143 ~]/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 C D ~@18 A B C D ~@8 A B C D ~@4>".pickRestart({
  A: "~@30 b4@5 ~@2 d#4@3 b3@7 ~, ~@12 f#4 ~@3", B: "c#4@17 ~ g#3@11 ~ a3@2 ~@4 a3@12",
  C: "~@30 b4@6 ~ d#4@3 b3@6 ~@2, ~@18 f#4 ~@5", D: "c#4@17 ~ a3@30",
})).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