On Wed, 16 Oct 2002, Clemens Ladisch wrote:

> karsten wiese wrote:
> > here is the routine that is used in snd-usb-us428:
> > ...
> > its a copy-change of usb-audio. something wrong here ?
> 
> No, it's fine. The problem is elsewhere.
> 
> > > IMHO the "best" solution would be to add a quirk to
> > > usbaudio.c, (...) (I'm sure I've missed something.
> > > :)
> > the us-428 audio is very nonstandard:
> > it is necessary to know how many frames are just
> > recorded to be able to playback without unwanted
> > crackles.
> 
> I.e. an asynchronous endpoint without frequency feedback? :-(
> There isn't a second endpoint in the playback interface?
> 
> > furthermore there are the hardware knobs, sliders and lights,
> > the digital in switch....
> 
> ... and I guess those aren't in any way compatible with USB audio mixer
> controls.
> 
> > > Autoloading happens if there is an alias for
> > > snd-card-x (x derived from
> > > the client number) in modules.conf, ...
> >
> > I put a line
> > "alias snd-card-1 snd-usb-midi"
> > (the us-428 is my second card)
> > into modules.conf. is it this what you suggest?
> 
> No, the alias should be for the card driver:
>   alias snd-card-1 snd-usb-us428
> 
> > unfortunately the autoload still does not happen.
> 
> Autoloading works for sequencer ports and for "real" rawmidi devices,
> but not for rawmidi devices emulated on top of a sequencer port.
> 
> Takashi, would it be possible/desirable to change snd_rawmidi_hw_open()
> to load sequencer drivers if the card driver is loaded but the rawmidi
> device doesn't exist?
> Something like:
> 
>       if ((fd = open(filename, fmode)) < 0) {
> -             snd_card_load(card);
> +             card_loaded = snd_card_load(card) == 0; // 0 or 1?
> -             if ((fd = open(filename, fmode)) < 0) {
> +             fd = open(filename, fmode);
> +             if (card_loaded && fd < 0) {
> +                     load_seq_dev(...); // hw_open, get_client_info ?
> +                     fd = open(filename, fmode);
> +             }
> +             if (fd < 0) {
>                       snd_ctl_close(ctl);
>                       SYSERR("open %s failed", filename);
>                       return -errno;
>               }
>       }

It looks ugly. Wouldn't be better to create a direct rawmidi USB driver?
Could you remind me reason, why you parse sequencer events? There's
something special for USB?

                                                Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project  http://www.alsa-project.org
SuSE Linux    http://www.suse.com



-------------------------------------------------------
This sf.net email is sponsored by: viaVerio will pay you up to
$1,000 for every account that you consolidate with us.
http://ad.doubleclick.net/clk;4749864;7604308;v?
http://www.viaverio.com/consolidator/osdn.cfm
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to