Hello!

I'm happy to see that I'm not the only MIDI guy at ALSA-USB world :)

El Dom 28 Jul 2002 23:39, Martin Langer escribió:
> my new USB-MIDI-Keyboard has two USB subclasses usb-midi and usb-audio.
> Evolution, the manufacturer, told me "it's an Audio Class compliant
> device", but I don't find a new entry in /proc/asound/seq/clients after
> loading the modules.
>
> cat /proc/bus/usb/devices
>
> T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
> D:  Ver= 1.00 Cls=01(audio) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> P:  Vendor=0a4d ProdID=008e Rev= 2.00
> S:  Manufacturer=Evolution Electronics Ltd.
> S:  Product=MK-249C USB MIDI keyboard
> C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=  0mA
> I:  If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
> I:  If#= 1 Alt= 0 #EPs= 2 Cls=01(audio) Sub=03 Prot=00 Driver=snd-usb-midi
> E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
> E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
>
>
> dmesg:
>
> usb.c: registered new driver snd-usb-audio
> usb.c: snd-usb-audio driver claimed interface dfe688c0
> usb.c: registered new driver snd-usb-midi
> snd-usb-midi: using interface 1
> snd-usb-midi: MIDIStreaming version 01.00
> snd-usb-midi: using 1 input jack(s) on endpoint 1
> snd-usb-midi: using 1 output jack(s) on endpoint 2
> snd-usb-midi: detected Evolution Electronics L MK-249C USB MIDI keyboa
> usb.c: snd-usb-midi driver claimed interface dfe688d8
>
>
>
> It's not typical to have a midi-keyboard with two subclasses, or?

IMHO, those descriptors are very close to the USB-Audio specification. Your 
keyboard presents two interfaces: an AudioControl interface (Sub=01) and a  
MIDIStreaming one (Sub=03). Perhaps the snd-usb-audio claims making a very 
quick decision based only on the AudioControl interface. The AudioStreaming 
interface is Sub=02, and your keyboard has not one.

I am using two USB MIDI devices at home, both with the snd-usb-midi driver; an  
Edirol UM-2 (semi-compliant) and a Midiman Midisport 2x2, with a nice GPL  
firmware by Lars Doelle, that tryes to follow the standard. FYI, these are my 
last device descriptors:

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0763 ProdID=1110 Rev= 0.01
S:  Manufacturer=Midiman
S:  Product=Midisport 2x2
S:  SerialNumber=Copyright (GPLv2) 2001 by Lars Doelle 
<[EMAIL PROTECTED]>
C:* #Ifs= 2 Cfg#= 1 Atr=00 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=(none)
I:  If#= 1 Alt= 0 #EPs= 2 Cls=01(audio) Sub=03 Prot=00 Driver=snd-usb-midi
E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms

As you can see, very similar to yours.

You can find the specs at http://www.usb.org/
The relevant documents about USB Audio Class and USB MIDI subclass are:
- Universal Serial Bus Revision 1.1 specification,
http://www.usb.org/developers/data/usbspec.zip
- Audio Device Document 1.0,
http://www.usb.org/developers/data/devclass/audio10.pdf
- USB MIDI Devices 1.0,
http://www.usb.org/developers/data/devclass/midi10.pdf


> ... and doing rmmod snd-usb-midi and rmmod snd-usb-audio ends here with
> Segmentation fault:
>

I can't reproduce this behaviour at home. Perhaps the jack or endpoint 
descriptor parser in snd-usb-midi gets confused for your keyboard. AFAIK, the 
MK-249C is not listed as tested or supported, though.

What I do is blacklist all the snd-usb-* and the corresponding usb oss 
modules, avoiding hotplug from loading them. Instead, the /etc/init.d/alsa 
boot script loads them, with some /etc/modules.conf lines like these:

alias char-major-14 soundcore
alias char-major-116 snd
alias snd-card-0 snd-ens1371
alias snd-card-1 snd-usb-midi
alias sound-slot-0 snd-card-0
alias sound-slot-1 snd-card-1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

This is not very coherent with the usual USB devices hotplugging capabilities, 
but you have the chance of setting some options. Anyway, if your device is 
not 100% standard, perhaps you have to tweak the alsa-driver/usb/usbmidi.c 
file (search for 'snd_usbmidi_usb_id_table').

Another option is to use the daemon, that runs in userspace, and perhaps can 
be easy for experiment with it, along with hotplug.
You can find it at: http://www.informatik.uni-halle.de/~ladischc/usbmidid.html


Regards,
Pedro



-------------------------------------------------------
This sf.net email is sponsored by: Dice - The leading online job board
for high-tech professionals. Search and apply for tech jobs today!
http://seeker.dice.com/seeker.epl?rel_code=31
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to