PortAudio is a portable audio I/O library designed for cross-platform support of audio

Related tags

Audio portaudio
Overview

PortAudio - portable audio I/O library

PortAudio is a portable audio I/O library designed for cross-platform support of audio. It uses either a callback mechanism to request audio processing, or blocking read/write calls to buffer data between the native audio subsystem and the client. Audio can be processed in various formats, including 32 bit floating point, and will be converted to the native format internally.

Documentation:

  • Documentation is available at http://www.portaudio.com/docs/
  • Or at /doc/html/index.html after running Doxygen.
  • Also see src/common/portaudio.h for the API spec.
  • And see the examples/ and test/ directories for many examples of usage. (We suggest examples/paex_saw.c for an example.)

For information on compiling programs with PortAudio, please see the tutorial at:

http://portaudio.com/docs/v19-doxydocs/tutorial_start.html

We have an active mailing list for user and developer discussions. Please feel free to join. See http://www.portaudio.com for details.

Important Files and Folders:

include/portaudio.h     = header file for PortAudio API. Specifies API.	
src/common/             = platform independent code, host independent 
                          code for all implementations.
src/os                  = os specific (but host api neutral) code
src/hostapi             = implementations for different host apis

Host API Implementations:

src/hostapi/alsa        = Advanced Linux Sound Architecture (ALSA)
src/hostapi/asihpi      = AudioScience HPI
src/hostapi/asio        = ASIO for Windows and Macintosh
src/hostapi/coreaudio   = Macintosh Core Audio for OS X
src/hostapi/dsound      = Windows Direct Sound
src/hostapi/jack        = JACK Audio Connection Kit
src/hostapi/oss         = Unix Open Sound System (OSS)
src/hostapi/wasapi      = Windows Vista WASAPI
src/hostapi/wdmks       = Windows WDM Kernel Streaming
src/hostapi/wmme        = Windows MultiMedia Extensions (MME)

Test Programs:

