The ONE Piano Hi-Lite and Synthesia

Have questions? Just saying hello? This is the place.
No explicit, hateful, or hurtful language. Nothing illegal.

Postby thedealman » 01-01-18 11:58 pm

Anyone with experience using the Hi-lite bar?

I just opened mine, and I've updated to the latest version of Synethesia on iOS 10.3.1
Unfortunately, even thought the hi-lite device is seen under "Bluetooth Settings", Synetheia refuses to connect to it.

The native iPad software by The One music group is working ok with it so I don't think it's a hardware issue.
Posts: 20

Postby thedealman » 01-02-18 12:40 am

Replying to myself. The device does seem to work via USB cable to Apple camera connection kit. But the left and right hand colors are not showing on the bar like they do in the native app. Selected The One Proprietary under key light settings.

Still would like to use Bluetooth if possible.
Posts: 20

Postby Nicholas » 01-07-18 12:25 am

There are different colors for left and right hand notes? (On The ONE Smart Piano they sent us, there is only a single color.)

I'll have to get in touch with them to see which other protocol differences exist between the two devices. I'll also ask about Bluetooth compatibility.
Posts: 11817

Postby thedealman » 01-13-18 12:40 pm

Yup! The Hi-Lite bar has red and blue colors for left and right hand !!

In Synthesia, the bar shows under Bluetooth connections, but when you tap to connect, the wheel just spins round and round until an error message comes up. Hope they send you a bar so you can work out all the issues. Thx.
Posts: 20

Postby Nicholas » 01-20-18 2:48 am

We've talked a few times now and we've nearly got everything we need to add support for the Bluetooth connection to the Hi-Lite (and the multiple colors). Like the key light scheme on their keyboard, they decided to use a proprietary communication scheme for whatever reason, so it takes a bit more effort.
Posts: 11817

Postby Nicholas » 02-08-18 5:40 pm

Our test Hi-Lite just arrived today, so now we can start working on this.

First impressions: it works surprisingly well. I haven't seen if it's velocity sensitive yet, but for turning an acoustic instrument into a digital one, I can't imagine a simpler process than setting an unobtrusive strip across the keyboard. This certainly beats installing a several thousand dollar under-keyboard optical system on convenience! :lol:
Posts: 11817

Postby BrunoDS52 » 02-25-18 7:19 pm

Dear, does The Piano One Hi-Lite bar works with Synthesia and ? Can I use that bar with Synthesia and my Ipad or my PC macAir? Do I need some specific cable ?
Does it works with Synthesia and my digital Piano Korg G1 air?
Thenks a lot
Best Regards
Posts: 6

Postby Nicholas » 02-26-18 4:10 am

It should already work today on Android and iPad when connected directly (via a wire), as long as you choose "Proprietary 1" for its Key Lights on the Settings screen. Today it only uses one light color.

We're hoping to also add support for their (also proprietary) Bluetooth protocol in the Synthesia 10.5 update for Android and iPad. This counts as a fairly major technical hurdle, so I can't promise we'll be able to pull it off. And we'll be enabling support for both the blue and red lights regardless of how it's connected.
Posts: 11817

Postby Rasdebol » 03-06-18 8:57 am

Was there any update to the "ONE Piano Hi-Lite" and Synthesia interface?? Got one but having trouble getting the LED Lights to work. Can connect via Bluetooth but so far no joy.
Any insight as to settings would be greatly appreciated. Thanx.
Posts: 1

Postby Nicholas » 03-06-18 2:56 pm

The Hi-Lite was released after we added support for the ONE Smart Piano, so we have a little more work to do before that one is fully supported.

