After several months of experimenting I have learned more about Bluetooth profiles that are supported by my phone: HSF (headset) and A2DP (advanced audio distribution). First profile allows to stream low-quality audio in both directions (e.g. for audio calls on the cell or Skype) and the other one is designed to provide high-quality single-direction audio (e.g. for listening to music).
My Nokia phone perfectly handles these two modes since it knows definitely when I need to switch between profiles (HSF when somebody is calling, A2DP when listing to music). However, it's a different story with a PC. There are many VoIP applications (Skype, VoipDiscount etc.) that may want to use HSF while other audio applications (e.g. Winamp, VLC) will want to use A2DP. Is it not absolutely clear how should an operating system support that. One may say that they should switch to HSF when VoIP applications demand it and switch back when the conversation is over. This sounds like a good solution but it would provide inequality for apps, while the operating system must remain neutral.
Best option would be to allow the user to select from a number of policies which should be used in such conflicts. Unfortunately in all operating systems that I've tried (Mac OS, Ubuntu, Windows 7) there is no support for that. Mac and Ubuntu are better since they at least provide a way to set profile manually, which is not possible on Windows.
EDIT: Android handles this nicely. They have a special permission for apps called "Phone", which allows the app to switch the phone into HSF mode when needed, but otherwise the phone stays in A2DP. Futhermore, apps with "Phone" permission can also stop music playing from other apps when the call is in progress. This way, the user gets to choose which apps can have the permission and thus OS stays neutral.
Your music is likely going through several transformations:
- Digital music file
- Converted to analog sound wave (music player on laptop)
- Converted back to digital signal (Bluetooth encoder)
- Converted back to analog sound wave (Bluetooth decoder)
- Turned into physical sound waves (Headset/speaker system)
The YMB is performing step #4. Each step introduces audio quality degradation.
For maximum audio quality, some Bluetooth A2DP receivers understand more codecs besides the single, required SBC codec. This can eliminate steps 2 and 3.
Also my guess is the Bluetooth SBC codec does not have the best audio quality. Ideally, the audio codec used should be lossless, but even lossy codecs like MP3 can sound acceptable. I am not sure if any Bluetooth products that support lossless audio have been released.
Finally, the other stages of the list above must all understand the Bluetooth protocol properly (music player, bluetooth encoder).
So, to answer your question: find a Bluetooth receiver that understands a better codec than SBC (ideally lossless). Make sure the rest of your Bluetooth "stack" also understands the same, better codecs.
More info: Advanced Audio Distribution Profile#Support of Codecs
Update: As I said, a lossless Bluetooth audio solution may not be availalbe (I've found a lot of announcements, but no actual products) but it may also be overkill unless you're a serious audiophile. Simply using a non-SBC codec may be enough, but few products are marketed with those technical details.
You may get a lot of returns simply by ensuring that your YMB and A2DP source are using a non-SBC codec. (The (software) Bluetooth encoder on your laptop may simply not support the proper codec. I'd check into this, since you said your other sources sounded acceptable. Your results may vary with the type of audio file you are playing!)
Also, I considered alternatives to Bluetooth A2DP like wireless audio via 802.11. One such solution is the Apple Airport Express with Airtunes. (Plus software for non-iTunes/Apple applications.)
Best Answer
I bought a USB based Bluetooth 4.0 device: Plugable USB-BT4LE
I use Windows 7 Enterprise.
I also had your problem, only with a generic set of Bluetooth headphones. This set of headphones does not have a microphone. The Windows Bluetooth utility decided that it had one, anyway.
It became apparent that either the Broadcom drivers, or the Windows Bluetooth management subsystem were forcing the headphones into some sort of fallback, low-quality mode.
To fix it here is what I had to do: