rawmidi.c Set a name for a newly allocated rawmidi substream
PATCH 1/1 rawmidi.c Set a name for a newly allocated rawmidi substream
Rationale: Bitwig Studio (and possibly other rawmidi clients) enumerate the Midi I/Os by substream names. With the current rawmidi implementation, the name is an empty string and only the USB mididriver changes it to a meaningful value after allocation.
This patch sets a default substream name of the form "somename x-y-z"
sound/core/rawmidi.c 2014-05-06 17:42:35.058097185 +0200 renamed from sound/core/rawmidi.c.orig 2014-05-06 20:25:33.683081389 +0200 +3 -0
@@ -34,6 +34,7 @@ #include <sound/control.h> #include <sound/minors.h> #include <sound/initval.h> +#include <linux/string.h> MODULE_AUTHOR("Jaroslav Kysela <[email protected]>"); MODULE_DESCRIPTION("Midlevel RawMidi code for ALSA.");
@@ -1420,6 +1421,8 @@ static int snd_rawmidi_alloc_substreams( substream->number = idx; substream->rmidi = rmidi; substream->pstr = stream; + snprintf(substream->name, sizeof(substream->name), + "%s %d-%d-%d", rmidi->id, rmidi->card->number, rmidi->device, idx); list_add_tail(&substream->list, &stream->substreams); stream->substream_count++; }
Quoted 3 lines · Ralf Beck
Rationale: Bitwig Studio (and possibly other rawmidi clients) enumerate the Midi I/Os by substream names. With the current rawmidi implementation, the name is an empty string and only the USB mididriver changes it to a meaningful value after allocation.
Many RawMIDI devices have only one substream, or multiple substreams that are merged into one port. For these, separate substream names do not make sense.
Quoted 1 line
This patch sets a default substream name of the form "somename x-y-z"
The ID string is not meant to be a name.
Also see Documentation/SubmittingPatches.
sound/core/rawmidi.c 2014-05-06 17:42:35.058097185 +0200 static int snd_rawmidi_alloc_substreams( · line 1424
Quoted 5 lines
sound/core/rawmidi.c 2014-05-06 17:42:35.058097185 +0200 renamed from sound/core/rawmidi.c.orig 2014-05-06 20:25:33.683081389 +0200 +1
-0@@ -1420,6 +1421,8 @@ static int snd_rawmidi_alloc_substreams( substream->number = idx; substream->rmidi = rmidi; substream->pstr = stream; + snprintf(substream->name, sizeof(substream->name),
Your mailer broke whitespaces.
Regards,
Clemens
Am 07.05.2014 19:39, schrieb Clemens Ladisch:
Quoted 3 lines
Quoted 1 line · Ralf Beck
Rationale: Bitwig Studio (and possibly other rawmidi clients) enumerate the Midi I/Os by substream names. With the current rawmidi implementation, the name is an empty string and only the USB mididriver changes it to a meaningful value after allocation.
Many RawMIDI devices have only one substream, or multiple substreams that are merged into one port. For these, separate substream names do not make sense.
Any having no substream name at all makes more sense?
Quoted 2 lines
Quoted 1 line
This patch sets a default substream name of the form "somename x-y-z"
The ID string is not meant to be a name.
Would it be acceptable, if i remove the ID string and only return x-y-z ? Other than the alsa developers i would call creating rawmidi substreams, but not assigning a name to them a bug.
Best regards,
Ralf
Quoted 7 lines · Ralf Beck
Am 07.05.2014 19:39, schrieb Clemens Ladisch:
Quoted 4 lines
Quoted 1 line · Ralf Beck
Rationale: Bitwig Studio (and possibly other rawmidi clients) enumerate the Midi I/Os by substream names. With the current rawmidi implementation, the name is an empty string and only the USB mididriver changes it to a meaningful value after allocation.
Many RawMIDI devices have only one substream, or multiple substreams that are merged into one port. For these, separate substream names do not make sense.
Any having no substream name at all makes more sense?
The device itself already has a name.
Apparently, Bitwig has not been tested with any driver except snd-usb-audio.
Quoted 5 lines
Quoted 3 lines
Quoted 1 line
This patch sets a default substream name of the form "somename x-y-z"
The ID string is not meant to be a name.
Would it be acceptable, if i remove the ID string and only return x-y-z ?
No; you should use the device name or something like that.
But the substream name buffer is rather short; a better idea would be to fix all rawmidi drivers to set the substream name(s) to the appropriate value.
Quoted 2 lines
Other than the alsa developers i would call creating rawmidi substreams, but not assigning a name to them a bug.
For most drivers, substreams do not have a logical identity separate from the device.
Regards,
Clemens