Strudelify
Surrender cover art

1978 · Heaven Tonight

Surrender

Cheap Trick

KeyB♭ majorTempo135 bpm
0:00/0:00
// Surrender — Cheap Trick
// 135 bpm, 4/4, key Bb major. Source: mcgill.
// Generated by strudelify. One cycle = one bar.
setcpm(135/4)

const chords = arrange(
  // pre-intro (1 bars)
  [1, "<~>"],
  // intro (8 bars)
  [8, "<Bb9sus!2 Bb!2 Bb9sus!2 Bb!2>"],
  // verse (16 bars)
  [16, "<B F# E B!2 F# E B E F# B!2 E F# B!2>"],
  // chorus (11 bars)
  [11, "<B G#m7 F# E B G#m7 F# E!4>"],
  // interlude (8 bars)
  [8, "<B9sus!2 B!2 B9sus!2 B!2>"],
  // verse (16 bars)
  [16, "<B F# E B!2 F# E B E F# B!2 E F# B!2>"],
  // chorus (11 bars)
  [11, "<B G#m7 F# E B G#m7 F# E!4>"],
  // interlude (8 bars)
  [8, "<B9sus!2 B!2 B9sus!2 B!2>"],
  // verse (16 bars)
  [16, "<C G F C!2 G F C F G C!2 F G C!2>"],
  // chorus (11 bars)
  [11, "<C Am7 G F C Am7 G F!4>"],
  // outro (8 bars)
  [8, "<C F C G C F C G>"],
  // chorus (20 bars)
  [20, "<C Am7 G F C Am7 G F C Am7 G F C Am7 G F C Am7 G F>"],
  // fadeout (8 bars)
  [8, "<C Am7 G F C Am7 G F>"],
)
const bassline = arrange(
  [1, "<~>"],
  [8, "<bb2!8>"],
  [16, "<b2 f#2 e2 b2!2 f#2 e2 b2 e2 f#2 b2!2 e2 f#2 b2!2>"],
  [11, "<b2 g#2 f#2 e2 b2 g#2 f#2 e2!4>"],
  [8, "<b2!8>"],
  [16, "<b2 f#2 e2 b2!2 f#2 e2 b2 e2 f#2 b2!2 e2 f#2 b2!2>"],
  [11, "<b2 g#2 f#2 e2 b2 g#2 f#2 e2!4>"],
  [8, "<b2!8>"],
  [16, "<c2 g2 f2 c2!2 g2 f2 c2 f2 g2 c2!2 f2 g2 c2!2>"],
  [11, "<c2 a2 g2 f2 c2 a2 g2 f2!4>"],
  [8, "<c2 f2 c2 g2 c2 f2 c2 g2>"],
  [20, "<c2 a2 g2 f2 c2 a2 g2 f2 c2 a2 g2 f2 c2 a2 g2 f2 c2 a2 g2 f2>"],
  [8, "<c2 a2 g2 f2 c2 a2 g2 f2>"],
)

// chords · gm_piano
const keys = chord(chords).voicing().s("gm_piano").gain(0.8)
// bass · gm_electric_bass_finger
const bass = note(bassline).s("gm_electric_bass_finger").gain(0.9)
// drums
const drums = s("[bd hh] [sd hh] [bd hh] [sd hh]").gain(0.8)

stack(keys, bass, drums)

More by Cheap Trick