Windows Wave Audio
Formats
supported by the Sonorus STUDI/O Drivers
This document discusses the buffer formats supported by the Windows Wave Audio Drivers for the Sonorus STUDI/O board. The relative efficiency of each format is given, a particularly important criterion for third-party software providers who wish to support large numbers of channels, i.e. more than sixteen. Many of these formats do not have standard format flags, but may be detected with device queries.
Two considerations affect data transfer efficiency - the data transfer mode and the interleave. The STUDI/O board uses two modes of data transfer over the PCI bus. The first mode, packed sixteen bit, transfers two audio samples per PCI cycle. Bit depths greater than sixteen are not supported in this mode. The second mode transfers one sample per PCI cycle and supports up to 24 bits/sample, naturally this requires twice as much bus bandwidth per sample. At the lowest level data is transferred to the STUDI/O board in individual channel buffers, de-interleaving samples adds overhead.
The bit depths supported are 8, 16, 20, 24 and 32. Twenty and Twenty-four bits are equivalent in terms of data transfer efficiency. Eight bit buffers are supported only for playback. They are supported only because it is possible for the STUDI/O board to accidentally become the default Windows sound device, especially if the system is configured to use the WaveMapper. If this happens when an eight bit system startup sound is enabled, Windows freezes on startup if the eight bit formats are not supported. The system endlessly tries to play a sound that the driver refuses to accept. Apparently MS never considered that a sound card might not support the eight bit format. Twenty-four bit audio is supported both in "packed" 24 bit buffers and in MS aligned 32 bit buffers with the bottom byte zero. Both consume the same PCI bus bandwidth, but the additional address arithmetic required for the 24 bit packed buffers make the 32 bit unpacked buffers preferable.
The following chart lists all supported formats and their relative efficiencies:
| Buffer formats | Efficiency in 16 bit mode |
Effciency in 24 bit mode |
| 8 bit monophonic (play only) | 3 | 5 |
| 8 bit multi-channel (play only) | 4 | 6 |
| 16 bit monophonic | 1 | 3 |
| 16 bit multi-channel | 2 | 4 |
| 24 bit monophonic | NA | 7 |
| 24 bit multi-channel | NA | 8 |
| 32 bit monophonic | NA | 1 |
| 32 bit multi-channel | NA | 2 |
Sonorus STUDI/O Driver Logical Devices
The STUDI/O board can appear to the Windows Sound System as a variable number of logical devices. The two optical interfaces map to any combination of sixteen monophonic devices, eight stereo devices, two eight channel devices or one sixteen channel device. In addition a "monitor" output device may be enabled . Signals sent to this device are added directly to the mix sent to the stereo DAC. Consequently, if all of the other mixer inputs are muted in the STUDI/O fader panel, this device works just like a stereo soundcard.
The logical devices are enabled in the "Appearance" section of the "Settings" tab in the device properties of each STUDI/O board installed. While any combination of logical devices can be enabled, applications cannot simultaneously use overlapping logical devices. If one application is using one stereo device, two of the mono devices, one of the eight channel devices, and the sixteen channel device for that board are unavailable until the stereo device is freed. Some of the drivers for the proprietary interfaces supported by STUDI/O (for example Steinberg's Cubase VST) reserve an entire board. In this case no wave audio logical devices will be available for that board.
It is also possible to use the STUDI/O board in modes that do not support all channels. For example, the STUDI/O board may be connected to two DAT machines. In this case the system has only four active channels. Channels that are not connected record silence and play into a bit bucket.
Why are there so many logical devices? Wave audio does not provide synchronization primitives for multiple devices. The best one can do if one wishes to start multiple devices playing or recording simultaneously is to start the devices sequentially. This may or may not lead to the desired result. In the case of the STUDI/O board, devices started playing sequentially could be out of sync by 64 samples if an interrupt occurs at an inopportune time. A synchronization mode exists which starts all channels with buffers queued when a key channel is started, but this is a kludge. The other solution for sample accurate device synchronization to use a larger logical device.
Each logical device currently supports two types of buffers, monophonic and the native number of channels of that logical device interleaved.