Skip to content

amHumminG/dalia

Repository files navigation

DALIA Engine Logo

Dedicated Abstraction Layer for Interactive Audio in C++

Features

  • Configurable Memory Usage: All internal pools are pre-allocated at startup per configuration. No dynamic allocations
  • at runtime except for resident sound loading (on a background thread).
  • Asset Management: Asynchronous, reference-counted asset loading and double-buffered OGG/Vorbis streaming.
  • 3D Spatialization:
    • Configurable coordinate systems (left/right-handed).
    • Multi-listener support with bitmask routing (for split-screen/local co-op).
    • Distance probes (split distance-attenuation and panning origins for 3rd-person cameras).
    • Doppler shifting with global and per-playback scaling.
  • Dynamic Mixing Hierarchy:
    • Directed acyclic graph bus routing.
    • 4 hot-swappable DSP effect slots per bus.
  • Real-Time Playback Parameter Control: Volume, pitch, pan, looping, spatialization, position, attenuation curve, min/max distance, velocity, doppler effect, and more.

DALIA is currently only supported on Windows (WASAPI). Check out the documentation for more details.

Sandbox

The standalone sandbox application is designed to showcase and test the engine's features. If you want to test what the engine is capable of without having to write any code you can try it out by following the build instructions provided below and running the compiled sandbox executable.

DALIA sandbox screenshot

Building from Source

Requirements

  • CMake 3.20+
  • Compiler with C++20 support

If you want to compile DALIA directly to run the Sandbox or Studio UI, use the commands below. Note that DALIA Studio tool is currently not in a usable state and is therefore excluded from the build by default.

git clone https://github.com/amHumminG/dalia.git
cd dalia

cmake -B build
cmake --build build --config Release

The compiled executables will be located in the /build directory

Integration

DALIA automatically detects when it is built as a subproject and will exclude the sandbox and studio applications from the build.

Via FetchContent:

include(FetchContent)
FetchContent_Declare(
    dalia
    GIT_REPOSITORY https://github.com/amHumminG/dalia.git
    GIT_TAG main
)
FetchContent_MakeAvailable(dalia)

target_link_libraries(YourTarget PRIVATE dalia::engine)

Via Git Submodule:

add_subdirectory(third_party/dalia)
target_link_libraries(YourTarget PRIVATE dalia::engine)

License

DALIA is licensed under the MIT License.

Acknowledgements

The core engine relies on a single public-domain header:

The sandbox and studio applications are built using the following open-source projects:

(Note: These UI and rendering libraries are excluded from your build when DALIA is linked as a subproject).

Releases

No releases published

Contributors