[alsa-devel] [PATCH 1/1] ALSA: usb-audio: add support for Akai MPD16

Daniel Mack daniel at caiaq.de
Tue May 18 02:38:28 CEST 2010


On Mon, May 17, 2010 at 11:48:15PM +0100, wdev at foltman.com wrote:
> The decoding routine is based on own reverse-engineering. It seems to
> recognize all the messages that MPD16 sends during normal operation
> (that is, via standard MIDI messages).
> 
> Configuration (changing pad sensitivity, slider controller and MIDI
> notes) is not supported in this version.
> 
> Signed-off-by: Krzysztof Foltman <wdev at foltman.com>
> 
> diff --git a/sound/usb/midi.c b/sound/usb/midi.c
> index 2c1558c..57d642a 100644
> --- a/sound/usb/midi.c
> +++ b/sound/usb/midi.c
> @@ -645,6 +645,34 @@ static struct usb_protocol_ops snd_usbmidi_cme_ops = {
>  };
>  
>  /*
> + * AKAI MPD16 protocol: one or more chunks consisting of first byte of 
> + * (0x20 | msg_len) and then a MIDI message (msg_len bytes long)
> + * 
> + * Messages sent:
> + * 21 FE (active sense)
> + * 23 90 xx xx (note on)
> + * 23 Ax xx xx (polyphonic pressure)
> + * 23 Bx xx xx (control change)
> + */
> +static void snd_usbmidi_akai_input(struct snd_usb_midi_in_endpoint *ep,
> +				   uint8_t *buffer, int buffer_length)
> +{
> +	unsigned int pos = 0;
> +	while (pos < (unsigned)buffer_length && (buffer[pos] & 0xF8) == 0x20)
> +	{
> +		int msg_len = buffer[pos] & 0x0f;
> +		snd_usbmidi_input_data(ep, 0, &buffer[pos + 1], msg_len);
> +		pos += 1 + msg_len;
> +	}
> +}

Just a minor coding style flaw here for the curly brackets. See
Documentation/CodingStyle or let scripts/checkpatch.pl annoy you :)

FWIW, I think the block above could also be a for-loop, but that's
certainly a matter of taste.

Thanks,
Daniel


More information about the Alsa-devel mailing list