Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/fwcd/bassbox

Embeddable audio graph player with JSON-RPC interface written in Rust
https://github.com/fwcd/bassbox

audio backend json-rpc

Last synced: 14 days ago
JSON representation

Embeddable audio graph player with JSON-RPC interface written in Rust

Awesome Lists containing this project

README

        

# Bassbox
An experimental audio graph player written in Rust that can either be [used as a library](core/README.md) or [controlled via JSON-RPC](app/README.md).

By using a graph as the central structure data structure, Bassbox can serve as a flexible backend for many audio-related applications, including:
* Audio players
* Mixers/DJing software
* Remote speakers
* DAWs

## Try it
Build and run the application using `cargo run -- -e speaker` and play a song by entering:

```json
{"jsonrpc":"2.0","id":0,"method":"audioGraph.addNode","params":[{"type":"File","filePath":"path/to/song.mp3"}]}
{"jsonrpc":"2.0","id":0,"method":"audioGraph.addEdge","params":[{"src":1,"dest":0}]}
```

You can fetch the audio graph using

```json
{"jsonrpc":"2.0","id":0,"method":"audioGraph.get"}
```

## Architecture
On a high level, the application launches an `engine` on a background thread and starts RPC `services`, which control what the engine plays by mutating an audio graph.