collabsynth:wellenformmanipulator

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.

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.


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.


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

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.

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.

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);
  
}

00000000

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.

  • collabsynth/wellenformmanipulator.txt
  • Zuletzt geändert: 2022/04/28 09:59
  • von felixkarlheinz