test/pa_fuzz.c         = guitar fuzz box
test/pa_devs.c         = print a list of available devices
test/pa_minlat.c       = determine minimum latency for your machine
test/paqa_devs.c       = self test that opens all devices
test/paqa_errs.c       = test error detection and reporting
test/patest_clip.c     = hear a sine wave clipped and unclipped
test/patest_dither.c   = hear effects of dithering (extremely subtle)
test/patest_pink.c     = fun with pink noise
test/patest_record.c   = record and playback some audio
test/patest_maxsines.c = how many sine waves can we play? Tests Pa_GetCPULoad().
test/patest_sine.c     = output a sine wave in a simple PA app
test/patest_sync.c     = test synchronization of audio and video
test/patest_wire.c     = pass input to output, wire simulator
Comments
  • CMake rewrite + feature completion using modern CMake best practices

    CMake rewrite + feature completion using modern CMake best practices

    This branch is on top of #459.

    Rewrite CMakeLists.txt using CMake targets and modules instead of building up source files in variables.

    Refactor to use standard CMake variables, notably BUILD_SHARED_LIBS instead of always building both dynamic and static libraries. Also use CMAKE_FRAMEWORK for building as a macOS framework.

    Remove superfluous PA_ prefixes from option names.

    Automatically download ASIO SDK from Steinberg if it is not found. The path to the SDK can be manually specified with ASIO_SDK_ZIP_PATH to facilitate caching on CI.

    Add support for OSS (off by default).

    build-cmake 
    opened by Be-ing 122
  • Glitching in WASAPI in shared mode

    Glitching in WASAPI in shared mode

    I'm experiencing significant glitching when using WASAPI from master in shared mode. If using exclusive mode or a full-duplex audio stream, the audio doesn't glitch.

    I'm using PA from Python using the interface library pyaudio. I'm not excluding performance issues from the python environment, but all the other hostAPIs works smoothly without glitching.

    The glitching is typically manifested as bursts of 4096 samples played back successfully and then 220-230 samples of pause in between. The pause interval varies. PA is called with framesPerBuffer of 1024. It improves the occurrence of glitching by increasing this number, but it doesn't remove the glitching altogether, even with very large values such as 65536.

    For reference my environment is:

    • Windows 10, 2004 version

    • Compiled with MS VS 2019 Community Edition

    • Applied patch for building (for MSVC 2019 and to removed ASIO): https://gist.github.com/sveinse/7a3442d6f8444b95c4084a7172ec5fdb

    • Compile command (from git bash):

      '/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MSBuild.exe' \ 
          build\\msvc\\portaudio.sln \
          //property:GenerateFullPaths=true \
          //t:build \
          //consoleloggerparameters:NoSummary \
          //p:Configuration=Debug \
          //p:Platform=win32
      
    src-wasapi P2 windows 
    opened by sveinse 92
  • JACK PipeWire fixes (escape regex chars)

    JACK PipeWire fixes (escape regex chars)

    This fixes various bugs in the JACK host API exposed by PipeWire. Refer to the commit messages for details. I think this should be included in the upcoming 19.7 release because Linux distros are about to switch to PipeWire by default in the next few months (Fedora 34 and Ubuntu 21.04 at least).

    I usually write C++ and don't have much experience with C so please point out if I'm doing something wrong. The replace_string function might not be the most efficient, but it works, and this is not performance critical code or we wouldn't be using regexes here already.

    opened by Be-ing 40
  • CoreAudio add support for new HAL API for applications that target Mac OS X >= 10.5

    CoreAudio add support for new HAL API for applications that target Mac OS X >= 10.5

    This pull request addresses item #218 by using the new CoreAudio APIs while keeping compatibility with applications that need to use the old APIs! This is done with the following check #if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) #define PA_NEW_HAL 1 #else #define PA_NEW_HAL 0 #endif which checks if the application targets Mac OSX >= 10.5, so applications targeting Mac OS X 10.4 will use the old API.

    I tried to make the changes as minimal as possible by introducing wrapper functions and #ifdefs for two reasons: a) easier review b) compatibility with old API

    src-coreaudio P2 
    opened by jmelas 37
  • WASAPI

    WASAPI "Format Not Supported" Error - RC 19.7

    Release candidate 19.7 compiled without error on newly-updated version of Microsoft Visual Studio Community 2019, Version 16.9.0.

    Still getting a "format not supported" error when using WASAPI.

    Upon testing, the problem seems to be with the .dll file. The .lib file does not give this error.

    My program works OK using .dll file from 2016.

    build src-wasapi 
    opened by c319chris 36
  • Add WASAPI loopback implementation

    Add WASAPI loopback implementation

    Re implements this patch: https://github.com/audacity/audacity/commit/be7467c0e32c397d6223f2dc844a585d079b9875#diff-6ea9c8ba5ecef609fc4cfa9fbbb1bc11ad66acb997565df06ad6ce1562a10144 to add loopback for WASAPI devices.

    I'm very new to C so I welcome any feedback or improvements to this PR.

    Closes this: PortAudio/portaudio#668

    And would really help python-sounddevice users: spatialaudio/portaudio-binaries#6 spatialaudio/python-sounddevice#287 https://github.com/tlecomte/friture/issues/64 https://github.com/spatialaudio/python-sounddevice/issues/281 spatialaudio/python-sounddevice#14

    Also see this project which maintains a fork of portaudio with loopback support specifically for PyAudio: https://github.com/intxcc/pyaudio_portaudio

    src-wasapi windows 
    opened by WeekendWarrior1 25
  • Remove redundant build systems in favor of CMake

    Remove redundant build systems in favor of CMake

    As discussed on the mailing list, maintaining redundant build systems is a pointless waste of effort that almost inevitably leads to inconsistencies and frustrated users. CMake can generate MSVC project files and Unix Makefiles. There is no need to keep separate build systems for those.

    This PR also makes the C++ bindings, all the tests, and all the examples buildable with CMake.

    opened by Be-ing 22
  • Building with mingw does not seem to detect WMME on windows

    Building with mingw does not seem to detect WMME on windows

    I installed msys2 and added the bin directory of a 32 bit version of mingw-w64 (i686-w64-mingw32) to the path, as per the instructions on the wiki. When I run ./configure, it does not detect any audio backends, and when compiled, running ./bin/pa_devs.exe returns zero devices.

    I've tried various versions of mingw, and adding different compiler flags (-DPA_USE_WMME, -DPA_USE_OSS=0) but it still seems to think I'm compiling on unix (the generated makefile contains -I$(top_srcdir)/src/os/unix, even changing that to /os/win doesn't change anything).

    The portaudio version is pa_stable_v190700_20210406

    build-autoconf windows 
    opened by Jachdich 21
  • PA/CoreAudio uses some

    PA/CoreAudio uses some "deprecated" APIs which fail on Mac OS 11.0

    Issue created by @RossBencina

    We are using a number of APIs that Apple have marked as deprecated. Some were deprecated in OS X 10.5, OS X 10.6, others in OS X 10.8.

    We are using the old APIs for compatibility with older OS X versions. At this stage we wish to continue to support OS X 10.4 and later, so upgrading to APIs added in 10.5 and later is not an option.

    The use of deprecated APIs presents two minor issues:

    1. The compiler is emitting deprecated warnings, so we can't use -Werror as some would like (this can be addressed by removing -Werror, using -Wno-deprecated or using a #pragma, see: http://stackoverflow.com/questions/2622017/suppressing-deprecated-warnings-in-xcode )
    2. The requirement to link with Carbon.framework concerns some people

    At this stage there are no obvious technical advantages to moving to the newer APIs. Our plan is to deal with these either when the deprecated APIs are removed completely or when we stop supporting older OS X versions for other reasons. The API functions are listed below along with comments on the migration path.

    Core Audio Property Accessor APIs

    We use the following old-style HAL Property Accessor functions:

    • AudioDeviceGetPropertyInfo
    • AudioDeviceGetProperty
    • AudioDeviceAddPropertyListener
    • AudioDeviceRemovePropertyListener

    Since OSX 10.5 these Core Audio HAL APIs have newer direct replacements. See http://developer.apple.com/library/mac/#technotes/tn2223/_index.html

    Audio Converter Services AudioConverterFillBuffer

    Since OS X 10.5 AudioConverterFillBuffer is deprecated in favor of AudioConverterFillComplexBuffer. See https://developer.apple.com/library/mac/#documentation/MusicAudio/Reference/AudioConverterServicesReference/Reference/reference.html

    Component Manager APIs for instantiating Audio Units (requires Carbon.framework)

    These Component Manager functions are used for instantiating Audio Units. They require linking with Carbon.framework.

    • "_CloseComponent", referenced from:
    •  _CloseStream in libportaudio.a(pa_mac_core.o)
      
    • _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
    • "_FindNextComponent", referenced from:
    •  _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)
      
    • "_OpenAComponent", referenced from: _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o)

    Since OS X 10.6 they are superseded by functions in Audio Component Services. The new functions reportedly have the same signatures. We could potentially dynamically load the old or new functions depending on availability (as we do for DirectSound APIs on Windows). See https://developer.apple.com/library/mac/#documentation/AudioUnit/Reference/AudioComponentServicesReference/Reference/reference.html

    Gestalt function (requires Carbon.framework)

    We use the Gestalt function to check the OS version to execute some code for OSX10.6 and later.

    • "_Gestalt", referenced from:
    •  _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o)
      

    Since OS X 10.8 the Gestalt function is deprecated. It requires linking with Carbon.framework. See https://developer.apple.com/library/mac/#documentation/Carbon/Reference/Gestalt_Manager/Reference/reference.html#//apple_ref/doc/uid/TP30000036-CH202-SW1 A thread on Stackoverflow proposes several alternatives to Gestalt(), none of which seem great while Gestalt() is still available: http://stackoverflow.com/questions/11072804/mac-os-x-10-8-replacement-for-gestalt-for-testing-os-version-at-runtime

    Note on CF* CoreFoundation APIs

    We use a number of Core Foundation functions such as CFString functions, CFRelease etc. These are not deprecated. However, we are currently linking against Carbon.framework for these. We should be linking against CoreFoundation.framework

    src-coreaudio P2 osx 
    opened by PortAudio-admin 20
  • cmake: options should keep the PA_ prefix to avoid name pollution

    cmake: options should keep the PA_ prefix to avoid name pollution

    (Please use the mailing list for support requests and general discussion. This is only for actual bugs.)

    Describe the bug When using CMake, portaudio options are scattered in the global namespace as they don't have the same prefix. This can cause conflicts with other projects.

    Thus, options should have the PA_ prefix like before (like CMAKE options which are almost always prefixed with CMAKE, same for many other projects). Prefix was removed with commit https://github.com/PortAudio/portaudio/commit/242a0241f69bd359b692004f3974ce39ec5137fd.

    To Reproduce Steps to reproduce the behavior. Include code if applicable.

    Use cmake and configure the project. Options are named without prefix, like this:

    • DEBUG_OUTPUT
    • JACK
    • WMME
    • ASIO
    • SKELETON

    Expected behavior

    Options available in CMake should have a prefix like PA_ to avoid polluting the "global namespace":

    • PA_DEBUG_OUTPUT
    • PA_JACK
    • PA_WMME
    • PA_ASIO
    • PA_SKELETON

    Desktop (please complete the following information):

    • PortAudio version: git: 093d7f7fdf2cd1dbed0cb888257b6b39b4bed7db

    For example, in Qt Creator or cmake-gui, options are grouped by prefixes : image

    build-cmake 
    opened by amurzeau 18
  • configure && make fails on Mac

    configure && make fails on Mac

    Describe the bug Cloning latest master on MacOS Catalina, and then running configure && make, as per instructions here, errors out before starting the build.

    Is this still the correct way to build the latest code on Mac?

    To Reproduce Steps to reproduce the behavior. Include code if applicable.

    1. Clone master branch
    2. Run configure && make

    Expected behavior The library to be built.

    Actual behavior During running of configure. a number of errors like the following get output:

    configure: creating ./config.status
    ./config.status: line 733: print: command not found
    ./config.status: line 733: print: command not found
    ./config.status: line 733: print: command not found
    

    During running of make:

    mkdir lib
    mkdir -p src/common src/hostapi/alsa src/hostapi/asihpi src/hostapi/asio src/hostapi/coreaudio src/hostapi/dsound src/hostapi/jack src/hostapi/oss src/hostapi/skeleton src/hostapi/wasapi src/hostapi/wdmks src/hostapi/wmme src/os/unix src/os/win
    touch lib-stamp
    /bin/sh ./libtool --mode=compile gcc -c -std=c99 -O2 -Wall -pedantic -pipe -fPIC -DNDEBUG -DPA_LITTLE_ENDIAN -I./include -I./src/common -I./src/os/unix -Wno-deprecated -Werror -arch x86_64 -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.6  -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=8 -DHAVE_CLOCK_GETTIME=1 -DHAVE_NANOSLEEP=1 -DPA_USE_COREAUDIO=1 src/common/pa_allocation.c -o src/common/pa_allocation.lo
    ./libtool: line 170: top_srcdir: command not found
    ./libtool: line 170: top_srcdir: command not found
    ./libtool: line 170: top_srcdir: command not found
    ./libtool: line 338: func_echo_all: command not found
    ./libtool: line 1037: print: command not found
    ./libtool: line 1037: print: command not found
    ./libtool: line 1037: print: command not found
    ./libtool: line 1037: print: command not found
    ./libtool: line 1037: print: command not found
    ./libtool: line 1037: print: command not found
    ./libtool: line 1037: print: command not found
    ./libtool: line 900: print: command not found
    ./libtool: line 900: print: command not found
    ./libtool: line 971: print: command not found
    ./libtool: line 973: print: command not found
    ./libtool: line 907: print: command not found
    make: *** [src/common/pa_allocation.lo] Error 1
    

    Desktop (please complete the following information):

    • OS: MacOS
    • OS Version: 10.15.6 Catalina
    • PortAudio version: master (73291bb1f53ed0a78ef5bd04526e281378244bde)
    • If Windows or Linux, which Host API (e.g. WASAPI): N/A

    Additional info I suspect I'm missing some prerequisites on my system but I have Xcode installed and am able to compile C/C++ code from other projects.

    bug build build-autoconf P2 
    opened by erikjalevik 18
  •  How to use portaudio to implement eac3 passthrough

    How to use portaudio to implement eac3 passthrough

    I used paex_wmme_ac3.c to play the ac3 file on spdif successfully. But I tried to modify some parameters to play the eac3 file, but failed. Do the hostapi of wmme support eac3 passthrough, and how to implement it?

    src-wmme P4 
    opened by gabys999 4
  • Fix for WDM KS WaveRT low-latency microphone capture quality

    Fix for WDM KS WaveRT low-latency microphone capture quality

    In my tests with latency < 40 ms on Win10 with embeded Realtek sound card, WDM KS capture resulted in sound with lots of cracks. I digged into the code and found out 1) there is a wrong assumption that host buffer position should be either 0 or 1/2 of buffer size when event is handled, 2) ensured that host ring buffer is read both from the end and the beginning if necessary (the exisiting code might resulted in reading non-initialized data beyond the end of the host buffer)

    src-wdmks 
    opened by feoff3 5
  • Crash when connecting or disconnecting device

    Crash when connecting or disconnecting device

    Describe the bug When a new sound card is plugged or a blue tooth mic is connected, it crash the application.

    To Reproduce See bug description.

    Expected behavior It should be "plug and play".

    Actual behavior See bug description.

    Desktop

    • OS: all
    • PortAudio version: all
    • Host API: wasapi, alsa, pulseaudio.

    Additional context OK, you will say it s not the problem of PortAudio but the OS. By chance, do you see a solution how to get a change in audio devices and so, have the opportunity to reinitialize PortAudio ?

    Thanks.

    Fre;D

    bug P2 windows 
    opened by fredvs 6
  • Iphone ios SDK Deprecation

    Iphone ios SDK Deprecation

    Hello all.

    I'm trying to build portaudio for Ios, and I think I face some deprecated types.

    ../vendor/portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.h:115:5: error: unknown type name 'AudioHardwarePropertyID'; did you mean 'AudioFormatPropertyID'?
        AudioHardwarePropertyID inPropertyID,
        ^~~~~~~~~~~~~~~~~~~~~~~
        AudioFormatPropertyID
    
    ../vendor/portaudio/src/hostapi/coreaudio/pa_mac_core_utilities.h:124:5: error: unknown type name 'AudioDeviceID'; did you mean 'AudioFileID'?
        AudioDeviceID         inDevice,
        ^~~~~~~~~~~~~
        AudioFileID
    

    These defines are in AudioHardwareDeprecated.h, which not included in CoreAudio.h

    I compile mac_core_utilities with this command

    with meson, I'm able to compile only if I swap these two lines

        c_args: defines 
            + ['-isysroot', 
            '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk'
            #'/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk
            ]
    

    What is the procedure to solve the problem :) ?

    Thank you

    P5 
    opened by simdax 2
  • Unable to use portaudio::portaudio via. Cmake as usual practices in my project

    Unable to use portaudio::portaudio via. Cmake as usual practices in my project

    Hello, Portaudio team. I tried to install portaudio as turtorials in http://files.portaudio.com/docs/v19-doxydocs/compile_cmake.html and I have done these things to install

    1. make a empty folder livepitch
    2. download the portaudio-19.7.0 stable in https://github.com/PortAudio/portaudio/releases/tag/v19.7.0
    3. exact it and copy to livepitch/resource
    4. edit CMakeLists.txt as https://github.com/PortAudio/portaudio/issues/486#issuecomment-769053675 mentioned
    5. mkdir livepitch/include
    6. cd livepitch/include
    7. run cmake d:/Projects/livepitch/resource/portaudio-19.7.0 -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=d:/Projects/livepitch/include
    8. run make
    9. run make install

    After the installation, I create CMakeLists.txt and main.c, and the contents are below:

    #CMakeLists.txt
    cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
    project(test1)
    set(CMAKE_MODULE_PATH_PATH ${CMAKE_SOURCE_DIR}/include)
    find_package(portaudio)
    
    if(NOT portaudio_FOUND)
        message(FATAL_ERROR "PortAudio Not Found!")
    endif(NOT portaudio_FOUND)
    
    add_executable(mainexe main.c)
    
    target_link_libraries(mainexe portaudio::portaudio)
                                # As usual practice
    
    //main.c
    #include <stdio.h>
    #include "func.h"
    #include "portaudio.h"
    #include "pa_util.h"
    int main(void){
        int version = 0;
        version = Pa_GetVersion();
        printf("%d", version);
        return 0;}
    

    Then, I cd to livepitch/build , run cmake .. -G "Unix Makefiles" And an error occured:

    $ cmake .. -G "Unix Makefiles"
    -- Configuring done
    CMake Error at CMakeLists.txt:12 (target_link_libraries):
      Target "mainexe" links to:
    
        portaudio::portaudio
    
      but the target was not found.  Possible reasons include:
    
        * There is a typo in the target name.
        * A find_package call is missing for an IMPORTED target.
        * An ALIAS target is missing.
    
    
    
    -- Generating done
    CMake Generate step failed.  Build files cannot be regenerated correctly.
    

    As the if(NOT portaudio_FOUND) was not activated, I assume that the portaudio is imported, but I cannot use it.

    What I also tried: Change target_link_libraries(mainexe portaudio::portaudio) to target_link_libraries(mainexe portaudio) the cmake command didn't cause error, but when I run make, error occured:

    [email protected] MINGW64 /d/Projects/livepitch/build
    $ cmake .. -G "Unix Makefiles"
    -- Configuring done
    -- Generating done
    -- Build files have been written to: D:/Projects/livepitch/build
    
    [email protected] MINGW64 /d/Projects/livepitch/build
    $ make
    [ 50%] Building C object CMakeFiles/mainexe.dir/main.c.obj
    D:/Projects/livepitch/main.c:4:10: fatal error: pa_util.h: No such file or directory
        4 | #include "pa_util.h"
          |          ^~~~~~~~~~~
    compilation terminated.
    make[2]: *** [CMakeFiles/mainexe.dir/build.make:76:CMakeFiles/mainexe.dir/main.c.obj] 2 ERROR(s)
    make[1]: *** [CMakeFiles/Makefile2:83:CMakeFiles/mainexe.dir/all] 2 ERROR(s)
    make: *** [Makefile:91:all] 2 ERROR(s)
    

    My executable cannot include pa_util.h(and everything else in src/)

    So, PLEASE do the following things to improve development efficiency:

    • provide a template for cmake developing (contains main.c, CMakeLists.txt, func.c, func.f;all .c source files include on or more portaudio source file)
    • record a detailed video to tell developers how to build and use portaudio in all envirments(e.g. cmake, VS)
    • update the document website

    My OS / toolchain

    • OS: Win 11
    • PortAudio version: portaudio-19.7.0 stable in https://github.com/PortAudio/portaudio/releases/tag/v19.7.0
    • If Windows or Linux, which Host API : ASIOSDK (I placed it in d:/Projects/livepitch/resource/portaudio-19.7.0/src/hostapi/ASIOSDK, and I decided to move it to d:/Projects/livepitch/include after the major issue was fixed)
    • MSYS2 MinGW x86
    • cmake version 3.24.2
    • gcc.exe (Rev1, Built by MSYS2 project) 12.2.0

    Here is the tree of my project

    ├─build
    │  ├─.cmake
    │  │  └─api
    │  │      └─v1
    │  │          ├─query
    │  │          │  └─client-vscode
    │  │          └─reply
    │  └─CMakeFiles
    │      ├─3.24.2
    │      │  ├─CompilerIdC
    │      │  │  └─tmp
    │      │  └─CompilerIdCXX
    │      │      └─tmp
    │      ├─CMakeTmp
    │      ├─mainexe.dir
    │      ├─pkgRedirects
    │      └─Progress
    ├─include
    │  ├─bin
    │  ├─cmake
    │  │  └─portaudio
    │  ├─CMakeFiles
    │  │  ├─3.24.2
    │  │  │  ├─CompilerIdC
    │  │  │  │  └─tmp
    │  │  │  └─CompilerIdCXX
    │  │  │      └─tmp
    │  │  ├─CMakeTmp
    │  │  ├─Export
    │  │  │  └─90a8b282bce0779409342a760050f91f
    │  │  ├─pkgRedirects
    │  │  ├─portaudio.dir
    │  │  │  └─src
    │  │  │      ├─common
    │  │  │      ├─hostapi
    │  │  │      │  ├─dsound
    │  │  │      │  ├─skeleton
    │  │  │      │  ├─wasapi
    │  │  │      │  ├─wdmks
    │  │  │      │  └─wmme
    │  │  │      └─os
    │  │  │          └─win
    │  │  ├─portaudio_static.dir
    │  │  │  └─src
    │  │  │      ├─common
    │  │  │      ├─hostapi
    │  │  │      │  ├─dsound
    │  │  │      │  ├─skeleton
    │  │  │      │  ├─wasapi
    │  │  │      │  ├─wdmks
    │  │  │      │  └─wmme
    │  │  │      └─os
    │  │  │          └─win
    │  │  └─uninstall.dir
    │  ├─include
    │  ├─lib
    │  │  ├─cmake
    │  │  │  └─portaudio
    │  │  └─pkgconfig
    │  └─share
    │      └─doc
    │          └─portaudio
    ├─resource
    │  ├─portaudio-19.7.0【content skipped】
    │
    ├─CMakeLists.txt
    ├─main.c
    
    build-cmake P2 
    opened by unbadfish 5
Releases(v19.7.0)
  • v19.7.0(Apr 6, 2021)

    Stable release with:

    • support for latest Mac OS APIs
    • Jack - fixes for device names that allows use on Linux systems with PipeWire
    • WASAPI - numerous improvements
    • OSS - better format support
    • ALSA - various fixes for hangs and crashes
    • WDMKS - improved performance and fixes
    • updated build scripts
    Source code(tar.gz)
    Source code(zip)
Owner
PortAudio
Developers of the portable audio I/O library
PortAudio
C library for cross-platform real-time audio input and output

libsoundio C library providing cross-platform audio input and output. The API is suitable for real-time software such as digital audio workstations as

Andrew Kelley 1.6k Jan 6, 2023
Cross platform C++11 library for decoding audio (mp3, wav, ogg, opus, flac, etc)

Libnyquist is a small C++11 library for reading sampled audio data from disk or memory. It is intended to be used an audio loading frontend for games, audio sequencers, music players, and more.

Dimitri Diakopoulos 442 Jan 2, 2023
Tenacity is an easy-to-use, cross-platform multi-track audio editor/recorder for Windows, MacOS, GNU/Linux

Tenacity is an easy-to-use, cross-platform multi-track audio editor/recorder for Windows, MacOS, GNU/Linux and other operating systems and is developed by a group of volunteers as open source software.

null 59 Jan 1, 2023
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.

JUCE is an open-source cross-platform C++ application framework for creating high quality desktop and mobile applications, including VST, VST3, AU, AU

JUCE 4.7k Jan 6, 2023
Cross-platform silk codec wrap library depends on ploverlake/silk.

libSilkCodec Cross-platform silk codec wrap library depends on ploverlake/silk. Clone & Build Linux/Unix like # clone $ git clone https://github.c

KonataDev 8 Sep 9, 2022
🎵 A cross-platform media playback library for C/C++ with good number of features (only Windows & Linux).

libwinmedia A cross-platform media playback library for C/C++ & Flutter with good number of features. Example A very simple example can be as follows.

Harmonoid 38 Nov 2, 2022
projectM - cross-platform music visualization. Open-source and Milkdrop-compatible

projectM - cross-platform music visualization. Open-source and Milkdrop-compatible

projectM Visualizer 2.5k Dec 31, 2022
HamMessenger is a portable device that uses a ham radio and the APRS protocol as a medium to send and receive text messages.

HamMessenger is a portable, battery powered device that runs on a microcontroller and interfaces with an inexpensive ham radio to send and receive text messages and provide position updates using the APRS protocol. Messages and position updates sent via HamMessenger can be viewed on sites such as aprs.fi. HamMessenger messages are NOT encrypted!

