Rust Audio

Welcome & Introductions

I’m a UX specialist/product designer with a background in software development (Java, C/C++). I fell in love with Rust and the community around 2 years ago, and since then have wanted to use it for audio/creative programming type stuff.

I’ve been using SuperCollider for over 10 years. Also do a fair bit of sound design with soft synths. I play piano reasonably, and have been taking composition lessons for a few years from a local PhD student. The little free time I have (three kids, yada, yada) tends to go towards music, not audio development. But I do want to get more into DSP/audio stuff to overcome my frustrations with the limitations of SuperCollider. Currently I’m focusing on strengthening my maths.

My dream is to make a “SuperCollider v 2.0” in Rust. SuperCollider is great, but has a number of limitations*. It’s good to have dreams…

Anyway, if anyone is also struggling through Julius O Smith’s DSP books and wants to discuss things, I’m open to it.

Cian

  • Limitations include: no oversampling, no single sample audio graphs, control signals aren’t sample accurate, UGens acn’t be hotloaded and have to be written in rather primitive C/C++. Plus the language itself is showing it’s age.
3 Likes

I’d be interested in starting a book club! I haven’t read any of his stuff yet though.

2 Likes

Howdy y’all. My name is Nick, and I’m a Dev currently residing in Arkansas. I got a BA in music, with an emphasis on digital music and composition. I took a looong time to graduate because of a few reasons, but one of them was that I was having so much fun making music in the school’s studio that I kept dropping courses :joy:. Here’s a few tunes:

  • Mad Ship for a friends video game final project.

  • Nice Guy I did the sound-design and music for this piece (it was after I graduated, probably my most elaborate piece). Warning, the video’s content is a little disturbing (its just text though, no disturbing imagery).

Both of these pieces are composed using Just intonation (except for the piano in Nice Guy). At the end of school I became very fascinated by pure harmonies that follow the overtone series, and spent a lol of time tuning synths via automation in Reason trying to get MIDI pitch bend to do what I wanted. It worked, but was very painful. This lead me to learn Max/MSP and PureData to make some [experiments](soundcloud . com/nickgideo/crystal-growth) using ratio-based tuning and rhythms.

Its been a really long time since I’ve made music. The last 5-6 years I’ve been completely dedicated to becoming a software developer, so I’ve spent all my time obsessing over learning that stuff. I think part of our industry really encourages everyone to have their own personal software project that they can show off on github or turn into a product, so for the longest time I’ve been trying to figure out what mine would be. Last summer I realized that it should be a music app that makes it easier to write ratio-based music. Eventually that lead me to JUCE, C++, hating C++, finding the Rust community, and now I’m here.

I hope to help the Rust Audio scene mature a bit, but I feel like I need to keep one foot in the C++ community too, since all of their tools are battle tested and very feature complete. I may end up making a hybrid product, but who knows?

2 Likes

Hello everyone!

I am Janonard, an informatics (aka “computer sciences”) student, programmer and Bass player.

My programming “career” began with Java when I was about 12: I heard that you could control computers, those marvelous machines of wonder, using programming and thought that this might be interesting. I borrowed a programming book in the local library and began coding. And never stopped! :smile: Soon, I also discovered Linux and C++ and got into “deep” programming. Then, I heard about Rust, tried it and stuck with it!

Meanwhile, I was starting to get into music too: My instrument of choice is the electric bass, 'cause I like it when the ground vibrates! About two years ago, those two hobbies started to meet and I got into audio processing. My current project is an adaptation of LV2 for Rust called lv2rs.

That’s a rough overview about me, let’s have some discourse!

6 Likes

Great to have you here @Janonard!

We currently have a #ecosystem:vst category for our vst crate. Would you be opposed if I made an #ecosystem:lv2rs crate as well? You could host conversations about its development and questions here (unless you would prefer to go with another route).

In either case, we are talking about creating a more high-level library for plugin development and it would be super cool to have lv2 support.`

1 Like

Hello everyone !

I’m Karolis, while not studying or working I like to play with sounds :slight_smile:
I’ve been playing around with real-time audio synthesis using Python, but quite soon realized that it’s not the right tool for the job. Rust seems like correct tool for the job. I’m quite novice in both DSP and Rust, but so far enjoy it a lot !

I’m glad I found this community, hopefully I will be able to contribute :slight_smile:

3 Likes

Hello there!

I just found about this little community from @Janonard’s post on /r/rust presenting his WIP LV2 framework!

I decided to join in the discussions because I was also working on a prototype for an LV2 framework (sorry in advance, it’s completely undocumented!), and I believe we can join forces and share designs and ideas in here! :slight_smile:
I won’t say much about it since it would be off-topic here, but I would gladly talk about it at length in a dedicated topic!

As for my development background, I originally started with a C/C++ background (I loved learning all about them low-level details!), then built a variety of both OSS and proprietary projects using BASIC, PHP, Java, C#, Javascript, and probably some others I forgot.
Right now I am professionally working with Ruby, TypeScript and Elixir, and now I’m looking forward to adding Rust to that rather wild list! :wink:

Development-wise, what interests me the most is software and general API design and architecture, and with that Rust is a natural appeal thanks to its very rich type system, both allowing to create neat and clear-looking APIs, and express and enforce things other languages can only tell in documentation and run-time assertions.

It’s only been a bit since I seriously dabbled in music and audio though, in fact my first (working and somewhat complete) Rust program is a small real-time spectrum/FFT visualizer, which listens on a PulseAudio monitor stream to generate its visualization, which I made only because it’s fun to look at!

Coding aside, I am also trying out music production a bit, and being a Linux user for many years this naturally led me to use LV2-using tools (which despite being platform-agnostic, seems to be only popular in Linux-lands), mainly Ardour (DAW), Zyn-Fusion (Synthesizer), and the Calf suite (various utility plugins). With all that I believe I have a pretty decent grasp of the Linux audio ecosystem, their main issues and what Rust could do to fix some of them! :slight_smile:

Anyways, I think that’s enough of an introduction for now. ^^ I’m looking forward to discuss all those subjects at length, and also to share design ideas to make a great audio libraries for Rust!

3 Likes

Welcome!

Oh hey, I did something like that too a while back :slight_smile: I’m getting close to the point where I can put it into a VST, maybe that’ll be my first project with a GUI.

2 Likes

Oh, that’s neat! Mine isn’t really meant to be included in a plugin though, I made it only for the eye-candy. :stuck_out_tongue:

Also, as @doomy suggested, I would love to have an #ecosystem:lv2 category to further discuss how we could develop an LV2 crate!

2 Likes

A big Hello @Prokopyl from my side too!

1 Like

Please, go ahead! However, I don’t think that I’ll have the time to do moderation work!

Went ahead and made #ecosystem:lv2-rs (kept it the crate name). Don’t worry about moderation, this edition of discourse won’t let me name more mods :laughing:

Hi, my name is Christian, and I am an audio programming amateur and enthusiast.
I’ve been playing with audio programming since long ago, when I programmed kind of a tracker in GW-BASIC using the PC speaker. Along the time I’ve also played with all kind of software for music composition (Fast Tracker, Cubase, Cakewalk, Ableton Live, …), although I’m far from being a musician (even when I also took some piano lessons :-P).
I started to work on a synthesiser as an excuse to learn Rust for the first time several years ago, but never finished (although I plan to revive it at some point). I am the maintainer of the coremidi crate which is being used by the midir one, and recently started to work on a DAW engine with the aim of getting more familiarised with all the hard core details of audio programming (lock-free, no-allocations, synchronisation, …).
Right now, with Rust, I am in the phase where I don’t need to fight against the compiler and the borrow checker all the time, so I can focus a bit more on the business logic rather than the language. But I barely have free time to advance in my projects as much as I’d like.
Happy to join this community, and learn from all of you :wink:

4 Likes

Glad to have you - your work on the hero-* stuff looks really cool!

Hi, I’m Ken. Been hanging out on the Telegram chat since I tweeted at Raph Levien “Hey, what do I do about learning Rust for music?” and he sent a link over. I’m just on the tail end of a Data Science bootcamp in Python, at the beginning of a career change toward programming. I live in Toronto, so if anyone sees this and wants to meet up for a coffee, shoot me a message or a Tweet.

Musically I’ve been playing instruments since I was ~9 and have played a bunch (current strongest first): piano/synth, guitar, voice, trumpet, tenor sax, flute. Got into electronic music with FL Studio when I was about 12-13? Used Ableton and Renoise through my teens, Maschine/Logic in my early 20s. Now 27 and running Linux only, and I’d like to keep it that way if it doesn’t become too unreasonable. The Linux is probably the reason I’m here.

I’ve scored some films for people, directed some short films, edited a bunch of video, recorded location sound for film/video. Also very interested in VR, and would love to see some sort of crosspollination with VR and professional music creation/publishing.

3 Likes

Hi, I’m Nik!

I’ve been doing audio software for a while now in C++. Now I’m discovering Rust. The straightforward support for WASM seems interesting, amongst other features.

I recently made my first little apprentice piece that runs in the browser: https://github.com/the-drunk-coder/wasm-loop-player

When I’m not programming DSP stuff, I’m working on my own domain-specific language for live-coding music.

3 Likes

Awesome stuff! Glad to have you here

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