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:
parent
a79a62e75b
commit
b57e04419b
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 .
|
|
@ -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:
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue