Please release a version for linux

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

Post by Kev79 »

It would be nice if this was offered in a native Linux installer version. That way we can build a cheap and clean easy solution. Maybe like a raspberry pie 3 and a 23" monitor setup. My phone and android devices are too small and a dedicated windows PC takes up to much space and resources. Is there a way to use the android version in linux as it is based on the same linux system? I would assume it wouldn't be that hard to convert it to linux from the android app.
Nicholas
Posts: 13135

Post by Nicholas »

Running the Windows version under Wine seems to be serving Linux users well enough today that it's hard to justify any more work to fill in the rest of those cracks. Looking at the website's visitor stats for the past couple months, Linux users are 0.77% of our traffic. That's already below the 1% threshold rule-of-thumb that we use to determine when it's safe to drop support for an old platform like WinXP.

Adding Raspberry Pi support would be less about making a Linux version (you're right that Android NDK already gets you 90% of the way there) and more about tackling the last few big optimizations to get Synthesia to run more smoothly on low-spec hardware. The current version of Synthesia would struggle pretty hard even on the Pi 3. (There is an argument to be made here that this optimization work should be done for the sake of low-spec Android devices, too.) I actually like the idea of RPi support because it's a nice, low-cost, uniform platform. It's just a big job with a few things higher on the to-do list.

And finally:
Kev79 wrote:I would assume it wouldn't be that hard to convert it to linux from the android app.
Conversion is the "easy" part. Long-term support is the hard part. When 0.77% of your audience has the most heterogeneous platform and would generate a much larger fraction of the support workload, it's harder to justify. (I sometimes joke about discontinuing the Android version because 1/4 of our platforms generates 3/4 of the problems we need to solve.) :)

Linux would multiply that out to however many different distros you can count. I prefer to make decisions based on how cool something will be for users (rather than basing anything on "business sense") but in this case with the financial realities of a team as small as ours, it is very hard to imagine spreading ourselves even thinner.

In summary:
  • We're satisfied with Linux users running the Windows version under Wine.
  • A dedicated Raspberry Pi version is something that might happen eventually, but it's a bigger job than a simple port.
Kev79
Posts: 4

Post by Kev79 »

I didn't realize that there was a lot of things that had to be done to work on an RPI platform. In my case my large piano is in a location in my house that it is hard to justify the price for a dedicated computer at the location. I did get a galaxy tab 10.1 which works pretty well. I would be nice to have a larger screen though. Thanks for the information. Maybe I will eventually get an all in one pc/monitor system.
olkhov
Posts: 30

Post by olkhov »

> The current version of Synthesia would struggle pretty hard even on the Pi 3

Would be interesting to hear more details on that, and what kind of optimizations it would require. Is that UI or other things?

In general - you seem to be positive about supporting RPi. Is that realistic, would there be enough (>1%) customers?
olkhov
Posts: 30

Post by olkhov »

>Android NDK already gets you 90% of the way there

The Android version - guessing about how it's done, it looks the UI is not implemented in the java-space?

I spent a couple of years making cross-platform Android and iOS apps, just curious about your tech choices. If you do not mind sharing that of course.
Nicholas
Posts: 13135

Post by Nicholas »

olkhov wrote:... you seem to be positive about supporting RPi. Is that realistic, would there be enough (>1%) customers?
My natural inclination is to view it as a challenge, which makes it more exciting. I've always liked the idea of squeezing as much performance out of a particular bit of hardware as possible. (This is why Synthesia's inefficiencies drive me a little crazy.) Realistically though, I think you're right that the audience isn't there to make the effort worthwhile. Presumably Apple sells more iPhones in an hour than RPi's are manufactured in a year, so there are juicier hardware targets out there. :?
olkhov wrote:... it looks the UI is not implemented in the java-space?
Nope. All of our platforms (PC/Mac/iPad/Android) sit right on top of the thinnest layer the OS will allow before you can get your hands on an OpenGL context. After that, everything is custom. It's a little overkill -- I've written code to detect the timing of double-clicks, how fast a finger just flicked, whether a button is being hovered, how much to scroll a scroll bar, and everything else you might find in a general purpose UI layer. Had you told me I'd have to do all that work back in 2006 or so when things were getting started, I probably would have gone with Qt or something from the outset. But, each tiny UI feature was added slowly over 12 years, so it didn't feel that bad. I suppose I was the boiled frog in this case. :lol:

