tamlyn / elementary

Fork of Elementary repo with some customisations

Home Page:https://www.elementary.audio/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Elementary Audio logo

CI Status PRs Welcome License Discord Community


Elementary is a JavaScript/C++ library for building audio applications.

  • Declarative: Elementary makes it simple to create interactive audio processes through functional, declarative programming. Describe your audio process as a function of your application state, and Elementary will efficiently update the underlying audio engine as necessary.
  • Dynamic: Most audio processing frameworks and tools facilitate building static processes. But what happens as your audio requirements change throughout the user journey? Elementary is designed to facilitate and adapt to the dynamic nature of modern audio applications.
  • Portable: By decoupling the JavaScript API from the underlying audio engine (the "what" from the "how"), Elementary enables writing portable applications. Whether the underlying engine is running in the browser, an audio plugin, or an embedded device, the JavaScript layer remains the same.

Getting Started

Every Elementary application starts with the @elemaudio/core package (npm, source), which provides the framework for defining your audio processes and a generic set of utilities for performing the graph rendering and reconciling steps.

Next, because Elementary is designed to be used in a number of different environments, there are several different ways to integrate. If you're new to the project, we recommend starting with one of the following workflows to get the feel of working in Elementary:

Once you're comfortable with the basics, you can dive deeper into integrating and extending Elementary with your existing stack:

  • Try the small command line tool here in this repository to explore an example native integration
  • Check out the Native Integrations guide for embedding Elementary's C++ engine in your own native code
  • Read the Custom Native Nodes guide for extending Elementary's built-in DSP library with your own low-level processors

Documentation

You can find the Elementary documentation on the website, or if you like, you can jump straight into:

If you need help, join the community on the Elementary Audio Discord and ask any questions you have!

Contributing

We'd love to get you involved! Right now, the primary focus is to promote and grow the Elementary community. So if you want to help, consider:

  • Making an open source project with Elementary, like this one or this one
  • Writing your own higher-level modules and sharing them on npm, like this
  • Writing your own custom native nodes to extend the engine and sharing them on GitHub

If you're more interested in digging in under the hood, check out the open issues to see where we need help right now. Note that while we're focusing on the community around Elementary, the immediate goals in this repository are ease of use, extensibility, and performance. We will likely be careful and slow to add new features, so if there's a particular feature you want to see here, please open an issue to start a conversation around your proposal first.

License

Elementary is MIT licensed.

About

Fork of Elementary repo with some customisations

https://www.elementary.audio/

License:MIT License


Languages

Language:C 73.1%Language:C++ 24.4%Language:TypeScript 1.3%Language:JavaScript 0.8%Language:ReScript 0.2%Language:CMake 0.1%Language:Shell 0.0%