Strudelify
Hooked On A Feeling cover art

1968

Hooked On A Feeling

B.J. Thomas

KeyA majorTempo126 bpm
0:00/0:00
// Hooked On A Feeling — B.J. Thomas
// 126 bpm, 4/4, key A major. Source: mcgill.
// Generated by strudelify. One cycle = one bar.
setcpm(126/4)

const chords = arrange(
  // intro (8 bars)
  [8, "<A5 E A7 D Dm A Esus E5>"],
  // verse (8 bars)
  [8, "<A E A7 D Dm A Esus E5>"],
  // pre-chorus (4 bars)
  [4, "<A C#7 F#m A7>"],
  // chorus (9 bars)
  [9, "<D E7 A A^7 F#m E [A@2 A^7@2] [F#m7@2 E@2] [E@2 ~@2]>"],
  // verse (8 bars)
  [8, "<A E A7 D Dm A Esus E5>"],
  // verse (8 bars)
  [8, "<A E A7 D Dm A [Esus@2 E@2]!2>"],
  // pre-chorus (4 bars)
  [4, "<A C#7 F#m A7>"],
  // chorus (9 bars)
  [9, "<D E7 A A^7 F#m E [A@2 A^7@2] [F#m7@2 E@2] [E@2 ~@2]>"],
  // trans (5 bars)
  [5, "<A E A7 D Dm>"],
  // pre-chorus (4 bars)
  [4, "<A C#7 F#m A7>"],
  // chorus (8 bars)
  [8, "<D E7 A A^7 F#m E [A@2 A^7@2] [F#m7@2 E@2]>"],
  // outro (16 bars)
  [16, "<A E A7 D Dm A Esus E5 A E A7 D Dm A Esus E5>"],
  // fadeout (8 bars)
  [8, "<A E A7 D Dm A Esus E5>"],
)
const bassline = arrange(
  [8, "<a2 g#2 g2 f#2 f2 e2!3>"],
  [8, "<a2 e2 a2 d2!2 a2 e2!2>"],
  [4, "<a2 c#2 f#2 a2>"],
  [9, "<d2 e2 a2 g#2 f#2 e2 [a2@2 g#2@2] [f#2@2 e2@2] [e2@2 ~@2]>"],
  [8, "<a2 e2 a2 d2!2 a2 e2!2>"],
  [8, "<a2 g#2 g2 f#2 f2 e2!3>"],
  [4, "<a2 c#2 f#2 a2>"],
  [9, "<d2 e2 a2 g#2 f#2 e2 [a2@2 g#2@2] [f#2@2 g#2@2] [e2@2 ~@2]>"],
  [5, "<a2 e2 a2 d2!2>"],
  [4, "<a2 c#2 f#2 a2>"],
  [8, "<d2 e2 a2 g#2 f#2 e2 [a2@2 g#2@2] [f#2@2 g#2@2]>"],
  [16, "<a2 e2 a2 d2!2 a2 e2!2 a2 e2 a2 d2!2 a2 e2!2>"],
  [8, "<a2 e2 a2 d2!2 a2 e2!2>"],
)

// 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)