[alsa-devel] [PATCH 05/15] ALSA: dice: Add support for MIDI capture/playback

Takashi Sakamoto o-takashi at sakamocchi.jp
Mon Dec 8 01:50:10 CET 2014


On Dec 8 2014 06:44, Clemens Ladisch wrote:
> Takashi Sakamoto wrote:
>> This commit adds a support for MIDI capture/playback
>>
>> +++ b/sound/firewire/dice/dice-midi.c
>> +static int capture_open(struct snd_rawmidi_substream *substream)
>> +{
>> ...
>> +}
>> +
>> +static int playback_open(struct snd_rawmidi_substream *substream)
>> +{
>> ...
>> +}
> 
> These two functions are identical.
> 
>> +static int capture_close(struct snd_rawmidi_substream *substream)
>> +{
>> ...
>> +}
>> +
>> +static int playback_close(struct snd_rawmidi_substream *substream)
>> +{
>> ...
>> +}
> 
> These two too.

Indeed. We can use the same functions for each of MIDI open/close callback.

>> +static void set_midi_substream_names(struct snd_dice *dice,
>> +				     struct snd_rawmidi_str *str)
>> +{
>> +	list_for_each_entry(subs, &str->substreams, list) {
>> +		snprintf(subs->name, sizeof(subs->name),
>> +			 "%s MIDI %d", dice->card->shortname, subs->number + 1);
> 
> This is not really important, but the number is useless when the
> device has only one MIDI port.

Fireworks/BeBoB/Dice/OXFW drivers have the same codes to name MIDI
ports. So I want to change them in the same time, later.

This below code is for your idea.

static void set_midi_substream_names(const char *shortname,
                                     struct snd_rawmidi_str *str)
{
    struct snd_rawmidi_substream *subs;

    list_for_each_entry(subs, &str->substreams, list) {
        if (str->substream_count == 1) {
                snprintf(subs->name, sizeof(subs->name),
                     "%s MIDI", shortname);
                break;
        }

        snprintf(subs->name, sizeof(subs->name),
                     "%s MIDI %d", shortname, subs->number + 1);
    }
}

Hmm. I can see the 'shortname' again...

If I apply "vendor model" template for the shortname, the length of MIDI
ports are too long for MIDI port name. For example,

$ cat /proc/asound/card0/midi0
Echo Digital Audio AudioFire4 MIDI
...

$ amidi -lDir Device    Name
IO  hw:0,0,0  Echo Digital Audio AudioFire4 M(trimmed)

Currently I apply "vendor model" template for OXFW driver only, but I
should reconsider about this...


Regards

Takashi Sakamoto
o-takashi at sakamocchi.jp


More information about the Alsa-devel mailing list