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
QT is a cross platform UI development framework, its goal is to look native to the platform it operates on. This video by a linux maintainer from 2014 explains its benefits over GTK, its a fun video and I don’t think the issues have really changed.
Most GTK advocates will argue QT is developed by Trolltech and isn’t GPL licensed so could go closed source! This argument seems to ignore open source projects use the Open Source releases of QT and if Trolltech did close source then the last open source would be maintained (much like GTK).
Personally I would avoid Flutter on the grounds its a Google owned library and Google have the attention span of a toddler.
Not helping that assessment is Google let go of the Fuschia team (which Flutter was being developed for) and seems to have let go a lot of Flutter developers.
Personally I hate web frontends as local applications. They integrate poorly on the desktop and often the JS engine has weird memory leaks
We just need a native os-js/webtop then the web frontends would make sense… Till then they feel bloaty (looking at discord)
I’ve started building a lightweight daw mostly for mixing songs together rather than any actual serious music production. Currently only supports volume and bass envelopes, and dragging tracks around. I’m planning to open source it when it’s a bit more polished. It’s written in rust and I’m using egui for the frontend.
that’s so cool! it looks good too. i might need your help in the future.
Raylib sounds great. I would avoid gtk/qt. Enlightenment library also there but might not have zig bindings.
Happy Qt User here, I was able to make sense of the C++ and Go bindings for Qt really quickly and there’s a lot of good resources and examples online for Qt Templates
You can also do the dance https://youtube.com/watch?v=J2mEPQGq5dU
bruh what was that!