Synthesia on iPadOS 17.2 via BT freezes(?) FP-10

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.
Nicholas
Posts: 13170

Post by Nicholas »

Bryter5 wrote: 04-23-24 3:05 pm Happy to confirm this working for me also.
Thanks
With just "Set Channel Volumes to default" disabled?
Bryter5
Posts: 6

Post by Bryter5 »

Yes... But the weird thing was it also works with, that ON and any two of the other 5 settings OFF.

Literally...pick two at random (of the five defaults) and turn them off...it works!

Slightly strange.

Just to reiterate. I turned the piano off for each setting change, made sure the settings remained when it started again.. played the piano while in settings. Then went to free play and checked there.
Restarted piano, went to free play...checked again.
Stef231
Posts: 11

Post by Stef231 »

I checked again. I found out that in rare cases the piano crashes even if you turn off all options when you go to “Hands, colors and instruments” screen and listen to certain instruments of some complex midi files. For example there is an “Electric Guitar (jazz)” on midi channel 4. When I play this track the piano crashes. But when I listen to another “Electronic guitar (jazz)” on channel 5 it works fine.

Apart from that for 99% of my songs it is sufficient to turn off
-‚All Controllers Off’ on all channels
- Set channel volumes to default
These two are critical for me.
Last edited by Stef231 on 04-24-24 2:12 pm, edited 2 times in total.
Stef231
Posts: 11

Post by Stef231 »

I‘m also still wondering why these issues have come up after the upgrade to iOS 17.2 for the first time
Nicholas
Posts: 13170

Post by Nicholas »

Alright, it sounds like the real culprit might be "trying to send too many messages to a Roland keyboard too quickly". The between-screen resets are particularly "chatty" times. You figure each one of those options sends sixteen messages (one to each of the 16 MIDI channels), so if four are enabled that's 64 messages all at once in a burst. So it sounds like reducing the size of the reset was more of a band-aid fix than solving any root cause.

In the "complex MIDI file" case you not only get a reset when you stop the preview but it also happens to send a Note Off for anything that was currently playing, so that might have pushed the keyboard just over the edge.

The better answer for Synthesia than blasting out 48 or 64 messages all the time would be to keep track of what is actually being sent to the device. If there haven't been any Bank Select messages sent to any channels, then we don't need to reset any banks. If notes were only sent on channels 1 and 2 then we don't need to send "All Notes Off" and "All Sounds Off" to channels 3 through 16. If Synthesia kept track of the "dirty" MIDI state and only restored the things that changed, a reset might average two or three messages between screens instead of sixty or so.

That should be enough to make the Roland keyboard problem all but disappear (regardless of the new reset settings).

As for the reason why it only started happening after a particular iOS update, I have no idea. I know they used to automatically bundle several individual MIDI messages into a larger, single BLE-MIDI packet. (Contrast this with Android where you always get a BLE-MIDI message for each MIDI event so long as you're sending them one at a time in your code.) Maybe some of Apple's recent under-the-hood work to support MIDI 2.0 changed some assumptions and now they follow Android's behavior of sending more Bluetooth messages? Maybe we're not hitting Roland's limit on their internal MIDI message buffer but rather their internal Bluetooth data buffer? (Although I remember someone said this also happens over USB... hmm.)
mikiqex
Posts: 8

Post by mikiqex »

Bryter5 wrote: 04-23-24 4:09 pm Yes... But the weird thing was it also works with, that ON and any two of the other 5 settings OFF.
Yes, I can confirm that's my case as well. Sorry, I'm a lousy tester :oops: I was so focused on the "turn off as few things as possible" I totally missed that part of testing.

Also I have found one of my MIDI files crashes the app constantly when I try to play it (although it plays in the song list). I sent a couple of debug reports via the system prompt, but that's off-topic in this thread.
Stef231
Posts: 11

Post by Stef231 »

Yes, same for me. Since using the beta version the app crashes frequently for various songs
Nicholas
Posts: 13170

Post by Nicholas »

Alright, a new build (10.10.5966) just went up. Curiously there was zero review time; it was approved immediately. And I did the "notify testers" step right away this time.

Sorry about the crashes. That's in some other in-progress code for an unrelated feature that wasn't quite ready to go out the door yet. I slapped some flex tape on it so hopefully it won't be so crashy until I get a chance to actually wrap it up.

The more interesting change is a new option at the top of the reset choices list: "Only reset things that've changed". It's on by default but if you beta folks have changed anything on that screen that probably won't get picked up automatically. If you could, please click the reset-to-defaults button on that screen and let me know if your Roland keyboards freeze ever again. They shouldn't.

The new option keeps an eye on every MIDI message sent to a device and when it's time to reset, it will only send messages to those channels and of those types for the MIDI state that has actually been changed. For the rather simple built-in songs this means a reset is now an average of 2 or 4 messages instead of 64. So as long as "Only reset things that've changed" is enabled it should be safe to leave the others on without the danger of flooding the digital piano with too many messages anymore. Best of all this means I don't need to disable any of the reset options by default anymore. So the resets will still be comprehensive, just a lot more polite to the device now.
mikiqex
Posts: 8

Post by mikiqex »

Thanks so much! I updated the beta and did a reset to default, enabling the top half of those MIDI reset switches, incl. things that've changed. I did a quick round of screens and MIDI files: no crashes of Roland nor Synthesia whatsoever! Of course I'll give it a proper whirl later on, but so far it looks you nailed the problem 8-)
Stef231
Posts: 11

Post by Stef231 »

Awesome! I have already tested some of my songs and there haven’t been any crashes so far.
Thanks a lot!!!
Bryter5
Posts: 6

Post by Bryter5 »

Hi

I've tested with the built-in songs over the last couple of days and haven't experienced any issues at all with the 'reset what's changed' setting.
Seems like the approach works. Thanks for your efforts!!
Bryter5
Posts: 6

Post by Bryter5 »

Was the new version uploaded to the App Store?
Just realised I was using the version you provided in TestFlight.
Now that link has expired I’m back to a version 10.9.5895…with the same bug 😏
The version listed in my App Store is10.9.2

Can’t seem to find 10.10 listed?

Thanks

Alan
Nicholas
Posts: 13170

Post by Nicholas »

Sorry, 10.10 hasn't been released yet. I just pushed a new iOS build to TestFlight in the meantime.
Post Reply