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.
Comments
  • 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
  • [Extensions] Missing functionality AL_EXT_vorbis AL_EXT_mp3

    [Extensions] Missing functionality AL_EXT_vorbis AL_EXT_mp3

    https://github.com/kcat/openal-soft/blob/master/al/buffer.cpp https://github.com/kcat/openal-soft/blob/master/include/AL/alext.h

    The extension AL_EXT_vorbis, while in the header, is not supported in alBufferData. The extension AL_EXT_mp3 is not implemented even in alext.h .

    Documentation on these two extensions are next to none online. OpenAL soft wiki suggests something about external libraries for a format? I am under the presumption that you load the entire file a give it directly to alBufferData, kinda like how AL_EXT_float32 works.

    opened by tilkinsc 2
  • Force find_package to use FindPackage file provided by openal

    Force find_package to use FindPackage file provided by openal

    There is an issue if a cmake config file is found and CMAKE_FIND_PACKAGE_PREFER_CONFIG is ON. Cmake will use the config file instead of the findXXX file provided by openal which may not provide the proper cmake variables.

    See https://github.com/conan-io/conan-center-index/issues/13772 and https://github.com/conan-io/conan/issues/12488

    This is insure that the find_package use the findXXX file provided by openal.

    Another idea would be to do the same things that is done with oboe and test if a config file was found (by checking for the proper target) and then default back to MODULE. @kcat if you'd prefer that I can look into it.

    opened by FranzPoize 3
  • [makemhr feature request] Allow arbitrary sample rate and bit depth for MHRs

    [makemhr feature request] Allow arbitrary sample rate and bit depth for MHRs

    X3DAudio HRTF is like OpenAL Soft, but for XAudio2 + X3DAudio (usually Unreal Engine 4 games) and it uses MHRs for HRTF. However, it hasn't been updated in a long time and the original author made the repo private. I got in touch with him and apparently it was done following some Russian software protest and said it may get an update in the future but to be honest, given the situation, it doesn't seem likely anytime soon. 😔

    Anyhow, the reason why it needs an update is because it doesn't support newer MHRs that use 24-bit or <32000 Hz sample rates and other changes after https://github.com/kcat/openal-soft/commit/0349bcc500fdb9b1245a5ddce01b2896bcf9bbb9 like SOFA support and more importantly, realtime resampling, which means it needs an MHR for every single sample rate, including ones currently restricted by MIN_RATE.

    I was able to build makehrtf by using the previously working commit as base and following the author's suggestion to lower MIN_RATE which works, but it would be nice if we could make the latest makemhr generate X3DAudio HRTF-compatible MHRs by using 16-bits (optional, of course; as a command argument like --bits 16) and any specified sample rate. I'm not 100% sure this is all that's needed to make it work, though, but it might be worth a shot, and hopefully #783 would help make testing easier.

    opened by ThreeDeeJay 2
  • Memory leak after creating and destroying ALCdevice

    Memory leak after creating and destroying ALCdevice

    OpenAL Soft 1.22.2 Visual Studio 2022 x86 Debug build Windows 11 21H2 (22000.1098) RealTek audio driver 10.0.22000.653 (4/28/22)

    For this code

    auto dvc = alcOpenDevice(nullptr);
    alcCloseDevice(dvc);
    

    A single memory leak is reported on app exit

    Detected memory leaks!
    Dumping objects ->
    {12322} normal block at 0x0D6DE018, 8 bytes long.
     Data: <  m     > A8 D2 6D 04 B0 B6 88 0E 
    Object dump complete.
    

    Memory leak reporting can be enabled by adding one include and two lines of code at the top of winmain

    #include <crtdbg.h>
    ...
    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);		// at the top of WinMain
    _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG);			// at the top of WinMain
    

    Run with debugger from Visual Studio, and on app exit, memory leaks will be printed to the Visual Studio output window.

    opened by HyperLightResearch 9
  • alOpenDevice fails when device name uses Japanese characters

    alOpenDevice fails when device name uses Japanese characters

    alcOpenDevice returns null when the device name in Windows has characters like this:

    OpenAL Soft on 繧ケ繝斐・繧ォ繝シ (Realtek(R) Audio)

    This string is retrieved via alGetString with ALC_ALL_DEVICES_SPECIFIER, then passed straight back into alcOpenDevice. ANSI decoding/encoding is used for both functions.

    alGetError and alcGetError both report no issues.

    I'm unable to reproduce this by changing my device's name to the above, however the users facing these issues have their Windows language set to Japanese. I'd like to check here first before changing my Windows language :)

    opened by Vercidium 2
  • Audio Stutters when Windows Sound Device is not 48000Hz

    Audio Stutters when Windows Sound Device is not 48000Hz

    Hey I've found that when my sound device in windows isn't 48000KHz, the audio in my game stutters when there are many active sounds.

    Here's my sound device settings in Windows

    I've disabled these and the issue still occurs:

    • HRTF
    • Filters (e.g. low pass)
    • EFX effects (reverb)

    I also stopped creating the filter/effect slots on startup but that didn't help. No AL/ALC errors were reported

    The issue still occurs regardless of whether I set the ALC_FREQUENCY attribute to 48000, 96000 or 192000. The issue also occurs when setting my sample rate in Windows to 96000KHz.

    I also tried restarting my PC after changing to 192000Hz.

    Here's a video of the stuttering

    opened by Vercidium 3
Releases(makemhr)
  • makemhr(Nov 28, 2022)

    Commits

    • 0239556: Remove unnecessary use of SDL2_INCLUDE_DIR (Chris Robinson)
    • 201f5cb: Update alsoft-config for new options (Chris Robinson)
    • 62e6051: Fix WASAPI capture handling the background COM thread (Chris Robinson)
    • 4b67a1f: Don't prematurely change ALCdevice::BufferSize (Chris Robinson)
    • 3b838bc: Avoid overriding main with SDL (Chris Robinson)
    • cbcb140: Avoid returning an array for constexpr tables (Chris Robinson)
    • 9bf67c7: Use complex floats for convolution reverb FFTs (Chris Robinson)
    • f176484: Use the existing common FFT functions in makemhr (Chris Robinson)
    Source code(tar.gz)
    Source code(zip)
    makemhr.zip(147.71 KB)
Owner
null
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 75 Oct 11, 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 383 Nov 23, 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.8k Nov 24, 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 221 Nov 26, 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 439 Nov 28, 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 27 Sep 9, 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 164 Nov 12, 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 20 Sep 21, 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 47 Nov 9, 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 41 Nov 14, 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 43 Nov 16, 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 83 Nov 10, 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 123 Nov 10, 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 8 Sep 26, 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 20 Nov 28, 2022