Present-Perfect: "hadn't heard" vs. "haven't heard"

One of the uses of the present perfect is to talk about very recent events. Since you want to tell your friend about the song immediately, the present perfect is the right choice. You would normally use the past perfect to describe hearing the song at some time considerably before the time of speaking.


It seems to me that there are three choices here.

I haven't heard a song this good for a while.
I hadn't heard a song this good for a while.
I hadn't heard a song that good for a while.

For the first two, this good places the song in the present or immediate past. Both verbs work: haven't works because it's referencing the time before you heard the current song, and hadn't works because it's referencing the last time you heard a song as good as this one.

If you didn't hear the song you're talking about recently, you need to say that good, and the only verb that works in this case is hadn't.


I am going to disagree with @Carlo_R. The second option is appropriate if you are describing a past event and you want to place the act of listening to the song quite specifically in that context. In the situation you describe, the first form is more appropriate. For one thing, if the first thing you do is tell your friend, you haven't heard a song as good in the interim. To use the second form would imply that you had (not least because it is over-formal usage for an impromptu conversation with a friend).


Past perfect for an event A is only used in relation to a past event B expressing the idea that event A was before event B. As your sentence with past perfect does not mention a second past event it is wrong use of past perfect.

Example: I had studied Italian for some time before I went to Italy.

"I went to Italy" is past event B. "I had studied Italian" is past event A lying before event B.

Expressing the exact order of past events is mainly a thing of written language. In normal colloquial speech this chronological order of events is often neglected.