More words to SuperCollider Help Document Home

Currently, there is only one sentence on the home page:

SuperCollider is an audio server, programming language, and IDE for sound synthesis and algorithmic composition.

What do you think about adding the edited version of the following text, which is an excerpt from James McCartney’s paper “Rethinking the Computer Music Language: SuperCollider” published in Computer Music Journal, 26:4, pp. 61-68, Winter 2002? (If the paragraph is too long, it would be good to include only the first sentence, I believe)

SuperCollider is a dynamically typed, single-inheritance, single-argument dispatch, garbage-collected, object-oriented language similar to Smalltalk (www.smalltalk.org). In SuperCollider, everything is an object, including basic types like letters and numbers. Objects in SuperCollider are organized into classes. The UGen class provides the abstraction of a unit generator, and the Synth class represents a group of UGens operating as a group to generate output. An instrument is constructed functionally. That is, when one writes a sound-processing function, one is actually writing a function that creates and connects unit generators. This is different from a procedural or static object specification of a network of unit generators. Instrument functions in SuperCollider can generate the network of unit generators using the full algorithmic capability of the language.

I do not have a perfect technical understanding of this, so I am not sure if this paragraph is still appropriate for SC3. Sorry for suggesting it without doing.

Well, one is a summarization of SuperCollider, the other paragraph describes the features of sclang, the programming language bundled in SuperColider, so they do serve different purposes.

To me this seems like a good indicator that this paragraph is maybe not the best introduction. I can follow the paragraph, but I think it focuses too much on the technical implications of the programming language rather than what people want to use it for.

Another summary used on the official website https://supercollider.github.io/ goes like

[SuperCollider is a] platform for audio synthesis and algorithmic composition, used by musicians, artists and researchers working with sound.

SuperCollider features three major components:

scsynth – A real-time audio server
sclang – An interpreted programming language
scide – An editor for sclang with an integrated help system

SuperCollider was developed by James McCartney and originally released in 1996.
In 2002, he generously released it as free software under the GNU General Public License.
It is now maintained and developed by an active and enthusiastic community.

which provides a very concise and good overview IMO.

2 Likes

It is a very good idea!

Probably the following line below scide, because SC-IDE seems to be hardly maintained or developed?

scide – An editor for sclang with an integrated help system
(You can also use your favourite code editor such as Visual Studio Code, SCNvim, Vim, NeoVim, Emacs, Atom, etc. rather than scide.)

1 Like

Just rephrasing dscheiba’s comment, but I totally agree with it.

When writing documentation, I think that it is really important to keep in mind who’s going to read it, and what are their abilities.

I think that mentioning SC’s garbage collection is cool when talking to developers or engineers, but I doubt musicians know what it is about. Some people might even get blocked, thinking ‘oh no, I don’t understand those concepts, I can’t use the program’. Which is not true. I think that SC is ultra-hard to master, but really easy to use. SC’s documentation should emphasis on this.


1 Like

@Dindoleon

Great!

Three more things came into mind:

  1. supernova is not mentioned.
  2. Communicating via OSC is not mentioned.
  3. Cross-plattom is not emphasized

How about the followings?

SuperCollider is a cross-platform for audio synthesis and algorithmic composition, used by musicians, artists and researchers working with sound.

SuperCollider features three major components:

  • scsynth* – A real-time audio server.
  • sclang – An interpreted programming language and client.
  • scide** – An optional editor for sclang with an integrated help system.

The server (scsynth or supernova) and client (sclang) communicate via OSC (open sound control) messages, allowing SuperCollider to run on a single machine or on multiple machines over a network.

*) To take full advantage of multi-core, an alternative sound engine supernova can be used.

**) scide: SuperCollider-IDE (a dedicated Integrated Development Environment for SuperCollider) is a simple editor that will get you started writing code. If you are already comfortable with code editors, you might want to use to your favorite editor instead (Visual Studio Code, SCNvim, Vim, NeoVim, Emacs, Atom, …), to benefit from its advanced functionalities.

I think the content got enriched, but I am not sure if it is attractive to new users and as the first words for the Help Documentation Home.

1 Like

Maybe we could simply say:

SuperCollider was originally developed by James McCartney and is now distributed it as free software under the GNU General Public License. It is maintained and developed by an active and enthusiastic community.

I’m not sure the great antiquity of the project (in software terms) is a selling point!

2 Likes

@dscheiba Sorry for forgetting the last paragraph!
@semiquaver Thanks for adding this with yout opinion!

SuperCollider is a cross-platform for audio synthesis and algorithmic composition, used by musicians, artists and researchers working with sound.

