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

  • delirious_owl@discuss.online
    link
    fedilink
    arrow-up
    0
    ·
    4 months ago

    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.

        • delirious_owl@discuss.online
          link
          fedilink
          arrow-up
          0
          ·
          4 months ago

          The most important speed to optimize is developer speed. Python is by that measure one of the fastest languages.

          CPU speed is negligible

          • vulpivia@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            4 months ago

            In this case we’re talking about a soft real-time application where milliseconds matter. If you use Python for this, your developer speed will suffer because you’re using most of your time to fight garbage collection pauses, among other things.

            • delirious_owl@discuss.online
              link
              fedilink
              arrow-up
              0
              ·
              4 months ago

              Kivy is a platform frequently used for video games. It has good hardware acceleration. It would work fine for this purpose.

              Again, the CPU time differences are negligible. They’re less than milliseconds.

  • Eugenia@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    4 months 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.

  • stevecrox@kbin.run
    link
    fedilink
    arrow-up
    0
    ·
    4 months ago

    QT is a cross platform UI development framework, its goal is to look native to the platform it operates on. This video from 2014 explains its benefits over GTK.

    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 Fuschia developers.

    Personally I hate web frontends as local applications. They integrate poorly on the desktop and often the JS engine has weird memory leaks

  • cetra3@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    4 months 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.

    • t0mri@lemmy.mlOP
      link
      fedilink
      arrow-up
      0
      ·
      4 months ago

      that’s so cool! it looks good too. i might need your help in the future.

  • NotMyOldRedditName@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    4 months 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.

  • Manito Manopla@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    4 months 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

  • Jay🚩@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    4 months ago

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