Rust - Augmented Audio Libraries

Overview

Augmented Audio Libraries

Default Linux Web-based builds

In this repository I'll push some experiments trying to use Rust for audio programming.


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

Binary downloads

Blog posts


audio-processor-traits

An abstraction for AudioProcessor and AudioBuffer implementations.

See audio-processor-traits and its related (work-in-progress) audio-processor-graph.

pub trait AudioProcessor {
    type SampleType;
    fn prepare(&mut self, _settings: AudioProcessorSettings) {}
    fn process<BufferType: AudioBuffer<SampleType = Self::SampleType>>(
        &mut self,
        data: &mut BufferType,
    );
}

audio-processor-utility

Panning, gain, mono/stereo processors.

atomic-queue

A multi-producer/multi-consumer bounded lock-free queue.

Standalone processor

Implementing the trait enables easy stand-alone hosting of an audio app: audio-processor-standalone.

Standalone MIDI handling

Implementing the trait enables easy stand-alone MIDI handling: audio-processor-standalone-midi.

dsp-filters

A port of the RJB filters in Vinnie Falco's C++ DSPFilters library. Contains resonant low-pass, high-pass, band-pass, shelf etc. & implements the AudioProcessor trait.

oscillator

Basic oscillator implementation.

audio-garbage-collector & audio-garbage-collector-v2

These are wrappers on basedrop & my own WIP implementation of smart pointers that do reference counting but are deallocated on a background thread so they're safe to use the audio-thread.

audio-parameter-store

Implementation of a "parameter store" for audio plugins. Holds audio plugin parameters in a rw locked hashmap and uses atomics on parameter values.

This needs to be reviewed as the locks could be avoided all together & it might not be real-time safe to acquire the lock.

ADSR

Basic ADSR envelope implementation.

Tremolo & Tremolo VST

Basic tremolo with web GUI

Looper & Looper VST

WIP looper implementation.

Synth

Basic synth implementation to show-case audio-processor-traits & other crates.

plugin-host - A CLI for hosting VSTs during development

plugin-host-cli is a CLI tool for testing VST plug-ins.

It's a simple VST host which can open a plug-in and play an audio file through it in a loop. Additionally, it supports watching the VST plug-in for changes & reloading it any time it changes.

It also supports offline rendering into a file and printing some basic diagnostics.

Usage

To run a plug-in looping over a file, on your computer's default audio output, run:

plugin-host run --plugin ./target/release/myplugin.dylib --input ./my-input-file.mp3

To host the plug-in's GUI, use the --editor flag:

plugin-host run --editor --plugin ./target/release/myplugin.dylib --input ./my-input-file.mp3

To watch the plug-in dylib for changes, use the --watch flag: (This currently won't work with an editor)

plugin-host run --watch --plugin ./target/release/myplugin.dylib --input ./my-input-file.mp3

To run off-line rendering to a file, use the --output flag:

plugin-host run --output ./output.wav --plugin ./target/release/myplugin.dylib --input ./my-input-file.mp3

Plugin Host GUI

Iced GUI

plugin-host-gui2 is a GUI for the testing host.

Features supported in the GUI:

  • Loading the VST - Including the GUI, but with caveats
  • Selecting audio IO options (input/output/driver)
  • Selecting an input file
  • Transport controls
  • File watcher. The plugin and its editor will be reloaded on re-build.

Missing functionality:

  • Volume metering/control (see #16)

Future things to improve

  • Implement limiter
  • Show some basic output visualizations for analysis
  • Allow using the default input rather than just input files
  • Implement offline rendering

UI elements

Styles on top of iced_audio & iced, see audio-processor-iced-design-system.

volume_meter

Volume control with visualisation.

pick_list

Iced pick_list / dropdown menu with a label.

menu_list

button

knobs

sliders

transport

Web GUI

See docs/WEB_GUI.md.

Rust libraries and tooling

Overall usage of external libraries

This uses rust-vst to build VSTs. For GUI, there're two strategies in place for web based GUI:

  • tauri is used for plugin-host-gui - Stand-alone
  • Raw bindings into webkit are used for VST plug-ins - This may change as I consider pros/cons of this approach

Due to tauri bundling front-end assets into the plugin-host-gui binary, its front-end app needs to have been built prior to executing its build command in release mode.

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:

cargo build

To run tests:

cargo test

Build outputs should be on target/debug or target/release.

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

cargo clippy

Benchmarking

Benchmarks using criterion will be slowly added. In order to run benchmarks use:

cargo bench

Profiling on macOS

https://crates.io/crates/cargo-instruments

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 macOS

Flamegraphs can be generated using cargo-flamegraph:

cargo install flamegraph

The tool can then be used to run a criterion benchmark and generate a flamegraph:

cargo flamegraph --bench sine_oscillator_benchmark -- --bench

Monorepo & Submodules

This is a mono-repository and several dependencies are vendored as forked submodules. A script can sync the upstreams:

cargo run --package autosync-submodules

This will fetch all upstreams, list the new commits & try to merge them.

Comments
  • Update concread requirement from ^0.2.14 to ^0.3.1 in /crates/apps/plugin-host/plugin-host-lib

    Update concread requirement from ^0.2.14 to ^0.3.1 in /crates/apps/plugin-host/plugin-host-lib

    Updates the requirements on concread to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 15
  • Update clap requirement from ^2.33.3 to ^3.1.8 in /crates/apps/plugin-host/plugin-host-lib

    Update clap requirement from ^2.33.3 to ^3.1.8 in /crates/apps/plugin-host/plugin-host-lib

    Updates the requirements on clap to permit the latest version.

    Release notes

    Sourced from clap's releases.

    v3.1.8

    [3.1.8] - 2022-04-01

    Fixes

    • Add Debug impls to more types
    Changelog

    Sourced from clap's changelog.

    [3.1.8] - 2022-04-01

    Fixes

    • Add Debug impls to more types

    [3.1.7] - 2022-03-31

    Fixes

    • *(derive)* Abort, rather than ignore, when deriving ArgEnum` with non-unit unskipped variants

    [3.1.6] - 2022-03-07

    Fixes

    • Don't panic when validating delimited defaults (#3541)
    • Make it clearer that cargo feature is needed
    • Documentation improvements

    [3.1.5] - 2022-03-02

    Fixes

    • Dependency upgrade

    [3.1.4] - 2022-03-02

    Features

    • (help) Show PossibleValue::help in long help (--help) (gated behind unstable-v4) (#3312)

    [3.1.3] - 2022-02-28

    Fixes

    • Don't panic when validating delimited defaults (#3514)

    [3.1.2] - 2022-02-23

    Fixes

    • (derive) Allow other attribute with a subcommand that has subcommands

    Documentation

    • (examples) List example topics
    • (derive) Clarify syntax and relation to builder API

    [3.1.1] - 2022-02-21

    ... (truncated)

    Commits
    • 08f7404 chore: Release
    • 6aa40ad docs: Update changelog
    • 732830a Merge pull request #3598 from dragonrider7225/bring-back-debug-impls
    • 17fed36 fix: Bring forward Debug impls from v2
    • c75d264 chore: Release
    • b774370 docs: Update changelog
    • 71ef887 Merge pull request #3591 from Shir0kamii/fix-ArgEnum-non-unit
    • fb4755d feat(derive): Don't abort when non-unit variant is skipped
    • ee3d12e fix(derive): Abort on non-unit variant
    • 06f855f Merge pull request #3582 from ducaale/fix-docs
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 9
  • How to use existing processors with stereo or multichannel audio feeds?

    How to use existing processors with stereo or multichannel audio feeds?

    Hello, and thanks in advance for this whole vast library! Lots of useful things in here, and I'm having a lot of fun integrating a few of them into my project.

    I'm a bit confused how to use tools like EnvelopeFollowerProcessor and FilterProcessor with audio streams with more than one channel. Since both of them contain internal state, it seems like I need to instantiate one instance of each of them per-channel. I'm not sure how to elegantly wire this up, though. This is especially confusing due to this section of code in the implementation of FilterProcessor: https://github.com/yamadapc/augmented-audio/blob/c2328e0cdd66251d2074b66c5b2f8315f37c7ef9/crates/augmented/dsp/dsp-filters/src/rbj/mod.rs#L214-L224

    It appears that for each frame, we only use the 0th channel as input, and then overwrite the result of the filter operation onto all other channels in the frame, essentially ignoring the other input channels and producing identical output on all channels. Am I missing something here?

    enhancement question 
    opened by generalelectrix 4
  • Start sampler, add transient detection, start audio-editor, drag-and-drop

    Start sampler, add transient detection, start audio-editor, drag-and-drop

    Things I'm adding in this branch:

    • Transient detection using iterative STFT as in https://www.researchgate.net/profile/Balaji-Thoshkahna/publication/220723752_A_Transient_Detection_Algorithm_for_Audio_Using_Iterative_Analysis_of_STFT/links/0deec52e6331412aed000000/A-Transient-Detection-Algorithm-for-Audio-Using-Iterative-Analysis-of-STFT.pdf
    • Audio editor
    opened by yamadapc 4
  • Update tao requirement from 0.5.2 to 0.6.2 in /crates/apps/plugin-host/plugin-host-lib

    Update tao requirement from 0.5.2 to 0.6.2 in /crates/apps/plugin-host/plugin-host-lib

    Updates the requirements on tao to permit the latest version.

    Release notes

    Sourced from tao's releases.

    tao v0.6.2

    Updating crates.io index

    Cargo Audit

    \` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 397 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (183 crate dependencies) \`

    [0.6.2]

    • Fixes the set_fullscreen implementation on Linux when the Fullscreen::Borderless value is set to None.
      • 456147de fix(linux): fullscreen on current monitor (#320) on 2022-02-13

    Cargo Publish

    \` Updating crates.io index Packaging tao v0.6.2 (/home/runner/work/tao/tao) Uploading tao v0.6.2 (/home/runner/work/tao/tao) \`

    Changelog

    Sourced from tao's changelog.

    [0.6.2]

    • Fixes the set_fullscreen implementation on Linux when the Fullscreen::Borderless value is set to None.
      • 456147de fix(linux): fullscreen on current monitor (#320) on 2022-02-13

    [0.6.1]

    • Fix global shortcut support on Linux (both x11 and wayland).

    [0.6.0]

    • Update to gtk 0.15
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Emit errors when parsing an invalid accelerator from a string.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Add support for more accelerator keys: , - . = ; / \ ' ` [ ] Space Tab and F13-F24
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Increased Borderless window resizing inset.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Update to 2021 edition and msrv to 1.56
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Breaking: Rename the Exit variant of ControlFlow to ExitWithCode, which holds a value to control the exit code after running. Add an Exit constant which aliases to ExitWithCode(0) instead to avoid major breakage. This shouldn't affect most existing programs.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Fixes the MenuItem::Quit behavior on Windows.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Add support for SPACE shortcut key on Windows.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
      • Fix redrawn event that causing infinite lopp on Linux
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Fix linux native menu items not working.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
      • Fix resizing undecorated window on Linux.
    • Undecorated window can be resized using touch on Linux.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Fix focus events not firing on Linux
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Add monitor selection when fullscreen on Linux and close possible way to create VideoMode on Linux since gtk doesn't acutally have such feature.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
      • Add RedrawEventsCleared and RedrawRequested on Linux
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Add run_return trait on Linux
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • window.set_skip_taskbar() on Linux will now also skip the pager (Alt+Tab), this matches the behavior on Windows.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Update tray dependency version.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Fix deadlock when unregistering shortcut on Linux.
      • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Fire WindowEvent::Resized and WindowEvent::Moved when window is min/maximized on Linux to align with Windows behavior.

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 3
  • Bump ts-jest from 27.0.3 to 27.0.7

    Bump ts-jest from 27.0.3 to 27.0.7

    Bumps ts-jest from 27.0.3 to 27.0.7.

    Changelog

    Sourced from ts-jest's changelog.

    27.0.7 (2021-10-16)

    Bug Fixes

    27.0.6 (2021-10-14)

    Bug Fixes

    • use specific lodash package instead of full package lodash (#2959) (dc89fe5), closes #2954

    27.0.5 (2021-08-14)

    Bug Fixes

    • cli: add migration tsConfig option for ts-jest config options (#2794) (781710b), closes #2764
    • cli: fix config:init genarate invalid type comment (#2773) (ede8a20), closes #2772
    • config: handle ./ in tsconfig paths for pathsToModuleNameMapper (#2797) (42ff5e4), closes #2709

    Code Refactoring

    27.0.4 (2021-07-21)

    Bug Fixes

    • add @types/jest as optional peerDependencies to solve yarn 2 (#2756) (5fbf43e)
    • add babel-jest as optional peerDependencies to solve yarn 2 (#2751) (8bede2e)
    • config: include AST transformer's name and version into cache key (#2755) (310fb9a), closes #2753

    Features

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 3
  • Update symphonia requirement from ^0.2.0 to ^0.4.0 in /crates/apps/plugin-host/plugin-host-lib

    Update symphonia requirement from ^0.2.0 to ^0.4.0 in /crates/apps/plugin-host/plugin-host-lib

    Updates the requirements on symphonia to permit the latest version.

    Commits
    • 46887e6 chore: Release v0.4.0.
    • 9e5437a vorbis: Zero floor vector if floor is marked unused.
    • 5f062b7 play: Fix calculation of minutes when printing a time.
    • 9e5874c core: Use chunks_exact_mut in DCT instead of chunks_exact.
    • fedea6e ogg: Ensure the first page read in try_new is a first page.
    • 2632cdf vorbis: Do not use prev and next_window_flags.
    • 7bbb8aa vorbis: End of bitstream is not an error for floor decode.
    • 7a427a9 Add a basic decoding example.
    • 334bc82 chore: Update README.
    • 09ddcc6 isomp4: Provide AAC duration.
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 3
  • Update symphonia-bundle-mp3 requirement from ^0.2.0 to ^0.4.0 in /crates/apps/plugin-host/plugin-host-lib

    Update symphonia-bundle-mp3 requirement from ^0.2.0 to ^0.4.0 in /crates/apps/plugin-host/plugin-host-lib

    Updates the requirements on symphonia-bundle-mp3 to permit the latest version.

    Commits
    • 46887e6 chore: Release v0.4.0.
    • 9e5437a vorbis: Zero floor vector if floor is marked unused.
    • 5f062b7 play: Fix calculation of minutes when printing a time.
    • 9e5874c core: Use chunks_exact_mut in DCT instead of chunks_exact.
    • fedea6e ogg: Ensure the first page read in try_new is a first page.
    • 2632cdf vorbis: Do not use prev and next_window_flags.
    • 7bbb8aa vorbis: End of bitstream is not an error for floor decode.
    • 7a427a9 Add a basic decoding example.
    • 334bc82 chore: Update README.
    • 09ddcc6 isomp4: Provide AAC duration.
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 3
  • BUG: a0 term is wrong in blackman_harris window function

    BUG: a0 term is wrong in blackman_harris window function

    Minor but leads to a wrong windowing. a0 term is wrong in blackman_harris (see the line https://github.com/yamadapc/augmented-audio/blob/af08f580024039a23b0e26c0b93de8e87a927ff6/crates/augmented/audio/audio-processor-analysis/src/window_functions/mod.rs#L57) Instead of a0 = 0.36875, it should a0 = 0.35875 according to : https://en.wikipedia.org/wiki/Window_function#Blackman%E2%80%93Harris_window

    bug augmented-libraries 
    opened by antimora 2
  • Update clap requirement from ^2.33.3 to ^3.2.22 in /crates/augmented/application/audio-processor-standalone

    Update clap requirement from ^2.33.3 to ^3.2.22 in /crates/augmented/application/audio-processor-standalone

    Updates the requirements on clap to permit the latest version.

    Release notes

    Sourced from clap's releases.

    v3.2.22

    [3.2.22] - 2022-09-16

    Fixes

    • Unify dependencies on terminal_size to the 0.2 release
    Changelog

    Sourced from clap's changelog.

    [3.2.22] - 2022-09-16

    Fixes

    • Unify dependencies on terminal_size to the 0.2 release

    [3.2.21] - 2022-09-12

    Features

    • TypedValueParser::map to allow reusing existing value parsers for other purposes

    [3.2.20] - 2022-09-02

    Features

    • ArgMatches::get_count help for ArgAction::Count
    • ArgMatches::get_flag help for ArgAction::SetTrue / ArgAction::SetFalse

    [3.2.19] - 2022-08-30

    Fixes

    • (help) Ensure required arguments for parent commands aren't shown in their subcommands when using args_conflicts_with_subcommand

    [3.2.18] - 2022-08-29

    Fixes

    • (help) Command::print_help now respects Command::colored_help
    • (derive) Improved error messages

    [3.2.17] - 2022-08-12

    Fixes

    • (derive) Expose #[clap(id = ...)] attribute to match Arg's latest API

    [3.2.16] - 2022-07-30

    Fixes

    • Ensure required arguments appear in errors when they are also members of a group (#4004)

    [3.2.15] - 2022-07-25

    Features

    • (derive) New default_values_t and default_values_os_t attributes

    ... (truncated)

    Commits
    • 9e3fa67 chore: Release
    • d188de0 docs: Update changelog
    • 48b2373 Merge pull request #4221 from niyaznigmatullin/bump_terminal_size
    • 2fd5507 chore(deps): Bump terminal_size and textwrap
    • 7de2f36 chore: Release
    • af47562 docs: Roll back deprecation message
    • 1f053b9 Merge pull request #4205 from epage/deprecations
    • d1ff063 Merge pull request #4204 from epage/map
    • 7272aa0 docs: Expand on deprecation instructions
    • 960c152 feat(parser): TypedValueParseer::map for adapting value parsers
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Update clap requirement from 2.34.0 to 3.2.22 in /crates/augmented/audio/audio-processor-analysis

    Update clap requirement from 2.34.0 to 3.2.22 in /crates/augmented/audio/audio-processor-analysis

    Updates the requirements on clap to permit the latest version.

    Release notes

    Sourced from clap's releases.

    v3.2.22

    [3.2.22] - 2022-09-16

    Fixes

    • Unify dependencies on terminal_size to the 0.2 release
    Changelog

    Sourced from clap's changelog.

    [3.2.22] - 2022-09-16

    Fixes

    • Unify dependencies on terminal_size to the 0.2 release

    [3.2.21] - 2022-09-12

    Features

    • TypedValueParser::map to allow reusing existing value parsers for other purposes

    [3.2.20] - 2022-09-02

    Features

    • ArgMatches::get_count help for ArgAction::Count
    • ArgMatches::get_flag help for ArgAction::SetTrue / ArgAction::SetFalse

    [3.2.19] - 2022-08-30

    Fixes

    • (help) Ensure required arguments for parent commands aren't shown in their subcommands when using args_conflicts_with_subcommand

    [3.2.18] - 2022-08-29

    Fixes

    • (help) Command::print_help now respects Command::colored_help
    • (derive) Improved error messages

    [3.2.17] - 2022-08-12

    Fixes

    • (derive) Expose #[clap(id = ...)] attribute to match Arg's latest API

    [3.2.16] - 2022-07-30

    Fixes

    • Ensure required arguments appear in errors when they are also members of a group (#4004)

    [3.2.15] - 2022-07-25

    Features

    • (derive) New default_values_t and default_values_os_t attributes

    ... (truncated)

    Commits
    • 9e3fa67 chore: Release
    • d188de0 docs: Update changelog
    • 48b2373 Merge pull request #4221 from niyaznigmatullin/bump_terminal_size
    • 2fd5507 chore(deps): Bump terminal_size and textwrap
    • 7de2f36 chore: Release
    • af47562 docs: Roll back deprecation message
    • 1f053b9 Merge pull request #4205 from epage/deprecations
    • d1ff063 Merge pull request #4204 from epage/map
    • 7272aa0 docs: Expand on deprecation instructions
    • 960c152 feat(parser): TypedValueParseer::map for adapting value parsers
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Streaming audio file processor

    Streaming audio file processor

    • Spikes on issue/audio-file-streaming - https://github.com/yamadapc/augmented-audio/pull/new/issue/audio-file-streaming
    • One option is to use https://github.com/meadowlarkdaw/creek

    When recording loops and so on, it'd be beneficial to write to files (as then we don't need to pre-allocate huge amounts of memory for all tracks).

    It'd also be useful to dynamically resize audio buffers; or generally come-up with a solution for dynamic sized buffers on the audio-thread.

    enhancement augmented-libraries 
    opened by yamadapc 0
  • [email protected](Aug 3, 2021)

    This is an initial alpha binary release of "Plugin Host.app" for testing purposes.

    Plugin Host is a testing VST host which will reload plugin dylibs on the fly and is meant for interactive GUI/Audio development.

    Read more on https://beijaflor.io/blog/07-2021/rust-audio-experiments-2/

    Current features

    • Looping over audio files for development
    • Hosting VST plug-ins with basic MIDI / GUI support
    • Reloading VST plug-ins when they change on disk
    • Floating the plug-in editor window on top of other windows to aid quick development
    • Transport & volume controls / visualisation

    Screen Shot 2021-08-04 at 08 56 44

    Things I'd like to tackle to get a non-alpha release

    • Better error/usage reporting (on an opt-in basis)
    • Automatic updates
    • Limiting
    • Bug fixing
    • Support for other platforms
    • More visualisations
    Source code(tar.gz)
    Source code(zip)
    plugin-host-gui2.dmg(2.83 MB)
    Plugin.Host.app.zip(2.31 MB)
    release.json(117 bytes)
Owner
Pedro Tacla Yamada
Software developer, musician & so on https://www.linkedin.com/in/yamadapc/
Pedro Tacla Yamada
Rust audio playback library

Audio playback library Rust playback library. Playback is handled by cpal. MP3 decoding is handled by minimp3. WAV decoding is handled by hound. Vorbi

null 1.2k Jan 1, 2023
Rust bindings for the soloud audio engine library

soloud-rs A crossplatform Rust bindings for the soloud audio engine library. Supported formats: wav, mp3, ogg, flac. The library also comes with a spe

Mohammed Alyousef 38 Dec 8, 2022
Implements the free and open audio codec Opus in Rust.

opus-native Overview Implements the free and open audio codec Opus in Rust. Status This crate is under heavy development. Most functionality is not wo

Nils Hasenbanck 9 Nov 28, 2022
Symphonia is a pure Rust audio decoding and media demuxing library supporting AAC, FLAC, MP3, MP4, OGG, Vorbis, and WAV.

Pure Rust multimedia format demuxing, tag reading, and audio decoding library

Philip Deljanov 1k Jan 2, 2023
CLI Rust Audio Visualizer

crav Console-based Rust Audio Visualizer It can run in the terminal but also has a 3D accelerated backend implemented in wgpu. demo compatibility The

null 20 Oct 16, 2022
Simple examples to demonstrate full-stack Rust audio plugin dev with baseplug and iced_audio

iced baseplug examples Simple examples to demonstrate full-stack Rust audio plugin dev with baseplug and iced_audio WIP (The GUI knobs do nothing curr

Billy Messenger 10 Sep 12, 2022
MVC audio plugin framework for rust

__ __ | |--.---.-.-----.-----.-----.| |.--.--.-----. | _ | _ |__ --| -__| _ || || | | _ | |

william light 93 Dec 23, 2022
simple-eq is a crate that implements a simple audio equalizer in Rust.

simple-eq A Simple Audio Equalizer simple-eq is a crate that implements a simple audio equalizer in Rust. It supports a maximum of 32 filter bands. Us

Mike Hilgendorf 11 Sep 17, 2022
A simple GUI audio player written in Rust with egui. Inspired by foobar2000.

Music Player A simple GUI music player inspired by foobar2000 written in Rust using egui. The goal of this project is to learn about making gui/ nativ

Ryan Blecher 5 Sep 16, 2022
Rust Audio Player Daemon

Rust Audio Player Daemon Cause mpd was annoying What rapd trys to do Rapd is not a spotify client, or an advanced music player. Its an audio/music dae

ash 3 Nov 1, 2022
API-agnostic audio plugin framework written in Rust

Because everything is better when you do it yourself - Rust VST3 and CLAP framework and plugins

Robbert van der Helm 415 Dec 27, 2022
Cross-platform audio for Rust

quad-snd High-level, light-weight, and opinionated audio library. Web: WebAudio Android: OpenSLES Linux: Alsa macOS: CoreAudio Windows: Wasapi iOS: Co

Fedor Logachev 86 Nov 7, 2022
DSP real time audio synthesis, effect algorithms and utilities for Rust

synfx-dsp synfx-dsp DSP real time audio synthesis, effect algorithms and utilities for Rust Most of the algorithms and implementations in this library

Weird Constructor 8 Nov 23, 2022
Quite OK Audio format in Rust.

QOA - The Quite Ok Audio Format This is a pure Rust (zero dependency) implementation of the QOA audio format. This code is based off the reference C i

Rafael Carício 10 Apr 16, 2023
A low-overhead and adaptable audio playback library for Rust

Awedio   A low-overhead and adaptable audio playback library for Rust. Examples Play a single sound file: let (mut manager, backend) = awedio::start()

10 Buttons 20 May 25, 2023
Capture system output audio in rust.

RUHear A simple crate that allows you to capture system output audio (what aRe yoU HEARing). Dependencies On windows and linux: cpal On macos: screenc

Charles 3 Feb 7, 2024
Rust-crate with functions and helpers for working with music / audio, inspired by computer music languages.

music-math This crate contains common functions and helpers for working with music / audio in Rust. Most of these are inspired by similar functions fo

Mads Kjeldgaard 3 Apr 10, 2024
A collection of filters for real-time audio processing

Audio Filters A collection of filters for real-time audio processing Feature Progress #![no_std] (via libm) f32 & f64 capable (via num-traits) SIMD Do

null 42 Nov 5, 2022
A discord.py experimental extension for audio recording

discord-ext-audiorec This project is currently under development. We do not guarantee it works.

Tomoya Ishii 11 Jan 2, 2023