Kapitel 4. Klangsteuerung

Inhaltsverzeichnis

4.1 Algorithmen
4.1.1 Theorie
4.1.2 Anwendungen
4.1.3 Appendix
4.1.4 Für besonders Interessierte
4.2 Sequenzer
4.2.1 Theorie
4.2.2 Anwendungen
4.2.3 Appendix
4.2.4 Für besonders Interessierte
4.3 HIDs
4.3.1 Theorie
4.3.2 Anwendungen
4.3.3 Appendix
4.3.4 Für besonders Interessierte
4.4 Netzwerk
4.4.1 Netsend / Netreceive
4.4.2 OSC

Musik läuft in der Zeit ab und ein Komponist möchte natürlich gerne, dass sich im Laufe der Zeit etwas klanglich ändert. Im vorigen Kapitel haben wir alle Grundlagen für die Klangerzeugung kennengelernt. Nun befassen wir uns mit den Möglichkeiten von Pd, die erzeugten Klänge bzw. die Klangerzeugung selbst in der Zeit zu steuern.

4.1 Algorithmen

4.1.1 Theorie

4.1.1.1 Was sind Algorithmen?

Algorithmus ist der Fachausdruck für die Beschreibung der Abfolge von Arbeitsschritten, die ein Computerprogramm ausführt.

Haben wir einen Subpatch, der zu einer eingegeben Zahl 1 addiert, kann man schon von einem Algorithmus sprechen: Der Algorithmus des Subpatches ist die Addition um 1.

patches/4-1-1-1-plus-eins-algorithmus.pd

In Grunde läuft in jedem Objekt von Pd ein eigener Algorithmus ab. Was früher ein Gerät wie den Noise-Generator erfordert hat, übernimmt heute der Algorithmus, der in dem „noise~“-Objekt steckt.

In diesem Kapitel interessiert uns nun speziell, Algorithmen zu entwickeln, die der Computer wie gesagt selbständig ausführt und die den Zweck erfüllen, in der Zeit den Klang zu ändern. Wir haben schon einige Beispiele dafür kennengelernt, etwa unter 2.2.3.2.7

4.1.2 Anwendungen

4.1.2.1 Stochastik

Eine sehr einfache, aber ergiebige Weise, den Computer für sich arbeiten zu lassen, ist die Verwendung des Zufallsgenerators.

patches/4-1-2-1-random.pd

Wir können nun der zufälligen Auswahl Grenzen setzen, die sich aber ändern:

patches/4-1-2-1-random-grenzen.pd

Das Ergebnis eines Zufallsgenerators folgt den Gesetzen der Stochastik, das heißt, der Wahrscheinlichkeit. Bei „random 6“ erscheint jede Zahl von 0 bis 5 mit einer Wahrscheinlichkeit von 1/6. Was dennoch heißen kann, dass eine der Zahlen sehr lange nicht oder nie erscheint, wenn auch das wiederum sehr unwahrscheinlich ist. Wir können die Wahrscheinlichkeit aber auch selbst lenken:

In Prozent ausgedrückt liegt hier die Wahrscheinlichkeit, dass links ein Bang kommt, bei 30 Prozent und dass rechts einer kommt, bei 70 Prozent. Wir können das tatsächliche Aufkommen feststellen:

patches/4-1-2-1-wahrscheinlichkeit.pd

So können wir für unsere Tonpunkte unterschiedliche Dauern differenzieren: Kurze sind sehr häufig, mittlere kommen ab und zu vor, lange selten.

patches/4-1-2-1-wahrscheinlichkeit-beispiele.pd

Wir können eine Verteilung auch mit der Zeit umdrehen...

Am Anfang kommen nur schnelle Dauern, am Ende hauptsächlich langsame (die natürlich auch noch besonders viel Zeit einnehmen).

Die verschiedenen Zeitebenen lassen sich noch einmal ein bisschen in sich variieren:

Und so kann man natürlich immer mehr Parameter dem Zufall überlassen.

4.1.2.2 Rekursionen

Von Alvin Lucier gibt es ein Stück mit einer relativ einfachen Idee: Jemand sitzt in einem Raum und spricht etwas in ein Mikrofon. Das Gesprochene wird aufgenommen und danach in dem Raum abgespielt. Das Abgespielte wird wieder aufgenommen und das wiederum abgespielt und wieder aufgenommen und so weiter. Mit jedem Durchgang wird die Qualität der Sprachaufnahme schlechter, es gehen immer mehr Informationen verloren, genauer gesagt: Die Frequenzen, die die Lautsprecher, das Mikrofon und der Raum gut darstellen können, werden immer weiter transportiert, während andere allmählich herausgefiltert werden.

Dies in Pd zu programmieren ist ziemlich einfach:

patches/4-1-2-2-lucier.pd

Wir können wieder sagen: Der ablaufende Algorithmus entspricht der Aufnahme und Wiedergabe. In dem Fall wird das Ergebnis eines Algorithmus' wieder in diesen Algorithmus integriert und immer so fort. Ein derart automatisch ablaufendes Verfahren nennt man Rekursion. Wir haben schon Rekursionen unter 3.4.2.9 und 3.4.2.10 gesehen.

Im nächsten Beispiel arbeiten wir auch mit Veränderung und Wieder-Aufnahme. Eine rekursive Ringmodulation:

Rekursionen können aber auch allein mit Zahlen interessant sein. Eines der bekanntesten Beispiele dafür, das in der Musik auch häufig vorkommt, ist die Fibonacci-Reihe. Der Algorithmus besteht darin, dass die beiden letzten Zahlen einer Liste addiert werden und das Ergebnis der Liste hinzugefügt wird.

patches/4-1-2-3-fibonacci.pd

4.1.2.3 Weitere Aufgabenstellungen

a) Nehmen Sie ein Sample auf, das in falscher Geschwindigkeit abgespielt wird, spielen Sie das Ergebnis wieder falsch ab, nehmen es auf und so weiter. Probieren Sie aus, das Sample in immer gleicher Weise falsch abzuspielen oder aber bei jedem Durchgang anders.

b) Erzeugen Sie einen Waveshaping-Algorithmus, dessen Ergebnis mit Delay wieder oben eingespeist wird.

4.1.3 Appendix

4.1.3.1 DSP Loop

Der rekursiven Verschaltung von Klang sind technische Grenzen gesetzt. Wenn wir Folgendes tun ...

... erscheint die Fehlermeldung „DSP loop detected“ und es wird kein Audio aus dieser Schaltung abgespielt. Ohne zeitliche Verzögerung des Signals können wir keine (Audio-)Rekursion anlegen.

So gibt es keinen Fehler:

4.1.4 Für besonders Interessierte

4.1.4.1 Algorithmisches Komponieren

Komponieren mit Algorithmen ist ein weites Feld. Schon bei mittelalterlichen Komponisten sind derlei Rechenprinzipien festzustellen und seit dem 20. Jahrhundert ist dies ein ausgiebig genutzter Bereich in der Musik. Schon allein aus mathematischer Sicht sind algorithmische Kompositionen faszinierend. Auch in der Natur lassen sie sich vielerorts entdecken. Weitere Informationen unter:

http://de.wikipedia.org/wiki/Algorithmische_Komposition