4.7. Unitgeneratoren und der Audiograph
Jedes Computermusiksystem sollte in der Lage sein, komplexe Signale aus einfacheren Bausteinen zusammenzubauen. Solche Bausteine können elementare Signalgeneratoren, wie beispielsweise Oszillatoren sein, aber auch Filter oder mathematische Operationen, mit denen Signale verändet werden können. Signalgeneratoren und Filter heissen bei vielen dieser Systeme 'Unitgeneratoren' (englisch 'unit generators'). Unitgeneratoren fassen in der Regel bereits mehrere elementare Operationen zusammen. Da sie aber vom System bereitgestellt werden, sind sie in ihrem inneren Aufbau festgelegt und vom Nutzer nicht modifizierbar und damit die kleinsten elementaren Einheiten, die das System zur Verfügung stellt.
Werden mehrere dieser Module miteinander verbunden, so muss sichergestellt werden, dass die Werte in der richtigen Reihenfolge berechnet werden. In Abbildung 4.6, „Verbindung verschiedener Audiomodule“ beispielsweise macht es keinen Sinn, die Werte für den Filter zu berechnen, 'bevor' die Ausgangswerte des Oszillators berechnet wurden.
Abbildung 4.6. Verbindung verschiedener Audiomodule
Wenn für einen komplexeren Klang mehrere dieser Unitgeneratoren miteinander verbunden werden, so müssen dabei 'zwei' Dinge vom System eindeutig festgelegt werden:
- Das System muss darüber informiert werden, in welcher 'Form' die einzelnen Module miteinander verbunden werden, d.h. welche Ausgänge mit welchen Eingängen der verwendeten Module verbunden sind.
- Das System muss darüber informiert werden, in welcher 'Reihenfolge' diese Module Ihre Werte errechnen müssen, damit das Signal auch entsprechend der beabsichtigten Transformationskette der Signale richtig errechnet wird.
Im Normalfall ergibt sich die Reihenfolge, in der Module ihre Werte errechnen, direkt aus der Form, in der die Module verbunden sind, da es auf der Hand liegt, dass es wenig Sinn macht, die Werte eines nachgeschalteten Moduls zu berechnen, bevor das davorgeschaltete Modul seine Werte berechnet hat. In pd wird die Reihenfolge der Rechnung von pd daher automatisch festgelegt, wenn Module miteinander verbunden werden.
Komplizierter ist dies, wenn zur Laufzeit eines Systems Module dynamisch in den Signalverarbeitungspfad ein- und ausgehängt werden, wie dies beispielsweise charakteristisch für SuperCollider ist. Um hier zu gewährleisten, dass alle Module ihre Werte rechtzeitig im richtigen Moment zur Verfügung stellen, ist es daher in SuperCollider möglich, die Verarbeitungsreihenfolge der Module unabhängig von ihrer Verbindgungsform explizit (über sogenannte 'Groups') festzulegen.