summaryrefslogtreecommitdiffstats
path: root/audio/rubberband
diff options
context:
space:
mode:
Diffstat (limited to 'audio/rubberband')
-rw-r--r--audio/rubberband/README18
-rw-r--r--audio/rubberband/rubberband.1295
-rw-r--r--audio/rubberband/rubberband.SlackBuild130
-rw-r--r--audio/rubberband/rubberband.info10
-rw-r--r--audio/rubberband/slack-desc2
5 files changed, 284 insertions, 171 deletions
diff --git a/audio/rubberband/README b/audio/rubberband/README
index 75bc642786..d8644ac391 100644
--- a/audio/rubberband/README
+++ b/audio/rubberband/README
@@ -1,9 +1,15 @@
rubberband (audio time-stretching and pitch-shifting)
-Rubber Band is a library and utility program that permits you to change
-the tempo and pitch of an audio recording independently of one another.
+Rubber Band is a library and utility program that permits you to
+change the tempo and pitch of an audio recording independently of one
+another.
-Starting with version 1.8.2, rubberband can be built with optional Java
-JNI support. To do this, install jdk or openjdk, make sure its profile
-script has been sourced (normally by logging out & back in), and build
-rubberband with JAVA=yes set in the environment.
+Rubberband can be built with optional Java JNI support. To do this,
+install one (and only one) of the zulu-openjdk8, jdk or openjdk8
+packages, make sure its profile script has been sourced (normally
+by logging out & back in), and build rubberband with JAVA=yes
+set in the environment. Currently, this has only been tested
+with openjdk8.
+
+Optional dependency: lv2 (autodetected). If present, the rubberband
+lv2 plugin will be built.
diff --git a/audio/rubberband/rubberband.1 b/audio/rubberband/rubberband.1
index 73bbf1058c..bb4fbbfdc5 100644
--- a/audio/rubberband/rubberband.1
+++ b/audio/rubberband/rubberband.1
@@ -1,120 +1,175 @@
-.\" This manpage has been automatically generated by docbook2man
-.\" from a DocBook document. This tool can be found at:
-.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
-.\" Please send any bug reports, improvements, comments, patches,
-.\" etc. to Steve Cheng <steve@ggi-project.org>.
-.TH "RUBBERBAND" "1" "15 September 2014" "" ""
-
-.SH NAME
-rubberband \- an audio time-stretching and pitch-shifting utility program
-.SH SYNOPSIS
-
-\fBrubberband\fR [ \fB\fIoptions\fB\fR ] [ \fB\fIinput file\fB\fR ] [ \fB\fIoutput file\fB\fR ]
-
-.SH "DESCRIPTION"
-.PP
-This manual page documents briefly the
-\fBrubberband\fR command.
-.PP
-Rubber Band is a program that permits you to change the
-tempo and pitch of an audio recording independently of one
-another.
-.SH "OPTIONS"
-.PP
-These programs follow the usual GNU command line syntax,
-with long options starting with two dashes (`-'). A summary of
-options is included below.
-.PP
-You must specify at least one of the following time and
-pitch ratio options.
-.TP
-\fB-t, --time \fIX\fB\fR
-Stretch to \fIX\fR times original
-duration, or
-.TP
-\fB-T, --tempo \fIX\fB\fR
-Change tempo by multiple \fIX\fR (equivalent to --time 1/X)
-.TP
-\fB-p, --pitch \fIX\fB\fR
-Raise pitch by \fIX\fR semitones, or
-.TP
-\fB-f, --frequency \fIX\fB\fR
-Change frequency by multiple \fIX\fR
-.PP
-The following option provides a simple way to adjust the
-sound. See below for more details.
-.TP
-\fB-n, --crisp \fIN\fB\fR
-Crispness (N = 0,1,2,3,4,5); default 4 (see below)
-.PP
-The remaining options fine-tune the processing mode and
-stretch algorithm. These are mostly included for test purposes;
-the default settings and standard crispness parameter are
-intended to provide the best sounding set of options for most
-situations.
-.TP
-\fB-P, --precise\fR
-Aim for minimal time distortion (implied by -R)
-.TP
-\fB-R, --realtime\fR
-Select realtime mode (implies -P --no-threads)
-.TP
-\fB--no-threads\fR
-No extra threads regardless of CPU and channel count
-.TP
-\fB--threads\fR
-Assume multi-CPU even if only one CPU is identified
-.TP
-\fB--no-transients\fR
-Disable phase resynchronisation at transients
-.TP
-\fB--bl-transients\fR
-Band-limit phase resync to extreme frequencies
-.TP
-\fB--no-peaklock\fR
-Disable phase locking to peak frequencies
-.TP
-\fB--no-softening\fR
-Disable large-ratio softening of phase locking
-.TP
-\fB--window-long\fR
-Use longer processing window (actual size may vary)
-.TP
-\fB--window-short\fR
-Use shorter processing window
-.TP
-\fB--thresh \fIN\fB \fIF\fB\fR
-Set internal freq threshold \fIN\fR (N = 0,1,2) to \fIF\fR Hz
-.TP
-\fB-d, --debug \fIN\fB\fR
-Select debug level (N = 0,1,2,3); default 0, full 3
-(N.B. debug level 3 includes audible ticks in output)
-.TP
-\fB-q, --quiet\fR
-Suppress progress output
-.TP
-\fB-h, --help\fR
-Show a list of available options
-.PP
-Crispness levels:
-.TP
-\fB0\fR
-equivalent to --no-transients --no-peaklock --window-long
-.TP
-\fB1\fR
-equivalent to --no-transients --no-peaklock
-.TP
-\fB2\fR
-equivalent to --no-transients
-.TP
-\fB3\fR
-equivalent to --bl-transients
-.TP
-\fB4\fR
-default processing options
-.TP
-\fB5\fR
-equivalent to --no-peaklock --window-short (may be suitable for drums)
-.SH "AUTHOR"
-.PP
-Rubber Band was written by Chris Cannam <cannam@all-day-breakfast.com>\&.
+.TH "RUBBERBAND" "1"
+.SH "NAME"
+rubberband \(em an audio time-stretching and pitch-shifting utility program
+.SH "SYNOPSIS"
+.PP
+\fBrubberband\fR [\fB\fIoptions\fR\fP] [\fB\fIinput file\fR\fP] [\fB\fIoutput file\fR\fP]
+.SH "DESCRIPTION"
+.PP
+This manual page documents briefly the
+\fBrubberband\fR command.
+.PP
+Rubber Band is a program that permits you to change the
+tempo and pitch of an audio recording independently of one
+another.
+.SH "OPTIONS"
+.PP
+These programs follow the usual GNU command line syntax,
+with long options starting with two dashes (`\-\-'). A summary of
+options is included below.
+.PP
+You must specify at least one of the following time and
+pitch ratio options.
+.IP "\fB-t\fP, \fB\-\-time\fP \fIX\fR" 10
+Stretch to \fIX\fR times original duration, or
+.IP "\fB-T\fP, \fB\-\-tempo\fP \fIX\fR" 10
+Change tempo by multiple \fIX\fR (equivalent to \-\-time 1/X), or
+.IP "\fB-T\fP, \fB\-\-tempo\fP \fIX\fR:\fIY\fR" 10
+Change tempo from \fIX\fR to \fIY\fR (same as \-\-time X/Y), or
+.IP "\fB-D\fP, \fB\-\-duration\fP \fIX\fR" 10
+Stretch or squash to make output file \fIX\fR seconds long
+.IP "\fB-p\fP, \fB\-\-pitch\fP \fIX\fR" 10
+Raise pitch by \fIX\fR semitones, or
+.IP "\fB-f\fP, \fB\-\-frequency\fP \fIX\fR" 10
+Change frequency by multiple \fIX\fR
+.PP
+The following options provide ways of making the time and frequency ratios
+change during the audio:
+.IP "\fB-M\fP, \fB\-\-timemap\fP \fIF\fR" 10
+Use file F as the source for time map
+.PP
+A time map (or key-frame map) file contains a series of lines, each with two
+sample frame numbers separated by a single space. These are source and
+target frames for fixed time points within the audio data, defining a varying
+stretch factor through the audio. When supplying a time map you must specify
+an overall stretch factor using \-t, \-T, or \-D as well, to determine the
+total output duration.
+.IP " \fB\-\-pitchmap\fP \fIF\fR" 10
+Use file F as the source for pitch map
+.PP
+A pitch map file contains a series of lines, each with two values: the input
+sample frame number and a pitch offset in semitones, separated by a single
+space. These specify a varying pitch factor through the audio. The offsets
+are all relative to an initial offset specified by the pitch or frequency
+option, or relative to no shift if neither was specified. Offsets are
+not cumulative. This option implies realtime mode (\-R) and also enables a
+high-consistency pitch shifting mode, appropriate for dynamic pitch changes.
+Because of the use of realtime mode, the overall duration will not be exact.
+.IP " \fB\-\-freqmap\fP \fIF\fR" 10
+Use file F as the source for freq map
+.PP
+A frequency map file is like a pitch map, except that its second column
+lists frequency multipliers rather than pitch offsets (like the difference
+between pitch and frequency options above)
+.PP
+The following options affect the sound manipulation and quality
+.IP "\fB-2\fP, \fB\-\-fast\fP" 10
+Use the R2 (faster) engine
+.PP
+This is the default (for backward compatibility) when this tool is invoked
+as "rubberband". It was the only engine available in versions prior to v3.0.
+.IP "\fB-3\fP, \fB\-\-fine\fP" 10
+Use the R3 (finer) engine
+.PP
+This is the default when this tool is invoked as "rubberband-r3". It almost
+always produces better results than the R2 engine, but with significantly
+higher CPU load.
+.IP "\fB-F\fP, \fB\-\-formant\fP" 10
+Enable formant preservation when pitch shifting
+.PP
+This option attempts to keep the formant envelope unchanged when changing
+the pitch, retaining the original timbre of vocals and instruments in a
+recognisable way.
+.IP "\fB-c\fP, \fB\-\-crisp\fP \fIN\fR" 10
+Crispness (N = 0,1,2,3,4,5); default 4 (see below)
+.PP
+This option only has an effect when using the R2 (faster) engine. See below
+for details of the different levels.
+.PP
+The remaining options fine-tune the processing mode and stretch algorithm.
+The default is to use none of these options.
+The options marked (2) currently only have an effect when using the R2 engine
+(see \-2, \-3 options above).
+.IP "\fB-R\fP, \fB\-\-realtime\fP" 10
+Select realtime mode (implies \-\-no-threads).
+This utility does not do realtime stream processing;
+the option merely selects realtime mode for the
+stretcher it uses
+.IP "\fB\-\-no-threads\fP" 10
+No extra threads regardless of CPU and channel count (R2)
+.IP "\fB\-\-threads\fP" 10
+Assume multi-CPU even if only one CPU is identified (R2)
+.IP "\fB\-\-no-transients\fP" 10
+Disable phase resynchronisation at transients (R2)
+.IP "\fB\-\-bl-transients\fP" 10
+Band-limit phase resync to extreme frequencies (R2)
+.IP "\fB\-\-no-lamination\fP" 10
+Disable phase lamination (R2)
+.IP "\fB\-\-smoothing\fP" 10
+Apply window presum and time-domain smoothing (R2)
+.IP "\fB\-\-detector-perc\fP" 10
+Use percussive transient detector (as in pre-1.5) (R2)
+.IP "\fB\-\-detector-soft\fP" 10
+Use soft transient detector (R2)
+.IP "\fB\-\-window-long\fP" 10
+Use longer processing window (actual size may vary) (R2)
+.IP "\fB\-\-window-short\fP" 10
+Use shorter processing window (with the R3 engine
+this is effectively a quick "draft mode")
+.IP "\fB\-\-pitch-hq\fP" 10
+In RT mode, use a slower, higher quality pitch shift
+.IP "\fB\-\-centre-focus\fP" 10
+reserve focus of centre material in stereo
+(at a cost in width and individual channel quality)
+.IP "\fB\-\-ignore-clipping\fP" 10
+Ignore clipping at output; the default is to restart
+with reduced gain if clipping occurs
+.IP "\fB-L\fP, \fB\-\-loose \fP" 10
+[Accepted for compatibility but ignored; always off]
+.IP "\fB-P\fP, \fB\-\--precise \fP" 10
+[Accepted for compatibility but ignored; always on]
+.IP "\fB-d\fP, \fB\-\-debug\fP \fIN\fR" 10
+Select debug level (N = 0,1,2,3); default 0, full 3
+(N.B. debug level 3 includes audible ticks in output)
+.PP
+The following options are for output control and administration:
+.IP "\fB-q\fP, \fB\-\-quiet\fP" 10
+Suppress progress output
+.IP "\fB-V\fP, \fB\-\-version\fP" 10
+Show version number and exit
+.IP "\fB-h\fP, \fB\-\-help\fP" 10
+Show the normal help output
+.IP "\fB-H\fP, \fB\-\-full-help\fP" 10
+Show the full help output
+.PP
+"Crispness" levels:
+.IP "0" 10
+equivalent to \-\-no-transients \-\-no-lamination \-\-window-long
+.IP "1" 10
+equivalent to \-\-detector-soft \-\-no-lamination \-\-window-long (for piano)
+.IP "2" 10
+equivalent to \-\-no-transients \-\-no-lamination
+.IP "3" 10
+equivalent to \-\-no-transients
+.IP "4" 10
+equivalent to \-\-bl-transients
+.IP "5" 10
+default processing options
+.IP "6" 10
+equivalent to \-\-no-lamination \-\-window-short (may be good for drums)
+.SH "AUTHOR"
+.PP
+Rubber Band was written by Chris Cannam <cannam@all-day-breakfast.com>.
+.PP
+This manual page was written by Székelyi Szabolcs <cc@mail.3d.hu> and
+revised in October 2022 by Dennis Braun <snd@y0o.de> for
+the \fBDebian\fP system (but may be used by others), because the
+original program does not have a manual page. Permission is
+granted to copy, distribute and/or modify this document under
+the terms of the GNU General Public License, Version 2 any
+later version published by the Free Software Foundation.
+.PP
+On Debian systems, the complete text of the GNU General
+Public License can be found in
+/usr/share/common-licenses/GPL.
+.\" created by instant / docbook-to-man
diff --git a/audio/rubberband/rubberband.SlackBuild b/audio/rubberband/rubberband.SlackBuild
index 25607a6cad..5bd8202709 100644
--- a/audio/rubberband/rubberband.SlackBuild
+++ b/audio/rubberband/rubberband.SlackBuild
@@ -4,10 +4,19 @@
# Written by Luis Henrique <email removed>
-# Modified by B. Watson <yalhcru@gmail.com>. Original had no license.
+# Modified by B. Watson <urchlay@slackware.uk>. Original had no license.
# Modified version licensed under the WTFPL. See
# http://www.wtfpl.net/txt/copying/ for details.
+# 20240321 bkw: update for v3.3.0.
+# 20230112 bkw: update for v3.1.2.
+# In 3.1.2, ladspa_sdk and vamp-plugin-sdk are not required. I'm
+# leaving them in REQUIRES for now, because other builds that
+# depend on rubberband might also depend on ladspa_sdk and/or
+# vamp-plugin-sdk, but not list them in REQUIRES because rubberband
+# "pulls them in". This will change in the future!
+
+# 20211125 bkw: update for v2.0.0
# 20201103 bkw: update for v1.9.0
# 20180702 bkw:
# - update for v1.8.2
@@ -24,7 +33,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=rubberband
-VERSION=${VERSION:-1.9.0}
+VERSION=${VERSION:-3.3.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -37,9 +46,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
@@ -72,54 +78,100 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$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 {} \+
-
-# Fixup libdir on x86_64
-sed -i "s,\<lib\>,lib$LIBDIRSUFFIX,g" Makefile.in *.pc.in
-
-# For 1.8.2, the Makefile tries to install the JNI stuff even if
-# we don't build it.
-sed -i '/cp *-f .*JNI_TARGET/s,$, || true,' Makefile.in
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --build=$ARCH-slackware-linux
-
-make
-
-# 20180703 bkw: build java JNI stuff if we have javac in $PATH and
-# the user says JAVA=yes. Disabled by default because we have too many
-# choices for java compilers, and I can't be bothered to test them all
-# (jdk, openjdk 6 through 8, zulu-openjdk 6 thru 8). Plain "make"
-# doesn't build this...
-WITHJAVA=without
-if [ "${JAVA:-no}" = "yes" ] && which javac &>/dev/null; then
- make lib$LIBDIRSUFFIX/librubberband-jni.so
- WITHJAVA=with
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
+
+JAVA="${JAVA:-no}"
+
+if [ "$JAVA" = "yes" ]; then
+ if [ -z "$JAVA_HOME" ]; then
+ # if JAVA_HOME isn't set, try to set it by sourcing the profile script
+ for i in /etc/profile.d/*jdk*.sh; do
+ if [ -x $i ]; then
+ source $i
+ break
+ fi
+ done
+ fi
+
+ if [ -z "$JAVA_HOME" ]; then
+ cat <<EOF
+!!! Java support requested, but JAVA_HOME is unset and I can't find
+!!! a /etc/profile.d script that sets it. Are you sure you have a JDK
+!!! package installed?
+EOF
+ exit 1
+ fi
+
+ echo "=== JAVA_HOME='$JAVA_HOME'"
+ if [ -z "$JAVA_HOME" -o ! -e $JAVA_HOME/include/jni.h ]; then
+ cat <<EOF
+!!! Java support requested, but JAVA_HOME doesn't have the jni.h header.
+EOF
+ exit 1
+ fi
+
+ EXTRA="-Dextra_include_dirs=$JAVA_HOME/include,$JAVA_HOME/include/linux"
+ echo "=== EXTRA='$EXTRA'"
+fi
+
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ $EXTRA \
+ -Dstrip=true
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+# I don't see a way to disable the static lib at build time, so:
+rm -f $PKG/usr/lib*/lib$PRGNAM.a
+
+JNILIB=$PKG/usr/lib$LIBDIRSUFFIX/lib$PRGNAM-jni.so
+
+if [ "$JAVA" = "yes" -a ! -e $JNILIB ]; then
+ cat <<EOF
+!!! Java support requested, but failed to build. Check the above output
+!!! from Meson and Ninja, and adjust JAVA_HOME if needed.
+EOF
+ exit 1
fi
-make install DESTDIR=$PKG
+WITHJAVA=WITHOUT
+[ -e $JNILIB ] && WITHJAVA=WITH
-# We don't need the static lib
-rm -f $PKG/usr/lib$LIBDIRSUFFIX/*.a
+WITHLV2=WITHOUT
+[ -e $PKG/usr/lib$LIBDIRSUFFIX/lv2/$PRGNAM.lv2/lv2-$PRGNAM.so ] && \
+ WITHLV2=WITH
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+# 20230112 bkw: in 3.1.2, we get two identical binaries...
+# 20240321 bkw: still true of 3.3.0.
+rm $PKG/usr/bin/$PRGNAM-r3
+ln -s $PRGNAM $PKG/usr/bin/$PRGNAM-r3
# man page borrowed from Debian
mkdir -p $PKG/usr/man/man1
gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
+ln -s $PRGNAM.1.gz $PKG/usr/man/man1/$PRGNAM-r3.1.gz
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a CHANGELOG COPYING README* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
-sed "s,@WITHJAVA@,$WITHJAVA," $CWD/slack-desc > $PKG/install/slack-desc
+sed -e "s,@WITHJAVA@,$WITHJAVA," \
+ -e "s,@WITHLV2@,$WITHLV2," \
+ $CWD/slack-desc \
+ > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/audio/rubberband/rubberband.info b/audio/rubberband/rubberband.info
index 0065f91d96..c110f8cfcf 100644
--- a/audio/rubberband/rubberband.info
+++ b/audio/rubberband/rubberband.info
@@ -1,10 +1,10 @@
PRGNAM="rubberband"
-VERSION="1.9.0"
-HOMEPAGE="http://www.breakfastquay.com/rubberband"
-DOWNLOAD="https://breakfastquay.com/files/releases/rubberband-1.9.0.tar.bz2"
-MD5SUM="a203a53ef14f23bd4344f4b32514ed62"
+VERSION="3.3.0"
+HOMEPAGE="https://www.breakfastquay.com/rubberband"
+DOWNLOAD="https://breakfastquay.com/files/releases/rubberband-3.3.0.tar.bz2"
+MD5SUM="b0ba4fb331e694a07848896f4845e8ea"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="ladspa_sdk vamp-plugin-sdk"
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/audio/rubberband/slack-desc b/audio/rubberband/slack-desc
index 65e2344901..9ff92d4aaf 100644
--- a/audio/rubberband/slack-desc
+++ b/audio/rubberband/slack-desc
@@ -15,5 +15,5 @@ rubberband:
rubberband: Homepage: http://breakfastquay.com/rubberband
rubberband:
rubberband: This package was built @WITHJAVA@ Java JNI support.
-rubberband:
+rubberband: This package was built @WITHLV2@ the LV2 plugin.
rubberband: