On Sun, 19 Oct 2003, Frank Barknecht wrote:

> Hallo,
> Mark Constable hat gesagt: // Mark Constable wrote:
>
> > On Sun, 19 Oct 2003 05:21 am, Bob Rossi wrote:
> > > ...
> > > Does anyone know how to get OSS applications to use the aoss wrapper
> > > with dmix in order to get software mixing to work?
> > >
> > > Any help would be really appreciated. Does using dmix allow multiple
> > > applications to open /dev/dsp?
> > >
> > > What about /dev/mixer?
> > >
> > > It would be extremely helpfull to see a full example of how to set this
> > > up. I don't think there is such an example on the web.
> >
> > Sorry I can't help with your question but if anyone can come
> > up with a working example could they please please please put
> > the info on the Wiki at http://alsa.opensrc.org for the rest
> > of us. Thanks heaps.
>
> I don't want to put half tested things up there, but if some people
> could try the following:
>
> 1) Install aoss, alsaplayer, mpg123(rsp. mpg321)
>
> 2) Test basic dmix on alsa with:
>
>    alsaplayer -o alsa -d plug:dmix some.mp3 &
>    aplay -D plug:dmix some.wav &
>    alsaplayer -o alsa -d plug:dmix some.mp3 &
>
> This should work everywhere with ALSA 0.9.7.
>
> 3) configure asoundrc for aoss-testing:
>
>       # ~/.asoundrc:
>
>       pcm.dsp0 {
>                       type plug
>                       slave.pcm "hw:0"
>       }
>       # or:
>       #  pcm.dsp0 pcm.default
>       # if "default" hasn't been redefined
>
>       ctl.mixer0 {
>                       type hw
>                       card 0
>       }
>
> 4) Test aoss with mpg123 in oss mode:
>
>       aoss mpg123 some.mp3
>
> This should play the file, but not yet "dmix"ed.
>
> Now comes the tricky and rather difficult part: redefinig dsp0 to be
> some kind of dmix.
>
> 5) The simple approach:
>
>       # ~/.asoundrc
>       pcm.dsp0 {
>                       type plug
>                       slave.pcm "dmix"
>       }
>       # mixer0 can stay unchanged, because it isn't used anyway, I guess
>       # ;)
>       ctl.mixer0 {
>                       type hw
>                       card 0
>       }
>
> Test this setup with mpg123 like under 4). This should enable dmixed
> OSS playback, but it will not work on cards like the M-Audio
> Audiophile or other Delta cards, that need a certain audio data format
> for playback on hw:0 (which dmix uses by default).
>
> 6) The complex approach (defining dmix parameters)
>
> Because of the format conversion we need to create a custom dmix
> device. I call it ossmix.
>
>
>       pcm.ossmix {
>                       type dmix
>                       ipc_key 1024      # must be unique!
>                       slave {
>                                       pcm "hw:0,0"      # you cannot use a "plug" 
> device
>                                                         # here, darn.
>                                       period_time 0
>                                       period_size 1024  # must be power of 2
>                                       buffer_size 8192  # dito.
>                                       #format "S32_LE"
>                                       #periods 128      # dito.
>                                       #rate 8000        # with rate 8000 you *will* 
> hear,
>                                                         # if ossmix is used :)
>                       }
>       # bindings are not actually needed:
>       #               bindings {
>       #                               0 0
>       #                               1 1
>       #               }
>       }
>
>       pcm.dsp0 {
>                       type plug
>                       slave.pcm "ossmix"         # use our new PCM here
>       }
>       # mixer0 like above
>       ctl.mixer0 {
>                       type hw
>                       card 0
>       }
>
>
>
> It is important, that this "ossmix" PCM works with your card in ALSA
> mode.  That is, the following should produce sound:
>
>       alsaplayer -o alsa -d ossmix some.mp3
>
> It does not do so here, yet:
>
>       $ alsaplayer -d ossmix
>       error on set_format SND_PCM_FORMAT_S16_LE
>       Unavailable hw params:
>       ACCESS:  RW_INTERLEAVED
>       FORMAT:  S32_LE
>       SUBFORMAT:  ALL
>       SAMPLE_BITS: ALL
>       FRAME_BITS: ALL
>       CHANNELS: 2
>       RATE: 48000
>       PERIOD_TIME: (21333 21334)
>       PERIOD_SIZE: 1024
>       PERIOD_BYTES: ALL
>       PERIODS: (6 7)
>       BUFFER_TIME: (136520 136521)
>       BUFFER_SIZE: 6553

You see it. The maximum buffer size for your case (ICE1712 chip) is 6553
frames (262144 bytes / 4 (bytes per 32-bit sample) / 10 (playback
channels)). So you should define the buffer_size to next lower value which
matches power of two rule (and it's 4192).

>       BUFFER_BYTES: ALL
>       TICK_TIME: ALL
>
> What *does* work, however, is this:
>
>       alsaplayer -o alsa -d plug:ossmix some.mp3

Sure, ALSA applications are not restricted with the power of two
constraint.

                                                Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs


-------------------------------------------------------
This SF.net email sponsored by: Enterprise Linux Forum Conference & Expo
The Event For Linux Datacenter Solutions & Strategies in The Enterprise 
Linux in the Boardroom; in the Front Office; & in the Server Room 
http://www.enterpriselinuxforum.com
_______________________________________________
Alsa-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to