Virtual Audio Cable

How to start

  • Read the first page, then read about VAC principles and features.
  • Install the software.
  • Read about simple usage ways.
  • Try some examples.
  • Read about advanced usage issues.

If you experience troubles, firstly try to find solutions in Troubleshooting, FAQ and How To sections.

Reading the manual, don't forget that there is the "Search" tab. Having a problem, enter some words related to the problem and appropriate pages will be displayed. Of course, search feature will not help if you enter a question like "how can I use it?". It only finds pages containing given keywords.

If this manual does not cover your issue, please contact the support.

What is Virtual Audio Cable 4

The Virtual Audio Cable (VAC) software implements an idea of a physical interconnection cable applied to Windows audio applications. Like traditional audio devices (CD Player, FM receiver, equalizer, amplifier etc.) are connected by the electric (analog or digital) cables, Windows audio applications can be connected together by the Virtual Cables created by the VAC.

VAC has a Windows WDM/KS virtual device driver that creates a set of virtual audio devices named Virtual Cables. Each cable has a pair of audio ports, input and output. These ports are internally connected within each cable so all digital audio data sent (played) to the output port by "source" application are implicitly transferred to the input port and can be retrieved (recorded) by another (destination) application.

A Virtual Cable is similar to an ordinary audio adapter (a sound card) with its input and output externally connected between each other. Since a real adapter usually has a DAC (digital-to-analog converter) and ADC (analog-to-digital converter) in its signal path, an unneeded double digital-to-analog and analog-to-digital conversions are performed in case of such connection. Only rare and/or expensive adapters have a digital input and output that can be connected to transfer a signal clearly. VAC does such transfer itself, without any additional audio hardware.

Each port of each Virtual Cable is multi-client, allowing multiple applications to open the port at the same time. In the WDM/KS terms, it means each cable pin can be instantiated several times. All sounds (audio streams) coming to the playback port are mixed together, and each client connected to the recording port will get an individual copy of a signal via its recording/capture stream. Mixing and distributing are performed on the cable basis only, different cables are completely independent from each other.

As a WDM/KS filter driver, VAC represents a lowest-level audio layer that can be effectively used by any upper-level layer (KS-aware applications, DirectSound and MME subsystems, ASIO wrappers and so on).

A small utility, Audio Repeater, is included into the package to perform various useful tasks.

What you can do with VAC

  • Connect two or more audio applications into a chain where each next application receives an audio signal produced by a previous application. For example, you can connect a player application to a sound processors and then connect a processor to an analyzer or a meter application to investigate the audio signal.
  • Intercept the digital audio signal from applications playing it to MME/Wave, DirectSound or WDM/KS Audio ports. For example, you can connect Real Audio Player to Audacity and record any portion of played sound in real time, without a quality loss. Or you can use it to route input and output signals to/from Skype from/to some recording/playback applications.
  • Record bitperfect digital audio data produced by applications that don't create WAV files, sending audio only to MME/Wave, DirectSound or WDM/KS Audio device in real time.
  • Digitally mix several audio sources together and route resulting audio stream to a recording application.
  • Digitally distribute (share) an audio stream among several recording applications.
  • Convert audio data from one format to another in real time.
  • Bring a multi-client feature to any audio device that has not such feature.

VAC allows to interconnect almost all audio applications: audio/video players, software synthesizers, sound processors, audio editors, music sequencers, VoIP applications, instant messengers, speech recognition software etc. There is almost no limitations to use a Virtual Cable port instead of another audio device.

What you cannot do with VAC

  • Render a MIDI sequence to an audio signal.
  • Secretly intercept an audio signal coming from/to any another audio device unless a Virtual Cable is explicitly inserted into the signal path.
  • Transfer an audio data over a network.

However, VAC can help you with these tasks if you use some third-party applications/drivers. For example, you can use a software synthesizer (for example, built-in Windows GS Synthesizer) that renders a MIDI sequence to an audio stream, and then use a Virtual Cable to receive this stream and route it to a recording application. And you can use a network application to transfer an audio stream over a network using a Virtual Cable to supply this application with a recorded data and/or to route its playback data.


Principles

It is like an electric cable

A Virtual Cable behaves like a real electric cable. In a traditional modular audio system, you need to connect the output of each sound source (deck, pickup, guitar or synth) to the input of each sound destination/target (amplifier, equalizer, gate, processor etc.) by its own electric cable. If one component's input is connected to other component's output, the first can receive an audio signal from the second. Otherwise, it cannot.

Computer sound system works very similar. There are two kinds of objects that can be sound sources or destinations: applications that generate, play or record various sounds (WinAMP, Skype, Audacity, Cakewalk, Sound Forge, etc.) and audio devices (sound adapters/cards). Applications can transfer sounds using device audio ports; typical sound adapter has one recording (capture/input) and one playback (render/output) port. From a recording port an application can record sounds, and can play sounds to a playback port.

Some audio devices have multiple recording/playback ports, or a single recording/playback port only. For example, USB microphone adapter has a single recording port and USB speakers adapter has a single playback port.

In native Windows audio subsystem, there is no way to internally connect an application producing a sound to another application recording and/or processing this sound. For example, you cannot directly transfer a sound from Skype to Audacity. You need a full-duplex sound card with its line output jack connected to its own input jack, and there will be two digital/analog transforms, affecting sound quality and volume level, and there will be high latency (recorded sound arrives about 100-300 ms later than original sound was played).

Cable and application interconnection

VAC looks like a set of real full-duplex sound cards with their digital outputs hardwired to their digital inputs. Like a typical sound card, each Virtual Cable has two ports: playback and recording. Source application produces (plays) the sound, sends it to Virtual Cable playback port, VAC driver immediately transfers it to the recording port of the same Virtual Cable, and destination application receives the sound from this port:

Recording and playback sides

Keep in mind that a Virtual Cable is unidirectional. Only the playback side can accept audio data, and only the recording side can produce it. The playback side is a "data sink" and the recording side is a "data source".

At a beginning level, you can imagine a Virtual Cable as a kind of a pipe. When you direct a sound into your pipe end, other party can hear it from another end. But due to Windows audio principles, the pipe is unidirectional. That is, you can send a sound only to a playback end, and receive it only from a recording end.

Full independency

You can use VAC even without a real sound card in your system; but there will be no real sound to your ears, only digital sound in your computer.

Remember VAC does not produce any sounds, it only transfers a sound produced by applications. With VAC only, as with simple electric cable alone, you would not hear anything. You need a complete sound signal path, i.e. source and target applications to transfer sounds, and a real sound adapter, either internal or external, to hear it or record from the real world. You also must make proper connections between your sound system components, otherwise your goals will not be achieved.

Possible usage methods

Using VAC and Audio Repeater, you can route an audio stream coming from any audio port to many applications at the same time, sharing the real audio port. You can also mix audio streams from several applications together, routing the result to any audio port. But VAC is not primarily intended for such purpose; it is better to use the Wave Clone software.


Features

  • Windows 2000/XP/2003/Vista/Server 2008/Win 7 platforms (32-bit and 64-bit).
  • Up to 256 virtual cable devices (some systems limit number of MME devices).
  • 1..20 milliseconds per interrupt.
  • 1..100 pin instances.
  • Almost any of fixed point PCM audio formats (200..1000000 samples per second, 8..32 bits per sample, 1..8 channels). Floating point formats are not supported.
  • Almost no sound latency with maximal interrupt frequency.
  • Unlimited number of clients connected to each port.
  • Signal mixing (with saturation) between output port clients.
  • PCM format conversion.
  • Volume control features.
  • WDM/KS Audio technology native for Windows 2000/XP/2003/Vista/Server 2008/Win 7.
  • Control Panel application to configure cables and watch their state.
  • Audio Repeater application that transfers from any Wave In to any Wave Out port.

Trial version limitations

  • Supports no more than three cables.
  • A female voice repeatedly reminds that it is a trial.

Trial version of VAC allow you to see all features of the full version. To prevent professional usage, it adds a voice reminder (-6 dB level) to an audio signal. Voice reminder is not applied during first several minutes after driver startup (Windows boot or driver restart without rebooting), then it is applied at a regular basis, each several seconds. If you need additional several reminder-free minutes to perform some testing, restart the driver and run your tests immediately.

Please note that voice reminder is just added to cable audio signals, not replaces them. If you are recording from a cable and hear nothing except voice reminder, it definitely means there is no useful signal in the cable because it is not supplied with a signal, and you should check audio application's settings. Vice versa, if you have installed trial version, recorded from a cable within several minutes and didn't hear the reminder, it definitely means that you have recorded from another device, not from a cable.


System requirements

VAC system requirements are very simple:

  • Microsoft Windows 2000/XP/2003/Vista/Server 2008/Win 7 32-bit or 64-bit operating system.

  • Any hardware configuration (CPU, memory size etc.) enough for supported operating system.


Installation

If distribution files are packed, first unpack the archive to an empty folder on your hard disk. The original package is a ZIP archive and you can unpack it using PkUnzip, PkZip25, UnZip, WinZip and similar unpackers. Take care to preserve subfolder structure of the package.

Creating an empty folder to unpack the installation package, use a simply named folder that does not contain unusual characters in the path.

  • Uninstall all installed versions of VAC 4. it is very important. Previous major versions of the VAC (1.xx, 2.xx, 3.xx) will not interfere with VAC 4 and you don't need to uninstall them if you want to use several different versions.
  • Read the system default device issues section.
  • Make sure you have full Administrator privileges. Under Vista/Server 2008/Win 7, you should use a built-in Administrator account, not a user account belonging to the "Administrators" group.
  • If you need more than 16 Virtual Cable devices, read the get more than 16 virtual cables section.
  • Run the setup.exe file from the package directory and follow instructions displayed.

If you have some previous major (2.xx or 3.xx) version of VAC installed, make sure you have chosen different installation folder and Start Menu folder. Different major versions of VAC can coexist on the same system but they need to be installed to different places.

If you are installing under Windows 2000, XP or 2003 system and there is at least one WDM audio device in your system, VAC installer uses a lightweight installation mode that is silent and you will see no system warning messages. But if your system has no WDM audio devices or you are running Vista, Server 2008 or Win 7, installer performs a compatible-mode installation. In such case, the system warns you that the driver has no WHQL signature. The system also will warn that product publisher is NTONYX and ask whether you trust it. Let the system install the driver.

Under 64-bit Vista, Server 2008 or Win 7, kernel-mode drivers require a publisher's digital signature to be loaded. VAC driver is signed by a certificate belonging to NTONYX, one of VAC resellers. The author cannot sign the driver personally because Microsoft introduced a strange security policy that does not allow an individual developer to obtain a publisher certificate valid for driver signing.

After successful installation, you will receive a confirmation dialog. If there were no errors, Windows restart is not required. VAC becomes functional immediately after the installation completes. If Windows cannot safely replace system files during installation, a reboot is required to make VAC active.

Performing the installation, Setup creates a log file in Windows temporary directory. This file reflects all operations performed by the installer. If installation succeeds, log file is moved to an installation directory and renamed to "install.log". Saved log file may be needed if some problems will appear further. If installation fails, Setup prompts you to keep the log file in a temporary directory. If you experience a problem with installation, please keep the file and attach it to your support request.

As a result of the successful installation, a new system-wide device named Virtual Audio Cable appears in the Sound/Multimedia device group of the Device Manager.

In Windows 2000/XP/2003, the driver exposes a set of audio (waveform) ports named Virtual Cable N (N is cable number). Unlike previous versions of the VAC, In and Out ports have the same names, as usual in modern Windows versions. It is easy to distinct them because all applications place input and output device names to different lists.

In Vista/Server 2008/Win 7, due to endpoint mechanism, Virtual Cable devices are named differently: "XXX N (Virtual Audio Cable)" where "XXX" stands for a source line name and "N" stands for a cable number. The endpoint idea is useful for real audio devices having multiple input lines but is meaningless for a Virtual Cable device that has only a single audio path. But some applications like MSN Messenger try to locate a particular source line (for example, microphone or line input) input so VAC supports them, exposing fake "inputs lines". By default, only a single source line is exposed, named "Line" (an "analog line input"). At a cable playback end, VAC also exposes the "Line" endpoint (an "analog line output"). So, by default, there will be a single input and a single output waveform audio port for each Virtual Cable.

Totally, VAC can expose up to three source lines from each cable: Microphone input ("Mic"), line input ("Line") and S/PDIF input ("S/PDIF"). See the Configuration chapter for details.

If you don't see Virtual Cable devices in audio device menus, please try a manual installation.

The setup process also creates Virtual Audio Cable (if you have not modified this name) folder in your Start/Programs Menu. It contain a shortcuts to the Audio Repeater, VAC Control Panel and other useful links. If the All Users menu (Start Menu folders for all users at this computer) is available, the VAC folder created here. Otherwise, the folder is created for the currently logged user.

Now you can begin using the VAC.

Manual driver installation

