How Linux Audio Works vs. Windows Audio in 2017 18

If you want to use Linux audio for professional work, but have been using Windows up until now, then there are some important differences you need to know about.

This article will help explain the basics of Linux audio, and it will do so by directly comparing each part of the system to the equivalent in Windows. This is to make it easy for musicians and sound engineers who understand Windows well to switch to Linux and get back their fun and freedom.

So sit back, relax, and get ready to learn:

  • Exactly what an audio framework is
  • The key differences between the way Linux and Windows handle audio
  • How Window’s WASAPI and ASIO compare with Linux’s ALSA and JACK

What is an audio framework?

Operating systems are complex, so even something as seemingly simple as playing back or generating a sound can have multiple layers of applications talking to each other.

linux audio sound stack 2017

Diagram 1 – The Linux Sound Stack 2017

In software a framework can be thought of as the scaffolding that you build the actual application around. It can also be thought of as an application, or set of applications, that do nothing until you add the functionality. The audio framework does nothing until another application tells it to play a sound, then it springs into life.

Diagram 1, is a simplified diagram of the current Linux audio framework (often referred to by the colloquialism ‘stack’.)

I deliberately missed out that the App can actually talk to ALSA directly, as very few do as they would lose all the benefits of using JACK or Pulse Audio.

What are these mysterious things inside the penguin pyramid? Don’t worry, all will soon be revealed.

Why do we need audio frameworks?

To make your computer actually generate sound requires a huge amount of code, and every program that wants sound does not want to have to write it all from scratch. To solve this problem the operating system provides a sound framework that all the applications can share.

When an application wants to transmit sound out of your speakers, it tells the framework to do the work, and if things go well the sound will pop out of your speakers and into your ears.

Diagram 2 shows what would happen if there was no audio framework, not good!


Diagram 2 – What having no sound stack would look like

Windows and Linux have totally different audio frameworks. For professional audio we want:

  • Low latency. As small a delay in processing as possible
  • ‘Bit perfect’. No altering the volume, sample rate, or dithering the audio without our permission

Both operating systems are able to provide this, but it is not the default as most general users are not interested in these features, they probably just want to play games or surf the web. It’s easier for them if the operating system can deal with all the technical stuff like sample rates without bothering them.

What does your audio interface’s hardware driver do in the audio framework?

sound-card-photoWe have talked about audio frameworks, but what about the actual drivers? You may never have heard about audio frameworks before, but only about drivers. Hardware drivers are just PART of the audio framework. They are treated very differently on Windows and Linux.

For your hardware to talk to the computer it needs a special middleman called a driver. This driver tells the computer exactly what your sound card can do, how many input and outputs it has, and very technical things you would probably die of boredom if you tried to understand.

There are generic drivers that can work with many different audio interfaces, but pro audio interfaces tend to have all sorts of special features that will need a custom driver. If you want good low latency crash free performance, then the interface needs a good driver written specially for the operating system you are using.

From a users perspective, without knowing about the audio framework, the biggest change going from Windows to Linux is that there is no need to download audio drivers any more.

In Windows you download ASIO / WASAPI drivers which talk directly to your applications

ASIO logoTo use a professional audio interface in Windows you will need to download the drivers from the manufacturers web site and install them. These will almost certainly include an ASIO driver. This type of special driver created by Steinberg will bypass the operating system as much as is possible and enable low latency high quality sound.

There will probably be another driver included for general Windows use. This is for software that does not support ASIO, and it will probably be Windows Core Audio which uses WASAPI. This is the current type of driver used in Windows 10, and supersedes MME (1991), DirectSound (1995), and WDM (1998).

Windows Core Audio can also bypass the operating system as much as is possible, and get low latency in ‘exclusive’ mode, but ASIO is still the most widely used pro audio standard.

In Linux audio the driver is built into ALSA which talks to Jack or Pulse Audio

In Linux all the hardware drivers are built into the Kernel and supplied out of the box (with a few exceptions like propriety 3rd party graphics drivers.) There is nothing to download.

