Since Vista’s first release I’ve been puzzling over why audio in Vista is prone to glitches, when it is meant to be fundamentally better than it was in Windows XP.
I’ve posted previously on the subject:
I myself suffered from this. When I stuck a CD in my Vista PC back in November 2006, it would not play smoothly. I don’t recall ever having this problem before, even back in Windows 3.1 days.
The Guardian commissioned a piece on the subject which is published today. The research showed multiple reasons for Vista’s audio problems. It’s best to show these as a series of scenarios.
1. Consumer buying new Vista PC with on-board audio
The recommended audio driver type for Vista is called WaveRT. The architecture is better than with previous driver models; you can read an official paper on the subject here. If you look at the API, you’ll notice two interfaces, IMiniPortWaveRTStream and IMiniPortWaveRTStreamNotification. The second interface was added at a late stage in the Vista development cycle. According to CakeWalk’s CTO Noel Borthwick, this was because the original API, which lacked this event notification, was very inefficient. Although Microsoft fixed it, the on-board audio drivers came out using the old inefficient driver model for WaveRT. RealTek actually lists support for IMiniPortWaveRTStreamNotification as one of the fixes in its 1.82 driver update, released in November 2007 a year after Vista went RTM.
The fact that the on-board audio vendors provided WaveRT drivers at all was an indication of their early support for Vista’s new driver model. Vendors of add-on audio cards didn’t get round to this much later, or in some cases not at all.
2. Consumer with Vista PC and an add-on card
Although WaveRT is the recommended driver type for Vista, older driver types are also supported. At a higher level, the new WASAPI audio API also emulates older APIs like DirectSound and MME. The quickest way to come up with Vista drivers was to use these legacy APIs. The result is that drivers for add-on cards were probably using inefficient compatibility APIs.
In both consumer cases, this is about apps as well as drivers. Applications make a choice about which Windows audio API to use. In many cases that’s going to mean an emulated API.
3. Pro audio user with add-on card
The situation for pro audio users is different again. On-board cards lack necessary features for pro audio. Pro audio applications have long bypassed the Windows audio stack to reduce latency, using either ASIO or WDM kernel streaming. This avoids the problems mentioned in (1) and (2) above, because ASIO and WDM kernel streaming work the same in Vista as in XP. However, even here Vista is less satisfactory than XP, because the OS imposes a greater overhead, and because according to Borthwick there are bugs which only Microsoft can fix. An example is mentioned in this interview in Create Digital Music:
Peter: Some users have reported MIDI performance issues — specifically, jitter — under Vista. How much of an issue is this? What are the factors that cause it?
Noel: Both Cakewalk and Digidesign and Cakewalk logged this issue with Microsoft. The root cause of this problem was found to be in the WinMM.DLL and was due to an inefficient check being done on every WinMM API call. It has been addressed in Vista SP1.
The issue itself was pretty severe and impacted MIDI timing on playback and recording. As compared to XP, in Vista we observed timing discrepancies as far out as 150 ticks. You could also run into cases where MIDI events were lost while playing.
Here’s one instance where SP1 definitely improves matters; nevertheless, Borthwick told me that SP1 is not a cure-all and some other bugs remain unresolved.
Some people think that Vista’s DRM is responsible for audio problems. Nobody I talked to thought that was the case. It doesn’t apply in the common cases mentioned above.
What about moving the audio stack out of the kernel? Probably not an issue, certainly not in the pro audio case, where things work the same as before.
Fixing Vista audio
Vista audio is definitely improving. SP1, improved WaveRT drivers for on-board sound, decent drivers for add-on cards, all are happening. It probably will reach the point where it is better than XP in some circumstances, because there are genuine improvements in the audio stack. If you are reading this and get glitches, check that you really have the latest drivers and updates.
64-bit has the potential to be really good, though driver support is dire right now.
It’s still a sorry tale and I suspect has lost Microsoft a lot of momentum in the pro audio world, and also among consumer users like myself who were surprised and disappointed by glitching audio.
Preventable? Ultimately I feel this is a symptom of Vista actually being rushed (despite long delays), thanks to the famous reset. There’s also the question of why the WaveRT API wasn’t done right at an earlier stage, which (if the above analysis is right) could have saved much grief. Finally it seems that the emulation layers are just too inefficient.