Virtual Audio Cable (VAC) is an audio bridge between applications that transmits sounds (audio streams) from app to app, from device to device. VAC creates a set of virtual audio devices. Each device simulates an audio adapter (card) whose output is internally connected to the input, making a loopback. Virtual Audio Cable (VAC) - sound routing/transfer, integrating with DAW, SDR, VoIP, SIP. Simulates a multi-line audio adapter/card with loopback. Virtual Audio Cable is a MP3 and Audio application like FxSound, MP3 Cutter, and Guitar Rig from Eugene Muzychenko. It has a simple and basic user interface, and most importantly, it is free to download. Virtual Audio Cable is an efficient software that is recommended by many Windows PC users.
VAC Control Panel is an application that allows to view VAC driver/cable operating modes and to configure their parameters. Almost all configurableparameters can be set with the VAC Control Panel.
Don't confuse VAC Control Panel with the Windows Control Panel, they are independent at all.
You can start VAC Control Panel from the Start menu, opening the program folder where you have installed VAC (by default, 'Virtual Audio Cable').
VAC Control Panel shows all available Virtual Cables and their parameters/statuses, together with global driver parameters and status.
Most control elements produce tooltips (hints) briefly describing their purpose if you hover on them. To see meaning of a list column, hover on column header. To get more detailed information, click the question mark button near to upper right corner of the window (mouse cursor will change to question mark), and click on the appropriate control element or area.
Driver parameter section
This section combines global driver parameters not specific to a particular cable.
Cables - number of cables created by the driver. Has its own Set button. Changing this value causes driver restart.
The Worker threads group controls driver worker thread usage policy. Has its own Set button. Number of cables cannot be changed while at least one cable is in use.
- Up to - maximum number of worker threads running by VAC driver. In Auto mode, one working thread per physical CPU/core is created (a single thread on a single-core CPU, two threads on a dual-core CPU or a two-CPU board, and so on). You may need to limit number of worker threads if you create many (several dozens of) streams and want to lower CPU load but don't need to minimize latency as possible. In such case, you can limit number of worker threads by n-1 or n-2 (n is a number of physical CPUs/cores) to free 1-2 CPUs/cores for other tasks. In hyper-threading systems, you can set number of worker threads larger than a number of physical CPUs/cores, up to a number of logical CPUs. Some systems can work more efficiently in such case but please make sure that your system really can. Otherwise, you may lower the performance instead of raising it.
- Prio - worker threads scheduling priority. In Auto mode, they have a priority between a normal thread priority in the system (15) and a maximum possible priority (31). The higher is the priority, the more aggressive VAC uses CPU resources, preempting other user and system threads carrying out other tasks. Use priority value 31 with an extreme care: if the interrupt interval is very low (1-2 ms), number of worker threads is not limited and several threads intensively communicate with VAC driver using short (several milliseconds) data buffers, it may produce very high load on all available CPUs/cores and even freeze your system totally.
Log level - event logging importance level (0..9). The less is the level, the more verbose the log is. Logged events are places to the Log list.
Max NC - maximum number of audio channels supported by driver. This is a global setting that affects all cable data ranges. Both driver and System Audio Service will be restarted to propagate the new limit. Before changing the limit, please read about compatibility issues.
Set - a button to set the above parameters.
Clients - global driver client counter. Counts all driver clients, not only audio stream owners. Each time as the driver interface is accessed (opened) by the system and/or an application, a new client arrival is registered. Some applications and/or system components may hold driver interface instances without stream creation; you could see client counter change as they start or exit.
Streams - global audio stream counter. Counts all audio streams associated with all cables.
Timer res - system timer resolution (a tick duration) in microseconds, requested by the driver. Actual timer resolution is displayed on the bottom.
Trial reminder - status of trial version voice reminder (silent or audible).
Native mode - status of Native Mode (special custom versions only).
Restart - driver restart button. Restarts the driver, causing the driver to terminate, unload, reload and reinitialize. See this for details.
Reset counters - reset overflow/underflow counters for all cables.
Cable parameter section
This section combines individual cable parameters.
Format range (SR, BPS, NC) - sampling rate, bits per sample and number of channels ranges for the cable format range.
Connected source lines - currently connected source lines. Checked source lines are exposed lines are reported as 'connected' (plugged in). Connected lines must be a subset of the 'Source line types mask' configuration parameter.
Max inst - maximum number of pin instances (number of times the pin can be instantiated). A first pin instance is always reserved for System Audio Engine. Other instances are available for client applications. A driver that provides more than one pin instance is considered 'hardware-accelerated' and can be used in extended DirectSound or Exclusive Mode WASAPI playback. See the DirectSound issues chapter for details. Changing this value causes driver restart.
Ms per int - a number of milliseconds per software timer events (interrupts). 20 ms per interrupt means 50 interrupts per second, 10 ms per interrupt means 100 interrupts per second, and so on. It represents a frequency with which audio data portions are transferred from playback cable side to its recording side (many applications use the 'latency time' term). The more events per second, the less latency time, the more system overhead. Typical audio cards use 5-15 milliseconds per interrupt; DirectSound subsystem uses 10 ms as a default.
Stream fmt limit - stream format limiting mode.
Volume control - state of the cable volume control mode. Enable to allow to change cable and stream volume levels.
Clock corr ratio - clock correction ratio value, in percents. If the value is 100%, cable clock rate exactly matches a sampling rate value of the cable format. If the correction value is more than 100%, cable clock goes faster, otherwise it goes slower. For example, if the value is 100.25, cable clock goes 0.25% faster; if the value is 99.98, cable clock goes 0.02% slower. Clock correction precision is 0.0000001%.
You can change clock correction value even if a cable is active (has streams), changes will be reflected immediately.Capture/render port - PortClsport/miniport type used for cable side pins. Auto selects WaveRT if available, and WavePci otherwise. Actual port type is displayed at the right: WR, WP or WC.
Enable channel mixing - controls channel mixing mode. Leave enabled to use standard channel conversion, disable to use channel scatter/gather (remapping) mode.
Use PortCls - controls PortCls engine usage in WavePci mode. Enable to use a standard and reliable but non-optimal stream data interchange engine. WaveCyclic and WaveRT types are not affected by this setting.
Enable spk pin - set 'Speakers' type for playback end filter's pin. Changing this value causes driver restart. Please note that all cables with this option enabled will have the same playback endpoint name.
Set - a button to apply specified parameter values to all selected cables. Most cable parameters cannot be changed if the cable is in use (has clients).
Reset counters - a button to reset overflow/underflow counters for selected cables.
Cable Info - a button to open/close Cable State Windows for selected cables. Double-click on a cable row can be used instead.
Cable list
This section shows all available cables and their most important parameters/states.
Cable - cable number, starting from 1. These numbers are the same as recording/playback device numbers like 'Virtual Cable N' or 'Line N (Virtual Audio Cable)'. A red exclamation point inside a triangle, displayed left to cable number, indicates that the cable has problems.
Ms per int - number of milliseconds between timer events (interrupts).
SR/BPS/NC ranges - format range.
Stm fmt limit - stream format limiting mode.
Vol ctl - state of the cable volume control mode.
Ch mix - channel mixing mode.
PortCls - PortCls engine usage mode (meaningful only for WavePcipins).
Current format - current cable format, represented by a single sting: Type/SR/BPS/NC(CM), where:
Type - format type: PCM - old PCM (WAVEFORMATEX), ExtPCM - modern extensible PCM (WAVEFORMATEXTENSIBLE).
SR - current sampling rate.
BPS - current number of bits per sample. If sample container size is greater than required to store actual number of bits per sample (for example, 4 bytes for 22 bits), container size in bytes is shown in parentheses after number of bits.
NC - current number of channels.
CM - channel configuration mask (hexadecimal).
For example:
48000/16/2(3) - 48000 samples per second, 16 bits per sample (in two-byte container), two channels (standard stereo);
96000/24(4)/6(3f) - 96000 samples per second, 24 bits per sample (in four-byte container), six channels (old speaker configuration with two back speakers);
96000/24/6(60f) - 96000 samples per second, 24 bits per sample (in three-byte container), six channels (new speaker configuration with two side speakers).
Rc stms, Pb stms - number of recording (capture) and playback (render) streams.
Signal - peak signal level (amplitude) indicators (logarithmic). Are shown in a standard channel sequence (FL-FR-FC-LF-BL-BR-FLC-FRC-BC-SL-SR). To have a larger view, use Windows Magnifier Tool (Accessories - Ease of Access). Signal levels are displayed only if not disabled by cable parameters.
Oflows, Uflows - number of data overflows/underflows (summary for all cable streams).
Cable list is updated several times per second, showing actual cable states.
Double-click on a cable row acts as the Cable Info button.
Event log
A drop-down list under the cable list contains VAC driver event log.
An event is registered in driver's log if event importance is equal or greater than log importance level. To log all possible events, set importance level to 0. To log error events only, set importance level to 9.
Events are constantly retrieved from the driver while Control Panel application is running. If Control Panel is not running, newer events may overwrite older ones in driver's internal memory.
Each audio stream listed in the log has an unique identifier. The stream gets an unique ID on creation, its client process and thread IDs are also registered.
For stream creation and some other actions, VAC driver indicates the process that requested the action. For each process, the driver shows its executable file name (file extension is stripped), process identifier (PID) and thread identifier (TID), as shown in Windows Task Manager, Sysinternals Process Explorer and similar tools.
The 'Save log' button allows to save event log to a file (it could help to report problems). The log is saved in UTF-16 format.
The 'Clear log' button can be used to clear event lists in both VAC driver and Control Panel application. It can be useful if Control Panel is kept running for a log time (days/weeks) and event list consumes a large amount of system memory.
Other controls and values
- QPC freq - main system performance counter (often referenced by QueryPerformanceCounter function name) frequency, in megahertz.
- Sys timer res - actual system timer resolution in microseconds. Represents current timer resolution that may not be equal to the resolution requested by VAC driver (for example, other software can change system timer resolution in parallel).
- Privacy Settings - open Microphone Privacy Settings window. Despite of the name, actually controls the accessibility of all audio input devices (Line Input, Stereo Mix etc.). If the application detects that input device access is disabled by the privacy settings, it draws a red border around this button.
- Sound Settings - open Sound Settings window.
- Audio properties - open Audio Properties applet.
Restart Audio Service - a button to restart System Audio Service.
Please note that even if cables are visible in VAC Control Panel, they may be inaccessible to audio applications in remote sessions.
If current cable format parameters (sampling rate, bits per sample and number of channel) are shown for a particular cable, it means the cable is in use (has clients). Also, number of playback and recording streams (pin instances) are shown.
The number of playback/recording streams means how many input/output pin instances are created. Usually it is equal to a number of input/output clients but first rendering pin instance is internally used by System Audio Engine (see audio layering issues section). Additionally, an single application can create multiple pin instances.
Since Windows audio subsystem reserves a first pin instance for System Audio Engine, you may see some Virtual Cable is still in use within several seconds after playback is stopped. It is because audio subsystem keeps a mixing thread running several seconds after all other pin instances are closed.
Current cable format can help if you don't know which audio format is used by a particular application or are not sure are cable endpoints really used or not.
The OFlows ans UFlows columns show cable data overflow/underflow counters. An overflow is registered if a recording client does not provide free data storage (a buffer) within an appropriate time, and some audio data to be recorded are lost (there is a drop-out). An underflow is registered if a playback client does not provide filled data storage (a buffer) within an appropriate time, and some audio data to be played back are late (there is a gap).
Overflows/underflows are registered for a cable client but counted for entire cable. If a cable has several clients while some of them behave well and provide their buffers fast enough but some others fail to provide buffers fast enough, recording client overflows affect only their own data but playback client underflows affect entire cable and data of all recording clients. If a playback client experience underflows, the cable will not receive a solid data stream from this client and resulting mixed cable stream will be incomplete. On the contrary, recording clients receive a mixed cable stream so if a client experience overflows, only its own data will be incomplete.
If overflows/underflows occur only at stream start/stop, you can ignore them. It happens, for example, if an application first starts a rendering/playback stream then begins to provide data buffers and/or first stops to provide data buffers then stops a stream. Such behavior is not desirable but it is not an error.
If the cable is accessed in shared mode, there may be some issues with overflow/underflow counters. System Audio Engine does not pause its shared stream when all client streams are paused. Instead, it simply stops providing memory buffers to the driver (VAC) if there are no running client streams.
For example, if you run an audio player, start playback to a high-level audio endpoint provided by System Audio Engine from VAC's low-level pin, while there are no other playback streams in the system, System Audio Engine becomes VAC driver client, creating a playback stream, and begins providing audio data buffers. If you pause the player, System Audio Engine does not pause its pin instance provided by VAC, it just stop providing data buffers. Since VAC does not know why its client does not provide data buffers, it registers buffer overflows and increments the counter continuously. If such situation occurs with audio recording, underflow counter is continuously incremented.
Please don't confuse cable's overflows/underflows with Audio Repeater's overflows/underflows.
Changing driver/cable parameters
To change number of cables, select appropriate value in the Number of cables field and click Set button next to this field. Before changing number of cables, it is strongly recommended to close all audio applications. Also, many audio applications query a list of available devices only on startup and they would not work properly until restarted.
Please note that changing number of cables or some other parameters requires driver restart, so it is a privileged operation.
To change worker thread and/or event log parameters, select the appropriate values and click the second Set button in the group.
Virtual Audio Cable Banana
To change parameter values for a single cable, select particular cable row in the list, change values in selection/edit fields, and click Set button. Make sure that the selected cable is not used (the format parameter in the list is blank).
To change parameter values for multiple cables, hold Ctrl key while selecting individual rows or hold Shift key to select several adjacent rows. In multi-selection mode, a field filled with a value or a cleared/checked box mean that the parameter value is equal for all selected cables. An empty field or a greyed box mean that this parameter values are different for some cables. If you leave (or make) some fields empty and/or some boxes greyed before clicking Set, these parameters will not be affected.
Cable information/state window
Cable state windows for selected cables can be opened by clicking on the Cable Info button above the cable list. For each selected cable, a separate state window is opened (or closed if as already open). Each window shows current cable state and cable stream list.
Most control elements produce tooltips (hints) briefly describing their purpose if you hover on them. To see meaning of a list column, hover on column header. To get more detailed information, click the question mark button near to upper right corner of the window (mouse cursor will change to question mark), and click on the appropriate control element or area.
Cable state data:
Event period - timer event (interrupt) statistics. Displays minimal, maximal and average values in microseconds. Average value should be close to the 'Ms per int' parameter value multiplied by 1000. Minimal and maximal values may significantly differ due to internal system processing instability. Average value noticeably greater than both 'Ms per int' and 'Sys timer res' indicate CPU and/or internal kernel timing overload.
CPU usage - estimated average CPU usage by all cable streams. CPU usage calculation is rough, it does not exactly represent real CPU usage shown in Windows Task Manager.
Frames transferred - number of audio data frames transferred over the cable.
Actual SR - actual sampling rate (data transfer rate) of the cable.
Mux source - currently selected (multiplexed) source line (Mic, Line or S/PDIF).
Stream list items:
Id - unique stream identifier. A red exclamation point inside a triangle, displayed left to the Id, indicates that the stream has problems.
Process - identifier of a process that created the stream. For KS interfaceclients, represents client process ID. For higher-level interface clients, always represents System Audio Engine process ID.
Thread - identifier of a thread that created the stream (the same rules as for process ID).
Type - stream type (render or capture).
Format - stream audio format. May differ from cable format.
Modes - stream processing modes.
State - stream state in KS terms: Stop - stopped, Acquire - prepared, Pause - suspended, Run - active (running).
Signal - signal levels in stream channels. Displayed if not disabled by cable parameters.
Buf dur - circular audio buffer duration (in milliseconds) for RT streams
MS buf - amount (in duration terms) of audio framesbuffered. For render streams, this is the amount of audio data provided by the client and available for mixing to Virtual Cable. For capture streams, this is the amount of client-provided buffer available for writing audio data from Virtual Cable. The more frames are buffered, the more tolerant the stream is to load fluctuations but the more latency is introduced.
Life time - stream life time. Counts time since stream creation.
Run time - stream run time. Counts time spent in running state.
Fms transferred - number of audio frames transferred since stream creation.
Actual SR - actual sampling rate (data transfer rate) in the stream.
Oflows, Uflows - number of stream overflows/underflows.
CPU - roughly estimated CPU usage by stream processing.
System limitations and overhead
Windows 2000 limits number of MME devices to 8 while Windows XP/2003 increase this limit to 32. So MME applications that use waveIn/waveOut functions won't see more than 32 cables in Windows XP/2003 and more than 8 in Windows 2000. To use more cables you need either to use DirectSound or WDM/KS interfaces or switch to VAC 3 because it is a legacy MME driver.
Windows 6.x systems don't limit number of MME/DirectSound endpoints.
Don't create more cables than really needed. Having many audio devices in your system, especially in Vista and later versions, you may experience excessive system overhead due to the slow endpoint building process.
Cable list update in the Control Panel is slow when there are many cables. Audio application startup also may take a long time due to device initialization.
Moreover, creating too many (100 and more) cable devices can cause other audio devices to disappear. Use this feature with care.
Also don't set Milliseconds per interrupt to a small (1..2 ms) value unless really needed. Very small values significantly increase system time interrupt frequency and overhead. On a slow machine, you may experience performance degradation instead of raising it.
Don't enable cable volume control features unless really needed. If you don't need a volume control, keep it disabled to improve sound quality and minimize CPU load.
Restarting the driver
After changing number of cables and/or maximum instance count, VAC driver must be restarted to apply changes. The Control Panel tries to automatically restart the driver. You also can manually restart the driver using the Restart button (for example, to prolong a silent period in trial version).
To restart the driver, VAC Control Panel needs to be started with administrative privileges.
Additionally, driver restart is possible only if there are no active streams (no cables are currently used by client applications). So you need at least to stop all recording/playback using Virtual Cable devices. It is strongly recommended to close all applications that may access audio endpoints (including web browsers) before restarting the driver.
If you have configured a Virtual Cable device as a default playback device and system event sounds are enabled, it may prevent VAC driver from being restarted dynamically. To be able to restart the driver dynamically, either disable system sounds or change default playback device to a hardware audio adapter.
If Control Panel cannot automatically restart the VAC driver, number of cables and/or maximum instances count will be changed after Windows restart.
Restarting System Audio Service
In some rare cases, when System Audio Service seems to work incorrectly (some endpoint cannot be accessed, audio applications reports unexpected errors etc.), you can restart it without rebooting Windows. To do that, stop all audio streams and close all audio applications. Then click Restart Audio Service button. This action requires administrator rights.
Caution: this function works only if the appropriate system services (Windows Audio and Windows Audio Endpoint Builder) have no third-party dependencies. Otherwise, this function may fail. To restart System Audio Service in such case, use either the Services page of the Computer Management Console, or the 'Restart-Service' PowerShell cmdlet, with the -Force option. Both tools must be started with administrator rights.
Opening System Sound Settings page (Windows 10 only)
By clicking the 'Sound settings' button, you can open Windows Sound Settings page.
Opening System Sound Privacy Settings page (Windows 10 only)
By clicking the 'Privacy settings' button, you can open Windows Sound Privacy Settings page.
Opening System Audio Properties applet
By clicking the 'Audio properties' button, you can open Audio Properties Applet.
Connect several audio applications together in real time, examine information and configure settings using this advanced software tool
What's new in Virtual Audio Cable 4.65:
- Fixed a bug introduced in 4.64: KS RT Audio filters didn't expose event driven mode (notification) support, so Windows Audio Engine didn't use short audio buffers.
- Fixed a bug with output top channels confusion on Audio Repeater KS.
- Signal level indicators now display visible levels for any non-silent signal, including a very low noise.
- Double-click on a cable row acts like the 'Cable Info' button.
Virtual Audio Cable is a multimedia driver designed to connect one or more audio applications in order to transfer audio streams between them.
This software tool introduces the 'virtual cables', which refer to a set of virtual audio devices containing input and output ports. Practically, the input port records the audio signal (from a music player, for example) and sends it to the destination program (such as a sound processor or analyzer) using the output port.
Seemingly simple, yet tricky options
Once you install the driver, you are able to access its control panel in order to configure the working parameters. While the customizatin process might seem easy due to the organized interface, making the application work is quite a challenge. Therefore, before starting, it is strongly recommended to go through all the documentation carefully.
Add and examine cable information
Some of the displayed parameters concern the driver, while others refer to each cable. The first item you can change is the number of virtual cables created by the program. Adding a new one displays a new item in the monitoring pane. You can view the number of detected streams and change the worker thread number and priority.
Personalize some advanced settings
On the other hand, there are various other parameters to configure for each cable. Setting the maximum instances number, the sampling rate and bits per sample range and the channel number are just some of the options that you can modify according to your preferences. You can also enable the stream buffer watermark, volume control, as well as channel mixing.
When the configuration process is over, you need to open an audio producing program that allows you to choose a playback device. The Audio Repeater application is the one that does the actual transfer, from the recording port to the other audio device. If more than one application sends audio streams to Virtual Audio Cable, the driver mixes the signal together.
Conclusion
Although it can be definitely qualified as hard to use, Virtual Audio Cable promises to pass the audio signal with no quality loss and can prove handy once you get the hang of it.
Filed under
Virtual Audio Cable was reviewed by Mihaela Teodorovici- The trial version is feature limited
Virtual Audio Cable 4.65
add to watchlistsend us an update- runs on:
- Windows All
- file size:
- 880 KB
- filename:
- vac465.zip
- main category:
- Multimedia
- developer:
- visit homepage
Virtual Audio Cable Windows 10
top alternatives FREE
top alternatives PAID