<audio> auf verschiedenen Rechnern synchronisieren – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self <audio> auf verschiedenen Rechnern synchronisieren Mon, 14 Feb 22 17:40:07 Z https://forum.selfhtml.org/self/2022/feb/14/audio-auf-verschiedenen-rchnern-synchronisieren/1796183#m1796183 https://forum.selfhtml.org/self/2022/feb/14/audio-auf-verschiedenen-rchnern-synchronisieren/1796183#m1796183 <p>Moin,</p> <p>ich möchte ausprobieren, ob mehrere Rechner (Slaves) per Internet mit einem Master so gesteuert werden können, dass Audio-Dateien synchron laufen.</p> <p>Zweck der Übung: Mehrkanal-Ton verteilt im Raum mit Tablets / Smartphones. Also spontan ohne technische Installation. Ein aktiver (bluetooth-)Lautsprecher pro Kanal darf sein.</p> <p><strong>A)</strong> Ein Master-Slave-Konzept für Chöre ist funktionsfähig, aber noch nicht auf Massentauglichkeit / Belastbarkeit getestet. Geht seit zwei Jahren leider nicht wegen Corona.</p> <p>Prinzip:</p> <p><a href="/images/9020b366-8db9-11ec-91ed-b42e9947ef30.jpg" rel="noopener noreferrer"><img src="/images/9020b366-8db9-11ec-91ed-b42e9947ef30.jpg?size=medium" alt="" loading="lazy"></a></p> <ul> <li>Alle laden sich das Liederbuch als Webseite vom Internet</li> <li>Dirigent klickt den radiobutton [master] an</li> <li>Sänger klicken [slave] an, <strong>im Sekundentakt</strong> fragt Ajax den Server ab</li> <li>Dirigent wählt einen Titel aus und tippt auf die Teilen-Schaltfläche</li> <li>Ajax meldet die Lied-Nr. an den Server</li> <li>Bei allen Sängern wird die Webseite auf diese Position gefahren</li> </ul> <p>Das ist nun nicht simultan, aber in einer vertretbar kurzen Zeit von ein bis zwei Sekunden, jedenfalls in meiner Testumgebung.</p> <p><strong>B)</strong> Mehrspurigkeit ist getestet, allerdings nur jeweils auf einer Webseite. Ich kann zwar vier Spuren in der Lautstärke getrennt regeln, aber jedes Gerät hat nur zwei Audio-Ausgänge rechts/links und (m)ein Bluetooth-Lautsprecher hat die so dicht nebeneinander, dass kein Raumklang ertönt. Auch wenn die Spuren schon mit rechts / mitte / links vorbereitet sind.</p> <p><a href="http://osmer.de/musik/liedtexte/canon_in_d_pachelbel_1_6.htm" rel="nofollow noopener noreferrer">Canon in D Pachelbel</a></p> <p>Frage:</p> <p>Welche Technik ist vonnöten, damit ein Startsignal, das über den Server läuft, zeitgleich bei allen Slaves ankommt? Ein minimaler Zeitverzug führt zu Hall, ein größerer zum Echo.</p> <p>Die Sekunden-Ajax-Abfrage ist zu grob und die vielen unnötigen Abfragen belasten den Server.</p> <p>Vielleicht gibt es auch lokale Alternativen, mir ist aber nicht bekannt, dass eine Webseite optische oder Bluetooth-Signale senden und empfangen kann.</p> <p>Bin gespannt auf Vorschläge.</p> <p>Gruß, Linuchs</p> <audio> auf verschiedenen Rechnern synchronisieren Mon, 14 Feb 22 18:05:06 Z https://forum.selfhtml.org/self/2022/feb/14/audio-auf-verschiedenen-rchnern-synchronisieren/1796184#m1796184 https://forum.selfhtml.org/self/2022/feb/14/audio-auf-verschiedenen-rchnern-synchronisieren/1796184#m1796184 <p>Guten Abend,</p> <blockquote> <p>ich möchte ausprobieren, ob mehrere Rechner (Slaves) per Internet mit einem Master so gesteuert werden können, dass Audio-Dateien synchron laufen.</p> </blockquote> <p>möglich ist das sicher, aber sicher nicht auf der Basis von HTTP, weil HTTP per se überhaupt keinen Zeitbezug hat. Die Information kann beim Client in 70ms ankommen, aber ebensogut erst in 26 Sekunden, je nach Verbindungsqualität, Traffic, Rechnerauslastung.</p> <blockquote> <p>Welche Technik ist vonnöten, damit ein Startsignal, das über den Server läuft, zeitgleich bei allen Slaves ankommt? Ein minimaler Zeitverzug führt zu Hall, ein größerer zum Echo.</p> </blockquote> <p>Du brauchst ein Protokoll, das von sich aus Echtzeitfähigkeit mitbringt, zum Beispiel <a href="https://de.wikipedia.org/wiki/Real-Time_Streaming_Protocol" rel="nofollow noopener noreferrer">RTSP</a>. Die in den Browsern integrierten Player können das größtenteils, aber du brauchst einen RTSP-Server auf deinem zentralen Gerät, das alles koordinieren soll.</p> <p>Immer eine Handbreit Wasser unterm Kiel<br>  Martin</p> <div class="signature">-- <br> The taste of love: The more you get, the more you want<br> (aus <em>The Lightning Seeds: Sense</em>) </div> <audio> auf verschiedenen Rechnern synchronisieren Mon, 14 Feb 22 19:06:47 Z https://forum.selfhtml.org/self/2022/feb/14/audio-auf-verschiedenen-rchnern-synchronisieren/1796186#m1796186 https://forum.selfhtml.org/self/2022/feb/14/audio-auf-verschiedenen-rchnern-synchronisieren/1796186#m1796186 <p>Hallo Martin,</p> <p>eine Alternative, die ich mir vorstellen kann, ist eine Synchronisierung der Clients mittels NTP auf einen einheitlichen Timestamp. Wenn man kein NTP hat, könnte man auch mittels Ajax einen Server-Timestamp beschaffen und die Differenz zur Systemzeit bestimmen.</p> <p>Ein billiger NTP Nachbau wäre ein Ajax-Request "GetTime". Man misst die Roundtrip-Zeit und zieht deren halben Wert von gelieferten Serverzeitpunkt ab, damit hat man eine Näherung an die echte Serverzeit. Entscheidend ist nur, dass es serverseitig nicht zu Queueing kommt, damit keine Queue-Wartezeit die Messung der Roundtrip-Zeit stört. Ggf. macht man die Requests mehrfach und verwendet den mit der kürzesten Roundtrip-Zeit.</p> <p>Nach der Zeitsynchronisierung könnte man eine Startzeit vorgeben, zu der alle Clients gleichzeitig loslegen. Ist kein Realtime, kommt aber nahe.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> <audio> auf verschiedenen Rechnern synchronisieren Mon, 14 Feb 22 21:20:40 Z https://forum.selfhtml.org/self/2022/feb/14/audio-auf-verschiedenen-rchnern-synchronisieren/1796187#m1796187 https://forum.selfhtml.org/self/2022/feb/14/audio-auf-verschiedenen-rchnern-synchronisieren/1796187#m1796187 <p>Hallo Rolf,</p> <blockquote> <p>eine Alternative, die ich mir vorstellen kann, ist eine Synchronisierung der Clients mittels NTP auf einen einheitlichen Timestamp. Wenn man kein NTP hat, könnte man auch mittels Ajax einen Server-Timestamp beschaffen und die Differenz zur Systemzeit bestimmen.</p> </blockquote> <p>ja, vielleicht "funktioniert das irgendwie", aber es kommt mir vor, als wollte man ein Steak grillen, indem man es mit einem Bunsenbrenner röstet. Kann funktionieren, kann aber auch ganz schnell übers Ziel hinausschießen oder nur partiell die Oberfläche verbrennen, während das Innere noch roh bleibt.</p> <blockquote> <p>Ein billiger NTP Nachbau wäre ein Ajax-Request "GetTime". Man misst die Roundtrip-Zeit und zieht deren halben Wert von gelieferten Serverzeitpunkt ab, damit hat man eine Näherung an die echte Serverzeit. Entscheidend ist nur, dass es serverseitig nicht zu Queueing kommt, damit keine Queue-Wartezeit die Messung der Roundtrip-Zeit stört. Ggf. macht man die Requests mehrfach und verwendet den mit der kürzesten Roundtrip-Zeit.</p> </blockquote> <p>Man kann sich oft irgendwie mit Krücken helfen - aber ist das immer sinnvoll?</p> <blockquote> <p>Nach der Zeitsynchronisierung könnte man eine Startzeit vorgeben, zu der alle Clients gleichzeitig loslegen. Ist kein Realtime, kommt aber nahe.</p> </blockquote> <p>Aber die Reaktion auf spontane Ereignisse ist dann auch wieder Murx.</p> <p>Immer eine Handbreit Wasser unterm Kiel<br>  Martin</p> <div class="signature">-- <br> The taste of love: The more you get, the more you want<br> (aus <em>The Lightning Seeds: Sense</em>) </div>