Implicit feedback on BOSS GT-1, the saga continues...

Geraldo Nascimento geraldogabriel at gmail.com
Sun Apr 11 23:33:07 CEST 2021


Hey, Lucas, glad you're having fun with hacking the kernel.

You have no idea how useful your information can be to future generations,
specially when things break on the kernel.

My suggestion is to remember to test full-duplex also for every device you
own, at least for those that work with both aplay and arecord.

But please remember, just aplay / arecord separately can be misleading some
times. Ideally one should test both PulseAudio and JACK on top of ALSA.
Being stubborn I refuse to work with PulseAudio (and systemd) so I'd miss a
PulseAudio bug. You get the picture.

Oh by the way, for the ultimate kick I believe you can test more than one
device with JACK by using alsa_in and alsa_out. This will make JACK a
little CPU hungry but at least will compensate for the eventual lack of
clock sync when using more than one soundcard.

Thank you,
Geraldo

Em Dom, 11 de abr de 2021 04:25, Lucas <jaffa225man at gmail.com> escreveu:

> Here's my interesting, slightly-surprising results, but first the test
> criteria:
>
> I enabled the playback quirk table line as "IMPLICIT_FB_GENERIC_DEV" for
> each of these devices being tested, and changed endpoint.c's "if
> (snd_usb_endpoint_implicit_feedback_sink(ep))" to evaluate false for the
> Roland/BOSS vender ID of 0x0582 (with the vender matching method by
> Geraldo).
>
> EDIROL UA-4FX failed to capture, but plays well (only tested 48 kHz):
> arecord -D hw:UA4FX -f S24_3LE -r 48000 -c 2 ./file.wav
> Recording WAVE './test.wav' : Signed 24 bit Little Endian in 3bytes, Rate
> 48000 Hz, Stereo
> arecord: xrun:1672: read/write error, state = PREPARED
>
> aplay -D hw:UA4FX -f S24_3LE -r 48000 -c 2 ./other-file.wav
> Playing WAVE './other-file.wav' : Signed 24 bit Little Endian in 3bytes,
> Rate 48000 Hz, Stereo
>
>
> EDIROL UA-101 "full speed" USB 1.1 mode doesn't capture or play (only
> tested 48 kHz):
> arecord -D hw:UA101 -f S32_LE -r 48000 -c 2 ./file.wav
> arecord: main:830: audio open error: Connection timed out
>
> aplay -D plughw:UA101 -f S32_LE -r 48000 -c 2 ./other-file.wav
> aplay: main:830: audio open error: Connection timed out
>
>
> EDIROL UA-101 "high speed" USB 2 mode captures and plays well (only tested
> 48 kHz):
> arecord -D plughw:UA101 -f S32_LE -r 48000 -c 2 ./file.wav
> Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 48000 Hz,
> Stereo
> ^CAborted by signal Interrupt...
>
> aplay -D plughw:UA101 -f S32_LE -r 48000 -c 2 ./file.wav
> Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 48000 Hz,
> Stereo
>
>
> Roland R-26 captures and plays fine:
> arecord -D hw:R26AUDIO -f S32_LE -r 96000 -c 2 ./file.wav
> Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz,
> Stereo
> ^CAborted by signal Interrupt...
>
> aplay -D hw:R26AUDIO -f S32_LE -r 96000 -c 2 ./file.wav
> Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz,
> Stereo
>
>
> Roland INTEGRA-7 captures and plays well (playback at 96 kHz is new!)
> arecord -D hw:INTEGRA7 -f S32_LE -r 96000 -c 2 ./file.wav
> Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz,
> Stereo
> ^CAborted by signal Interrupt...
>
> aplay -D hw:INTEGRA7 -f S32_LE -r 96000 -c 2 ./file.wav
> Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz,
> Stereo
> (Wow, now audible at 96 kHz with this endpoint.c trick!)
>
> arecord -D hw:INTEGRA7 -f S32_LE -r 44100 -c 2 ./file.wav
> Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 44100 Hz,
> Stereo
> ^CAborted by signal Interrupt...
>
> aplay -D hw:INTEGRA7 -f S32_LE -r 44100 -c 2 ./file.wav
> Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 44100 Hz,
> Stereo
>
>
> Roland VG-99 doesn't capture, but plays well:
> arecord -D hw:VG99 -f S24_3LE -r 44100 -c 2 ./file.wav
> Recording WAVE './file.wav' : Signed 24 bit Little Endian in 3bytes, Rate
> 44100 Hz, Stereo
> arecord: xrun:1672: read/write error, state = PREPARED
>
> aplay -D hw:VG99 -f S24_3LE -r 44100 -c 2 ./other-file.wav
> Playing WAVE './other-file.wav' : Signed 24 bit Little Endian in 3bytes,
> Rate 44100 Hz, Stereo
>
>
> And, of course, you already know the Roland Boutique D-05 captures and
> finally plays back perfectly with this trick.
>
>
> Next, I'm going to use these findings to tailor the patch to only those
> devices benefiting from it.  I had already suspected the EDIROL UA-*
> devices didn't need this, but I was fairly sure they would still be
> compatible.  They aren't and neither is the VG-99.  Improvements are in the
> INTEGRA-7 (with it's playback mode of 96 kHz working crystal clearly) and
> Boutique D-05, but possibly also the R-26 (which I haven't noticed clock
> skew on either way)
>
> Thanks!
>
> Here's the patch used to test these, to reveal any accidentally left out
> details:
> diff -Nurp linux-5.11.9.orig/sound/usb/endpoint.c
> linux-5.11.9.roland-geraldo-nascimento/sound/usb/endpoint.c
> --- linux-5.11.9.orig/sound/usb/endpoint.c 2021-03-24 05:54:19.000000000
> -0500
> +++ linux-5.11.9.roland-geraldo-nascimento/sound/usb/endpoint.c 2021-04-10
> 00:14:30.836421501 -0500
> @@ -1343,6 +1343,7 @@ int snd_usb_endpoint_start(struct snd_us
>  {
>   int err;
>   unsigned int i;
> + bool skip_implicit_fb_urb_hold;
>
>   if (atomic_read(&ep->chip->shutdown))
>   return -EBADFD;
> @@ -1375,7 +1376,14 @@ int snd_usb_endpoint_start(struct snd_us
>   if (!ep_state_update(ep, EP_STATE_STOPPED, EP_STATE_RUNNING))
>   goto __error;
>
> - if (snd_usb_endpoint_implicit_feedback_sink(ep)) {
> + //if (snd_usb_endpoint_implicit_feedback_sink(ep)) {
> +        skip_implicit_fb_urb_hold = false;
> +
> +        if (USB_ID_VENDOR(ep->chip->usb_id) == 0x0582) // &&
> +        //   USB_ID_PRODUCT(ep->chip->usb_id) == 0x01ff)
> +               skip_implicit_fb_urb_hold = true;
> +
> +       if (snd_usb_endpoint_implicit_feedback_sink(ep) &&
> !skip_implicit_fb_urb_hold) {
>   for (i = 0; i < ep->nurbs; i++) {
>   struct snd_urb_ctx *ctx = ep->urb + i;
>   list_add_tail(&ctx->ready_list, &ep->ready_playback_urbs);
> diff -Nurp linux-5.11.9.orig/sound/usb/implicit.c
> linux-5.11.9.roland-geraldo-nascimento/sound/usb/implicit.c
> --- linux-5.11.9.orig/sound/usb/implicit.c 2021-04-01 20:55:06.079399075
> -0500
> +++ linux-5.11.9.roland-geraldo-nascimento/sound/usb/implicit.c 2021-04-10
> 00:22:41.942550829 -0500
> @@ -71,27 +71,155 @@ static const struct snd_usb_implicit_fb_
>    .ep_num = 0x84, .iface = 0 }, /* MOTU MicroBook II */
>
>   /* No quirk for playback but with capture quirk (see below) */
> - IMPLICIT_FB_SKIP_DEV(0x0582, 0x0130), /* BOSS BR-80 */
> - IMPLICIT_FB_SKIP_DEV(0x0582, 0x0171),   /* BOSS RC-505 */
> - IMPLICIT_FB_SKIP_DEV(0x0582, 0x0185), /* BOSS GP-10 */
> - IMPLICIT_FB_SKIP_DEV(0x0582, 0x0189), /* BOSS GT-100v2 */
> - IMPLICIT_FB_SKIP_DEV(0x0582, 0x01d6), /* BOSS GT-1 */
> - IMPLICIT_FB_SKIP_DEV(0x0582, 0x01d8), /* BOSS Katana */
> - IMPLICIT_FB_SKIP_DEV(0x0582, 0x01e5), /* BOSS GT-001 */
> - IMPLICIT_FB_SKIP_DEV(0x0582, 0x0203),   /* BOSS AD-10 */
> + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x007d), /* Edirol UA-101 High Speed */
> + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x008d), /* Edirol UA-101 Full Speed */
> + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x00a3), /* Edirol UA-4FX */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00a6), /* Roland JUNO-G */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00a9), /* Roland MC-808 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00ad), /* Roland SH-201 */
> + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x00b2), /* Roland VG-99 */
> + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x00b3), /* Roland VG-99 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c2), /* Roland SonicCell */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c4), /* Edirol M-16DX */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c5), /* Roland SP-555 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c7), /* Roland V-Synth GT */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00d1), /* Roland Music Atelier */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00da), /* BOSS GT-10 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00db), /* BOSS GT-10 Guitar Effects
> Processor */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00dc), /* BOSS GT-10B */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00de), /* Roland Fantom-G */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00eb), /* Roland VS-100 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00f8), /* Roland JUNO Series */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00fc), /* Roland VS-700C */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00fd), /* Roland VS-700 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00fe), /* Roland VS-700 M1 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00ff), /* Roland VS-700 M2 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0100), /* Roland VS-700 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0101), /* Roland VS-700 M2 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0102), /* Roland VB-99 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0109), /* BOSS eBand JS-8 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0111), /* Roland GAIA SH-01 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0113), /* BOSS ME-25 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0114), /* Roland SD-50 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0117), /* Roland VS-20 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0119), /* Roland OCTAPAD SPD-30 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x011c), /* Roland Lucina AX-09 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x011e), /* BOSS BR-800 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0120), /* Roland OCTA-CAPTURE */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0121), /* Roland OCTA-CAPTURE */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0123), /* Roland JUNO-Gi */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0124), /* Roland M-300 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0127), /* Roland GR-55 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x012b), /* Roland DUO-CAPTURE */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x012f), /* Roland QUAD-CAPTURE */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0130), /* BOSS BR-80 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0132), /* Roland TRI-CAPTURE */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0134), /* Roland V-Mixer */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0138), /* BOSS RC-300 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x013a), /* Roland JUPITER-80 */
> + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x013e), /* Roland R-26 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0145), /* Roland SPD-SX */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x014b), /* BOSS eBand JS-10 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x014d), /* BOSS GT-100 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0150), /* Roland TD-15 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0151), /* Roland TD-11 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0154), /* Roland JUPITER-50 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0158), /* Roland TD-30 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0159), /* Roland DUO-CAPTURE EX */
> + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x015b), /* Roland INTEGRA-7 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x015d), /* Roland R-88 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0171), /* BOSS RC-505 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x017a), /* Roland VT-3 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x017c), /* Roland TR-8 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0185), /* BOSS GP-10 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0189), /* BOSS GT-100v2 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01b5), /* Roland Boutique Series
> Synthesizer */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01d6), /* BOSS GT-1 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01d8), /* BOSS Katana */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01df), /* Roland Rubix22 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01e0), /* Roland Rubix24 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01e1), /* Roland Rubix44 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01e5), /* BOSS GT-001 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01fd), /* Roland Boutique SH-01A */
> + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x01ff), /* Roland Boutique D-05 */
> + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0203), /* BOSS AD-10 */
>
>   {} /* terminator */
>  };
>
>  /* Implicit feedback quirk table for capture: only FIXED type */
>  static const struct snd_usb_implicit_fb_match
> capture_implicit_fb_quirks[] = {
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x007d, 0x0d, 0x01), /* Edirol UA-101 High
> Speed */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x008d, 0x0d, 0x01), /* Edirol UA-101 Full
> Speed */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00a3, 0x0d, 0x01), /* Edirol UA-4FX */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00a6, 0x0d, 0x01), /* Roland JUNO-G */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00a9, 0x0d, 0x01), /* Roland MC-808 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00ad, 0x0d, 0x01), /* Roland SH-201 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00b2, 0x0d, 0x01), /* Roland VG-99 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00b3, 0x0d, 0x01), /* Roland VG-99 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00c2, 0x0d, 0x01), /* Roland SonicCell */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00c4, 0x0d, 0x01), /* Edirol M-16DX */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00c5, 0x0d, 0x01), /* Roland SP-555 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00c7, 0x0d, 0x01), /* Roland V-Synth GT
> */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00d1, 0x0d, 0x01), /* Roland Music
> Atelier */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00da, 0x0d, 0x01), /* BOSS GT-10 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00db, 0x0d, 0x01), /* BOSS GT-10 Guitar
> Effects Processor */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00dc, 0x0d, 0x01), /* BOSS GT-10B */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00de, 0x0d, 0x01), /* Roland Fantom-G */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00eb, 0x0d, 0x01), /* Roland VS-100 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00f8, 0x0d, 0x01), /* Roland JUNO Series
> */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00fc, 0x0d, 0x01), /* Roland VS-700C */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00fd, 0x0d, 0x01), /* Roland VS-700 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00fe, 0x0d, 0x01), /* Roland VS-700 M1 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00ff, 0x0d, 0x01), /* Roland VS-700 M2 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0100, 0x0d, 0x01), /* Roland VS-700 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0101, 0x0d, 0x01), /* Roland VS-700 M2 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0102, 0x0d, 0x01), /* Roland VB-99 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0109, 0x0d, 0x01), /* BOSS eBand JS-8 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0111, 0x0d, 0x01), /* Roland GAIA SH-01
> */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0113, 0x0d, 0x01), /* BOSS ME-25 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0114, 0x0d, 0x01), /* Roland SD-50 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0117, 0x0d, 0x01), /* Roland VS-20 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0119, 0x0d, 0x01), /* Roland OCTAPAD
> SPD-30 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x011c, 0x0d, 0x01), /* Roland Lucina
> AX-09 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x011e, 0x0d, 0x01), /* BOSS BR-800 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0120, 0x0d, 0x01), /* Roland
> OCTA-CAPTURE */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0121, 0x0d, 0x01), /* Roland
> OCTA-CAPTURE */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0123, 0x0d, 0x01), /* Roland JUNO-Gi */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0124, 0x0d, 0x01), /* Roland M-300 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0127, 0x0d, 0x01), /* Roland GR-55 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x012b, 0x0d, 0x01), /* Roland DUO-CAPTURE
> */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x012f, 0x0d, 0x01), /* Roland
> QUAD-CAPTURE */
>   IMPLICIT_FB_FIXED_DEV(0x0582, 0x0130, 0x0d, 0x01), /* BOSS BR-80 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0132, 0x0d, 0x01), /* Roland TRI-CAPTURE
> */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0134, 0x0d, 0x01), /* Roland V-Mixer */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0138, 0x0d, 0x01), /* BOSS RC-300 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x013a, 0x0d, 0x01), /* Roland JUPITER-80
> */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x013e, 0x0d, 0x01), /* Roland R-26 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0145, 0x0d, 0x01), /* Roland SPD-SX */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x014b, 0x0d, 0x01), /* BOSS eBand JS-10 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x014d, 0x0d, 0x01), /* BOSS GT-100 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0150, 0x0d, 0x01), /* Roland TD-15 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0151, 0x0d, 0x01), /* Roland TD-11 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0154, 0x0d, 0x01), /* Roland JUPITER-50
> */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0158, 0x0d, 0x01), /* Roland TD-30 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0159, 0x0d, 0x01), /* Roland DUO-CAPTURE
> EX */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x015b, 0x0d, 0x01), /* Roland INTEGRA-7 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x015d, 0x0d, 0x01), /* Roland R-88 */
>   IMPLICIT_FB_FIXED_DEV(0x0582, 0x0171, 0x0d, 0x01), /* BOSS RC-505 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x017a, 0x0d, 0x01), /* Roland VT-3 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x017c, 0x0d, 0x01), /* Roland TR-8 */
>   IMPLICIT_FB_FIXED_DEV(0x0582, 0x0185, 0x0d, 0x01), /* BOSS GP-10 */
>   IMPLICIT_FB_FIXED_DEV(0x0582, 0x0189, 0x0d, 0x01), /* BOSS GT-100v2 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01b5, 0x0d, 0x01), /* Roland Boutique
> Series Synthesizer */
>   IMPLICIT_FB_FIXED_DEV(0x0582, 0x01d6, 0x0d, 0x01), /* BOSS GT-1 */
>   IMPLICIT_FB_FIXED_DEV(0x0582, 0x01d8, 0x0d, 0x01), /* BOSS Katana */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01df, 0x0d, 0x01), /* Roland Rubix22 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01e0, 0x0d, 0x01), /* Roland Rubix24 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01e1, 0x0d, 0x01), /* Roland Rubix44 */
>   IMPLICIT_FB_FIXED_DEV(0x0582, 0x01e5, 0x0d, 0x01), /* BOSS GT-001 */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01fd, 0x0d, 0x01), /* Roland Boutique
> SH-01A */
> + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01ff, 0x0d, 0x01), /* Roland Boutique
> D-05 */
>   IMPLICIT_FB_FIXED_DEV(0x0582, 0x0203, 0x0d, 0x01), /* BOSS AD-10 */
>
>   {} /* terminator */
> @@ -278,6 +406,11 @@ static int audioformat_implicit_fb_quirk
>   }
>   }
>
> + ///* Don't apply playback quirks for the devices with capture quirk */
> + //p = find_implicit_fb_entry(chip, capture_implicit_fb_quirks, alts);
> + //if (p && p->type == IMPLICIT_FB_FIXED)
> + // return 0; /* no quirk */
> +
>   /* Generic UAC2 implicit feedback */
>   if (attr == USB_ENDPOINT_SYNC_ASYNC &&
>      alts->desc.bInterfaceClass == USB_CLASS_AUDIO &&
>
>
> On Fri, Apr 9, 2021 at 2:09 PM Lucas <jaffa225man at gmail.com> wrote:
>
>> I wholeheartedly agree with everything you wrote, Mike.  Takashi is the
>> person who knows best how to implement these changes, and is definitely the
>> most capable.  I will get back to you about retesting my other Roland
>> devices with this trick, although I only have a few of the many devices I'd
>> ultimately like this solution implemented for.  Also, I haven't noticed the
>> sync-related clicking with the other devices I own, but I'm confident they
>> won't be hurt by the change.  I'll let you both know, though, when I get
>> around to testing them.
>>
>> Thanks as ever,
>>
>>   Lucas
>>
>
>


More information about the Alsa-devel mailing list