Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
collabsynth:wellenformmanipulator [2022/04/28 08:42] – felixkarlheinz | collabsynth:wellenformmanipulator [2022/04/28 09:59] (aktuell) – felixkarlheinz | ||
---|---|---|---|
Zeile 33: | Zeile 33: | ||
* Acrylplatte | * Acrylplatte | ||
* Alter Draht | * Alter Draht | ||
- | * 1x Raspberry | + | * 1x Raspberry |
- | * 2x Arduino | + | * 2x Arduino |
* Drahtösen | * Drahtösen | ||
* Schrauben | * Schrauben | ||
* USB-Kabel | * USB-Kabel | ||
- | * Elektrisch | + | * 12m elektrisch |
== 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 " | ||
{{ collabsynth: | {{ collabsynth: | ||
+ | ==== 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, | ||
+ | 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: | ||
+ | ==== Video der ersten Klangerzeugungen ==== | ||
+ | |||
+ | {{ youtube> | ||
+ | |||
+ | |||
+ | ==== 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. | ||