• grue@lemmy.world
    link
    fedilink
    arrow-up
    56
    ·
    20 hours ago

    Real talk, though: why has Linux taken at least five tries (OSS, ALSA, JACK, PulseAudio, PipeWire) to get audio right?!

    • SorryQuick@lemmy.ca
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      1 hour ago

      They don’t have the same goals.

      JACK is for professional audio.

      OSS and ALSA are kernel audio drivers, they’re the most powerful of them all but extremely low level. Everything else, like pulseaudio/pipewire are just higher-level interfaces that feed ALSA audio.

      Pulseaudio and pipewire are sound servers.

      So really it only took two tries:

      OSS -> ALSA

      Pulseaudio -> Pipewire

    • Rose@slrpnk.net
      link
      fedilink
      arrow-up
      8
      arrow-down
      1
      ·
      edit-2
      8 hours ago

      Ohhhhhh the newbies don’t remember EsounD (Enlightenment Enlightened Sound Daemon). Basically, it was an attempt at doing PulseAudio-esque stuff way back in the OSS era. Which is to say, it just supported software mixing of multiple audio sources, because OSS usually only allowed single process to output audio. EsounD was janky and didn’t work well, obviously. Probably the neatest thing about it was that it exposed the mixed output stream to any other app, so that made visualisers much easier to make (edit: another thing that newbies in this day and age don’t realise, but I cannot emphasise enough how crucial visualisers were for the late 1990s / early 2000s music experience). ALSA basically supported hardware mixing (if available) out of the box, so of course it immediately became my favourite.

    • Something Burger 🍔@jlai.lu
      link
      fedilink
      arrow-up
      88
      ·
      20 hours ago

      OSS came first, then got replaced by ALSA after it became proprietary.

      PulseAudio is a userspace audio server to which programs connect. It manages audio settings per app, then sends everything to ALSA. JACK is the same but with a focus on low latency.

      PipeWire is a modern drop-in replacement for both, and also has support for video on Wayland.

      • heliotrope@retrofed.com
        link
        fedilink
        English
        arrow-up
        20
        ·
        18 hours ago

        And then there’s also sndio, ported from OpenBSD. This does basically the same thing as OSS/ALSA.

    • Evotech@lemmy.world
      link
      fedilink
      arrow-up
      24
      arrow-down
      2
      ·
      20 hours ago

      That’s the thing about open source. Someone always thinks they can do better

    • hzl@piefed.blahaj.zone
      link
      fedilink
      English
      arrow-up
      11
      ·
      19 hours ago

      I’m still waiting for the latency to be viable for playing guitar with an audio interface.

      • Alphare@lemmy.world
        link
        fedilink
        arrow-up
        9
        ·
        13 hours ago

        I’m using pipewire just fine to do so? I just needed to set the buffer size to something appropriately low and I’ve had no issues from popewire’s side

        • hzl@piefed.blahaj.zone
          link
          fedilink
          English
          arrow-up
          1
          ·
          6 hours ago

          Maybe it’s time to give it a shot again. Does pipewire have similar functionality to voicemeeter the virtual audio cables?

          • drath@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            edit-2
            1 hour ago

            There’s helvum and carla control that allow you to edit the entire audio graph with all ins and outs for all hardware and software so you can route it however you like. No need for VAC and such. But even if you do, you can load pulseaudio modules i.e. pactl load-module module-null-sink and then route them with qjackctl which is absolutely crazy and awesome how pipewire lets you do that.

          • Alphare@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            1 hour ago

            Never used it, but I use something called pipewire graph or something (I’m on vacation and I can’t be bothered sorry heh)