I’d like to present a work-in-progress set of tools for writing SuperCollider server plugins. In general I think the experience of setting up a server plugin project can be really frustrating and tedious if you’re not familiar with CMake. I’ve been working on these for about two weeks and I think they’re ready for more general consumption now. If you’ve written UGens before, or are interested in writing UGens please give this a go and let me know how it works for you!
- CMakeLists.txt for free
- Boilerplate C++ and .sc plugin code for free
- Stub .schelp file for free
- AppVeyor & Travis-CI scripts for free (build & test on Windows, MacOS, Ubuntu)
- Automatically upload releases for free (whenever a new tag is pushed)
- Command to regenerate CMakeLists.txt for free whenever you add more plugins (i.e., you should never have to touch any CMake at all, ever)
All you have to do to try it is:
Install Python 3 if you don’t have it already
Install the cookiecutter package (it’s available via pip)
Get the branch of SuperCollider that has my setup scripts in it. If you’ve already cloned the SuperCollider source somewhere, all you need to do is this:
git fetch https://github.com/brianlheim/supercollider topic/cmake_gen
git checkout FETCH_HEAD
If you haven’t cloned it before, do this first:
cd path-where-sc-should-live git clone --recursive https://github.com/supercollider/supercollider cd supercollider
Note that you don’t need to build SuperCollider to try this out!
Run cookiecutter on the repo:
Here’s an example of what it produces: https://github.com/brianlheim/simplegain. You can even download the release binaries from https://github.com/brianlheim/simplegain/releases and test out the plugins right now!
The main project consists of a cookiecutter repository and some scripts that I’d like to track in the main repo; cookiecutter is a Python package that lets you quickly set up a project from a template by answering a few simple customization questions. (Thanks to Scott Carver for the recommendation!)
I just opened up a PR for adding the scripts to the main SuperCollider repo here: https://github.com/supercollider/supercollider/pull/4055.
Thanks for reading!