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
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.
Google just killed flutter. Just so you know. They do that a lot. Be careful
Lol
i recommend gtk’s libadwaita. it saves alot of time. It has JS Python rust and C bindings.
Bad idea. Very bad idea, especially for more complex projects.
Well, it is a bad idea if you are building anything not intended to be exclusively a GNOME app.
It’s also a bad idea if you want to build anything that’s more complex than GNOME’s single-purpose apps that lack all kinds of features. Building something as complex as a DAW would be a nightmare with libadwaita.
It depends if you’re using Gnome or KDE. If you prefer KDE, use Qt. If you prefer Gnome’s interface ideas (that looks quite different), use GTK+ with libadwaita. GTK+ has good bindings for Python, and Rust, and a new, rather Gnome-specific language, Vala.
there seems to be qt qml bindings for Zig
qml is a language made to build UIs, and is very easy to use in my experience - you can build your logic that needs to be high-performance (file loading, audio effects, etc.) in zig, and expose it to qml so it’s available in the UI.
i’ve never used zig, but i did do a similar thing using c++ & qml, and it was great to work with, so i think you should be fine going that route
Raylib sounds great. I would avoid gtk/qt. Enlightenment library also there but might not have zig bindings.
I’ve recently used dioxus with rust to build a native app with webview. Way cheaper than electron and the like.
You can try Kotlin Compose Multiplatform.
It can target JVM (windows, Linux, Mac) and then work on iOS and Android.
Android and JVM are stable. IOS is alpha and works well. Should be beta this year.
WASM support is coming as well but is experimental.
You can do as much multiplatform as you want and do as much platform specific as you want.
Compose itself is a declarative UI framework. Your UI is code.
Edit: You do require a Windows, Linux, and Mac machine to build the executables for each desktop JVM app, as well as a Mac for an iOS app. Android you can build on any of them.
He said multi platform is not a requirement. But good low-level audio performance is.
What were you thinking?
I don’t see him mentioning low level audio performance is a requirement. And he listed flutter as something he had considered.
Can you not process audio in the JVM?
Edit: targeting JVM he could also use the JNI and do the low level stuff in c++ if needed. I don’t know how that’d cross to iOS but it’d work on all 4 other platforms.
Edit: And he doesn’t need to target mobile either, he can just target the JVM, write it in Kotlin + Compose and if needed write native code if he needs more performance.
I recommend using qt for the interface, for audio use jack, it is better for music production, if you want to load vst plugins into the program, you can use yabridge