The audio interface drivers nearly all live somewhere in the Kernel called ALSA (The Advanced Linux Sound Architecture). This magical place does more than just store all the drivers, it also has software and an API (special language computers speak to each other in) to communicate with the software above it.

Audio interface compatibility with Linux

The only thing the user needs to be concerned with really is getting an audio interface that has an ALSA sound driver in the Kernel. In the past, this has been a problem, but not so much today.

The great news is that something called USB Audio Class 2.0 compliant interfaces have become very common. This is a universal standard that means compatible interfaces will work out of the box in Linux. Manufacturers who make their devices USB Audio Class 2.0 compliant to work on a Mac/iPad also automatically make it work on Linux, and nobody has to write any extra drivers for the Linux Kernel.

Here is a useful list of some USB Class 2.0 Compliant audio interfaces, but this is not completely up-to-date. The Linux musicians forum hardware section is also a good resource.

Pulse Audio and JACK explained

A big difference from Windows is that in Linux there are other layers above the hardware drivers (in ALSA) we need to know about. These layers are called Pulse Audio and JACK. We need to understand they do different things that will either benefit using your computer as an audio workstation with DAW software, or as a general purpose computer watching Youtube and things like that.

Pulse Audio and JACK are technically ‘sound servers’, they can send and receive many audio channels to and from different applications. Any application that wants to use sound will need to choose to communicate with ALSA directly, Pulse Audio or JACK to be heard. 99% of modern general applications will use Pulse Audio, and the remaining specialised professional audio ones will use JACK.

Pulse Audio, the equivalent of Windows WASAPI

Pulse Audio can be thought of as the mainstream standard for normal everyday software. It communicates directly with your hardware’s ALSA driver, and does all the stuff the operating system needs it to do.

Pulse Audio can mix the audio outputs of different software playing together, it can convert the sample rates, and it can talk in a friendly and easy to understand way to software. Developers can make software that talks to Pulse Audio and they will know it is supported in all the Linux distributions out of the box.

JACK, the equivalent of Windows ASIO

JACK is made for professional audio applications like DAWs. It also communicates directly with your hardware’s ALSA driver.

It is usually not installed in Linux by default, but you can download it from your distribution’s software repository. It is built for low latency. Only pro audio applications use JACK, so you will still need Pulse Audio for your time wasting YouTube binges on Firefox or Chrome.


So you now know:

  • An audio framework can be thought of as scaffolding that lets applications send and receive sound from your computer
  • We need frameworks so the developer of an application does not have to write their own code just to send and receive sound
  • Our framework needs to be low latency and ‘bit perfect’ for profession use
  • The hardware driver is the middleman between your audio interface and the audio framework in your operating system
  • In Windows you use ASIO drivers for professional audio which don’t need an extra sound server on top of them
  • In Linux you use JACK sound server for professional audio. This sits on top of ALSA which contains your hardware driver

If you search for information on Linux audio, you may well come across something like from 2010. You may then get rather scared and hide under a table.

Things have changed a lot since 2010 when that article was written. Much crusty and pointless old software has been consigned to the recycle bin of history. Pulse audio became dominant, people hated it because it was full of bugs, but now it is all fixed and working well. JACK has remained the best and only choice for pro audio on Linux.

If you read online that Linux audio is a fragmented joke, refer them to this article and tell them it’s 2017 now. Audio on Linux has never been better! Just plug in your USB Audio Class 2.0 compliant audio interface, load up your DAW using JACK, and get jamming and mixing!


Leave a comment

Your email address will not be published. Required fields are marked *

