npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

supersonic-scsynth

v0.15.0

Published

SuperCollider scsynth WebAssembly port for AudioWorklet - Run SuperCollider synthesis in the browser

Readme

Note: Alpha Status: SuperSonic is in active development. The API may evolve, but the core synthesis engine is solid and ready for experimentation. Feedback and ideas are most welcome.

░█▀▀░█░█░█▀█░█▀▀░█▀▄░█▀▀░█▀█░█▀█░▀█▀░█▀▀
░▀▀█░█░█░█▀▀░█▀▀░█▀▄░▀▀█░█░█░█░█░░█░░█░░
░▀▀▀░▀▀▀░▀░░░▀▀▀░▀░▀░▀▀▀░▀▀▀░▀░▀░▀▀▀░▀▀▀

SuperSonic - SuperCollider's powerful audio synthesis engine scsynth running in the browser as an AudioWorklet.

  • AudioWorklet - runs in a dedicated high priority audio thread
  • WebAssembly - scsynth's C++ code compiled for the web
  • OSC API - talk to the scsynth server through its native OSC API

Try the live demo

Getting Started

Injecting the full power of SuperCollider's scsynth audio engine into your browser is simple.

Import SuperSonic and initialise it:

import { SuperSonic } from "supersonic-scsynth";

const baseURL = "/supersonic"; // Configure for your setup
const supersonic = new SuperSonic({
  workerBaseURL: `${baseURL}/workers/`,
  wasmBaseURL: `${baseURL}/wasm/`,
  synthdefBaseURL: `${baseURL}/synthdefs/`,
  sampleBaseURL: `${baseURL}/samples/`,
});
await supersonic.init();

Load and play a synth:

await supersonic.loadSynthDef("sonic-pi-prophet");
supersonic.send("/s_new", "sonic-pi-prophet", -1, 0, 0, "note", 60);

Load and play a sample:

await supersonic.loadSynthDef("sonic-pi-basic_stereo_player");
await supersonic.loadSample(0, "loop_amen.flac");
supersonic.send("/s_new", "sonic-pi-basic_stereo_player", -1, 0, 0, "buf", 0);

Take a look at example/simple.html for a minimal working example.

Installation

Grab the latest pre-built distribution and host it on your server:

curl -O https://samaaron.github.io/supersonic/supersonic-dist.zip
unzip supersonic-dist.zip

Or install via npm:

npm install supersonic-scsynth-bundle

Note: SuperSonic must be self-hosted due to browser security requirements around SharedArrayBuffer. It cannot be loaded from a CDN. See Browser Setup for the details.

Documentation

Support

SuperSonic is brought to you by Sam Aaron. Please consider joining the community of supporters enabling Sam's work on creative coding projects like this, Sonic Pi and Tau5.

License

GPL v3 - This is a derivative work of SuperCollider

Credits

Based on SuperCollider by James McCartney and the SuperCollider community. This AudioWorklet port was inspired by Hanns Holger Rutz who started the first port of scsynth to WASM and Dennis Scheiba who continued this work. Thank you to everyone in the SuperCollider community!