A set of C++ classes that provide a common API for realtime audio input/output across Linux (native ALSA, JACK, PulseAudio and OSS), Macintosh OS X (CoreAudio and JACK), and Windows (DirectSound, ASIO, and WASAPI) operating systems.
C++
1,769
585 commits
updated Oct 1, 2026
A set of C++ classes that provide a common API for realtime audio input/output across Linux (native ALSA, JACK, PulseAudio and OSS), Macintosh OS X (CoreAudio and JACK), and Windows (DirectSound, ASIO and WASAPI) operating systems.
By Gary P. Scavone, 2001-2023 (and many other developers!)
This distribution of RtAudio contains the following:
RtAudio is a set of C++ classes that provides a common API (Application Programming Interface) for realtime audio input/output across Linux (native ALSA, JACK, PulseAudio and OSS), Macintosh OS X and Windows (DirectSound, ASIO and WASAPI) operating systems. RtAudio significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:
RtAudio incorporates the concept of audio streams, which represent audio output (playback) and/or input (recording). Available audio devices and their capabilities can be enumerated and then specified when opening a stream. Where applicable, multiple API support can be compiled and a particular API specified when creating an RtAudio instance. See the \ref apinotes section for information specific to each of the supported audio APIs.
RtAudio is also offered as a module, which is enabled with RTAUDIO_BUILD_MODULES, and is accessed with import rt.audio;. Namespaces are implicitly imported (unless disabled with RTAUDIO_USE_NAMESPACE), so classes can be accessed through namespace rt::audio or through the global namespace (for example, rt::audio::RtApi and ::RtApi are both valid).
Several build systems are available. These are:
./autogen.sh; make from git, or ./configure; make from tarball release)mkdir build; cd build; ../cmake; make)meson build; cd build; ninja)./bootstrap-vcpkg.sh; ./vcpkg integrate install; ./vcpkg install rtaudio)See install.txt for more instructions about how to select the audio backend API. By
default all detected APIs will be enabled.
We recommend using the autotools-based build for packaging purposes. Please note that
RtAudio is designed as a single .cpp and .h file so that it is easy to copy directly
into a project. In that case you need to define the appropriate flags for the desired
backend APIs.
RtAudio doesn't automatically turn 1-channel output into stereo output with copied values to two channels, since there may be cases when a user truly wants 1-channel behaviour. If you want monophonic data to be projected to stereo output, open a 2-channel stream and copy the data to both channels in your audio stream callback.
For complete documentation on RtAudio, see the doc directory of the distribution or surf to https://caml.music.mcgill.ca/~gary/rtaudio/index.html.
The RtAudio license is similar to the MIT License. Please see LICENSE.
1,114 followers · starred Aug 2021
54 followers · starred Mar 2021
312 followers · starred Nov 2021
239 followers · starred Jun 2020
A set of C++ classes that provide a common API for realtime audio input/output across Linux (native ALSA, JACK, PulseAudio and OSS), Macintosh OS X (CoreAudio and JACK), and Windows (DirectSound, ASIO, and WASAPI) operating systems.
C++
1,769
585 commits
updated Oct 1, 2026
A set of C++ classes that provide a common API for realtime audio input/output across Linux (native ALSA, JACK, PulseAudio and OSS), Macintosh OS X (CoreAudio and JACK), and Windows (DirectSound, ASIO and WASAPI) operating systems.
By Gary P. Scavone, 2001-2023 (and many other developers!)
This distribution of RtAudio contains the following:
RtAudio is a set of C++ classes that provides a common API (Application Programming Interface) for realtime audio input/output across Linux (native ALSA, JACK, PulseAudio and OSS), Macintosh OS X and Windows (DirectSound, ASIO and WASAPI) operating systems. RtAudio significantly simplifies the process of interacting with computer audio hardware. It was designed with the following objectives:
RtAudio incorporates the concept of audio streams, which represent audio output (playback) and/or input (recording). Available audio devices and their capabilities can be enumerated and then specified when opening a stream. Where applicable, multiple API support can be compiled and a particular API specified when creating an RtAudio instance. See the \ref apinotes section for information specific to each of the supported audio APIs.
RtAudio is also offered as a module, which is enabled with RTAUDIO_BUILD_MODULES, and is accessed with import rt.audio;. Namespaces are implicitly imported (unless disabled with RTAUDIO_USE_NAMESPACE), so classes can be accessed through namespace rt::audio or through the global namespace (for example, rt::audio::RtApi and ::RtApi are both valid).
Several build systems are available. These are:
./autogen.sh; make from git, or ./configure; make from tarball release)mkdir build; cd build; ../cmake; make)meson build; cd build; ninja)./bootstrap-vcpkg.sh; ./vcpkg integrate install; ./vcpkg install rtaudio)See install.txt for more instructions about how to select the audio backend API. By
default all detected APIs will be enabled.
We recommend using the autotools-based build for packaging purposes. Please note that
RtAudio is designed as a single .cpp and .h file so that it is easy to copy directly
into a project. In that case you need to define the appropriate flags for the desired
backend APIs.
RtAudio doesn't automatically turn 1-channel output into stereo output with copied values to two channels, since there may be cases when a user truly wants 1-channel behaviour. If you want monophonic data to be projected to stereo output, open a 2-channel stream and copy the data to both channels in your audio stream callback.
For complete documentation on RtAudio, see the doc directory of the distribution or surf to https://caml.music.mcgill.ca/~gary/rtaudio/index.html.
The RtAudio license is similar to the MIT License. Please see LICENSE.
1,114 followers · starred Aug 2021
54 followers · starred Mar 2021
312 followers · starred Nov 2021
239 followers · starred Jun 2020