Überblick
Als Variation des bereits vorgestellten kontaktlosen Drum-Controller nutzt dieser Controller die vollen Möglichkeiten des Ultraschallsensors HC-SR04. Während dieser beim vorherigen Controller lediglich als Schalter verwendet wurde, wird hier die Entfernung zu einem erkannten Objekt in ein MIDI Signal übersetzt und an Ableton übertragen.
So kann eine Reihe von verschiedenen Elementen gesteuert werden, wie z.B. Lautstärke oder der Frequenzbereich eines Bandpassfilters. Der Controller agiert also wie eine Art Fader.
Es werden hier wieder die Arduino MIDI sowie die New Ping library verwendet um den Sensor zu steuern und ein MIDI Signal zu erzeugen.
Programm & Verschaltung
Wie bereits zuvor wird der Ultraschallsensor an Stromversorgung, Erdung, sowie digitale Pins für Input und Output angeschlossen. Das MIDI Signal wird per USB an den Rechner übertragen und dort von Ableton weiter verwendet.

Auf der Software Seite sieht es hier etwas anders aus. So werden hier mehrere Ultraschallsensoren gleichzeitig verwendet und deren Werte gemittelt um eine bessere Erfassung über eine große Fläche zu ermöglichen.
for (int i = 0; i < SONAR_NUM * multiplier; i++)
{
delay(30);
distArray[i] = sonar[i%2].ping_cm();
}
Hier werden die Sensoren einzeln angesprochen und deren Werte in ein Array gespeichert.
int ar_length = sizeof(distArray) / sizeof(distArray[0]);
qsort(distArray, ar_length, sizeof(distArray[0]), sort_asc);
int avDist = distArray[ar_length / 2 + 1];
Im nächsten Schritt werden die im Array gespeicherten Werte mit einem einfachen Quicksort Algorithmus in aufsteigender Reihenfolge sortiert. Danach wird der Median, also der mittlere Wert im Array weiterverwendet um einen MIDI Ton zu erzeugen und an Ableton zu schicken.
Probleme
Leide bleibt auch hier das Grundproblem der Ultraschallsensoren bestehen. So sind diese auf solch engem Raum leider sehr anfällig für Störungen und die damit verbundenen Fehler. Durch mitteln der Werte und geschicktes manipulieren der Reihenfolge in welcher die Ultraschallsensoren angesprochen werden kann dies zwar etwas gemildert werden, verlangsamt dadurch aber ungemein die Rate in der neue Werte ermittelt werden können und ist dadurch für den weiteren Verlauf eher ungeeignet.