4.2 Sequenzer

4.2.1 Theorie

Statt automatisch ablaufender Prozesse können wir aber auch regelrechte „Partituren“ für einen Pd-Patch schreiben. Ein einfaches Beispiel ist die Zusammenfassung mehrerer „send“-Befehle, wie unter 2.2.4.1.3 beschrieben:

Um aber noch viel mehr Informationen so festzulegen und diese wiederum in ihrer zeitlichen Abfolge zu bestimmen, werden im folgenden Kapitel verschiedene Möglichkeiten beschrieben, dies innerhalb von Pd zu realisieren.

4.2.1.1 Textfile

Wir können Zahlen und Symbole von einer einfachen Textdatei abrufen oder darin mit dem Objekt „textfile“ speichern. Schauen wir uns zunächst die Speicherfunktion an. Wir klicken die Messages von oben nach unten an:

Nun hat Pd eine Textdatei namens „file1.txt“ im Verzeichnis des Patches erstellt. Darin steht:

            hallo;
            welt!;
          

add“ erstellt ein Symbol oder eine Zahl und setzt dahinter ein Semikolon. „add2“ setzt statt eines Semikolons nur ein Leerzeichen.

Wollen wir das Gespeicherte nun lesen, laden wir zunächst die Datei, gehen mit „rewind“ ganz an den Anfang, woraufhin mit jedem Bang eine Zeile (bis zum Semikolon) im linken Outlet ausgegeben wird. Ist die letzte Zeile erreicht, kommt aus dem rechten Outlet ein Bang.

Wir können mit einem Objekt schreiben und dies dann wieder lesen, ohne es als Datei zu speichern. Zudem kann alles mit „clear“ gelöscht werden. Mit „set“ wird erst alles gelöscht und dann eine neue Zeile erstellt. Man klicke von oben nach unten:

Wir können eine Datei auch so laden, dass die Semikola nicht erscheinen:

Auf gleiche Weise funktioniert auch „write name.txt cr“.

4.2.1.2 Qlist

Eine praktische Erweiterung von „textfile“ ist „qlist“. Hiermit können wir zeitlich organisierte Nachrichten mit einer Textdatei an „receive“-Objekte senden. Wir haben die Datei „orders.txt“ mit dem Inhalt:

            0 tom 55;
            1000 imi -12;
            4000 tom 3;
            2000 imi -2;
          

Zu Beginn erhält „tom“ die Zahl 55, eine Sekunde später erhält „imi“ -12, und wiederum vier Sekunden danach „tom“ 3, zwei Sekunden danach „imi“ -2. Genauso funktioniert das mit Symbolen.

Ansonsten hat „qlist“ Funktionen wie „textfile“: add, add2, rewind, clear.

Außerdem lässt sich noch das Tempo modifizieren mit „tempo“ und einem Faktor:

4.2.2 Anwendungen

4.2.2.1 Partitur für einen Patch

Nun können wir mit vorab zusammengestellen Klängen ein Musikstück als Textdatei schreiben. Wir haben diesen Patch ...

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

... mit dieser „Partitur“ (patches/p.txt):

            0 p1off 1000;
            0 p1togg 1;
            0 p1amp 1;
            0 amp 0.5;
            
            3000 p2off 100;
            0 p2togg 1;
            0 p2amp 1;
            
            2000 p2off 400;
            
            3000 p1amp 0.2;
            
            3000 p2amp 0;
            
            1000 p2off 2100;
            0 p2amp 0.8;
            
            
            5000 amp 0;
            0 p1togg 0;
            0 p2togg 0;
          

Wir können auch in eine Textdatei Informationen aus Klängen schreiben:

patches/4-2-2-1-partitur-schreiben.pd

4.2.2.2 Weitere Aufgabenstellungen

Schreiben Sie Zufallsalgorithmen in eine Textdatei, mit der sich per „qlist“ der Patch von 4.2.2.1 (in verschiedenen Geschwindigkeiten) abspielen lässt.

4.2.3 Appendix

4.2.3.1 Modifikation von qlist

Die Zeiten für qlist sind Delta-Werte, das heißt, wir geben immer den Abstand von einem Ereignis zum nächsten an. Manches Mal wäre es aber auch praktisch eine Textdatei mit absoluten Zeitangaben zu verwenden. Mit Hilfe von „remote“ können wir diese in der gleichen Weise gebrauchen. Das Objekt „remote“ (das nicht in der ursprünglichen Pd-Version enthalten ist, sondern Teil der Maxlib-Library in Pd-extended ist) erhält als Liste den Namen eines receive-Objekts und dahinter den dorthin zu schickenden Wert. Damit erspart man sich mehrere „sends“:

Damit bauen wir uns nun unsere eigene qlist mit absoluten Werten:

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

Und so wandeln wir eine Liste mit Delta-Werten in eine mit absoluten Wert um:

patches/4-2-3-1-klist-konvertierung1.pd

Und umgekehrt:

patches/4-2-3-1-klist-konvertierung2.pd

4.2.4 Für besonders Interessierte

4.2.4.1 Listen extern erstellen: Lisp

Mit „textfile“ können wir Textdateien erstellen, zum Beispiel vorher berechnete Algorithmen speichern. Hierzu gibt es aber auch spezielle Programmiersprachen. An dieser Stelle sei auf LISP hingewiesen, eine Programmiersprache die für die Erstellung und Bearbeitung von Listen besonders gut geeignet ist:

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