Freitag, 1. Mai 2020

Mit einander Singen über Videokonferenz?

Wie die meisten die sich iZvC ("in Zeiten von Corona") mit Zoom, Jitsi oder ähnlichen Konferenzdiensten auseinandergesetzt, musste ich feststellen, das eine Latenz von 150-300ms die man auf dem Notebook oder Smartphone am heimischen WLAN bekommt für eine Besprechung oder eine Chorkaffeekränzchen ok ist, aber zum zusammen musizieren völlig untauglich ist, da bei einem andante Tempo ein Kanon der remote Teilnehmer mal schnell 2/8 hinterher ist.

Man kann etwas mit Call und Response Taktik vorsingen und nachsingen lassen, aber zusammen im Takt musizieren geht nicht mit dieser Latenz nicht.

Durch diesen Link neugierig gemacht, war jedoch meine erste Reaktion: Latenzfreiheit zu versprechen ist unlauter!
https://www.tagesspiegel.de/kultur/digitale-musikproben-singen-ohne-zeitverzoegerung/25753960.html

Zur Ehrenrettung muss man sagen, das die Macher das auch nicht versprechen, nur der Tagesspiegel Journalist hat das in technischer Unkenntnis so formuliert.

Das Projekt Digital-Stage ist aus dem Hackathon der Bundesregierung #wirvsvirus hervorgegangen bei dem mutige und innovative Ideen gesucht wurden, die der Gesellschaft dabei helfen, jetzt solidarisch zu sein und gestärkt aus der aktuellen Situation durch Covid-19 hervorzugehen. Im Rahmen des Hackathons sind über 1.500 Ideen von mehr als 28.000 Freiwilligen entstanden.
https://wirvsvirushackathon.org/




https://www.youtube.com/embed/-5SKomORwT4


Eine dieser Projekte, das nun in der Umsetzung ist, ist Digital-Stage, ein Audio-Video-Konferenzsystem mit Punkt-zu-Punkt Verbindungen, das speziell für die Bedürfnisse von Musik, Tanz, Theater und bildender Kunst entwickelt wird.

Drei Versionen mit unterschiedlichem Aufwand und Qualität sind geplant:

1. Version: Browser-basiert, auch mit Smartphones nutzbar
2. Version: Lokal installiertes PC-Programm
3. Version: Käuflich erhältliche Hardware (ohne PC nutzbar)

Die Varianten würden eine Audioverzögerung bieten im Bereich von (1.) 500ms (2.) 50ms und (3.) 30ms.Der Dienst soll kostenlos für künstlerische Institutionen und freie Produktionen angeboten werden.

https://vimeo.com/412158765

Auf den Testaufruf hin (https://digital-stage.org/?page_id=12) meldete ich mich, um den vorhandenen Prototyp zu testen. Keine halbe Stunde später hatte ich eine persönliche Mail von Julian Klein, Direktor des !KF – Institut für künstlerische Forschung Berlin mit der Anfrage, ob ich mit im Team mitarbeiten würde.

Gestern habe ich nun erstmal auf verschiedenen Rechnern die Software installiert. Unbedingt ist der verwendete Rechner mit einem Ethernetkabel anzuschliessen, WLAN ist hier nicht geeignet um die zum Musizieren nötigen Latenzen zu erreichen.

Als erstes ist eine Registrierung eines Useraccounts auf der Seite https://www.soundjack.eu/ erforderlich, um dann an den Download der Soundjack Software zu kommen. Zu beachten ist, das Windows 10 den Download und die Installation versucht zu verhindern, da das Installationsprogramm nicht signiert ist. Man muss hier also geduldig insistieren und durch "weitere Informationen" "doch herunterladen" und "trotzdem installieren" die wohlmeinenden Verhinderungsversuche von Microsoft umschiffen.

Nach dem Start präsentiert das Programm folgendes Scriptfenster, das man in den Hintergrund schiebt.


Mac-Nutzer können jetzt schon die Stage betreten. Die meisten Windows Nutzer müssen noch eine weitere sperrige Software namens ASIO4all von der Seite http://www.asio4all.com/ herunterladen. Dieses lässt sich zumindest ohne Quengelei installieren, verschwindet dann im Nirgendwo und kam zumindest bei mir erstmal nicht mehr zum Vorschein. Erst nach einigem Gestocher konnte ich herausfinden das zwei virtual Webcam Treiber hier im Weg waren. An dieser Stelle wäre der Weg für normale Anwender auch schon zu Ende gewesen.

Warum braucht man neben der Webseite noch zwei Stücke Software?

Audio Stream Input/Output (ASIO) ist ein von Steinberg entwickeltes, mehrkanalfähiges Audiotransfer-Protokoll. Mittels ASIO wird es einer entsprechenden Software ermöglicht, auf die Multi-channel-Fähigkeiten vieler (professioneller) Sound- und Recordingkarten zuzugreifen. Außerdem ermöglicht ASIO die für den professionellen Einsatz geforderten geringen Latenzzeiten. In günstigen Konfigurationen kann die Latenz bis auf wenige Millisekunden reduziert werden.
ASIO wird von vielen Audio- und Midi-Sequenzern unterstützt; viele Audio-Interfacehersteller stellen ASIO-Treiber für ihre Produkte bereit. Unter Windows ist ASIO quasi der Software- und Hardware-Standard für echtzeitfähige Klangverarbeitung. Die in PCs und Notebooks verbauten Consumer Soundkarten wie Realtech oder die USB Skype Headsets wie meines von der Firma Sennheiser unterstützen das nicht. Deshalb wird dieser Universal Audiotreiber benötigt, der die Verbindung zu solchen Durchschnittsgeräten herstellt.

Nach erfolgreicher Installation kann man nun auf die Webseite http://www.soundjack.eu/index.php/stage wechseln.


Das Userinterface ist für IT Nerds oder Ingenieure mit Erklärung benutzbar, für normale Benutzer allerdings erstmal abschreckend. Im Prinzip ist aber folgendes zu tun:


  1. Unter Input und Output den Asiotreiber auswählen, und anschließend die Soundkarte auswählen.  (Unten rechts Rechtsklick auf den grünen Pfeil)
  2. Samplebuffer und Netzwerkbuffer so klein wie möglich auswählen - je kleiner desto geringere Latenz.
  3. Als ersten Test sich mit sich selber verbinden. Dort kann die Anzahl der Samples auf 1 gesetzt werden, hier ist die Latenz sehr klein.
  4. Beim zweiten Test sich mit dem Mirror Server verbinden und Samplebuffer, Netzwerkbuffer und Anzahl Samples so klein einstellen das das Samplefeld nur ab und an mal rot wird. Und man sich selber ohne zuviel Knacken so gut hören kann wie es für den angestrebten Zweck hinreichend ist. Ich konnte mein müdes Sennheiser Headset hier auf 38ms beschleunigen, das mit Zoom bei 250ms lag. Dieser Wert ist gut, damit kann man zusammen singen... dazu später.
  5. Nun ist noch eine Portweiterleitung auf dem eigenen Router einzutragen.
Dazu gibt es auch noch ein paar Erklär-Videos des Entwicklers:


Das 4te Video beschreibt auch wie man ein Portforwarding auf seinem Router für den eigenen Rechner einrichtet, damit eingehende UDP Datenströme ankommen.

Dazu öffnet man am besten erstmal eine Commandshell und informiert sich über die IP seines Rechners mittels des Befehls "ipconfig /all". Windowstaste drücken und cmd eintippen und dann den Befehl:


Hier sind zwei Informationen abzulesen und zu notieren. Die MAC-Adresse meines PC D8CB8A1C03BF und im Normalfall das Standardgateway 192.168.1.1.
Nun muss man sich zu seinem Router begeben, der sich gewöhnlich auf der Adresse des Default GW befindet und in dessen Konfiguration die Stelle zu finden, in der eine "Portweiterleitung" einstellbar ist. Manchmal heißt dieser Punkt auch statische Route (static route) und meint, dass wenn der Router ein Anklopfen auf in diesem Fall Port 5000/udp erfährt (das ist der Port auf dem Audiojack kommuniziert), er diese direkt an den eigenen PC weiterleitet. Das ist das was man unten im Screenshot sieht. Das kann sieht natürlich bei anderen Routermodellen vielleicht etwas anders aus - die semantische Information sollte aber im Prinzip das umfassen.
In meinem Fall ist es etwas komplexer, da hier auf 192.168.1.1 der Netgear Orbit Mesh Router DHCP macht und die Route auf dem Kabelrouter 192.168.0.1 einzutragen ist, der die Verbindung zum Internet macht. Bei den meisten Usern wird das zusammenfallen.



Nun endlich konnte ich mich das erste mal mit einem Mitglied aus dem Entwicklungsteam verbinden, und wir haben gemeinsam "Der Mond ist aufgegangen gesungen" ein leichtes Schleppen ist noch zu hören, aber ich kann bezeugen, mit 40ms kann man zusammen musizieren.

Hier kann noch etwas nachjustiert werden mittels dieses Reglers, der das eigene Echo etwas verspätet, wie es beim Singen in einer Kirche vorkommt.



Hier noch einmal ein Flussdiagramm das den Unterschied zu gewöhnlichen Konferenzprogramm erläutert. Der erste Unterschied ist das ASIO Protokoll, das alleine auf dem eigenen Rechner schon mal 150ms gut macht. Dann die Verbindungen, wie sie unten eingezeichnet sind. Bei anderen Konferenzprogrammen erfolgt die Verteilung des Audiodatenstroms vom Konferenzserver. Man spricht von einer Sterntopologie. Weswegen die Latenz nochmal gedoppelt wird da jedes Datenpaket ja einen Zwischenstop beim Konferenzserver einlegt. Hier ist das Konzept, das der Konferenzserver nur der Vermittler ist, der den Teilnehmer die Informationen über die anderen Teilnehmer zuspielt, die Verbindung zwischen je zwei Teilnehmern wird aber direkt (peer2peer) aufgebaut.



Verbessern kann man die Latenz hier mit einem externen USB Audio device das bereits eine ASIO Unterstützung mitbringt und nicht auf den Universaltreiber angewiesen ist. Diese Geräte fangen so im Bereich von 100€ an. Außerdem ist dann noch ein Mikrofon fällig mit einem XLR Anschluss, so um 50€ fängt das an und ein Stativ. Exemplarisch sei hier dieses Gerät genannt, ohne etwas über Qualität sagen zu können:
https://www.amazon.de/Steinberg-UR12-Audio-Interface-support/dp/B00RE98Y76

Fazit: Ein sehr lohnenswerter Ansatz der halten wird was er verspricht auch wenn das Userinterface im Moment noch nicht tauglich für gewöhnliche User ist.