A crate for developing audio plugins and applications in Rust.
A deprecated API abstraction for API's for audio plugins and applications. You could use it to write real-time audio effects, software synthesizers, ... and target different platforms (jack, offline processing, ...).
This crate has been deprecated. See this blog post for more information.
At the time of writing, here are some options
nih-plug
, for instance. Per plugin standard that you want to support, create a separate crate that depends both on the “core” library and on an a library that is dedicated to that particular plugin standard (such as the lv2
crate and the clack
crate (not (yet?) on crates.io).We focus on API's that are typically used for audio effects and software synthesizers. If you want to "just" play audio on various platforms, cpal may be better suited for you.
feature | VST 2.4 via vst-rs |
Jack via jack |
Offline audio rendering |
---|---|---|---|
Full duplex audio input and output | ✓ | ✓ | ✓ |
Midi input | ✓ | ✓ | ✓ |
Midi output | N/A | ✓ | ✘ |
Sample accurate midi | N/A | ✓ | ✓ |
Multiple midi inputs and outputs | N/A | ✓ | ✘ |
Sampling frequency change | ✓ | ✘ | N/A |
Signal stopping the application | N/A | ✓ | ✓ |
Jack-specific events | N/A | ✘ | N/A |
Basic meta-data | ✓ | ✓ | N/A |
Access to the underlying host | ✓ | ✓ | N/A |
Parameter changes | ✘ | ✘ | ✘ |
GUI support | ✘ | ✘ | ✘ |
Many features are behind feature flags:
all
: all the features below
backend-jack
: create standalone jack
applications.backend-vst
: create VST 2.4 plugins.backend-combined-all
: all the "combined" backends for offline processing and testing. This always include in-memory dummy and testing backends.
backend-combined-hound
: read and write .wav
files with the hound
cratebackend-combined-wav-0-6
: read and write .wav
files with the wav
cratebackend-combined-midly-0-5
: read and write .mid
files with the midly
cratersor-0-1
: add support for using the rsor
crate for some methods (if you prefer rsor
over vecstorage
)The API documentation can be found
cargo rustdoc --features all
rsynth
presents itself as a library, rather than a framework.
Rather than trying to solve every problem (which is not feasible for the small team),
rsynth
is designed to be easy to combine with other crates for specific tasks, such as
polyphony
: the name says it allwmidi
: encode and decode midi messages in real-timemidi-consts
: constants for low-level handling of midi datartrb
, a realtime-safe single-producer single-consumer ring buffer that can be used to communicate between threads.Background on the design can be found in the design.md document.
There are full examples in the examples folder in the source code.
This crate has been deprecated. See this blog post for more information.
The source code of rsynth
is licensed under the MIT/BSD-3 License.
Note that in order to use rsynth
in combination with other crates (libraries), the combined work needs
to comply with the license of that crate as well. In particular, the following optional dependencies may require your attention:
hound
crate (behind the backend-combined-hound
feature) uses the Apache license, see its readme for more detailswav
crate (behind the backend-combined-wav
feature) uses the LGPL license