- C++ 91.8%
- SuperCollider 5.1%
- C 1.9%
- CMake 0.4%
- Python 0.2%
- Other 0.2%
* add wasm option to sclang cmake rename yaml to yaml-cpp use force on sclang_server off force static plugins and no x11 for wasm build mount class library into wasm binary refactor sclang_sources definition to incorporate emscripten build increase default wasm stack size for sclang * patch sclang network stack for wasm wasm has no socket access, so anything socket related will be removed for the wasm build * patch NetAddr primitives for wasm wasm has no network stack. in order to keep existing code working, the primitives will simply do nothing. default ip address is 127.0.0.1. * add wasm platform architecture primitive * make canCallOS depend on if default thread is main thread normally language clients execute code in their main thread. this is not the case for the wasm lang client b/c it could freeze the browser tab, yet the AppClock needs to run on the main thread, so a flag was added to indicate on which thread this runs. * make sclang main method a noop for wasm sclang gets booted through a function call in wasm * introduce USE_STD_ASYNC definition to avoid boost thread pool replaces _MSC_VER guard such that emscripten can also use std::future the boost thread pool does not work for some reason on emscripten. * remove DiskOut SynthDef on wasm DiskOut plugin is not available, so it has to be removed from the default synth defs * add wasm platform files in class library overwrites are replacing the unix cmd startup of scsynth with a JS call. Also introduces the JS class to run JS code from within sclang Defaults to a reduced default memSize for wasm server. Enforce running JS code on the main thread * load wasm platform class library folder this decides which platform folder gets included during compilation. since the wasm build is otherwise close to unix, this has not been put in its dedicated class. * skip osc init on wasm of language client network stack gets replaced by a JS I/O wrapper on wasm * add wasm language client instead of a traditional terminal client, wasm is exposing the I/O via javascript. any osc messages are also passed via javascript. run AppClock on main thread and use try_lock in order to not block on the main thread enforce running JS code on the main thread * add pre-js file for sclang wasm this exposes a type-hinted and documented high level api via JS * add sclang wasm demo website provides an example and a way to test the sclang wasm build * init editor the editor is a mockup of the sc IDE for the browser. it demonstrates how sclang and scsynth can exchange osc data. * cmake: make webosc a dedicated library * build web editor as wasm target in ci * add sclang to wasm readme also add debugging notes * add wasm support and info in readme * use try for invoking module methods this makes sure we do not leak memory in case the function raises an exception * add simple sclang spinup and eval test for wasm build |
||
|---|---|---|
| .github | ||
| .vscode | ||
| cmake_modules | ||
| common | ||
| editors | ||
| examples | ||
| external_libraries | ||
| HelpSource | ||
| icons | ||
| include | ||
| lang | ||
| langutils | ||
| package | ||
| platform | ||
| QtCollider | ||
| SCClassLibrary | ||
| SCDoc | ||
| server | ||
| sounds | ||
| testsuite | ||
| tools | ||
| vcpkg/triplets | ||
| .clang-format | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitignore | ||
| .gitmodules | ||
| .pre-commit-config.yaml | ||
| AUTHORS | ||
| build_sclang.cfg.in | ||
| CHANGELOG.md | ||
| CHANGELOG_archive.md | ||
| cmake_uninstall.cmake.in | ||
| CMakeLists.txt | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| COPYING | ||
| DEVELOPING.md | ||
| INSTALL | ||
| README.md | ||
| README_BELA.md | ||
| README_LINUX.md | ||
| README_MACOS.md | ||
| README_RASPBERRY_PI.md | ||
| README_WASM.md | ||
| README_WINDOWS.md | ||
| SCVersion.txt | ||
| vcpkg.json | ||
SuperCollider 
SuperCollider is a platform for audio synthesis and algorithmic composition, used by musicians, artists, and researchers working with sound. It consists of:
- scsynth, a real-time audio server with hundreds of unit generators ("UGens") for audio analysis, synthesis, and processing
- supernova, an alternative server to scsynth with support for parallel DSP on multi-core processors
- sclang, an interpreted programming language that controls the servers
- scide, an editing environment for sclang with an integrated help system
sclang comes with its own package manager, called Quarks. scsynth and supernova both support third-party plugins via C and C++ APIs.
SuperCollider is written in C++17 using several third-party libraries, including Qt and Boost. It can be used on Windows, macOS, a variety of Linux and BSD distributions, Raspberry Pi, the Bela platform and the browser via WebAssembly.
The online documentation of the development version is available via dev.docs.supercollider.online.
Install
macOS and Windows builds for stable releases are provided at our downloads page. See the macOS README and Windows README for instructions on usage, and how to build SC yourself.
To get the latest stable version, Linux users will need to build SuperCollider themselves or use the Flatpak build. See the Linux README for instructions.
See the Raspberry Pi, Bela and WebAssembly READMEs for instructions on building on those platforms.
Platform support
SuperCollider is tested with:
- Windows 10 64-bit and MSVC 2022
- macOS 15 and Xcode 15.2
- Ubuntu 26.04 and gcc 16
SuperCollider is known to support these platforms:
- Windows 10, 11
- macOS 12-15, 26
- Ubuntu 22.04-26.04
- WebAssembly
SuperCollider has guaranteed support for:
- Windows 10, 11
- MSVC 2022, 2026
- macOS 15, 26
- Xcode 16, 26
- Debian >= 11
- Ubuntu 24.04, 26.04
- Fedora 40-44
- Arch Linux
- gcc >= 13
- clang >= 18
- Qt >= 6.2
There is still limited support for Qt 5.15. Further details are described in README_MACOS.md.
For more information on platform support guarantees, see the project Wiki.
Learn
The official docs can be viewed in the SuperCollider IDE's built-in documentation browser. You can also view them online at doc.sccode.org.
We recommend the following resources for learning SC:
- A Gentle Introduction to SuperCollider, a free ebook by Bruno Ruviaro
- Eli Fieldsteel's video tutorials
- Getting Started with SC
- Nick Collins' SC tutorial
- SCCode.org, a repository of user-submitted examples
Discuss
You can join our forum at scsynth.org or our Slack channel.
You can also view the archives for the old mailing lists at sc-users and sc-dev.
Please read our adopted code of conduct, which applies to all the above communities.
Contribute
Development of SuperCollider happens here on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving SuperCollider.
Code of Conduct
Please read our adopted code of conduct before contributing, so that you can understand what actions will and will not be tolerated.
Contributing Guide
Read our contributing guide to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes.
Good First Issues
To help you get your feet wet and get you familiar with our contribution process, we have a list of good-first-issues that contain bugs which have a relatively limited scope. This is a great place to get started. You can also ask on our developer's mailing list, on Slack, or on the forum.
License
SuperCollider is free software available under Version 3 the GNU General Public License. See COPYING for details.