Jamulus

Uit Sessie
Ga naar: navigatie, zoeken

Jamulus is een open source programma waarmee je met behulp van je eigen computer thuis realtime kunt meedoen met andere muzikanten/zangers.

Installeren

Het installeren van Jamulus is niet zo lastig:

Zonder goed geïnstalleerde (externe!) microfoon kun je niets. Zorg dat dat eerst geregeld is...

De knop 'Bal' krijg je alleen te zien als je stereo ontvangst hebt ingesteld.
Jamulus-profiel.png
Jamulus-instellingen.png

Om te zien wie er op dit moment online zijn op de publieke Jamulus servers kijk je op https://jamulus.live. Hiervoor hoef je Jamulus niet te installeren (maar je kunt ook niets horen of meespelen).

Inregelen

  • gebruik altijd een bedrade koptelefoon (geen bluetooth o.i.d.)
  • gebruik altijd een externe microfoon; de microfoon in een laptop pikt allerlei onbedoelde geluiden op en is voor de andere jammers onprettig
  • gebruik geen WIFI - dat betekent een lange kabel naar je router (en eventueel een USB-ethernet netwerkaansluiting, als je laptop geen ethernet aansluiting heeft). Als er iemand mee probeert te spelen in een sessie die WIFI gebruikt maakt die het spelen voor anderen nagenoeg onmogelijk.

Geen wifi

WIFI is reuze handig als het niet uitmaakt of gegevens een paar honderd milliseconden eerder of later weergegeven worden; een film kijken waarbij beeld en geluid een seconde of meer vertraging oploopt is geen enkel probleem, maar vertraging van een halve seconde maakt een videogesprek al lastiger, en samenspelen volstrekt onmogelijk. De term die in dit verband gebruikt wordt is 'latency': vertraging in milliseconden tussen twee partijen. Een grote latency kan een boel oorzaken hebben. WIFI is daar vaak een grote factor in.

  • Kijk wat je huidige internetverbinding 'doet' met dslreports.com/speedtest. Bandbreedte is voor jammen meestal geen bottleneck tenzij de uploadbandbreedte echt veel te klein is.
  • Gebruik zo mogelijk een directe netwerkkabel tussen je modem en de computer; hubs en switches leveren allemaal weer een beetje extra latency...
  • Stel Windows zo in dat de kabelverbinding ook echt gebruikt wordt: in Windows 10 mag het wifi-icoontje Wifi-icon.png rechtsonderin niet zichtbaar zijn en het teken voor vaste verbinding Fixedethernet.png weergeven.

Latency klein houden

Om een beetje idee te krijgen van latency is een (heel klein) beetje natuurkunde handig. Geluid plant zich voort door lucht met ongeveer 340 meter per seconde. Als onweer een kilometer ver weg is duurt het 1000/340 ofwel ongeveer 3 seconden voor je de knal hoort na de flits. Als je medemuzikant op 34 meter afstand staat te spelen dan doet het geluid er 34/340 ofwel 100ms over - samenspelen lukt dan niet meer. De latency moet daarom minder dan ca 25ms blijven (vergelijkbaar met 8,5 meter afstand - niet ideaal maar waarschijnlijk nog net te doen).

Latency wordt veroorzaakt door:

  • de tijd die het geluid nodig heeft om van het instrument naar de microfoon te komen (verwaarloosbaar, als je vlak bij de microfoon speelt). Als je microfoon verder weg staat: voor iedere meter komt er ca 3ms latency bij...
  • de tijd die de computer nodig heeft om van een analoog microfoonsignaal een digitaal signaal te maken - op een langzame computer kan dat een serieuze bijdrage geven; gebruik dan een USB-microfoon of een USB Audio interface zoals de Behringer U-Phoria UMC202HD van Thomann of Focusrite Scarlett Solo van Bax waar je ook een condensatormicrofoon en/of gitaar/piano direct op aan kunt sluiten, evenals je hoofdtelefoon. Een audio interface die als 'zero-latency' wordt verkocht heeft een latency van minder dan 13ms voor zowel de ingang als voor de uitgang.
  • de tijd die de pakketjes nodig hebben om van de ene computer naar de andere computer te komen. Hierbij speelt fysieke afstand en de route die de pakketjes nemen een rol. Even versimpeld voorgesteld, digitale pakketjes reizen in ieder geval niet sneller dan met de lichtsnelheid ca 300.000km/s. In vacuüm zou dat neerkomen op 3,3 microseconde per km. In de praktijk (glasvezel) wordt dat 5 μs. Voor iemand in Nieuw-Zeeland (20.000km) wordt dat minstens 100ms. In Nederland zijn afstanden nooit veel meer dan 400km en de (theoretische) extra latency ten gevolge van de afstand is dan niet meer dan 2 ms, ofwel meestal verwaarloosbaar. In de praktijk kan de afstand tot de Jamulus server veel grotere latency veroorzaken dan theoretisch berekend. Een milliseconde of 10 is niet ongewoon.
  • de kwaliteit van je verbinding. In de praktijk krijg je ook bij een uitstekende netwerkverbinding er toch nog wat latency bij, ten gevolge van buffering. Een grote buffer zorgt (meestal) voor prima geluid, ten koste van meer latency. Reken op minstens 10ms.
  • ieder apparaat in de verbindingsketen (modem, switch, hub, converter) voegt weer wat extra netwerklatency toe.
  • de tijd die nodig is om van de digitale audio weer iets hoorbaars te maken. Ook hier zal de computerhardware weer een vergelijkbare rol spelen als bij het microfoonsignaal.
  • de afstand tussen de luidspreker en je oren; bij koptelefoongebruik nagenoeg 0.

In de praktijk kun je in Nederland onder ideale omstandigheden je latency (algehele vertraging) tot ca. 20 ms beperken. Samenspelen wordt al snel erg lastig met meer dan 50ms.

Jitter

Jitter is het verschijnsel dat het signaaltransport geen stabiele/constante verwerkingstijd heeft. Als pakketjes er soms kort en dan weer langer over doen moet het signaal tussentijds worden opgeslagen (gebufferd worden) wat extra latency veroorzaakt. Als het jitterbuffer te klein is zullen er pakketjes verloren gaan met kliks of stiltes tot gevolg.

Frame Size

Voor een robuust signaal is het prettig om grotere pakketjes te gebruiken. Kleinere pakketjes maken de totale latency kleiner. Als je basisverbinding op orde is (geen wifi) kun je je Frame Size kleiner maken, je loopt wel risico op slechtere audiokwaliteit (klik/kraakgeluiden) maar de totale latency wordt kleiner. De buffervertraging kun je eenvoudig berekenen met:

tbuffer = (n . w) / f
n: aantal frames (1-16)
w: framesize (32/64/128/256)
f: samplefrequentie (48000 Hz)

met als aantal frames 4

  • framesize 32: (32 * 4 / 48000) → 2.7 ms
  • framesize 64 → 5.3 ms
  • framesize 128 → 10.7 ms

Zie ook