Hi Lucas - it is very useful to have the results from those other interfaces. Takashi has been working on a patch that handles my endpoint fix using a flag set during endpoint configuration. Right now it is only enabled for the BOSS devices, but It will be very easy for you to add your extra working Roland devices.
Mike
On Sun, Apr 11, 2021 at 12:25 AM Lucas jaffa225man@gmail.com wrote:
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@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