Daniele Pozzi

trópos (a plausible taxonomy)

Trópos consits of a collection of 97 DSP processes which are composed to achieve different forms of sonic symbiosis with the acoustic environment in which the piece is installed. Such symbiosis is achieved by directly coupling... Mehr lesen

Bitte mit Kopfhörer zuhören

Trópos

Trópos besteht aus 97 DSP-Prozessen (Digitag Signal Processing, digitale Signalverarbeitung Prozesse), die so komponiert sind, dass sie verschiedene Formen der klanglichen Symbiose mit der akustischen Umgebung eingehen können, in der das Stück installiert ist. Diese Symbiose wird mittels eine direkte Kopplung des Mikrofonsignals mit einem Echtzeit-Klangsyntheseprogramm erreicht, das auf dem Raspberry Pi läuft. Im Wesentlichen werde die vom Mikrofon aufgenommenen Klänge als zusätzlichen Modulatoren in einem rekursiven FM-Synthesizer verwendet. Bei der Gestaltung dieser 97 Klangprozesse wurde der Mikrofoneingang als das wichtigste generative Element betrachtet: Gerade durch die Modulationen, die von der externen akustischen Umgebung eingeführt werden, erwacht das Stück zum Leben und geht eine lebendige ästhetische gengenseitige Bindung mit der Klanglandschaft, in der es lebt, ein.

Kompositionsumgebung

Die 97 DSP-Prozesse wurden mit Strip komponiert, einer selbst entwickelten kompakten Software die das Experimentieren mit Feedback-Kopplungen in FM-Synthese Verfahren ermöglicht. Strip’s Synthesealgorithmus verwendet einen sehr reduzierten Satz von SuperCollider Ugens und setzt diese in Verbindung zueinander, um ein komplexes Feedbacksystem zu bilden. Trotz seiner algorithmischen Einfachheit kann das System vielfältige und ausdrucksstarke Klangverhaltensweisen erzeugen. Um mit diesen Verhaltensweisen zu experimentieren, genügt es, die Verbindungen zwischen seinen Komponenten zu verändern. Diese Verbindungen sind meist rekursiv und werden durch eine Rückkopplungsmatrix mit drei Eingängen und sechs Ausgängen definiert. Das Ändern der Matrixkoeffizienten kann das Gleichgewicht zwischen den Systemelementen sowie die Art und Weise, wie sie sich gegenseitig beeinflussen, verändern und so das Rückkopplungssystem selbst neu konfigurieren.

[Strip is in file synths.scd]

Schnittstellen

Strip verfügt über Schnittstellen zu zwei SuperCollider-Klassen, die es mir ermöglichen, schnell mit seiner Rückkopplungsmatrix zu experimentieren. Die erste Schnittstelle heißt Router und besteht aus einer grafischen Benutzeroberfläche, die es erlaubt, jedes Signal an jedem beliebigen Punkt der Matrix einzufügen, indem man auf den entsprechenden Kanal klickt. Beim Komponieren von Trópos habe ich die Router-GUI verwendet, um “Eingangspunkte” für das Mikrofonsignal zu finden, mit verschiedenen Rückkopplungspfaden zu experimentieren und zu hören, wie Strip auf externe Klänge reagieren würde. Die zweite Klasse, MidiMix genannt, ist eine Software-Brücke, um einen AKAI MidiMix-Controller mit Supercollider zu koppeln. Ich konfigurierte 6 Kanalstreifen des MidiMix (3 Regler + 1 Fader), um die Rückkopplungsmatrix-Koeffizienten in Strip zu steuern.

[MidiMix is in file extensions/MidiMixKN.sc]

Experimentieren

Die 97 DSP-Prozesse von Trópos wurden in iterativen experimentellen Sitzungen in meinem Studio entwickelt, die sich wie folgt vereinfachen lassen:

  1. Alle Hardware in eine feste Position bringen.

  2. Strip in eine bestimmte Konfiguration bringen, indem man über den MidiMix auf die Feedback-Koeffizienten einwirkt.

  3. Finden der “Eingangspunkte” für das Mikrofonsignal, indem Kanäle im Router geöffnet werden.

  4. Verlassen des Pultes. Hören, wie sich der Strip in dieser spezifischen Konfiguration verhält. Wie reagiert er auf externe Geräusche? Umher gehen. Öffnen und schließen des Fensters. Dinge im Raum bewegen. Den Vorgang wiederholen, falls erforderlich.

  5. Wenn (Ergebnis ästhetisch interessant){
    5a. Konfiguration in einer Datenbank speichern;
    Wiederholung ab Schritt 1;
    }else{
    5b. ab Schritt 1 wiederholen;
    }

