1 unstable release

0.1.0 Jan 29, 2024

#460 in Audio

39 downloads per month
Used in 2 crates

MIT license

25KB
297 lines

dynwave

Build status dependency status license Crates.io dynwave docs.rs dynwave

dynwave is a dynamic audio player based on fixed samples stream, written in Rust.

The purpose of this is to implement a cross platform audio player that plays audio samples stream generated and plays it real-time.

This is useful for emulators for example, where an emulation loop will be like this:

  1. Run emulation for a frame.
  2. Extract the collected audio samples for that frame.
  3. Queue the samples for playing (using dynwave).
  4. Take video frame and display it.
  5. Repeat.

Users of dynwave

If you are using dynwave in your project, please open a PR to add it here.

Project Description
mizu A GameBoy emulator written in Rust
trapezoid PSX emulator powered with Vulkan and Rust

Getting Started

You can use dynwave to play audio streams for your Rust projects.

Cargo

Add it as a dependency in your Cargo.toml file:

cargo add dynwave

Example usage

use dynwave::{AudioPlayer, BufferSize};

let mut player = AudioPlayer::<f32>::new(44100, BufferSize::OneSecond).unwrap();

// Start playing the audio
player.play().unwrap();

// generate audio samples (can be done in a emulation loop for example)
let samples = generate_samples();
player.queue(&samples);

// pause the audio
player.pause().unwrap();

License

This project is licensed under the MIT License - see the LICENSE file for details

Dependencies

~4–37MB
~523K SLoC