audio/jamulus: Updated for version 3.8.1.

Signed-off-by: B. Watson <yalhcru@gmail.com>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
B. Watson 2021-12-07 13:05:17 -05:00 committed by Willy Sudiarto Raharjo
parent a79a62e75b
commit b57e04419b
No known key found for this signature in database
GPG Key ID: 3F617144D7238786
6 changed files with 363 additions and 43 deletions

View File

@ -5,12 +5,13 @@ By default, the jamulus binary can function as:
- Headless server (-s and -n options, neither X nor jackd required)
Even though the headless mode doesn't require a running X server,
it still requires the qt4 and X11 shared libraries. There's no way to
compile jamulus without these.
it still requires the Qt5 shared libraries. There's no way to compile
jamulus without these.
If you launch jamulus from the desktop start menu, you'll get the client.
If you want to run a server, you'll have to either run it from the command
line, or create a different launcher/shortcut for jamulus as a server.
You can launch jamulus as either a client or a server with GUI from
the desktop start menu. If you want to run a headless server, you'll
have to either run it from the command line, or create a different
launcher/shortcut for jamulus as a headless server (with -n option).
If you want to run a headless server that starts at boot time (like
a regular daemon), currently the best way to do this is to call it
@ -18,13 +19,19 @@ from /etc/rc.d/rc.local. There's no "daemon" option, so you'll have to
background it with &, and redirect stdout/stderr somewhere (see also
the -l <logfile> option).
Dedicated server only build
----------------------------
If you *really* want to build a dedicated jamulus server, you can do so
by setting SERVERONLY=yes in the SlackBuild's environment. In this case,
you can ignore the REQUIRES="jack" line in the .info file.
The resulting jamulus binary will work exactly as the regular jamulus,
except it doesn't make sound nor accept audio input from your instrument.
It'll only be useful as a server (with -s and possibly also -n).
The resulting jamulus binary will work only as a dedicated server.
It wont't make sound nor accept audio input from your instrument, and
it won't require X11 shared libraries (though it still does require
Qt5 shared libs). It'll only be useful as a server, and it'll have to
be run from the command line, or a shell script (won't show up in your
desktop start menu).
The *only* reason to ever do this is if you really *really* don't want
to install jack for some reason.

View File

@ -1,3 +1,9 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
/usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
fi
fi

277
audio/jamulus/jamulus.1x Normal file
View File

@ -0,0 +1,277 @@
.\" Manual page for jamulus
.\" Copyright (c) 2021
.\" mirabilos <tg@debian.org>
.\" Published under the same terms as jamulus itself.
.\"-
.Dd December 7, 2021
.Dt JAMULUS "1x" "SlackBuilds.org"
.Os jamulus-3.8.1
.Sh NAME
.Nm jamulus
.Nd real-time collaborative music session
.Sh SYNOPSIS
.Nm
.Op Fl 6 | Fl \-enableipv6
.Op Fl c | Fl \-connect Ar address
.Op Fl d | Fl \-discononquit
.Op Fl e | Fl \-directoryserver Ar hostname
.Op Fl e | Fl \-directoryfile Ar filename
.Op Fl F | Fl \-fastupdate
.Op Fl f | Fl \-listfilter Ar filter
.Op Fl h | Fl \&? | Fl \-help
.Op Fl i | Fl \-inifile Ar file
.Op Fl j | Fl \-nojackconnect
.Op Fl L | Fl \-licence
.Op Fl l | Fl \-log Ar file
.Op Fl M | Fl \-mutestream
.Op Fl m | Fl \-htmlstatus Ar file
.Op Fl n | Fl \-nogui
.Op Fl o | Fl \-serverinfo Ar info
.Op Fl p | Fl \-port Ar number
.Op Fl P | Fl \-delaypan
.Op Fl Q | Fl \-qos Ar value
.Op Fl R | Fl \-recording Ar directory
.Op Fl s | Fl \-server
.Op Fl T | Fl \-multithreading
.Op Fl t | Fl \-notranslation
.Op Fl u | Fl \-numchannels Ar channels
.Op Fl v | Fl \-version
.Op Fl w | Fl \-welcomemessage Ar message
.Op Fl z | Fl \-startminimized
.Op Fl \-clientname Ar name
.Op Fl \-ctrlmidich Ar MIDISetup
.Op Fl \-mutemyown
.Op Fl \-norecord
.Op Fl \-serverpublicip Ar ip
.Op Fl \-showallservers
.Op Fl \-showanalyzerconsole
.Sh DESCRIPTION
.Nm jamulus ,
a low-latency audio client and server, enables musicians to perform real-time
.Dq 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
.Pq perhaps conferencing?
is also possible.
.Pp
One participant starts
.Nm
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.
.Pp
Running
.Nm
without any extra options launches the full graphical client.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl 6 | Fl \-enableipv6
enable IPv6 addressing (IPv4 is always enabled).
.It Fl c | Fl \-connect Ar address
.Pq client mode only
connect to the given server
.Ar address
.Pq Ar hostname Ns Op Ar :port
at startup
.It Fl d | Fl \-discononquit
.Pq server mode only
disconnect all clients on quit
.It Fl e | Fl \-directoryserver Ar hostname
.Pq server mode only
make the server public and set its genre by setting the address
of the directory server to use to
.Ar hostname ;
see also
.Fl o ;
to be a directory server, use
.Dq Li localhost
.It Fl F | Fl \-fastupdate
.Pq server mode only
use 64 samples frame size mode, which reduces latency if clients connect with
.Dq enable small network buffers
turned on; requires a faster CPU to avoid dropouts and uses more bandwidth to
connected clients
.It Fl f | Fl \-listfilter Ar filter
.Pq directory server mode only
whitelist servers allowed to register on the server list;
.Ar filter
must consist of semicolon-separated IP addresses
.It Fl h | Fl \&? | Fl \-help
display a short help text and exit immediately
.It Fl i | Fl \-inifile Ar file
.Pq client and non-headless server mode only
override default initialisation file with
.Ar file
.It Fl j | Fl \-nojackconnect
.Pq client mode only
do not automatically connect to JACK
.It Fl L | Fl \-licence
.Pq server mode only
require clients to accept the agreement shown in the welcome message
.Pq use Fl w No to set the text
before they are allowed joining
.It Fl l | Fl \-log Ar file
.Pq server mode only
enable logging to
.Ar file
.It Fl M | Fl \-mutestream
.Pq client mode only
start in muted state
.It Fl m | Fl \-htmlstatus Ar file
.Pq server mode only
write server status and list of connected clients, in HTML format, to
.Ar file
periodically
.It Fl n | Fl \-nogui
disable the GUI
.It Fl o | Fl \-serverinfo Ar info
.Pq public servers only
set server location details, formatted as
.Sm off
.Xo
.Ar name Li \&;
.Ar city Li \&;
.Ar locale
.Xc
.Sm on
where
.Ar locale
is the numeric value of a
.Li QLocale ;
see
.Pa https://doc.qt.io/qt\-5/qlocale.html#Country\-enum
for a list
.It Fl p | Fl \-port Ar number
set the local UDP port to use to
.Ar number
.Pq default: 22124
.Op Fl P | Fl \-delaypan
.Pq server mode only
start with delay panning enabled.
.It Fl Q | Fl \-qos Ar value
set the QoS value. Default is 128. Disable with 0.
.It Fl R | Fl \-recording Ar directory
.Pq server mode only
enable recording
.Pq but see Fl \-norecord
storing tracks in
.Ar directory
.It Fl s | Fl \-server
start in server mode
.It Fl T | Fl \-multithreading
.Pq server mode only
use multithreading to make better use of multi-core CPUs and
support more clients
.It Fl t | Fl \-notranslation
disable translations, use built-in English strings
.It Fl u | Fl \-numchannels Ar channels
.Pq server mode only
set maximum number of channels
.Pq and , therefore , users ;
default is 10, maximum is 150
.It Fl v | Fl \-version
display version information and exit immediately
.It Fl w | Fl \-welcomemessage Ar message
.Pq server mode only
show
.Ar message
.Pq may contain HTML and inline CSS
to users on connect
.It Fl z | Fl \-startminimized
.Pq server mode only
start with minimised window
.It Fl \-clientname Ar name
.Pq client mode only
set window title and JACK client name
.It Fl \-ctrlmidich Ar MIDISetup
.Pq client mode only
set MIDI controller channel to listen on, control number offset and
consecutive CC numbers (channels); format:
.Sm off
.Xo
.Ar channel
.Op Li \&;f Ar off Li \&* Ar nchans
.Op Li \&;p Ar off Li \&* Ar nchans
.Op Li \&;s Ar off Li \&* Ar nchans
.Op Li \&;m Ar off Li \&* Ar nchans
.Xc
.Sm on
.Pp
The first semicolon-separated element sets the MIDI channel
.Nm
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.
.Nm
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.
.Op Fl e | Fl \-directoryfile Ar filename
.Pq server mode only
enable server list persistence, set file name.
.It Fl \-mutemyown
.Pq headless client only
mute my channel in my personal mix
.It Fl \-norecord
.Pq server mode only
do not automatically start recording even if configured with
.Fl R
.It Fl \-serverpublicip Ar ip
.Pq 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
.It Fl \-showallservers
.Pq client mode only
show all registered servers in the serverlist regardless whether a ping
to the server is possible or not
.Pq debugging command
.It Fl \-showanalyzerconsole
.Pq client mode only
show analyser console to debug network buffer properties
.Pq debugging command
.El
.Pp
Note that the debugging commands are not intended for general use.
.Pp
.Nm jamulus
knows four modes of operation: client mode and three kinds of server
.Pq private , public , directory .
A private server is unlisted, clients can only connect if given
the address (IP address and port).
A public server will contact a directory server (whose address must be
given at server startup) and show up in that server's list; clients
can retrieve a list of public servers from the directory server.
Several directory servers are operated by the Jamulus project; there is
a directory server for each genre, which is how public servers are
categorised into genres.
.Sh SEE ALSO
.Xr qjackctl 1
.Bl -tag -width Ds
.It Pa https://jamulus.io/wiki/
The full Jamulus documentation.
.El
.Sh AUTHORS
.An -nosplit
.An mirabilos Aq tg@debian.org
wrote this manual page for the Debian project,
but it may be used elsewhere as well.
.An B. Watson Aq yalhcru@gmail.com
modified this man page slightly for the SlackBuilds.org project and
jamulus 3.8.1.
.Sh 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.
.Pp
Some of the networking code seems to assume Legacy IP
.Pq IPv4 .

