Springe zum Inhalt

Diese Informationen sind für meine eigenen Chorproben gedacht und auch so formuliert. Sie könnten aber für Dritte nützlich sein, deshalb habe ich sie öffentlich gestellt.

Jamulus ist eine kostenlose Software, die es erlaubt, miteinander über das Internet zu musizieren. Die Zeitverzögerung („Latenz“) wird dabei durch verschiedene Maßnahmen auf ein (fast) erträgliches Minimum reduziert.

Woher kommt eigentlich diese Latenz? Es gibt durchaus verschiedene Schuldige! Die Signale werden zu einem zentralen Server gesendet, dort gemischt und wieder zu Dir zurückgespielt. Wir müssen diese Signalkette optimieren.

Was braucht man alles?

  1. Mikrofon. Ein hochwertiges klingt besser, es darf aber auch ein billiges sein, z. B. in einem Headset.
  2. Computer. Tablets und Smartphones sind leider außen vor. Die Anforderungen an den Computer sind nicht hoch, er muss nicht besonders neu oder schnell sein. Betriebssystem Windows, macOs oder Linux, alles ist möglich.
  3. Soundkarte bzw. Toneingang des Computers. Das ist unser größtes Problem. Die meisten verbauten Wandler sind recht langsam. (Es ist ja auch egal, ob man beim Musikhören den Ton eine Fünftelsekunde später hört.) Idealerweise verwendet man ein externes Audiointerface, aber das wird vielen zu teuer sein. Unter Windows muss man besondere Audiotreiber installieren, die das beste Timing aus der Hardware herauskitzeln. Audiogeräte, die per USB angeschlossen werden, besitzen übrigens eingebaute Wandler (von manchmal zweifelhafter Qualität).
  4. Internet-Verbindung. WLAN ist träge, man sollte eine Kabelverbindung zum heimischen Router herstellen. Ein Netzwerkkabel kostet 8 € — wenn der Computer einen Netzwerkanschluss („Ethernet“) hat. Ansonsten kämen 11 € für einen Ethernet-USB-Adapter dazu. Die Internet-Verbindung selbst sollte nicht zu popelig sein. 1 MBit/s Down- und Upstream reichen aus, das schafft selbst ein 16er-DSL-Anschluss.
    Wichtiger ist, dass der zentrale Server schnell erreichbar ist. (Die Zeit dafür nennt man Ping. Ein Ping von unter 20 ms wäre sensationell.)
  5. Ein zentraler Server, der das alles koordiniert. Darum habe ich mich schon gekümmert.
  6. Kopfhörer. Das Signal kommt vom Server auf dem gleichen Weg zurück, wird durch die Soundkarte gewandelt (= schon wieder Latenz) und landet in Deinem Kopfhörer. Würde man einen offenen Lautsprecher verwenden, würden wir nur ein furchtbares Rückkopplungspfeifen hören. Das Lautsprechersignal wird nämlich vom Mikro aufgenommen, wieder ausgegeben, wieder aufgenommen, wieder ausgegeben, wieder aufgenommen, wieder ausgegeben, wieder aufgenommen, wieder ausgegeben, wieder aufgenommen usw. Eine Schleife eben.
    Von Funk-Kopfhörern rate ich ab. Das erhöht die Latenz beträchtlich.

Strategie

Um nicht unnötig viel Geld auszugeben und trotzdem möglichst viele im Boot zu haben, sollten wir für einen ersten Testlauf folgendermaßen vorgehen:

Wir probieren das Ganze aus, und zwar mit der internen Soundkarte Eures Computers. Vielleicht ist sie ja schnell genug. Ihr braucht also nur Mikro und Kopfhörer (am besten ein Headset) und ein Netzwerkkabel. Vielleicht kann man sich das für den Testlauf auch im Bekanntenkreis ausborgen.

Wenn wir mit diesen Maßnahmen eine erträgliche Latenz (< 60 ms) erreichen: OK. Wenn nicht, müsste ein externes Audio-Interface her.

Einkaufstipps

  • Headset LOGITECH G332 (ca. 29 €) bei Amazon oder Saturn
    (Tipp von Claus)
  • LAN-Kabel („Ethernet-Kabel“) (ca 8 €) bei Amazon
  • evtl. Adapter Ethernet-USB bei (ca 11 €) bei Amazon

Hat mein Computer eine Ethernet-Buchse für das LAN-Kabel, oder benötige ich einen Adapter? Desktop-PCs haben sie in der Regel, Laptops nur manchmal. Sie sieht so aus:

Ethernet-Anschluss

Software und Inbetriebnahme

Die Software Jamulus gibt es kostenlos auf dieser Seite. Dort wird auch die Installation für die verschiedenen Betriebssysteme beschrieben. Für Windows-Anwender ohne spezielle Audiohardware mit eigenem Treiber ist die Installation des Treibers ASIO4All beschrieben.

Die Bedienung des Programms selbst ist recht simpel. Im Prinzip handelt es sich um ein glorifiziertes Mischpult.

Die Internet-Adresse unseres privaten Jamulus-Servers habt Ihr in einer E-Mail erfahren, oder sie steht auf einer internen Webseite. Sie sieht ungefähr so aus: 8******.online-server.cloud. Ihr müsst in der App auf Verbinden klicken und dann diese Adresse eingeben. Bitte haltet sie geheim.

Man kann sich in der App auch mit einem öffentlichen Server verbinden und den Kollegen beim Jammen zuhören.

Testlauf

Der Server ist die ganze Zeit online. Man kann das System also jederzeit testen — nur ist man dann eben der einzige. Man kann mit den Pegeln experimentieren und überprüfen, ob das eigene System übertrieben rauscht.

Da alle Beteiligten einen Kopfhörer tragen, sind ihre Ohren jedem Störsignal schutzlos ausgeliefert. Bedenke das, wenn Du hustest, Dein Headset auf den Schreibtisch knallst oder aus Versehen Deine Lautsprecher eingeschaltet hast, was zu einem hässlichen Feedback-Pfeifen für alle führt. Du kannst Dein Mikro kurz stumm schalten. (Jamulus-Fenster links: Stummschalten).

Wichtig ist ein guter Mikrofonpegel. Wenn Du sprichst, siehst Du die Aussteuerungsanzeige („Eingang“) links im Jamulus-Fenster. Bei den lautesten Gesangspassagen sollte die Pegel-Anzeige knapp den gelben Bereich erreichen. Im roten Bereich wird Dein Signal verzerren. Deinen Mikrofonpegel stellst Du nicht in der Jamulus-Software ein, sondern bei den Toneinstellungen Deines Computers. Wie das geht, ist von System zu System verschieden. Unten bei den Tipps stehen ein paar Hinweise dazu.

Ein sauberer Pegel erleichtert allen anderen das Einstellen eines guten Mixes!

Die Gesamtlautstärke dessen, was Du hörst, regelst Du am Lautstärkeregler Deines Computers wie immer. Mit dem Jamulus-Mischpult kannst Du genau festlegen, wie laut Du alle Teilnehmer hören möchtest (einschließlich Deiner). Du kannst sie sogar im Stereobild platzieren, z.B. Sopran nach links, Alt nach rechts. Dafür ist der PAN-Regler da (➝ steht für Panorama).

Die leichte Verzögerung kann ablenken. Konzentriere Dich auch bei der eigenen Stimme auf das Signal, das vom Server kommt, nicht auf das, was Du im eigenen Kopf hörst.

Tipps

Wohlmeinende Menschen haben ein paar Tipps aufgeschrieben. (Vielen Dank an Oli Häfele.)


Diese Anleitung wird laufend ergänzt. Ich freue mich über Feedback!

mobil, SMS oder WhatsApp:
01 52 / 29 56 77 68

Ich verkaufe eine Apple Watch 4 in der Farbe space gray. Die Uhr ist technisch in gutem Zustand, optisch hat sie Schönheitsfehler. Sie ist etwas über zwei Jahre alt, die Garantie ist abgelaufen.

Die Modellnummer der Apple Watch Series 4 (GPS) lautet A1978. Die technischen Daten kann man auf der Herstellerseite ansehen. Der Neupreis lag bei 459 €.

Armband

Das mitgelieferte Armband ist nicht verstellbar und wird für die meisten Handgelenke zu klein sein. Passende Armbänder von Drittanbietern gibt es für kleines Geld (schon ab 10 €, z.B. hier).

Kratzer

Die Uhr wurde zwei Jahre lang täglich getragen und zeigt Gebrauchspuren (s. Bilder). Auf der Vorderseite gibt es am oberen Rand des Displays kleine Kratzer, die aber nicht weiter stören. Auf der Rückseite sind größere und sogar ein recht tiefer Kratzer zu erkennen, der die Funktion und den Tragekomfort jedoch nicht beeinflusst.

Lieferumfang

Apple Watch Series 4 (GPS)Die Uhr selbst
Armband in blauSehr klein, nicht verstellbar
Ladekabel
USB-Netzteil
keine Bedienungsanleitung(Gibt’s aber auf www.apple.de.)

Festpreis: 150€. Verkauf ohne Gewährleistung oder Garantie. Natürlich stehe ich dafür ein, dass das Gerät der Beschreibung entspricht.

#

My choir wants to advertise the number of rehearsals before the next concert on their website.

The problem

My choir wants to advertise the number of rehearsals before the next concert. We have a list of rehearsal dates and need to count those who have not yet passed.

The solution (JavaScript)

<div id="result"></div>
	
<script>
	
function dateDtoE(s)
{
  h = s.split(".");
  return '20' + h[2] + '-' + ('0'+h[1]).substr(-2) + '-' + ('0'+h[0]).substr(-2); 
}
	
var dates2go = [ '28.6.18','5.7.18','12.7.18','19.7.18','26.7.18','2.8.18','9.8.18','30.8.18'];

var count = 0;
var now = new Date();
var i = dates2go.length;
while(i){
  i--;
  h = dateDtoE(dates2go[i]);
  var test = new Date(dateDtoE(dates2go[i]) + 'T22:00:00');
  if(test > now)
    count++;
}
document.getElementById('result').innerHTML = '<p>Still ' + count + ' rehearsals!</p>';
</script>

The function dateDtoE converts a date from German format to javascript format, ie. from 13.6.18 to 2018-06-13.

When creating a Date object from the list of dates, the script assumes 10 p.m. as time of day. This is when our rehearsals usually end.

Note the use of a while loop. Lazybones might have used for(i=0;i<dates2go.length;i++), thus recounting the number of elements in the array for every iteration of the loop.

Extra: A solution in Ruby

I know next-to-nothing about ruby, sorry.

require 'time'

def dateDtoE(s)
  h = s.split('.');
  return '20' + h[2] + '-' + h[1] + '-' + h[0]
end

dates2go = ['28.6.18','5.7.18','12.7.18','19.7.18','26.7.18','2.8.18','9.8.18','30.8.18']
count = 0
now = Time.now()
dates2go.each{ |d|
  h = Time.parse(dateDtoE(d));
  if h > now 
    count += 1
  end
}
puts "Still #{count} rehearsals."

Note how the loop looks more elegant. Furthermore, ruby’s date parser doesn’t rely on leading zeros.