Manual driver installation may be required if VAC installer was not capable to install all the driver functions automatically. In such cases, the installer reports successful installation and you see a working Virtual Audio Cable device in Device Manager but you don't see Virtual Cable devices in audio application device lists or cannot get them to function properly.

Manual installation should be performed only if VAC proprietary installer reported that the installation was successful but Virtual Cable devices are not visible or do not function. If VAC installer reports an error, don't perform a manual installation but ask for a support.

To install VAC manually, perform the following actions:

  • Start Windows Hardware Wizard (the Add Hardware item in the Windows Control Panel).

  • Specify that the hardware is already connected.

  • In a device list, select "Add a new hardware device".

  • In a next form, choose "manually select from a list".

  • In a device type list, choose "Sound, video and game controllers".

  • In a manufacturer list form, click "Have Disk" button.

  • Browse for the folder where VAC installation files are unpacked.

  • In a device list, choose "Virtual Audio Cable".

You will be warned that the driver is unsigned. Proceed the installation.

When manual installation is finished, you should see Virtual Cable devices. If they still are not visible, please ask for a support.

Do not perform manual installation before installing VAC using its setup utility. During manual installation, only driver files are installed while VAC setup utility installs all VAC files, such as VAC Control Panel application. Manual installation can be performed after running VAC setup utility but not vice versa. If you have performed manual installation before running VAC setup utility, you must use Advanced Setup Mode to overwrite driver files and over-install the driver. Such sequence is not recommended.

Advanced setup mode

Setup utility works for an ordinary user by default. In this mode, any abnormal situation causes abortion of installation process. If you are an experienced user and can understand some abnormal situations (for example, when file to be created is actually present), you can select the "I am an advanced user" checkbox. In such case, you will be prompted if some files, devices and/or services already exists and may be overwritten. Use this feature with extreme care. In general, there are no need to overwrite anything during normal installation process. You need an advanced mode only if you have incorrectly uninstalled VAC or tried to install it over the already installed one.

When the general installation mode fails, you can try the advanced mode.

First, locate a directory and a Start Menu folder where VAC files/links are installed, and delete them. Start the setup utility and check the "I am an advanced user" item. When prompted to overwrite existing files and replace service and/or device descriptors, answer Yes/Ok.

At first phase, the installer may be unable to replace all objects needed, and installation process may abort again. In such case, reboot the system and run the installation in advanced mode again. If prompted for overwriting some files, answer Yes. At this second phase, installation must succeed. If it aborts again, request for a support.


Simple cable usage

To use a cable simplest possible way, first run the VAC Control Panel application and make sure that a cable is configured with default parameters:

  • Maximum instances - 20
  • Milliseconds per interrupt - 5
  • Sampling rate range - 44100..48000
  • Bits per sample range - 8..16
  • Number of channels range - 1..2
  • Stream format limiting - Cable range
  • Volume control - disabled

Don't close the VAC Control Panel, it will help you later.

Run any audio producing application (a player, a tone generator, an audio editor) that allows you to specify a playback/render device directly and choose the Virtual Cable 1.

Start playback and make sure that the application really plays to the Virtual Cable 1. You must hear nothing but the Control Panel must show 1 or 2 new playback streams. If you hear a played sound, it means the application directs it to your hardware audio device, not to the Virtual Cable.

If a sound is really played to the Virtual Cable 1, run the Audio Repeater application and choose the Virtual Cable 1 as a recording device and your hardware audio device as a playback device.

Start Audio Repeater. Now you must hear a sound and the Control Panel application must show a new recording/capture stream. It means an audio data are transferred via the Virtual Cable 1 from a playing application to the Audio Repeater and the Audio Repeater transfers it further to a hardware audio card. You have created a full audio path containing the Virtual Cable 1.

You may hear some quality loss in comparison with a direct playback to the audio card. it is possible due to a format conversion. To improve sound quality, you need to play with client and cable audio formats. See advances usage topics section for details.

To record a signal transferred via the cable, run any recorder application. Choose the Virtual Cable 1 as a recording device and start recording. The Control Panel must show a new recording/capture stream indicating that a recorder application has connected to the Virtual Cable 1.

To hear a signal during recording, you need to keep Audio Repeater active. Otherwise, a signal is transferred from a player application to a recorder application only. Starting a transfer in the Audio Repeater, you create another connection to the recording side of the Virtual Cable 1 that splits an audio signal into two identical streams.

You can connect any number of playing/recording applications to each end of each Virtual Cable.

Remember that VAC itself only transfers audio data internally from its playback side to its recording side within each Virtual Cable. VAC does not route any sound to/from your hardware audio devices and don't intercept any signals that are not explicitly routed to Virtual Cables because VAC has no relation to other audio devices at all.

To configure driver and cable parameters, use the VAC Control Panel application.

If you have troubles using VAC, try to look at examples/troubleshooting sections and FAQ/How to... lists.

More complicated tasks

Virtual Cables can be used much more complicated ways. See the advances usage topics section.


Advanced cable usage

This section describes advanced usage methods. You need to understand VAC principles and simple usage rules before attempting to use advanced features.

Choosing most effective interface

As a WDM/KS Audio filter, VAC driver presents a pair of render and capture pins for each cable. Using these pins, Windows audio subsystem builds higher-level audio layers (see Audio layering issues). So, each audio cable presents at least three audio interfaces: WDM/KS, DirectSound and MME (Wave), with a pair of recording/playback ports in each layer.

Since each cable side presents all standard Windows audio interfaces, it is better to connect each application to a Virtual Cable using lowest-level possible interface type. If an application can use WDM/KS Audio interface, connect it to a Virtual Cable via render/capture pin. Otherwise, if an application can use DirectSound interface, connect it to a playback/capture port. In other cases, use Wave Out (playback) and Wave In (recording) ports of the MME.

For example, Foobar2000 player can use any of these interfaces. iTunes can use DirectSound or MME interfaces, DirectSound is a preferred. A standard Windows Media Player uses DirectSound interface only.

Using the WDM/KS Audio interface, please keep in mind that it does not support pin instance sharing. More than one connection to a specific pin is available only if a driver supports multiple pin instances. VAC supports them but not all other audio drivers do.

Adjusting DirectSound hardware acceleration level

VAC can be used via the DirectSound interface much more effectively if its hardware acceleration feature is utilized. To enable Windows to utilize it, you must adjust the hardware acceleration level for the VAC device.

Stream and cable format limiting

Due to audio layering specifics, an audio application not always has a full control over the audio format used for playback. While capture operation always requests a specified format from the driver, playback operation may implicitly initiate a system request for KMixer that sets the cable format to a format other than specified by the application.

For example, if a DirectSound application requests playback at 48000/24/2, DirectSound subsystem first requests 44100/16/2 for KMixer. If a Virtual Cable is free and this format is within the cable format range, 44100/16/2 will be chosen for the cable format. A second render stream will be created with 48000/24/2 but the cable format cannot be changed when a cable is used. Therefore, VAC will perform a format conversion from 48000/24/2 to 44100/16/2 and signal quality will degrade. To minimize format conversion, you could limit a cable format, or a stream format, or both of them.

Cable format limiting is useful to specify most convenient format range for both cable sides. For example, if you want to use 48000/16/2 at one side and 44100/24/2 at another side, you could set cable format range to 44100-48000/16-24/2-2. It prevents the cable format from locking at low sampling rate and/or bitness due to implicit pin instance allocation for KMixer.

By default, cable format range is restricted to very common range for better compatibility. If you want to use wider range, you can extend the format range using the VAC Control Panel.

DirectSound and MME subsystems often can try some consecutive formats if driver does not allow them to use their preferred format parameters. A driver cannot suggest to higher-level layers to use a particular parameters but it can reject some formats and allow some others. So you could use various stream format limiting modes:

  • None - there is no stream format limiting over the common driver features. So a new stream can be created using any format supported by the driver. A format conversion will be performed in most cases.

  • Cable range (default) - a new stream can be created only if its format is inside the cable format range. A format conversion is performed in some cases.

  • Cable format - a new stream can be created only if its format exactly matches the current cable format. If a cable is free, the "cable range" mode is used for a first stream (see format selection rules for details). Therefore, no format conversions are performed because all cable streams have the same format. This mode is similar to previous (2.x, 3.x, 4.00 betas) versions behavior.

As an extreme case, you can set the same lower and upper ranges for each cable format parameter and specify stream format limiting mode to the "cable format". Therefore, only a particular format (for example, 96000/24/2) will be allowed for client streams. If both side clients are able to choose such format, no conversion will be performed. All audio data will be transferred over the cable unchanged, with no quality loss.

But don't forget that layered scheme prevents applications from having full control over their audio activity. Some implicit format conversion may occur in KMixer and there is no way to easily check it.

Format conversion issues

Unlike previous versions, VAC now supports a format conversion. But due to mixing purposes, VAC cannot directly convert from a playback client's format to a recording client format. Instead, VAC first converts data from various playback client formats to the cable format then mixes client data using the cable format. Finally, VAC converts mixed data from the cable format to various recording client formats.

The cable format parameters are selected when a first playback or recording client connects to a given Virtual Cable. Sampling rate, bits per sample and number of channels are chosen from the cable format range to be possibly close to a client's format parameters.

For example, if a client requests 44100/16/2 and the cable format range is 22050-48000/8-32/1-8, the cable format is set to 44100/16/2 (equal to client's format). If the cable format range limits sampling rate to 22050-32000, cable sampling rate will be set to 32000. If it is limited to 48000-96000, resulting value will be 48000.

If you don't know which format is used by a particular application for playback or recording , run the VAC Control Panel. It shows a current cable format for each cable.

For a multichannel (4.1, 5.1, 7.1 etc.) formats, don't forget to adjust the Virtual Cable's Speaker Configuration.

Try to minimize format conversion chances. A conversion is performed by the main CPU and takes significant CPU resources and it may noticeably slow your applications. When used by many clients at a same time, it may even hang your computer because the conversion is performed in kernel-mode which has higher priority than every application in the system.

Volume control issues

VAC also supports a volume control. For each playback stream, volume and pan can be controlled via appropriate interface methods. For an entire cable, a main volume, pan and mute can be controlled, either via an audio mixer interface or the Windows Audio Mixer Control application.

To use cable volume control features, you must enable Volume Control in the cable configuration parameters.

To control cable volume parameters, open Windows Audio Mixer Control (Start - Programs - Accessories - Entertainment - Volume control). Another way is right-clicking the speaker icon and choosing Open Volume Control. You also may simply double-click the speaker icon.

In Windows Audio Mixer Control window, open Options menu and select Properties. In Mixer Device item, select a proper Virtual Cable device and click OK. The Mixer will switch to show Virtual Cable N volume controls. The first group, "Volume Control" represents the main cable controls. "Wave" group adjusts waveform stream volume and "SW Synth" group adjusts a system-created software MIDI synthesizer channel volume. Other controls are shown for compatibility purposes and don't affect cable operations.

Like a format conversion, volume control takes some CPU resources and affects sound quality. Use it only when really needed.

Clock correction feature

When a Virtual Cable is used in a path containing another audio device (a hardware device or a software device other than Virtual Cable), clock difference effect occurs. To minimize it, change cable clock correction multiplier until cable internal clock speed becomes closest to another device clock.

Mixing, format conversion and sound quality

Mixing of output streams is implemented with a saturation (clipping). If the amplitude value exceeds a maximal range defined by the sample bitness, it is clipped to the maximal value.

VAC uses relatively simple resampling algorithm and does not use dithering or other advanced smoothing features. Therefore, conversion results may sound worse than an original signal. To prevent quality degradation, you need to pay attention to a format matching. In an ideal case, all three formats (the playback client's format, the cable format and the recording client's format) are the same.

If all formats are equal and cable volume control is disabled, VAC performs no conversion, all samples are copied directly, and only mixing is performed if there is more than one playback clients. In such case, no quality degradation occurs. If you play a WAV file to the playback side and simultaneously record data from the recording side, recorded data will be equal to played data, except of possible leading and/or trailing silence. But these clear results can be achieved only if all used formats are the same and volume control is disabled.

Start recording first

As described here, Windows audio subsystem guarantee to propagate only recording audio format at a first device connection. If a first connection issued is a playback request, stream format selection will be more complex and less predictable. So it is better to start a recording operation before you start a playback operation. It will fix the cable format and further playback operation won't change it.

An "operation" stands for an actual recording/playback process, not an application running. Some applications have a special button and/or menu command to start an operation. But some applications can start an operation when they want. For example, Skype starts them when a remote connection is established.

To watch the cable format evolutions, use the VAC Control Panel.

Speaker configuration for multichannel formats

To properly transfer multichannel audio data, you must configure the Speaker Configuration for a particular Virtual Cable first. Virtual Cable's Speaker Configuration must match the channel distribution of the audio format. Adjusting the Speaker Configuration is similar to adjusting the DirectSound Hardware Acceleration Level:

  • Open Audio Properties applet.
  • Open the Audio tab, select an appropriate Virtual Cable device in Sound Playback listbox and click Advanced button.
  • On the Advanced Audio Properties page, open Speakers tab, select a configuration and then click OK.
  • On the Sounds and Audio Properties page, click Cancel (if you will click OK here, your default device will be changed).

In Vista, Server 2008 and Win 7, interface is different: in Playback device properties, there is the "Configure" button.

Get more than 16 Virtual Cables

By Windows design, number and names of available audio devices must be specified at device installation stage. The driver cannot create more devices than were described during the installation. In VAC installation, number of described devices is limited to 16 by default for two reasons:

  • Installation of more possible devices takes more time but most users don't need many cables.
  • Creation of many (more than 10-15) audio subdevices in the driver causes very high system load and the system may almost hang for several minutes.

If you need more than 16 cables, replace the device/driver description file (vrtaucbl.inf) and catalog file (vrtaucbl.cat) with files contained in "256cables" package subfolder before the installation. If VAC is already installed, uninstall it, unpack the distribution package, replace the files and install VAC again.


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. Value names are the following:

Driver parameters

  • Number of cables - number of cables created by the driver.
  • Number of cables to restrict KMixer thread affinity - number of cables beginning from which VAC will restrict affinity of KMixer 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.
  • Number of cables to restrict client thread affinity - number of cables beginning from which VAC will restrict thread affinity of any client process (including KMixer). It may be useful to solve problems like this.
  • Split DPC processing among CPUs - an option to enable/disable splitting of low-level audio processing among CPUs (cores). All low-level processing in VAC (format conversion, mixing and distribution) is performed in timer DPC context but Windows binds timer DPCs to CPU/core 0 by default. At a light load, it does not matter but at heavy load CPU/core 0 becomes loaded significantly higher than other CPUs/cores. By default, this parameter is assumed to be zero. If set to a nonzero value, VAC binds DPC for Virtual Cable 1 to CPU/core 0, DPC for Virtual Cable 2 to CPU/core 1 and so on.

Cable parameters

  • Maximum instances - maximum pin instances (number of times the pin can be instantiated). A first pin instance is always reserved for the Windows kernel-mode mixer (KMixer). 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 playback. See the DirectSound issues chapter for details.
  • Milliseconds per interrupt - number of milliseconds per software timer signals (interrupts). 20 ms per interrupt means 50 interrupts per second, and so on. At such frequency audio data is transferred from the playback cable side to its recording side (many applications use a term "latency time". The more interrupts per second, the smaller latency time, the more system overhead. Typical audio cards use 5-15 milliseconds per interrupt; DirectSound subsystem uses 10 as a default.
  • Minimum sampling rate, Maximum sampling rate - a range of sampling rates allowed for the cable format.
  • Minimum bits per sample, Maximum bits per sample - a range of sample sizes allowed for the cable format.
  • Minimum number of channels, Maximum number of channels - a range of number of channels allowed for the cable format.
  • Stream format limiting - stream format limiting mode: 0 - "None", 1 - "Cable range", 2 - "Cable format".
  • Volume control - cable volume control mode: 0 - 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 Vista/Server 2008/Win 7, you need to 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 multiplier in 1/65536th units. Default value is 65536 (1.0).

Most of these parameters can be controlled by VAC Control Panel. If you create/modify some parameters manually, you need to restart VAC driver to propagate them.

When any parameter is changed by VAC Control Panel, its value is automatically copied to the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EuMusDesignVirtualAudioCableWdm 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 reboot because there is no access to HKEY_LOCAL_MACHINE\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.

System limitations and overhead

Windows 2000 limits number of MME devices to 8 and 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. Vista/Server 2008/Win7 don't limit number of MME devices.

Don't create more cables than really needed. Having many audio devices in your system, especially in Vista/Server 2008/Win 7, you may experience excessive system overhead due to very slow endpoint processing. For example, creation of 16-20 cables may keep Windows 100% loaded during a minute after each driver startup (system boot process, installation or restart from Control Panel) before all audio devices become accessible. Creating 100 cables in Vista/Server 2008/Win 7 may cause up to 15-20 minutes of full load before Windows finishes endpoint processing and all audio devices become accessible.

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..3 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.


System preferred device issues

System default (preferred) device issues

Why system default device may be arbitrarily changed

Please note that your system default audio device can be changed in result of VAC installation if you had not previously assigned this device explicitly. If a default device was assigned explicitly, it remains unchanged. If it wasn't, Windows may use any of present devices, and there is no easy way to predict which device will be used. VAC installer itself never changes default device settings; it may be done by Windows if default device wasn't set explicitly.

To set a default device, open Audio Properties applet. Then find a property page (tab) that displays Playback and Recording settings and select particular devices from the lists.

Note you must always select each device from a list and click OK or Apply, even the selection already shows this device. Windows creates default device registry record only if the device is set explicitly. If a device record is not present, Windows picks a device by its own rules and displays it in Audio Properties page. If you will install/uninstall another audio device, Windows may pick some other device in the future.

In latest (9.x) DirectX versions, a primary DirectSound device is also changed to reflect default system MME/Wave device settings. But in earlier versions, there is no way to specify a device that will be "primary". Windows assigns it internally. It is by design.

Using a Virtual Cable as a system default device

If playing and/or recording application does not allow to specify a recording/playback device directly, try to set Virtual Cable N as a system default device (Wave Mapper) using Audio Properties Applet.

Keep in mind that a system default playback device is used by Windows to play system event sounds when you open/close a menu, run/exit an application, when message boxes appear on the screen. If you set a system default playback device to the Virtual Cable, these sounds are directed to this cable. You will not hear them but they will be passed via the Virtual Cable to its recording clients. If you don't want these sounds to be passed via the Virtual Cable, disable them in the Sounds tab by setting a sound scheme to "No sounds". You will be prompted to save a current scheme to re-enable it in the future.

Some poorly designed applications always use a first available device and cannot be configured at all. In Windows 2000, to ensure that Virtual Cable 1 is a first device, you should disable all other audio devices. Don't remove audio cards or uninstall their drivers, just disable their functions in the Device Manager. This may allow you to achieve your goal but you would not hear any sound until you re-enable hardware audio.

In Windows XP and later, a device assigned as a system default always becomes a first-enumerated.

Using different default devices for different applications

Since default audio device is set at per-user basis, you can assign different Virtual Cable devices as default devices for different user accounts. For all applications started under a certain account, default
recording/playback devices will be mapped to appropriate Virtual Cables.

To create additional user accounts at your computer, log in as Administrator, open the "User accounts" applet in Windows Control Panel and create one or more user accounts. If you usually work under a limited (non-administrative) account, create limited accounts too, otherwise create administrative accounts because not all applications, especially old, can work properly under a limited account. Once each account is created, set a password for it.

Another way to manage user accounts is using Administrative Tools - Computer Management item in Windows Control Panel. User accounts can be controlled in User Accounts and Groups - Users item. Creating a new account, specify a password, uncheck "User must change password at next logon" and check "Password never expires".

Once additional accounts are created, log in under them using Fast User Switching feature or logoff/logon sequence, and set different Virtual Cable devices as playback and/or recording devices, as needed.

To start an application under a given account, use "Run as..." item from a shortcut context menu. Open the Start Menu, locate application shortcut as usual, but use right-click instead of left-click. A context menu will appear. Left-click at "Run as..." item, select "The following user" and enter account name and password. If both were entered correctly, application will be started under given account and use different preferences than it uses under your usual working account.

To start applications automatically from a command (batch) file, use the runas command. See Windows Help and Support for details.

To avoid unneeded complexity, use additional accounts only for applications that don't allow to select any available audio device and use only a default one.

Please note that each user account has its own preferences: desktop themes, sound settings, application working directories, temporary files etc. For example, if an application uses a working directory, creating project files in it, such directory may be different under different user accounts. So you may need to specify these preferences manually if the application works under an account different from your usual working account.


Audio layering issues

WDM/KS driver is a lowest-level layer in Windows audio subsystem. Most applications don't connect directly to it. Instead, they use higher-level DirectSound and MME interfaces. Using such intermediate layers, an application cannot have a full control over all audio parameters. So there are some special issues and limitations. At a glance, they might look quite complex but they are easy to understand in practice.

Driver's pin allocation

WDM/KS drivers, like DirectShow filters, are represented by several numbers of pins. Application that use WDM/KS interface directly, requests a pin instance immediately. If there is an available pin instance, request succeeds, otherwise it fails. Most drivers allow multiple pin instances and can serve several applications but some drivers provide only a single pin instance. Therefore, several WDM/KS applications can record/play simultaneously only if there are more than one available pin instances at a particular device driver.

To extend simultaneous playback/recording possibility, Windows audio subsystem (the KMixer layer) always reserves first pin instance when a device is accessed via DirectSound or MME interface. When an application connects to a device, its request is implicitly routed either to a native device driver, if a separate pin instance is available, or to KMixer otherwise. In some cases (all MME requests and some DirectSound requests), KMixer is always used. KMixer converts audio formats, mixes several audio streams together (for playback/render streams) or splits a stream into multiple streams (for record/capture streams).

Format selection for KMixer

To reserve first driver's pin instance for KMixer, Windows audio subsystem must choose an audio format for it. A format selection is based upon application's format specified in its connection request and a set of available formats for the device driver. There are following common rules of KMixer audio format selection:

  • MME playback: sampling rate is equal to requested, bits per sample is preferably 16 and number of channels is preferably 2 (stereo).

  • DirectSound playback: sampling rate is equal to a first matching from driver's set, bits per sample is preferably 16 and number of channels is preferably 2 (stereo).

  • MME recording and DirectSound capture: format is the same as requested except some incompatible cases (weird sampling rates, number of channels is greater than 8 etc.).

If possible pin format parameters are strongly restricted and KMixer cannot use 16 bits and 2 channels, other bitness and/or number of channels can be used.

Cable client counting

When a pin instance is requested from VAC driver for a Virtual Cable device, the driver assumes there is a new cable client. If an application connects directly to VAC's WDM/KS interface, VAC always gets a new client and forms a new stream for the cable. But all higher-level interfaces work via KMixer and application's request not always reaches VAC.

On a first application's connect to a particular WDM Audio device via DirectSound or MME interface, KMixer creates a first device's pin instance for its own mixing/distribution purposes. In such case, KMixer becomes VAC's client, not a requesting application itself. For DirectSound hardware-accelerated playback request, another pin instance is requested from the driver and an application itself becomes another VAC's client. Otherwise, an application is connected to KMixer's pin instance. If requested format is different from a KMixer selected format, KMixer performs a format conversion.

Further application requests are handled slightly different. For DirectSound hardware-accelerated playback request, and for any record/capture request, a new pin instance is requested from the VAC. But MME playback requests always go via KMixer. In other words, MME playback application never become VAC's client. It always become KMixer's client and KMixer become VAC's.

You can experiment with various applications and formats and watch number of clients/streams in the VAC Control Panel.

A first pin instance created for KMixer is often "sticky" and persists several seconds after all applications have closed their connections to a Virtual Cable. You can see it in the VAC Control Panel.

How cable format is selected

For each Virtual Cable, VAC maintains the cable format. The cable format is a common format for all cable clients (driver streams). All render (output) data are converted to the cable format, mixed and then distributed to all capture (input) clients, being converted to their own formats.

VAC selects the cable format when a Virtual Cable becomes active (gets its first client stream). As described above, there may be implicit, hidden clients like KMixer whose might request a connection with a format different from the format specified by an application. For example, DirectSound application may request a hardware-accelerated connection and specify the 48000/24/1 format. If the cable format range is set to 4000-1000000/8-32/1-8, implicit KMixer connection might request the 4000/32/8 where sampling rate is too low but bitness and number of channels are very high. Second pin instance created for the application's buffer request will not change cable format because the cable is already in use by the KMixer. So application's data will be converted from 48000/24/1 to 4000/32/8, and signal quality level will be dramatically dropped.

To prevent such issues, choose cable format range to be possibly close to your favorite format set. See format limiting rules for details.


DirectSound issues

Target device testing

Before using a target device, an application or DirectSound subsystem itself often performs some testing, repeatedly opening the device with various audio formats to see which of them are supported. Such testing is usually performed at Windows boot, at DirectSound application startup and at DirectSound device selection.

Most devices can be successfully opened in any time with any audio format they support. But a Virtual Cable can restrict possible stream format range and reject open requests that specify "bad" formats. Due to that, some DirectSound applications may fail to select this cable or may unable to start at all. You might need to stop all cable activity to allow such applications to initialize properly. Or you might even need to set less restrictive format range and/or stream format limiting mode before starting this application and restore appropriate values again when application finishes its initialization.

Using a hardware acceleration

DirectSound offers a hardware acceleration feature that allows to utilize some internal audio device capabilities. One of these capabilities allow a multistream playback and recording. It means that a device can process multiple audio streams at a same time and its driver can create multiple pin instances in parallel. Multistream feature allows several applications to use a device simultaneously without a special sharing support in software. Each application creates one or more streams and a device processes all of them appropriately. For example, if an internal hardware DSP can resample and mix several streams, it reduces main CPU load and allow applications to be more flexible in audio format selection.

Although VAC has no proprietary hardware and uses only main CPU resources, it reports a hardware acceleration support to allow Windows audio subsystem to create multiple pin instances (streams). When an application creates a hardware-accelerated DirectSound buffer, Windows audio subsystem requests a new pin instance from the driver. At a driver side, a new audio stream is created (number of active streams is displayed by the VAC Control Panel). Having several audio streams, VAC converts their formats to the cable format and then mixes together.

Each cable can create as many pin instances as specified by the maximum instances configuration parameter. If there are no available instances, DirectSound fails to create a hardware-accelerated buffer. For an ordinary buffer, DirectSound can create a new stream in KMixer layer. In such case, KMixer will convert and mix these streams instead of the VAC. So you can control how application's audio data will be processed.

Sometimes you can control application's ability to use hardware acceleration features. For example, WinAMP and Foobar2000 players have checkboxes for it.

Hardware acceleration level

DirectSound subsystem uses each hardware acceleration feature only if a current maximum hardware acceleration level allows it. There are four acceleration levels: None, Basic, Standard and Full. Each next level allows DirectSound subsystem to utilize more of device/driver internal capabilities and process audio data more efficiently. So higher acceleration levels are better but they may cause some incompatibilities so Windows provides lower levels to achieve better compatibility.

A maximum allowed hardware acceleration level can be set to any of these four values for each DirectSound device independently. Applications using DirectSound interface can utilize no more acceleration features than the maximal device level allows.

A multistream feature is available only on a highest (Full) acceleration level. For each new device, maximal level is set to the Standard value. Therefore, to utilize all device capabilities, you must manually set it to the Full value.

You can change maximal acceleration level for VAC devices using Audio Properties applet. Open the Audio tab, select any Virtual Cable N device in Sound Playback listbox and click Advanced button. On the Advanced Audio Properties page, open Performance tab, select desired acceleration level and then click OK. On the Sounds and Audio Properties page, click Cancel (if you will click OK here, your default device will be changed).


Control Panel application

VAC Control Panel is a standalone application that allows to view cable operating modes and to configure their parameters. All configurable VAC parameters 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, by opening the program folder where you have installed VAC.

Driver/cable status

The VAC Control Panel shows all available cables and their parameters.

Number of audio 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 KMixer (see audio layering issues section). Additionally, an single application can create multiple pin instances.

Since Windows audio subsystem reserves a first pin instance for KMixer, 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.

A list of cables is updated twice per second, showing actual cable state. It also can help if you don't know which audio format is used by a particular application or are not sure is cable port really open or not.

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. Until the cable is released by its last client, its format ranges cannot be changed.

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. 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 or lost.

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.

Most configuration operations cannot be performed to a cable that is in use, and number of cables cannot be changed while at least one cable is in use.

Driver parameters

  • Cables - number of cables created by the driver. Changing this value causes driver restart.

Cable parameters

  • Max inst - maximum number of pin instances (number of times the pin can be instantiated). A first pin instance is always reserved for the Windows kernel-mode mixer (KMixer). 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 playback. See the DirectSound issues chapter for details. Changing this value causes driver restart.
  • Ms per int - a number of milliseconds per software timer signals (interrupts). 20 ms per interrupt means 50 interrupts per second, 10 ms per interrupt means 100 interrupts per second, and so on. It also represents a frequency with which audio data are transferred from playback cable side to its recording side (many applications use the "latency time" term). The more interrupts per second, the less latency time, the more system overhead. Typical audio cards use 5-15 milliseconds per interrupt; DirectSound subsystem uses 10 as a default.
  • SR, BPS, NC - sampling rate, bits per sample and number of channels ranges for the cable format range.
  • Stream fmt - a stream format limiting mode.
  • Volume control - a state of the cable volume control mode.
  • 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.
  • Clock corr - a clock correction 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 1/65536 so, for example, 100.001% is rounded to 100.002%.

To change configuration parameters, select particular cable row in the list, change values in selection/edit fields, and click Set button. Make sure that the cable is not used (the format parameter columns are blank).

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.

Safety issues

To avoid undesired effects, please be aware of the system limitations and overhead.

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.

To restart the driver, you need administrator privileges. Under Windows 2000/XP/2003, logging as a member of Administrators group will be enough. But under Vista/Server 2008/Win 7, if UAC (User Account Control) is enabled (it is enabled by default), you should use a built-in Administrator account (an account that has RID value 500). Either log in using the Administrator account or run VAC Control Panel with administrative rights (right-click its shortcut, choose Run as Administrator, enter a password, if any, and choose "Allow to run" if Windows asks you for a permission).

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. If number of cables is changed, it is strongly recommended to close all audio applications before

If Control Panel cannot automatically restart the VAC driver, number of cables and/or maximum instances count will be changed after Windows restart.


Audio Repeater Application

Audio Repeater is a simple application that transfers a real-time audio stream from any Wave In MME recording port to any Wave Out playback port. Audio Repeater can be used with VAC to feed the audio from a real sound card to a Virtual Cable or to monitor a signal going through a Virtual Cable with a real sound card.

Audio Repeater uses MME interface to work with audio devices. It means that playback to Virtual Cables goes via KMixer layer and Audio Repeater cannot fully control actual audio format of the KMixer to VAC connection (see audio layering issues). Next releases of Audio Repeater will use WDM/KS and DirectSound interfaces.

To supply a Virtual Cable with a real audio signal, choose a sound card port in the Wave In field of the Audio Repeater, and choose Virtual Cable N in the Wave Out field. To monitor an audio signal transferred through the Virtual Cable, choose Virtual Cable N in the Wave In field and the sound card port in the Wave Out field.

You can leave "None" in the Wave Out field. In such case, Audio Repeater will only record from a device specified in the Wave In field, without playing the data back. It can be useful for visual signal level monitoring if you don't need to pass a signal to another device.

Before starting a transfer with the Audio Repeater, select format parameters possibly close to formats used by other applications connected to this Virtual Cable. To eliminate redundant format conversions, pay attention to the audio layering issues.

The Channel config parameter specifies a typical channel configuration (mono, stereo, surround etc.) or a custom mode that allows you to select any channel combination. Channel name abbreviations represent:

  • FL - Front Left
  • FR - Front Right
  • FC - Front Center
  • LF - Low Frequency (Subwoofer)
  • BL - Back Left
  • BR - Back Right
  • FLC - Front Left of Center
  • FRC - Front Right of Center
  • BC - Back Center

For details, see a description on the Microsoft site (enter "KSAUDIO_CHANNEL_CONFIG" in the search field if none displayed).

Transfer is started when you click the Start button. Audio Repeater opens both audio ports and maintains a circular buffer movement between them. When a buffer filled with data is received from the In recording port, it is immediately passed to the Out playback port, and vice versa. The Queue gauges show you how much data buffers are held in device queues.

Indicators under channel configuration checkboxes show average signal levels in particular channels.

Both queues start near to a medium state to minimize a clock difference effect. But the longer is transfer time, the larger is the difference, and the higher is stream interruption probability. Side activity, such as disk read/write, application launch, high CPU load can affect evenness of the stream.

There are two counters, Overflows and Underflows. Overflows counter is incremented when Audio Repeater has no free buffers for recorded data. Underflows counter is incremented when Audio Repeater has no buffers to play back. Overflows and underflows can occur as a result of a clock difference effect, heavy system load (when Audio Repeater does not receive enough CPU time) etc.

To optimize audio transfer, you can vary the buffering time (total buffer) and number of buffers. The total buffering time (in milliseconds) defines how much audio data reserve a device driver will have. The larger is buffering time, the more robust is the transfer, the less is chance of sound interruption due to task switching, disk operations etc. But the larger is the buffering time, the larger is latency value, and the larger is a delay between incoming and outgoing audio data. Typical buffering times are from 200-300 to 1000-2000 ms.

The number of buffers defines how many parts of the total buffering memory will be used. The more buffers are used, the smoother is the transfer even the total buffering time is small. But large number of buffers raises a system overhead and use of more than 15..20 buffers will not make transfer smoother.

The priority field controls priority of the Audio Repeater process. The higher is priority value, the smoother a process is executing, the less time is rest for another processes. Most processes have Normal priority value, Audio Repeater has Normal value by default. Be careful setting the Realtime priority value because it can cause Windows to freeze.

Please note that clock difference effect can be lowered but cannot be eliminated at all. Therefore don't rely on Audio Repeater as a robust audio transfer tool. A Virtual Cable can do a robust, smooth and long-time transfer between two applications but there is no way to establish a robust transfer between two Windows audio devices. You can try to minimize a clock difference effect by using VAC clock correction feature.

Format descriptor selection

When opening a wave device, Audio Repeater uses the WAVEFORMATEX format descriptor if sample size if 16 bits or less and number or channels is 1 or 2. If sample size is greater than 16 bits and/or number of channels is greater than two, Audio Repeater opens the device with a modern WAVEFORMATEXTENSIBLE descriptor.

Command line switches

Audio Repeater accepts several command-line options, allowing to pre-configure it:

  • /Input:<str>
  • /Output:<str>
  • /SamplingRate:<num>
  • /BitsPerSample:<num>
  • /Channels:<num>
  • /ChanCfg:<str>
  • /BufferMs:<num>
  • /Buffers:<num>
  • /Priority:<str>
  • /WindowName:<str>
  • /AutoStart
  • /CloseInstance:<str>

Option names are case-insensitive. <Num> means a number, <str> means a string. Specify option values as you see these parameters in Audio Repeater window.

If a string contains spaces or other special characters, enclose it in double quotes. To avoid name matching problems, leading/trailing spaces are stripped, space groups between words are replaced with a single space.

If a string contains national characters that don't exist in a console code page, create a command (batch) file, placing a command line into it, and insert CHCP command before the command line. See Windows Help and Support for CHCP command description.

The custom channel configuration switch has the following format:

/ChanCfg:custom=<num>

where <num> is a hexadecimal channel mask as defined for the KSAUDIO_CHANNEL_CONFIG.

For example, to configure Audio Repeater with "Virtual Cable 1" as input device, "USB Speakers" as output device, sampling rate 48000, 16 bits per sample, two channels (stereo), command line parameters should be the following (a single, continuous line):

/Input:"Virtual Cable 1" /Output:"USB Speakers" /SamplingRate:48000 /BitsPerSample:16 /Channels:2

/CloseInstance option has a special meaning. Instead of specifying a parameter for a newly started Audio Repeater instance, it instructs to close an existing instance that has a specified window name (specified earlier by /WindowName option). If used, it must be the only option in command line. If a named window exists (even if hidden), the window close message is sent to it. The option can be used to close any application window, not only Audio Repeater's.

You can create a shortcut for Audio Repeater or invoke it from a batch (command) file to achieve better automation. See Windows Help and Support center for details (type "create shortcut" in the Search field to see how to create and edit shortcuts, type "batch files" to see how to use batch files).

To create a shortcut, locate either Audio Repeater executable file in VAC installation directory or default Audio Repeater shortcut in VAC folder in the Start Menu. Command-line parameters should be appended (space separated) to the executable file path in the "Target" field.

In a batch file, use Start command (type "start /?" in the Windows Command Prompt window for explanation) to start several instances simultaneously.

Minimizing to tray icon

Audio Repeater supports tray minimizing. To restore, left-click the icon. To open a context menu, right-click the icon.

To start Audio Repeater minimized to tray, use start command with /min option. See "start /?" for details.

Kernel Streaming version

From VAC 4.10, Kernel Streaming (WDM/KS) version of Audio Repeater is also available. It looks and works like standard MME version but accesses audio devices through high-performance and low-latency WDM/KS interface.

Using KS version, please note it accesses device pins directly, not using KMixer or other intermediate layers. It means no format conversion is performed by Windows, only device and/or its driver format conversion features will work, if any.

Additionally, KS version allocates a pin instance directly, so if device driver does not allow multiple pin instances, this pin cannot be used simultaneously by several applications and/or Windows itself. Since you have opened such device in KS version, you will be unable to open another instance, even via other Windows audio interfaces.

See audio layering issues for details.

Queue indicators in Kernel Streaming version behave slightly different than in MME version due to intermediate buffering. Both queues are started fully filled and in normal situation both indicators should be near their right sides.

Some audio drivers support only a limited set of formats (format ranges) at WDM/KS level. If you don't know what formats are supported by the driver, use ASIO2KS that can show supported format ranges.


Examples

Recording an audio signal produced by an application

  • Launch a playback (producing a sound) application.

  • Find audio output settings in playback application.

  • Select a particular Virtual Cable N device as the output (playback/render) device.

  • Choose a particular audio format for a playback.

  • Launch a recording (consuming a sound) application.

  • Find audio input settings in recording application.

  • Select the Virtual Cable N device as the input (recording/capture) device, making sure the N (a cable number) is the same for both applications.

  • If possible, choose the same audio format as chosen for playback.

  • Start recording. You will see a silence is recorded.

  • Start playback. You will see an audio position is moved and level meters are alive but there will be no audible sound because a signal is passed via Virtual Cable to a recording application directly.

  • Stop both recording and playback.

  • If your recording application can play recorded data (for example, any audio editor like Sound Forge, Cool Edit/Audition or Audacity), you can immediately hear a recorded signal. Just make sure that its wave output is assigned to a real audio adapter (a card) playback port and headphones/speakers are connected.

Monitoring a signal during record

  • Configure playback and recording applications as described above.

  • Launch Audio Repeater.

  • Select a proper Virtual Cable N as an input device.

  • Select a real audio adapter playback port as an output device.

  • Choose the appropriate audio format parameters.

  • Click Start button. You will see data queues moving.

  • Start recording and playback as described above.

A signal produced by a playback application will be distributed among your recording application and Audio Repeater which passes it to a real device and you will hear it.

You can also leave "None" in the Wave Out field of the Audio Repeater to only watch signal levels on the screen, not playing a signal back to the speakers.

Determining an actual audio format that application uses

  • Launch VAC Control Panel.

  • Launch an application and select a Virtual Cable N as a playback or recording device.

  • Start playback or recording. In VAC Control Panel, you will see the current cable format parameters. If the cable format is not limited, it probably reflects a format used by this application. But due to the layering issues, a Virtual Cable can receive a request from KMixer, not from an application directly. Please also note that applications selecting a format automatically can change it from time to time.

Chaining several applications one by other

  • Create an appropriate number of Virtual Cables using VAC Control Panel.

  • Launch your applications.

  • In the first application, which will be audio signal creator/producer, select a Virtual Cable N as a playback/output device.

  • In each intermediate application, which will be both audio signal consumer and producer, select a Virtual Cable X as a recording/input device and a Virtual Cable Y as a playback/output device. The X for each recording device must be the same as the Y used for a playback device in previous application in the chain. In other words, each intermediate application must be connected to the next by a separate cable. You don't need to number them in ascending order, they simply must be separated.

  • If a last application is not a final recording destination, select a real audio card as its playback device.

  • To temporarily exclude an intermediate application from the chain without changing other applications settings, simply insert Audio Repeater instead.

Bringing a multi-client feature to the single-client port

  • Launch Audio Repeater.

  • If a primary device is a recording one, select a primary device's recording port as a recording/input source and the Virtual Cable N as a playback/output destination. Recording side of the Virtual Cable N will reflect a signal coming from the primary recording device.

  • If a primary device is a playback one, select the Virtual Cable N as a recording/input source and a primary device's playback port as a playback/output destination. Playback side of the Virtual Cable N will accept signals intended to a primary playback device.

  • Choose the appropriate audio format.

  • Start Audio Repeater. A signal is now transferred from a primary recording device to a Virtual Cable N recording side, or from a Virtual Cable N playback side to a primary playback device.

  • Now you can use an unconnected side of a selected Virtual Cable instead of a primary device port.

  • If possible, use the same audio format as you have chosen in the Audio Repeater.

  • You can also look at the Wave Clone software intended primarily for such case.

Recording Skype conversations

To record Skype conversations, you need two Virtual Cables and at least two Audio Repeater instances:

  • In Skype, you must assign recording/input to Virtual Cable 1 and assign playback/output to Virtual Cable 2.

  • First Audio Repeater instance must transfer from your audio adapter's recording port to Virtual Cable 1, supplying first Virtual Cable with a microphone signal.

  • Second Audio Repeater instance must transfer from Virtual Cable 2 to your audio adapter's playback port, passing Skype output to the speakers.

  • Audio Repeater uses one-second buffer by default that introduces a significant (about 1..2 seconds) delay. You need to experiment with total buffering time, lowering it until audible interrupts occur. The more buffering time, the stable the audio transfer, the longer delay, and vice versa.

  • Now you can separately record your voice from the Virtual Cable 1 and other party's voice from the Virtual Cable 2. Almost any multitrack recorder can be used - for example, Adobe Audition (formerly Cool Edit Pro).

  • If you want to record both parties from a single source (mixed), you need to start third Audio Repeater instance and transfer from the Virtual Cable 1 to the Virtual Cable 2. Then you could record a mixed signal from Virtual Cable 2.

  • To avoid an echo, make sure your microphone source line monitoring channel is muted in audio card's mixer.

Distributing audio signal among several audio devices

  • Configure your playback application to use Virtual Cable N device as an output.

  • Launch Audio Repeater instance, select Virtual Cable N device for input and first audio device for output. Change format parameters if needed and start audio transfer.

  • Launch another Audio Repeater instance, select the same Virtual Cable N device for input and another audio device for output. Change format parameters if needed and start audio transfer.

  • Start playback in your application. You will hear a sound in speakers/headphones connected to both audio devices.

  • Please note that due to clock difference issue you will not get a stable sound within a long period of time.


Uninstallation

Before you start VAC uninstallation, make sure VAC driver is not used by any application. VAC usage can be shown by its Control Panel application. If you attempt to uninstall the driver while it is in use, the uninstaller will fail to properly remove the driver from the system and to delete its files and directories. It is recommended to close all audio applications before uninstalling the VAC.

Under Windows 2000/XP/2003, you must be logged as a member of the Administrators group. Under Vista/Server 2008/Win 7, you should use a built-in Administrator account, not a user account belonging to the "Administrators" group. Either log in using the Administrator account or run the uninstaller with administrative rights (right-click the shortcut and choose Run as Administrator).

Before you start uninstallation, open the Audio Properties applet. If a Virtual Cable device is selected as a default device for the recording and/or playback, select any other devices instead. Then close properties page.

To start removing VAC software from the system, open the Virtual Audio Cable folder in the Start Menu and select the Uninstall item.

If you have accidentally deleted your VAC Start Menu folder, you can start the uninstaller manually. Click Start - Run to open the Run Application dialog, click Browse, locate a directory where VAC is installed (by default, it installs to "C:\Program Files\Virtual Audio Cable"), and double-click setup item; a path to the uninstaller application will be inserted in the command line. Then append a space character and "-u" option to the command line (outside of the quotes, if any). Resulting command line should look like this:

"C:\Program Files\Virtual Audio Cable\setup.exe" -u

Then click OK, the uninstaller should start.

After successful uninstallation, you will receive a confirmation dialog.

If some driver files, services and other objects are currently in use by the system or by , they cannot be deleted immediately. In such case, the uninstaller creates a "delayed delete requests" for them and prompts you to restart Windows. If you don't want to restart immediately, you must not try to reinstall VAC in this Windows session otherwise severe errors may occur.

Uninstallation troubleshooting

If the uninstaller fails to properly remove software components from the system, try advanced setup mode that allows you to over-install the software. In some cases, after successful over-installation you will be able to successfully uninstall the software. As a last chance, you can try to remove the driver manually:

  1. Log in with the Administrator account.
  2. Open Device Manager.
  3. Expand the "Sound..." device category by clicking on the "+" sign.
  4. Right-click the Virtual Audio Cable device and choose Uninstall.
  5. In Vista/Server 2008/Win 7, check the Delete the driver software item.

This sequence deletes only VAC driver and its devices but driver service may not be automatically deleted. To manually delete the kernel-mode service, unzip VAC distribution package into any empty folder. Using My Computer or Windows Explorer navigation, locate this folder and select the RemoveService file. Right-click this file, and select Install in the context menu. Service will be deleted immediately if it is stopped, or marked for deletion and deleted at next system startup.

After removing system references, you can delete driver file vrtaucbl.sys located in the system32\drivers subdirectory of the Windows installation directory.

VAC directory and its Start Menu folder can be deleted using any Windows file management utility (i.e., Explorer).

Please report all problems not covered by this manual, to the author.


Distribution policy

VAC is shareware.

Trial version of the driver is free and can be distributed freely if its package and file contents remain unchanged and there are no commercial purposes. You cannot sell it, solely or within other products.

Full version is commercial and is granted to registered users after payment. This version can be used only in conditions specified in the license. See the license.txt file in the distribution package.


Support

Support and feedback

VAC is created by Eugene Muzychenko, an independent software developer living in Novosibirsk, Russia.

Bug fixes and updates are available at the VAC homepage.

You can also visit Other Eugene Muzychenko products page.

If you have encountered a problem not listed in the troubleshooting section and FAQ/How to... lists, please email to the author. But first make sure that you've read the documentation and understand the principles and usage rules of this software.

Writing your letter, add "Virtual Audio Cable" or "VAC" to the subject field. Letters with empty subject or only with a common word/phrase like "Hi", "Help request" or "Some questions" may be considered as a SPAM and automatically killed by the filters.

Please include following items in your email:

  • Application name (VAC), its version and type (trial or full).
  • Motherboard type (single/multiple CPU) and CPU type.
  • Operating system (type, language, build and patch level or service pack number).
  • Exact situation description:
    • What applications did you use (names and versions)
    • What actions did you perform
    • What did you expect
    • What was really happen
    • Exact error message texts (or pictures)
    • Other details, if any

For example, if you have a problem with audio connections, you should describe how you connect applications to audio devices (real and virtual), audio formats used, recording/playback modes (if any), and specify any other information that could help to understand your problem. The more meaningful information you provide, the faster and helpful response you will get.

If the problem is related to installation/uninstallation, please attach a log file created by Setup application.

Explaining a problem

Please write problem explanation to be rich in content. Avoid meaningless messages like "I cannot install it" or "It did not work". Your message must be informative and allow to understand your problem. Please write as exact as possible: what did you want to achieve, what did you do, and what was happened. If you have received an error message and code, please include them into your report. For long messages, attach some screenshots instead.

Attaching files

If your problem can be described better by some data files, you can attach them to your message. For example, if you experience a strange noise in audio data, it could be useful to present a data fragment saved to a WAV/MP3 file. But don't send large (a minute or more) audio fragments. Send meaningful fragments only. In most cases, 5-10 seconds of audio is quite enough.

When possible, please avoid large (greater than 1-2 Mb) email attachments except explicitly asked.

Attaching logs

During installation and uninstallation, a log file is created, describing a process details. After successful installation, the log file is kept in the VAC installation directory (install.log file). If installation/uninstallation process fails, a log file is kept in the temporary directory; in such case, the installer informs you how this file is named and offers you to view its contents.

If your problem is related to installation/uninstallation process, please include log file contents into your report. You may either copy/paste file contents to the email text or attach a log file. It may help to investigate your problem.

Attaching screenshots

To illustrate your problem, you can attach some screenshots to your report. If there is only a single informative window (a dialog box, an error message), take a "window screenshot" (Alt-Print Screen), not full screenshot (Print Screen). If there are several informative windows at the screen, you could arrange them to be all visible and take a full screenshot (Print Screen).

Attaching screenshots, please pay attention to an image size. Don't attach uncompressed BMP images because they are very big and redundant. Convert BMP images to a compressed image format (JPG, GIF and so on) using standard Windows Paint utility or a free image viewer/editor (IrfanView, XnView etc.). You can also reduce color depth, converting 24-bit color to 8-bit but don't resize an image because text information may become unreadable.

Attaching minidumps

If your system crashes, configure it to make a crash minidump. A minidump file contains some essential information about a crash, it may help to analyze your situation.

To configure system to create a minidump, open Windows Control Panel, then open System item. Select Advanced tab and click Settings button in Startup and Recovery group. In the Write Debugging Information box, choose "Small memory dump (64 kb)". Leave a default path (%SystemRoot%\Minidump) in the Small Dump Directory field.

Additionally, you may clear Automatically Restart checkbox to prevent automatic reboot after a crash. In such case, Windows will stay at the blue screen message.

If you had a system crash, then tried to enable minidump creation and saw it is already configured, it means you already have a minidump for this crash and can send it, not needing to wait for another crash.

After each system crash, a new minidump file is created in the Windows\Minidump folder. File names contain a date and a sequence number within a date. Locate 1..3 of last minidump files and attach them to your report. Make sure you are attaching only minidump (64 kb) files, not a big dump (several megabytes in size) files.


How to...

I want to use VAC with my applications XXX and YYY. How to configure Virtual Cable for my case?

There are no predefined recipes to use VAC together with a given application. VAC is a common tool and its usage is simple if you understand its basic concepts. You definitely must understand the "interface", "port", "client" and "format" terms, VAC principles and basic usage rules. This manual describes common rules, and you must apply these rules to your configuration. See the typical usage examples.

Please ask for a support only if you are sure your task is significantly different from most others and you have read the manual carefully but have not found an answer.

I bought VAC several months (years) ago. How can I upgrade to a newer version?

Within a major version (2.xx, 3.xx, 4.xx etc.) you can freely upgrade to any newer minor version. For example, if you bought version x.08, you can freely upgrade to x.10 or x.12.

To upgrade to a newer minor version, please see your purchase order confirmation email message. It contains download and installation instructions for all available minor versions.

If you bought a previous major version (for example, 3.xx), you can upgrade to a newer major version (for example, 4.xx) with a discount. To obtain discount conditions, please visit VAC homepage mentioned here.

How can I record my Skype conversations?

To record Skype conversations, you need to create relatively complex routing scheme. It requires clear understanding of Windows audio operation basics, VAC principles and learn other examples. In most cases, it is better to look for a special Skype recording application.

Here is an example of Skype recording.

I have several audio adapters with their own speakers attached to each adapter. How to play a sound using all adapters at the same time?

Just route your sound stream to Virtual Cable N and use several Audio Repeater instances to route from the same Virtual Cable N to each of your adapters. But please note you would not hear all these streams as a single, solid sound due to different digital audio paths inside the system. Additionally, sounds coming from different speakers will "slide apart" from each other due to a clock difference effect.

How to transfer a multichannel (5.1, 7.1 or similar) audio stream over a Virtual Cable?

Possibly you need to adjust the Speaker Configuration for this Virtual Cable first to match the channel distribution of your audio format.

In Vista, Server 2008 and Win 7, you also need to choose appropriate default audio formats for both playback and recording cable devices.

How to record from several cables at the same time using multi-track recording software?

Recording from several cables is identical to a recording from several hardware devices. You can even mix hardware devices and Virtual Cables in your multitrack session. For example, you could use Adobe Audition (formerly Cool Edit Pro) to record Skype conversation placing your voice and your party's voice to separate tracks. Most multitrack recorders have a common, fixed format in each session; you can specify a proper format at new session creation.

I have enabled test-signing mode in my system for unsigned VAC version. Now I got signed version, how to disable test signing mode?

Please open a command-line window (Start-Programs-Accessories-Command Prompt, TotalCommander, FAR Manager) and enter the following command:

bcdedit /deletevalue {current} testsigning

To enter the command correctly, don't type it manually, use Windows copy/paste feature. In TotalCommander or FAR Manager, you can simply paste the command by Ctrl-C or Shift-Ins. To paste command text into Command Prompt window, click on icon in upper-left corner to open a context menu, open Edit submenu and select Paste to insert the command. Then press Enter to execute command. Type exit to close command window.


Frequently Asked Questions

My soundcard has no "What You Hear" recording function. Does VAC implement it?

Definitely, no. VAC does not interact with other audio devices. It cannot automatically intercept any audio signal, it can route a signal only if a Virtual Cable device is explicitly used in audio path.

You can record sounds from applications and/or system by directing their audio output to some Virtual Cable device. It can be achieved by selecting Virtual Cable device in application's audio settings or using Virtual Cable as a system default device.

Since audio output will go to Virtual Cable instead of your audio card, you need to monitor the cable to hear the sound.

Can VAC route sound between different PC's?

No, it can't. Maybe other application or driver will be created for this purpose later.

I have tried a trial version and cannot get it to work for my application. If I will buy a full version, will it work?

Full version features differ from a trial ones only by a maximal number of cables. Full version also does not add a female voice reminder to the signal. See the trial version limitations.

Therefore, trial version has all the features of full version and can do anything that full version can do. If three cables are enough for your task but you cannot get the trial working, it means you are doing something wrong or VAC is not intended to your task at all.

If you have successfully implemented trial usage but your task simply requires more than three cables, full version will definitely solve your problem.

Can VAC split and/or mix multi-channel streams?

VAC performs channel mixing/splitting only within a cable. Converting five-channel stream to a two-channel, VAC will mix all channels and then split a result into two channels. But VAC cannot mix separate channels between separate cables.

How much is sound latency with VAC?

VAC itself adds almost no latency but actual value is much more dependent from an audio interface that application uses and application's audio buffer configuration than from a Virtual Cable interrupt frequency.

Very good performance and latency can be achieved using DirectSound with hardware-accelerated buffers. For even better performance and lower latency, you can use WDM/KS, directly or via an ASIO wrapper like ASIO4ALL or ASIO2KS. MME has lowest performance and highest latency.

Typically, latency time is comparable with an audio buffer granularity. For example, if application uses a total buffering time of 500 ms divided into four buffer parts, average application latency time will be 500 / 4 = 125 ms. If a cable is configured to 10 ms per interrupt, cable latency will be no more than 10 ms.

To reduce latency time, first try to decrease application's audio buffer granularity. Some MME applications allow to specify number of audio buffers and a total buffering time; set these values to 50..100 ms per buffer part and 500..1000 ms of total time. DirectSound applications also may allow to specify a minimal buffer fragment size for processing.

You can also try to decrease the number of milliseconds per interrupt for a cable but it may help to decrease latency time by several milliseconds only.

Can VAC map default audio devices to different cables for different applications?

VAC does not map audio devices. If you assign some Virtual Cable device as a system default recording and/or playback device, mapping is performed by Windows. But you can use different user accounts to map default devices differently for different applications.

Can VAC be used on a virtual machine (virtual server)?

VAC can be used on any Windows machine, regardless of its type. But there are some important issues since VAC is a kernel-mode driver, not a user-mode application.

Different virtual machine software offer different layers of platform virtualization. Some platform virtualization products offer full hardware virtualization (VMware, Virtual PC, Virtual Box, Parallels Workstation, Virtual Iron, Bochs) while most other products like Parallels Virtuozzo offer only a partial virtualization (for example, OS level virtualization).

Partial virtualization is enough to use most user-mode software (Web and other network servers, remote desktops, distributed calculations) in a virtualized environment. For user-mode applications, virtualization software maintains several separate environments. But there is only a single system kernel so in most cases you cannot install a kernel-mode driver on such environment. But if you have full access to the host machine, you can install VAC on it, and then all virtualized environments will be able to use VAC.

In a fully virtualized environment, you have a completely separate OS, with its own kernel, so you can separately install and use VAC on each virtual machine of this type.

Working remotely, please note that WDM audio devices can be accessed only via a console session, not a separate RDP session.

I see very high CPU load when Virtual Cables are used. Is it normal?

It is normal if there are format differences between a current cable format and recording/playback clients' formats. In such case, a format conversion will be performed. It takes a high amount of CPU resources.

Check the number of milliseconds per interrupt parameters for all active cables. If this parameter is very low (1..3) for some cables, try to increase it at least to 5..7.

CPU resources are also used to perform a volume control. If you don't need volume control for a particular cable, it is better to disable it.

Can VAC render my MIDI sequence to a Wave file?

Definitely, no. VAC simulates a simple electric cable, it cannot synthesize a sound from a MIDI sequence. Although, VAC can help you to record output of some software synthesizers to a Wave file. You also could use a built-in Windows GS software synthesizer that plays synthesized waveform to a system default playback device.

Why VAC does not route output of Roland VSC-xx, Yamaha S-YXGxx?

Many software synthesizers don't allow to specify a playback audio port explicitly, using a system default device or first Wave or DirectSound playback port instead. Try to set a Virtual Cable N as a system default device.


Troubleshooting

I have installed VAC but I don't know to run it. I have opened the VAC Control Panel but I still don't know to start recording.

VAC is a "passive" tool. It is not an application that you can run, it is a virtual device driver. You can use it with almost any audio application by selecting "Virtual Cable N" devices in their audio settings. Please read

I have installed VAC and my system sounds are disappeared.

Maybe you did not explicitly set your system default device before. In such case, Windows may decide to use some Virtual Cable device as a default. Please read here for details.

When I plug a USB audio device, I lose my sounds.

You don't really lose sounds. Many USB audio devices are configured to become a system default audio device when plugged in. So, if you have a device that is set as a system default and plug a USB device, it
becomes a new system default, replacing a previous default device. Sounds normally routed to a previously chosen device are now routed to a newly connected device. A device that was previously set as a default is not lost, it remains accessible by a name, as all other devices.

To avoid this problem, configure audio applications to use particular, named, audio devices, not system default ones. Use system default devices only if an application does not allow to select a device from a list.

VAC Control Panel cannot restart the driver.

Make sure you are logged in using a native Administrator account or explicitly started VAC Control Panel application from such account.

I have set output of my audio application to the Virtual Cable N but I hear no sound.

If you connect audio source (an application) to the playback/render cable side and leave other side unconnected, you will not hear any sound. You need to connect other (input/capture) side of the cable to another application which will receive (record/capture) a sound produced by the source application. See VAC principles, simple usage rules and examples for details.

I have set output of my audio application to the Virtual Cable N, then set input of recording application to the Virtual Cable N. Sound recording is fine but I hear no sound from my headphones/speakers during recording. What can I do to hear a live sound?

You need to monitor cable transfer as mentioned in the simple usage rules. The simplest way to monitor is using Audio Repeater application included in VAC package. See an example.

I hear an unwanted female voice in the recorded audio. How can I get rid of it?

You are using a trial version, please note the trial version limitations. This voice reminder is normal for the trial. To get rid of this voice, purchase the full version.

During VAC installation, Windows cannot find some files.

First, try to determine do these files belong to VAC file set or to Windows file set. For example, browse VAC distribution package. If required file names are present in the package, check if they are present in a folder where you have unpacked them before installation. Maybe you have unpacked the ZIP archive without pathnames (nested folders) or missed some files.

If the archive was unpacked properly but Windows installer cannot access some files, it might be due to restricted access rights. Check file properties for the access rights. If a folder where files are unpacked has special characters in the full path (punctuation characters, national alphabet characters), try to unpack installation files to a folder that does contain only Latin characters in the path.

If Windows requires some files that are not present in VAC package, they might be system files that Windows needs to install and/or check their versions. Usually, all the original files needed are located at distribution packages (Windows installation disk, Service Pack disks). To minimize external package requirement, Windows keeps some frequently used files in its installation folder (Driver Cache, system32\dllcache subfolders) and use them instead of asking for a disk. But if you delete these packages (driver.cab, sp2.cab or others), Windows cannot find an original file on the hard disk and asks for a CD.

If Windows asks for a system or a service pack CD but you have no these disks, try to locate required files in Windows installation folder. For example, ksuser.dll file could be located in system32 subfolder and portcls.sys could be located in system32\drivers.

VAC was installed but there are no Virtual Cable devices and Device Manager shows error code 48.

If the Device Manager shows error code 48 for the driver ("The software for this device has been blocked from starting because it is known to have problems with Windows"), it means you have installed VAC on the virtual server with a restricted functionality.

Trying to install VAC, I get error 1072 (The specified service has been marked for deletion)

Most likely, you previously tried to uninstall VAC when some cables were in use and uninstaller was unable to remove the service. Please reboot and retry installation. If there will be some "already exists" errors, use Advanced Setup Mode to repair.

VAC Control Panel does not start, displaying "0/1 - Incorrect function" error message.

Check if Creative Live! Cam Virtual driver is installed. It can be checked in Device Manager (by name) or in System32\drivers subfolder of Windows installation folder (by the livecamv.sys file name). This driver was developed from VAC by a third-party company and incorrectly uses some identifiers used by VAC, making a collision.

Creative Live! Cam Virtual driver is a part of some Creative Live! Cam web camera products. To avoid a collision, disable or even uninstall it.

Please visit Creative website to obtain an updated camera software.

There are cracks and pops while I pass my sound over a Virtual Cable. How to get rid of them?

If Virtual Cable is the only path between two applications (one is playing back and another is recording), try the following:

  • If your application uses DirectSound, check and adjust the DirectSound hardware acceleration level.
  • Check the CPU load and try to lower it if high.
  • Try to stop unnecessary application activity.
  • Try to increase the buffering time in audio application.
  • Try to decrease the number of milliseconds per interrupt parameter for the cable.
  • Try to enable load splitting among CPUs/cores using registry parameters.

If there are other (hardware or software) devices in the path (for example, an application records from a device and plays back to Virtual Cable, or vice versa), please also check if this issue is not caused by clock difference.

I am using Audio Repeater to monitor one of VAC cables with my soundcard and there are periodic interrupts of the sound.

As a hardware audio adapter, VAC has internal software clock to time audio data transfer. As in previous case, there is a slight difference between each clock. Within several minutes, a total difference may become enough to buffer overrun or underrun. Try to adjust cable clock to match the device clock.

I have tried a trial version and then bought the full version. But installation of the full version was failed.

Maybe you forgot to uninstall the previous (trial) version of VAC. Uninstall it and then carefully follow installation instructions. If you encounter an error, read the uninstallation troubleshooting section.

I use more than one Skype instance with several Virtual Cables and Skype freezes.

It occurs due to PortCls bug in Windows XP SP2/SP3, 2003 SP1/SP2 and possibly other systems, but only on multi-CPU or multi-core hardware. VAC implements multiple subdevices where most audio drivers implement only a single subdevice so this bug does not occur with most hardware audio drivers.

The problem is described in details in microsoft.public.development.device.drivers newsgroup. You can find the post, entering "skype portcls getmapping" in Google search string. Sorry, there is no stable link.

A possible workaround is to disable concurrent request processing in PortCls. For this, VAC offers two driver parameters to restrict CPU affinity of worker threads, belonging to KMixer or to any client. Create the appropriate value in the registry, setting it to a number of cables causing the problem, and restart VAC driver to propagate parameter changes.

I use applications accessing Virtual Cables via Kernel Streaming interface but sound is broken.

Maybe you have the same problem as with multiple Skype instances. If two applications (and even two threads in the same application) access PortCls simultaneously, it may cause buggy PortCls behavior. Try to restrict thread affinity for all clients.

I am trying to use VAC with iTunes and/or QuickTime but a sound is choppy.

iTunes uses QuickTime to play audio. To configure audio settings for iTunes, you must configure them for QuickTime instead.

To configure QuickTime audio settings, open its preferences by right-clicking QuickTime icon in system tray or by opening its applet in Windows Control Panel. Select SoundOut to display audio output settings page. In the playback device field, make sure that DirectSound interface type is selected, not the WaveOut (MME). If WaveOut is selected, change it to DirectSound and try to play again.

If DirectSound interface is already used but a sound is choppy, click Options to open advanced options page. Increase a buffering time in the FIFO size in millisecs field to 200..500 ms.

An audio signal passed via the cable becomes very quiet.

If stream format limiting is not used or upper number of channels is greater than in your stream format, KMixer creates its main stream with maximal allowed number of channels and converts your format, lowering channel volume.

To solve this problem, make sure stream format limiting mode is not set to "None" and correct upper channel limit for a particular cable.

I selected Virtual Cable N for the application but it still uses a different device.

Some audio software developers test their software in a typical system that has only a single audio device. In such case, this device always has ID 0 and is a system default. Even if such application allows to select audio device explicitly, it could have a bug due to that it always uses ID 0 (first available device) instead of particular device ID (1, 2 or more). If such application is tested only in a single-device environment, there are no other IDs than 0 and the bug may not be caught. Since most users, having single-device systems too, will
not report it, the bug may persist for a long time.

A similar bug may occur if an application always used ID -1 (a system default device) instead of real device ID.

If you select a particular device for playback/recording but the application remains to use a first available or system default device, try to contact application's developers and/or support sevice.

I use Remote Desktop connection (RDP) but there are no Virtual Cable devices.

There are two types of Windows remote connections: separate and direct ("console"). With desktop-sharing products like Remote Administrator, TeamViewer, LogMeIn or TightVNC, connections are established directly by translating screen updates from the server to your computer and translating your mouse/keyboard actions from your computer to the server. No separate logon session is created and your computer acts as a "remote console" for the server computer. Having such connection, you can use all server resources, feeling yourself like sitting at the server immediately.

If target (remote) system is a workstation (Windows 2000 Pro, XP, Vista, Win 7), Remote Desktop session is established as a direct/console session too. A local user, if any, is forcibly logged out and you are logged in instead, having his/her local desktop. To see Virtual Cable devices and control VAC driver from the Remote Desktop connection, you should specify "Leave at remote computer" for the "Remote computer sound" at the "Local resources" tab in the "Remote Desktop connection" dialog. When you request a connection, a simplified form of this dialog is present, containing only computer and user names. To view the "Local resources" tab, expand the dialog by clicking the "Options" button.

If target system is a server (Windows 2000/2003/2008 Server), it creates a separate logon session by default. A local user is not disturbed by a remote connection. Only a default local audio device is redirected to the new session. There is no way to use and control other local audio devices in such connection. To access them, you should connect to a "console" session like workstation systems do. It is possible using mstsc command with the "/console" option. In XP SP3, Vista and Win 7, the /console option is replaced with /admin.

In Server 2008, there is no way to connect to a console session via RDP. To see local audio devices, you should use desktop sharing software listed above.

See Windows Help for details.

Using VAC to route audio from the microphone, I hear an echo. How can I cancel it?

An echo can appear if your audio connection scheme has some loopbacks and/or multiple repeaters. For example, each audio card can repeat (monitor) an input signal to its own output (the speakers). If monitoring is enabled (input line is not muted), you will hear your voice in the speakers even there is no audio application running.

If an application records an input signal and also reproduces (repeats) it to the speakers, a signal copy is created, sounding as an echo. This copy appears slightly later due to the buffering. Input audio signal also could be copied to the speakers due to improper Virtual Cables assignment in applications.

To avoid an echo, you should disable either input line monitoring in the audio card or recorded data playback in the application. You can control audio card monitoring status (volume and mute) in its volume control panel (the mixer). To disable repeating in the application, see application's settings. Also check your Virtual Cable connection scheme to avoid possible loopbacks and parallel signal paths.

I started wave record, then run Cakewalk but there are no Virtual Cables in Cakewalk port list.

Cakewalk may behave slightly strange, querying audio devices upon startup only. During them, Cakewalk queries wave devices to know whether they support various audio formats or not. If wave device does not support a particular format, Cakewalk excludes it from available wave ports.

If the stream format limiting is enabled for a Virtual Cable, all wrong formats will be rejected. Thus, stop all activities for all cables whose you want to use in Cakewalk and/or disable stream format limiting. Then start Cakewalk, wait until it will be ready, and then restore previous settings/activities again.

I want to record a signal from (or play to) my favorite application but it does not allow me to set an audio format and starts using an unknown format automatically. How can I know which format it uses?

You can use VAC Control Panel which will show you formats that are currently in use with each cable. See the example.


Glossary

Audio Format

A digital audio stream is represented by a sequence of momentary amplitude values, or samples. All samples in the stream have the same bitness, or size: 8, 16, 20, 24 bits and so on. Sample size defines sample value range and a dynamic range of the digital sound in decibels, which is near to six times larger than sample size in bits.

Audio stream contains various number of parallel channels. Usually, audio streams have a single channel (mono) or two channels (stereo). Modern audio hardware and software support five, eight or even more channels (for example, Dolby 5.1, 7.1 etc.). In each sample block, called a frame, channel sample values are placed together, from left to right. In a single frame, all channel sample values are sampled simultaneously, in the same moment of time.

A sampling rate means how frequently sample values are measured on recording or converted to a signal amplitudes on playback. Sampling rate means how many frames (sample blocks, not individual channel sample values) are transferred within a second. This parameter is often called "samples per second" but it is correct only for a mono stream, when a frame contains a single sample value.

Sampling rate also defines an upper signal frequency available for coding; it is a half of a given sampling rate, in Hertz. To represent audio signal containing frequencies up to 16 kHz, at least 32000 samples (frames) per second is required.

A combination of the sampling rate, sample size and number of channels is called a digital audio format.

An audio format can be shortly specified as these three values: 44100/16/2 or (44100, 16, 2) means 44100 samples per second, 16 bits per sample and two channels (stereo).

Multichannel (more than 2 channels) formats also contain a channel configuration (distribution) parameter. It specifies how channel samples in an audio stream are directed to particular speaker channels. For example, a typical mono stream contains a single data channel directed to the front center speaker, and typical stereo stream contains a pair of channels directed to the front left and front right speakers. Channel configuration parameter allows different channel-to-speaker mappings.

See here how to set speaker configuration for an audio device.

Audio data encoding

Sample values can be represented using various encoding methods. A simplest and most widely used method is the Pulse Code Modulation (PCM) when a numeric sample values immediately represents a linear absolute signal amplitude.

There are compressed encoding methods (ADPCM, a-law, u-law, MPEG, WMA etc.). They allow to compress audio data but require more resources to process them and frequently cause quality loss.

VAC supports only fixed-point PCM encoding.

Audio interface

To communicate with an audio devices, each application must use some interface presented by Windows. Each interface consists of a set of functions and is restricted by a set of conditions and rules.

There are two major Windows audio interfaces now: MME (WaveIn/WaveOut) and DirectSound.

MME (MultiMedia Extensions) is an oldest audio interface introduced in Windows 3.0. it is intended for a streaming audio and has relatively high latency. Under Windows 9x/ME, MME interface uses old-style 16-bit code, as some other operating system parts. But MME is simple, exists in all Windows versions since 1991 and its behavior was not changed. Most audio applications can use MME interface.

DirectSound interface is relatively new, it has been introduced in Windows 95 as a part of the DirectX acceleration set. It combines a low-level, hardware-close, low-latency audio operations with a high-level, device-independent programming. Originally intended for games, DirectSound interface quickly became very popular in sound synthesis and recording/playback applications.

There is a third interface, Kernel Streaming, or WDM/KS Audio, the newest audio interface in Windows 98/2000 and later. WDM stands for the Windows Driver Model, an universal driver structure and behavior making available to use a single binary driver file in Windows 98/ME/2000/XP and higher systems. KS stands for the Kernel Streaming, the audio/video streaming technology of the Windows kernel. WDM/KS Audio is a sophisticated lowest-level interface including many new features, it allows to achieve high audio precision and lowest latency. In Windows 2000/XP and later, MME and DirectSound interfaces are implemented on top of the WDM/KS Audio interface. Windows 98/ME can also use WDM/KS Audio as a base for the MME and DirectSound but native VxD support can often be better.

Three interfaces described above are Windows standard ones. There are some third-party interfaces intended for professional audio processing. Most popular of them is Steinberg's ASIO (Audio Streaming Input/Output). ASIO is designed for extreme performance and precision. VAC doesn't directly support ASIO but there are some ASIO wrappers over WDM/KS like ASIO4ALL or ASIO2KS.

Audio Port

Each audio device in Windows is represented by its port. The port is a "logical" or "software" device connection point in the system. Audio device ports are called Wave ports. By example, a typical audio card has two wave ports: Wave Input and Wave Output. a recording port is used to record (capture) audio data to applications, and a playback port is used to play (render) audio data from applications.

The "port" term is almost not used in official documentation; the "device" term is used instead. It often causes misunderstanding when a single hardware device is represented by multiple software ports in the system. So VAC documentation uses the "port" term to represent a "software connection point".

In addition to traditional Wave (MME) ports, Windows supports DirectSound input and output ports. They are more closely linked to hardware and may work more efficiently than MME ports. In DirectSound, "input" and "output" terms are not used; "capture" and "playback" are used instead.

In WDM/KS model, "render" term is used instead of "output". A port means a pin, which has render or capture type.

Pin

In the WDM/KS driver technology, each device driver exports a set of pins. Each pin represents a device connection point: recording/capture, playback/render, volume control/mixer, clock and so on. A pin is a low-level synonym of a port. The "pin" term is similar to the "lead" in electronics.

When an application opens MME or DirectSound port, Windows creates an instance of the corresponding pin. Each pin instance forms a new audio stream. An application can create a pin instance directly, using WDM/KS interface instead of MME/DirectSound.

If the driver supports multiple pin instances, there can be multiple clients of a corresponding port. Most drivers support only a single pin instance so there can be only a single client (Windows Audio Subsystem or a WDM/KS application).

Source line

A typical audio adapter has a single digital recording channel that application can use to capture audio signal but several source (input) lines like Microphone, Line, Phone, CD and others. To capture audio signal coming from a particular source line, this line should be selected first. In Windows 2000/XP/2003, you need to use Windows Mixer application to select a source line. Windows Vista/Server 2008/Win 7 creates audio endpoints for this purpose.

As a virtual device, VAC has no real source lines. But some applications want to connect to a given line type (Microphone or S/PDIF) so VAC provides several fake source lines. All of them are identical but Windows can use different default settings for each line. For example, Vista/Server 2008/Win 7 uses less sampling rate recording from the Microphone line than from the Line In.

Source line set is a cable configuration parameter.

Audio endpoint

Windows versions prior to Vista/Server 2008/Win 7 create recording (capture) waveform audio port for each capture waveform device created by a driver. This recording audio port represent entire device that may have several source lines. Selecting such port in a recording application is not enough to record audio signal from a particular source line. A device mixer should be configured to select (connect) an appropriate source line before recording starts.

To eliminate this problem, Vista/Server 2008/Win 7 introduces a new thing called endpoint, or an "endpoint device". Instead of creating recording audio port from an entire device, Windows creates a separate endpoint from each device's source line, naming them like "Mic Volume (AC97 Audio)" or "Line In (AC97 Audio)", and exports them as a recording port set. When an application selects a particular endpoint as a recording port, Windows automatically selects appropriate source line in the device's mixer.

Since source lines in most audio devices are multiplexed, not mixed, only a single endpoint can be used for recording at a time. But VAC devices and their source lines are software-emulated so they are represented as "mixed" and several applications can record from different cable endpoints simultaneously.

In Vista/Server 2008/Win 7, some endpoints can be connected (plugged in) while other are unconnected (not plugged in). With a real hardware device, an endpoint can become connected when a connector is plugged into a jack. Only connected endpoints are available for playback/recording and visible in application's audio device list.

Please note that endpoint creation in Vista/Server 2008 and Win 7 is very slow process. For example, creation of 30-40 endpoints (when a driver is initially loaded or restarted) may require up to a minute of 100% CPU load on 2 GHz machine.

Stream

In general, a term "stream" is used to designate any kind of data stream (a continuous data flow). But in the WDM/KS model, this term is used to designate a data flow connected to a particular pin instance. Each new pin instance forms a new stream. Each stream has its own audio format. An application can be connected to a stream either directly or via the KMixer layer.

Client application

The application that uses an audio port and opens it, connecting to its driver, is called a client. Some audio drivers allow only single client per input (recording/capturing) port. VAC allows any number of clients to open each port.

If an application requests a port connection several times without closing it, it means the driver will have several clients. In other words, each port opening forms a new client. A client disconnects from the driver when it closes its port.

Audio buffers

All audio interfaces use audio buffer conception. A buffer is a memory block filled with audio data fragment. In MME, a buffer chain algorithm is used to interchange audio data between an application and the audio subsystem; application sends several buffers to driver, driver plays them or fills them with data, and returns them back to application. In DirectSound and WDM/KS, ring buffers are preferred; application allocates a single memory block, tells the driver which part of this block is ready for playback/recording, and the driver notifies the application when a fragment processing is done.

To maintain a smooth and continuous audio stream, an application must provide enough buffering time. Most applications use 500.1000 ms of buffering time, divided into 8..12 chain buffers in MME or to 4..32 circular buffer fragments in DirectSound and WDM/KS) . But the more buffering time, the more latency is introduced.

Cable format range

A range of audio formats allowed to be selected as a cable format. The wider this range is, the more formats are available to be chosen for a cable, the more often format conversion occurs. Format range is a cable configuration parameter.

Cable format

When a Virtual Cable gets its first input or output client (stream), a particular audio format is chosen as the cable format. Cable format parameters are determined from a first client (stream) format and the cable format range.

Internal mixing is performed in the cable format so all render/output stream data are converted to the cable format, and mixed results are converted from the cable format to capture/input stream formats. Cable format is fixed while a cable has at least one client (stream).

Stream format limiting mode

A rule to limit a new stream format. Mostly used to control automatic format selection features of KMixer. See here for details. Limiting mode is a cable configuration parameter.

KMixer

KMixer is a system audio filter (a special kind of an audio driver), a part of the Windows audio subsystem. KMixer acts as a "proxy" to each WDM/KS audio driver accessed via DirectSound or MME interfaces. In render/playback, KMixer mixes several audio streams from applications to a driver. In capture/record, KMixer splits an audio stream from the driver to several applications. KMixer also performs a format conversion so each application can use most convenient audio format even it is not really supported by the device.

When an application uses DirectSound or MME interfaces to connect to an audio device that has WDM/KS audio driver, a first pin instance is implicitly allocated KMixer. See Audio layering issues for details.

PortCls

PortCls stands for "Port Class Driver". It is Windows kernel-mode library (portcls.sys) that should be used by each audio miniport driver to connect to the system. PortCls receives all system requests, translates it and passes to a miniport driver.

In Windows XP on a multi-CPU/core hardware, PortCls has some bugs.

Latency

First, when an application and a driver deal with digital audio, they use memory buffers to store blocks of audio data. Second, to respond to a real-time event, an application or a driver needs some time, from microseconds to dozens of milliseconds. Due to buffering and processing delays, there are some time between actual audio signal arrived at a device input and digital sound block arrived in an application memory. This time period is called latency.

Interrupt

Due to a discrete nature of the digital audio, continuous digital audio stream transfer is performed in series of blocks. To transfer a stream from each cable's output port to its input port, VAC has internal timer that generates system interrupts allowing VAC to be called to transfer a next block of a stream. The more is interrupt frequency, the less is block size, the smoother is stream transfer, the more is system overhead.

Interrupt rate is a cable configuration parameter.

Mixer

In general, a mixer stands for a device that mixes several audio signals together and allows to control their volume, balance, timbre and other parameters. Almost each audio adapter has its own mixer that allows to select recording sources, change recording/playback levels, and so on. These features are called a "adapter mixer" or a "driver mixer".

Windows has a standard mixer control application that is often called a "Windows mixer". It can be invoked by double-clicking at a speaker icon in the system tray. A window with a set of sliders and check boxes is displayed. You can view the mixer in two modes: playback (the default) and recording. In playback mode, the mixer controls output audio lines available for playback and repeated (monitored) input lines routed to the output (speakers). In recording mode, the mixer controls input lines available for recording.

To configure mixer panel, open Options menu and select Properties. In the dialog, select a device you want to control, select a mode and check input/output lines you want to see in the panel.

Don't confuse Windows mixer control application with the Windows KMixer component.

System tray

System tray is a rightmost area of the horizontal taskbar or a lowest area of the vertical taskbar, where system clock and application icons are located.

Windows Control Panel

Windows Control Panel is a set of Windows built-in control and management applets. You can open it by clicking Start - Settings - Control Panel.

Don't confuse Windows Control Panel with VAC Control Panel.

Audio Properties Applet

Audio Properties Applet is a built-in Windows Control Panel applet that manages and controls multimedia and audio devices. The applet can be opened by two ways:

  • If there is a speaker icon in system tray, right-click it and select Adjust Audio Properties.

  • Open Windows Control Panel and open Sound and Audio Devices (in Windows XP/2003) or Sounds and Multimedia (in Windows 2000).

On the Audio tab, you can view and change default playback and recording devices, adjust DirectSound acceleration level, set speaker configuration and so on.

Windows Device Manager

Device Manager is a built-in Windows Management Console applet, displaying a device list and allowing to configure/reinstall them. Device Manager can be opened by several ways:

  • Right-click on My Computer and select Manage.
  • Right-click on My Computer, select Properties, open Hardware tab and click Device Manager.
  • Open Windows Control Panel, open Administrative Tools then open Computer Management.
Clock difference

Each asynchronous audio device, both hardware and software, has its own clock generator that controls data transfer rate and uniformity. Since clocks are different, there always is a little difference between their frequencies, and actual sampling rates are slightly different too. As a pair of a real watches, two asynchronous audio devices cannot have their data streams to flow in strict match, and one stream slowly forestalls while other stream is late. As a result, there will be some gaps or losses in the overall audio data stream.

VAC supports clock correction feature to minimize this effect.

System default (preferred) audio device

Windows supports up to 256 different MME audio devices (ports) for audio input and output. Any of them can be assigned as a system default, or a preferred device that is used by default. Such assignment can be performed using Audio Properties applet. In application's device selection menus, a default device appears as the "Microsoft Sound Mapper", "Wave Mapper", "System Default" or something like.

If an application issues a request to a default device, Windows routes it to an actual device that was previously set as a default.

Default audio devices are set at a per-user basis. For each user account, there are its own default recording and playback default device settings.

See the system default device issues for details.

Default audio format for a device

In XP/2003, Vista/Server 2008/Win 7, even single-client audio devices can be shared among several applications while each application can use its own playback/recording format. Windows audio subsystem needs to open a device with a format common for all these applications. But audio subsystem does not know which formats will be used in the future so it cannot choose a best format automatically.

For example, a first application requests to play back at 48000/16/2 and audio subsystem opens a device with the same format. But next application requests 96000/24/7.1. Since audio subsystem cannot re-open a device on the fly, it is forced to convert from 96000/24/7.1 to 48000/16/2, and audio quality is degraded.

Audio subsystem could open each device with its most wide format, but it involves unnecessary format conversions and audio degradation.

To control these issues, Vista/Server 2008 and Win7 maintain a default audio format for each playback and recording device. When a device is opened in shared mode, audio subsystem always use its default format. So you can freely choose between default formats to achieve either best audio quality or best performance or best compatibility.

Default formats can be chosen in the "Sound" applet from Windows Control Panel. Open "Playback" or "Recording" tab, double-click a device and open "Advanced" tab.

Administrator account

A privileged (superuser) account in the system. Applications that run from this account can perform various administrative actions. Since VAC is a device driver, a special privilege is required to install it into the system or to restart it, applying a configuration change.

In Windows 2000/XP/2003, any member of the "Administrators" group has such privilege and can perform these actions.

In Vista/Server 2008/Win 7, more strong security policy in used and most privileged actions can be performed only behalf on the built-in Administrator account (a pre-created, special account named "Administrator", having RID value 500). Other user accounts, named differently, may be restricted, even if they have "Administrator" type and are included into "Administrators" group.

To start an application behalf on the built-in Administrator account, either log in using "Administrator" as a user name or right-click an application icon and select "Run as administrator" item.

Digital signature

Digital signature is a special digital sequence to check data authenticity. If data are illegally modified (tampered with), their signature becomes invalid and it can be easily checked.

Windows uses two types of digital signatures for executable (PE) files:

  • Publisher signature is applied directly by a software publisher (vendor) using a publisher certificate and certify the file as authentic one. A publisher certificate is obtained once and then used to sign all developed software. Publisher certificates can be obtained from many companies but only six of them can issue certificates to sign Windows kernel-mode executables. These six companies issue publisher certificates only for companies (juridical persons), not for individuals (natural persons). Therefore, individual software developers cannot obtain a publisher certificate.
  • Windows Logo signature is applied by Microsoft Windows Hardware Quality Lab (WHQL) and certify the file as passed Windows-compliance tests. A software package is submitted to WHQL to test and if tests are successful, WHQL signs executable files as Windows-compliant. Windows Logo signature requires a publisher signature. WHQL must sign each software release, even a minor bugfix.


History

Version 4.10 (15.02.10)

  • Added IPrefetchOffset interface support (more stable audio in XP/Vista/Server 2008).

  • Added a workaround to avoid Skype freezing and to stabilize streaming in heavy load cases.

  • Changed voice reminder policy in trial version.

  • Added tray icon support to Audio Repeater.

  • Added Kernel Streaming version of Audio Repeater.

  • Added Wikipedia references in the user manual.

  • Fixed some bugs in volume control code.

  • Fixed a bug caused timer resolution restoration when a last cable stream was closed.

  • Added timer resolution correction on return from standby.

  • Added load splitting among CPUs/cores.

  • Added Authenticode digital signature from NTONYX.

  • Added instance closing feature to Audio Repeater.

Version 4.09 (11.06.08)

  • Fixed a bug caused system crash in case of incorrect volume settings.

  • Now multichannel nodes are exposed correctly (individual sliders instead of the Pan slider).

  • Fixed a bug caused break instruction crash (0x80000003) on a floating point format query.

  • Fixed a bug caused system crash in low memory situation.

  • Added a test signature to 64-bit driver module.

  • Increased average time interval between voice reminders in trial version.

  • Increased clock correction precision in Control Panel to 1/1000th of a percent.

Version 4.08 (14.09.07)

  • Clock correction amount is now represented and specified in percent values.

  • Changed clock correction algorithm to increase sampling rate precision.

  • Fixed a bug in the INF file that prevented Virtual Cables from being used via KS Proxy (for example, as a DirectShow WDM filter).

  • Fixed a bug in format checking code that limited number of channels to 2 under Vista.

Version 4.07 (28.06.07)

  • Removed another debug break instruction caused a bugcheck in rare cases.

Version 4.06 (15.05.07)

  • Fixed installer bug caused the driver to stay disabled after installation.

  • Removed a debug break instruction caused a bugcheck in rare cases.

Version 4.05 (12.05.07)

  • Added a clock correction feature.

  • Added configuration options for source line set (affects endpoint creation in Vista).

  • Changed service name in INF file to eliminate conflicts with VAC 3.

  • Added more correct multi-channel support under Vista.

  • Added a workaround for Vista portcls.sys bug (a miniport stream can be destructed without been stopped).

  • Removed the "Mic" source line (capture endpoint in Vista) from the default source line set.

  • Changed "Milliseconds per interrupt" default value to 7 to improve DirectSound stability.

  • Improved stream stability on short buffering times.

  • Changed the Control Panel interface.

Version 4.04 (31.12.06)

  • Fixed a bug in topology description (fake recording controls were not accessible).

  • Fixed some synchronization bugs (the system hangs while several cables are heavily used).

  • Added a pitch (frequency) shifting support.

  • Added a limited Vista support.

Version 4.03 (16.07.06)

  • Fixed a bug that caused change of signal pitch. This issue was previously considered as DirectSound bug and was described in FAQ section related to speech engines. This section has been removed from the FAQ.

Version 4.02 (22.05.06)

  • Added 64-bit binaries.

  • Some minor corrections.

Version 4.01 (24.03.06)

  • Fixed some bugs.

  • Changed default stream format limiting mode to the "Cable range".

Version 4.00 final release (06.03.06)

  • Fixed some bugs.

  • Added volume control features.

Version 4.00 beta 6 (27.02.06)

  • Fixed some bugs.

  • Added format conversion and stream format limiting features.

Version 4.00 beta 5 (16.12.05)

  • Fixed some bugs.

  • Added a manual file.

  • Installer/uninstaller improvements (administrator rights check, uninstallation entry creation in Add/Remove Programs).

Version 4.00 beta 4 (18.08.05)

  • Fixed some bugs.

Version 4.00 beta 3 (23.07.05)

  • Fixed some bugs.

  • Added installer/uninstaller.

Version 4.00 beta 2 (15.07.05)

  • Fixed some bugs.

  • Added Control Panel application is available.

Version 4.00 beta 1 (07.06.05)

  • First beta release (without an installer).