Questionsseeking product, service, or learning material recommendations are off-topic because they become outdated quickly and attract opinion-based answers. Instead, describe your situation and the specific problem you're trying to solve. Share your research. Here are a few suggestions on how to properly ask this type of question.
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.
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.
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:
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.
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.
VAC creates a set of virtual audio devices. Each device simulates an audio adapter (usually named a "card") whose output is internally connected to the input, making an audio loopback. If an application plays audio to the output of such device, the sound will not be audible because the signal is looped back to the input. But if another application records from the input, it receives the sound produced by the first app.
Such virtual devices are named Virtual Cables. The term "Virtual Cable" is used only in the description of VAC product, as a placeholder. Actual names of virtual audio devices/endpoints that you will see in applications' menus, are different (for example, "Line 1", "Line 2" etc.).
Each side of any Virtual Cable can be used by several audio apps at the same time. If two or more apps play sounds to the same playback endpoint, these sounds are mixed, and the result is transmitted to the recording side. It two or more apps record from the same endpoint, each app gets a copy of the sound.
There is no quality loss (if no format conversion and/or volume control are involved). If all these conditions are met, audio transfer is bitperfect, suitable for audiophile applications. In well-tuned systems, signal latency is very low.
VAC just performs things what it is intended for: passes audio streams between applications, converting audio formats if necessary. It never guides you to advertising pages, nor pops up busily on the screen, nor installs hidden activities in your system. VAC does only actions that you explicitly demand for.
VAC driver and the supplied applications can only collect and use information directly related to their functionality. For example, VAC driver can query processor functions to optimize performance, request process/thread information to display it in a log, Audio Repeater applications request audio device/endpoint properties, etc. Since they do not work with personal, business, geographical, economic or political data, they do not access such data sources at all.
Keep in mind that the sample code presented is purely fordemonstrative purposes and creates a virtual audio driver that is notassociated with a hardware device, and so entitlements will not begranted for that kind of use case.
But if he means the entitlements for driver kit extensions (com.apple.developer.driverkit and com.apple.developer.driverkit.allow-any-userclient-access) won't be granted for virtual audio devices, and this is why AudioServerPlugins should still be used, then that's another story.
I need to create a virtual audio driver that presents a virtual microphone and a virtual speaker to the user. The user can then select these virtual endpoints in 3rd party audio communication apps like Skype, Zoom etc. The virtual audio driver implementation then routes audio between physical devices (selected by the user in the virtual driver userspace control app) and the virtual devices.
Apply for the entitlements straight away (don't lie on your request form obviously), wait until AudioDriverKit is out of beta, then file a Developer Tech Support TSI and explain what you're trying to do and ask what the policy is. I haven't seen any written policy on this, and the information in the video may or may not be accurate.
Don't forget that you don't just need the entitlements; your virtual audio drivers will also need to pass App Store review, so I'd make sure to get something in writing before you spend all that effort implementing your driver.
One more comment: com.apple.developer.driverkit.allow-any-userclient-access is not generally needed, and whether or not you need to apply for it depends on the architecture you are planning for your driver. Update: I'm not sure what I was thinking of when I wrote this last bit 2 years ago. As far as I'm aware, you do need this entitlement for deploying AudioDriverKit on macOS.
I have a problem with my Oculus Quest 2 with my Windows 10 computer. There was a time there was everything working great. But since about 3 or 4 weeks, I dont know exactly when the problem starts, my audio devices in widnows are going crazy when I connect my Oculus Quest 2 with my Computer with Oculus Link or wireless with Virtual Desktop. But the problem starts also when i dont connect the Quest and activate the virtual audio device (oculus or virtual desktop). It seems like the virtual audi device connects and disconnects automatically very fast. I had uploaded a video on youtube cause its hard to explain: =6b_ovj0J4Cc
I had updated all drivers, clean reinstall of oculus software, virutal desktop software over steam, virtual desktop streamer app and a clean new windows installation. The problem remains. I don't know what else could be the problem.
Having trouble with a Facebook or Instagram account? The best place to go for help with those accounts is the Facebook Help Center or the Instagram Help Center. This community can't help with those accounts.
Virtual audio devices represent the filter graphs that render and capture audio content. The system audio driver (SysAudio) uses the available hardware and software components to determine the filter graphs to build.
SysAudio's clients include DirectSound and the WDMAud system driver, which serves as the interface between WDM audio drivers and the audio-specific Microsoft Windows Multimedia APIs waveIn, waveOut, midiIn, midiOut, mixer, and aux (described in Microsoft Windows SDK documentation).
Following PnP device enumeration, SysAudio takes stock of the registered audio hardware and software components in order to determine how to construct the various audio filter graphs that its clients might require.
After determining the list of filter graphs that it can build from the available hardware and software components, SysAudio registers these graphs as virtual audio devices for playback, recording, MIDI input/output, and mixing. SysAudio reserves the registry category KSCATEGORY_AUDIO_DEVICE exclusively for its virtual audio devices. Adapter drivers should not register themselves in this category.
A SysAudio client can treat a filter factory for a virtual audio device similarly to a filter factory for a hardware or software component. When asked by a client to instantiate a particular pin on a virtual device, SysAudio constructs the graph automatically and manages the graph's internal pin connections transparently to the client. This allows the client to treat a filter graph as a single filter, thereby avoiding complexities of graph management such as inter-filter communication.
3a8082e126