Re: [LAD] alsa seq client ids??

From: Clemens Ladisch <cladisch@email-addr-hidden>
Date: Wed Sep 12 2007 - 18:08:42 EEST

> On Wednesday 12 September 2007 14:00, IOhannes M zmoelnig wrote:
> > however i have found no way to find out, which clients are real midi
> > devices and which are not.

If your alsa-lib is new enough, you can try to check for
SND_SEQ_PORT_TYPE_HARDWARE.

Chris Cannam wrote:
> A user application therefore couldn't rely on the alsalib version number
> when trying to decide whether a client numbered 16 to 63 was system or
> hardware.

And there's userspace drivers for Bluetooth and Firewire.

> I assume it must be intended that ALSA applications treat these numbers as
> meaningless opaque identifiers; otherwise they wouldn't have been changed so
> lightly.

Indeed.

> But I don't see any alternative if you want to do autoconnection
> (even under user control). Many people here will argue that autoconnection
> is a bad idea in itself.

On my old SB-compatible card, opening the MIDI port will disable the
PCM device (or fail if the PCM is opened).

And what would the purpose be of automatically connecting to all
those ports, when there's more than one?
$ aplaymidi -l
 Port Client name Port name
 14:0 Midi Through Midi Through Port-0
 14:1 Midi Through Midi Through Port-1
 20:0 MPU-401 UART MIDI MPU-401 UART MIDI
 24:0 Yamaha DS-1E (YMF754) MIDI Yamaha DS-1E (YMF754) MIDI
 25:0 OPL3 FM synth OPL3 FM Port
 32:0 SC-8820 SC-8820 Part A
 32:1 SC-8820 SC-8820 Part B
 32:2 SC-8820 SC-8820 MIDI
 40:0 Virtual Raw MIDI 6-0 VirMIDI 6-0
 41:0 Virtual Raw MIDI 6-1 VirMIDI 6-1
 42:0 Virtual Raw MIDI 6-2 VirMIDI 6-2
 43:0 Virtual Raw MIDI 6-3 VirMIDI 6-3
 48:0 UM-2 UM-2 MIDI 1
 48:1 UM-2 UM-2 MIDI 2
 56:0 EMU10K1 MPU-401 (UART) EMU10K1 MPU-401 (UART)
 57:0 Emu10k1 WaveTable Emu10k1 Port 0
 57:1 Emu10k1 WaveTable Emu10k1 Port 1
 57:2 Emu10k1 WaveTable Emu10k1 Port 2
 57:3 Emu10k1 WaveTable Emu10k1 Port 3
 60:0 Serial MIDI Serial MIDI 1
 64:0 C-Media CMI8738-MC8 C-Media CMI8738-MC8 MIDI
(yes, I'm bragging :-)

> Also, note that you can't rely on the SND_SEQ_PORT_TYPE flags to tell you
> anything useful either.

They're strictly optional, but at least all the drivers set them.
(Both the in-the-kernel-but-virtual drivers, snd-virmidi and snd-seq-dummy,
set SND_SEQ_PORT_TYPE_SOFTWARE instead of _HARDWARE.)

Regards,
Clemens
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/mailman/listinfo.cgi/linux-audio-dev
Received on Wed Sep 12 20:15:02 2007

This archive was generated by hypermail 2.1.8 : Wed Sep 12 2007 - 20:15:02 EEST