I decided to learn Rust because I don't know how to use a high-performance compiled language and this often stops me when I'm trying to do real-time audio or precise manipulation of time and audio. I know next to nothing about language and I'm learning as I go. I'm not even aware of all that language has to offer, so I just run into the walls and correct accordingly!
Eremit is a small live coding environment contained in a single binary:
- the interpreter is Lua (easy to integrate thanks to mlua).
- the clock is using Ableton Link thanks to rusty_link.
- Classic I/O (WIP) with rosc and midir.
- (TODO) a scheduler happily scheduling I/O.
Eremit is designed to be a very compact and resilient programme. I'd like to be able to offer it as a binary for Linux / Mac / Windows. Communication with the interpreter is done automatically via the terminal. You'll need to create a small plugin for VSCode or Vim/Neovim to communicate with Eremit from your favorite editor. For the moment, there's so little we can do that it's not necessary.
- Robust timing and synchronization with modern DAWs
- Little memory footprint and running Eremit on small devices
- Flexible time model for sequencing patterns
- Learning as much as possible about Rust...
Compilation is a two step process, three with cloning the project:
git clone https://github.com/Bubobubobubobubo/Eremit && cd Eremit
.git submodule update --init --recursive
for (rusty link).cargo build
orcargo run
I've written a small eremit-vscode plugin to help me test the program in real conditions.