Driver and cable configuration

Virtual Audio Cable

Driver and cable configuration

VAC has several configuration parameters. Some of them concern the entire driver and others are cable-specific, which can be different for each cable.

Full version of VAC can be configured to achieve any valid number of cable devices. Trial version is restricted.

Use the VAC Control Panel to easily configure driver and cable parameters.

VAC parameter tree is stored in the registry under the following key:

HKEY_LOCAL_MACHINE\SOFTWARE\EuMus Design\Virtual Audio Cable\4

Driver parameter values are stored immediately under this key, cable-specific parameter values are stored under "\Cable N" subkeys. All parameters are specified as DWORD values unless explicitly specified. Value names are the following (literally):

Driver parameters

  • Number of cables (1..256).
  • Number of cables to restrict KMixer thread affinity - number of cables beginning from which VAC will restrict affinity of System Audio Engine worker threads. If actual number of cables is greater or equal than this value, thread affinity will be restricted to run only on a first (number zero) CPU/core. It eliminates concurrent PortCls request processing and will solve some problems like this. This parameter is ignored if PortCls engine is not used.
  • Number of cables to restrict client thread affinity - number of cables beginning from which VAC will restrict thread affinity of any client process (including System Audio Engine). It may be useful to solve problems like this. This parameter is ignored if PortCls engine is not used.
  • Maximum worker threads (0..32 in 32-bit systems, 0..64 in 64-bit systems).
  • Maximum worker thread priority (0..31).

Cable parameters

  • Maximum instances (1..100).
  • Milliseconds per interrupt (1..20).
  • Minimum sampling rate (1000..384000).
  • Maximum sampling rate (1000..384000).
  • Minimum bits per sample (8..32).
  • Maximum bits per sample (8..32).
  • Minimum number of channels (1..8).
  • Maximum number of channels (1..8).
  • Stream format limiting (0 - "None", 1 - "Cable range", 2 - "Cable format").
  • Volume control (0 or not present - disabled, nonzero - enabled).
  • Source line types mask - a bit mask that represents cable source line set. Bit 0 (value 1) means a microphone line, bit 1 (value 2) means an analog line connector, and bit 2 (value 4) means a digital line connector. You can combine them by the addition (1+2=3, Mic and Line inputs). This source line set means which lines are exposed by the cable's topology filter. Default value is 7 (all three line types).
    Don't change this parameter unless really needed.
    Under Windows 6.x, you need to restart System Audio Engine or even reboot the system after changing this parameter. Driver restart is not enough to propagate it.
  • Connected source lines mask - a bit mask that represents currently connected source lines. Unlike theĀ  "Source line types mask" parameter, this bit mask means which exposed lines are reported as "connected" (plugged in) and must be a subset of the line types mask (all bits set in this value must be also set in the "Source line types mask" value). Default value is 2 (only the Line Input is connected).
  • Clock correction - cable clock correction ratio multiplied by 1000000000 (10E9). Default value is 1000000000 that represents 1.0 ratio. Note: VAC versions prior to 4.11 use a different multiplier format that is not accepted by later versions so a default value is loaded if an old-format multiplier is found.
  • Stream data buffer ms (0..500, 0 - auto, not present - default).
  • Stream buffer watermark control enabled (0 or not present - disabled, nonzero - enabled).
  • Stream buffer watermark low ms (5..100).
  • Stream buffer watermark high ms (10..500).
  • Stream buffer watermark max wait for high ms (20..1000).
  • Restrict client thread affinity (0 or not present - disabled, nonzero - enabled).
  • Restrict KMixer thread affinity (0 or not present - disabled, nonzero - enabled).
  • Enable channel mixing (0 - disabled, nonzero or not present - enabled).
  • Use standard PortCls engine (0 or not present - disabled, nonzero - enabled).
  • Enable speaker pin type (0 or not present - disabled, nonzero - enabled).

Almost all of these parameters can be controlled by VAC Control Panel and are explained there. If you create/modify some parameters manually, you need to restart VAC driver to propagate them.

When parameter value is changed by VAC Control Panel, its value is automatically copied to the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EuMusDesignVirtualAudioCableWdm\Parameters key to allow driver boot-time access. If you create/change a parameter under "Software" branch manually, you should ensure its creation/changing under "System" branch. Otherwise, the driver will be incorrectly configured on a next boot because there is no access to the "Software" branch at a boot time.

However you could propagate parameter change to "System" branch by hand, it's better to simply restart the driver that propagates parameter values automatically.

Saving and restoring VAC configuration

You can save VAC configuration by simply exporting the "Software" registry subtree (main key with all subkeys) mentioned above, using interactive RegEdit utility or the following console command:

reg export "HKEY_LOCAL_MACHINE\SOFTWARE\EuMus Design\Virtual Audio Cable\4" "%HOMEPATH%\documents\vaccfg.reg"

This command exports VAC configuration subtree to the "vaccfg.reg" file located in your "My Documents" folder.

To restore VAC configuration, just delete both "Software" and "System" settings subtrees, then import a previously saved .reg file, using RegEdit or the following console commands executed under an administrative account:

reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\EuMus Design\Virtual Audio Cable\4"

reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EuMusDesignVirtualAudioCableWdm\Parameters"

reg import "%HOMEPATH%\documents\vaccfg.reg"

After that, open VAC Control Panel and restart the driver to propagate boot-time parameters.

You can create as many configurations as you want, keeping them in different files.

Please be careful with registry manipulations, any mistake would cause serious system mailfunction.

Please don't confuse VAC settings shown in VAC Control Panel with Audio Repeater application settings that can be specified in a command line.