greetings, i want to build a daw (digital audio workstation), but i have no idea where to even start. here are my needs and the options i’ve found:
my needs:
- load and keep things (audio, midi) in memory
- cross-platform compatibility is not a requirement
the options i’ve found:
fluttergtk/qt- raylib (with zig)
webassembly (with zig)
[rejected] flutter: the first option that came to my mind was flutter. i thought it would give me a quick start in laying down the ui, but i don’t think it has the capability to fulfill my needs (please correct me if i’m wrong)
gtk/qt (with zig): i wonder if qt provide bindings for zig
raylib (with zig): it’s cool (my choice as of now)
[rejected] webassembly (with zig): it would be an ultimate comfort to build this way ig, but is it possible to make that web app into desktop one (like tauri or something)?
id really appreciate your opinions and advice
ps: i hope i’m clear. i got a headache searching about these. i’ll update this post for more clarity later
final note
Thank you guys for all your opinions and advises. Thanks for explaining the limitations with gtk, things with qt and flutter. That kotlin compose thing was cool too. Thanks for mentioning yabridge thats gonna be helpful. It might not seem like it, but I did listen to your thoughts, and stuck with zig and raylib. Thanks a lot
Google just killed flutter. Just so you know. They do that a lot. Be careful
i recommend gtk’s libadwaita. it saves alot of time. It has JS Python rust and C bindings.
Well, it is a bad idea if you are building anything not intended to be exclusively a GNOME app.
Libadwaita has been specifically designed for simple GNOME-style applications that only have one purpose and don’t include many features. I wouldn’t recommend it for complex project like a DAW.
You could use libadwaita
It is actually a GTK4 theme. You can use GTK4 without libadwaita but not the other way around.
I would say a “superset of gtk” since the point of libadwaita is shipping more widgets targeting Gnome UI/UX (including its theme). That’s why they describe it like “Building blocks for modern GNOME applications”.
I would always go with something cross platform to save you or someone else effort later. I recommend Python to save yourself effort too.
Checkout kivy.
The most important speed to optimize is developer speed. Python is by that measure one of the fastest languages.
CPU speed is negligible
What are your needs which aren’t being met with flutter? – It’s really just a UI renderer and it has a C/C++/ObjectC/Java underlayer for everything else. It should link fine with existing c libraries. I have done a bit with it recently including desktop dev: https://www.producthunt.com/products/which-browser So hopefully I can answer any questions. – Hit me up on matrix
It seems that Zig is the intended language? If go where a consideration I would point you at this to consider: https://github.com/go-graphics/go-gui-projects too.