Here is the current state of things in Synthesia 10.4:

  • The Hi-Lite will only work with Synthesia when directly wired for now. (Like their proprietary key light protocol, they decided that making the Bluetooth connection non-standard BLE MIDI was a good idea for some reason. So I've been scrambling around trying to add separate Bluetooth support to Synthesia for just the Hi-Lite.)
  • The "Proprietary 1" entry in the key lights list for the ONE Smart Piano only knows about single-color key lights, so the Hi-Lite will only show one color for now.
  • There is a known issue where "Proprietary 1" gets deselected each time you start Synthesia, so you have to head back to the Settings screen and select it again.
Our goal is to have all three of those fixed in 10.5. I've been working on Bluetooth MIDI code for days now. (As a bonus, that means the Android version of Synthesia will finally be getting Bluetooth MIDI support, at least.)
Posts: 11817

Postby Nicholas » 05-07-18 4:52 am

Hmm, now that I've learned more about low-level Bluetooth programming than I ever wanted to know, I'm starting to think that the first feature point above (Hi-Lite over Bluetooth) might not be possible given some constraints I'm placing on the app. So, after a month of work, all Synthesia will be getting was the initial "as a bonus..." feature. Allow me to explain:

As far as I can tell, the ONE Smart Group has made another one of those "wait, what?" design decisions: the Hi-Lite doesn't seem to be able to (or refuses to?) perform a typical Bluetooth pairing. Instead, an app has to commandeer the Bluetooth adapter, scan for all local devices, and when the Hi-Lite happens to "advertise" its existence, the app says something akin to "Hey, I'm interested in joining the group of people you talk to".

On Android (6.0 and later), when you perform that kind of unpaired connection, a MIDI device appears in the system automatically. This is because Android's MIDI API already places a lot of work on the app's shoulders and this is kind of expected of the app. On iOS, Apple already handles the MIDI device list automatically. Anything paired over Bluetooth shows up automatically. Anything not paired doesn't. So, when the app does the in-situ "hey, talk to me!" request, nothing happens and it's left up to the app to bring along what amounts to a completely custom low-level hardware MIDI driver, so we can talk to exactly one device (and then fake it everywhere else so it looks like a normal Apple-provided device).

The situation is already a mess.

It gets worse: so far my Android Bluetooth MIDI results have been so bad that I've felt like I must be doing something wrong. But, after testing the full union of a half-dozen Android devices and a handful of Bluetooth MIDI adapters, the results are remarkably consistent. When paired, there is only about a 5% random data loss at all times. Unpaired it's closer to 50%. I'd love to find out I was just making a mistake somewhere, but I've been dredging the Internet for advice and only finding corroborating accounts. The other Bluetooth MIDI enabled apps I've been able to find seem to suffer from the same data corruption. :?

So now we're up to: iOS requires paired devices by design (and makes it effortless when you acquiesce) and on Android you may as well forget that unpaired devices are a possibility because they behave so poorly.

There is one more detail to throw into the mix: the "commandeering the Bluetooth adapter" part I mentioned earlier. Both sides make this out to be a pretty big deal. There are security implications where an app can discover where you are (physically) by the nearby Bluetooth devices that can be found and identified. Worse, an app can wreak all sorts of havoc when given that kind of power, including connect/disconnect, pair/unpair, drain the battery 5-10x faster than usual due to aggressive scanning, or advertise ourselves as a custom Bluetooth device. For that reason, Android makes the app require lots of extra permissions (Location and "Bluetooth Admin", etc.) and Apple goes so far as to require a custom message that is presented to the user describing why the app needs these privileges. To simply ask the Bluetooth adapter which devices are already paired requires none of those things on either Android or iOS.

To summarize:

Supporting standard, pairable Bluetooth MIDI devices:
  • Completely automatic on iOS.
  • Just takes asking Android what's already connected, and you "only" have to deal with a poor connection.
  • No additional permissions or messages required; no danger of draining the battery from scanning; etc.

Supporting the Piano Hi-Lite over Bluetooth:
  • Fully custom, low-level MIDI driver required on iOS.
  • Accepting unusably bad Bluetooth MIDI connections on Android (or treating the Hi-Lite as a special case which is nearly the same as writing another custom driver for just one device).
  • Lots of extra work to include code (and UI and language) for starting/stopping Bluetooth scans while trying our best to preserve your device's battery.
  • Scary permissions and messages that users now have to contend with.

In the ONE Smart Group's situation, it probably made sense. They are a hardware vendor writing an app that is expecting to talk to just their own hardware. The "for just one device" case that I keep mentioning is their device! And the scanning/automatically-connecting solution technically removes one of the steps for their users. By giving the app full control over your Bluetooth hardware, users never have to so much as peek at their device's Settings --> Bluetooth screen.

Synthesia's goal is compatibility with every standard MIDI device. That means a button in the app that pops up your system's Bluetooth window where you can choose to pair with a nearby MIDI device. (If you tap the Hi-Lite, it just sits there for a second with "Connecting..." before giving up and returning back to the list, unpaired.) Adding custom Bluetooth drivers and scanners that require permissions that Synthesia frankly shouldn't have seems a bit beyond the scope of the app.

The good news is that this doesn't have to be the end of the story. Both iOS and Android have inter-app capabilities built into their MIDI APIs. There isn't anything stopping the ONE Smart Group from releasing an app that does all their weird/proprietary stuff to communicate with their hardware, then turn around and broadcast it to the rest of the system as a standard MIDI device. At that point, it would show up in Synthesia's list automatically and could be used immediately. (This is not unlike the Piano Maestro's "Connector" app for Windows. It essentially pulls the driver part out into a separate app.)

So that's where I think I'm going to leave it for now. Bringing this back around to the features mentioned in the last post, this is where Synthesia 10.5 is most-likely going to fall:

  • The Hi-Lite will continue to work while directly wired. (And unless they release a "connector"-like app, it won't work with Synthesia via Bluetooth.)
  • The "Proprietary 1" entry will be gaining support for the Hi-Lite's two colors (and will now also appear on PC/Mac)!
  • The "as a bonus" Android M MIDI support means inter-app MIDI ports, no more "Would you like to let this app access the USB device you just plugged in" prompt, and MIDI devices now work on Chromebooks!
Posts: 11817

Postby Nicholas » 05-10-18 10:22 pm

A quick follow-up: I think I spotted the reason Synthesia seems more affected by bad Bluetooth connectivity than most on Android. Without going into too much detail, there are about five links in the bad-performance chain between Synthesia's native code, its Java layer, and Android's (mediocre) Bluetooth stack. I made some assumptions -- a decade ago, before Google released Android 1.0 :lol: -- that don't work very well in this environment.

As far as I can tell, it's a fixable problem. Or, at least instead of 50% MIDI data loss over Bluetooth, we'll be down to "only" the usual 2-5% loss that every Bluetooth MIDI app suffers. But, that fix means uprooting a lot of MIDI handling code throughout the app. I've already spent far too long on this feature during this development cycle. So, Android Bluetooth MIDI is cut for Synthesia 10.5. In its current state, it's unusable. Rather than leaving it in as-is and directing a focused beam of 1-star reviews at the app, I'd like to make a little more time to fix it the right way first.

So, Synthesia for Android is still stuck with wires for now. But Android M MIDI still brings benefits: hardware compatibility should be improved now. You'll get inter-app MIDI connections (which you could technically use to connect a Bluetooth device if you really needed to). And the best news is still keyboard connections on Chromebook! So there's that, at least.
Posts: 11817

Return to General

Who is online

Users browsing this forum: No registered users