At this point, it's almost becoming robust. The Android bugs I always complain about are in that thin hardware layer (touch/type/MIDI/file-system/graphics) -- the things you usually get from something like SDL for free -- but now that those are starting to settle down, each platform has a tendency to strengthen the framework. My goofy internal API gets a little more refined each time. These days it's not so hard to add a new one. (My reticence actually comes from the added support workload that platform will generate afterward!)

Once you get above the system layer, the UI stuff is a joy to use. It took years and years, but there is all sorts of fancy, automatic support in there now for Retina displays, layout, resizing, animation, etc.
olkhov
Posts: 30

Post by olkhov »

>Presumably Apple sells more iPhones in an hour than RPi's are manufactured in a year, so there are juicier hardware targets out there. :?

I heard RPi is the best-selling British computer: https://www.zdnet.com/article/14-millio ... in-the-uk/. Not that many as iPhones, but still quite a number. The question is how many individual users are there, and how many of them would want to use it as a Synthesia terminal.
olkhov
Posts: 30

Post by olkhov »

>I probably would have gone with Qt ..

I first thought Synthesia was probably implemented in Qt, but closer look at the UI - not really, it's all custom indeed. Never thought about making it in a game engine, like Unity 3D? Could have worked out nicely I think. There is probably no need in the physics engine in this app, but off-the shelf cross-platform possibilities of Unity 3D are amazing. And I think there is very little between game engines' APIs and OpenGL.
Last edited by olkhov on 10-22-18 2:30 am, edited 1 time in total.
olkhov
Posts: 30

Post by olkhov »

My goofy internal API gets a little more refined each time. These days it's not so hard to add a new one.
Sounds real agile :)
olkhov
Posts: 30

Post by olkhov »

Presumably Apple sells more iPhones in an hour than RPi's are manufactured in a year, so there are juicier hardware targets out there.
I am running Synthesia on an Android phone. Not sure yet if I am satisfied wth format of phone. Probably would want a bigger screen, may be 14" (not necessarily a touch screen), and a mouse/touchpad. We have two ubuntu machines in our houshold, an IPad, and Android phones. Oh, yeah, a couple of RPis indeed. My piano is in the attic, phone is Ok to start with Synthesia, but at the end that should be a bigger screen I think, not sure though about 7-9" tablet. RPi would have been a perfect match, but I should agree that the hw we have here is not typical. Maybe a laptop would do the job perfectly.

What do you think about Chromebooks?
Nicholas
Posts: 13135

Post by Nicholas »

olkhov wrote:Never thought about making it in a game engine, like Unity 3D?
Unity got started the same year that I was writing Synthesia. :D Back then there wasn't a great answer besides "write it yourself". Now there are lots of good options. Unity requires C# which would mean a full rewrite. Unreal Engine is all C++ and I've considered trying to transplant all the gameplay code in Synthesia on top of their system-level stuff. That would mean all the low-level platform junk would be taken care of automatically, forever. The only platform level stuff I'd have to worry about maintaining would be MIDI device input/output. (And much more capable graphics would come along for "free".) It's tempting, but it'd be a huge amount of work.
olkhov wrote:Not sure yet if I am satisfied with format of phone...
I'm not at all. Synthesia belongs at arm's length on your digital piano's music stand. And for that you need a tablet-sized screen at a minimum. (Really, my favorite has been mounting a large'ish touch-screen on a monitor arm and treating it like a giant tablet. You can zoom the on-screen keyboard display so that it's 1:1 with the keyboard keys themselves. That's a lot of fun!)
olkhov wrote:What do you think about Chromebooks?
We recently added Chromebook support (through the Google Play feature they just brought to many of them). Starting in 10.5, it works with MIDI devices connected to your Chromebook, too.
olkhov
Posts: 30