18 thoughts on “How Linux Audio Works vs. Windows Audio in 2017

  • patrick emry

    running pulse audio on linux mint 18.3 im running into problems with certian programs locking my mic where i cant use it anywhere else till i get that solved i cant switch to linux full time

  • Emerson

    I use Linux for ten years
    I liked it. I tried more than ten o more distributionsm flavors, deskstops, from Puppy tahr to Ubuntu passing across ubuntu studio or Manjaro
    All is the same: A lay,
    Why I say this? beacuse anything you like to do, that is not write a mail or look a youtube video is a big problem.
    Hours and hours in google looking for a solution that everyone tell you a different one, an normally don’t work (but for them , yessss!!!)
    Advice; if you want something beautiful, free, simple, ando your target is to send mails, and see youtubes, go on, use linux and enjoy
    But if you want to make video, sound edit, pictures,…. forget. Or be ready to pay a lot of time in google with no guarantees of get it
    Best regards

    • David Post author

      Things have changed for the better now. If your audio interface is ‘usb audio class 2 compliant’ it will just work out of the box, no more bullshit! It was a huge time waster trying to get the HW working. If you stick to Intel GPU or AMD graphics cards they ‘just work’ too, best to avoid Nvidia and you are going to be happier.

      I agree video editing is still lacking compared to Windows, but that is changing fast too. Sound and picture are fantastic on Linux now. You have Krita 4 and the new Gimp 2.1 for digital art and photos along with Dark Table and RawTherapee. This software is AMAZING and can replace Adobe Windows classics no problem. Audio now has Reaper which is the best DAW in my opinion, plus you can run Windows plugins using LinVST. Things are sorted out these days! You will have to learn a few new things, but if you were coming fresh Windows you would also need to learn that. Thanks for your comment!

  • Allith

    I don’t think jack is a good example for how much better audio support under Linux has improved. Considering that getting jack running on windows actually works, but jackd doesn’t give much to go on when it doesn’t work. But Linux has gotten way better on hardware support that matters, like audio, network and video drivers. It used to be a pain

  • Christian W. Nyman

    Way to negative feedbacks in comments. Since to many companies ignore linux you can not yet expect the same variety of programs as mac or windows. But as others have said there are a lot of good ones. I have been fighting with windows to get low latency and I am giving up, it is tweak tweak tweak hell all day, even with drivers from the sound card manufacturers. With Debian using a real time kernel and the normal tweaks I get way better stability and latency than any windows, and don’t get me started on the malware/spyware called win 10.
    I try to tell vst developers to start supporting linux, but it is all talk to the hand baby if I even get a response, but that being said there are a lot of free plugins available now. Harrison Mixbus (DAW) runs native in linux distros, sounds awesome and looks great, not free but not super expensive.
    Linux Distros today, really work well with audio once normally tweaked, you can also get a pre-tweaked distro like ubuntu studio and off you go, not hard at all.
    People also need to learn that you can actually donate and it will help to pay for peoples effort to create free programs and this can spark even more initiative. I donate 5€ every month to Falke the main maintainer of jackd and all the great audio programs he makes. So instead of paying 100ed of dollar/euro for commercial programs we can collectively make a profound change. I am so happy that I can get away from Microsoft monopoly and enjoy a fantastic free system for my audio hobby.

  • Nandan

    Great article. I am quite new to this. In windows I used an application JRiver to direct all sound through its Virtual Sound Card following to my actual internal card through WASAPI. The sound output of my system improved considerably since. But there was some delay of what I played (on playing a video on YouTube). But sound quality was impoved.

    So using PulseAudio would like WASAPI in Windows? or I am getting it wrong.

    Thank you

  • cucio

    JACK is not the equivalent of ASIO. As you say elsewhere in the article, JACK is an audio (and MIDI) server, it provides sound transport services between applications or between an application and the audio driver (plus some other nifty features, like timebase sync.) ASIO is a driver model, that’s why on Windows you can’t use two applications trying to use the ASIO driver at the same time. Something close to JACK in the Windows world is Rewire. The closest thing to ASIO in Linux is ALSA.

  • Richard Billman

    Hey David, great article. One point though, I realize as I try to switch to Linux from Windows. The whole “playing sounds from two sources at once” thing is a ridiculous pain.

    I am curious then why we need to run JACK to support multiple audio sources.  In other words, why can’t I play Youtube in Chrome and use Bitwig (which uses JACK).

    In Windows I can just easily play songs in a DAW and play audio in Chrome.  I pick my output device in the DAW and Chrome’s output device from windows system settings and it “just works”. Trying to do this in Ubuntu and using the audio settings GUI is still a mess. Somehow I can get very low latency and play music from multiple sources all from Windows.

    • David Post author

      You don’t have to use JACK to use multiple sources, you can use Pulse Audio. Pulse is the OS default sound system, so it will be fully supported.

      If you want low latency in your DAW, and low latency video from Chrome/YouTube at the same time, I suggest you download the video with youtube-download and play it in MPV set to use JACK . The future solution is nearly here, it is in Fedora already: 🙂

      The best approach is just use the DAW for everything, it should be able to playback video. If not, checkout Reaper on Linux, it plays back video perfectly in sync with audio.

      • To-mos

        Actually JACK support was added to Firefox in 2017 all you had to do to enable it was add “–enable-jack” to the compile flags, now It’s included by default so they can just select JACK as their default audio input.

    • Estevan Castilho

      > In other words, why can’t I play Youtube in Chrome and use Bitwig (which uses JACK).
      Because jackd has the lock for your audio output (and it bypasses ALSA’s own mixer), meaning PulseAudio has nowhere to output audio (assuming Chrome uses PA, though it wouldn’t be much different if it interfaced with ALSA directly). You can try rerouting PA’s output to JACK if you wish, should just be a matter of installing a package with the PA->JACK module, loading into PulseAudio and setting the default sink.

    • Thomas Knight

      I use ubuntu-studio. The reason: everything just works! The usual Linux distributions are often not set up well for professional digital audio or media production purposes. I had years of pain with various other distros before I moved to ubuntu-studio. I spent hours and hours tweaking kernel, audio and graphics setups for low-latency/high-quality. I would get something working under Linux only to update some software and find it had all fundamentally changed, rendering my existing efforts meaningless. It seemed like every small update brought a new set of audio/graphics woes, basically because most applications don’t care about professional use. Now I use ubuntu-studio I don’t have to worry about all that as the tables are turned the other way around and all the pro level stuff always works perfectly. The distro maintainers have it all set up nicely from the start and manage to keep on top of all the inevitable clashes between different types of software vying for mutually exclusive purposes. No more tweaking from me required!

      There are also other distros designed with audio/graphics work in mind however I can’t vouch for those as I haven’t used many others before I settled with ubuntu-studio. (also some of the others came and went within a year, while in contrast ubuntu-studio has had a relatively stable history so far) The handy thing about being based on a popular distro like Ubuntu, is that pre-compiled up-to-date software is always readily available. There are also several Ubuntu ppas (software sources) with all sorts of useful tools for professional artists and so on, such as repositories of DSP plugins etc…

      If you don’t want to try out different distros just yet, I’m sure you can get PulseAudio to output through jack as others have already said. Try looking at some of the answers posted at the below link to get a feel for how it might work, but bear in mind that things have probably already changed and so there’s probably a new and better way by now, which however might break next month unless luck is on your side…

  • Frank Smith

    Really nice explanation re Linux and jack.
    Ubuntu studio works out of the box with all my USB devices.
    You also have Carla to route all your tracks from or to your DAW.

  • Mark O

    Missing is an explanation about how the “Windows Audio” and “Windows Audio End Point” Services fit into the Windows Audio Framework. What exactly do these contribute and how do they relate to the names that you have mentioned concerning the Windows audio stack? I’d really like to understand about these more fully due to currently having issues with Windows audio suddenly no longer allowing any audio drivers to even be “loaded” whatsoever.

  • trygve

    To make a USB Class 2 headset work with Redhat we had to set digital to analog conversion on the computer. The headset includes a DAC. Can you explain a bit more about what ALSA/Pulse are doing with regards to the actual analog to digital and digital to analog conversion? Is it actually connecting to the hardware DAC/ADC?