It's time to simplify the way we write audio software

Elementary is a JavaScript framework and high performance audio engine that helps you build quickly and ship confidently.


A fundamentally different way to write audio software

Elementary brings the functional, reactive programming model to a world dominated by imperative, object oriented code. That means faster development, simpler code, and unimpaired creativity.


Elementary makes it simple to create interactive audio processes. Declarative composition means describing the "what" of your audio process, and leaving Elementary to figure out the "how."


Functional programming offers an intuitive lens for thinking about your signal flow, and produces highly reusable components that trivially compose to make complete applications, all in JavaScript.


One language, one paradigm, no hidden complexity: no need to learn a dedicated language for your DSP while using a different language and workflow for the rest of your app.


The Elementary core engine is built for portability, from audio plugins to web applications, desktop applications to embedded devices. Write once, run anywhere.


Designed with an understanding that modern applications need dynamic behavior, Elementary seamlessly adapts as things change, making only minimal and precise changes to the underlying audio engine.


The framework is growing fast with new features and improvements, and our community is growing faster. Come along for the ride, let's be a part of the future of audio software together.

Arpeggi Labs Logo

“Our Elementary-based audio engine is the secret sauce of our entire DAW. Our app is now lightning-fast, and thanks to the reactive approach and the fantastic documentation, our audio engine code is dead simple to maintain and upgrade, even for devs with no DSP background.”

Kyle Dhillon Avatar Image
Kyle Dhillon
CTO, Arpeggi Labs


Frequently asked questions

A collection of short answers to commonly asked questions. Have a question that you don't see here? Join our Discord community and ask away!

Why JavaScript?
Besides being among the most widely used languages in the world, JavaScript is the language of the web at a time when audio software is beginning to embrace the web platform. Moreover, JavaScript has revolutionized the way we write application interfaces, and pioneered one of the best developer experiences in the industry.
How can JavaScript possibly be fast enough for this?
Elementary uses JavaScript only to describe audio processes, not execute them. This description uses a lightweight virtual representation for which JavaScript excels. The audio process execution is handled in the underlying realtime audio engine, which is compiled specifically for each target platform: native MacOS, Windows, or Linux, and WASM.
What about latency?
Elementary's realtime audio engine has zero added latency overhead because it does not execute JavaScript itself. Elementary therefore operates with the same latency as its host, whether that's an audio plugin, a native audio driver, or a WebAudio node in a web browser.
What about bottom line performance?
Because Elementary's realtime audio engine uses a generalized rendering algorithm, it can surely be outperformed on a case by case basis using handwritten native code highly specialized for the target application. This is a known tradeoff; Elementary aims to provide an extremely fast solution for the general case, alongside a significantly faster development experience.
Why not Faust, SuperCollider, PureData, ChucK, ...?
There are plenty of existing tools in this space that are great for experimenting and prototyping, but not for shipping final products. Even those tools with formal export options leave a lot to be desired in the way they embed into and interoperate with your application. Elementary enables a unified workflow and a first class integration with your application.
Why do any of this at all?
The current development process and workflow for writing audio software has stagnated; it takes so much time to turn a prototype into a product because we regularly accept complexities and limitations that we no longer need to accept. Elementary offers a new way of prototyping, developing, and shipping those products more easily and more quickly.

Sign up for our newsletter

Stay in the loop with regular but infrequent updates about the framework, company, and community.