The ONE Piano Hi-Lite and Synthesia

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

Post by thedealman » 01-01-18 10: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.

thedealman
Posts: 20

Post by thedealman » 01-01-18 11:40 pm

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.

Nicholas
Posts: 12196

Post by Nicholas » 01-06-18 11:25 pm

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.

thedealman
Posts: 20

Post by thedealman » 01-13-18 11:40 am

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.

Nicholas
Posts: 12196

Post by Nicholas » 01-20-18 1: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.

Nicholas
Posts: 12196

Post by Nicholas » 02-08-18 4: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:

BrunoDS52
Posts: 6

Post by BrunoDS52 » 02-25-18 6: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
Bruno

Nicholas
Posts: 12196

Post by Nicholas » 02-26-18 3: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.

Rasdebol
Posts: 1

Post by Rasdebol » 03-06-18 7: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.
RAS

Nicholas
Posts: 12196

Post by Nicholas » 03-06-18 1: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.)

Nicholas
Posts: 12196

Post by 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!

Nicholas
Posts: 12196

Post by 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.

lilalinux
Posts: 6

Post by lilalinux » 12-25-19 1:46 pm

Hey Ho!

Any update on this topic?
I have an iPad Pro 2018 and see the Hi-Lite in the Bluetooth Settings list, but am unable to connect with Synthesia 😩
It's working fine with the proprietary app, but that doesn't allow import of custom MIDIs :evil:

rgds

Nicholas
Posts: 12196

Post by Nicholas » 12-25-19 4:17 pm

A long, detailed post just three above this one is still current information. Making their device unpairable was a bad decision on The ONE Group's part that adds a burden and permission requirements to other apps that are unreasonable. Connecting it directly via a wire should still work without any trouble. (Sorry for the inconvenience! If we'd have made the device ourselves, it would have worked more sensibly.)

lilalinux
Posts: 6

Post by lilalinux » 12-25-19 6:56 pm

Thanks for your reply.
I tried connecting it via USB-C to my iPad Pro 2018, but apparently Synthesia didn't recognize it, or did I miss an option?
Where do you tell the iOS app that the keyboard is connected via USB?

P.S.: Maybe it would be a good idea, to mention the incompatibility here: https://synthesiagame.com/keyboards/Hel ... ng/unknown ;)

lilalinux
Posts: 6

Post by lilalinux » 12-30-19 3:32 pm

@Nicholas Are you sure it can be connected via USB with an iPad?

Nicholas
Posts: 12196

Post by Nicholas » 12-31-19 12:03 am

It's a good idea to mention the compatibility on that page. (I'm even considering removing the Hi-Lite recommendation altogether.)

Regarding the USB connection: I just dredged our Hi-Lite out of the test device closet to double-check and initially I wasn't able to get it to show up in the device list!

The adapter chain is: Apple's official Lightning to USB Camera Adapter (Lightning to USB A), then a USB A-to-micro-B cable, right into the small port on the Hi-Lite. It must also be plugged into wall power as well or you get an "Accessory uses too much power" message on the iPad.

Now for the interesting part: the first Micro B cable I could find was a short, thin one I hadn't ever tried before (it still had the twist-tie on it). I could get the not-enough-power message to appear but, despite my best efforts, wasn't able to get it to show up in the app.

On the off-chance that the cable was the problem, I switched to one of my favorite, gold-plated contact, thicker shielding AmazonBasics cables and the Hi-Lite showed up as "THE ONE Acoustic Piano" in Synthesia's list immediately and the key light pattern appeared when I chose "Proprietary 1" for the key light scheme.

I hate to be the bearer of "we're back to the days where the quality of the cable matters again", but here we are. :?

I'm not sure if it's Apple's adapter that needs a good cable or the Hi-Lite (or the combination of both), but if it were the former, that would explain some users reporting that Apple's own adapter has made things not show up in the past, too.

EDIT: Some cursory fiddling with a multimeter and both cables showed one difference immediately: the first cable (that didn't work) didn't seem to have an electrical connection between the metal shields on each end. The second cable (that did work) did. My understanding is that an end-to-end connection between the shields is required for "full-speed" devices, so presumably the first cable was spec'd as a "low-speed" cable. I was going to throw it away anyway, so before I did, I tried soldering a bodge wire between the two shields, but that still wasn't enough to get it working. There must be even more wrong with it.

User avatar
jimhenry
Posts: 1767
Location: Southern California

Post by jimhenry » 12-31-19 12:22 pm

If I remember correctly, it is bad practice to connect a shield at both ends of a cable. If connected at both ends, a current can flow in the shield and create a field rather than shielding the proper conductors contained in the shield from external electrical fields.
Jim Henry
Author of the Miditzer, a free virtual theatre pipe organ
http://www.VirtualOrgan.com/

Nicholas
Posts: 12196

Post by Nicholas » 12-31-19 2:48 pm

This Intel document was my source.

In section 5.4 it says "the principal challenge of full speed device EMI compliance is preventing high frequency energy from coupling to the shield", which sounds like the kind of trouble you were just describing. Nevertheless, section 5.2 (and to some extent 5.3.1) says "the shield must be carefully terminated to the connector". Putting those two together, I get the impression that despite the challenges involved, both ends must be electrically connected in order to maintain the integrity of the RF shielding.

lilalinux
Posts: 6

Post by lilalinux » 01-01-20 4:22 pm

Ah, that might be the problem.
I was using a USB-C to USB Cable + USB to Micro-USB Adapter. Now I ordered an AmazonBasics USB-C to Micro-USB Cable, let's see if that works better :geek:
Thanks for your help.

Post Reply