BTW, I did trace back the source of this "uncalled for" conversion and it shows up as early as CMiniportWaveCyclic::NewStream(). Since I never call this function directly, I must assume that it is a system callback in response for some WaveXXX (or DirectSound) API (it is actually an implementation of the IMiniportWaveCyclic::NewStream() interface). It seems that the audio system decides to convert the mono signal to stereo in order to support simultenaous output to both speakers. But... if I have only one "speaker", how do I tell that to the system? I tried modifying MAX_CHANNELS_PCM in simple.h from 2 to 1, but all it did was trunctaing alternate frames by half - which is even worse than having consistently duplicate stream. Any idea? Thanks, Don On 5/4/07, Don Bell <0dbell@xxxxxxxxx> wrote:
I have written a virtual audio driver based on MSVAD. It works but... when I try to play through Sound Recorder a Mono .wav file, "somebody" (either Sound Recorder or the driver itself) insists on setting nChannels = 2 (instead of 1) in CMiniportWaveCyclicStreamMSVAD::SetFormat(). I can see this clearly in the debug trace. Why??? Is there a rule that states that every Mono signal needs to be converted on playback to Stereo? (so that in sounds equally on both speakers, giving the illusion of mono)? How do I force the driver to always set nChannels = 1 (mainly to cut bandwidth requirements to half, but also to simplify frame handling). I would appreciate any tip or hint in the matter. Many thanks in advance, Don
****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/