SuperCollider features three major components:

  • scsynth* – A real-time audio server.
  • sclang – An interpreted programming language and client.
  • scide** – An optional editor for sclang with an integrated help system.

The server (scsynth or supernova) and client (sclang) communicate via OSC (open sound control) messages, allowing SuperCollider to run on a single machine or on multiple machines over a network.

*) To take full advantage of multi-core, an alternative sound engine supernova can be used.

**) scide: SuperCollider-IDE (a dedicated Integrated Development Environment for SuperCollider) is a simple editor that will get you started writing code. If you are already comfortable with code editors, you might want to use to your favorite editor instead (Visual Studio Code, SCNvim, Vim, NeoVim, Emacs, Atom, …), to benefit from its advanced functionalities.

SuperCollider was originally developed by James McCartney and is now distributed it as free software under the GNU General Public License. It is maintained and developed by an active and enthusiastic community.

It depends - I am working on a PR for it now, so I think it is not not maintained - the question is more what is missing?

I think this is a bit misleading tbh - although it is great that there is a manifold of editors which allow to work alongsid sclang it suggests that the provided IDE is inferior to other editors which I would see quite contrary.
The IDE is especially tuned for sclang - it displays server statistics, provides the life saving cmd + . shortcut, provides native docs and source code referencing and is the de-facto standard for tutorials/docs - all which other editors do not really match (while they still have their valid way of doing things as well).

2 Likes

I really appreciate the time you take to improve SC’s documentation !

Regarding the IDE, I’d like to maintain/develop it, but I’m facing technical issues, I tried to implement something and failed :grinning: . I’ll persevere.


I think SuperCollider’s presentation can be split in several steps.

When presenting it to ‘non-technician’ people, I simply say that “SuperCollider is a programming language dedicated to making music”. And that’s basically what you do with it, you type code, then it makes sounds. At first you don’t need to know there’s a distinct server, and the IDE is optional, and so on.

But the server/language distinction becomes rapidly necessary. I think it helps to understand why you need to boot the server, why you create a SynthDef first, then manipulate it, etc. I don’t think the ScIDE vs other editors distinction is mandatory at this point, but as the documentation currently points out, the scsynth / sclang / scide trio is indeed what makes SC so cool, so it needs to be integrated quite rapidly to get started manipulating it further.

But SC is much more than that. You mentioned supernova, and I think it’s a niche usage, not every people are interested in making music with parallel processes, but it has to be mentioned at some point. I’d say some other features are also really important to mention :

  • the Pattern system : the documentation could be rewritten I’d say. I had to read it 4 times before I understood it, because it starts from the top to the bottom, and I think it’s confusing. I usually explain it bottom-up, starting from Pbind then expanding the overall picture. This is one of SC’s major feature I’d say. The creative possibilities are limitless : easy standard composition, generative composition, sound effects, etc.

  • the number of scales available : most DAW I’ve been using are heavily weighted towards tonal composition : major and minor modes. Here, in SC, not only western modes, but maqams, indian and chinese scales, etc, are available (I’m talking from a ‘formatted European’ perspective here). This opens so many creative perspectives.

  • the Proxy system : I don’t use it myself, but from what I see, it is a huge functionality that serves many purposes, and fits very well with some artistic paradigms.

  • the View system : this is my favourite :sparkling_heart: . The ability to create new ways to interact on screen with music is so appealing for people who like graphic design. Qt’s implementation allows musical pendulums, complex interfaces, sound based real-time painting, etc.

I’ll take time to think about other ‘major minor features’, but I think they could be included in the presentation somehow.

@dscheiba @Dindoleon
Thanks for the good ideas.
I have summarised it as follows, with the changed parts in bold. Please understand if I have omitted something and complete it. I also hope you can understand that my first language is not English. This is just a draft of the idea collection.

(My opinion: it is now comprehensive as an overview, but could be shortened.)

SuperCollider is a cross-platform for audio synthesis and algorithmic composition, used by musicians, artists and researchers working with sound.

SuperCollider features three major components:

  • scsynth* – A real-time audio server.
  • sclang** – An interpreted programming language, interpreter and client.
  • scide*** – An optional editor for sclang with an integrated help system.

The server and client communicate via OSC (open sound control) messages, allowing SuperCollider to run on a single machine or on multiple machines over a network.

SuperCollider was originally developed by James McCartney and is now distributed as free software under the GNU General Public License. It is maintained and developed by an active and enthusiastic community.

*) To take full advantage of multi-core, an alternative sound engine supernova can be used.

