Skip to content

Instantly share code, notes, and snippets.

@mitchmindtree
Created May 29, 2019 18:44
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mitchmindtree/9a3ead01aea3a2d7e7f5ba55837587f3 to your computer and use it in GitHub Desktop.
Save mitchmindtree/9a3ead01aea3a2d7e7f5ba55837587f3 to your computer and use it in GitHub Desktop.
RustAudio - State of the Repos

In Path to Rust Audio I briefly mentioned that the repos are in a variety of states of maintenance - here I'll give my own impression of the current state of each of the repositories.

ogg and lewton - active I believe both were started by est31, both seem to be actively used and worked on.

coreaudio-sys and coreaudio-rs - active I started these to add audio I/O support to CPAL a few years ago. I have since moved to Linux as my daily machine and don't often get the chance to test for them anymore, however Rhuagh has kindly taken over testing and reviews. I still try to review code when I can.

deepspeech-rs - seems active This is a newer addition that I don't have a lot to do with, but seems like a very interesting project.

rust-portaudio - unmaintained This is some of the oldest code inherited by the organisation and used to be the way myself and many others would do cross-platform audio I/O. A few years back however I switched my focus to CPAL to drive forward pure-rust I/O and have been using it ever since. As a result, rust-portaudio does not currently have a motivated maintainer.

audrey - inactive but used/motivated Audrey is an attempt at making it easy to encode and decode various formats using only pure-rust encoder and decoder implementations. Currently supports Ogg Vorbis, ALAC, WAV and FLAC. I believe an attempt at mp3 is in the works that we'd like to add eventually though I'm not sure of its progress. I believe deepspeech-rs uses audrey under the hood, and I've personally used it in a couple of downstream projects - it just hasn't need a PR over the past couple of years I guess? We were interested in merging the efforts with the rust-av group at one point as they received funding to work on a rusty libav, but I've found it really difficult to track their progress and haven't yet reached out to inquire whether or not they would be interested.

sample - active I consider this one of the more fundamental crates under the organisation, kind of like a std for audio. I find myself using it in everything PCM/DSP related - contains things like sample conversions, sample rate converters / interpolation, RMS, enveloping, windowing, signal abstractions, fixed-size frame abstractions, and more.

pitch_calc - fairly stable A collection of types for converting between frequency and pitch representations like the mel scale, hz, midi notes, etc.

time_calc - fairly stable Same as above but for converting between time domains.

synth - unmaintained, but works? I made this very early on for a generative music project. It's a nicely working additive synth, but these days I'd do the whole thing completely differently! Would be happy to give up this crate name for a more promising, generalised synthesis project if one arises.

sampler and instrument - unmaintained, but kind of works A sampler I wrote for the same project above, but again I'd do it much differently if I were to write it again these days and don't plan on updating the project.

musical_keyboard - fairly stable For converting keyboard input to MIDI notes, inspired by logic pro's musical keyboard.

rimd - unsure For working with MIDI files. I believe this has been used and still receives PRs occasionally though I've not used it myself and can't speak for the longevity of the project.

dsp-chain - may be revived soon A crate for dynamically composing audio graphs. It's currently limited by its design and lacking support for things like side-chaining and delays as a result. I'm hoping to rework this into something closer to what @raph and I discussed in this issue.

The envelope, volume, sound_stream, panning and rms crates are all very early old projects of mine that have long had their usefulness surpassed by other crates in the org.

I think this covers at least the majority of the crates. Hopefully this will be useful to my future self or a fellow RustAudio maintainer in assisting with cleaning up the Org a little!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment