Re: [PATCH 03/36] ALSA: rawmidi: UMP support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 22 May 2023 08:34:20 +0200,
Jaroslav Kysela wrote:
> 
> On 19. 05. 23 11:30, Takashi Iwai wrote:
> > This patch adds the support helpers for UMP (Universal MIDI Packet) in
> > ALSA core.
> > 
> > The basic design is that a rawmidi instance is assigned to each UMP
> > Endpoint.  A UMP Endpoint provides a UMP stream, typically
> > bidirectional (but can be also uni-directional, too), which may hold
> > up to 16 UMP Groups, where each UMP (input/output) Group corresponds
> > to the traditional MIDI I/O Endpoint.
> > 
> > Additionally, the ALSA UMP abstraction provides the multiple UMP
> > Blocks that can be assigned to each UMP Endpoint.  A UMP Block is a
> > metadata to hold the UMP Group clusters, and can represent the
> > functions assigned to each UMP Group.  A typical implementation of UMP
> > Block is the Group Terminal Blocks of USB MIDI 2.0 specification.
> > 
> > For distinguishing from the legacy byte-stream MIDI device, a new
> > device "umpC*D*" will be created, instead of the standard (MIDI 1.0)
> > devices "midiC*D*".  The UMP instance can be identified by the new
> > rawmidi info bit SNDRV_RAWMIDI_INFO_UMP, too.
> > 
> > A UMP rawmidi device reads/writes only in 4-bytes words alignment,
> > stored in CPU native endianness.
> > 
> > The transmit and receive functions take care of the input/out data
> > alignment, and may return zero or aligned size, and the params ioctl
> > may return -EINVAL when the given input/output buffer size isn't
> > aligned.
> > 
> > A few new UMP-specific ioctls are added for obtaining the new UMP
> > endpoint and block information.
> > 
> > As of this commit, no ALSA sequencer instance is attached to UMP
> > devices yet.  They will be supported by later patches.
> > 
> > Along with those changes, the protocol version for rawmidi is bumped
> > to 2.0.3.
> > 
> > Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
> 
> Reviewed-by: Jaroslav Kysela
> 
> except:
> 
> > +/* UMP Endpoint information */
> > +struct snd_ump_endpoint_info {
> > +	int card;			/* card number */
> > +	int device;			/* device number */
> 
> I suspect that those two fields were added to enumerate devices in the
> control API. But this extension seems to be missing in your
> patches. There is only SNDRV_CTL_IOCTL_UMP_NEXT_DEVICE
> implemented. Otherwise those two fields are not useful.

The SNDRV_CTL_IOCTL_UMP_NEXT_DEVICE is looping over rawmidi, and
snd_rawmidi_info is provided for (kernel) UMP implementation.

I took over those fields from snd_rawmidi_info, and they are supposed
to be referred rather from sequencer clients/ports (as well as from
the UMP rawmidi).  Then it could be useful when a user-space sequencer
client implements the UMP in future, and distinguish its identity.

But, it's no big deal to drop those, too.


thanks,

Takashi



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux