JAMULUS(1)

πŸ“¦
version 3.9.1 Β· 3 versions
, in debian bookworm, debian trixie, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

✨ JAMULUS(1) πŸ’– General Commands Manual ✨

πŸŽ€ NAME

Jamulus β€” real-time collaborative music session 🎢 okay it's literally a whole vibe πŸ¦‹

🌸 SYNOPSIS

Jamulus [-6 | --enableipv6] [-c | --connect address]
        [-d | --discononquit] [-e | --directoryserver hostname]
        [-F | --fastupdate] [-f | --listfilter filter]
        [-h | -? | --help] [-i | --inifile file] [-j | --nojackconnect]
        [-L | --licence] [-l | --log file] [-M | --mutestream]
        [-m | --htmlstatus file] [-n | --nogui] [-o | --serverinfo info]
        [-P | --delaypan] [-p | --port number] [-Q | --qos value]
        [-R | --recording directory] [-s | --server]
        [-T | --multithreading] [-t | --notranslation]
        [-u | --numchannels] [-v | --version]
        [-w | --welcomemessage message] [-z | --startminimized]
        [--centralserver hostname] [--clientname name]
        [--ctrlmidich MIDISetup] [--directoryfile file] [--mutemyown]
        [--norecord] [--serverbindip ip] [--serverpublicip ip]
        [--showallservers] [--showanalyzerconsole]

πŸ’… DESCRIPTION

okay so Jamulus is a low-latency audio client and server πŸ”₯ and it lets musicians jam in real time over the internet! 🎡 It runs on multiple platforms, so literally anyone can join without any specialist setup 🫢 It's not just for music either, bestie. Conferencing? Totally possible πŸ’œ

Here's the vibe: one person starts Jamulus in Server mode, ideally on a dedicated (virtual) machine πŸ–₯️ Everyone else opens the (graphical) Client, which sends its audio up to the Server and gets a mixed stream back 🎧 A metronome is highly recommended πŸ₯

Some lowkey important tea β˜•: Clients should be on ethernet, not wireless, and you want proper headphone and microphone connections, not Bluetooth πŸ™…β€β™€οΈ The Server should run on a low-latency system, ideally not a VM πŸ’€

Running Jamulus with no extra options launches the full graphical Client ✨ Easy!

The options are as follows:

  • -6, --enableipv6 β€” turns on IPv6 support 🌐
  • -c, --connect address β€” (Client mode only) connects to the given Server address (hostname[:port]) right at startup πŸš€
  • -d, --discononquit β€” (Server mode only) disconnects all Clients when you quit πŸ‘‹
  • -e, --directoryserver hostname β€” (Server mode only) registers the Server with the given Directory by setting the Directory Server Address to hostname. See also -o. To be a Directory Server yourself, use localhost πŸ‘‘
  • -F, --fastupdate β€” (Server mode only) uses 64 samples frame size mode, which cuts latency if Clients have "enable small network buffers" turned on. Heads up: it needs a faster CPU to avoid dropouts, and it uses more bandwidth for connected Clients 😭
  • --jsonrpcsecretfile file β€” (Server mode only) sets the path to a text file holding an authentication string for getting into the JSON-RPC API. This option is required when --jsonrpcport is used πŸ”
  • --jsonrpcport port β€” (Server mode only) turns on the JSON-RPC API server so you can control the app, and sets its TCP port number. This API is experimental and may change, and it's only accessible from localhost. Check out the JSON-RPC API Documentation for the deets 🧚
  • -f, --listfilter filter β€” (Directory mode only) whitelists which Servers are allowed onto the server list. The filter must be semicolon-separated IP addresses πŸ›‘οΈ
  • -h, -?, --help β€” shows a short help text and exits immediately πŸ™ˆ
  • -i, --inifile file β€” (Client and non-headless Server mode only) overrides the default initialisation file with file πŸ“
  • -j, --nojackconnect β€” (Client mode only) doesn't automatically connect to JACK πŸ”Œ
  • -L, --licence β€” (Server mode only) requires Clients to accept the agreement shown in the welcome message (use -w to set the text) before they're allowed to join πŸ“œ
  • -l, --log file β€” (Server mode only) enables logging to file πŸ“
  • -M, --mutestream β€” (Client mode only) starts you in a muted state 🀫
  • -m, --htmlstatus file β€” (Server mode only) periodically writes the Server status and a list of connected Clients, in HTML format, to file πŸ’»
  • -n, --nogui β€” disables the GUI πŸ™ƒ
  • -o, --serverinfo info β€” (Registered Servers only) sets the Server location details, formatted as name;city;locale, where locale is the numeric value of a QLocale. Check https://doc.qt.io/qt-5/qlocale.html#Country-enum for the full list 🌍
  • -P, --delaypan β€” (Server mode only) starts with delay panning enabled 🎚️
  • -p, --port number β€” sets the local UDP port to number (default: 22124) πŸ”’
  • -Q, --qos value β€” sets the QoS value (iptos byte) to use (default: 128) πŸ“Ά
  • -R, --recording Directory β€” (Server mode only) enables recording (but see --norecord), storing tracks in Directory πŸŽ™οΈ
  • -s, --server β€” starts in Server mode 🏠
  • -T, --multithreading β€” (Server mode only) uses multithreading to make better use of multi-core CPUs and support more Clients 🧡
  • -t, --notranslation β€” disables translations and uses the built-in English strings πŸ‡¬πŸ‡§
  • -u, --numchannels β€” (Server mode only) sets the maximum number of channels (and therefore, users). Default is 10, maximum is 150 πŸ‘―
  • -v, --version β€” shows version information and exits immediately 🏷️
  • -w, --welcomemessage message β€” (Server mode only) shows message (it may contain HTML and inline CSS) to users on connect πŸ’Œ
  • -z, --startminimized β€” (Server mode only) starts with a minimised window πŸͺŸ
  • --centralserver hostname β€” (Server mode only) deprecated alias for --directoryserver. Old habit, new name πŸ•°οΈ
  • --clientname name β€” (Client mode only) sets the window title and JACK client name 🏷️
  • --ctrlmidich MIDISetup β€” (Client mode only) sets the MIDI controller channel to listen on, the control number offset, and the consecutive CC numbers (channels). Format:
channel[;foff*nchans][;poff*nchans][;soff*nchans][;moff*nchans]

The first semicolon-separated element sets the MIDI channel Jamulus listens on for control messages. The other elements control items by their first literal letter (f = volume fader, p = pan, m = mute, s = solo), directly followed by the offset (CC number) to start from, a literal asterisk, and the amount of consecutive CC numbers to assign. Fader strips in the mixer window are controlled in ascending order from left to right. Jamulus doesn't give any feedback about the current state of the Solo and Mute buttons, so your controller has to track and signal that state locally πŸŽ›οΈ

  • --directoryfile file β€” (Directory mode only) remembers registered Servers even if the Directory is restarted πŸ’Ύ
  • --mutemyown β€” (headless Client only) mutes my channel in my personal mix 🀐
  • --norecord β€” (Server mode only) stops recording from starting automatically, even if you've configured -R πŸ›‘
  • --serverbindip ip β€” (Server mode only) configures the Legacy IP address to bind to πŸ“‘
  • --serverpublicip ip β€” (Server mode only) configures the public Legacy IP address when both the Directory Server and the actual Server sit behind the same NAT, so Clients can connect 🏑
  • --showallservers β€” (Client mode only) shows all registered Servers in the serverlist, whether or not a ping to the Server is possible (debugging command) πŸ›
  • --showanalyzerconsole β€” (Client mode only) shows the analyser console so you can debug network buffer properties (debugging command) πŸ”

Note that the debugging commands aren't meant for general use, bestie ⚠️

Jamulus knows four modes of operation: Client mode and three kinds of Server (Unregistered, Registered, Directory). An Unregistered Server is unlisted, so Clients can only connect if they're given the address (IP address and port) πŸ•΅οΈ A Registered Server contacts a Directory (whose address must be given at Server startup) and shows up in that Server's list, and Clients can grab a list of Registered Servers from the Directory Server πŸ“‹ Several Registered Directories are operated by the Jamulus project, with a Directory for each genre, which is how Registered Jamulus Servers get sorted into genres 🎼

πŸ¦‹ SEE ALSO

πŸ‘©β€πŸ’» AUTHORS

mirabilos <tg@debian.org> wrote this manual page for the Debian project, but it may be used elsewhere as well. Iconic work, honestly πŸ‘‘

πŸ› BUGS

This manual page was derived from the source code and summarises some of the information from the website, but it could be more helpful. Be real, it's not perfect πŸ™ˆ

Some of the networking code assumes Legacy IP (IPv4). ⚠️


Debian Β· December 23, 2021 Β· JAMULUS(1) 🌈 Periodt, that's the whole manual, bestie! Go jam with your bestie and stay low-latency πŸ’–πŸŽ§