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 🙏

© 2026 – Pkg Stats / Ryan Hefner

supersonic-scsynth

v0.40.0

Published

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

Readme

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

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

Back in the late 90s James McCartney designed a series of live audio programming environments called SuperCollider. These were systems with both programming languages and audio runtimes carefully designed for live realtime modification at every level - from high sweeping programming language abstractions all the way down to the fine control of the low-level synthesis components of the audio chain.

One of the many gifts from this work is scsynth - the core synthesis engine James created for version 3 of SuperCollider. It was at this point when he formally separated the language from the synth engine.

This split made it possible to combine scsynth's powerful audio synthesis capabilities with any existing - or yet to exist - programming language.

This then led to a suite of powerful new live coding languages using scsynth for audio synthesis.

What if you didn't just bring your language to scsynth? What if you brought scsynth to your environment?

This is SuperSonic. All the synthesis power of scsynth - modified and augmented to run in your web browser.

Welcome to SuperSonic

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

Highlights:

  • AudioWorklet - runs in a dedicated high priority audio thread
  • WebAssembly - scsynth's original C++ code compiled for the web
  • OSC API - talk to the scsynth server through its native OSC API
  • Zero Config via CDN - no installation necessary - works directly from CDNs such as unpkg.
  • Optional SAB mode - can use a SharedArrayBuffer (SAB) for lower latency and reduced jitter with internal comms. Requires COOP/COEP headers to enable browsers to use the SAB

Demo

Try the live demo: sonic-pi.net/supersonic/demo.html

Getting Started

CDN Usage

<script type="module">
  import { SuperSonic } from 'https://unpkg.com/supersonic-scsynth@latest';

  const sonic = new SuperSonic({
    baseURL: 'https://unpkg.com/supersonic-scsynth@latest/dist/',
    sampleBaseURL: 'https://unpkg.com/supersonic-scsynth-samples@latest/samples/',
    synthdefBaseURL: 'https://unpkg.com/supersonic-scsynth-synthdefs@latest/synthdefs/',
  });
  await sonic.init();
</script>

npm / Bundler Usage

import { SuperSonic } from 'supersonic-scsynth';

const sonic = new SuperSonic({
  baseURL: '/assets/supersonic/'  // Where you serve the WASM/workers
});

Configuration Options

| Option | Description | |--------|-------------| | baseURL | Base path for all assets (convenience shorthand) | | coreBaseURL | Path to WASM and workers (overrides baseURL) | | wasmUrl | Direct URL to scsynth-nrt.wasm | | workletUrl | Direct URL to audio worklet JS | | sampleBaseURL | Path to sample files | | synthdefBaseURL | Path to synthdef files | | mode | 'sab' or 'postMessage' - transport mode (defaults to 'postMessage') - see Modes |

For the full list of configuration options, see the API Reference. For installation options see the Installation Guide. Once installed, head to the Quick Start to make your first sound.

Communication Modes

SuperSonic supports two communication modes: postMessage (default, works everywhere including CDNs) and SAB (SharedArrayBuffer, lower latency but requires server headers).

See Communication Modes for details on choosing a mode, server configuration, and technical implementation.

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

SuperSonic uses a tiered licensing model - see LICENSE for details.

| Package | License | Contains | |---------|---------|----------| | supersonic-scsynth | MIT | Client API | | supersonic-scsynth-core | GPL-3.0-or-later | WASM engine + workers | | supersonic-scsynth-synthdefs | MIT | Synth definitions | | supersonic-scsynth-samples | CC0 | Audio samples |

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!