Early reflections on Supercollider

The first, and one of the most important, reflections regarding Supercollider is that it has a fairly vibrant community. For instance so is there a facebook-group and many you can watch many videos on YouTube where people are using the interactive features of SC.

A good expressive programming language is very important for at tool like SC. One of the great things with Common Music is that it is based on lisp, wich is my opinion, work very well with music. SuperCollider has its own pure object-oriented language. It is very expressive and has a lot of good functional-like aspects, such as good collections support.

En event that both shows the vibrant community and the expressive power of the language is an event calls sc140 that is a collection of 22 pieces from different composers that all is written to fit twitter, under 140 characters.

One od thing that takes some time to get used to is the difference between client and server. The so-called synth-defs live in the server and have slightly different coding-rules then code that live in the client. I wanted to make an instrument that takes a list of frequencies and makes subtractive synthesis with them. In ordinary SC-code would you send and array of frequencies as arguments and then use them.

~spekt = {
  arg freqs;
  freqs.postln;
}
~spekt.value(Array[5,6,7]);

Working with array-arguments in a instruments turned out to be a different ballgame. You had to declare the argument as a literal array wich is fixed in size. The consequence is that I have to make one instrument definition for each size of array.

SynthDef.new("spekt-4", { 
  arg freqs = #[0,0,0,0];
  freqs.postln;
}).send(s);
Synth.new("spek-4", [\freqs, #[110,220,330,440]]).play;

Overall have these early experiences with SuperCollider been adventures but plesant.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s