OpenAL Soft is a software implementation of the OpenAL 3D audio API.

Overview

OpenAL soft

master branch CI status : Build Status Windows Build Status

OpenAL Soft is an LGPL-licensed, cross-platform, software implementation of the OpenAL 3D audio API. It's forked from the open-sourced Windows version available originally from openal.org's SVN repository (now defunct). OpenAL provides capabilities for playing audio in a virtual 3D environment. Distance attenuation, doppler shift, and directional sound emitters are among the features handled by the API. More advanced effects, including air absorption, occlusion, and environmental reverb, are available through the EFX extension. It also facilitates streaming audio, multi-channel buffers, and audio capture.

More information is available on the official website

Source Install

To install OpenAL Soft, use your favorite shell to go into the build/ directory, and run:

cmake ..

Assuming configuration went well, you can then build it, typically using GNU Make (KDevelop, MSVC, and others are possible depending on your system setup and CMake configuration).

Please Note: Double check that the appropriate backends were detected. Often, complaints of no sound, crashing, and missing devices can be solved by making sure the correct backends are being used. CMake's output will identify which backends were enabled.

For most systems, you will likely want to make sure ALSA, OSS, and PulseAudio were detected (if your target system uses them). For Windows, make sure DirectSound was detected.

Utilities

The source package comes with an informational utility, openal-info, and is built by default. It prints out information provided by the ALC and AL sub- systems, including discovered devices, version information, and extensions.

Configuration

OpenAL Soft can be configured on a per-user and per-system basis. This allows users and sysadmins to control information provided to applications, as well as application-agnostic behavior of the library. See alsoftrc.sample for available settings.

Acknowledgements

Special thanks go to:

  • Creative Labs for the original source code this is based off of.
  • Christopher Fitzgerald for the current reverb effect implementation, and helping with the low-pass and HRTF filters.
  • Christian Borss for the 3D panning code previous versions used as a base.
  • Ben Davis for the idea behind a previous version of the click-removal code.
  • Richard Furse for helping with my understanding of Ambisonics that is used by the various parts of the library.