**) In addition to managing server-side objects, sclang offers interactive programming environments for on-the-fly coding and extensive libraries for creating diverse patterns in music and sound as well as a wide range of scales and modes from various cultures. It also provides all essential graphical user interface features, which can be used to create animated visual effects.

***) scide: SuperCollider-IDE (Integrated Development Environment) is a dedicated editor for SuperCollider that allows you to start writing code immediately. Alternatively, if you are already familiar with a particular code editor, you can use your favourite front-end instead to benefit from the flavour features of your preferred editor: e.g. Visual Studio Code, Jupyter, SCNvim, Vim, NeoVim, Emacs, and so on.

Thank you very much! For users like me with less knowledge of computer science and programming experience, SC-IDE is still an essential tool.

If highlighting “major minor features” of sclang I would add to the list MIDI / OSC / HID support (easy interfacing with local and networked hardware and software) and Routines (easy to make processes that unfold over time)

When I tried to use Python these were the features I missed the most

2 Likes

Not related, but it’s perfectly possible to make a strong argument about LISP that is still compelling today… ) Or APL (!!!) ))

Anyway, despite some people complaining that sc has “aged”, the synth architecture has been so successful, it is still unique and necessary today, to the point it’s hard to find another software out there can achieve something similar in our field.

2 Likes

That’s where I have concerns when I see a desire to make SC more and more similar to mainstream languages like Python. SC is designed for a specific domain, and what is a “problem” for a professional java programmer is a feature for those who work in another domain. Many things are adjusted for a particular type of use, and you gave an example.
Yes, we need always to go forward, but not unaware of those things.

@Eric_Sluyter
How about this?

In addition to managing server-side objects, sclang offers interactive programming environments for on-the-fly coding and extensive libraries for creating diverse patterns in music and sound as well as a wide range of scales and modes from various cultures. Creating processes that unfold over time is easy in sclang. It also provides all the essential features of a graphical user interface that can be used to create animated visual effects. With support for MIDI, OSC and HID, sclang can be easily interfaced with local and networked hardware and software.

I made a repository for this.
If you want you can edit directly on my repository:

When the text is completed, I will insert internet links to MIDI, HID, OSC, SC3-plugins, Quarks etc.

Currently, it looks as follows (On the top left, the SuperCollider icon hides the S of SuperCollider. I will write a topic for it on github):

I am not sure if the “An introductory overview” section should be

  • on the home page or
  • on the first point of Getting started.

One more thing: the reason I think Help Home needs more words is that

  • It looks like a table of contents;
  • it seems too technical;
  • There are no topics;
  • Beginners from non-computer science backgrounds can easily lose interest;
  • it seems to be designed for a user who already knows SuperCollider.

I think a comparison with the old Help Home might not be bad. For me, the old Help Home is warmer than the current one. The following is the SC 3.4 Help Home for Windows:

@Eric_Sluyter @semiquaver @dscheiba @smoge @Dindoleon

I have added some links to text as follows:
https://www.dropbox.com/scl/fi/e1y25u4cahtxwwlqmy6vg/sc-documentation-home-draft.mov?rlkey=8k9hxae01q8o184jdisx8pzad&dl=0

I am not sure

  • if each link is the best one for its linked text;
  • Which part of the document should be linked for sclang: Process? Main?
  • if presenting the link in the footer would be better.

Any comments are welcome!

[Edited 1]
I now think that the following two sections are redundant, as they are accessible from the top menu:

  • “Search and browse” section and
  • “Documentation Indexes” section.

The “Documentation Indexes” section includes Classtree. I could easily add it to the top menu.

How about bringing some lost items from the old Help home instead?

[Edited 2]
I have updated all thing I mentioned (Naturally, some obsolete help documents are removed or replaced.):

Table width can be easily adjusted to match page width:

1 Like

I really like the new layout, I think the tables provide a quick and good overview on the topics and allow to find help easily, which should always be one measurement of a documentation.

On the other hand I am not too sure if links to for example the UDP specification are really necessary, I think they are maybe distracting too much and may become also too overwhelming?
I think it would be sufficient to link the word pattern to the pattern guide and more generally I would vouch to link only single words with topics which have an introduction page and not link to outside pages.

1 Like

@dscheiba: Thank you for your opinion!

I have corrected it at your suggestion:
https://www.dropbox.com/scl/fi/09jsrh6nfa76e8c36u0cs/sc-documentation-home-draft-2.mov?rlkey=22mnj7v5q3lq3e8d6trrn02rq&dl=0