dynwave

Crates.iodynwave
lib.rsdynwave
version
sourcesrc
created_at2024-01-29 12:40:29.561711
updated_at2024-10-29 07:31:39.433441
descriptionDynamic audio player based on fixed samples stream
homepage
repositoryhttps://github.com/Amjad50/dynwave
max_upload_size
id1118847
Cargo.toml error:TOML parse error at line 19, column 1 | 19 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Amjad Alsharafi (Amjad50)

documentation

README

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.70.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 https://github.com/Amjad50/mizu/issues/11)
trapezoid PSX emulator powered with Vulkan and Rust
plastic NES emulator with TUI and GUI

License

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

Commit count: 21

cargo fmt