I just want to add that in most cases, they are interchangeable. They only differentiate themselves when you want to describe an abstract concept or objective item. For example, 看到 is for abstract concepts, and has a fuzzy/unclear feel about it. For example, 我梦里看到一棵树， 我看到一则新闻。看见 is for describing an object, has a obvious feel about it. 我看见一棵树， 我看见一张纸。You could also replace them with 听到/听见 for something abstract/ objective respectively (听到铃声/听见雨声).
闻到 has a general feel about it, though occasionally I would use 闻见 as well. However, because smell is in my opinion, covers a wide area (even if it comes from a direct source, such as body odour or a rose thrust into my nostrils), I would just use 闻到 most of the time.
To tell you the truth, I could just change the positions in all of your examples during normal speech and it wouldn't sound too out of place.
Finally, to round off the discussion, 我没听到这首歌 has a "the song was played, but I didn't catch it" kind of feel about it. (Some would say that it is technically incorrect, but to tell you the truth if you ask them about it they probably wouldn't be able to explain it). To save you the heartache, just use 我没听过这首歌.