Post by olkhov »

As long as you have Windows build - I am curious if it is possible to build it for ARM version of MS Windows? If I am not mistaken there were ARM-Win notebooks on offer a few years ago.

Then I would give a try to brinning up the ARM build on Raspberry Pi with Wine.

Or, is your Win version too x86-specific?
Nicholas
Posts: 13135

Post by Nicholas »

They may have some emulation layer for the ARM version of Windows that can run x86 code (a little more slowly), but the Windows version of Synthesia is definitely x86. (You'd have less far to go with the iPad and Android versions, which are ARM code.)
olkhov
Posts: 30

Post by olkhov »

Actually, there is probably a better path for Synthesia on RPi - there should be Android builds for it. I experimented with Android Things on RPi. It was a year ago, and it was a preview of the Android Things, but worked smoothly.

I think I'll probably look at what Android builds are abailable for RPi.
Last edited by olkhov on 11-10-18 11:27 pm, edited 2 times in total.
olkhov
Posts: 30

Post by olkhov »

The Android version of Synthesia - do you have Atom and MIPS builds on Google Play?
olkhov
Posts: 30

Post by olkhov »

Somebody showed me today this Android https://emteria.com/ running on Raspberry Pi 3B.They were quite positive about it. I would like to try to run Android version of Synthesia on such setup. There is only one thing - the emteria build comes without Google Play Store - I'll need Synthesia's apk, not sure if it is something you'd consider?
Nicholas
Posts: 13135

Post by Nicholas »

It looks like this place can generate links to download the APK directly from Google Play.

It's only grabbing the latest official release (10.4) and not the 10.5 beta, which has a much better chance of running properly... but with any luck, the official 10.5 release should happen sometime this weekend. (We've been waiting on the final sound set for a couple months now.)

EDIT: Oh! Sorry! I didn't answer your previous question. We don't do a MIPS build for Synthesia (and don't have any plans to). But the APK includes both ARM and x86, so you should be all set on RPi3. I'm curious to hear how smoothly it runs. Please let me know. :)
olkhov
Posts: 30

Post by olkhov »

Ha-ha, there seems to be a way to run Android Synthesia in Linux: https://www.makeuseof.com/tag/run-andro ... mes-linux/
Nicholas
Posts: 13135

Post by Nicholas »

That's interesting. I wonder if that leads to a nicer experience than running the Windows version under Wine. Maybe I should start recommending that one instead. :D
olkhov
Posts: 30

Post by olkhov »

Back to Synthesia on Raspberry Pi / emteria.OS (Android 7):

- emteria.OS Android works fine on RPi3B, some little issues with configuring HDMI, took some time
- I used the link you gave to download Synthesia 10.5 APK - directly on RPi in a bundled browser
- Installation went fine, Synthesia works also fine, I see no performance issues at all
- Unlocking did not work because of "There was a problem communicating with the store" - have tried ethernet and wifi - no connectivity problems in the browser

- Have not tried midi connectivity yet - there are a few USB host ports on RPi3B - will try tomorrow
- Have not figured out yet how to get RPi/emteria.OS online with adb - used Broadcom's USB vendor id 0a5c: SUBSYSTEM=="usb", ATTR{idVendor}=="0a5c", MODE="0666", GROUP="plugdev", not sure though if it was the right one, may be it should be emteria vendor id

I wanted to use adb to make a screencast - if this won't work then I'll make a video with a camera and publish it on youtube.
Last edited by olkhov on 12-23-18 4:36 am, edited 1 time in total.
Post Reply