Bluetooth: The good, the Bad and the Compromise

After a lot of messing around an researching the issue, it seems like automatically determining latency for bluetooth audio is a long shot. Not only is it hard to determine the latency, but it seems like it can vary during a session too. Various other sequencers I have tried do not seem to attempt to do this.

Nevertheless, I think there should be an option for adjusting this manually, in a user friendly and simple way. You might think that using bluetooth headphones is not the way to go for music making, and you’d be right, but especially since phone vendors have been removing the headphone jack from many models, it will probably come in handy.

So the short term plan is:

  1. Add a control panel to adjust latency compensation
  2. Warn the user if bluetooth audio is detected, and offer to present the control panel

Today I have been sketching out how this will look, and so far this is what I have come up with:

Latency control panel mockup

The dot will bounce up and down towards the line, and the user can adjust the slider until the dot hitting the line and some “beep” is in sync.

So really this is a compromise, I would have preferred for it to be detected automatically with no user intervention. But I guess for the time being this is what we are dealing with.

It seems like the future holds something brighter with regards to bluetooth audio. Also, even though no one has complained about it yet, the audio driver code in Sputter is not really optimal and does not achieve the lowest possible latency. Thanks to the guys at Music Hackspace who offered a free course going into optimized audio latency code on Android, this might change in the overseeable future. With these two things put together, I am optimistic about using audio apps on Android with bluetooth audio in the future.