Simulation

Nach zwei Tagen iterativen Experimentierens hatte ich eine Datenbank mit 116 Einträgen. Jeder Eintrag besteht im Wesentlichen aus einer Reihe von Zahlen, die eine bestimmte Konfiguration von Strip definieren, und einer 15 Sekunden langen Mono-Tonaufnahme, die durch diese Konfiguration in meinem Studio erzeugt wurde. Ich habe ein Tool entwickelt, das es mir ermöglicht, die Datenbank zu visualisieren und gleichzeitig die zugehörigen Aufnahmen abzuspielen. Durch das gleichzeitige Abspielen von 5 Datenbankeinträgen konnte ich, bis zu einem gewissen Grad, das Gesamtergebnis simulieren, was ich in der Außeninstallation mit 5 gleichzeitig spielenden Klangnetze-Agenten erzielen würde. Ich filterte die Datenbank weiter von Hand und entfernte einige Einträge, die ich in diesem Zusammenhang für unpassend hielt. Am Ende blieben 97 Einträge bzw. Konfigurationen übrig, aus denen die Datenbank besteht, auf der Trópos basiert.

Simulation is here:
[Final database is in file mmx/220707/220707_taxonomy.scd]

Iteration / Nachahmung

In Trópos geht jeder Klangnetze-Agent eigenständig durch die Datenbank, indem er alle N Sekunden eine andere Feedback-Konfiguration (einen anderen Datenbankeintrag) abruft, mit einer Pause (Stille von S Sekunden) dazwischen. N und S variieren jeweils zwischen 80 und 120 Sekunden (N) und zwischen 10 und 20 Sekunden (S). So entsteht eine fragmentierte Polyphonie von Klangprozessen, die im Laufe der Zeit ein- und ausgeblendet werden und ständig wechselnde Klänge erzeugen die mit der umgebenden Klanglandschaft verschmelzen.

Die 97 Beiträge wurden in der Tat lose nach einem “Nachahmungs”-Prinzip ausgewählt. Ich wählte Klangprozesse aus, die mit Geräuschen verwechselt werden können, die in der Außenwelt häufig vorkommen (Naturgeräusche, Verkehrslärm, Lüftungsanlagen oder andere Arten von Maschinen). Die Absicht hinter dieser ästhetischen Entscheidung ist es, Trópos klanglich bis zu einem gewissen Grad mit dem akustischen Raum zu verschmelzen, den es bewohnt.

[Iteration is in file task.scd]

Optimierung

Aufgrund der Implementierung von Strip muss der SuperCollider-Server mit einer geringen Blockgröße laufen. Trotz der relativen Einfachheit von Strip erlaubten es die begrenzten Rechenkapazitäten des Raspberry Pi Zero nicht, die Installation mit einer niedrigen Blockgröße laufen zu lassen. Daher habe ich einen Optimierungs-Patch erstellt, der vor der Erstellung des Matrix-Synth-Knotens den Datenbankeintrag auf unbenutzte Rückkopplungskanäle (Rückkopplungskoeffizient == 0) überprüft. Er erzeugt dann automatisch einen optimierten Matrixknoten, der nur die tatsächlich genutzten Rückkopplungskanäle enthält. Dadurch wurde die Anzahl der Ugens reduziert und Strip konnte mit einer geringen Blockgröße auf dem Pi Zero laufen.

[Optimization is in file play.scd]

Kalibrierung

Ein wichtiger letzter Schritt war dann die Kalibrierung vor Ort. Aus praktischen Gründen beschloss ich, es einfach zu halten: die einzigen beiden Parameter, die ich vor Ort feinabstimmen würde, waren der Pegel des Mikrofoneingangs und der des Syntheseausgangs. Aufgrund der sehr unterschiedlichen akustischen Gegebenheiten an den fünf Aufstellungsorten wiesen diese Parameter eine Variabilität von +-9 dB auf.

Link zum GitLab Repository

Code herunterladen: https://gitlab.mur.at/pirro/klangnetze/-/tree/main/tropos