Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/MeadowlarkDAW/rainout

Cross-platform audio and MIDI IO
https://github.com/MeadowlarkDAW/rainout

Last synced: about 1 month ago
JSON representation

Cross-platform audio and MIDI IO

Awesome Lists containing this project

README

        

# ☔ rainout ☔ (Rust Audio IN-OUT)
[![Documentation](https://docs.rs/rainout/badge.svg)](https://docs.rs/rainout)
[![Crates.io](https://img.shields.io/crates/v/rainout.svg)](https://crates.io/crates/rainout)
[![License](https://img.shields.io/crates/l/rainout.svg)](https://github.com/MeadowlarkDAW/rainout/blob/main/COPYRIGHT)

### **This project has been abandoned. If anyone wants to take this over, please let me know!**

If you want to connect to audio and MIDI devices in Rust, check out [cpal](https://crates.io/crates/cpal), [midi-control](https://crates.io/crates/midi-control), [tinyaudio](https://crates.io/crates/tinyaudio), and/or [miniaudio](https://crates.io/crates/om-fork-miniaudio) instead.

---

A cross-platform, highly configurable, low-latency, and robust solution for connecting to audio and MIDI devices.

> This crate is experimental and a work in progress. It is not yet ready for any kind of production use.

# Current Progress

| Backend | Single Audio Device | Multiple Audio Devices | MIDI In/Out | MIDI 2.0 In/Out |
| ----------------- | ------------- | ------------------ | -------------- | --------------- |
| Pipewire (Linux) | ◻ NYI | ◻ NYI | ◻ NYI | ◻ NYI |
| CoreAudio (MacOS) | ◻ NYI | ◻ NYI | ◻ NYI | ◻ NYI |
| WASAPI (Windows) | ⚠️ WIP (Currently output-only) | ❓ Not on roadmap* | ➖ Not Applicable | ➖ Not Applicable |
| Windows MIDI | ➖ Not Applicable | ➖ Not Applicable | ◻ NYI | ◻ NYI |
| ASIO (Windows) | ◻ NYI | ◻ NYI | ◻ NYI | ◻ NYI |
| Jack (Linux) | ✔️ Functional | ✔️ Functional | ✔️ Functional | ◻ NYI |
| Jack (Windows) | ✔️ Functional | ✔️ Functional | ✔️ Functional | ◻ NYI |
| Jack (MacOS) | ✔️ Functional | ✔️ Functional | ✔️ Functional | ◻ NYI |
| Pulseaudio** (Linux) | ◻ NYI | ⛔ Not on roadmap | ◻ NYI | ⛔ Not on roadmap |
| Alsa** (Linux) | ◻ NYI | ⛔ Not on roadmap | ◻ NYI | ⛔ Not on roadmap |

> - "Single Audio Device" means the ability to connect to a single audio device. This audio device can be input-only, output-only, or natively duplex (i.e. an audio interface with both microphone inputs and speaker outputs). "Multiple Audio Devices" means the ability to connect to a separate input and output audio device and then syncing them together in software.
> - \* WASAPI makes it tricky to sync multiple audio devices together without adding a lot of extra latency, which is why it's not currently on the roadmap. However, we may add support for this if there is enough demand for it.
> - ** The Pulseaudio and ALSA backends may prove to be unecessary in the advent of Pipewire.

# Contributing

If you wish to contribute, take a look at the current [Design Document].

If you have any questions, you can reach us in the [Meadowlark Discord Server] under the `rainout` channel or the [Rust Audio Discord Server] under the `rusty-daw` channel.

[Design Document]: ./DESIGN_DOC.md
[Meadowlark Discord Server]: https://discord.gg/2W3Xvc8wy4
[Rust Audio Discord Server]: https://discord.gg/Qs2Zwtf9Gf