UA-69169170-1 Bach in Supercollider

Daniel Hensel

Die offzielle Webseite des Komponisten


Wir können Noten zunächst einmal numerisch als MIDI-Noten ausdrücken. Diese haben einen Zahlenbereich von 0 bis 127. Diese speichern wir in einer Liste. Wir benötigen aber auch den Rhythmus, den wir in einer anderen Liste abspeichern.

Leider ist SuperCollider nicht sehr konsistent, was die Verwendung von Pausen betrifft, so dass diese manchmal doppelt eingegeben werden mussten. Hinzu kam, dass zwei Teile mit Wiederholung gespielt werden sollten, dadurch mussten die Listen geteilt werden. Eine Propertyliste wie in Lisp war mir in Sc bislang nicht möglich. Das Menuett steht im 3/4-Takt. Daher wurde die Zahl 2.4 als Maß für einen Takt zugrunde gelegt. Letztlich ist es egal, die Zahl muss aber durch drei Teilbar sein und ihre Teiler wiederum sollten einfach durch zwei teilbar sein. Für das Ende des zweiten Teiles wurde ein ritardando in den Notenwerten einkalkuliert.


bach-sc1
Für die Listen wird einiges an Platz veranschlagt, denn es empfiehlt sich, jeden Takt zur Fehlersuche per Kommentar zu vermerken.

bach-sc2


bach-sc3

bach-sc5


bach-sc6

Nach den Notenlisten werden die Systeme zusammengeführt. Zum Abspielen benutzen wir die Pbind-UGens. Da sowohl Noten als auch Notenwerte Schritt für Schritt durchgegangen werden müssen, benutzen wir Pseq. Um den ersten Teil zu wiederholen, vermerken wir die Anzahl am Ende mit 2. Es ginge auch unendlich mit "ins". Um mehrere Pbinds zu bündeln, nehmen wir Ppar.
Da wir zwei getrennte Teile definiert haben, benötigen wir eine Routine, die uns sagt, wann der nächste Teil gespielt werden soll. Das SuperCollider-Scheduling ist allerdings derart unpräzise, dass exakte Mathematik hier nicht weiterhalf und der Wert für "wait" empirisch gesucht wurde.

bach-sc7

Mit den auskommentierten Teilen wurde die globale Variable getestet.

bach-sc8

Trotz seiner hässlichen Syntax und des unexakten Schedulings, ist SuperCollider noch immer eine der besten Umgebungen, denn sie bringt die Möglichkeiten einer Entwicklungsumgebung mit, es ist spielbar einfach, GUI zu programmieren und auch das Erstellen eigener Synthesizer ist vor allem durch die hervorragende Dokumentation sehr produktiv. Gerade für Anfänger werden auch viele Hilfsmittel bereitgestellt, die die Arbeit erleichtern.