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:

  • flutter
  • gtk/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

  • @cetra3@lemmy.ml
    link
    fedilink
    191 year ago

    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.

    • insomniac_lemon
      link
      fedilink
      31 year ago

      I want to use Raylib, but mentioning it here on the fediverse doesn’t get much of a response (I can’t see a raylib community from my instance). My choice of language probably doesn’t help, though.

      My first issue is wanting vertex colors on 3D models and I am not getting this (this may be a problem with the bindings I’m using, naylib(nim-lang)). The second would be needing guidance for the 2D polygon text loader that I started.

      Maybe I could make simple GUI applications with raygui, but I don’t currently really have many viable ideas on what I would want to make.


      To OP: Another potential option is using Godot w/bindings. Design is pretty fast and flexible, then using signals is super easy.

      I’ve tested some frameworks (specific to my language, so not really helpful to most), the one that I liked more said it was declarative user interface framework based on GTK though I would prefer a similar thing for Qt and there wasn’t an ability to automatically scale text size to better fill the available button size (I was testing an adventure-book reader and hoping to use unicode characters).

      Frameworks for single page applications (or some other browser-based tech) might be ok for simple stuff. Similarly, I’ve liked the idea of TUI frameworks (yeah, because htop) but haven’t really tried that yet.

      • @intelisense@lemm.ee
        link
        fedilink
        11 year ago

        IIRC, Qt comes with its own declarative language. That might be why you can’t find any bespoke ones.

  • Eugenia
    link
    fedilink
    English
    4
    edit-2
    1 year ago

    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.

  • Manito Manopla
    link
    fedilink
    31 year ago

    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

  • @magikmw@lemm.ee
    link
    fedilink
    31 year ago

    I’ve recently used dioxus with rust to build a native app with webview. Way cheaper than electron and the like.

  • Jay🚩
    link
    fedilink
    31 year ago

    Raylib sounds great. I would avoid gtk/qt. Enlightenment library also there but might not have zig bindings.

  • @NotMyOldRedditName@lemmy.world
    link
    fedilink
    2
    edit-2
    1 year ago

    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.