[alsa-devel] Help needed to develop quirks for USB Sound device for Roland Edirol PC-80 MIDI controller

Alain Lauzon alauzon at alainlauzon.com
Fri Dec 18 16:32:05 CET 2009


Le vendredi 18 décembre 2009 à 15:19 +0100, Clemens Ladisch a écrit : 
> (please don't top-post)
> 
> Alain Lauzon wrote:
> > Bus 001 Device 014: ID 0582:0092 Roland Corp. EDIROL PC-80 WAVE
> > ...
> > Bus 001 Device 013: ID 0582:0093 Roland Corp. EDIROL PC-80 MIDI
> > ...
> 
> This is implemented as two logical devices, so it will show up as two
> ALSA sound cards.
> 
> You didn't show the descriptors for a full-duplex mode, so I'm assuming
> it works like with any other Roland device.
> 
> Please try the following quirk entries:
> 
> {
> 	/* WAVE part only; see ID 0x0093 for MIDI */
> 	USB_DEVICE(0x0582, 0x0092),
> 	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
> 		/* .vendor_name = "EDIROL", */
> 		/* .product_name = "PC-80", */
> 		.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 = -1
> 			}
> 		}
> 	}
> },
> {
> 	/* MIDI part only; see ID 0x0092 for WAVE */
> 	USB_DEVICE(0x0582, 0x0093),
> 	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
> 		/* .vendor_name = "EDIROL", */
> 		/* .product_name = "PC-80", */
> 		.ifnum = 0,
> 		.type = QUIRK_MIDI_FIXED_ENDPOINT,
> 		.data = & (const struct snd_usb_midi_endpoint_info) {
> 			.out_cables = 0x0000,
> 			.in_cables = 0x0003,
> 		}
> 	}
> },
> --
Thank you for your support Clemens.

I have tried your code and it gives me this:
The MIDI works control works #1 and for the sound I see Analog stereo
output and this works fine too.  I don't see any imput from that device.

I have tried adding 2 more interfaces for the audio just to see what it
would bring with this:

{
        /* WAVE part only; see ID 0x0093 for MIDI */
        USB_DEVICE(0x0582, 0x0092),
        .driver_info = (unsigned long) & (const struct
snd_usb_audio_quirk) {
                /* .vendor_name = "EDIROL", */
                /* .product_name = "PC-80", */
                .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_AUDIO_STANDARD_INTERFACE
                        },
                        {
                                .ifnum = -1
                        }
                }
        }
},
{
        /* MIDI part only; see ID 0x0092 for WAVE */
        USB_DEVICE(0x0582, 0x0093),
        .driver_info = (unsigned long) & (const struct
snd_usb_audio_quirk) {
                /* .vendor_name = "EDIROL", */
                /* .product_name = "PC-80", */
                .ifnum = 0,
                .type = QUIRK_MIDI_FIXED_ENDPOINT,
                .data = & (const struct snd_usb_midi_endpoint_info) {
                        .out_cables = 0x0000,
                        .in_cables = 0x0003,
                }
        }
},

What I've got is that MIDI control works just as good, but I now have
two audio, namely "Analog Stereo Output" and "Digital Stereo Duplex
(IEC958)" and they both work good as audio out.  I still don't have any
audio input device.  I should have one since there are two entries on
the back of my Edirol PC-80 that accepts either a microphone or a
guitar.  So I should be able to relay those audio inputs to my computer
through my USB connection, right?

Thanks, Alain Lauzon


--
To unsubscribe from this list: send the line "unsubscribe alsa-devel" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the Alsa-devel mailing list