SuperCollider

SuperCollider (SC) i​st eine integrierte Entwicklungsumgebung u​nd Programmiersprache für Echtzeit-Klangsynthese u​nd algorithmische Komposition. Sie w​urde seit 1996 v​on James McCartney entwickelt u​nd im Jahr 2002 v​om Autor u​nter der GNU GPL freigegeben. Seitdem h​at sie s​ich zu e​inem System weiterentwickelt, d​as sowohl v​on Künstlern u​nd Komponisten a​ls auch v​on Wissenschaftlern i​n den Bereichen Klang, Musik u​nd Medienkunst eingesetzt wird.

SuperCollider
Basisdaten
Erscheinungsjahr 1996
Aktuelle Version 3.11.2[1]
(15. November 2020)
Betriebssystem FreeBSD[2], Linux[3], macOS[3], Microsoft Windows[3]
Kategorie Musiksoftware
Lizenz GPL 3.0+ (Freie Software)
supercollider.github.io

Architektur

Ab Version 3 besteht die Programmierumgebung SuperCollider aus 2 Komponenten: dem Server scsynth und der Sprache bzw. dem Client sclang, die miteinander über das Protokoll Open Sound Control kommunizieren. Die Programmiersprache sclang kombiniert die objektorientierte Struktur von Smalltalk mit Elementen funktionaler Programmierung und einer an C angelehnten Syntax. Der Server scsynth erzeugt und bearbeitet digitale Audiosignale mit Hilfe von aus elementaren Synthesebausteinen (sogenannten UGens) gebildeten Graphen. Da die gesamte externe Steuerung des Servers über das OSC-Protokoll erfolgt, können neben sclang auch andere Programme bzw. Programmierumgebungen mit scsynth kommunizieren und so die Signalverarbeitung steuern.

Beispielcode

// spiele eine Mischung aus Rosa Rauschen und einem Sinuston von 800 Hz
{ SinOsc.ar(800, 0, 0.1) + PinkNoise.ar(0.01) }.play;

// moduliere die Frequenz des Sinustons sowie die Amplitude des Rauschsignals mit einem anderen Sinussignal,
// dessen Frequenz wiederum von der horizontalen Position des Mauszeigers abhaengt
{
	var x = SinOsc.ar(MouseX.kr(1, 100));
	SinOsc.ar(300 * x + 800, 0, 0.1)
	+
	PinkNoise.ar(0.1 * x + 0.1)
}.play;

// eine Schleife über eine Liste: erzeuge eine Collection mit den Produkten aus Indizes und den jeweiligen Werten der Liste
[1, 2, 5, 10, -3].collect { |item, i| item * i }

// eine Funktion zur Berechnung der Fakultaet
f = { |x| if(x == 0) { 1 } { f.(x-1) * x } }

// «Pan Sonic emulation - Katodivaihe - lahetys» - Miguel Negrão
(
{
	var a, b, c, d, n, e, f,  out;

	a = Impulse.ar(8)*1.5;

	b = WhiteNoise.ar * Env([1.0,1.0,0.0],[0.01,0.01],\step).ar(0, Impulse.ar(1 )) ;
	b = FreeVerb.ar(b, 0.5, 0.4)*2.5;

	c = SinOsc.ar(40) * Env.perc(0.01,0.2).ar(0, TDuty.ar(Dseq([1/4,1/2,1/8,1/8],inf)));
	5.do{ c = (c.distort + c)*0.75};
	c = c * 1.5;

	d = LPF.ar(Saw.ar([20,47]).sum , XLine.ar(4000,200,0.5)) * Env.perc.ar(0, Impulse.ar(1/16)) * 0.5;
	d = (GVerb.ar( d , roomsize:10, revtime:6) * 200).clip(-1.0,1.0) * 0.3;

	n = 12;
	e = ( Saw.ar( 40*(1..n) * ({ LFNoise1.ar(0.1).range(1,1.01) } ! n) ) *
		({ LFNoise1.ar(0.1).range(0.0,1.0) }!n)).sum * 10;
	e = CombC.ar(e, 0.1, 0.1, 4) + e;
	e = e.tanh * 0.3 * SinOsc.ar(0.05).range(0.5,1.0);
	e = e.dup;
	e = e * SinOsc.ar(0.03).range(0.2,1.0) * 0.5;

	f = Blip.ar(100) * Blip.ar(100) * Env([0.0,0.0,1.0],[8,8],[\step,\linear,\step])
	.ar(0, Impulse.ar(1/16)) * 2 ;

	out = ((a + b + c + f) ! 2) + d + e;
	out = out * 0.2

}.play
)

Viele weitere Beispiele s​ind auf d​en Wiki-Seiten z​u finden.[4]

Unterstützte Betriebssysteme

SC läuft u​nter GNU/Linux, macOS u​nd Windows. Die GNU/Linux-Version k​ann mit GNU Emacs benutzt werden.

SC i​st auch a​uf der Linux-Live-CD pure:dyne vorinstalliert.

Literatur

  • Scott Wilson, David Cottle, Nick Collins: The SuperCollider Book. MIT Press Cambridge/London 2011. ISBN 978-0-262-23269-2

Einzelnachweise

  1. Release 3.11.2. 15. November 2020 (abgerufen am 17. November 2020).
  2. Ports: index of /head/audio/supercollider. (abgerufen am 29. Juni 2019).
  3. SuperCollider Download. (abgerufen am 29. Juni 2019).
  4. https://swiki.hfbk-hamburg.de/MusicTechnology/6
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.