aboutsummaryrefslogtreecommitdiff
path: root/audio/azr3
diff options
context:
space:
mode:
authorJohannes Schoepfer <slackbuilds@schoepfer.info>2019-11-23 15:13:41 +0700
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2019-11-23 15:13:41 +0700
commit40f5bc20ba0ebf1bc10291bae7328e4c258df51e (patch)
treefd6e5a2c0ed674b2fc887e435836808e7add66ae /audio/azr3
parentbd55645a968ac13e53009cb2ae58cd3496f2a533 (diff)
audio/azr3: Added (tonewheel organ simulator).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'audio/azr3')
-rw-r--r--audio/azr3/README19
-rw-r--r--audio/azr3/azr3.SlackBuild121
-rw-r--r--audio/azr3/azr3.desktop8
-rw-r--r--audio/azr3/azr3.info10
-rw-r--r--audio/azr3/azr3.pngbin0 -> 2135 bytes
-rw-r--r--audio/azr3/doinst.sh3
-rw-r--r--audio/azr3/patches/drop_lash_support.patch188
-rw-r--r--audio/azr3/patches/errs_and_warns.patch90
-rw-r--r--audio/azr3/patches/fix-compilation.patch96
-rw-r--r--audio/azr3/patches/linking_order.patch36
-rw-r--r--audio/azr3/slack-desc19
11 files changed, 590 insertions, 0 deletions
diff --git a/audio/azr3/README b/audio/azr3/README
new file mode 100644
index 000000000000..b6e9e2c8f4dd
--- /dev/null
+++ b/audio/azr3/README
@@ -0,0 +1,19 @@
+azr3 (tonewheel organ simulator for jack-audio-connection-kit)
+
+azr3 is a JACK port of the free VST plugin AZR-3. It is a tonewheel
+organ with drawbars, distortion and rotating speakers.
+The original was written by Rumpelrausch Täips
+
+The organ has three sections, two polyphonic with 9 drawbars each and
+one monophonic bass section with 5 drawbars. The two polyphonic
+sections respond to events on MIDI channel 1 and 2, and an optional
+keyboard split function makes the bass section listen to the lower
+keys on channel 1.
+
+This requires one of the jack varieties.
+
+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.
diff --git a/audio/azr3/azr3.SlackBuild b/audio/azr3/azr3.SlackBuild
new file mode 100644
index 000000000000..102196de839e
--- /dev/null
+++ b/audio/azr3/azr3.SlackBuild
@@ -0,0 +1,121 @@
+#!/bin/sh
+
+# Slackware build script for azr3
+
+# Written by B. Watson (yalhcru@gmail.com)
+# Copyright 2019 Johannes Schoepfer, Germany
+# 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.
+
+PRGNAM=azr3
+VERSION=${VERSION:-1.2.3}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+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=i686"
+ 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
+
+TARNAME=$PRGNAM-jack
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $TARNAME-$VERSION
+tar xvf $CWD/$TARNAME-$VERSION.tar.bz2
+cd $TARNAME-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+patch -p1 < $CWD/patches/linking_order.patch
+patch -p1 < $CWD/patches/drop_lash_support.patch
+patch -p1 < $CWD/patches/errs_and_warns.patch
+patch -p1 < $CWD/patches/fix-compilation.patch
+
+make clean
+make all install \
+ CFLAGS="$SLKCFLAGS -std=c++11" \
+ CXXFLAGS="$SLKCFLAGS -std=c++11" \
+ prefix=/usr \
+ libdir=/usr/lib$LIBDIRSUFFIX \
+ mandir=/usr/man \
+ pkgdocdir=/usr/doc/$PRGNAM-$VERSION \
+ 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
+
+# .desktop file written for this SlackBuild
+mkdir -p $PKG/usr/share/applications
+cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
+
+# icon is a small piece gimped out of panelfx.png
+mkdir -p $PKG/usr/share/pixmaps
+cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png
+
+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
+cp -a \
+ AUTHORS COPYING README ChangeLog \
+ $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
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+if [ "${SETCAP:-yes}" = "yes" ]; then
+ echo "/sbin/setcap cap_ipc_lock,cap_sys_nice=ep usr/bin/$PRGNAM" >> $PKG/install/doinst.sh
+ chown root:audio $PKG/usr/bin/$PRGNAM
+ chmod 0750 $PKG/usr/bin/$PRGNAM
+fi
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/audio/azr3/azr3.desktop b/audio/azr3/azr3.desktop
new file mode 100644
index 000000000000..63e1e420b8b1
--- /dev/null
+++ b/audio/azr3/azr3.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=AZR-3
+Comment=Tonewheel Organ for JACK
+Exec=azr3
+Icon=azr3
+Terminal=false
+Type=Application
+Categories=AudioVideo;Audio;
diff --git a/audio/azr3/azr3.info b/audio/azr3/azr3.info
new file mode 100644
index 000000000000..917f12100ad7
--- /dev/null
+++ b/audio/azr3/azr3.info
@@ -0,0 +1,10 @@
+PRGNAM="azr3"
+VERSION="1.2.3"
+HOMEPAGE="http://ll-plugins.nongnu.org/azr3/"
+DOWNLOAD="https://download.savannah.nongnu.org/releases/ll-plugins/azr3-jack-1.2.3.tar.bz2"
+MD5SUM="aa71715e5873aea724713be5970ebfbc"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="jack2"
+MAINTAINER="Johannes Schoepfer"
+EMAIL="slackbuilds@schoepfer.info"
diff --git a/audio/azr3/azr3.png b/audio/azr3/azr3.png
new file mode 100644
index 000000000000..c9b360e25554
--- /dev/null
+++ b/audio/azr3/azr3.png
Binary files differ
diff --git a/audio/azr3/doinst.sh b/audio/azr3/doinst.sh
new file mode 100644
index 000000000000..5fb28930db0b
--- /dev/null
+++ b/audio/azr3/doinst.sh
@@ -0,0 +1,3 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
diff --git a/audio/azr3/patches/drop_lash_support.patch b/audio/azr3/patches/drop_lash_support.patch
new file mode 100644
index 000000000000..4f7ec45a7d27
--- /dev/null
+++ b/audio/azr3/patches/drop_lash_support.patch
@@ -0,0 +1,188 @@
+Description: Disable LASH support.
+Author: Alessio Treglia <alessio@debian.org>
+Forwarded: no
+---
+ Makefile | 6 +--
+ azr3/main.cpp | 91 ----------------------------------------------------------
+ azr3/main.hpp | 7 ----
+ 3 files changed, 4 insertions(+), 100 deletions(-)
+
+--- azr3-jack.orig/Makefile
++++ azr3-jack/Makefile
+@@ -10,7 +10,7 @@ PACKAGE_WEBPAGE = "http://ll-plugins.non
+ PACKAGE_BUGTRACKER = "https://savannah.nongnu.org/bugs/?group=ll-plugins"
+ PACKAGE_VC = "http://git.savannah.gnu.org/cgit/ll-plugins/azr3-jack.git/"
+
+-PKG_DEPS = gtkmm-2.4>=2.8.8 jack>=0.103.0 lash-1.0>=0.5.3
++PKG_DEPS = gtkmm-2.4>=2.8.8 jack>=0.103.0
+
+
+ PROGRAMS = azr3
+@@ -32,8 +32,8 @@ azr3_SOURCES = \
+ drawbar.hpp drawbar.cpp \
+ textbox.hpp textbox.cpp
+ azr3_SOURCEDIR = azr3
+-azr3_CFLAGS = `pkg-config --cflags gtkmm-2.4 jack lash-1.0` -DDATADIR=\"$(pkgdatadir)\"
+-azr3_LDFLAGS = `pkg-config --libs gtkmm-2.4 jack lash-1.0`
++azr3_CFLAGS = `pkg-config --cflags gtkmm-2.4 jack` -DDATADIR=\"$(pkgdatadir)\"
++azr3_LDFLAGS = `pkg-config --libs gtkmm-2.4 jack` -lpthread
+ azr3_cpp_CFLAGS = $(shell if pkg-config --atleast-version=0.107 jack ; then echo -include azr3/newjack.hpp; fi)
+ main_cpp_CFLAGS = -DPACKAGE_VERSION=\"$(PACKAGE_VERSION)\"
+
+--- azr3-jack.orig/azr3/main.hpp
++++ azr3-jack/azr3/main.hpp
+@@ -25,7 +25,6 @@
+ #include <gtkmm.h>
+ #include <pthread.h>
+ #include <semaphore.h>
+-#include <lash/lash.h>
+
+ #include "azr3.hpp"
+ #include "azr3gui.hpp"
+@@ -65,10 +64,6 @@ protected:
+
+ int process(jack_nframes_t nframes);
+
+- bool check_lash_events();
+-
+- bool init_lash(lash_args_t* lash_args, const std::string& jack_name);
+-
+ void auto_connect();
+
+ static int static_process(jack_nframes_t frames, void* arg);
+@@ -89,10 +84,8 @@ protected:
+ sem_t m_gui_changed;
+ float m_gui_controls[63];
+ Preset m_presets[128];
+- lash_client_t* m_lash_client;
+
+ bool m_ok;
+- bool m_started_by_lashd;
+ std::string m_auto_midi;
+ std::string m_auto_audio;
+
+--- azr3-jack.orig/azr3/main.cpp
++++ azr3-jack/azr3/main.cpp
+@@ -32,13 +32,6 @@ using namespace std;
+
+
+ Main::Main(int& argc, char**& argv) : m_ok(false) {
+-
+- /* this is a bit dumb, but the only way I know of to check whether we were
+- started by lashd is to see if lash_extract_args() removes any arguments */
+- int old_argc = argc;
+- lash_args_t* lash_args = lash_extract_args(&argc, &argv);
+- m_started_by_lashd = (argc != old_argc);
+-
+ // parse all non-LASH arguments
+ OptionParser op;
+ bool help(false);
+@@ -165,10 +158,6 @@ Main::Main(int& argc, char**& argv) : m_
+ }
+ }
+ }
+-
+- // initialise LASH
+- if (!init_lash(lash_args, jack_get_client_name(m_jack_client)))
+- return;
+
+ m_win->set_title("AZR-3");
+ m_win->set_resizable(false);
+@@ -184,14 +173,11 @@ void Main::run() {
+ jack_activate(m_jack_client);
+
+ // auto-connect JACK ports if desired
+- if (!m_started_by_lashd)
+- auto_connect();
++ auto_connect();
+
+ Glib::signal_timeout().
+ connect(sigc::bind_return(sigc::mem_fun(*this, &Main::check_changes),
+ true), 10);
+- Glib::signal_timeout().
+- connect(sigc::mem_fun(*this, &Main::check_lash_events), 500);
+ m_kit->run(*m_win);
+ jack_deactivate(m_jack_client);
+ m_engine->deactivate();
+@@ -345,81 +331,6 @@ int Main::process(jack_nframes_t nframes
+ }
+
+
+-bool Main::check_lash_events() {
+- lash_event_t* event;
+- bool go_on = true;
+- while ((event = lash_get_event(m_lash_client))) {
+-
+- // save
+- if (lash_event_get_type(event) == LASH_Save_File) {
+- cerr<<"Received LASH Save command"<<endl;
+- string dir(lash_event_get_string(event));
+- ofstream fout((dir + "/state").c_str());
+- fout<<int(m_program);
+- for (uint32_t i = 0; i < 63; ++i)
+- fout<<" "<<m_gui_controls[i];
+- fout<<endl;
+- write_presets((dir + "/presets").c_str());
+- lash_send_event(m_lash_client,
+- lash_event_new_with_type(LASH_Save_File));
+- }
+-
+- // restore
+- else if (lash_event_get_type(event) == LASH_Restore_File) {
+- cerr<<"Received LASH Restore command"<<endl;
+- string dir(lash_event_get_string(event));
+- for (unsigned char i = 0; i < 128; ++i)
+- m_presets[i].empty = true;
+- load_presets((dir + "/presets").c_str());
+- m_gui->clear_programs();
+- for (unsigned char i = 0; i < 128; ++i) {
+- if (!m_presets[i].empty)
+- m_gui->add_program(i, m_presets[i].name.c_str());
+- }
+- ifstream fin((dir + "/state").c_str());
+- int prog;
+- fin>>prog;
+- m_gui->set_program(prog);
+- for (uint32_t p = 0; p < 63; ++p) {
+- float tmp;
+- fin>>tmp;
+- m_gui->set_control(p, tmp);
+- }
+- lash_send_event(m_lash_client,
+- lash_event_new_with_type(LASH_Restore_File));
+- }
+-
+- // quit
+- else if (lash_event_get_type(event) == LASH_Quit) {
+- cerr<<"Received LASH Quit command"<<endl;
+- Gtk::Main::instance()->quit();
+- go_on = false;
+- }
+-
+- lash_event_destroy(event);
+- }
+- return go_on;
+-}
+-
+-
+-bool Main::init_lash(lash_args_t* lash_args, const std::string& jack_name) {
+-
+- m_lash_client = lash_init(lash_args, "AZR-3",
+- LASH_Config_File, LASH_PROTOCOL(2, 0));
+- if (m_lash_client) {
+- lash_event_t* event = lash_event_new_with_type(LASH_Client_Name);
+- lash_event_set_string(event, "AZR-3");
+- lash_send_event(m_lash_client, event);
+- lash_jack_client_name(m_lash_client, jack_name.c_str());
+- Glib::signal_timeout().
+- connect(sigc::mem_fun(*this, &Main::check_lash_events), 500);
+- }
+- else
+- cerr<<"Could not initialise LASH!"<<endl;
+- return (m_lash_client != 0);
+-}
+-
+-
+ int Main::static_process(jack_nframes_t frames, void* arg) {
+ return static_cast<Main*>(arg)->process(frames);
+ }
diff --git a/audio/azr3/patches/errs_and_warns.patch b/audio/azr3/patches/errs_and_warns.patch
new file mode 100644
index 000000000000..1a0a190c58ac
--- /dev/null
+++ b/audio/azr3/patches/errs_and_warns.patch
@@ -0,0 +1,90 @@
+Description: Fix some compilation errors and warnings.
+From: http://git.savannah.gnu.org/gitweb/?p=ll-plugins/azr3-jack.git;a=commit;h=2453bdc15286
+Author: Lars Luthman <mail@larsluthman.net>
+Origin: upstream, commit:2453bdc15286
+---
+ azr3/azr3gui.cpp | 10 +++++-----
+ azr3/azr3gui.hpp | 6 +++---
+ azr3/main.cpp | 2 --
+ 3 files changed, 8 insertions(+), 10 deletions(-)
+
+--- azr3-jack.orig/azr3/azr3gui.cpp
++++ azr3-jack/azr3/azr3gui.cpp
+@@ -332,7 +332,7 @@ void AZR3GUI::set_back_pixmap(Widget* wd
+ }
+
+
+-Knob* AZR3GUI::add_knob(Fixed& fbox, RefPtr<Pixmap>& pm, int port,
++Knob* AZR3GUI::add_knob(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ float dmin, float dmax, bool decimal) {
+@@ -350,7 +350,7 @@ Knob* AZR3GUI::add_knob(Fixed& fbox, Ref
+ s->set_bg_pixmap(STATE_SELECTED, npm);
+ s->set_bg_pixmap(STATE_INSENSITIVE, npm);
+ knob->set_style(s);
+- if (port >= 0 && port < m_adj.size()) {
++ if (port < m_adj.size()) {
+ knob->get_adjustment().signal_value_changed().
+ connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+ mem_fun(knob->get_adjustment(),
+@@ -362,7 +362,7 @@ Knob* AZR3GUI::add_knob(Fixed& fbox, Ref
+ }
+
+
+-Drawbar* AZR3GUI::add_drawbar(Fixed& fbox, RefPtr<Pixmap>& pm, int port,
++Drawbar* AZR3GUI::add_drawbar(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ Drawbar::Type type) {
+@@ -380,7 +380,7 @@ Drawbar* AZR3GUI::add_drawbar(Fixed& fbo
+ s->set_bg_pixmap(STATE_SELECTED, npm);
+ s->set_bg_pixmap(STATE_INSENSITIVE, npm);
+ db->set_style(s);
+- if (port >= 0 && port < m_adj.size()) {
++ if (port < m_adj.size()) {
+ db->get_adjustment().signal_value_changed().
+ connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+ mem_fun(db->get_adjustment(), &Adjustment::get_value)));
+@@ -391,7 +391,7 @@ Drawbar* AZR3GUI::add_drawbar(Fixed& fbo
+ }
+
+
+-Switch* AZR3GUI::add_switch(Fixed& fbox, int port,
++Switch* AZR3GUI::add_switch(Fixed& fbox, size_t port,
+ int xoffset, int yoffset, Switch::Type type) {
+ Switch* sw = manage(new Switch(type));
+ fbox.put(*sw, xoffset, yoffset);
+--- azr3-jack.orig/azr3/azr3gui.hpp
++++ azr3-jack/azr3/azr3gui.hpp
+@@ -62,15 +62,15 @@ protected:
+
+ void splitbox_clicked();
+ void set_back_pixmap(Widget* wdg, Glib::RefPtr<Gdk::Pixmap> pm);
+- Knob* add_knob(Gtk::Fixed& fbox, Glib::RefPtr<Gdk::Pixmap>& pm, int port,
++ Knob* add_knob(Gtk::Fixed& fbox, Glib::RefPtr<Gdk::Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ float dmin, float dmax, bool decimal);
+ Drawbar* add_drawbar(Gtk::Fixed& fbox, Glib::RefPtr<Gdk::Pixmap>& pm,
+- int port, float min, float max, float value,
++ size_t port, float min, float max, float value,
+ int xoffset, int yoffset,
+ Drawbar::Type type);
+- Switch* add_switch(Gtk::Fixed& fbox, int port,
++ Switch* add_switch(Gtk::Fixed& fbox, size_t port,
+ int xoffset, int yoffset, Switch::Type type);
+ Gtk::EventBox* add_clickbox(Gtk::Fixed& fbox, int xoffset, int yoffset,
+ int width, int height);
+--- azr3-jack.orig/azr3/main.cpp
++++ azr3-jack/azr3/main.cpp
+@@ -338,9 +338,7 @@ int Main::static_process(jack_nframes_t
+
+ void Main::auto_connect() {
+
+- const char* env;
+ const char** port_list;
+- const char* name = jack_get_client_name(m_jack_client);
+
+ // MIDI input
+ if (m_auto_midi != "") {
diff --git a/audio/azr3/patches/fix-compilation.patch b/audio/azr3/patches/fix-compilation.patch
new file mode 100644
index 000000000000..51d483640afd
--- /dev/null
+++ b/audio/azr3/patches/fix-compilation.patch
@@ -0,0 +1,96 @@
+--- azr3-jack/azr3/azr3gui.cpp.orig 2019-11-10 19:46:08.722849544 +0100
++++ azr3-jack/azr3/azr3gui.cpp 2019-11-11 18:59:48.967071810 +0100
+@@ -80,7 +80,7 @@
+ connect(mem_fun(*this, &AZR3GUI::splitpoint_changed));
+ Menu* menu = create_menu();
+ m_tbox->signal_button_press_event().
+- connect(bind(mem_fun(*this, &AZR3GUI::popup_menu), menu));
++ connect(sigc::bind(mem_fun(*this, &AZR3GUI::popup_menu), menu));
+
+ // keyboard split switch
+ m_splitswitch = add_switch(m_fbox, -1, 537, 49, Switch::Mini);
+@@ -141,8 +141,8 @@
+ // mode switcher
+ Widget* eb = add_clickbox(m_fbox, 14, 319, 14, 44);
+ eb->signal_button_press_event().
+- connect(sigc::hide(bind(bind(mem_fun(*this, &AZR3GUI::change_mode),
+- ref(m_fbox)), false)));
++ connect(sigc::hide(sigc::bind(sigc::bind(mem_fun(*this, &AZR3GUI::change_mode),
++ std::ref(m_fbox)), false)));
+ m_fx_widgets.push_back(eb);
+
+ // Mr Valve controls
+@@ -182,8 +182,8 @@
+ // mode switcher 2
+ Widget* eb2 = add_clickbox(m_vbox, 14, 53, 14, 44);
+ eb2->signal_button_press_event().
+- connect(sigc::hide(bind(bind(mem_fun(*this, &AZR3GUI::change_mode),
+- ref(m_fbox)), true)));
++ connect(sigc::hide(sigc::bind(sigc::bind(mem_fun(*this, &AZR3GUI::change_mode),
++ std::ref(m_fbox)), true)));
+
+ // vibrato controls
+ add_switch(m_vbox, n_1_vibrato, 39, 17, Switch::Green);
+@@ -332,7 +332,7 @@
+ }
+
+
+-Knob* AZR3GUI::add_knob(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
++Knob* AZR3GUI::add_knob(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ float dmin, float dmax, bool decimal) {
+@@ -352,7 +352,7 @@
+ knob->set_style(s);
+ if (port < m_adj.size()) {
+ knob->get_adjustment().signal_value_changed().
+- connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
++ connect(compose(sigc::bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+ mem_fun(knob->get_adjustment(),
+ &Adjustment::get_value)));
+ assert(m_adj[port] == 0);
+@@ -362,7 +362,7 @@
+ }
+
+
+-Drawbar* AZR3GUI::add_drawbar(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
++Drawbar* AZR3GUI::add_drawbar(Fixed& fbox, RefPtr<Pixmap>& pm, size_t port,
+ float min, float max, float value,
+ int xoffset, int yoffset,
+ Drawbar::Type type) {
+@@ -382,7 +382,7 @@
+ db->set_style(s);
+ if (port < m_adj.size()) {
+ db->get_adjustment().signal_value_changed().
+- connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
++ connect(compose(sigc::bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+ mem_fun(db->get_adjustment(), &Adjustment::get_value)));
+ assert(m_adj[port] == 0);
+ m_adj[port] = &db->get_adjustment();
+@@ -397,7 +397,7 @@
+ fbox.put(*sw, xoffset, yoffset);
+ if (port >= 0 && port < m_adj.size()) {
+ sw->get_adjustment().signal_value_changed().
+- connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed),port),
++ connect(compose(sigc::bind<0>(mem_fun(*this, &AZR3GUI::control_changed),port),
+ mem_fun(sw->get_adjustment(), &Adjustment::get_value)));
+ assert(m_adj[port] == 0);
+ m_adj[port] = &sw->get_adjustment();
+@@ -489,7 +489,7 @@
+ oss<<setw(2)<<setfill('0')<<iter->first<<' '<<iter->second.substr(0, 23);
+ MenuItem* item = manage(new MenuItem(oss.str()));
+ item->signal_activate().
+- connect(bind(mem_fun(*this, &AZR3GUI::program_changed), iter->first));
++ connect(sigc::bind(mem_fun(*this, &AZR3GUI::program_changed), iter->first));
+ m_program_menu->items().push_back(*item);
+ item->show();
+ item->get_child()->modify_bg(STATE_NORMAL, m_menu_bg);
+@@ -503,7 +503,7 @@
+ for (int i = 0; i < 128; ++i) {
+ MenuItem* item = manage(new MenuItem(note2str(i)));
+ item->signal_activate().
+- connect(bind(mem_fun(*m_splitpoint_adj, &Adjustment::set_value),
++ connect(sigc::bind(mem_fun(*m_splitpoint_adj, &Adjustment::set_value),
+ i / 128.0));
+ m_split_menu->items().push_back(*item);
+ item->show();
diff --git a/audio/azr3/patches/linking_order.patch b/audio/azr3/patches/linking_order.patch
new file mode 100644
index 000000000000..242716fdfd79
--- /dev/null
+++ b/audio/azr3/patches/linking_order.patch
@@ -0,0 +1,36 @@
+Description: Fix linking order to properly pass LDFLAGS values to the linker.
+Author: Alessio Treglia <alessio@debian.org>
+Forwarded: no
+---
+ Makefile.template | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- azr3-jack-1.2.3.orig/Makefile.template
++++ azr3-jack-1.2.3/Makefile.template
+@@ -118,7 +118,7 @@ $$($(2)_CXXOBJECTS): Makefile.config $$(
+ $(CXX) -c -o $$@ $(SHARED_LIBRARY_CFLAGS) $(CFLAGS) $(CXXFLAGS) $$($(2)_CFLAGS) $$(patsubst $$($(2)_BLDPRF)%,$$($(2)_SRCPRF)%,$$(subst .o,.cpp,$$@))
+
+ $$($(2)_BLDPRF)/$(1): $$($(2)_OBJECTS) $$($(2)_ARCHIVES) $$($(2)_LIBRARIES) $$(filter-out $$(wildcard $$($(2)_BUILDDIR)), $$($(2)_BUILDDIR))
+- $(CXX) $(SHARED_LIBRARY_LDFLAGS) $$($(2)_OBJECTS) -Wl,--whole-archive $$($(2)_ARCHIVES) -Wl,--no-whole-archive $$($(2)_LOCALLDFLAGS) $$($(2)_LOCALLIBRARIES) $(LDFLAGS) $$($(2)_LDFLAGS) -o $$@ -Wl,-soname=$(1).0
++ $(CXX) $(LDFLAGS) $(SHARED_LIBRARY_LDFLAGS) $$($(2)_OBJECTS) -Wl,--whole-archive $$($(2)_ARCHIVES) -Wl,--no-whole-archive $$($(2)_LOCALLDFLAGS) $$($(2)_LOCALLIBRARIES) $$($(2)_LDFLAGS) -o $$@ -Wl,-soname=$(1).0
+ /sbin/ldconfig -n $$($(2)_BLDPRF)
+
+ install-$(2)-headers: $$(patsubst %,$$($(2)_SRCPRF)/%,$$($(2)_HEADERS))
+@@ -211,7 +211,7 @@ $$($(1)_CXXOBJECTS): Makefile.config $$(
+ $(CXX) -c -o $$@ $(CFLAGS) $(CXXFLAGS) $$($(1)_CFLAGS) $$($$(patsubst %.o,%_cpp_CFLAGS,$$(notdir $$@))) $$($(1)_CFLAGS) $$(patsubst $$($(1)_BLDPRF)%,$$($(1)_SRCPRF)%,$$(subst .o,.cpp,$$@))
+
+ $$($(1)_BLDPRF)/$(1): $$($(1)_OBJECTS) $$($(1)_LIBRARIES) $$($(1)_ARCHIVES) $$(filter-out $$(wildcard $$($(1)_BUILDDIR)), $$($(1)_BUILDDIR))
+- $(CXX) $$($(1)_OBJECTS) $$($(1)_ARCHIVES) $$($(1)_LOCALLDFLAGS) $$($(1)_LOCALLIBRARIES) $$($(1)_LDFLAGS) $(LDFLAGS) -o $$@
++ $(CXX) $(LDFLAGS) $$($(1)_OBJECTS) $$($(1)_ARCHIVES) $$($(1)_LOCALLDFLAGS) $$($(1)_LOCALLIBRARIES) $$($(1)_LDFLAGS) -o $$@
+
+ install-$(1)-headers: $$(patsubst %,$$($(1)_SRCPRF)/%,$$($(1)_HEADERS))
+ mkdir -p $(DESTDIR)/$(pkgincludedir)
+@@ -264,7 +264,7 @@ $$($(2)_CXXOBJECTS): Makefile.config $$(
+ $(CXX) -c -o $$@ $(MODULE_CFLAGS) $(CFLAGS) $(CXXFLAGS) $$($(2)_CFLAGS) $$($$(patsubst %.o,%_cpp_CFLAGS,$$(notdir $$@))) $$($(2)_CFLAGS) $$(patsubst $$($(2)_BLDPRF)%,$$($(2)_SRCPRF)%,$$(subst .o,.cpp,$$@))
+
+ $$($(2)_BLDPRF)/$(1): $$($(2)_OBJECTS) $$($(2)_LIBRARIES) $$($(2)_ARCHIVES) $$(filter-out $$(wildcard $$($(2)_BUILDDIR)), $$($(2)_BUILDDIR))
+- $(CXX) $(MODULE_LDFLAGS) $$($(2)_OBJECTS) $$($(2)_LOCALLDFLAGS) $$($(2)_LOCALLIBRARIES) $$($(2)_ARCHIVES) $(LDFLAGS) $$($(2)_LDFLAGS) -o $$@
++ $(CXX) $(LDFLAGS) $(MODULE_LDFLAGS) $$($(2)_OBJECTS) $$($(2)_LOCALLDFLAGS) $$($(2)_LOCALLIBRARIES) $$($(2)_ARCHIVES) $$($(2)_LDFLAGS) -o $$@
+
+ install-$(2)-headers: $$(patsubst %,$$($(2)_SRCPRF)/%,$$($(2)_HEADERS))
+ mkdir -p $(DESTDIR)/$(pkgincludedir)
diff --git a/audio/azr3/slack-desc b/audio/azr3/slack-desc
new file mode 100644
index 000000000000..8bb331f95d8a
--- /dev/null
+++ b/audio/azr3/slack-desc
@@ -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------------------------------------------------------|
+azr3: azr3 (tonewheel organ simulator for jack-audio-connection-kit)
+azr3:
+azr3: azr3 is a JACK port of the free VST plugin AZR-3. It is a tonewheel
+azr3: organ with drawbars, distortion and rotating speakers. The original
+azr3: was written by Rumpelrausch Täips
+azr3:
+azr3: The organ has three sections, two polyphonic with 9 drawbars each
+azr3: and one monophonic bass section with 5 drawbars. The two polyphonic
+azr3: sections respond to events on MIDI channel 1 and 2, and an optional
+azr3: keyboard split function makes the bass section listen to the lower
+azr3: keys on channel 1.