====== Wellenformmanipulator ====== In unserem Projekt möchten wir eine kollaborative und interaktive Installation erstellen, den sogenannten CollabSynth. Diese Installation besteht aus drei verschiedenen Interfaces, welche durch unterschiedliche Ansätze dem Besucher ermöglichen Klänge zu erzeugen. Nachstehend ist ein Rendering dieser Installation dargestellt. {{ collabsynth:rendering_collab_synth.png }} Die Besucher sollen dadurch animiert werden im Trio oder individuell zu musizieren und dabei spielerisch den Umgang mit der jeweiligen Klangerzeugungsmethode erfahren. Auch kann das Werk als Instrument betrachtet werden, somit können eigens entworfene Arrangements und Kompositionen dort umgesetzt werden. Die erzeugten Audiosignale werden über eine USB-Schnittstelle an einen Computer übertragen, welcher als zentrale Schaltstelle fungiert. Auf diesem Rechner werden unter Verwendung einer Digital Audio Workstation (DAW) die Audiospuren in Echtzeit zu einem Klangkunstwerk zusammengeführt. Die Ausgabe der so entstehenden Klangstrukturen kann je nach Aufführungsort über Kopfhörer oder einer Musikanlage erfolgen. In der vorliegenden Arbeit wird die Entwicklung und Umsetzung eines dieser Interfaces, dem "Wellenformmanipulator", erläutert. ---- ===== Theoretischer Hintergrund ===== Mit dem Wellenformmanipulator soll durch physisches Verschieben von Fadern, ein digitales Audiosignal erzeugt und moduliert werden. Die zugrunde liegende Idee beruht dabei auf der Verarbeitung von analogen Signalen in der digitalen Domäne. So wird jedes analoge Signal durch festgelegte zeitliche Abtastpunkte in ein diskretes digitales Signal überführt. Nachstehend ist dies Visualisiert. {{ collabsynth:abtastrate_collabsynth.png }} ---- ===== Material ===== == Hardware == * 3D Druckteile: Schlitten, Fader, FilamentSpanner, Gehäuse für Arduino * Acrylplatte * Alter Draht * 1x Raspberry Pi 3B+ * 2x Arduino Mega * Drahtösen * Schrauben * USB-Kabel * 12m elektrisch leitendes Filament == Software == * Pure Data ---- ===== Umsetzung ===== Zur Umsetzung des Wellenformmanipulator-Moduls wurden die mechanischen Bauteile teilweise gelasert oder im 3D-Druckverfahren hergestellt. In beiden Fällen wurden die Bestandteile zuvor in einem CAD-Programm virtuell entworfen. Die Hauptplatte des Moduls wurde aus Acryl gelasert, um die Führung der einzelnen Faderschlitten zu ermöglichen. Die Schlitten sowie die Spannhalterungen für das elektrisch leitende Filament wurden 3D gedruckt. Zur Verkabelung wurde vorhandener alter Draht recycelt und jeweils 12 Fader mit einem Arduino verbunden. Der Kernprozessor für das Modul bildet der Raspberry Pi, auf welchem Pure Data installiert ist. ==== Pure Data Patch ==== Das Herzstück des Moduls ist der Pure Data Patch, hierin wird ermöglicht eine halbe Wellenlänge eines Audiosignales mit den Fadern haptisch zu verändern und zu modulieren. Der Patch interpoliert diese "Frequenzbins" und konkateniert diese dann zu einem periodischen Signal. Weiterhin ist eine Möglichkeit der Modulation der Abtastfrequenz eingebaut, um durch Aliasing Effekte neue Frequenzbereiche abdecken zu können. {{ collabsynth: screen_shot_raspi.png }} ==== Arduino Code ==== int pos_pin = 53; int pos; int an_pins = 12; int mean_of = 3; int wait = 10; void setup() { // Serielle Verbindung mit Baudrate 9600 starten Serial.begin(9600); // Pin 53 zur Identifizierung von Arduino 1 und 2 nutzen pinMode(pos_pin, INPUT_PULLUP); delay(100); if(digitalRead(pos_pin) == HIGH){ pos = 0; } else { pos = 1; } } void loop() { // Arrays für Messwerte definieren int values_raw[an_pins][3]; int values[an_pins]; // jeder Pin wird [mean_of] mal gelesen, anschließend wird // ein Mittelwert gebildet for(int n = 0; n < mean_of; n++){ // Werte von Pins lesen for(int i = 0; i < an_pins; i++){ values_raw[i][n] = analogRead(i); } } // über [mean_of] Werte mitteln for(int i = 0; i < an_pins; i++){ int sum = 0; for(int n = 0; n < mean_of; n++){ sum = sum + values_raw[i][n]; } values[i] = sum / mean_of; } // Werte seriell an Computer senden for(int i = 0; i < an_pins; i++){ Serial.print(values[i]); Serial.print(" "); } // zusätzlichen Wert zur Identifizierung von Arduino 1 und 2 senden Serial.print(pos); Serial.print(" "); Serial.println(); // Verzögerung zwischen Übertragungen delay(wait); } ==== Final gebautes Modul ==== {{ collabsynth: img_20220427_202558.jpg }} ==== Video der ersten Klangerzeugungen ==== {{ youtube>puLa5GoojOQ?large }} ==== Ausblick ==== Das Modul soll noch mit einer verbesserten Kabelführung sowie einem Gehäuse ausgestattet werden. Weiterhin muss die Führung der Fader leicht angepasst werden. Zudem soll ein Reverb sowie eine Spatialisation realisiert werden, um den Klang gehaltvoller zu machen und Frequenzanteile auf verschiedene Kanäle aufteilen zu können. Auch soll ein Autostart Skript auf dem Raspberry Pi implementiert werden, sodass das Modul unabhängig von einem externen Laptop startbar ist. Sollten die anderen Module der Gruppe fertiggestellt werden, soll der CollabSynth entstehen.