audio/jack: Added (realtime low-latency sound server).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
parent
74f1cb8cc7
commit
0fa512cd35
|
@ -0,0 +1,31 @@
|
|||
jack (realtime low-latency sound server)
|
||||
|
||||
JACK is a system for handling real-time, low latency audio and MIDI.
|
||||
It can connect a number of different applications to an audio device,
|
||||
as well as allowing them to share audio between themselves.
|
||||
|
||||
Its clients can run in their own processes (ie. as normal apps), or
|
||||
within the JACK server (ie. as a "plugin"). JACK also has support for
|
||||
distributing audio processing across a network, both fast & reliable
|
||||
LANs as well as slower, less reliable WANs.
|
||||
|
||||
Note: This build conflicts with jack1: install only one of the two.
|
||||
JACK's developers recommend not using jack1 at all, although it's still
|
||||
maintained.
|
||||
|
||||
Note: this build was formerly known as jack2. Before installing this,
|
||||
"removepkg jack2" if you had it installed.
|
||||
|
||||
SBo build maintainers, please list jack (not jack1) as a dependency for
|
||||
your builds. If the software you're trying to build really does work
|
||||
with jack1 but not jack, please contact the jack maintainer (currently
|
||||
B. Watson <yalhcru@gmail.com>. Include the build log and any runtime
|
||||
error messages in your email, plase.
|
||||
|
||||
This package uses POSIX filesystem capabilities to execute with
|
||||
elevated privileges (required for realtime audio processing). This
|
||||
may be considered a security/stability risk. Please read
|
||||
http://www.slackbuilds.org/caps/ for more information. To disable
|
||||
capabilities, pass SETCAP=no to the script.
|
||||
|
||||
Optional dependencies are celt, libffado and opus.
|
|
@ -0,0 +1,123 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Slackware build script for "jack2".
|
||||
|
||||
# Copyright 2014 Yanes Checcacci Balod <email removed>, Brazil
|
||||
# Copyright 2014-2015 Marcel Saegebarth <email removed>
|
||||
# Copyright 2018 B. Watson <yalhcru@gmail.com>
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use of this script, with or without modification, is
|
||||
# permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of this script must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# 20200118 bkw: renamed from 'jack2' to 'jack'. If you want to see
|
||||
# the old log: "git log -- audio/jack2"
|
||||
# 20200112 bkw: get rid of --profile (thanks, dive!), BUILD=2.
|
||||
# 20191201 bkw: update for v1.9.14 (including new python3 dep).
|
||||
# 20180714 bkw:
|
||||
# - Take over maintenance.
|
||||
# - Update for v1.9.12.
|
||||
# - Move HTML docs to proper Slackware doc dir.
|
||||
# - i486 => i586.
|
||||
|
||||
PRGNAM=jack
|
||||
VERSION=${VERSION:-1.9.14}
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-_SBo}
|
||||
|
||||
SRCNAM=jack2
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
i?86) ARCH=i586 ;;
|
||||
arm*) ARCH=arm ;;
|
||||
*) ARCH=$( uname -m ) ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
CWD=$(pwd)
|
||||
TMP=${TMP:-/tmp/SBo}
|
||||
PKG=$TMP/package-$PRGNAM
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
if [ "$ARCH" = "i586" ]; then
|
||||
SLKCFLAGS="-O2 -march=i586 -mtune=i586"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "i686" ]; then
|
||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "x86_64" ]; then
|
||||
SLKCFLAGS="-O2 -fPIC"
|
||||
LIBDIRSUFFIX="64"
|
||||
else
|
||||
SLKCFLAGS="-O2"
|
||||
LIBDIRSUFFIX=""
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
rm -rf $PKG
|
||||
mkdir -p $TMP $PKG $OUTPUT
|
||||
cd $TMP
|
||||
rm -rf $SRCNAM-$VERSION
|
||||
tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
|
||||
cd $SRCNAM-$VERSION
|
||||
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 {} \+
|
||||
|
||||
# Minor source of incompatibility between jack 1.x and 2.x: some jack
|
||||
# apps don't add -lpthread to their CFLAGS because they assume jack.pc
|
||||
# will already include it (it does, in 1.x). So make 2 act like 1:
|
||||
sed -i '/^Libs:/s,$, -lpthread,' jack.pc.in
|
||||
|
||||
CFLAGS="$SLKCFLAGS" \
|
||||
CXXFLAGS="$SLKCFLAGS" \
|
||||
./waf configure \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib${LIBDIRSUFFIX} \
|
||||
--mandir=/usr/man/man1 \
|
||||
--htmldir=/usr/doc/$PRGNAM-$VERSION/html \
|
||||
--classic \
|
||||
--dbus \
|
||||
--alsa
|
||||
|
||||
./waf build
|
||||
./waf install --destdir=$PKG
|
||||
|
||||
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
|
||||
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
|
||||
|
||||
find $PKG/usr/man -type f -exec gzip -9 {} \;
|
||||
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
|
||||
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||
|
||||
mkdir -p $PKG/install
|
||||
cat $CWD/slack-desc > $PKG/install/slack-desc
|
||||
|
||||
# Only add capability stuff if not disabled:
|
||||
if [ "${SETCAP:-yes}" = "yes" ]; then
|
||||
cat $CWD/setcap.sh >> $PKG/install/doinst.sh
|
||||
# Only allow execution by audio group
|
||||
chown root:audio $PKG/usr/bin/*
|
||||
chmod 0750 $PKG/usr/bin/*
|
||||
fi
|
||||
|
||||
cd $PKG
|
||||
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
|
|
@ -0,0 +1,10 @@
|
|||
PRGNAM="jack"
|
||||
VERSION="1.9.14"
|
||||
HOMEPAGE="http://jackaudio.org/"
|
||||
DOWNLOAD="https://github.com/jackaudio/jack2/archive/v1.9.14/jack2-1.9.14.tar.gz"
|
||||
MD5SUM="b63b5cf65fc43ccf9585d274fe91069f"
|
||||
DOWNLOAD_x86_64=""
|
||||
MD5SUM_x86_64=""
|
||||
REQUIRES="python3"
|
||||
MAINTAINER="B. Watson"
|
||||
EMAIL="yalhcru@gmail.com"
|
|
@ -0,0 +1,67 @@
|
|||
20200119 bkw: The default jack version on SlackBuilds.org is now 1.9.14,
|
||||
aka JACK2. The old 0.125.0 version (formerly jack-audio-connection-kit)
|
||||
is still available as "jack1". The JACK2 build used to be called "jack2",
|
||||
and has been renamed to simply "jack". SBo maintainers take note: please
|
||||
don't list jack1 in REQUIRES for your builds. If your build really does
|
||||
work only with jack1 and fails with jack, please contact me (B. Watson,
|
||||
yalhcru@gmail.com) and let me know the details.
|
||||
|
||||
This information might be helpful in understanding the differences
|
||||
between jack and jack1.
|
||||
|
||||
jack and jack1 are API compatible enough that applications can be built
|
||||
against either, and in fact most (possibly all?) apps can be built
|
||||
against one and run with the other with no problems.
|
||||
|
||||
jack1 wasn't designed to benefit from multiple CPU cores/threads. It may
|
||||
(or may not) offer slightly better performance on single-core systems.
|
||||
|
||||
jack no longer supports jack1's "-Z" flag.
|
||||
|
||||
When using -Xseq with jack, connect your ALSA MIDI devices to the system
|
||||
"MIDI thru" port, then connect that port to the JACK midi capture
|
||||
port. This is an extra step that isn't necessary with jack1.
|
||||
|
||||
jack stores a persistent "registry" and database in /dev/shm, which
|
||||
is intended to speed up jack startup and allow multiple jack servers
|
||||
on the same host to cooperate. There is one small issue with this:
|
||||
if jackd can't write to /dev/shm/jack_db/, it will fail to start
|
||||
(segfault). If this happens, make sure jackd is not running, and "rm
|
||||
-rf /dev/shm/jack*". This only happens when jackd is used by different
|
||||
users, which means most of us will be unaffected by it. Upstream has
|
||||
been notified, and a fix is being worked on.
|
||||
|
||||
Original README from the old jack2 package has some possibly outdated
|
||||
info on the differences between 1 and 2:
|
||||
|
||||
jackdmp (aka JACK2) is a C++ version of the JACK low-latency audio
|
||||
server for multi-processor machines. It is a new implementation
|
||||
of the JACK server core features that aims in removing some
|
||||
limitations of the JACK1 design. The activation system has been
|
||||
changed for a data flow model and lock-free programming techniques
|
||||
for graph access have been used to have a more dynamic and
|
||||
robust system.
|
||||
|
||||
- jackdmp use a new client activation model that allows simultaneous
|
||||
client execution (on a smp machine) when parallel clients exist
|
||||
in the graph (client that have the same inputs). This activation model
|
||||
allows to better use available CPU on a smp machine, but also works
|
||||
on a mono-processor machine.
|
||||
|
||||
- jackdmp use a lock-free way to access (read/write) the client graph,
|
||||
thus allowing connections/disconnection to be done without
|
||||
interrupting the audio stream. The result is that
|
||||
connections/disconnections are glitch-free.
|
||||
|
||||
- jackdmp can work in 2 different modes at the server level :
|
||||
- synchronous activation : in a given cycle, the server waits for
|
||||
all clients to be finished (similar to normal jackd)
|
||||
- asynchronous activation : in a given cycle, the server does not
|
||||
wait for all clients to be finished and use output buffer
|
||||
computed the previous cycle.
|
||||
|
||||
The audible result of this mode is that if a client is not activated
|
||||
during one cycle, other clients may still run and the resulting audio
|
||||
stream will still be produced (even if its partial in some way).
|
||||
This mode usually result in fewer (less audible) audio glitches in a
|
||||
loaded system.
|
|
@ -0,0 +1,16 @@
|
|||
if [ -x /sbin/setcap ]; then
|
||||
bin=(
|
||||
jackdbus jack_monitor_client jack_latent_client alsa_in
|
||||
jack_midi_dump jack_showtime jack_rec jack_zombie jack_midiseq
|
||||
jack_thru jack_connect jack_net_slave jack_bufsize jack_wait
|
||||
alsa_out jack_freewheel jack_server_control jack_net_master
|
||||
jack_evmon jack_metro jack_simple_client jack_lsp jack_cpu
|
||||
jack_control jack_netsource jack_test jack_session_notify
|
||||
jack_alias jack_iodelay jackd jack_simple_session_client
|
||||
jack_midisine jack_unload jack_load jack_samplerate
|
||||
jack_midi_latency_test jack_cpu_load jack_multiple_metro)
|
||||
|
||||
for i in ${bin[@]}; do
|
||||
/sbin/setcap cap_ipc_lock,cap_sys_nice=ep usr/bin/$i
|
||||
done
|
||||
fi
|
|
@ -0,0 +1,19 @@
|
|||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description.
|
||||
# Line up the first '|' above the ':' following the base package name, and
|
||||
# the '|' on the right side marks the last column you can put a character in.
|
||||
# You must make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':' except on otherwise blank lines.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
jack: jack (realtime low-latency sound server)
|
||||
jack:
|
||||
jack: JACK is a system for handling real-time, low latency audio and MIDI.
|
||||
jack: It can connect a number of different applications to an audio device,
|
||||
jack: as well as allowing them to share audio between themselves.
|
||||
jack:
|
||||
jack: Its clients can run in their own processes (ie. as normal apps), or
|
||||
jack: within the JACK server (ie. as a "plugin"). JACK also has support
|
||||
jack: for distributing audio processing across a network, both fast &
|
||||
jack: reliable LANs as well as slower, less reliable WANs.
|
||||
jack:
|
Loading…
Reference in New Issue