All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Martin Koegler <martin.koegler@chello.at>
Cc: alsa-devel@alsa-project.org, Clemens Ladisch <clemens@ladisch.de>
Subject: Re: [PATCH] Provide card number / PID via	sequencer	client info
Date: Wed, 17 Feb 2016 15:07:25 +0100	[thread overview]
Message-ID: <s5h7fi34ehu.wl-tiwai@suse.de> (raw)
In-Reply-To: <20160216182137.GA21791@mail.zuhause>

On Tue, 16 Feb 2016 19:21:37 +0100,
Martin Koegler wrote:
> 
> On Tue, Feb 16, 2016 at 10:27:20AM +0100, Takashi Iwai wrote:
> > On Tue, 16 Feb 2016 09:59:37 +0100,
> > > >>>> Aren't they currently ports?
> > > >>>> seq_midi.c creates just one sequencer device per card number.
> > > >>>
> > > >>> Look at cards with synth support, e.g. emu10k1 or OPL3/OPL4.
> > > 
> > > Or snd-virmidi.
> > > 
> > > >> Should I export the client_index parameter of snd_seq_create_kernel_client too?
> > > >
> > > > Well, I'd rather ask what are the requirements -- in wide ranges.
> > > 
> > > The original requirement was just the ability to get the card name.
> > 
> > Yep.  And it's the assumption of only rawmidi, I suppose.  How would
> > it differentiate from synth?
> 
> My users are using a few identical USB MIDI keyboards [or USB MIDI interfaces] and
> I need to recognize the devices even after reboot. 
> 
> => I want a stable, unique (composite) device ID for kernel sequencer clients+ports.
> 
> My current ID is: client name, sysfs-path and port number.
> 
> The sound card number allows to find the device in sysfs and determine the used USB port as stable identifier.
> I hope, that the registration order for the ports of one USB MIDI device [or sound card] will always be the same.
> 
> see my prototype: https://build.opensuse.org/package/view_file/home:e9925248:branches:openSUSE:Leap:42.1:Update/grandorgue/0001-Add-support-for-unique-device-IDs.patch?expand=1
> 
> OPL3/4 + emuXXX synth register with a different name, so they should be distinct. 

Yeah, there is a difference, of course.  But the identifying by the
name string suffices?  In other words, how would user-space identify
the client at best?  Passing another attribute to client_info like
port type?


> > > > And, as mentioned, some cards provide indeed multiple clients.  How do
> > > > you identify which client is for what?  So far, it's identified only
> > > > from the name string and the type bits of each port.  Isn't it enough?
> > > > If not, what have to be provided?
> > > 
> > > This patch is about the card.  If we really need a method to identify
> > > the device, we can still add it later -- this patch does not obstruct
> > > such an extension.
> > 
> > Sure, it won't conflict.  But, the question is (back to square)
> > whether it's enough.
> > 
> > If we know that we shall change the API again, it's better to consider
> > the design well from the beginning.  A short-living API version bump
> > is the thing we should avoid as much as possible.  It's nothing but a
> > needless stress for maintainers :)
> > 
> > That said, I'm not particularly against the currently proposed change.
> > My only concern is whether we need any further change in (near)
> > future.
> 
> +1
> 
> I just ask myself, if the device index would provide any useful information.
 
Which "device index" do you mean?  The index passed at created
snd_seq_create_kerne_client()?

> I don't know, how to map it to a anything below the soundcard in sysfs. 
> Is the device ID dymanic? [= Are they depending, if I first load the rawmidi module and then the synth module or the other way around].

If you mean about the client index offset, then usually they are fixed
by each driver.  And even the client id number is fixed (up to 4
clients per card):
  client = 16 + card * 4 + index.

So, in most case, the card number can be calculated even without the
new information.  But, this is rather heuristic, and a clear mapping
would be better, of course.


Takashi

  reply	other threads:[~2016-02-17 14:07 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-13 13:42 [PATCH] Provide sequencer sound card number / PID via alsa-lib Martin Koegler
2016-02-13 13:42 ` [PATCH] Show sequencer sound card numer/PID via aconnect Martin Koegler
2016-02-13 13:42 ` [PATCH] Provide card number / PID via sequencer client info Martin Koegler
2016-02-15 10:30   ` Takashi Iwai
2016-02-15 10:37     ` Clemens Ladisch
2016-02-15 18:32     ` Martin Koegler
2016-02-15 19:08       ` Takashi Iwai
2016-02-15 21:44         ` Martin Koegler
2016-02-15 22:34           ` Takashi Iwai
2016-02-16  8:03             ` Martin Koegler
2016-02-16  8:41               ` Takashi Iwai
2016-02-16  8:59                 ` Clemens Ladisch
2016-02-16  9:27                   ` Takashi Iwai
2016-02-16 18:21                     ` Martin Koegler
2016-02-17 14:07                       ` Takashi Iwai [this message]
2016-02-17 21:30                         ` Martin Koegler
2016-02-15 10:39 ` [PATCH] Provide sequencer sound card number / PID via alsa-lib Clemens Ladisch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5h7fi34ehu.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=clemens@ladisch.de \
    --cc=martin.koegler@chello.at \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.