Issues
  • visual studio 2019

    visual studio 2019

    Ok so I've built the soft using cmake but now I have no Idea how to link openal soft to visual studio project Can you please outline steps how to link it.

    opened by mckl8614 46
  • Sound issue in S.T.A.L.K.E.R.: CoC/CoM

    Sound issue in S.T.A.L.K.E.R.: CoC/CoM

    Sounds good for OpenAL Soft output with default soft_oal.dll 1.17.2, but totally issued by cracklings for any versions above 1.17.2 . Why this happens?

    Win 10 x64 1607 (10.0.14393), SB Audigy SE (SB0570). Checks tried with both WindowsUpdate driver update and Daniel K P17X Series Support Pack 3.1.

    opened by vmech 43
  • EAX support

    EAX support

    I haven't found a definitive answer to whether, and to what extent, OpenAL Soft supports EAX. I take it that it doesn't support it natively, but it does support EFX, and EAX calls could generally be routed to EFX calls. Is that something that already exists, or is planned?

    Another issue is how advanced the EFX implementation is compared to EAX levels. For instance, is there support for smooth transitions between zones (a la EAX 3)?

    opened by GreatEmerald 32
  • Horrific popping sounds in Wine with 1.19

    Horrific popping sounds in Wine with 1.19

    Hi, after upgrading openal package to 1.19 (on Arch, from official repositories), I get absolutely horrific popping sounds when I use a game in Wine (staging-3.15). Demonstration (not my video): https://streamable.com/mvy3c Downgrading back to 1.18 gets rid of this. Also seems to happen to a lot of people that I know, so it's not just me. I am very sorry for this kind of low-quality bug report, but if it's needed, what information can I provide to help fix this (if it's an issue on your end of course) and how?

    opened by tannisroot 30
  • Audio capture on Android?

    Audio capture on Android?

    Getting the capture device on Android (tested on Nexus 5X) returns empty. I looked at the opensl.c implementation and it looks like audio capture is not implemented. Is that correct? Or is there another backend for Android which supports audio capture? Are there plans to add support for audio recording on opensl? Thanks.

    opened by tzachshabtay 22
  • Crashes in release mode (debug works fine)

    Crashes in release mode (debug works fine)

    I have created a small sample program in C++ trying to play sounds with OpenAL Soft. The program crashes when compiled in release mode, when compiled in debug mode it works. I'm on OS X using 1.17.2

    I get this error message:

    SoundTest(28958,0x70000021d000) malloc: *** error for object 0x7fbdd26062c8: incorrect checksum for freed object - object was probably modified after being freed.

    The source of the sample program can be found at: http://stackoverflow.com/questions/37889119/openal-soft-crashes-in-release-mode-debug-works-fine

    opened by jnsmalm 22
  • about bsinc_inc.h

    about bsinc_inc.h

    i using ndk-build compile libopengl.so, but result error: jni/openal/Alc/ALu.c:47:10: fatal error: 'bsinc_inc.h' file not found

    i use the cmake whith ndk/build/cmake/android.toolchain.cmake, but can not compiled. my platform is win10 64bit.

    opened by sdragonx 21
  • Proximity/NF Effect

    Proximity/NF Effect

    This is a feature request for a near field effect to be added.

    I believe it would add a lot of depth towards binaural playback (And Speakers, depending on how it is implemented).

    It could be toggled by a developer, but giving end user the option to force it on in alsoft config.

    This could be implemented in many ways, but even just an EQ effect would be fine.

    opened by ABoredBunny 20
  • Can make openal-soft mix 2 effects step by step(new feature)

    Can make openal-soft mix 2 effects step by step(new feature)

    slot00 = 0;
    alGenAuxiliaryEffectSlots(1, &slot00);
    
    slot01 = 0;
    alGenAuxiliaryEffectSlots(1, &slot01);
    
    alAuxiliaryEffectSloti(slot00, AL_EFFECTSLOT_EFFECT, effect00);
    assert(alGetError()==AL_NO_ERROR && "Failed to set effect slot");
    
    alAuxiliaryEffectSloti(slot01, AL_EFFECTSLOT_EFFECT, effect01);
    assert(alGetError()==AL_NO_ERROR && "Failed to set effect slot");
    

    and I want to mix slot00 and slot01 or (efffect00 and effect01 and .....)

    efffect00 -> effect01 -> effect02 and final out~

    many effects mix and not one~~~ can support it?

    opened by fatalfeel 20
  • EAX Reverb Regression

    EAX Reverb Regression

    Looks like a problem as a result of the issue mentioned here: https://github.com/kcat/openal-soft/issues/675#issuecomment-1079711208

    In short, the game itself doesn't use EAX, but DSOAL makes a couple EAX calls during initialization that causes OpenAL Soft to "initialize" EAX support, which currently causes a default effect to initialize and be applied to sources. However, what it needs to do is track properties for the different versions of EAX, and only apply the last version set (i.e. nothing in the case of this game).

    I added a workaround with commit 5c0eabc5264a58e8fe9f78da6198587d78770d01. It's not a proper fix, but should avoid this issue.

    Originally posted by @kcat in https://github.com/kcat/openal-soft/issues/684#issuecomment-1100755947

    I have compiled the latest version of OpenAl-Soft as of writing this and I have the reverb back in games that do not use reverb. dsoal_log.txt

    opened by Jenavieve-Rose 18
  • Capture regression on macOS (1.19 fine, 1.20.1 and after bad).

    Capture regression on macOS (1.19 fine, 1.20.1 and after bad).

    After migrating to 1.20.1 (and 1.21.0 was tested too and has the same problem) capture works fine only when the frequency specified in alcCaptureOpenDevice matches exactly the Input device frequency. Otherwise the sound get artefacts and usually also is sped up.

    On macOS in Settings right now I have two Input devices (default mic and airpods). If I view them in Audio MIDI Setup, mic works on 48'000 and airpods on 16'000 frequencies.

    On version 1.19 both those devices capture with great quality no matter what frequency I use in alcCaptureOpenDevice (I tried both 48'000 and 16'000, so four tests were made).

    On version 1.20.1 and 1.21.0 it sounds fine only if I pass in alcCaptureOpenDevice the exact frequency I have for the device in Audio MIDI Setup.

    I can provide any additional information, voice message samples, assist with debugging if needed.

    opened by john-preston 18
  • Clarification

    Clarification

    I have two questions:

    1. as OpenAL-Soft is a software implementation of OpenAL, why we have to check the presence of some extension ? They are not implicitly present ? If I understand with legacy OpenAL, that is device dependant, we have to check if some stuff can be done by the device before using it. But why also with OpenAL-Soft ? It's not clear for me the difference between the two (I'm novice)

    2. What is the difference between a SOFT and EXT extension as you say in https://openal-soft.org/openal-extensions/SOFT_buffer_samples.txt ?

    Regards

    opened by Lulu04 6
  • AL lib:(EE) ALCplaybackAlse_open:Could not open playback device'XXXX':Device or resource busy

    AL lib:(EE) ALCplaybackAlse_open:Could not open playback device'XXXX':Device or resource busy

    HI,there! I can use OPENAL to collect audio data, but I encountered this error when playing: [AL lib:(EE) ALCplaybackAlse_open:Could not open playback device'plughw:CARD=INTEL,DEV=0':Device or resource busy]

    Is this problem caused by the same device I use to collect and play?

    opened by Zonginus 4
  • "error: constexpr function never produces a constant expression" Clang Windows cross-compile fails

    I am trying to cross-compile OpenAL Soft to Windows with Clang 14.0.6.

    When compiling OpenAL Soft master with Clang 14.0.6 and CMake 3.23.2, on a fully-upgraded Arch Linux host, using the Windows MSVC toolchain, the following errors occur:

    In file included from /home/user/Desktop/build-tc/toolchains/windows-x86_64/include/system_error:18:
    /home/user/Desktop/build-tc/openal/common/ringbuffer.h:111:5: error: constexpr function never produces a constant expression [-Winvalid-constexpr]
    1 error generated.
    In file included from /home/user/Desktop/build-tc/toolchains/windows-x86_64/include/system_error:14:
    /home/user/Desktop/build-tc/openal/core/device.h:94:5: error: constexpr function never produces a constant expression [-Winvalid-constexpr]
    1 error generated.
    /home/user/Desktop/build-tc/openal/core/device.h:94:5: error: constexpr function never produces a constant expression [-Winvalid-constexpr]
    1 error generated.
    In file included from /home/user/Desktop/build/toolchains/windows-x86_64/include/system_error:14:
    /home/user/Desktop/build-tc/openal/core/device.h:94:5: error: constexpr function never produces a constant expression [-Winvalid-constexpr]
    1 error generated.
    

    It seems that Clang is angry about DEF_FAM_NEWDEL being marked as constexpr: https://github.com/kcat/openal-soft/blob/556c5d14d7fd862e86d428477afcc708b3f4055c/common/almalloc.h#L52

    opened by darktohka 4
  • Audio bug introduced in latest commits.

    Audio bug introduced in latest commits.

    In a few games there are some odd audio bugs that started with the most recent commits the last week or so. None of these glitches exist in the first released version of 1.22.2; I can't say which commit they started on as I would need to go back and test them all. here is a video of FEAR that really demonstrates the issue. You will hear the audio sound normal then occasionally screech and go to normal and sound tinnier then normal. It's hard to describe, but this is not normal audio behavior in this game. It was recorded using commit a6ca55. https://youtu.be/1Be156ZpTTk dsoal_log.txt

    opened by Jenavieve-Rose 2
  • [Linux]OpenAL-1.17 AL Lib:(EE) ALCcaptureAlsa_avalibleSamples:read error:Broken pipe

    [Linux]OpenAL-1.17 AL Lib:(EE) ALCcaptureAlsa_avalibleSamples:read error:Broken pipe

    Hi,there! I compiled OpenAL-1.17 into a .so file under Ubuntu 64(glibc 2.15). The error occurs when I use this .so file : AL Lib:(EE) ALCcaptureAlsa_avalibleSamples:read error:Broken pipe It seems that there is an error in detecting the number of samples in OpenaAL. I'm not so sure. I would appreciate it if you could help me!

    opened by Zonginus 3
repo to house various LLVM based SIHFT passes for RISCV 32/64 soft error resilience

compas-ft-riscv COMPAS: Compiler-assisted Software-implemented Hardware Fault Tolerance implemented in LLVM passes for the RISC-V backend Repo to hous

EDA@TUM 2 Jan 10, 2022
Maya Soft IK Solver

Maya Soft IK Solver Our maya IK solver is an advanced solution for 2 bones setup. It fixes the annoying “pop” problem at full extension in the normal

Toolchefs 74 Mar 3, 2022
A cross-platform framework for developing spatial audio algorithms and software in C/C++

git: https://github.com/leomccormack/Spatial_Audio_Framework doxygen: https://leomccormack.github.io/Spatial_Audio_Framework/ About The Spatial_Audio_

Leo McCormack 352 Aug 6, 2022
Detours is a software package for monitoring and instrumenting API calls on Windows.

Detours is a software package for monitoring and instrumenting API calls on Windows. It is distributed in source code form.

Microsoft 3.6k Aug 16, 2022
This is a tool for software engineers to view,record and analyse data(sensor data and module data) In the process of software development.

![Contributors][Huang Jianyu] Statement 由于工具源码在网上公开,除使用部分开源项目代码外,其余代码均来自我个人,工具本身不包含公司的知识产权,所有与公司有关的内容均从软件包中移除,软件发布遵循Apache协议,任何人均可下载进行修改使用,如使用过程中出现任何问

HuangJianyu 34 May 5, 2022
Add virtual monitors to your windows 10 device! Works with Oculus software, obs, and any desktop sharing software

License MIT and CC0 or Public Domain, whichever is least restrictive -- Use it AS IS - NO IMPLICIT OR EXPLICIT warranty This may break your computer,

Rashi Abramson 179 Aug 8, 2022
MasterPlan is a project management software / visual idea board software. It attempts to be easy to use, lightweight, and fun.

MasterPlan is a customizeable graphical project management software for independent users or small teams. If you need to share plans across a whole co

SolarLune 423 Aug 14, 2022
Header-only VMWare Backdoor API Implementation & Effortless VMX Patcher for Custom Guest-to-Host RPCs

VmxHijack Header-only VMWare Backdoor API Implementation & Effortless VMX Patcher for Custom Guest-to-Host RPCs Sample // --- RPC Server Code (VmxHija

null 26 Feb 7, 2022
iconv implementation using Win32 API to convert.

win_iconv is a iconv implementation using Win32 API to convert. win_iconv is placed in the public domain. ENVIRONMENT VARIABLE: WINICONV_LIBICON

null 157 Apr 25, 2022
lua binding for Software implementation in C of the FIPS 198 Keyed-Hash Message Authentication Code HMAC

lua-hmac Compute the SHA-224, SHA-256, SHA-384, and SHA-512 message digests and the Hash-based Message Authentication Code (HMAC). this module is Lua

Masatoshi Fukunaga 2 Jul 1, 2022
In DFS-BFS Implementation In One Program Using Switch Case I am Using an Simple And Efficient Code of DFS-BFS Implementation.

DFS-BFS Implementation-In-One-Program-Using-Switch-Case-in-C Keywords : Depth First Search(DFS), Breadth First Search(BFS) In Depth First Search(DFS),

Rudra_deep 1 Nov 17, 2021
A guide and set of tools for working with TinyML powered Audio Sensors

Audio Sensor Toolkit This is a guide on how to build an Audio Sensor using Machine Learning, and helpful tools. Audio Sensor Guide Audio Tools Acceler

IQT Labs 19 Jun 13, 2022
Port of my M5Stack Core 2 audio monitor project to generic ESP32s with TFT screens

ESP32 Audio Monitor This is a port of this project to work with any ESP32 device with a TFT display. You can watch a video explainer here (YouTube) wh

atomic14 45 Jul 19, 2022
ESP32 drum computer / sample player / midi sequencer (Arduino audio project)

esp32_drum_computer ESP32 drum computer / sample player / midi sequencer (Arduino audio project) The project can be seen in my video https://youtu.be/

Marcel 35 Aug 2, 2022
ESP32 Audio Kit based multitrack looper

esp32_multitrack_looper ESP32 Audio Kit based multitrack looper The project can be seen in my video https://youtu.be/PKQmOsJ-g1I The project has been

Marcel 34 Jul 22, 2022
The AudioUnitSDK contains a set of base classes as well as utility sources required for Audio Unit development.

The AudioUnitSDK contains a set of base classes as well as utility sources required for Audio Unit development.

Apple 72 Aug 5, 2022
Capture audio from a microphone on your Raspberry Pi Pico or any RP2040 based board. 🎤

pico-microphone Capture audio from a microphone on your Raspberry Pi Pico or any RP2040 based board. ?? Hardware RP2040 board Raspberry Pi Pico Microp

Sandeep Mistry 107 Jul 31, 2022
Teensy 4 I2S Audio Library

Teensy 4 I2S Library This is a no-nonsense I2S library for Teensy 4 and 4.1. It was derived from the I2S code in Paul Stoffregen's Teensy Audio Librar

Valdemar Erlingsson 6 Jul 16, 2022
RGB Matrix Audio Visualiser for ESP32

AuroraDrop v0.0.3 RGB Matrix Audio Visualiser for ESP32 Based on the Auroa Demo by Jason Coon, and using the ESP32-HUB75-MatrixPanel-I2S-DMA library b

null 16 Jul 25, 2022