10
1 Configuration
Output Mixing
The Auricon 4.4 presents itself to the operating system as multiple
independent wave output devices. Each device can support any number of
output streams, courtesy of the Windows Kernel Mixer or Audio Engine.
The topology of each output device is shown below. It consists of the kernel
mixer that combines any number of individual waveOut and DirectSound
audio streams (applying sampling rate conversion if need be), followed
by the “Wave Out” level control. Midi and CD streams are also added at
this point. This is then followed by the Auricon mixer (implemented in the
on-card FPGA) that adds the input sources (four if configured as stereo and
Any Number Of Wave Out Streams
Windows Kernel Mixer
Auricon Mixer
Playback Master
Software Synth
Redbook
Analogue Input 1
Analogue Output
Analogue Input 2
Analogue Input 3
Analogue Input 4
Inputs 3 And 4 Only Present In Mono Configuration
Wave Out
Midi
Line Input 1
Line Input 2
Line Input 3
Line Input 4
CD
Any Number Of Direct Sound Streams
Direct Sound Stream
Direct Sound Stream
Wave Out Stream
Wave Out Stream
eight if configured as mono), master level control and peakmeter.
All level controls include a mute control as well.
Each waveOut stream is created by opening an instance of
the waveOut device. Each DirectSound stream corresponds to
a DirectSoundBuffer object. There is no limit to the number
of streams that can be opened on each device. Note that
with versions of Windows prior to Vista, only DirectSound
streams have individual level controls – these are set using
the DirectSoundBuffer.SetVolume method. The Windows
documentation suggests that waveOutSetVolume should also
adjust the level of individual waveOut streams but this doesn’t
seem to work - instead changing the level of one stream actually
changes the setting of the kernel mixer’s “Wave Out” fader and
thus affects the level of every stream on that device.
Fig 1-5: Output Mixing