{"id":13862920,"url":"https://github.com/yamadapc/augmented-audio","last_synced_at":"2025-05-15T09:04:11.087Z","repository":{"id":37109478,"uuid":"370653363","full_name":"yamadapc/augmented-audio","owner":"yamadapc","description":"Rust - Augmented Audio Libraries","archived":false,"fork":false,"pushed_at":"2024-12-02T01:12:34.000Z","size":138454,"stargazers_count":199,"open_issues_count":37,"forks_count":16,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-30T16:44:58.469Z","etag":null,"topics":["audio","gui","rust","vst-plugin","web"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yamadapc.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2021-05-25T10:28:59.000Z","updated_at":"2025-03-28T17:54:57.000Z","dependencies_parsed_at":"2024-01-31T09:46:18.074Z","dependency_job_id":"2a1dadef-23f9-447c-9098-640538b35203","html_url":"https://github.com/yamadapc/augmented-audio","commit_stats":null,"previous_names":[],"tags_count":347,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamadapc%2Faugmented-audio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamadapc%2Faugmented-audio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamadapc%2Faugmented-audio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yamadapc%2Faugmented-audio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yamadapc","download_url":"https://codeload.github.com/yamadapc/augmented-audio/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248890802,"owners_count":21178511,"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","gui","rust","vst-plugin","web"],"created_at":"2024-08-05T06:01:56.068Z","updated_at":"2025-04-14T13:48:00.605Z","avatar_url":"https://github.com/yamadapc.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\u003cimg height=\"150\" src=\"https://github.com/yamadapc/rust-audio-software/raw/master/design/Icon.png\" /\u003e\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eAugmented Audio Libraries\u003c/h1\u003e\n\n![CI builds](https://github.com/yamadapc/augmented-audio/actions/workflows/ci.yml/badge.svg)\n[![Coverage Status](https://coveralls.io/repos/github/yamadapc/augmented-audio/badge.svg?branch=master)](https://coveralls.io/github/yamadapc/augmented-audio?branch=master)\n\n[**Note about test coverage**](docs/TEST_COVERAGE.md)\n\n- - -\n\nExperiments trying to use Rust for audio programming.\n\nConsider anything in this repository a draft.\n\n\u003cdetails\u003e\n  \u003csummary\u003e⚠️ \u003cstrong\u003eGoals\u003c/strong\u003e\u003c/summary\u003e\n\n* **Goal 1:** Learn \u0026 have fun\n  * This is goal #1 and it's very important to keep it in mind if you end-up\n    depending on one of the crates in this repository\n* **Goal 2:** Build tools for aiding development\n* **Goal 3:** Experiment with audio software GUI in Rust\n\n\u003c/details\u003e\n\n## License\nMost of this repository is published under the MIT LICENSE.\n\nSome directories which contain full applications are licensed under the AGPLv3 license. Check the `LICENSE` and `README.md` files.\n\n## 📖 Documentation\n\n* [Augmented Audio Libraries](crates/augmented#readme)\n* [Applications in this repository](crates/apps#readme)\n  - [Test plugin host](crates/apps/plugin-host#readme)\n  - [Metronome](crates/apps/metronome#readme)\n  - [Continuous Looper (native macOS)](crates/apps/looper/Sequencer#readme)\n  - [Looper VST (iced)](crates/apps/looper#readme)\n\n## ⬇️ Binary downloads\n* [See releases to download binaries](https://github.com/yamadapc/augmented-audio/releases)\n* [Simple Metronome on App Store](https://apps.apple.com/au/app/simple-metronome/id1604183938?mt=12)\n* [Continuous Looper on App Store](https://apps.apple.com/au/app/continuous-looper/id1616355791)\n\n## 💬 Blog posts\n* [Initial 'Test Plugin Host' post](https://beijaflor.io/blog/07-2021/rust-audio-experiments-2/)\n* [Simple Metronome release](https://beijaflor.io/blog/01-2022/rust-audio-experiments-3/)\n* [Generic AudioProcessors in Rust](https://beijaflor.io/blog/02-2022/rust-audio-experiments-4/)\n* [Continuous Looper - 8-track live-looper and performance sampler](https://beijaflor.io/blog/04-2022/rust-audio-experiments-5/)\n\n- - -\n\n- [Simple standalone audio-app](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/application/audio-processor-standalone)\n- Effects and analysis\n  * [RMS, FFT, peak-detection, transient detection](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-analysis)\n  * [Filters](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/dsp/dsp-filters) \n  * [Time-based effects (delay/reverb)](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-time)\n  * [Compressor](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-dynamics)\n  * [Pitch-shifter](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-pitch-shifter)\n  * [Bit-crusher](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-bitcrusher)\n  * [Utility (pan, mono, gain)](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-utility)\n\n## 📸 Screenshots\n\n\u003cp align=\"center\" style=\"display: flex\"\u003e\n  \u003cimg alt=\"Sequencer screenshot\" src=\"https://raw.githubusercontent.com/yamadapc/augmented-audio/master/crates/apps/looper/Sequencer/screenshot.png\" width=\"300\" /\u003e \n\u003c/p\u003e\n\n\u003cp align=\"center\" style=\"display: flex;\"\u003e\n  \u003cimg alt=\"Metronome screenshot\" src=\"https://github.com/yamadapc/augmented-audio/raw/master/crates/apps/metronome/design/screenshots/single.png\" height=\"200\" /\u003e\n  \u003cimg alt=\"Test plugin host screenshot\" src=\"https://github.com/yamadapc/augmented-audio/raw/master/crates/apps/plugin-host/screenshot.png\" width=\"300\" /\u003e\n  \u003cimg alt=\"Looper screenshot\" src=\"https://github.com/yamadapc/augmented-audio/raw/master/crates/apps/looper/screenshot.png\" width=\"300\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\" style=\"display: flex;\"\u003e\n  \u003cimg height=\"100\" src=\"https://github.com/yamadapc/rust-audio-software/raw/master/design/ui/volume.png\" /\u003e\n  \u003cimg width=\"100\" src=\"https://github.com/yamadapc/rust-audio-software/raw/master/design/ui/picklist.png\" /\u003e\n  \u003cimg height=\"100\" src=\"https://github.com/yamadapc/rust-audio-software/raw/master/design/ui/menu_list.png\" /\u003e\n  \u003cimg height=\"100\" src=\"https://github.com/yamadapc/rust-audio-software/raw/master/design/ui/button.png\" /\u003e\n  \u003cimg height=\"100\" src=\"https://github.com/yamadapc/rust-audio-software/raw/master/design/ui/knobs.png\" /\u003e\n  \u003cimg height=\"100\" src=\"https://github.com/yamadapc/rust-audio-software/raw/master/design/ui/sliders.png\" /\u003e\n  \u003cimg width=\"100\" src=\"https://github.com/yamadapc/rust-audio-software/raw/master/design/ui/transport.png\" /\u003e\n  \u003cimg height=\"100\" src=\"https://github.com/yamadapc/rust-audio-software/raw/master/design/tremolo-screenshot.png\" /\u003e\n\u003c/p\u003e\n\n## 👩 Web GUI\nSee [`docs/misc/WEB_GUI.md`](docs/misc/WEB_GUI.md).\n\n## 🛠 Rust libraries and tooling\n### Workspace \u0026 Building\nThe project is set-up with a cargo workspace. Running `cargo` commands at the root directory should compile all crates\nsharing caches.\n\nTo build the whole project run:\n```shell\ngit submodule update --init\ncargo build\n```\n\nTo run tests:\n```shell\ncargo test\n```\n\nOn OSX you might want to run `./scripts/test.sh` instead of that command.\n\nBuild outputs should be on `target/debug` or `target/release`.\n\n### Packaging apps and VSTs\n\nPackage VSTs using `./scripts/dev.sh build`. This will build all the packages, build specific crates' outputs with\n`./scripts/dev.sh build \u003cpath\u003e`.\n\n#### Looper, Metronome and other (flutter / macOS builds)\nSee instructions on their READMEs under `crates/apps`.\n\n#### Building on linux\nSince this is bringing in all the possible rust crates, you'll need to install quite a few dependencies.\n\nSee `.github/workflows/default.yml` for a list of what's needed on Ubuntu.\n\n### Linting\n```shell\ncargo clippy\n```\n\n### Benchmarking\nBenchmarks using `criterion` will be slowly added. In order to run benchmarks use:\n```shell\ncargo bench\n```\n\n#### Profiling on macOS\n\u003e https://crates.io/crates/cargo-instruments\n\n```shell\ncd ./crates/oscillator\ncargo instruments -t time --bench sine_oscillator_benchmark -- --bench\n```\n\n#### Generating flamegraphs from benchmarks\n\u003e **NOTE** I couldn't get this to work on macOS\n\nFlamegraphs can be generated using `cargo-flamegraph`:\n```shell\ncargo install flamegraph\n```\n\nThe tool can then be used to run a criterion benchmark and generate a flamegraph:\n\n```shell\ncargo flamegraph --bench sine_oscillator_benchmark -- --bench\n```\n\n### Snapshot testing audio processors\n\nSee [`docs/monorepo-tooling/SNAPSHOT_TESTING.md`](docs/monorepo-tooling/SNAPSHOT_TESTING.md).\n\n## Debugging features\n\n* https://crates.io/crates/cargo-whatfeatures\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyamadapc%2Faugmented-audio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyamadapc%2Faugmented-audio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyamadapc%2Faugmented-audio/lists"}