I figure out what key the song is in once I know the melody. Then I
usually just try the basic I IV V vi chords that most songs use and
listen if it sounds any good.
I think there's nothing wrong with this method. You just need more practice, and you'll get better at it.
Some tips:
- Play the bass note low, loud and clear and make it feel strong to you. Use an instrument that has a strong acoustic bass tone, for example an acoustic piano. I believe that to improve learning, you want to make the musical experience as intense and satisfying as possible. On the piano, try not to play chords with your left hand, because then the bass note will not be very clear, and the chords will sound bad if you play them too low. Play only the bass notes with your left hand, and full chords with your right hand. Sing the melody, if you cannot yet play it at the same time with your right hand.
- Arpeggiate the chords as well as playing them together as chords, to learn to know the chord tones and the melody notes as individual notes on the same playfield. This helps you connect all the components, and it will also help you to hear and play sevenths and other tension notes.
- Play around with chords and try to swap the "correct" chords with substitutes, so you learn to distinguish the possible alternatives in different situations. For example, in any song that you know uses a IV chord, try to replace the IV chords with minor ii chords. It will most probably work just the same, but it will taste a bit different. When you learn the difference it makes to your feelings, you'll also learn to hear when a ii chord is used.
Some chord substitutions or alterations to try in songs, using C major as an example key.
- (already mentioned) Substitute any chord with its relative minor/major, e.g. C <-> Am, F <-> Dm, G <-> Em.
- Add a seventh to a dominant chord, or leave out a seventh if there is one. If there's a G - C combination, try G7 - C. Or if there's a G7 - C, try just G - C.
- Substitute a dominant seventh chord with a chord where the bass note is kept the same, but the rest of the chord is moved down by a whole tone. E.g. G7 becomes F/G or F6/G or Fmaj7/G. Or if there's a C7 - F movement, try Bb/C - F, Bb6/C - F or Bbmaj7/C - F.
- Another variation of the above: replace a 7th chord with a 9th chord, and play the 9th as a minor+bass note combo. E.g. G7 becomes Dm/G or Dm7/G. C7 becomes Gm/C
- Bass inversions: keep the chord, but move the bass note to a different chord tone. E.g. for C you get C/E and C/G as alternatives.
- Add a sixth to any major chord. C -> C6, F -> F6, G -> G6
- Add a major seventh to any major chord. C -> Cmaj7, F -> Fmaj7, G -> Gmaj7 (for G this adds an out-of-scale F# note, which alters the chord's harmonic function a little bit)
- Add a ninth to any maj7 chord, e.g. Cmaj7 -> Cmaj9
- Add a seventh to any minor chord. Am -> Am7, Dm -> Dm7, Em -> Em7
- Add a seventh and a ninth to any minor chord. Am -> Am9, Dm -> Dm9, Em -> Em9
- Add a second to any chord as filling, for example in a C major, add a D note. (For Em this adds an out-of-scale F# note. For E major, it effectively makes the scale A melodic minor)
- Make any chord a sus4 and resolve it to the original chord. For C you alternate between Csus4 and C. For Am you alternate between Asus4 and Am. This might step on the melody's toes a bit in some cases, but it's kind of the whole point of these exercises to learn how different changes sound like and how they work with the melody.
- Replace Dm with D major, if it's OK with the melody.
- Make Dm stronger by adding a sixth: Dm -> Dm6
- Make a Dm - E7 - Am progression stronger: Dm6/B - E7 - Am (notice the bass steps?)
- Substitute any minor with a m6. For Am it adds an out-of-scale F#, but it's a nice effect, if the melody allows it.
- Replace a dominant seventh with its tritone substitute, e.g. G7 -> Db7 or Db9 or Db13, before going back to the tonic C major. Or if there's a C7 - F progression, use C7 - Gb9 - F. This is a standard jazz trick that's sometimes heard in pop tunes as well.
- If there's a Em - Dm progression, insert a D#m as a transition chord in between them, so Em - D#m - Dm.
- Replace any dominant seventh with a diminished seventh a semitone higher. E.g. replace G7 with G#dim7, or Bdim7, Ddim7 or Fdim7. Either keep the bass in G or not. This is a very common trick used in pop/jazz music. Another example: if you have Am - A7 - Dm, replace the A7 with e.g. C#dim/A or just C#dim. (The important thing to notice here is that the dominant chord's third and seventh are kept in the dim7 replacement, e.g. for G it's B and F, for E it's G# and D)
- If there's a "secondary dominant" trick like Am - A7 - Dm, make the movement even deeper and do Am - Gm6/E - A7 - Dm instead. Or even Am - Gm6/E - Gm6/A - C#dim - Dm.
- Replace the IV chord F with a minor Fm, if the melody allows this. This is actually a very commonly used trick, but it might be hard to figure out what happened, if you've never played it yourself.
- The same trick but more obfuscated: instead of Fm you go a step further and move the bass to Bb: Fm/Bb (or Bb9).
- For a F - G - C progression, play F/G - G/F - C.
- For a G - F - C progression, play G/F - F/G - C.
- Substitute any chord with any other diatonic chord, but keep the bass note the same like as a pedal tone. Instead of just C, play C - G/C - F/C - Dm/C.
- Use very sparse voicings: play only the bass note and the third of a chord
- Harmonize each melody note by mechanically adding a sixth below with your right hand (if you're playing piano). Don't care about what the chord symbols say. Then add a bass note - try the bass notes from the chord symbols. Think about what chords you could create by adding a note (or two) somewhere between the melody and the sixth below it.
The substitution tricks above are meant to keep the harmonic function essentially the same, without making the harmony lean to a different side. In addition to that, there's a whole new world of substitutions available when you start turning the harmony around differently than in the chords you remember. For "Happy Birthday" in C, the version you've heard might start with C - G - G - C. But instead of that you could do C - Dm6 - G - C, which first leans to the "subdominant side" instead of going straight to the dominant G - even though the melody is the strongly melodic B note. For strong melodies, the melody notes clearly suggest the harmony, so it needs heavier trickery to turn the harmony around without making it sound unnatural. But some melodies are more ambivalent - for example those that use just the pentatonic scale's notes C-D-E-G-A and avoid the 7th and 4th scale degree notes B and F, which would strongly suggest either a dominant or subdominant chord.
I think that if you learn to do and recognize many chord substitution tricks, and you learn when they can or cannot be used to support a given melody, and what they do to the overall harmonic "turns", you develop a very profound understanding of harmony in general. And then you can instantly recognize the chords used in pop songs you hear.