ASIO Audio Interface

From Audacity Wiki
Revision as of 13:13, 25 January 2014 by Galeandrews (talk | contribs) (Provide better overview of compiling, and link to Developing On Windows.)
Jump to: navigation, search
The proprietary ASIO interface standard is essential on Windows (and to a lesser extent on Mac) for low latency recording and playback. It is usually the best way of making multi-channel recordings on those platforms.
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 summarises ASIO licensing issues and steps to compile Audacity with ASIO support.
Related article(s):

Quick Description

ASIO is a proprietary audio interface standard in use on Windows and Mac which bypasses the operating system's mixing kernel, so providing low latency direct communication between computer audio software and hardware, and allowing multiple audio inputs and outputs to be accessed independently.

On Linux, JACK is an API that provides both low latency audio communication and audio routing between applications. Latest versions of Audacity support JACK fairly well, but with some limitations. On Mac OS X you can similarly use Jack OS X.

Audacity releases from legacy 1.3.7 onwards include 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. Anyone can distribute Audacity with DirectSound support since no proprietary code is included (the library is merely loaded at runtime).

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

Since legacy version 1.3.3, Audacity has provided 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, Audacity can NOT distribute builds of Audacity including ASIO support, so please don't ask!

The following is an overview of compiling Audacity from source code including ASIO support.

  1. Install the free Microsoft Visual Studio Express compiling program and an appropriate Microsoft Software Development Kit (SDK).
  2. Download and install the ASIO SDK from Steinberg.
  3. Set the ASIOSDK_DIR environment variable to the directory where you installed the ASIO SDK.
  4. Download wxWidgets (Audacity's GUI toolkit that provides its interface) then build wxWidgets using Visual Studio.
  5. Set the WXWIN environment variable to the directory where you installed Widgets and restart the computer.
  6. Download and install the Tortoise SVN program and use it to checkout the latest Audacity source code.
  7. Build Audacity using Visual Studio.

Follow the instructions and download links on Developing On Windows for full details.

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