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

  • @[email protected]
    link
    fedilink
    06 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.

      • @vulpivia
        link
        26 months ago

        Yes. For a DAW, I would avoid languages with garbage collection.

        • @[email protected]
          link
          fedilink
          06 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
            link
            16 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.

            • @[email protected]
              link
              fedilink
              16 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.

              • @vulpivia
                link
                16 months ago

                Writing real-time audio processing code in Python won’t be performant, though. And that’s the part that matters for a DAW.