null 210 Dec 13, 2022
A small fast portable speech synthesis system

Flite is an open source small fast run-time text to speech engine. It is the latest addition to the suite of free software synthesis tools including University of Edinburgh's Festival Speech Synthesis System and Carnegie Mellon University's FestVox project, tools, scripts and documentation for building synthetic voices.

CMU Festvox Project 618 Jan 7, 2023
An experimental music sequencer using Uxn, designed to run inside of sndkit.

uxnseq An experimental music sequencer using Uxn, designed to run inside of sndkit. The core motivation of this project to test how easily the Uxn VM

Paul Batchelor 6 Feb 6, 2022
🎵 Music notation engraving library for MEI with MusicXML and Humdrum support and various toolkits (JavaScript, Python)

Verovio is a fast, portable and lightweight library for engraving Music Encoding Initiative (MEI) digital scores into SVG images. Verovio also contain

RISM Switzerland 519 Jan 1, 2023
A simple C++ library for reading and writing audio files.

AudioFile A simple header-only C++ library for reading and writing audio files. Current supported formats: WAV AIFF Author AudioFile is written and ma

Adam Stark 683 Jan 4, 2023
A C library for reading and writing sound files containing sampled audio data.

libsndfile libsndfile is a C library for reading and writing files containing sampled audio data. Authors The libsndfile project was originally develo

null 1.1k Jan 2, 2023
C++ Audio and Music DSP Library

_____ _____ ___ __ _ _____ __ __ __ ____ ____ / \\_ \\ \/ / |/ \| | | | \_ \/ \ | Y Y \/ /_ \> <| | Y Y \ | |_|

Mick Grierson 1.4k Jan 7, 2023
Single file audio playback and capture library written in C.

A single file library for audio playback and capture. Example - Documentation - Supported Platforms - Backends - Major Features - Building - Unofficia

David Reid 2.6k Jan 8, 2023
C++17 library for creating macOS Audio Server plugins.

libASPL Synopsis Instructions Versioning API reference Example driver Quick start Object model Types of setters Customization Thread and realtime safe

Victor Gaydov 36 Dec 19, 2022
a library for audio and music analysis

aubio is a library to label music and sounds. It listens to audio signals and attempts to detect events. For instance, when a drum is hit, at which frequency is a note, or at what tempo is a rhythmic melody.

aubio 2.9k Jan 2, 2023
A discord audio playback library in c++ with node bindings

Tokio This project is still WIP. C++ Discord library with node bindings focused on audio playback. The Core parts as networking with discord/audio dec

Liz3 2 Nov 17, 2021