collabsynth:wellenformmanipulator

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
collabsynth:wellenformmanipulator [2022/04/28 08:42] felixkarlheinzcollabsynth:wellenformmanipulator [2022/04/28 09:59] (aktuell) felixkarlheinz
Zeile 33: Zeile 33:
   * Acrylplatte   * Acrylplatte
   * Alter Draht   * Alter Draht
-  * 1x Raspberry +  * 1x Raspberry Pi 3B+ 
-  * 2x Arduino+  * 2x Arduino Mega
   * Drahtösen   * Drahtösen
   * Schrauben   * Schrauben
   * USB-Kabel   * USB-Kabel
-  * Elektrisch leitendes Filament+  * 12m elektrisch leitendes Filament
  
 == Software ==  == Software == 
Zeile 54: Zeile 54:
  
 ==== Pure Data Patch ==== ==== 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 }} {{ collabsynth: screen_shot_raspi.png }}
  
 +==== Arduino Code ====
 +<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);
 +  
 +}
 +</code>
 +
 +==== 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.
  
  • collabsynth/wellenformmanipulator.1651128131.txt.gz
  • Zuletzt geändert: 2022/04/28 08:42
  • von felixkarlheinz