SuperCollider 4: First Thoughts

Hi, just seeing all this now, so I’ll give my 2c

(And apologies if this comes off as harsh - please understand that it’s coming from a place of love and deep respect for this project. I wouldn’t have spent 10 years writing a language client if I didn’t love SC.)

  • Unpopular opinion: in the current year, music programming is not boutique enough to deserve a boutique language solution. It’s self-congratulatory and self-defeating. I understand why sclang first arose, but times have changed - the original conditions IMHO no longer apply.

  • Stop designing languages. Language design is a rabbit hole, and the knock-on effects of writing a language from scratch are an endless burden: need to roll your own package manager, unit test framework, documentation system, etc.

  • Design libraries for existing language(s). Reap the benefits of all the other work that has already gone into making those languages (and their accompanying tool chains and package ecosystems) tick. If you need to, design clean generic language bindings and APIs so other languages can interact with your C-level code and/or synthesis server.

  • Please please pick a boring, widely adopted language (or languages) as your initial proving ground. I know Haskell / Scala / Elixir / Clojure are compelling, but they’re all also relatively boutique compared to Node or Python. I’ve been working in academia and industry for nearly 20 years and I rarely see these languages pop up except in boutique situations. They do not have the same extensive ecosystems as big name languages, and you will end up doing more work than you want to fill in the gaps.

While it’s true, I am a big fan of Python, for my money I would tell you to look into Node first. Massive adoption. Massive ecosystem. Good concurrency / async support. Can be pithier than Python (see Node’s lambda syntax). Tool chains support transpiling (as I doubt the SC community can fully give up language catnip). And it’s very often the first language people learn now.

Throwing your weight at Node or Python would be a huge blood transfusion given how many people know those languages.

Don’t put yourself onto an iceberg. Every new thing to learn is a cognitive burden on the student. Understanding scsynth’s core concepts is already a big task - we don’t need to make using them harder by requiring an entirely new language just to work with them.

Love, Joséphine (she/her)

PS: I’m transitioning, and trying to get my username changed here. Fingers crossed, one of the mods sees my email about it.

7 Likes