Sema – Live Code Language Design Playground
Sema is a playground where you can rapidly prototype live coding mini-languages for signal synthesis, machine learning and machine listening.
Sema aims to provide an online integrated environment for designing both abstract high-level languages and more powerful low-level languages.
Sema implements a set of core design principles:
-
Integrated signal engine – There is no conceptual split between the language and signal engine. Everything is a signal.
-
Single sample signal processing – Per-sample sound processing for supporting techniques that use feedback loops, such as physical modelling, reverberation and IIR filtering.
-
Sample rate transduction – It is simpler to do signal processing with one principal sample rate, the audio rate. Different sample rate requirements of dependent objects can be resolved by upsampling and downsampling, using a transducer. The transducer concept enables us to accommodate a variety of processes with varying sample rates (video, spectral rate, sensors, ML model inference) within a single engine.
-
Minimal abstractions – There are no high-level abstractions such as buses, synths, nodes, servers, or any language scaffolding in our signal engine. Such abstractions sit within the end-user language design space.
Dependencies
Sema requires the following dependencies to be installed:
- Chrome browser or any Chromium-based browser (e.g. Brave, Microsoft Edge, Opera)
- Node.js version 8.9 or higher
- Yarn OR NPM cli
How to build and run the Sema playground on your machine
If you decide to go with Yarn (our prefered package manager), use:
cd sema
yarn
yarn build
yarn dev
If you decide to go with NPM instead, use:
cd sema
npm install
npm run build
npm run dev