Elementary Audio: a modern platform for writing high performance audio software

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • glicol

    Graph-oriented live coding language and music/audio DSP library written in Rust

  • ```

    Since Glicol uses Rust, WASM and SharedArrayBuffer, there is no GC, and support sample level control.

    I haven't checked the source code of your project, but since I know CodePen quite well, it looks like that you need to add SAB, although it requires CORS during deployment.

    Also, I think it may need more consideration to promote it with "Write once, run anywhere" at this stage. For example, how about Teensy? For Glicol, although it has POC to show that it can run as VST or on Bela board (https://github.com/chaosprint/glicol), there are still a long way to go.

    If I would be to promote Elementary Audio, I would call it a Tone.js alternative. How do you think?

    All being said, I think it is very exciting to see a new project in audio community. Good luck and please feel free to discuss more.

  • supercollider

    An audio server, programming language, and IDE for sound synthesis and algorithmic composition.

  • That supercollider/scsynth wasm thing was actually what I was thinking about. Unfortunately the implementation is still in a fork and hasn't been merged upstream. [1],[2]

    Thanks for the other links, sema-engine was new to me and not in my original investigation. I think I skimmed over Maximilian but it is probably worth a closer look.

    One of the benefits of csound/supercollider in my mind are their existing communities and the number of available open source modules. I've seen entire repos full of .scd definitions which would give any project starting with supercollider as its engine a big head start. The main downside is the esoteric languages these projects tend to use, which is why I think there are so many projects that build on top of it. This is one of the benefits of the client/server model I suppose.

    I also agree that this whole area is full of different philosophies. At the low end you have straight DSP kind of stuff which is mostly floating point buffer manipulation, FFTs/convultions, etc. and at the other you have sequencers, scale pattern generators and composition tools. And of course the live performance aspect comes into play. I'm very excited to see where it all is going to end up.

    1. https://github.com/supercollider/supercollider/issues/5224

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • wasgen

    Web Audio sound generator

  • Yes, managing webaudio nodes is pretty hellish. If you're interested I maintain a small library for abstracting them - basically you pass the library an object describing what oscillators and filters you want, and what timing envelopes you want attached to their params, and then the library creates and destroys everything. It has no concept of plugins or processing, but it makes it convenient to play around with arbitrary configurations of basic nodes.

    The library is here: https://github.com/fenomas/wasgen

  • elementary

    Discontinued A JavaScript runtime for writing native audio applications, as well as a library and framework for composing audio signal processes. (by nick-thompson)

  • website

    The elementary.io website (by elementary)

  • Just a heads-up that I could see both the project name and specifically the domain causing some confusion with the pre-existing ElementaryOS project (whose domain is https://elementary.io).

  • sema-engine

    A Signal Engine for a Live Code Language Ecosystem

  • Maximilian

    C++ Audio and Music DSP Library

  • https://github.com/micknoise/Maximilian

    For those language you mentioned csound, supercollider, Chuck, I think these languages focus more on different music programming philosophy. Of course, SC is probably the most famous for reusing its audio engine for other high-level langs like the Tidal, Sonic Pi you mentioned. Also, SuperCollider's scsynth can run in browsers now:

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • avendish

    declarative polyamorous cross-system intermedia objects

  • react-juce

    Write cross-platform native apps with React.js and JUCE

  • It's probably helpful to have some background context for the development of this

    The author of this library is also the author of the React JUCE renderer. It's a toolkit that re-uses React Native's rendering engine to allow you to use JS and React to render JUCE components:

    https://www.nickwritesablog.com/blueprint-a-juce-rendering-b...

    https://github.com/JoshMarler/react-juce

    So at this point, you have a (presumably) C++ JUCE app that is using JS/TS to render the UI. Why not work to move DSP stuff into JS as well, so that you're gluing minimal bits of C++ together?

    It's not a far leap from there to here when you follow this down the road.

  • JUCE

    JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.

  • dasp

    The fundamentals for Digital Audio Signal Processing. Formerly `sample`.

  • fundsp

    Library for audio processing and synthesis

  • - https://github.com/SamiPerttu/fundsp

    Check this video, you can even live coding audio effect in DAWs with Glicol:

  • vst3sdk

    VST 3 Plug-In SDK

  • You have to use the steinberger SDK to make a vst

    https://github.com/steinbergmedia/vst3sdk

    But audio plugins come in many formats.

  • vst-rs

    Discontinued VST 2.4 API implementation in rust. Create plugins or hosts. Previously rust-vst on the RustDSP group.

  • I agree with the first half. For the second half, I think for beginners, the examples are very important. From this perspective, many Rust projects comes with examples:

    https://github.com/RustAudio/vst-rs

    Once following the readme, it is very easy to get it work in your own machine. Then beginners can edit things while learning new stuffs with books or online resources.

    Rust audio has also got a very helpful Discord community where beginners can always ask questions.

    For the GUI part, I am not an expert, but there are more and more Rust GUI libraries (egui, iced, druid, rui): among them, egui-rs and iced-rs can all be used for VST. Still, there are some examples to get started with.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts