Rust Audio

Welcome & Introductions

Interesting. Any details? Using SuperCollider, or your own DSP engine?

Hello everyone! I love Rust (including embedded Rust) and music production. On the latter side I’ve been a big fan of Ableton and Max/MSP, and before that Propellerhead.

I’ve been pretty enamored with Rust embedded on Adafruit devices, particularly this one: the Neotrellis M4:

It reminded me of several previous similar controllers including the Monome and of course more recent and popular devices like Ableton Push controllers.

The NeoTrellis M4 has an integrated dual channel ADC/DAC, so my goal has been to port a DSP engine to no_std Rust.

In that regard, I’ve been working on PureZen, a Rust translation of a Pure Data engine called ZenGarden which was originally written in C++ intended for use on smartphones. I selected ZenGarden as a starting place because its critical path requires no heap allocations, and in the course of translating it have also been trying to eliminate other no_std incompatibilities.

I’ve looked at the RustAudio crates and several of them seem extremely interesting, especially the sample crate which provides no_std compatibility. If I ever finish swallowing the whale that is translating ZenGarden, and get it to a basic state of functionality, the next steps I’d like to do immediately would be retrofitting sample into it. I may even consider attempting to eagerly integrate sample so as to avoid having to translate the existing C++ code within ZenGarden it would replace.

My end goal is NeoBirth, an attempt to recreate Propellerhead’s ReBirth acid house synthesis program running entirely on the NeoTrellis M4. The basic idea would be to combine Pure Data recreations of the 808 and 909 along with a potential Rust port of Open303 to create an embedded Rust acid house synthesizer that runs entirely on the NeoTrellis M4 and leverages every last cycle I can wring out of its 120MHz SAMD51 MCU.

I imagine if I can get such a no_std friendly DSP engine to work, it would also be useful to WASM users.

Anyway, glad to see so much interest in Rust audio, and I hope to learn about a bunch of awesome Rust audio crates I could potentially use in these projects.

4 Likes

The classic duality, a domain-specific language for control and SCSynth for synthesis. The DSL is based on Common Lisp. You can check it out if you are interested, it’s called Mégra and it’s on my GitHub that is linked above. Currently working on the documentation.

1 Like

Ah cool. Something I’ve been messing around with in my (very limited) free time is how one might reimplement SuperCollider in Rust.

I’ve also done some work on using Elixir as a livecoding language. It has some nice features that make it very well suited (soft real time, macros, functional).

1 Like

Hi! This is my very first post in this community. I came here because I dream of developing some standalone music improvisation instrument that is worth selling. So far I’ve been working with some boards I designed as controllers. They connect through UART to a node-js application (which is what I find the easiest; ), and only generating MIDI. I am currently using this on my live gigs, and they work really well (http://autotel.co/portfolio/polimod-calculeitor)

But I am seeing the limits of the language, specially because I want to start doing the sound generators and not just outputting midi. Besides, javascript is a pretty irresponsible choice for this application in relation to use of energy. Additionally, I want to run the thing on an SBC such as raspberry PI. I was starting to develop the thing in C++, but a friend asked me why don’t I learn use rust instead. So now I am walking around, and doing some basic sketches to get convinced!

I studied industrial design in Chile, and Ma. New media in Helsinki. I shared @doomy’s experience using fl studio demo, but in general I haven’t had that much money on my power, so instead of proceeding to bigwig, I grew into reaper instead :rofl:. I have also very long wanting to do my own vst’s. I had a blast playing with synthedit when it was free (or somehow there was a way how I could use it at that time), but then I couldn’t see how any more. So I might as well waver into vst making eventually. I have worked a fair bit on fft based and sample-by-sample dsp stuff, but sort of intuitively; I sucked at calculus in school and so far haven’t dared to study it again.

So I am interested in learning about low latency sound and music oriented sound processing in general.

looking forward!

2 Likes

Hi. I’m Viktor

I’m a self-taught software developer, who loves to listen music. During latest 20 years I had opportunities to write in some variety of programming languages. About 9 years ago I was contributing to the Pro Audio overlay of Gentoo http://proaudio.tuxfamily.org/wiki/index.php?title=Main_Page . 7 years ago I tried to compose electronic music, which you can listen here https://soundcloud.com/viktorlazarev , that time I had a MIDI keyboard, on which I did my experiments with sounds.

These days my favorite language is Rust. I’m not too much experienced with it though. I’m slowly writing a music player for my needs. And also I’d like to contribute to audio related crates to be more involved into the topic

Hi, I’m Chikashi. I’m working for a 3D-VR audio company in Germany as a C++/C# developer. https://www.dearvr.com/ and developing plugins for vst/aax/au etc. using juce framework.

I’m really interested in the combination of Rust and Audio. Since audio programming almost necessarily involves multithreading because you have to react to UI and fill the audio buffer at the same time. However, multithreading in C++ is sometimes very time-consuming and bug-prone as you may all know.

I just read two books about rust and wrote some basic console apps in rust so I’m a novice here but my dream is to have a juce like framework in rust and just focus on audio samples without thinking about race conditions.

1 Like

Hi Everyone,

I’m a creative coder (C++, Python, Swift, JS, Java) who is new to Rust, but have been exploring Nannou as a means to get into Rust and DSP coding. I’m also a PhD student in Australia creating new systems for music generation and seeking to use Rust/Nannou in my research work.

Looking forward to diving into this community!

j // lys

1 Like

Hi all,

I found this community through the RustFest Barcelona talk - " Amp Up Web Audio Applications with Rust and WebAssembly" by Niklas Reppel. Amazing talk, Niklas!

I’m a Ruby / Rust / C# developer and have always been fascinated with audio programming, albeit I’m completely new to it. I currently help out with the Nushell Rust project and would consider myself somewhere between a beginner to intermediate Rust programmer despite writing it on and off for the past 3 years.

My interest in audio has been since early childhood. I primarily play drums, but I play bass and guitar as well. A side hobby/business of mine is repairing and building vacuum tube amplifiers and building analog synthesizers, I enjoy the hardware side just as much! If you’re interested in building your own analog synths, I recommend Music from Outer Space

I know there is A LOT to learn when it comes to audio synthesis, so thank you for creating this group!

1 Like