Android 13

Trouble with Synthesia, your keyboard, or adapter? Think you found a bug?
When describing problems, always mention your OS and game version (shown at the bottom of the title screen).

If your keyboard has USB or MIDI ports, there is a tremendously high chance (>99%) it will work with Synthesia. See what you'll need on the keyboards page.
Post Reply
Salino
Posts: 6

Post by Salino »

I use to Play midi files found all over the internet, in these files I set te melody instrument to the right hand. This to have background to play on my tablet and the melody sounding on my keyboard. After that I mix them both to the amplifier.
Set up is a 10 year old Medion tablet with Android 8.1.0 running Synthesia 10.9.5890 and connected to a Yamaha SHS-500 keytar.
This keytar has a GM sound engine so that the right hand melody is allways played with the exact instrument set in Synthesia. This set-up works perfectly, but………..
I bought myself a bran new Samsung Galaxy tab a8 to replace my old tablet.
This new tab a8 has Android 13 and sudddenly my instruments do not change any more.
All instruments sound piano on my keytar. I found on the net that Android13 now supports midi2.0 and running an other midi player do change the instruments.

In the Synthesia setup my keyboard do not show up for input nor output when selecting the build-in USB-MIDI driver, only the Android M MIDi allows my keytar but just sounds piano.

Any sugestions on how I can solve this.
Salino
Posts: 6

Post by Salino »

Did some tests.
When I try to force the Synthesia permissions Android replys with: “app does not support new Android version”

The build-in USB-MIDI driver in Synthesia do not work in Android13, this driver is needed to send the instrument change commands.

Can this be solied on a short therm? Since I can not rely on my old tablet and I need these midi commands.
Nicholas
Posts: 13128

Post by Nicholas »

Salino wrote: 02-03-23 9:34 am... only the Android M MIDI allows my keytar but just sounds piano.
That's kind of alarming. I wasn't aware of any changes they'd be making that would impact apps that continue to use the MIDI 1.0 protocol. (My guess is that it's a bug in their OS code.)

Worse, they've also added another "Android 10 MIDI" library, but Synthesia doesn't implement it yet. I've still been scrambling to fix the last thing they broke starting in Android 11 (not being able to see or use MusicXML or SoundFont files).

Google really goes out of their way to make it challenging for app developers to work with their devices.
Salino
Posts: 6

Post by Salino »

Any chance having this problem solved in the near future?
I can not use my old tablet any more and my new one doesn’t allow other than Android13.
Need the instrument change and other midi commands.
Nicholas
Posts: 13128

Post by Nicholas »

I think I found the Built-in USB-MIDI driver problem in Android 12 and later. It should be fixed in the next update.

I'm still not sure about the instrument change problem though. I was able to get the app to change the MIDI program from both drivers without any trouble. If you double-check the Settings --> Advanced --> Instrument Change Messages option, do you have that enabled? If it's disabled, Synthesia won't send any program (instrument) change messages.

EDIT: I take it back. Android M MIDI works fine on my Android 13 test device, but when double-checking that I didn't break anything on an older (Android 7) device, I was able to reproduce the no-instrument-changes problem you described while using the Android M driver. It still works using the USB-MIDI driver though, so at the very least that should be a workaround. I'll investigate to see what might have happened there.
Nicholas
Posts: 13128

Post by Nicholas »

... and I just found the piano-only problem with the Android M MIDI driver. That one has been broken since day-1, back in 2018. How embarrassing.

I'm not sure why I thought this would be sufficient, but I was sending every regular (non-SysEx) MIDI message (through the Android M driver) as three bytes instead of the message-specific length. :? (Grasping at straws for an explanation, maybe it was because I was mirroring the USB-MIDI driver code, which must always send 4-byte USB-MIDI packets, padded with zeroes for shorter messages?) In either case, 2-byte MIDI messages--like instrument changes--had an extra zero being sent afterward. So, according to the MIDI standard, that zero was being read as a message using the same "running status" of the previous instrument change message with a data byte of zero... which is the Acoustic Grand Piano voice. So every instrument change was immediately being followed by a second one that set it back to piano.

Now I'm more interested in why it didn't reproduce on the Android 13 test device yesterday. Maybe this is such a common occurrence that they added special-case code to check for trailing zeroes in exactly-three-byte messages in a later Android version?

In any event, this will also be fixed in the next update. (This was my last Android issue to investigate, so after a little more testing, I expect to push a beta update out later today.) Sorry for all the trouble and the delay on the fixes.

EDIT: 10.9.5914 has been uploaded to Google Play. It should show up in a couple days after they finish reviewing it. In the meantime, you can side-load the .apk from the pink box at the top of the dev updates section of the forum.
Salino
Posts: 6

Post by Salino »

Still have to say thank you to Nicholas.
Everything works weĺl again.
Post Reply