oml-audio

Crates.iooml-audio
lib.rsoml-audio
version0.8.8-alpha
sourcesrc
created_at2022-01-04 18:17:05.457151
updated_at2024-03-16 18:38:02.834804
descriptionVery basic, and thin abstraction of audio handling meant for games.
homepagehttps://github.com/AndreasOM/oml-audio
repositoryhttps://github.com/AndreasOM/oml-audio
max_upload_size
id507941
size4,352,923
Andreas Neukoetter (AndreasOM)

documentation

README

oml-audio

Work in progress! API will change, but we'll obey semver rules. To be precise:

Pre 1.0.0

  • breaking changes will change the minor version (x.y.0)
  • non-breaking changes will change the patch level (x.y.z)

Post 1.0.0

  • breaking changes will change the major version (x.0.0)
  • non-breaking changes, additions will change the minor version (x.y.0)
  • fixes will change the patch level (x.y.z)

0.y.z will potentially change a lot!

Very thin wrapper for playing music, and audio in rust based games.

Features:

  • Play .mp3 music (with hardware acceleration) on macOS

  • Play .wav & .caf sound on macOS

  • Play .ogg music on windows

  • Play .wav sound on windows

  • Play .ogg music on linux

  • Play .wav sound on linux

Future:

  • Support other platforms (iOS, android, etc)

Breaking changes in 0.8.x

Newer versions allow compiling in multiple backends and selecting them at runtime. This has the downside of a breaking API change :( Audio::new, or rather Audio::create_default or Audio::create now return a Box<dyn AudioBackend> which might mean you have to change your storage. AudioBackend is also now generic over FileLoader.

Example :WIP:

use oml_audio::Audio;
use oml_audio::fileloader::FileLoaderDisk;

pub fn main() {
    let mut fileloader = FileLoaderDisk::new( "./data" ); // 'data' is the base directory for all other files/paths
    fileloader.enable_debug();

    // OLD: let mut audio = Audio::new();
    let mut audio: Box<dyn AudioBackend<FileLoaderDisk>> = Audio::create_default(); // explicit type for verbosity only
    audio.load_sound_bank( &mut fileloader, "test.omsb" );

    audio.play_sound( "SOUND_ID" );

    loop {
        let _timestep = audio.update();

        // update
        // render
        // (maybe) yield/sleep
    }

}
Commit count: 140

cargo fmt