View File

@ -6,22 +6,22 @@
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# Possible TODOs:
# - write a man page
# - have slack-desc show whether or not SERVERONLY=yes
# 20211207 bkw:
# - update for v3.8.1.
# - add 'headless' option to SERVERONLY=yes config.
# - new-style icons.
# - man page.
# - dynamic slack-desc.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=jamulus
VERSION=${VERSION:-3.4.3}
VERSION=${VERSION:-3.8.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
# I hate capitalized package names, so:
SRCNAM=Jamulus
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@ -30,9 +30,6 @@ if [ -z "$ARCH" ]; then
esac
fi
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@ -60,7 +57,7 @@ set -e
# Check this before doing anything else.
if [ "${SERVERONLY:-no}" = "yes" ]; then
EXTRACONF="CONFIG+=nosound"
EXTRACONF="CONFIG+=nosound CONFIG+=headless"
elif ! pkg-config --exists jack; then
cat <<EOF
@ -80,45 +77,78 @@ EOF
exit 1
fi
TARVER=r"${VERSION//./_}"
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $SRCNAM$VERSION
tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
cd $SRCNAM$VERSION
rm -rf $PRGNAM-$TARVER
tar xvf $CWD/$PRGNAM-$TARVER.tar.gz
cd $PRGNAM-$TARVER
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# permissions are gross, nonstandard find needed here:
find -L . -type d -a -exec chmod 755 {} \+ -o \
-type f -a \! -perm 644 -a -exec chmod 644 {} \+
qmake-qt5 "CONFIG+=noupcasename" $EXTRACONF \
qmake-qt5 \
"CONFIG+=noupcasename" \
$EXTRACONF \
QMAKE_CFLAGS="$SLKCFLAGS" QMAKE_CXXFLAGS="$SLKCFLAGS" \
$SRCNAM.pro
PREFIX=/usr \
Jamulus.pro
make clean
make
make install INSTALL_ROOT=$PKG
# No 'make install' target, so:
mkdir -p $PKG/usr/bin $PKG/usr/share/applications $PKG/usr/share/pixmaps
install -s -m0755 $PRGNAM $PKG/usr/bin/
install -m0644 src/res/$PRGNAM.desktop $PKG/usr/share/applications/
# binary already stripped.
# The png icons provided are tiny, but the OSX icon is big enough
# to actually see, so I extracted the 256x256 version & include
# it with the build.
cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png
# Man page borrowed from Debian and modified slightly (since they
# don't use 'noupcasename', their binary is called Jamulus).
# Had to make the man page a "1x" instead of "1": It uses BSD macros
# (see groff_mdoc(7)). If I made it a "1" man page, it would say
# "BSD General Commands Manual" unconditionally (no way to force it
# to say "SlackBuilds.org" or even "General Commands Manual").
mkdir -p $PKG/usr/man/man1
gzip -9c < $CWD/$PRGNAM.1x > $PKG/usr/man/man1/$PRGNAM.1x.gz
if [ "${SERVERONLY:-no}" != "yes" ]; then
# 'make install' puts the SVG icons in the wrong place. also the only
# png icon provided is 512x512, ludicrously large.
HICOLOR=$PKG/usr/share/icons/hicolor/
mkdir -p $HICOLOR/scalable/apps
mv $HICOLOR/512x512/apps/*.svg $HICOLOR/scalable/apps
CVT="convert -background none"
for px in 16 32 48 64 128; do
size=${px}x${px}
dir=$HICOLOR/$size/apps
mkdir -p $dir
$CVT -resize $size distributions/$PRGNAM.svg $dir/$PRGNAM.png
$CVT -resize $size distributions/$PRGNAM-server.svg $dir/$PRGNAM-server.png
done
mkdir -p $PKG/usr/share/pixmaps
ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
fi
# NEWS is a 0-byte placeholder in 3.4.3.
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS COPYING ChangeLog $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
COPYING ChangeLog CONTRIBUTING.md README.md \
SECURITY.md RELEASE-PROCESS.md TRANSLATING.md \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
# Include our own (hopefully) helpful hints for servers.
cat $CWD/SERVER.txt > $PKG/usr/doc/$PRGNAM-$VERSION/SERVER.txt
if objdump -p $PKG/usr/bin/$PRGNAM | grep -q 'NEEDED.*libjack'; then
DESC="full client and server"
else
DESC="headless server only"
fi
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
sed "s,@DESC@,$DESC," $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
# Only add capability stuff if not disabled:

View File

@ -1,8 +1,8 @@
PRGNAM="jamulus"
VERSION="3.4.3"
HOMEPAGE="http://llcon.sourceforge.net/"
DOWNLOAD="https://downloads.sourceforge.net/project/llcon/Jamulus/3.4.3/Jamulus-3.4.3.tar.gz"
MD5SUM="fa0f73b1d4e2fdbeb230899f1b2d0f0e"
VERSION="3.8.1"
HOMEPAGE="https://jamulus.io/"
DOWNLOAD="https://github.com/jamulussoftware/jamulus/archive/r3_8_1/jamulus-r3_8_1.tar.gz"
MD5SUM="1d4fe75560bacdf18987fdbd92260dec"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="jack"

View File

@ -13,7 +13,7 @@ jamulus: sessions over the internet. There is one server running the Jamulus
jamulus: server software which collects the audio data from each Jamulus
jamulus: client, mixes the audio data and sends the mix back to each client.
jamulus:
jamulus:
jamulus: This package contains the @DESC@.
jamulus:
jamulus:
jamulus: