[pulseaudio-discuss] Recording from USB devices without channel mixing

Tanu Kaskinen tanuk at iki.fi
Wed Mar 2 11:51:26 UTC 2016


On Wed, 2016-03-02 at 11:41 +0100, Klaus Jaensch wrote:
> Am 01.03.2016 um 15:44 schrieb Tanu Kaskinen:
> > On Tue, 2016-03-01 at 14:40 +0100, Klaus Jaensch wrote:
> > > Am 01.03.2016 um 11:19 schrieb Tanu Kaskinen:
> > > > On Mon, 2016-02-29 at 17:33 +0100, Klaus Jaensch wrote:
> > > > > I'm wondering why it is the default to mix the channels.
> > > > If there's a device with channel map "front-left,front-right", and a
> > > > capture stream appears that has channel map "mono", do you wish that
> > > > pulseaudio would by default take audio only from the left channel? Why
> > > > would that be more likely what the user wants, rather than taking audio
> > > > from all channels the device has, or only from the right channel?
> > > Yes. If the user wants only the left channel he has no chance to do so.
> > > (Without changing the configuration.)
> > > You can't split the mixed channels later. The only way is to record
> > > stereo and split the channels later.
> > > 
> > > If you want a mix of both channels  it is always possible to record
> > > stereo and mix it later.
> > > 
> > > Another problem with mixing is that the level meter of applications like
> > > audacity show the amplitude of the mix. If you do not know that the
> > > level meter shows only half of the dynamic range (-6dB) if only one
> > > microphone is plugged to the left channel it is likely that you overmodulate
> > > the recording.
> > > 
> > > And as far as I know it is the default on Windows and Mac OS X to record
> > > only the left channel. I've checked this with some of our USB audio devices.
> > It could be also argued that if the recording application wants to pick
> > just one specific channel, it should set the stream channel map
> > accordingly. But after pondering this for a bit, I think I agree it
> > would probably good to map mono recording streams only to the first
> > channel (usually left) of the device by default. This is, however, one
> > of those "patches welcome" situations - I don't think I'll have time to
> > implement this myself.
> I will see if I can do that. Could you point me to the code location 
> where the channel mixing is done?

setup_remap() in src/pulsecore/resampler.c does the decisions about
what channel goes where. Currently the function doesn't have knowledge
about which of the input and output is the stream and which is the
device. I don't think the proposed change makes sense in playback use
cases, so only recording use cases should be affected, so the
stream/device split needs to be made known to setup_remap().

-- 
Tanu


More information about the pulseaudio-discuss mailing list