User manual

Configuration data in the Registry

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

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

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

HKLM\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. If a value is absent or zero, it means a default/automatic settings unless stated explicitly. Value names are the following (literally, all spaces are meaningful, but case insensitive):

Driver parameters

  • Number of cables (1..256).
  • Maximum worker threads (0..32 in 32-bit systems, 0..64 in 64-bit systems).
  • Maximum worker thread priority (0..31).
  • Maximum number of channels (1..32) supported by the driver, for all Virtual Cables.
  • Event log level (0..9).
  • Timer resolution in percents of event period (10..100).
  • Format attribute support policy - code of global format attribute policy: 0 - default, 1 - process, 2 - ignore.
  • 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 in WavePci mode 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.

Cable parameters

  • Maximum instances (1..100).
  • Milliseconds per interrupt (1..20).
  • Minimum sampling rate of cable format range (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..32).
  • Stream format limiting (0 - "Driver range", 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 Service 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.
  • Enable channel mixing (0 - disabled, nonzero or not present - enabled).
  • Use standard PortCls engine (0 or not present - disabled, nonzero - enabled). Applicable to WavePci mode only.
  • Enable speaker pin type (0 or not present - disabled, nonzero - enabled).
  • PortCls capture port type, PortCls render port type - PortCls port/miniport types for capture (recording) and render (playback) pins (0 - auto, 1 - WaveRT, 2 - WavePci, 3 - WaveCyclic).
  • Enable packet mode on capture - packet mode control for capture streams: 0 - disabled, nonzero or not present - enabled.
  • Enable packet mode on render - packet mode control for render streams: 0 - disabled, nonzero or not present - enabled.
  • Format attribute support policy - code of per-cable format attribute policy: 0 - default, 1 - process, 2 - ignore.
  • Report instance count to AudioDG - enable/disable reporting of instance count to System Audio Engine: 0 - disable (default), nonzero - enable.
  • Disable cable signal level (0 or not present - cable signal level calculation/display is enabled, nonzero - disabled).
  • Disable stream signal level (0 or not present - stream signal level calculation/display is enabled, nonzero - disabled).
  • Restrict client thread affinity (0 or not present - disabled, nonzero - enabled).
  • Restrict KMixer thread affinity (0 or not present - disabled, nonzero - enabled).

Almost all of these parameters can be controlled by VAC Control Panel and are explained there. Some parameters that are rarely used, can be added, modified or deleted manually. For this, you can use standard Windows tools (RegEdit application, or "reg" console command) or helper scripts provided in the "tools" subfolder of VAC installation package. All these tools must be ran under an administrative account.

After creating, modifying or deleted 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 "HKLM\SYSTEM\ CurrentControlSet\Services\VirtualAudioCable_83ed7f0e-2028-4956-b0b4-39c76fdaef1d" key to allow driver boot-time access. If you create/change a parameter under "Software" Registry 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 driver configuration

You can save VAC driver configuration by simply exporting the "Software" Registry subtree (the main key with all subkeys) mentioned above, using interactive RegEdit utility or the following console command (can be issued from a non-privileged user account):

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

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

To restore VAC driver configuration, first close VAC Control Panel if it is open, and delete both "Software" and "System" settings subtrees, using "delsettings" command file located in VAC installation folder (usually "C:\Program Files\Virtual Audio Cable"). Locate VAC installation folder in File Explorer, right-click "delete_settings" or "delsettings" and select "Run as administrator".

Then import previously saved .reg file, using RegEdit or the following console command executed under an administrative account:

reg import "%SystemDrive%\users\<user>\documents\vaccfg.reg"

replacing the "<user>" with actual user account name under which settings were exported.

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.

To reset all VAC driver settings to their defaults, just delete configuration subtrees without importing any configuration.

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

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