# Jamulus

Jamulus is open source (GPL) networked music performance software that enables live rehearsing, jamming and performing with musicians located anywhere on the internet. Jamulus is written by Volker Fischer and contributors using C++. The Software is based on the Qt framework and uses the OPUS audio codec. It was known as "llcon" until 2013.
One of the problems with music playing over the internet in real time is latency - the time lag that occurs while (compressed) audio streams travel to and from each musician. Although the precedence effect means that small delays (up to around 40 ms) can be perceived as synchronous, longer delays make it practically impossible to play live together. A further problem is jitter, a type of packet delay due to changes in latency over time, which results in choppy or distorted sound. Long delays can even lead to packet loss (perceived as a 'blackout'). These can be alleviated by delay buffers or jitter buffers (both of which are present in Jamulus) - but these then add to the overall round-trip delay, so need to be balanced.
Popular video conferencing software such as Zoom or Teams is unsuited to this task as the latency can be much higher (Zoom recommends "a latency of 150ms or less" and jitter of "40ms or less", and in some 2020 tests was shown to have an average latency of 135 ms; the "Audio poor quality metrics" for Teams include having "Round-trip time >500 ms" and "Jitter >30 ms"). In addition, most such software is optimized for speech rather than music, so sustained musical notes can be misidentified as background noise and filtered out (although this can be alleviated to an extent via settings such as "Enable Original Sound"). Conferencing software is also often designed for one person to be heard at a time (the speaker gets 'focus'), to stop people talking over each other, but this makes playing music together impossible. In addition, conferencing software does not normally allow detailed setting of individual audio streams' volume or panning on the user side, both of which are integral features of Jamulus.
To reduce latency as much as possible, Jamulus makes use of compressed audio and the UDP protocol to transmit audio data. Total latency is composed of:
* network latency due to delays within the network - every 300km is responsible for at least 1 ms extra latency since the speed of light limits the data transport on internet.
* conversion latency - if analog-to-digital conversion or digital-to-analog conversion is not handled by special hardware, these conversions will add additional latency;
* audio latency from sound traveling through air, if the microphone and/or loudspeakers are not in immediate proximity. Every meter of distance adds around 3 ms delay due to the limitation of the speed of sound.
Jamulus is client-server based; each client transmits its own compressed audio to a server on the internet. The server mixes the (decompressed) audio stream for each user separately and re-transmits the individual compressed mix to each client. Each client has its own mixing console which controls its mix on the server.
Servers can be either public or private (termed "Registered" and "Unregistered", since Jamulus has no built-in user authentication mechanism), the former being listed by "directories" from which users can choose a server with the lowest latency for them.

## Usage

Already in 2018, Jamulus was attracting attention as a way for classical ensembles such as string quartets to rehearse at a distance, but its usage increased dramatically in 2020 due to the COVID-19 pandemic. In April 2020 it was being downloaded two thousand times per day, with the trend increasing. It was elected SourceForge 'Project of the Month' in June 2020. Jamulus Storband, Sweden's first "virtual big band" with over 20 members, also started that month. Many changes were later made to support larger groups, such as choirs with as many as 98 members as well as WorldJam, an initiative allowing musicians from all over the world to play together on a regular basis.
Having a synchronized metronome for participants of a session can be key to helping musicians keep the pace of the song and be in sync with each other. Numerous online metronomes are available, or other OpenSource tools may be used: as one example, Sychronome uses NTP (Network Time Protocol) with a network time server to sync metronomes for each Jamulus client via smartphones.