Tech blog: Audio engine changes

By March 25, 2014Tech

Both Rosi DJ and BMS play back audio to soundcards within the computer.

Traditionally we have used DirectSound (WDM) to handle this.  Audio is decoded within our software, then passed to DirectSound for playback on the correct soundcard.  Since Windows Vista was introduced there has been a new audio mixing engine to use.

WASAPI offers:

  • A move to 32-bit floating point (rather than 16-bit) processing.  This greatly improves audio quality when dealing with multiple audio streams or effects.
  • A move from kernel mode into user mode in a bid to increase system stability (stopping bad drivers from taking the whole system down).
  • The concept of endpoints rather than audio devices.  This makes it easier for users to route audio to ‘Headphones’ rather than them requiring knowledge of the soundcards installed on their system.
  • Support for pro audio applications which need to be as ‘close to the metal’ as possible, keeping latency to a bare minimum.

Windows Audio Diagram (Vista and higher)

Exclusive ModeWASAPI in Exclusive Mode bypasses the audio engine (the mixer). This locks the audio driver so no other application can use the audio device.

We have been introducing support for both ASIO and WASAPI in BMS and DJ over the past few months.   With WASAPI we try to initiate our session using Exclusive Mode at the highest supported sample rate.  Internally, we run a sample rate converter on all input audio to ensure it matches.  If we cannot run in Exclusive Mode we initiate the session in Shared Mode.

ASIO is also supported by BMS/DJ.  For ASIO you choose your device, then choose the output pairs you’d like to route the audio to.

Sound Card Settings in BMS

Sound Card Settings in BMS

admin

Author admin

More posts by admin