Open Audio Engine is a very high-performance and advanced audio engine, useful for 3D graphics engine integration. It works using a custom low-level OpenAL software driver, whose backend depends upon the platform you are using. Actually it works only on Windows, but soon will be available for Mac OS and Linux which are still under development. Engine uses as decoder Vorbis format from Ogg container.
The interface of OpenAE Tech-Demo showing you all features and the capability of the engine (OpenAE.dll)
This version has:
- Very tiny and easy usage C++ API designed for game engines
- Point, Linear, Cosine and Cubic resampler
- Multi-Channel 256 simultaneous sources
- Totally thread safe
- Interface to make custom datasources/filesystem (zip, rar, etc..)
- Multi-Channel support (mono, stereo, quad, 5.1, 6.1, 7.1)
- High precision seeker and smooth loop
- Custom C/ASM Low-level OpenAL driver
- Excellent streaming audio quality from disk/memory
- Dynamic buffer
- Full 3D native support
- Sound Occlusion
- Sound EAX Reverb
- Sound Effects
- Doppler and Pitch support
- AntiPop, AntiClick
The next version has planned:
- C, C# API
- Linux, MAC, Nextgen console support
- Per platform optimization
- Advanced documentation
- Sample code
Here, you have a synthesis schema of driver and engine architecture with a custom app integration.
Using the Code
A tech-demo is provided. It's totally free and open-source. You can try it by following these instructions:
- Download the package, open solution file and compile it with your platform configuration decided (x86, x64).
- You'll find the executable of tech-demo on x86/x64 folder located on the root folder package.
The integration on your game/engine code is very easy. Here's a quick example:
lib = LoadLibrary("OpenAE.dll");
oae::Renderer* (*driver)(const char*,const unsigned&) = nullptr;
driver = (oae::Renderer*(*)(const char*,const unsigned&))
const char* (*available)(unsigned int&) = nullptr;
available = (const char*(*)(unsigned int&)) GetProcAddress(lib, "GetDeviceName");
for(unsigned j=0; available(j)!=nullptr; j++)
std::cout << available(j) << std::endl;
std::cin >> choice;
oae::Renderer* dev = driver(available(choice), 48000);
oae::Listener* lis = dev->GetListener();
scr = dev->GetScreamer("mysound.ogg");
As soon as possible, a detailed documentation will be available at http://www.openaudioengine.com/.
New updates: I've done a fix on OpenAE Tech-Demo GUI and since this version still use OpenAL soft driver (with some features and changes), I have attached source code of OpenAL.dll which is under LGPL.
Currently, OpenAE.dll and future custom OpenAL.dll remains proprietary software under Creative Commons, no commercial usage and no derivatives as indicated inside OAE_TECH_DEMO.zip on
README.txt and LICENSE_FOR_OpenAE.dll_OpenAL.dll_oae.h.txt.