{"id":23004369,"url":"https://github.com/amjad50/dynwave","last_synced_at":"2025-08-14T01:32:37.078Z","repository":{"id":219716702,"uuid":"749720883","full_name":"Amjad50/dynwave","owner":"Amjad50","description":"Audio player library for real-time streaming audio with auto resampling","archived":false,"fork":false,"pushed_at":"2024-10-29T07:31:59.000Z","size":37,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-28T16:52:24.480Z","etag":null,"topics":["audio","audioplayerapi","hacktoberfest","resampling"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Amjad50.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-29T09:06:15.000Z","updated_at":"2024-11-12T14:24:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"f89cb30d-7530-49dd-9977-04d14ed5b53e","html_url":"https://github.com/Amjad50/dynwave","commit_stats":null,"previous_names":["amjad50/dyn_wave"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Amjad50%2Fdynwave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Amjad50%2Fdynwave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Amjad50%2Fdynwave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Amjad50%2Fdynwave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Amjad50","download_url":"https://codeload.github.com/Amjad50/dynwave/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229791309,"owners_count":18124667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","audioplayerapi","hacktoberfest","resampling"],"created_at":"2024-12-15T07:18:15.680Z","updated_at":"2024-12-15T07:18:16.281Z","avatar_url":"https://github.com/Amjad50.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dynwave\n[![Build status](https://github.com/Amjad50/dynwave/workflows/CI/badge.svg)](https://actions-badge.atrox.dev/Amjad50/dynwave/goto)\n[![dependency status](https://deps.rs/repo/github/Amjad50/dynwave/status.svg)](https://deps.rs/repo/github/Amjad50/dynwave)\n[![license](https://img.shields.io/github/license/Amjad50/dynwave)](./LICENSE)\n[![Crates.io dynwave](https://img.shields.io/crates/v/dynwave)](https://crates.io/crates/dynwave)\n[![docs.rs dynwave](https://img.shields.io/docsrs/dynwave/latest)](https://docs.rs/dynwave/latest/dynwave/)\n\ndynwave is a dynamic audio player based on fixed samples stream, written in Rust.\n\nThe purpose of this is to implement a cross platform audio player that plays audio samples stream generated and plays it real-time.\n\nThis works as a fusion between [rubato](https://crates.io/crates/rubato) and [cpal](https://crates.io/crates/cpal).\n\nThis is useful for emulators for example, where an emulation loop will be like this:\n1) Run emulation for a frame.\n2) Extract the collected audio samples for that frame.\n3) Queue the samples for playing (using `dynwave`).\n4) Take video frame and display it.\n5) Repeat.\n\n## Getting Started\n\nYou can use `dynwave` to play audio streams for your Rust projects.\n\n### Cargo\nAdd it as a dependency in your `Cargo.toml` file:\n```sh\ncargo add dynwave\n```\n\n### Example usage\n```rust\nuse dynwave::{AudioPlayer, BufferSize};\n\nlet mut player = AudioPlayer::\u003cf32\u003e::new(44100, BufferSize::OneSecond).unwrap();\n\n// Start playing the audio\nplayer.play().unwrap();\n\n// generate audio samples (can be done in a emulation loop for example)\nlet samples = generate_samples();\nplayer.queue(\u0026samples);\n\n// pause the audio\nplayer.pause().unwrap();\n```\n\n## Minimum Supported Rust Version (MSRV)\nThe minimum supported Rust version for this crate is `1.70.0`.\n\n## Contributing\n\nContributions are welcome, please open an issue or a PR if you have any suggestions or ideas.\n\nMake sure to:\n- Run `cargo fmt`.\n- Run `cargo clippy`.\n- Run `cargo test`.\n\n## Projects using `dynwave`\n\u003e If you are using `dynwave` in your project, please open a PR to add it here.\n\n| Project | Description |\n| ------- | ----------- |\n| [mizu](https://github.com/Amjad50/mizu) | A GameBoy emulator written in Rust (this is actually were this library originiated https://github.com/Amjad50/mizu/issues/11)|\n| [trapezoid](https://github.com/Amjad50/trapezoid) | PSX emulator powered with Vulkan and Rust |\n| [plastic](https://github.com/Amjad50/plastic) | NES emulator with TUI and GUI |\n\n## License\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famjad50%2Fdynwave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famjad50%2Fdynwave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famjad50%2Fdynwave/lists"}