Skip to content

Amjad50/dynwave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 works as a fusion between rubato and cpal.

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.

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();

Minimum Supported Rust Version (MSRV)

The minimum supported Rust version for this crate is 1.62.0.

Contributing

Contributions are welcome, please open an issue or a PR if you have any suggestions or ideas.

Make sure to:

  • Run cargo fmt.
  • Run cargo clippy.
  • Run cargo test.

Projects using 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 (this is actually were this library originiated Amjad50/mizu#11)
trapezoid PSX emulator powered with Vulkan and Rust

License

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

About

Audio player library for real-time streaming audio with auto resampling

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages