Audacity Asio



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.

Download the free Audacity audio editor for Windows, Mac or Linux from our download partner, FossHub: Download Audacity for Windows, Mac or Linux; Audacity is free of charge. No registration or hardware purchase required. Audacity on Windows is only available as a 32-bit application that may be used on 32-bit or 64-bit systems. Portaudio Windows ASIO with MSVC. This tutorial describes how to build PortAudio with ASIO support using MSVC from scratch, without an existing Visual Studio project.For instructions for building PortAudio (including ASIO support) using the bundled Visual Studio project file see the compiling instructions for Building PortAudio for Windows using Microsoft Visual Studio.


Audacity Asio

AudacityをWin10で使うようにしてから、レイテンシーが毎回大きく変化してしまう。これでは多重録音ができない。 そこで、AudacityをASIO対応にすれば、改善されるはず。 ただし、ライセンスの関係から自分でコンパイルする必要がある。. You have a couple of odd things in your post. You don't install ASIO in Audacity. You create a whole new Audacity by compiling with ASIO services.

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, 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 Community Edition Integrated Development Environment (IDE).
  2. Download and install the ASIO SDK from Steinberg.
  3. Download the source code of the latest Audacity release from https://github.com/audacity/audacity/releases. Follow the steps in win/compile.txt in the source code to:
    1. Download and install the wxWidgets GUI toolkit then build wxWidgets using Visual Studio.
    2. Set the WXWIN environment variable to the directory where you installed Widgets and set the ASIOSDK_DIR environment variable to the directory where you installed the ASIO SDK. Reboot the computer.
    3. Build Audacity using Visual Studio.

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

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

Audacity Asio Download

Asio4all with audacity

This tutorial describes how to build PortAudio with ASIO support using MSVC from scratch, without an existing Visual Studio project. For instructions for building PortAudio (including ASIO support) using the bundled Visual Studio project file see the compiling instructions for Building PortAudio for Windows using Microsoft Visual Studio.

ASIO is a low latency audio API from Steinberg. To compile an ASIO application, you must first download the ASIO SDK from Steinberg. You also need to obtain ASIO drivers for your audio device. Download the ASIO SDK from Steinberg at http://www.steinberg.net/en/company/developer.html . The SDK is free but you will need to set up a developer account with Steinberg.

This tutorial assumes that you have 3 directories set up at the same level (side by side), one containing PortAudio, one containing the ASIO SDK and one containing your Visual Studio project:

/portaudio
Audacity asio
/DirContainingYourVisualStudioProject (should directly contain the .sln, .vcproj or .vcprojx etc.)

First, make sure that the Steinberg SDK and the portaudio files are 'side by side' in the same directory.

Open Microsoft Visual C++ and create a new blank Console exe Project/Workspace in that same directory.

For example, the paths for all three groups might read like this:

C:Program FilesMicrosoft Visual StudioVC98My ProjectsASIOSDK2
C:Program FilesMicrosoft Visual StudioVC98My Projectsportaudio
Asio
C:Program FilesMicrosoft Visual StudioVC98My ProjectsSawtooth

Next, add the following Steinberg ASIO SDK files to the project Source Files:

asiodrivers.cpp (ASIOSDK2host)

Then, add the following PortAudio files to the project Source Files:

pa_allocation.c (portaudiosrccommon)
pa_cpuload.c (portaudiosrccommon)
pa_front.c (portaudiosrccommon)
pa_ringbuffer.c (portaudiosrccommon)
pa_trace.c (portaudiosrccommon)

Audacity Asio Download

pa_win_util.c (portaudiosrcoswin)
pa_win_waveformat.c (portaudiosrcoswin)
paex_saw.c (portaudioexamples) (Or another file containing main()

Although not strictly necessary, you may also want to add the following files to the project Header Files:

pa_asio.h (portaudioinclude)

These header files define the interfaces to the PortAudio API.

Next, go to Project Settings > All Configurations > C/C++ > Preprocessor > Preprocessor Definitions and add PA_USE_ASIO=1 to any entries that might be there.

eg: WIN32;_CONSOLE;_MBCS changes to WIN32;_CONSOLE,_MBCS;PA_USE_ASIO=1

Then, on the same Project Settings tab, go down to Additional Include Directories (in VS2010 you'll find this setting under C/C++ > General) and enter the following relative include paths:

..portaudioinclude;..portaudiosrccommon;..portaudiosrcoswin;..asiosdk2common;..asiosdk2host;..asiosdk2hostpc

You'll need to make sure the relative paths are correct for the particular directory layout you're using. The above should work fine if you use the side-by-side layout we recommended earlier.

Some source code in the ASIO SDK is not compatible with the Win32 API UNICODE mode (The ASIO SDK expects the non-Unicode Win32 API). Therefore you need to make sure your project is set to not use Unicode. You do this by setting the project Character Set to 'Use Multi-Byte Character Set' (NOT 'Use Unicode Character Set'). In VS2010 the Character Set option can be found at Configuration Properties > General > Character Set. (An alternative to setting the project to non-Unicode is to patch asiolist.cpp to work when UNICODE is defined: put #undef UNICODE at the top of the file before windows.h is included.)

You should now be able to build any of the test executables in the portaudioexamples directory. We suggest that you start with paex_saw.c because it's one of the simplest example files.

— Chris Share, Tom McCandless, Ross Bencina

Audacity Asio Driver

Back to the Tutorial: PortAudio Tutorials