diff options
Diffstat (limited to 'audio')
-rw-r--r-- | audio/jamulus/SERVER.txt | 23 | ||||
-rw-r--r-- | audio/jamulus/doinst.sh | 6 | ||||
-rw-r--r-- | audio/jamulus/jamulus.1x | 277 | ||||
-rw-r--r-- | audio/jamulus/jamulus.SlackBuild | 90 | ||||
-rw-r--r-- | audio/jamulus/jamulus.info | 8 | ||||
-rw-r--r-- | audio/jamulus/slack-desc | 2 |
6 files changed, 363 insertions, 43 deletions
diff --git a/audio/jamulus/SERVER.txt b/audio/jamulus/SERVER.txt index f226442b0802..85167f295b4c 100644 --- a/audio/jamulus/SERVER.txt +++ b/audio/jamulus/SERVER.txt @@ -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. diff --git a/audio/jamulus/doinst.sh b/audio/jamulus/doinst.sh index 5fb28930db0b..3e5691a052b5 100644 --- a/audio/jamulus/doinst.sh +++ b/audio/jamulus/doinst.sh @@ -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 diff --git a/audio/jamulus/jamulus.1x b/audio/jamulus/jamulus.1x new file mode 100644 index 000000000000..342100b5d302 --- /dev/null +++ b/audio/jamulus/jamulus.1x @@ -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 . diff --git a/audio/jamulus/jamulus.SlackBuild b/audio/jamulus/jamulus.SlackBuild index a09ed2ec1672..9e7531405dba 100644 --- a/audio/jamulus/jamulus.SlackBuild +++ b/audio/jamulus/jamulus.SlackBuild @@ -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: diff --git a/audio/jamulus/jamulus.info b/audio/jamulus/jamulus.info index 088ae2533269..51774e59179e 100644 --- a/audio/jamulus/jamulus.info +++ b/audio/jamulus/jamulus.info @@ -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" diff --git a/audio/jamulus/slack-desc b/audio/jamulus/slack-desc index c60183610b5d..22ced12401f6 100644 --- a/audio/jamulus/slack-desc +++ b/audio/jamulus/slack-desc @@ -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: |