SuperCollider 4: First Thoughts

My bad. I went crazy unpleasantly toxic there. It is me who should apologize. I am sorry. Truly.

It’s bananas hard, but so rewarding when you get through the first hurdles. If only i would have had access to something like the tutorials of Eli Fieldsteel back then (:

edit: inserting this on topic.

top problems for me with SC.

  • Documentation and code examples.
  • GUI GUI GUI.
  • Pdefs, I would love to use them but… solve it with other routines.


Lukiss, Bad, lukiss.

An interesting point is that every year we see lots of new languages designed for live coding arriving, but none of them has replaced sclang. However they find enormous usability and communities are built around them, because they serve really well for live coding.

Languages for “scripting” MAX and Pd have also appeared, but it does not seem that they will take off in the same way sclang did. We can also say the same about languages that somehow compete with sclang, trying to fulfill almost the same paradigm, like Chuck, Csound, Kyma… It seems that sclang found a niche that no other language could occupy…

The explanation for the longevity of SuperCollider also seems to be a merit of sclang, as recently the amount of dsp resources available in the integration of MAX/Ableton Live surpasses scsynth in lots of aspects (RNBO, DAW, GUIs, Jitter, etc).

Will the SAPF (sound as pure form, new language being developed by James McCartney) replace sclang? I don’t think so, it seems to be more like a promising alternative live coding environment for sclang.

It should also be said that no one was able to come up with a general, flexible and handy high level language for controlling graphics and video. If you complain about the amount of boilerplate code needed to run simple task in sclang, try to plot several different oscillators in Processing or OpenFrameworks and you will see how good is for an artist to interact directly with C++, Java and Python. GLSL? From a creative coding perspective, I am not sure if you can call that high level, although all of its enormous qualities. How I wish to see an sclang for visuals…

1 Like

I agree and that’s something I have been thinking about for some time

Some things I really like about sclang:

  • very succinct closure syntax
  • array operations
  • function composition
  • almost arbitrary operator overloading
  • symmetric coroutines
  • named arguments
  • duck typing

So far I haven’t found another language that ticks all these boxes. I am mostly familiar with mainstream languages (C, C++, Python, JS, Java, C#, Lua) and none of them come even close to the expressiveness of sclang. On the other hand, I haven’t looked too much in the functional realm yet. Any pointers are highly welcome!

Recently I have been interested in Squirrel (Squirrel 3.2 Reference Manual — Squirrel documentation 3.2 stable documentation) as a kind of more expressive and less quirky alternative to Lua. In particular, the built-in “map” and “reduce” functions for arrays and the succinct lambda syntax look very promising: 2.8. Functions — Squirrel documentation 3.2 stable documentation
But then again: no named arguments, no function composition, limited (built-in) array operations, limited operator overloading, etc.


Now some things I don’t like about sclang:

  • variables need to be declared at the top of a function body
  • classes need to be compiled and class files are treated differently from “ordinary” code
  • no module system and no obvious way to structure larger programs
  • no operator precedence
  • can only return at the end of a function
  • no C API for extensions
  • baroque class hierarchy
  • bugs :slight_smile:

And let’s not forget the elephant in the room: sclang (the language, not the Class Library) is practically unmaintained; only few people are familiar with the code base. One big advantage of picking an “existing” language is that there is a much larger bigger community behind it.

4 Likes

ragarding sclang I thought this GitHub - hadron-sclang/hadron: drop-in jit replacement for sclang was promising… still alive @lnihlen ?

1 Like

I think Lucile is not working on this anymore, but I’m leveraging a few pieces of this for the sclang language server / code formatter.

2 Likes

I started coding in SC only few months ago and so probably my opinion is both not mature enough and unbiased but, I have to admit that I ended up loving SC, mainly thanks to sclang, even more than for the audio engine (that is brilliant).
I have been using Pd for years, I know Max, worked with ChucK (that I quite like). I use Lua often (and I love it) and I do use Python a bit (and don’t like it) but, with the only exception of Lua and Pd (with the latter being a different beast though), nothing comes close to sclang in terms of “productivity”.
I see what people mean when they talk about being tricky to work on big projects in SC but, at the same time with 500 lines of code here one gets out what it takes 2-3 times the amount of code with even other high level languages (using their standard libraries).
Also, it made me discover Smalltalk, and Pharo to be precise, that I started studying a little bit recently.
It’s been awesome, to say the least. Programming with it is a joy, and learning it is making me understand and appreciate SC even more.
For what is worth, I don’t think there is anything out there that can replace sclang without some degree of compromise, and sclang itself honestly is not that difficult to learn. It is just different from the mainstream stuff, and thanks God for that!
I think having something like Python in place would make SC clunky and sterile compared to how it is now.
The real stumbling block is the library, that is huge and might be intimidating at first, and the versatility of the language.
That said, these are things that one appreciates with passing of time.
Anyway, just my 2 cents.

5 Likes

I think that sclang is more than any a practical language, it means that it has the posibilitty of plasticity, to check into less plan A, plan B etc… than other languages that offers not plasticity and practicity but complex systems construction; where plan A, to plan B offers a N-number of plans, for example (Maths; Bioinformatics; Astrorobotics; Nanotechnology; etc…); and sclang was thougth for music construction and not for abstract complexity tought.
For music sclang, for complexity I preffer C or C++.

First some housekeeping. I came out as a transgender woman. My new name is Lucile, pronouns are she/her.

I’ve been pinged a few times now here about Hadron, so I wrote a postmortem about the project here on the new blog: Hadron Postmortem — Lucile Nihlen.

Cheers.

14 Likes

Lucile, you work is amazing and vital for the community. I hope and support that you keep it up.

It is really sad to read things like: “I think some folks in our community are downright mean to each other in disagreement, and it’s frankly scared me away from the entire process”.

We have seen in the past several people complaining about the same thing. I think now is a productive time to think if SC should keep its development organization or if something should change…

I am not a dev, I am speaking as a outsider, but the main question that I seen on github is: is it better to maintain stability with long term committed people or to attract new devs that contribute for a shorter time?

I think the problem here is that there is no decision-making authority. Other languages break this logjam by empowering committees to revise the language standard. That could work for sclang too, but who would appoint the committee? What authority would they have?

Honestly, I guess it would be amazing if JMC could participate again on this. I am not sure about how much is he up to it, but I guess it would be a important thing for the whole community.

As part of the users community, I think that the only positive thing that we can do at the moment is to raise financial support for allowing devs to work on specific topics and/or help with our feedback about the usability of the tools. I honestly think that, at the present moment, if the users have the final word on the dev decision making process, the source code could become even more chaotic.

1 Like

IMO, I have seen some kind of behavior happening which is responsible for pushing great people away from the community/debate.

The biggest example is this forum. In the beginning of it, many people were complaining about the structure and they were saying that the mailing list was way better. Although I totally disagree with this (I love the features available on Discourse forums) I understand their point and think that we should provide a way for them to participate. Although the mailing list mode of the forum was active, people were still complaining about not receiving emails, layout of the emails, etc. It seems that no other action happened to solve it and then several people simply gave up on participating in the forum… It is a pity…

The main point that I would like to bring is that we need to find alternatives that accommodates more people otherwise the community will get smaller and smaller until its end.

For instance, Pd and Lilypond community are strongly attached to mailing lists (some people just love it). If you simply shut down its mailing list, part of the community will vanish from the discussion. It seems that this point was not took into consideration seriously…

What would be a solution that could integrate both worlds and aggregate more people? Having both the list and the forum? Improve the forum until its mailing list mode reach the same status of the old list?

I hope we find more and more ways of both welcoming new people as well as making a comfortable and respectful place for long term users

This IS a pity - though I do feel mildly prickly about this statement :slight_smile: because both on the forum and in private messages / via back-end technical work, I’ve spend maaaaaaaaaany very boring hours trying to resolve and improve some of the issues people had with mailing-list style usage. Many of the major issues have been resolved for a while now - some still exist too. A few people never found a workflow they liked and sadly faded out of participation. However, the forum userbase is significantly larger than the mailing list ever was, and we have significantly fewer problems with email delivery than the mailing lists did, which is obviously a positive.

It’s a shame that this has to be the trade-off though. Mailing lists are still an option - it’s unfortunate that no one has stepped up to work on this, but it costs money and quite a lot of effort so it’s also not entirely surprising.

This is real - the last generational contribution to SuperCollider was probably the IDE and QT support, and that was a fully funded project. They almost for sure wouldn’t have happened without institutional support. Lucile is right, that the emotional and intellectual labor of building consensus is significant, and without this you run the eternal OS risk of merely creating a fork that no one uses or maintains. Both routes are rough going for many of us who already spent our work days writing code and trying to build consensus on difficult technical topics :slight_smile: - spending evening and weekends doing this for an OS project like SuperCollider as well can end up ranging anywhere from “frustrating” to “mental health disaster”.

Setting up a SuperCollider foundation or fund that could fund target-of-opportunity projects would be an absolute game-changer - but this requires some very specific institutional know-how, and I don’t know if we have anyone in the community that’s up for taking on this kind of project, sadly.

3 Likes

Sorry, the intention was not to criticize, but to think about the situation. I recognize that the effort of setting/maintaining a list, setting/maintaining a forum or even both is really big…

I know it is pretty impossible to make everyone happy with a solution, and this is a special curse regarding FLOSS…

I also see that some people are only attached to discussing SC on the facebook community, on the other hand, some have strong ethical concerns and would not even allow themselves to create a facebook account. Would it be possible to integrate those people here? I don’t think so, but I wish…

What I feel sad about is not seeing several people that once were attached to the list and to facebook contributing to the forum, I think we are losing a broader discussion due to it…

This is unfortunately. Similarly, there are a lot of amazing people + lively discussion on the Discord, and almost none of those people end up here. Partially we can chalk this up to the nature of online communication platforms, I guess.

I wonder if any professors here might be able to find a home for a SC foundation at their institution?

There may be other possible fiscal sponsors which can make a fund less onerous to set up as well.

Maybe a start to this would be to simply figure out which universities use SuperCollider as part of their curriculum?

A few (apologies if wrong or out of date) @elifieldsteel is at UICU I think - @muellmusik University of Birmingham - CCRMAat Stanford. has a workshop right about now (not sure who is teaching!) @dkmayer is at IEM Graz - @madskjeldgaard is at NOTAM DXArts at UW has had a lot of SC stuff through the years FluCoMA comes out of University of Huddersfield I think?David Cottle is associated with University of Utah…

2 Likes

The Institute of Sonology in The Hague (NL) has a SC module too

1 Like

indeed this is true. but UK academia definitely doesn’t give anyone any overhead to even do the actual job we’re supposed to do (don’t get me started) so until I find one of those fat unicorn chairs somewhere else, if they still exist, then expect the odd bug report from yours truly :slight_smile: and a bit of money to help this site to survive, obviously.

@Sam_Pluta is at Peabody and teaches it. He and @tedmoore (and a bit of @groma too) are responsible for my late conversion from other platforms I won’t name…

FYI: I’m no longer at NOTAM :slight_smile:

Very interesting recent comments here. A few thoughts:

While there are usually strong arguments for and against any given language design choice, and it is true that SC has become more of a hybrid/compromise as time has gone on, I am not sure that some particular set of ‘good design’ is really what makes a language successful. C++ is a horrible language in many people’s opinions (okay perhaps a little less horrible than it used to be, but still…) but remains immensely popular and widely used, even with numerous better designed alternatives available.

I think SC’s strengths are a mix of things, but realtime safety, powerful built-in domain-specific functionality and extensions, and a well established and overall (flame shield on) supportive community. As PA says it works for artists, and that’s the target community or at least the core of it. Many SC users couldn’t care less about hard or soft typing. But Patterns…! It also managed to provide convincing workarounds to some of the traps/pitfalls/shortcomings of the incumbents (Max family/Csound) at an opportune moment in the history of such environments. There was thus a real payoff in learning it. All that snowballed…

Of course if you were designing a new SC from scratch today, you’d do it differently. The available design models, target hardware, possible use cases etc are all different. But that alone won’t make it successful. So I think any future developments should strongly target maintaining those existing strengths, and any big disruptive changes need a big payoff for that core constituency. Otherwise I think they’re unlikely to gain traction, as we’ve seen with many very well intentioned and enthusiastic attempts over the years.

4 Likes