A custom BOSS SY-1000 USB audio-MIDI driver for M-series iPads

I’ve been working really hard on this one, but sadly, I’ve hit a wall with latency adjustments. Trying to tighten driver performance results in audio instability that, in my opinion, renders it not ready for release.

But I’m not giving up yet; I’m just going back to the drawing board with some important lessons learned, and some very valuable data benchmarks to back the version 2 prototype. I’ll keep you guys posted on any notable developments.

In the meantime, if there are any Australia-based forum members who have a BOSS hex USB device (GP-10, GM-800, VG-800) that they’d be prepared to temporarily lend to me for research purposes, I’d be very appreciative! P.M. me :slight_smile:

1 Like

I think I was unnecessarily pessimistic in my last post. I was expecting latency optimization to take weeks, considering all the troubles I’ve had with it, but some focused work today has produced some very promising results and I now have extremely stable performance/measurements:

  • 128 → 12.9 ms
  • 64 → 10.2 ms
  • 32 → 8.9 ms

I could maybe shave a bit more off, but life is short…

Also, SY-1000 Control Center for iPadOS is now functional. Today has been a good day at the computer :slight_smile:

2 Likes

Amazing work. Congratulations! This could be very useful for most people using the hardware

I wonder if that the audio latency of the driver layer? I guess we don’t know what is the actual latency of the hardware?

2 Likes

Thanks! Those numbers are actually measured round-trip latency (RTL), not just the nominal latency reported by the driver.

I tested by sending an impulse from the iPad through the SY-1000’s USB output, physically looping the SY-1000’s analog output back into its analog input, and recording the returned signal over USB. I then measured the sample offset between the transmitted impulse and the returned impulse at 48 kHz.

The stable measured RTL results are:

128 samples → 620 samples / 12.9 ms
64 samples → 491 samples / 10.2 ms
32 samples → 428 samples / 8.9 ms

So those figures include the complete path: iPad/driver → USB → SY-1000 hardware/DAC → analog loopback → SY-1000 ADC → USB → iPad/driver.

That means they include the SY-1000’s own conversion/hardware latency as well as the USB/driver buffering. I haven’t isolated the hardware contribution from the driver contribution yet, but the figures above are the actual end-to-end RTL that an audio application sees.

Some annoying issues persist. Like, I can’t make the SY’s audio ports expose as USB. AUM thinks they’re Thunderbolt! I followed the guidance to “fix” that, and it just breaks the driver! So “TB” it is… :frowning:

2 Likes

I have finally arrived at RTL stats that I think any player can be comfortable with:

Driver revision 69 @ 48 kHz

  • 32 → 284 samples / 5.92 ms
  • 64 → 348 / 7.25 ms
  • 128 → 476 / 9.92 ms

No dropouts. Next, direct integration with the SY-1000 Control Center iPadOS app.

Looking forward to more tightly integrating this with MG3 Hex on iPad.

2 Likes

Wow, a whole day of development work down the drain thanks to a flipping intermittent USB hub fault…you get what you pay for :frowning: