# ASIO Audio Interface

From Audacity Development Manual
The proprietary ASIO interface standard is essential on Windows for low latency recording and playback. It is also usually the best way of making Multi-channel recordings on Windows.

- Licensing restrictions prevent us including ASIO support in released versions of Audacity, but Audacity can be compiled with ASIO support for private, non-distributable use.
- This page summarizes ASIO licensing issues and steps to compile Audacity with ASIO support.

## Latencies on Windows, Linux and Mac

ASIO is a proprietary audio interface standard in use on Windows which bypasses the operating system's mixing kernel, so providing lowest latency direct communication between computer audio software and hardware.

- ASIO supports 24-bit sampling which is only otherwise available under Windows WASAPI or WDM-KS (Windows Driver Model Kernel Streaming). 24-bit sampling allows greater dynamic range, lower theoretical noise floor and greater resolution at lower audible volumes.
- An unmixed ASIO output is "bit identical" to the original source.
- Multiple physical input and output channels of the hardware are accessed over one single device.

Audacity includes support for Microsoft's Windows DirectSound interface protocol. To use it, select "Windows DirectSound" as host in Device Toolbar. This will give support for multi-channel recording on some sound devices, but not the very low latencies that are possible on ASIO.

On Linux, the standard ALSA audio API typically provides lower latencies than Windows under MME or Windows DirectSound. However, many Linux distributions now use PulseAudio by default for audio routing and mixing. PulseAudio sits between the sound source and the Linux kernel and thus has somewhat higher latency than direct use of ALSA. For lowest latencies, you can use the JACK API that provides both low latency audio communication and audio routing between applications. Current Audacity supports JACK fairly well, but with some limitations.

On Mac, Core Audio is the standard API and is fully supported by Audacity. Core Audio also has lower latencies than Windows under MME and Windows DirectSound but Jack OS X can be used for lowest latency.

## Audacity and ASIO

The ASIO technology was developed by German company Steinberg and is protected by a licensing agreement which prevents redistribution of its source code.

Audacity, as an open source program licensed under the GPL, is therefore currently unable to support ASIO, despite being ASIO-capable (providing the user's sound device is similarly capable). If ASIO support were distributed in Audacity builds this would either violate Steinberg's licence agreement if the code were included, or conversely would violate Audacity's GPL Licence if the code were withheld. There are persistent rumours of Steinberg opening up licensing, but without any apparent movement. Anyone who cares about this issue is invited to make their views known to Steinberg via their Contact page.

## Non-distributable ASIO support in Audacity

Audacity provides ASIO support on Windows for individuals who are prepared to compile Audacity from source code using the optional Steinberg ASIO SDK.

ASIO support is provided strictly on the basis that it is NON-DISTRIBUTABLE, that is, you may NOT copy or distribute builds including ASIO support to anyone else. The build is strictly for your own personal (private or commercial) use. For the same reasons, the Audacity team cannot distribute builds of Audacity including ASIO support.

The following is an overview of compiling Audacity from source code including ASIO support. Follow the instructions in the BUILDING.md for more detailled steps.

1. Download and install the free Microsoft Visual Studio Community Edition.
2. Download and install CMake and Python.
3. Install conan via `py -m pip install conan`.
4. Download and install the ASIO SDK from Steinberg.
5. Download the source code of the latest Audacity release from https://github.com/audacity/audacity/releases.
6. In CMake,
   1. Set the ASIOSDK_DIR environment variable to the directory where you installed the ASIO SDK. Reboot the computer.
   2. Configure, then Generate, then Open Project
7. Build Audacity using Visual Studio.

If you need help, please ask on the Compiling Audacity board on the Audacity Forum.