i think vital should have other branch (standalone only) but codded in java. java can run on every device that hava jvm. so most modern devices, like phones, computers, sometimes even on smart tv. i know it will be slower but i think its worth it, because devices like phones dont need vsts anyways, and java coded once can work on every jvm.
Great idea! How about you start the development?
im not so good at programing, also i just realized vital use JUCE library which is coded in cpp and i dont think there is version in java.
Better choose the right programming language for the task than the one you are familiar with. However, Rust could be an interesting alternative to C++, as it’s also very performant and without GC.
But I’m pretty sure you underestimate the effort of programming something like Vital. I’m a programmer myself and the fact that Vital was programmed by a single person is awe inspiring
i dont think it will be faster than cpp, im programmer too, i said it because if vital would be in java, it will run on other deviced than computers with windows or macOS. i know programing it would be hard, this why i said other branch, not replacement for main one.
Ok, got it. But still, it would basically be a re-development and then you not only have it slowe running due to Java but also because those devices are usually lower-performance in general. Not sure if that would work out well.
I’m no C++ programmer, but depending on the dependencies you have it should also be possible to port it to ARM / mobile devices / Android and iOS with good performance intact, for example see SynthMaster 2 for iOS.
That would also be probably a lot less efort than rewriting Vital from scratch
But only Matt would really know best how much effort and how realistic that is.
GraalVM can compile to native executables … which reduces size enormously. And afaik it should be faster as well.
The reason c++ is used so much in plugins is its ability to remain “deterministic”. If you were to make a plugin in java, then the garbage collector would suddenly come in and do a cleaning. This does not work very well in a plugin style, because it would then freeze up and take up resources that could be spent on the other plugins running etc.
And you cant control when this happens, so you could experience the synth hanging up and losing audio and so on suddenly, because it was busy doing cleanup while playing oscillators.
This grow even worse if there are multiple plugins that each use things like java, c#, etc. Because these are non deterministic
So it isnt impossible… It just doesnt make much sense, since there are so many plugins that can run at the same time.
The daw itself can easily be written in java, however. then have an audio engine running all the plugins etc in c++.