Warum sollte ich Musik programmieren wollen? Wie soll das funktionieren? Wie kann folgende Codezeile musikalisch sein?

{SinOsc.ar(LFSaw.ar(XLine.kr([0.01,0.02],[400,500],100)).range(1,2000).round(200))}.play;

SuperCollider ist eine freie, objektorientierte, Müll sammelnde (Garbage Collection), auf Smalltalk basierende Programmiersprache, die es einem ermöglicht Synthesizer, Sequenzer und Effekte zu entwickeln. Außerdem ist es möglich GUIs zu programmieren und SuperCollider eignet sich hervorragend für interaktive Programmierung und Live Coding

Wenn man möchte, kann man sogar eine komplette DAW inklusive einer GUI in SuperCollider bauen (lnxstudio.sourceforge.net)

SuperCollider wurde 1996 von James McCartney (nicht zu verwechseln mit dem Sohn des Fab Four Bassisten) entwickelt und veröffentlicht. Damals war es nur auf dem Mac verfügbar und musste bezahlt werden. Seit 2002 ist SuperCollider eine freie Software unter der GNU License und wird mittlerweile von einer riesigen Community gepflegt und weiter entwickelt.

Auch wenn SuperCollider flexibel, effektiv und schon ziemlich mächtig ist, ist es nicht wirklich intuitiv. Schon gar nicht für den 0815-Computer User, der in der Regel an nette GUIs gewöhnt ist. In SuperCollider muss er Code schreiben. Wie in jeder Software für Audiokrams muss er außerdem natürlich noch über gewisse Kenntnisse in Soundsynthese und algorithmischer Komposition verfügen.

Was kann ich jetzt mit SuperCollider genau anfangen?

SC wird eingesetzt bei Live Improvisationen, GUI-Design, Dance-oriented Musik, Elektroaukustischer Musikkomposition, Sound Spatialization, Audio-Hardware Interaction, Klangliche Repräsentation wissenschaftlicher Daten, Multimedia- und Netwerkbasierte Anwendungen. Ein recht bekanntes und skurriles Projekt war das SC-Tweet Projekt. Dort ging es darum mithilfe von Code zu Komponieren, der nicht länger als 140 Zeichen (die max. Größe eines Twitter Tweets) sein durfte. Und es ist echt überraschend, was dies Projekt für abgefahrene, komplexe Sounds oder Texturen hervorgebracht hat.

play{a=LFSaw;a.ar((b=a.ar(1/3))+1*a.ar(b)(99+c=[0,1]))%a.ar(b99,c)%a.ar(1/32)+a.ar(a.ar(b)4e4%2e3,0,a.ar(6,c)>0.9/2)/2}

Diese Zeile Code klingt so:

Noise !!

Grund genug für mich, sich das Ganze mal näher anzusehen.

SuperCollider beinhaltet drei Hauptkomponenten

  • scsynth – Ein Echtzeit-Audioserver, der quasi das Herz der Plattform ist. Er verfügt über mehr als 400 Unit Generatoren (UGen) zur Analyse, Synthese und Bearbeiten. Er erlaubt die Kombination mehrerer Audio-Techniken und bewegt sich zwischen subtraktiver- , additiver- , FM- und granularer Synthese, FFT und Physical Modeling. Man kann seine eigenen UGens in C++ programmieren! Die Community hat schon so einige davon beigetragen.
  • sclang – Die interpretierte Programmiersprache. Das Hauptaugenmerk dieser Sprache liegt zwar auf Sound, aber sie kann auch anderweitig eingesetzt werden. sclang steuert scsynth mithilfe von Open Sound Control (OSC). Man kann die Sprache zur algorithmischen Komposition einsetzen, zum Sequencing und um neue Synthese Methoden zu entwickeln. Außerdem kann man mit ihr die Verbindung zu externer Hardware herstellen, inklusive Midi-Controllern, Netzwerken, etc… Es gibt ebenfalls jede Menge Erweiterungen der Community, die Quarks genannt werden.
  • scide – Ist der Editor für sclang mit integrierter Hilfe.
scide mit Editor links und rechts der Hilfe-Browser und das Post Fenster

Die offizielle SC Website ist: http://supercollider.github.io/
Sie wird von der Community verwaltet und beinhaltet quasi alles um SC gleich zu benutzen. Es gibt dort ebenfalls eine ausführliche Dokumentation, welche der Dokumentation im Hilfe-Browser der IDE entspricht.

Außerdem gibt es noch die Original Website von James McCartney, die historisch betrachtet durchaus interessant ist. Zum Glück ist diese noch online und unter http://www.audiosynth.com/ zu erreichen.

Der Download ist auf den GitHub Seiten zu finden und die Installation geht leicht von der Hand, da es binäre Files für OSX und Windows gibt. Linux User werden sicherlich keine Probleme mit dem Source Code haben 😉

Ich werde in den nächsten Wochen etwas in SuperCollider eintauchen, wie ich es auch schon mit Pure Data oder Max/MSP getan habe. Falls ich davon mehr als angetan bin, gibt auch wieder ein paar Artikel / Tutorials dazu. Im Fall von PD und Max habe ich aber recht schnell das Interesse verloren. Vielleicht kann mich SC ja etwas länger fesseln 😉

Zur Inspiration und Motivation mal ein bisschen Live Coding: