[alsa-devel] [PATCH v2] ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4

Cyrus Harmon cyrus at bobobeach.com
Fri Jul 3 03:47:09 CEST 2015


Sorry for the confusion. Turns out this patch is not required if one 
uses the device in "Class Compliant" mode. Performance seems to be 
better with Class Compliant mode on than CC mode off with the patch, so 
I suggest abandoning the patch.

thanks,

Cyrus

On 07/01/2015 10:42 PM, Takashi Iwai wrote:
> At Wed, 1 Jul 2015 09:55:09 -0700,
> Cyrus Harmon wrote:
>> As long as you're messing around with the quirks table, it would be nice
>> to add support for the UR44. This was discussed on the list a while back
>> and it wasn't clear why the quirk was needed, but it still seems to be
>> needed, at least last I looked.
> Well, I need to know it *is* needed or *seems* needed.  In the former
> case, I'd happily take the patch.  If so, please submit the patch in a
> formal way (with a patch description and your sign-off).
>
>
> thanks,
>
> Takashi
>
>
>> thanks,
>>
>> Cyrus
>>
>> diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
>> index 2f6d3e9..ed7875e 100644
>> --- a/sound/usb/quirks-table.h
>> +++ b/sound/usb/quirks-table.h
>> @@ -466,6 +466,36 @@ YAMAHA_DEVICE(0x105d, NULL),
>>                   }
>>           }
>>    },
>> +{
>> +       USB_DEVICE(0x0499, 0x150e),
>> +       .driver_info = (unsigned long) & (const struct
>> snd_usb_audio_quirk) {
>> +               /* .vendor_name = "Yamaha", */
>> +               /* .product_name = "Steinberg UR44", */
>> +               .ifnum = QUIRK_ANY_INTERFACE,
>> +               .type = QUIRK_COMPOSITE,
>> +               .data = (const struct snd_usb_audio_quirk[]) {
>> +                       {
>> +                               .ifnum = 1,
>> +                               .type = QUIRK_AUDIO_STANDARD_INTERFACE
>> +                       },
>> +                       {
>> +                               .ifnum = 2,
>> +                               .type = QUIRK_AUDIO_STANDARD_INTERFACE
>> +                       },
>> +                       {
>> +                               .ifnum = 3,
>> +                               .type = QUIRK_MIDI_YAMAHA
>> +                       },
>> +                       {
>> +                               .ifnum = 4,
>> +                               .type = QUIRK_IGNORE_INTERFACE
>> +                       },
>> +                       {
>> +                               .ifnum = -1
>> +                       }
>> +               }
>> +       }
>> +},
>>    YAMAHA_DEVICE(0x2000, "DGP-7"),
>>    YAMAHA_DEVICE(0x2001, "DGP-5"),
>>    YAMAHA_DEVICE(0x2002, NULL),
>>
>>
>> On 07/01/2015 08:30 AM, Takashi Iwai wrote:
>>> At Tue, 30 Jun 2015 17:41:33 +0200,
>>> Dominic Sacré wrote:
>>>> The Steinberg MI2 and MI4 interfaces are compatible with the USB class
>>>> audio spec, but the MIDI part of the devices is reported as a vendor
>>>> specific interface.
>>>>
>>>> This patch adds entries to quirks-table.h to recognize the MIDI
>>>> endpoints. Audio functionality was already working and is unaffected by
>>>> this change.
>>>>
>>>> Signed-off-by: Dominic Sacré <dominic.sacre at gmx.de>
>>>> Signed-off-by: Albert Huitsing <albert at huitsing.nl>
>>> Applied now with Clemens' ack, and Cc to stable.
>>>
>>>
>>> thanks,
>>>
>>> Takashi
>>>
>>>> ---
>>>>    sound/usb/quirks-table.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++
>>>>    1 file changed, 68 insertions(+)
>>>>
>>>> diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
>>>> index 2f6d3e9..e475665 100644
>>>> --- a/sound/usb/quirks-table.h
>>>> +++ b/sound/usb/quirks-table.h
>>>> @@ -2512,6 +2512,74 @@ YAMAHA_DEVICE(0x7010, "UB99"),
>>>>    	}
>>>>    },
>>>>    
>>>> +/* Steinberg devices */
>>>> +{
>>>> +	/* Steinberg MI2 */
>>>> +	USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040),
>>>> +	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
>>>> +		.ifnum = QUIRK_ANY_INTERFACE,
>>>> +		.type = QUIRK_COMPOSITE,
>>>> +		.data = & (const struct snd_usb_audio_quirk[]) {
>>>> +			{
>>>> +				.ifnum = 0,
>>>> +				.type = QUIRK_AUDIO_STANDARD_INTERFACE
>>>> +			},
>>>> +			{
>>>> +				.ifnum = 1,
>>>> +				.type = QUIRK_AUDIO_STANDARD_INTERFACE
>>>> +			},
>>>> +			{
>>>> +				.ifnum = 2,
>>>> +				.type = QUIRK_AUDIO_STANDARD_INTERFACE
>>>> +			},
>>>> +			{
>>>> +				.ifnum = 3,
>>>> +				.type = QUIRK_MIDI_FIXED_ENDPOINT,
>>>> +				.data = &(const struct snd_usb_midi_endpoint_info) {
>>>> +					.out_cables = 0x0001,
>>>> +					.in_cables  = 0x0001
>>>> +				}
>>>> +			},
>>>> +			{
>>>> +				.ifnum = -1
>>>> +			}
>>>> +		}
>>>> +	}
>>>> +},
>>>> +{
>>>> +	/* Steinberg MI4 */
>>>> +	USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040),
>>>> +	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
>>>> +		.ifnum = QUIRK_ANY_INTERFACE,
>>>> +		.type = QUIRK_COMPOSITE,
>>>> +		.data = & (const struct snd_usb_audio_quirk[]) {
>>>> +			{
>>>> +				.ifnum = 0,
>>>> +				.type = QUIRK_AUDIO_STANDARD_INTERFACE
>>>> +			},
>>>> +			{
>>>> +				.ifnum = 1,
>>>> +				.type = QUIRK_AUDIO_STANDARD_INTERFACE
>>>> +			},
>>>> +			{
>>>> +				.ifnum = 2,
>>>> +				.type = QUIRK_AUDIO_STANDARD_INTERFACE
>>>> +			},
>>>> +			{
>>>> +				.ifnum = 3,
>>>> +				.type = QUIRK_MIDI_FIXED_ENDPOINT,
>>>> +				.data = &(const struct snd_usb_midi_endpoint_info) {
>>>> +					.out_cables = 0x0001,
>>>> +					.in_cables  = 0x0001
>>>> +				}
>>>> +			},
>>>> +			{
>>>> +				.ifnum = -1
>>>> +			}
>>>> +		}
>>>> +	}
>>>> +},
>>>> +
>>>>    /* TerraTec devices */
>>>>    {
>>>>    	USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),
>>>> -- 
>>>> 2.4.5
>>>>
>>>> _______________________________________________
>>>> Alsa-devel mailing list
>>>> Alsa-devel at alsa-project.org
>>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>> _______________________________________________
>>> Alsa-devel mailing list
>>> Alsa-devel at alsa-project.org
>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>> _______________________________________________
>> Alsa-devel mailing list
>> Alsa-devel at alsa-project.org
>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



More information about the Alsa-devel mailing list