[alsa-devel] [Portaudio] Recording devices opened mono still sending stereo causing corrupt audio
gineera at aspect135.co.uk
Fri Oct 11 15:07:14 CEST 2013
On Friday 11 October 2013 02:40, Sean M. Pappalardo - D.J. Pegasus wrote:
> I'm a developer for Mixxx, the cross-platform open-source DJ software
> which uses PortAudio and we've been trying for a long time to track down
> the cause of "horrible mic sound" as documented in our bug:
> The resulting recorded audio sounds about 50-60% lower pitch with
> crackles and it only happens with the ALSA API on Linux and only with
> certain (mostly Intel-based) audio devices.
> I have just discovered by testing in Audacity (which also uses PA) that
> the problem occurs when PA (and therefore ALSA) is asked to open just
> one channel of a sound input device yet the device (or ALSA) seems to
> stream two anyway. I have been able to reproduce the problem in Audacity
> (which also uses PA) when selecting the ALSA API and mono recording, but
> it works correctly when I change it to stereo recording.
> I'm suspecting there's a miscommunication between PA and ALSA or ALSA
> and the sound hardware where either the lower level is saying its
> input(s) can only be opened in stereo and the higher level (or the
> application above it) ignores that, or the lower level says it's fine
> opening mono but then misbehaves.
> How can I find out which, whether it's ALSA, PA, or the sound hardware
> at fault?
As one of those involved with Portaudio-Alsa, I have had a read through the
Mixx bug record (900364). I don't have any immediate candidates for the
cause, but here are a number of suggestions/questions that may help 'close
in' on the problem; any of these may give more insight.
Is the trouble ALWAYS associated with a duplex stream - ie does the Mic always
record fine when there is no simultaneous output to the same device? It may
be that Portaudio is mis-handling this case, mono input with stereo output.
Look at un-compressed bad recording (perhaps with Audacity) - are the samples
obviously duplicated (each level twice)? Perhaps post a short wav (1 sec) or
a screen shot. The compressed files don't show this, but may be smoothing it
Is Pulseaudio running on these systems? If so, try with that disabled
(pasuspender...) - in fact, for testing it is best to eliminate any effects
it may introduce unless it is implicated.
What Portaudio devices does this occur with? Is it only default/sysdefault,
or with the 'hw' devices?. If the hw ones, try setting the environment
variable PA_ALSA_PLUGHW to 1 before running the Mixx app in a terminal and
report if there is any change - that will enable channel adaption in Alsa.
Build the app with Portaudio debug enabled ( --enable-debug-output or define
PA_ENABLE_DEBUG_OUTPUT) and see the terminal output. Perhaps post it in
Build Portaudio stand-alone and run the test/example program pa_devs on the
troublesome system so we can see how the capabilities are reported.
There may be issues with how different Alsa soundcard drivers treat mono
microphone inputs. Some may output the same data to both channels, and
return twice as much data as expected. Pulseaudio, if operating, may also do
Hope this gives some avenues to pursue!
More information about the Alsa-devel