Skip to content

Instantly share code, notes, and snippets.

@mitchmindtree
Created May 29, 2019 18:44
Show Gist options
  • Select an option

  • Save mitchmindtree/9a3ead01aea3a2d7e7f5ba55837587f3 to your computer and use it in GitHub Desktop.

Select an option

Save mitchmindtree/9a3ead01aea3a2d7e7f5ba55837587f3 to your computer and use it in GitHub Desktop.

Revisions

  1. mitchmindtree created this gist May 29, 2019.
    45 changes: 45 additions & 0 deletions rust-audio-state-of-the-repos.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,45 @@

    In [Path to Rust Audio](https://rust-audio.discourse.group/t/path-to-rust-audio-and-forwards/50/11) 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**](https://github.com/RustAudio/ogg) and [**lewton**](https://github.com/RustAudio/lewton) - **active**
    I believe both were started by est31, both seem to be actively used and worked on.

    [**coreaudio-sys**](https://github.com/RustAudio/coreaudio-sys) and [**coreaudio-rs**](https://github.com/RustAudio/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**](https://github.com/RustAudio/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**](https://github.com/RustAudio/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**](https://github.com/RustAudio/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](https://github.com/RustAudio/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**](https://github.com/RustAudio/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**](https://github.com/RustAudio/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**](https://github.com/RustAudio/time_calc) - **fairly stable**
    Same as above but for converting between time domains.

    [**synth**](https://github.com/RustAudio/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**](https://github.com/RustAudio/sampler) and [**instrument**](https://github.com/RustAudio/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**](https://github.com/RustAudio/musical_keyboard) - **fairly stable**
    For converting keyboard input to MIDI notes, inspired by logic pro's musical keyboard.

    [**rimd**](https://github.com/RustAudio/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**](https://github.com/RustAudio/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](https://github.com/RustAudio/dsp-chain/issues/141).

    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!