[linux-audio-dev] emu10k1 multichannel support

Aaron aamehl at pop.actcom.net.il
Sat Jan 22 17:30:20 UTC 2005


HI,

Slightly related.
I have a sound blaster and want something simple.

I want a way to use all outputs I want two speakers and a headset to
work. 

Now I can only have one or the other.

the regular speaker out and the rear speaker out seem to be mutually
exclusive.

I want actually a way to toggle:
speakers only
headset only 
both working.

I also wonder if there is a way to route different outputs to
different places:

I am using the headset and seperately my children are listening to
mp3s over the speakers. Is this possible?


It may be that the mixer is what is confusing me (and I am most
confused over it)

Any help would be most appreciated.

Also when will this patch appear in a released alsa package for
debian?


Thanks
Aaron
On Tue, Jan 18, 2005 at 06:40:37PM -0500 or thereabouts, Lee Revell wrote:
> I posted this to alsa-devel but since my previous post on this list
> generated a lot of interest, I am just reposting it here.
> 
> As promised, here's an updated patch to add real multichannel playback
> support (and improved multichannel capture) to the emu10k1 driver.
> 
> http://www.alsa-project.org/~rlrevell/emu10k1-multichannel-v001.patch
> 
> Please test it and report any problems.  I am especially interested in
> any regressions that impact regular PCM playback (the hw:0,0 device).
> 
> QuickStart:
> 
> $ jackd -R -v -d alsa -P hw:0,3 -C hw:0,2 -S
> 
> I tested this and it works well with 16in/16out at 128, 256, 512 frames.
> 32 and 64 should work too but I can't test as I'm running a stock 2.6.10
> kernel for now ;-).  You can check that the routing is correct by
> connecting a JACK client to the playback ports corresponding to the FX
> buses described in Documentation/Audigy-mixer.txt and
> Documentation/SB-Live-mixer.txt, and verifying that the output appears
> on that channel (the FX buses are numbered from 0 but JACK numbers
> clients from 1).  For example (from SB-Live-mixer.txt):
> 
>     name='Music Playback Volume',index=0
> 
>     This control is used to attenuate samples for left and right MIDI FX-bus
>     accumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
>     The result samples are forwarded to the front DAC PCM slots of the AC97 codec.
> 
> So "alsaplayer -o jack -d alsa_pcm:playback_5,alsa_pcm:playback_6"
> should output to FX buses 4 and 5, which you can test by lowering the
> 'Music' control in alsamixer.  With an SBLive, use ports 1 and 2 for the
> front channels, 3 and 4 for the rear channels.  The Audigy uses
> different channels, see the above docs for more info.
> 
> In addition to multichannel recording applications, this should also be
> useful for OpenAL implementations, which are currently restricted to
> using 21 sources due to the use of an extra voice per stereo PCM.  This
> should allow up to 63 sources.
> 
> This also adds some new register info including a per channel half loop
> interrupt that I have discovered by reverse engineering the Windows
> drivers.
> 
> Improvements over previous versions:
> 
>  - Routes the 16 channels to the 16 FX buses by default.
> 
>  - Enables the first 16 FX capture outputs by default, required for 
> full duplex operation at latencies lower than 512 frames.
> 
>  - Rewrote the voice allocator to use a more efficient round 
> robin algorithm, eliminating the need to reserve the
> first 16 voices for the multichannel device.  The next free voice 
> is maintained in the card record and the search starts from there.
> 
>  - Use an extra voice for playback timing rather than the EFX capture
> interrupt.  I was only ever able to get that to work at 64 frames.  Also
> there are definite advantages to being able to use the capture and
> playback devices independently.
> 
>  - Use the newly discovered per-channel half loop interrupt source for
> the extra voice rather than the channel loop interrupts.  For unknown
> reasons, this works better for multichannel playback, and does not seem
> to affect regular PCM playback at all.
> 
> TODO:
> 
>  - Fix the send routing and volume controls for the multichannel device.
> The current (copy and paste) solution assumes either one or two voices
> per PCM.  So the default settings work fine but changing them with the
> mixer is likely to have unpredictable effects.  
> 
>  - EFX capture should capture output channels 16-32 (mostly unused now)
> by default, so that we only capture the sources the user has connected
> to the multichannel recording inputs in the DSP manager.  Typically FX
> buses 0-15 would be connected directly to FX outputs 16-32 so the
> capture channels would correspond directly to the playback channels.  In
> order for this to work the default DSP configuration has to be changed
> slightly.
> 
> Lee



More information about the Linux-audio-dev mailing list