Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yamadapc/augmented-audio
Rust - Augmented Audio Libraries
https://github.com/yamadapc/augmented-audio
audio gui rust vst-plugin web
Last synced: 12 days ago
JSON representation
Rust - Augmented Audio Libraries
- Host: GitHub
- URL: https://github.com/yamadapc/augmented-audio
- Owner: yamadapc
- License: other
- Created: 2021-05-25T10:28:59.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-01-31T11:16:14.000Z (10 months ago)
- Last Synced: 2024-04-16T21:05:33.720Z (7 months ago)
- Topics: audio, gui, rust, vst-plugin, web
- Language: Rust
- Homepage:
- Size: 131 MB
- Stars: 161
- Watchers: 5
- Forks: 13
- Open Issues: 39
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Augmented Audio Libraries
![CI builds](https://github.com/yamadapc/augmented-audio/actions/workflows/ci.yml/badge.svg)
[![Coverage Status](https://coveralls.io/repos/github/yamadapc/augmented-audio/badge.svg?branch=master)](https://coveralls.io/github/yamadapc/augmented-audio?branch=master)[**Note about test coverage**](docs/TEST_COVERAGE.md)
- - -
Experiments trying to use Rust for audio programming.
Consider anything in this repository a draft.
⚠️ Goals
* **Goal 1:** Learn & have fun
* This is goal #1 and it's very important to keep it in mind if you end-up
depending on one of the crates in this repository
* **Goal 2:** Build tools for aiding development
* **Goal 3:** Experiment with audio software GUI in Rust## License
Most of this repository is published under the MIT LICENSE.Some directories which contain full applications are licensed under the AGPLv3 license. Check the `LICENSE` and `README.md` files.
## 📖 Documentation
* [Augmented Audio Libraries](crates/augmented#readme)
* [Applications in this repository](crates/apps#readme)
- [Test plugin host](crates/apps/plugin-host#readme)
- [Metronome](crates/apps/metronome#readme)
- [Continuous Looper (native macOS)](crates/apps/looper/Sequencer#readme)
- [Looper VST (iced)](crates/apps/looper#readme)## ⬇️ Binary downloads
* [See releases to download binaries](https://github.com/yamadapc/augmented-audio/releases)
* [Simple Metronome on App Store](https://apps.apple.com/au/app/simple-metronome/id1604183938?mt=12)
* [Continuous Looper on App Store](https://apps.apple.com/au/app/continuous-looper/id1616355791)## 💬 Blog posts
* [Initial 'Test Plugin Host' post](https://beijaflor.io/blog/07-2021/rust-audio-experiments-2/)
* [Simple Metronome release](https://beijaflor.io/blog/01-2022/rust-audio-experiments-3/)
* [Generic AudioProcessors in Rust](https://beijaflor.io/blog/02-2022/rust-audio-experiments-4/)
* [Continuous Looper - 8-track live-looper and performance sampler](https://beijaflor.io/blog/04-2022/rust-audio-experiments-5/)- - -
- [Simple standalone audio-app](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/application/audio-processor-standalone)
- Effects and analysis
* [RMS, FFT, peak-detection, transient detection](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-analysis)
* [Filters](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/dsp/dsp-filters)
* [Time-based effects (delay/reverb)](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-time)
* [Compressor](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-dynamics)
* [Pitch-shifter](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-pitch-shifter)
* [Bit-crusher](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-bitcrusher)
* [Utility (pan, mono, gain)](https://github.com/yamadapc/augmented-audio/tree/master/crates/augmented/audio/audio-processor-utility)## 📸 Screenshots
## 👩 Web GUI
See [`docs/misc/WEB_GUI.md`](docs/misc/WEB_GUI.md).## 🛠 Rust libraries and tooling
### Workspace & Building
The project is set-up with a cargo workspace. Running `cargo` commands at the root directory should compile all crates
sharing caches.To build the whole project run:
```shell
git submodule update --init
cargo build
```To run tests:
```shell
cargo test
```On OSX you might want to run `./scripts/test.sh` instead of that command.
Build outputs should be on `target/debug` or `target/release`.
### Packaging apps and VSTs
Package VSTs using `./scripts/dev.sh build`. This will build all the packages, build specific crates' outputs with
`./scripts/dev.sh build `.#### Looper, Metronome and other (flutter / macOS builds)
See instructions on their READMEs under `crates/apps`.#### Building on linux
Since this is bringing in all the possible rust crates, you'll need to install quite a few dependencies.See `.github/workflows/default.yml` for a list of what's needed on Ubuntu.
### Linting
```shell
cargo clippy
```### Benchmarking
Benchmarks using `criterion` will be slowly added. In order to run benchmarks use:
```shell
cargo bench
```#### Profiling on macOS
> https://crates.io/crates/cargo-instruments```shell
cd ./crates/oscillator
cargo instruments -t time --bench sine_oscillator_benchmark -- --bench
```#### Generating flamegraphs from benchmarks
> **NOTE** I couldn't get this to work on macOSFlamegraphs can be generated using `cargo-flamegraph`:
```shell
cargo install flamegraph
```The tool can then be used to run a criterion benchmark and generate a flamegraph:
```shell
cargo flamegraph --bench sine_oscillator_benchmark -- --bench
```### Snapshot testing audio processors
See [`docs/monorepo-tooling/SNAPSHOT_TESTING.md`](docs/monorepo-tooling/SNAPSHOT_TESTING.md).
## Debugging features
* https://crates.io/crates/cargo-whatfeatures