Slashdot Mirror


State of Sound Development On Linux Not So Sorry After All

An anonymous reader writes "There have been past claims by Adobe and others that development on Linux is a jungle, particularly with regards to audio. However today, the author of the popular 'The Sorry State of Sound in Linux' has posted a follow up showing Adobe's claims to be FUD, as well as being a good update on where OSS and ALSA are holding today, and why PulseAudio isn't a good idea."

7 of 427 comments (clear)

  1. Re:it's all relative by delta419 · · Score: 5, Interesting

    I can't speak for Logic Pro, but there is a (VERY good) alternative to Pro Tools; Ardour. The ubuntustudio packages had everything I needed to jump right into a professional DAW. I've been using it for high-quality recording/editing for almost a year now, no problems.

  2. What are we trying to achieve? by Just+Some+Guy · · Score: 5, Interesting

    Yes, Linux audio sucks. If nothing else, we have three common and incompatible APIs to perform a single tasks, and none of them are definitively better than the others. So, my question: what exactly is it that we're trying to achieve? What's the end goal of creating newer APIs instead of perfecting the old ones, such as moving from OSS to ALSA to whatever they roll out this month?

    For comparison, FreeBSD uses multi-channel OSS. You can have a whole passel of processes writing to /dev/dsp simultaneously, because whenever a process attempts to open it, the OS spawns off a new copy. It Just Works. I'm a little amazed that my FreeBSD server's sound handling is so much better than my Linux desktop's and requires approximate zero client configuration. So again, what was Linux hoping to achieve by dropping old "obsolete" OSS in favor of increasingly complex solutions?

    --
    Dewey, what part of this looks like authorities should be involved?
  3. He makes one excellent and crucial point by vadim_t · · Score: 4, Interesting

    And that is that ALSA's way of handling mixing is completely moronic.

    As an user, I care about hearing sound first of all. Sound quality (no pops or crackles) comes second, latency comes third.

    There should always be sound mixing, with no ifs, buts, exceptions, or configuration required. It should be there by default for anything that tries to play sound, whether through ALSA or the OSS backwards compatibility.

    The result of this nonsense is that crap like pulseaudio continues to exist, which is CPU hungry, often skips, fails to work with some programs and crashes frequently (what the hell is up with that?).

    Is there any document out there which explains why /dev/dsp doesn't get mixing with ALSA? And why nobody tried to patch that yet?

  4. Re:The fundamental problem by jd · · Score: 4, Interesting

    I agree with the specification point, and agree that the lowest level API should be as basic (and standard) as possible. Then, once you have that, you can layer whatever higher-level architecture you like on top, as the low-level drivers are "just there" and will "just work".

    However, this doesn't help applications, necessarily. I would argue to help apps writers, you need to standardize the glue between layers, such that sound and commands can be passed from one layer to another in a predictable manner. Innovators can always add new commands that are parsed by their own injectable layer.

    I would also argue that it's impossible to chain userland software a-la JACK via the kernel efficiently, as you've a double context switch per element in the chain. Since transforms are CPU intensive, you want to do the fewest composite transforms possible, which means a software mixer should be something you can chain, which means that the heavy-lifting mixer needs to be in userspace.

    (Either that, or you're going to need LADSPA and LV2 support in the kernel, plus some way of coaxing "smart" sound cards into supporting such effects. Since the kernel developers would force the first coder who tried to submit such a patch to walk the plank, I don't see it as likely.)

    This would leave the low-level mixer for mixing between kernel threads (rather than between applications per-se) and normalizing the inputs. If we're not having to normalize values anywhere else in the process, we should end up with improved quality and less latency. (Anything that mucks with precision hurts quality, and any operation at all hurts latency.)

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  5. Are you kidding? by Hurricane78 · · Score: 4, Interesting

    App -> libao -> OSS API -> OSS Back-end - Good sound, low latency.
    App -> libao -> OSS API -> ALSA Back-end - Good sound, minor latency.
    App -> libao -> ALSA API -> OSS Back-end - Good sound, low latency.
    App -> libao -> ALSA API -> ALSA Back-end - Bad sound, horrible latency.
    App -> SDL -> OSS API -> OSS Back-end - Good sound, really low latency.
    App -> SDL -> OSS API -> ALSA Back-end - Good sound, minor latency.
    App -> SDL -> ALSA API -> OSS Back-end - Good sound, low latency.
    App -> SDL -> ALSA API -> ALSA Back-end - Good sound, minor latency.
    App -> OpenAL -> OSS API -> OSS Back-end - Great sound, really low latency.
    App -> OpenAL -> OSS API -> ALSA Back-end - Adequate sound, bad latency.
    App -> OpenAL -> ALSA API -> OSS Back-end - Bad sound, bad latency.
    App -> OpenAL -> ALSA API -> ALSA Back-end - Adequate sound, bad latency.
    App -> OSS API -> OSS Back-end - Great sound, really low latency.
    App -> OSS API -> ALSA Back-end - Good sound, minor latency.
    App -> ALSA API -> OSS Back-end - Great sound, low latency.
    App -> ALSA API -> ALSA Back-end - Good sound, bad latency.

    Do you by any chance buy Monster cables, and a wooden volume knob, because it "sounds better"?

    I'm sorry, but without proper ABX tests, I do not believe a single word of this table.
    And about the latency: Please enlighten us, how you actually measured them?

    --
    Any sufficiently advanced intelligence is indistinguishable from stupidity.
  6. Re:By saying that he proves his former point by X0563511 · · Score: 4, Interesting

    Which is great, but it's not so great if you are trying to produce audio.

    When I plug my guitar in, I can notice a latency greater than 5ms. And greater than 25ms, it drives me insane.

    Compare that to what I get with PluseAudio (usually): 100-150ms. No thank you.

    --
    For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
  7. Re:Problem with PulseAudio? by AaronW · · Score: 4, Interesting

    I agree. I think it has more to do with some kernel developers who refuse to consider OSS after OSS3.

    The OSS kernel interface is simple and the audio mixing is performed in the kernel (if needed) where it should be. All an app needs to do is open /dev/dsp and perform a few ioctl calls and they're ready to go. They don't need to care whether some other application is also playing audio or not.

    It's much cleaner than ALSA, which is a mess IMO. I've had a lot of problems with ALSA until I finally dumped it for OSS4 which solved the constant clicking, stuttering and lack of audio mixing. ALSA would often need to be restarted and it finally got to the point after a kernel upgrade where ALSA just plain refused to work at all.

    With OSS I can basically choose the format of the audio, the sample rate and the volume and just set it and go. If the hardware doesn't support multi-stream mixing and volume then OSS does it in software. Similarly, if the hardware doesn't support the sample rate (i.e. 44100) then OSS will resample it to match the hardware, thus abstracting the hardware from the software, which is the way it should be.

    --
    This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.