24

Is there any (possibly free or open-source) virtual WDM audio driver for Windows, with additional processing plugins, which would add one more layer between windows applications and actual sound card's audio driver, allowing to:

  • Add software DSPs to general audio output. I would like to be able to use custom effects, like compressor, or stereophonic-to-binaural converter for listening online streaming media on headphones, etc.

  • Connect its output to some custom buffer instead of the sound card. For example, to be able to record audio, or to send audio via wireless connection to some other wireless source?

I know only about VAC driver, but don't know how I would use it to do any of these tasks. And unfortunately it is not free.

Also, audio driver was just my idea how to solve these issues - if you know other way, please share your knowledge.

I need this for Windows 7 and/or Windows XP.

1
  • I have just discovered Airfoil as a possible solution to the second problem. The first remains open, however.
    – Ognjen
    Nov 12, 2011 at 1:55

6 Answers 6

13

There is now a free (donationware) alternative to VAC Virtual Audio Cable. Check out VB-Audio Virtual Cable.

VB-Audio Virtual Cable Screenshot

There are 32 bit and 64 bit drivers available to support one virtual cable. This cable appears to support 8 channels (7.1 surround) can handle 96kHz sample rate, and has an adjustable buffer size.

2
  • 2
    I was looking for something that would add a playback and recording device on Windows so that I could stream audio from selective applications using OBS. The HiFi-Cable on the page you linked has worked with less latency with no configuration than anything I could configure with Virtual Audio Cable. Now I can stream rhythm games (osu!, beatmania) via OBS and exclude VoIP software (mumble, skype) from the stream. Dec 19, 2015 at 5:45
  • That link is dead; seems to hosted under vb-audio.com/Cable now.
    – JvO
    Aug 22, 2017 at 21:56
5

Then there are several drivers working even without any physical sound card present:

but these two have no ability to apply effects, AFAIK.

3

I've found a free open source API called Jack that appears to allow for both of what you've requested.

There are a number of applications that make use of Jack that offer what you've requested.

From their site:

JACK is system for handling real-time, low latency audio (and MIDI). It runs on GNU/Linux, Solaris, FreeBSD, OS X and Windows (and can be ported to other POSIX-conformant platforms). It can connect a number of different applications to an audio device, as well as allowing them to share audio between themselves. Its clients can run in their own processes (ie. as normal applications), or can they can run within the JACK server (ie. as a "plugin"). JACK also has support for distributing audio processing across a network, both fast & reliable LANs as well as slower, less reliable WANs.

I'm interested to know if this works for what you are doing.

4
  • 1
    JACK on Windows only works with ASIO compatible applications and sound cards. To my knowledge, there is no generic WDM driver allowing non-ASIO applications to interface with it.
    – Brad
    Jun 9, 2013 at 17:17
  • @brad what about Asio4All? Nov 18, 2017 at 21:52
  • @MahmoudAl-Qudsi That's unrelated. ASIO4All enables ASIO for non-ASIO sound cards. The question is about linking regular software together. Jack can do this in the ASIO context, but not WDM.
    – Brad
    Nov 18, 2017 at 22:06
  • @Bran I've been using SAR which is an ASIO driver providing virtual WDM devices as well as pass-through to a "real" ASIO driver (such as ASIO4ALL). The result is similar to what you can achieve on Linux by running PulseAudio on top of jack: multiple virtual WDM playback/recording devices that bridge from/to jack, and access to your real hardware from jack. You can patch the WDM devices to the hardware outputs in jack, or use a Windows jack-capable DAW such as Ardour to perform DSP.
    – cdhowie
    Aug 13, 2019 at 1:02
3

If you can deal with support for Windows Vista and later only, you can program in custom effects to the audio stack (the audio device graph, hosted by audiodg.exe)directly for applications using the following APIs:

  • WinMM (the oldest and most compatible sound API on Windows)
  • DirectSound
  • WASAPI in Shared mode

The following are unsupported:

  • Kernel Streaming (KS)
  • WASAPI in Exclusive mode
  • ASIO

The feature that allows you to program your own filters is called Audio Processing Objects and more info is available from Microsoft here (should be a stable link) with more detail here.

Note that all of this is laughably easy with Gstreamer and Pulseaudio on Linux; if you can get a similar stack to become the backend for all Windows audio, you won't have to do all the ugly machinations of a sAPO implementation.

1

One way to accomplish the same thing; although it is not technically what you are asking for, is to use a virtual audio loopback device such as Synchronous Audio Router. Such software creates new virtual send and receive devices that can be used to take e.g. the default Windows sound device output, set to a virtual device, and send it to an audio processing application. Thus, the plug-in is not in the driver, but you can still get yer fx by sending sound to the default sound device. The problem with VB Audio Cable and Virtual Audio Cable, is they only allow one loopback device with the free version. This method requires two loopback devices.

It works with ASIO drivers for low latency. If your sound-card is not an audiophile device, then it probably doesn't come with an ASIO driver; although I suggest you check anyway. If it does not, use ASIO4ALL, which provides an ASIO driver for almost all audio devices. You will then need a platform that speaks ASIO, and as such, probably uses VST effects. Protools can also probably be used, but is overkill for this application. Reaper is one inexpensive possibility; and it has a non-expiring demo. There are free ones, as well. What is crucial here, is that it can do real-time audio effects, since e.g. not all wave file editors can. You then start the application, create a track, select your loopback device for the input and yer sound-card's ASIO driver for the output, plug in your VST effect (Reaper comes with a nice assortment of simple fx), and enable monitoring on the track (right-click the record enable, or check the help for info on doing this). It sounds involved, but can actually be started pretty quickly. Reaper even reloads the last used project by default; though you will have to enable monitoring each time. Now you set yer system sounds to one loopback device, tell Reaper to use it for input, send its output to another loopback device, and connect the output of the other loopback device to the soundcard.

Edit: I used to recommend to the Virtual Audio Cable, but I've found out that it too is freemium, I've changed it to the freeware and open source Synchronous Audio Router.

0

Non-free but maybe useful for effects -- DMMF Virtual Audio Stream. Also, there is Dante Virtual Sound Card. Have you found anything useful by this time?

Not the answer you're looking for? Browse other questions tagged .