libaurex

Crates.iolibaurex
lib.rslibaurex
version0.1.5
created_at2025-08-11 06:41:10.204863+00
updated_at2026-01-21 15:33:54.936011+00
descriptionCross-platform high-level audio API
homepage
repositoryhttps://github.com/libaurex/libaurex-rs
max_upload_size
id1789688
size4,266,431
Franz Hermann (t800-x)

documentation

https://docs.rs/libaurex-rs

README

libaurex

libaurex is a cross-platform, low latency, high level audio API written in Rust.

v0.1.5

New Features

  • Callbacks can now have the Player object and any custom data you want. (Only for the native rust API.)
  • Foreign languages (Kotlin, Swift etc.) via UniFFI also get the Player object as context but no custom context through the library, though you can use dependency injection in said foreign languages.

Bug Fixes

  • Fixed a race condition that sometimes blocked the playback from initiating.

Features

  • Native backends for each platform for low latency audio playback via miniaudio.

    • WASAPI for Windows.
    • AAUDIO for Android.
    • ALSA for Linux.
    • CoreAudio for iOS and MacOS.
  • Supports nearly every codec on the planet via a custom FFMpeg decoder.

  • Best in class resampling that's damn near bit perfect with libsoxr.

  • Simple as hell API.

Documentation

  • A simple example can be found in the main.rs file.

Upcoming Features

  • A full fledged media player API.
  • Streaming support (both disk and HTTPS, right now it loads the entire file in memory, good enough for music but not for let's say, a 12 hour podacast).

Contributing

Patches welcome. Bug reports too, but make them useful. If you open an issue, include:

- Your OS + version
- Backend in use (WASAPI, CoreAudio, ALSA, etc.)
- Exact sample rate / format / channels you were trying
- Minimal reproducible code
- What you expected vs what happened

If you’re sending a PR:

- Keep code style consistent with the existing code (run cargo fmt)
- Don’t break other platforms — test or at least stub them out
- If adding a feature, document it and include a minimal example
- Avoid adding massive dependencies unless there’s no sane alternative
- Keep all ffi functions in the ffi module.

If you’re doing something that might involve breaking changes, open an issue first so it can be discussed before you sink hours into it.

Commit count: 35

cargo fmt