Jamulus —
real-time collaborative music session
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] |
Jamulus, a low-latency audio client and server,
enables musicians to perform real-time “jam” sessions over the
internet. It is available across multiple platforms, so participants of any
field can communicate without specialist setup requirements. This is not
restricted to music, of course; other use (perhaps conferencing?) is also
possible.
One participant starts
Jamulus in Server mode,
ideally on a dedicated server (virtual) machine; all participants start the
(graphical) Client which transmits audio to the Server, receiving back a mixed
stream. Use of a metronome is recommended. Clients should be connected using
ethernet, not wireless, and use proper headphone and microphone connections,
not Bluetooth. The Server should run on a low-latency system, ideally not a
VM.
Running
Jamulus without any extra options launches
the full graphical Client.
The options are as follows:
-
-6
|
--enableipv6
- enable IPv6 support
-
-c
|
--connect
address
- (Client mode only) connect to the given Server
address
(hostname[:port])
at startup
-
-d
|
--discononquit
- (Server mode only) disconnect all Clients on quit
-
-e
|
--directoryserver
hostname
- (Server mode only) Register the Server with the given
Directory by setting the Directory Server Address to use to
hostname; see also
-o; to be a Directory Server, use
“
localhost
”
-
-F
|
--fastupdate
- (Server mode only) use 64 samples frame size mode, which
reduces latency if Clients connect with “enable small network
buffers” turned on; requires a faster CPU to avoid dropouts and
uses more bandwidth to connected Clients
-
--jsonrpcsecretfile
file
- (Server mode only) Set the path to a text
file containing an authentication string
for obtaining access to the JSON-RPC API. This option is required when
--jsonrpcport is used.
-
--jsonrpcport
port
- (Server mode only) Enables JSON-RPC API server to control
the application, set the TCP port number.
This API is experimental and may change. It
is only accessible from localhost. Please refer to the JSON-RPC API
Documentation.
-
-f
|
--listfilter
filter
- (Directory mode only) whitelist which Servers are allowed
to register on the server list; filter
must consist of semicolon-separated IP addresses
-
-h
| -? |
--help
- display a short help text and exit immediately
-
-i
|
--inifile
file
- (Client and non-headless Server mode only) override default
initialisation file with file
-
-j
|
--nojackconnect
- (Client mode only) do not automatically connect to
JACK
-
-L
|
--licence
- (Server mode only) require Clients to accept the agreement
shown in the welcome message (use -w
to set the text) before they are allowed
joining
-
-l
|
--log
file
- (Server mode only) enable logging to
file
-
-M
|
--mutestream
- (Client mode only) start in muted state
-
-m
|
--htmlstatus
file
- (Server mode only) write Server status and list of
connected Clients, in HTML format, to
file periodically
-
-n
|
--nogui
- disable the GUI
-
-o
|
--serverinfo
info
- (Registered Servers only) set Server location details,
formatted as
name
;
city;
locale
where locale is the numeric value of a
QLocale
; see
https://doc.qt.io/qt-5/qlocale.html#Country-enum
for a list
-
-P
|
--delaypan
- (Server mode only) start with delay panning enabled
-
-p
|
--port
number
- set the local UDP port to use to
number (default: 22124)
-
-Q
|
--qos
value
- set QoS value (iptos byte)
to use (default: 128)
-
-R
|
--recording
Directory
- (Server mode only) enable recording (but see
--norecord) storing tracks in
Directory
-
-s
|
--server
- start in Server mode
-
-T
|
--multithreading
- (Server mode only) use multithreading to make better use of
multi-core CPUs and support more Clients
-
-t
|
--notranslation
- disable translations, use built-in English strings
-
-u
|
--numchannels
- (Server mode only) set maximum number of channels (and,
therefore, users); default is 10, maximum is 150
-
-v
|
--version
- display version information and exit immediately
-
-w
|
--welcomemessage
message
- (Server mode only) show
message (may contain HTML and inline CSS)
to users on connect
-
-z
|
--startminimized
- (Server mode only) start with minimised window
-
--centralserver
hostname
- (Server mode only) deprecated alias for
--directoryserver
-
--clientname
name
- (Client mode only) set window title and JACK client
name
-
--ctrlmidich
MIDISetup
- (Client mode only) set MIDI controller channel to listen
on, control number offset and consecutive CC numbers (channels); format:
channel[
;f
off*
nchans][;p
off*
nchans][;s
off*
nchans][;m
off*
nchans]
The first semicolon-separated element sets the MIDI channel
Jamulus listens on for control messages. The
other elements specify the items to control 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 does not provide feedback as to the
current state of the Solo and Mute buttons so the controller must track
and signal their state locally.
-
--directoryfile
file
- (Directory mode only) remember registered Servers even if
the Directory is restarted
- --mutemyown
- (headless Client only) mute my channel in my personal
mix
- --norecord
- (Server mode only) do not automatically start recording
even if configured with -R
-
--serverbindip
ip
- (Server mode only) configure Legacy IP address to bind
to
-
--serverpublicip
ip
- (Server mode only) configure public legacy IP address when
both the Directory Server and the actual Server are situated behind the
same NAT, so that Clients can connect
- --showallservers
- (Client mode only) show all registered Servers in the
serverlist regardless whether a ping to the Server is possible or not
(debugging command)
- --showanalyzerconsole
- (Client mode only) show analyser console to debug network
buffer properties (debugging command)
Note that the debugging commands are not intended for general use.
Jamulus knows four modes of operation: Client mode
and three kinds of Server (Unregistered, Registered, Directory.) A
Unregistered Server is unlisted, Clients can only connect if given the address
(IP address and port). A Registered Server will contact a Directory (whose
address must be given at Server startup) and show up in that Server's list;
Clients can retrieve a list of Registered Servers from the Directory Server.
Several Registered Directories are operated by the Jamulus project; there is a
Directory for each genre, which is how Registered Jamulus Servers are
categorised into genres.
qjackctl(1)
- https://jamulus.io/wiki/Software-Manual
- online handbook
- https://jamulus.io/wiki/FAQ
- frequently asked questions
- https://jamulus.io/wiki/Running-a-Server
- documentation on Server configuration and types
- https://jamulus.io/wiki/Server-Linux#running-in-registered-mode
- current list of Directory Servers operated by the Jamulus
project, controlling the “genre”
- https://jamulus.io/wiki/Tips-Tricks-More
- verbose --ctrlmidich
documentation and other more or less useful information
- https://github.com/jamulussoftware/jamulus/blob/master/docs/JSON-RPC.md
- JSON-RPC API Documentation (see
--jsonrpcport above)
mirabilos ⟨
[email protected]⟩ wrote
this manual page for the Debian project, but it may be used elsewhere as well.
This manual page was derived from the source code and summarises some of the
information from the website, but it could be more helpful.
Some of the networking code assumes Legacy IP (IPv4).