Running Synthesia on a Windows 10 tablet

Have questions? Just saying hello? This is the place.
No explicit, hateful, or hurtful language. Nothing illegal.
Post Reply
cmplays
Posts: 58

Post by cmplays »

I'm looking to get a Windows 10 tablet for myself, and one of the things I want to run on it is Synthesia. I suspect it would be the most hardware intensive app I need. I assume Surface Pro would handle it just fine, but if I want a cheaper tablet, would Synthesia actually work on it?

For example, Acer Switch 3 has the following specs: CPU: 1.1GHz Intel Pentium N4200 | Graphics: Intel HD Graphics 505 | RAM: 4GB. Is there a way for me to know if this is good enough?

Also, could those who have tried it before share which Windows tablets they've been able to run Synthesia on successfully?

Thanks!
Nicholas
Posts: 13135

Post by Nicholas »

The Surface Pro is much, much more than enough. :D

The Switch 3 should be fine. That's still more hardware than most of the lower-end Android tablets have, and they run Synthesia just fine.

(The last couple releases of Synthesia -- and especially the next few -- are also getting faster all the time. Over a decade ago, Synthesia began as a hobby project. It would be charitable to admit there wasn't much attention paid to efficiency. So long as it ran on my own computer, it was fine! :lol: As the years went by and I started to understand the dizzying array of hardware out there, features are now designed with performance on ancient/low-end devices in mind. And, as I get a chance to revisit things, they often get a performance tune-up, too. There are still one or two huge improvements that can be made to get things to run smoothly all the way down to Raspberry Pi-class hardware. I'm hoping to work the preparation for those bits in where the opportunity arises, while working on other new features in the meantime. We'll get there someday!)
cmplays
Posts: 58

Post by cmplays »

Oh, I didn't realize Synthesia was easy going in its hardware requirements. Thank you for the info!
Nicholas
Posts: 13135

Post by Nicholas »

My favorite statistic is that (unless you're playing some multi-gigabyte song) Synthesia usually only uses around 50-70 MB of memory. That's less than some of the "sit in your system tray and check the server once a day to see if we need to pop up a message telling you about an update" type of apps. That's less than it takes to open a new, blank tab in Chrome. :lol:
cmplays
Posts: 58

Post by cmplays »

Well, there are also gfx and CPU requirements I suppose. Would it still scroll smoothly on some cheap ass tablet?

Also, out of curiosity, what currently prevents Synthesia from operating on RasPi 3? There should be enough RAM. Is it graphics or CPU?
Nicholas
Posts: 13135

Post by Nicholas »

Well, the lack of a proper Linux version is a big hindrance for RPi right now.

Otherwise, I usually try to avoid posting anything in the forums as technical as the following, but you asked for it. :D

Right now the closest thing to a bottleneck is GPU memory bandwidth. It's a bit naive, but Synthesia sends every triangle to the GPU every frame, despite the vast majority of the geometry not ever changing. This is the big optimization that still remains. Today, each frame requires a big vertex buffer upload and dozens of draw calls, each with a texture change. By using static geometry and adding texture atlases (instead of each type of UI control using a separate texture), a frame would require something like two draw calls. Three if sheet music was showing. No buffer uploading per frame. You'd get a decent battery-use improvement, too: without all the duplicate work of copying nearly-identical triangles to the GPU each frame, the per-frame CPU and GPU would go down, leaving things nearly idle most of the time.

All of that said, my own home computer has an older (circa 2012) Nvidia GeForce 670 and with Vsync forced off, Synthesia hits 4900 frames per second.

The only other place I've seen tablets struggle is with fill rate. On Android tablets with high-density ("Retina") displays but not quite enough GPU to drive all those pixels -- something like the 2012 Nexus 7 -- we've seen it struggle to hit 40-50 frames per second. If we drop the OpenGL window down to 1x or 1.5x scaling instead of 2x, it jumps right back up to 60 fps. Synthesia also does a bit of overdrawing on the keyboard: filling that entire space with a black background before drawing the piano keys. Optimizing that extra "clear to black" away would help that particular problem a bit. In some preliminary testing, dropping the render target from 32-bit color down to 16-bit also seemed to bump the frame rate to 60, but that has the side-effect of causing some pretty glaring color banding that I don't like.

The short answer for Android is that anything with a 1x (standard density) screen or anything with a beefy GPU (say, the awesome Nvidia Shield tablet) doesn't even come close to struggling. Really, the requirements are very slight. It's only the older and lower-end hardware where any of these things become noticeable. Even the most-recent lowest-end Amazon Fire tablets (which are something like $29 if you can catch them as a Deal of the Day) run Synthesia perfectly smoothly (again, because of the 1x pixel density screen).
cmplays
Posts: 58

Post by cmplays »

Thanks for the detailed explanation!

But what is the issue with Linux on RPi? Raspbian is basically a clone of Debian, isn't it? And it's already on Stretch as of a few months ago. What is it missing?
Nicholas
Posts: 13135

Post by Nicholas »

What's already on Stretch? Do you mean Linthesia? That's a fork from the last time Synthesia was open source, back in 2007. I don't keep up with the project, but last I checked -- besides Linux compatibility -- they hadn't added any substantial new features.

Otherwise, I talk a little bit about the current Linux situation in my first reply to this topic. The short version is that the long-term support for a new platform is an ongoing cost that is much higher than the initial porting effort, and we're already stretched very thin (mostly due to Android :lol: ) as it is.
cmplays
Posts: 58

Post by cmplays »

Ah, sorry, I misunderstood. You meant there is no proper Linux version of Synthesia.
Nicholas
Posts: 13135

Post by Nicholas »

Correct. Some of the POSIX work for the system layer has already been done (for the Android version of Synthesia), but if supporting a platform that runs on a wildly heterogeneous set of hardware with many different distributions has taught us anything on the Android side, it's that support takes more work than development. So, I've been scared off a bit from Linux.

There could be an argument for "all those Linux people are computer experts anyway, let them deal with their own problems"... but that isn't a view I subscribe to. :D I have a built-in mechanism that makes me feel guilty whenever I'm not able to help solve someone's problem in something I'd created. The wacky broken state of Android a few years ago (things have gotten a little better since) actually took a strange personal toll on me. I wasn't used to page after page of 1-star reviews due to hardware stuff outside of our control.

I can definitely see the appeal of the console market where you have exactly one hardware target. It's a bit like developing for the iPad. Nice and pure. Maybe there is something to be said for a Raspberry Pi-only version for Linux! :lol:
cmplays
Posts: 58

Post by cmplays »

Works on Switch 3 with no performance issues. Only it froze solid once, had to kill it from the task manager, which I haven't seen before on my desktop PC. But overall, I couldn't be happier -- putting the tablet in front of me and playing from it is just so much more convenient.
JonWalter
Posts: 1

Post by JonWalter »

Hi!
I've been using On my windows 2-in-1 Yoga.
Seems to work OK but when I click "search", there is a search textbox but no on screen keyboard (I have to unfold the keyboard which is not convenient with PC "docked" on the piano in tablet mode
cmplays
Posts: 58

Post by cmplays »

I think it's more a Windows bug than Synthesia. I'm getting this problem in other apps on my tablet too. Normally, if the taskbar is visible in tablet mode, there is an icon for keyboard at the bottom right, so you can use that to bring it up.
Nicholas
Posts: 13135

Post by Nicholas »

I'll check to see if Microsoft has provided an API to pop up the keyboard automatically. We already have to do this on iPad/Android when someone taps the text box, so there are already hooks in the code for it.
Nicholas
Posts: 13135

Post by Nicholas »

Hmm, I wasn't able to find anything useful. Apparently it's all handled automatically by Windows when a text box is selected... except Synthesia doesn't use Windows' text boxes.

The only workarounds I was able to find looked a little brute force to me: telling Windows to launch the on-screen keyboard app as needed, and then killing the process when no longer needed. Those seem like they might cause more trouble than they fix.

So, for now I think I'm going to leave it as-is and it will continue to require a tap on the keyboard icon in the Windows taskbar to pop the keyboard up. Sorry!
Post Reply