Skip to content

Commit

Permalink
- Early preparations for v0.7.7 (haziest photon) release.
Browse files Browse the repository at this point in the history
- LV2 UI Touch feature/interface support added. (EXPERIMENTAL)
  • Loading branch information
rncbc committed Apr 26, 2016
1 parent 5bf9c27 commit 3fe8414
Show file tree
Hide file tree
Showing 18 changed files with 728 additions and 567 deletions.
12 changes: 7 additions & 5 deletions ChangeLog
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@ Qtractor - An Audio/MIDI multi-track sequencer
ChangeLog


GIT HEAD
0.7.7 2016-04-27 Haziest Photon Beta

- LV2 UI Touch feature/interface support added.

- MIDI aware plug-ins are now void from multiple or parallel
instantiation. (EXPERIMENTAL)
instantiation.

- MIDI tracks and buses plug-in chains now honor the number
of effective audio channels from the assigned audio output
bus; dedicated audio output ports will keep default to the
stereo two channels. (EXPERIMENTAL)
stereo two channels.

- Plug-in rescan option has been added to plug-ins selection
dialog (yet another suggestion by Frank Neumann, thanks).
Expand All @@ -30,7 +32,7 @@ GIT HEAD
position (while in the lower view pane).


0.7.6 2016-04-05 A Hazier Photon Beta
0.7.6 2016-04-05 Hazier Photon Beta

- Plug-ins search path and out-of-process (aka. dummy) VST
plug-in inventory scanning has been heavily refactored.
Expand All @@ -43,7 +45,7 @@ GIT HEAD
custom LV2 Plug-in State Presets.


0.7.5 2016-03-21 The Hazy Photon Beta
0.7.5 2016-03-21 Hazy Photon Beta

- Beat unit divisor, aka. the denominator or lower numeral
in the time-signature, have now a visible and practical
Expand Down
18 changes: 14 additions & 4 deletions README
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@ Project page:
Git repos:

http://git.code.sf.net/p/qtractor/code
https://github.com/rncbc/qtractor
https://github.com/rncbc/qtractor.git
https://gitlab.com/rncbc/qtractor.git
https://bitbucket.org/rncbc/qtractor.git

Wiki:

http://sourceforge.net/p/qtractor/wiki/

Weblog:

Expand Down Expand Up @@ -205,8 +211,8 @@ web site (http://www.rncbc.org).
Acknowledgments
---------------

A newer Qtractor quick start guide and user manual has been updated
for version 0.5.x by Seth Kenlon & Klaatu.
The dated Qtractor quick start guide and user manual for version 0.5.x
has been authored by Seth Kenlon & Klaatu.
(http://downloads.sourceforge.net/qtractor/qtractor-0.5.x-user-manual.pdf)

The older Qtractor user manual for version 0.3.0 and before, have
Expand All @@ -217,7 +223,11 @@ Qtractor logo/icon is an original work of Andy Fitzsimon, borrowed
from the public domain openclipart.org gallery.

A special mention should also go to the translators of Qtractor
(see TRANSLATORS).
(see TRANSLATORS) and of course, last but not least, to all the
past, present and future contributors of the Qtractor Wiki.
(http://sourceforge.net/p/qtractor/wiki/)

Thank you all.


References
Expand Down
6 changes: 4 additions & 2 deletions README.VST
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ from its site:
http://www.steinberg.net

It doesn't really matter much whether you pick the VST 2.3 or VST 2.4
version, you need to pick one and just one only. Do not ask for the
more recent VST 3.0 or later. It won't work and I won't care :)
version, you need to pick one and just one only. Do not try for the
more recent VST 3.0 or later. It won't work and I won't care :) but
still, you may need to download the later anyway, as the former are
probably included and distributed in that way only nowadays.

Once you have downloaded the VST SDK zip-archive, for which you'll
have to accept their license and supply some personal data, you'll
Expand Down
28 changes: 27 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Process this file with autoconf to produce a configure script.
AC_INIT(Qtractor, 0.7.6.14, [email protected], qtractor)
AC_INIT(Qtractor, 0.7.6.15, [email protected], qtractor)

AC_CONFIG_SRCDIR(src/qtractor.cpp)
AC_CONFIG_HEADERS(src/config.h)
Expand Down Expand Up @@ -199,6 +199,11 @@ AC_ARG_ENABLE(lv2-buf-size,
[ac_lv2_buf_size="$enableval"],
[ac_lv2_buf_size="yes"])

AC_ARG_ENABLE(lv2-ui-touch,
AC_HELP_STRING([--enable-lv2-ui-touch], [enable LV2 plug-in UI Touch interface support (default=yes)]),
[ac_lv2_ui_touch="$enableval"],
[ac_lv2_ui_touch="yes"])

AC_ARG_ENABLE(lv2-ui-idle,
AC_HELP_STRING([--enable-lv2-ui-idle], [enable LV2 plug-in UI Idle interface support (default=yes)]),
[ac_lv2_ui_idle="$enableval"],
Expand Down Expand Up @@ -723,6 +728,7 @@ fi
if test "x$ac_lv2_ui" = "xno"; then
ac_suil="no"
ac_lv2_external_ui="no"
ac_lv2_ui_touch="no"
ac_lv2_ui_idle="no"
ac_lv2_ui_show="no"
ac_lv2_ui_gtk2="no"
Expand Down Expand Up @@ -799,6 +805,7 @@ if test "x$ac_lilv" = "xno"; then
ac_lv2_time_position="no";
ac_lv2_options="no"
ac_lv2_buf_size="no"
ac_lv2_ui_touch="no"
ac_lv2_ui_idle="no"
ac_lv2_ui_show="no"
ac_lv2_ui_gtk2="no"
Expand Down Expand Up @@ -1059,6 +1066,7 @@ if test "x$ac_lv2" = "xyes"; then
ac_lv2_time_position="no";
ac_lv2_options="no"
ac_lv2_buf_size="no"
ac_lv2_ui_touch="no"
ac_lv2_ui_idle="no"
ac_lv2_ui_show="no"
ac_lv2_ui_gtk2="no"
Expand All @@ -1074,13 +1082,15 @@ if test "x$ac_lv2_ui" = "xyes"; then
else
AC_MSG_WARN([*** LV2 UI support will be disabled.])
ac_lv2_external_ui="no"
ac_lv2_ui_touch="no"
ac_lv2_ui_idle="no"
ac_lv2_ui_show="no"
ac_lv2_ui_gtk2="no"
ac_lv2_ui_x11="no"
fi
else
ac_lv2_external_ui="no"
ac_lv2_ui_touch="no"
ac_lv2_ui_idle="no"
ac_lv2_ui_show="no"
ac_lv2_ui_gtk2="no"
Expand Down Expand Up @@ -1252,6 +1262,21 @@ if test "x$ac_lv2_time_position" = "xyes"; then
AC_MSG_WARN([*** LV2 Time/position support will be disabled.])
fi
fi
if test "x$ac_lv2_ui_touch" = "xyes"; then
AC_CACHE_CHECK([for LV2 UI Touch interface],
ac_cv_lv2_ui_touch, [
AC_TRY_LINK([#include "lv2/lv2plug.in/ns/extensions/ui/ui.h"], [
// Checking for LV2 UI Touch interface...
LV2UI_Touch touch;
], ac_cv_lv2_ui_touch="yes", ac_cv_lv2_ui_touch="no")
])
ac_lv2_ui_touch=$ac_cv_lv2_ui_touch
if test "x$ac_lv2_ui_touch" = "xyes"; then
AC_DEFINE(CONFIG_LV2_UI_TOUCH, 1, [Define if LV2 UI Touch interface support is available.])
else
AC_MSG_WARN([*** LV2 UI Touch interface support will be disabled.])
fi
fi
if test "x$ac_lv2_ui_idle" = "xyes"; then
AC_CACHE_CHECK([for LV2 UI Idle interface],
ac_cv_lv2_ui_idle, [
Expand Down Expand Up @@ -1434,6 +1459,7 @@ echo " LV2 plug-in Time support . . . . . . . . . . . . .: $ac_lv2_time"
echo " LV2 plug-in Time/position support . . . . . . . .: $ac_lv2_time_position"
echo " LV2 plug-in Options support . . . . . . . . . . .: $ac_lv2_options"
echo " LV2 plug-in Buf-size support . . . . . . . . . . .: $ac_lv2_buf_size"
echo " LV2 plug-in UI Touch interface support . . . . . .: $ac_lv2_ui_touch"
echo " LV2 plug-in UI Idle interface support . . . . . .: $ac_lv2_ui_idle"
echo " LV2 plug-in UI Show interface support . . . . . .: $ac_lv2_ui_show"
if test "x$ac_qt5" = "xyes"; then
Expand Down
6 changes: 6 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
qtractor (0.7.7-25) unstable; urgency=low

* New release: haziest photon beta

-- Rui Nuno Capela <[email protected]> Wed, 27 Apr 2016 19:30:00 +0100

qtractor (0.7.6-24) unstable; urgency=low

* New release: hazier photon beta
Expand Down
2 changes: 1 addition & 1 deletion debian/rules
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ APPNAME := qtractor
#export DH_VERBOSE=1

# This is the debhelper compatibility version to use.
#export DH_COMPAT=4
#export DH_COMPAT=7

# Set Qt5 environment for qtchooser.
export QT_SELECT=5
Expand Down
4 changes: 3 additions & 1 deletion qtractor.spec.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
%define name @PACKAGE_TARNAME@
%define version @PACKAGE_VERSION@
%define release 24
%define release 25

%define _prefix @ac_prefix@

Expand Down Expand Up @@ -108,6 +108,8 @@ the personal home-studio.
%{_datadir}/man/man1/%{name}.1.gz

%changelog
* Wed Apr 27 2016 Rui Nuno Capela <[email protected]> 0.7.7
- The Haziest Photon beta release.
* Tue Apr 5 2016 Rui Nuno Capela <[email protected]> 0.7.6
- A Hazier Photon beta release.
* Mon Mar 21 2016 Rui Nuno Capela <[email protected]> 0.7.5
Expand Down
60 changes: 59 additions & 1 deletion src/qtractorLv2Plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -812,6 +812,27 @@ static void qtractor_lv2_ui_closed ( LV2UI_Controller ui_controller )
#endif // CONFIG_LV2_EXTERNAL_UI


#ifdef CONFIG_LV2_UI_TOUCH

static void qtractor_lv2_ui_touch (
LV2UI_Feature_Handle handle, uint32_t port_index, bool grabbed )
{
qtractorLv2Plugin *pLv2Plugin
= static_cast<qtractorLv2Plugin *> (handle);
if (pLv2Plugin == NULL)
return;

#ifdef CONFIG_DEBUG
qDebug("qtractor_lv2_ui_touch(%p, %u, %d)", pLv2Plugin, port_index, int(grabbed));
#endif

// Just flag up the closure...
pLv2Plugin->lv2_ui_touch(port_index, grabbed);
}

#endif // CONFIG_LV2_UI_TOUCH


#include <QResizeEvent>

class qtractorLv2Plugin::EventFilter : public QObject
Expand Down Expand Up @@ -3000,6 +3021,10 @@ void qtractorLv2Plugin::closeEditor (void)

m_ui_params.clear();

#ifdef CONFIG_LV2_UI_TOUCH
m_ui_params_touch.clear();
#endif

#ifdef CONFIG_LV2_UI_SHOW
m_lv2_ui_show_interface = NULL;
#endif
Expand Down Expand Up @@ -3377,6 +3402,11 @@ void qtractorLv2Plugin::lv2_ui_port_write ( uint32_t port_index,
if (buffer_size != sizeof(float) || protocol != 0)
return;

#ifdef CONFIG_LV2_UI_TOUCH
if (m_ui_params_touch.value(port_index, false))
return;
#endif

const float val = *(float *) buffer;

// FIXME: Update plugin params...
Expand Down Expand Up @@ -3405,6 +3435,23 @@ uint32_t qtractorLv2Plugin::lv2_ui_port_index ( const char *port_symbol )
: LV2UI_INVALID_PORT_INDEX;
}


#ifdef CONFIG_LV2_UI_TOUCH

// LV2 UI touch control (ui->host).
void qtractorLv2Plugin::lv2_ui_touch ( uint32_t port_index, bool grabbed )
{
#ifdef CONFIG_DEBUG_0
qDebug("qtractorLv2Plugin[%p]::lv2_ui_touch(%u, %d)",
this, port_index, int(grabbed);
#endif

m_ui_params_touch[port_index] = grabbed;
}

#endif // CONFIG_LV2_UI_TOUCH


// LV2 UI resize control (host->ui).
void qtractorLv2Plugin::lv2_ui_resize ( const QSize& size )
{
Expand Down Expand Up @@ -3445,7 +3492,7 @@ bool qtractorLv2Plugin::lv2_ui_instantiate (
int iFeatures = 0;
while (m_lv2_features[iFeatures]) { ++iFeatures; }

m_lv2_ui_features = new LV2_Feature * [iFeatures + 8];
m_lv2_ui_features = new LV2_Feature * [iFeatures + 9];
for (int i = 0; i < iFeatures; ++i)
m_lv2_ui_features[i] = (LV2_Feature *) m_lv2_features[i];

Expand Down Expand Up @@ -3499,6 +3546,9 @@ bool qtractorLv2Plugin::lv2_ui_instantiate (
qtractor_lv2_ui_port_index,
NULL, NULL);
if (m_suil_host) {
#ifdef CONFIG_LV2_UI_TOUCH
suil_host_set_touch_func(m_suil_host, qtractor_lv2_ui_touch);
#endif
m_suil_instance = suil_instance_new(m_suil_host, this,
ui_host_uri, plugin_uri, ui_uri, ui_type_uri,
ui_bundle_path, ui_binary_path, m_lv2_ui_features);
Expand Down Expand Up @@ -3554,6 +3604,14 @@ bool qtractorLv2Plugin::lv2_ui_instantiate (
m_lv2_ui_port_map_feature.data = &m_lv2_ui_port_map;
m_lv2_ui_features[iFeatures++] = &m_lv2_ui_port_map_feature;

#ifdef CONFIG_LV2_UI_TOUCH
m_lv2_ui_touch.handle = this;
m_lv2_ui_touch.touch = qtractor_lv2_ui_touch;
m_lv2_ui_touch_feature.URI = LV2_UI__touch;
m_lv2_ui_touch_feature.data = &m_lv2_ui_touch;
m_lv2_ui_features[iFeatures++] = &m_lv2_ui_touch_feature;
#endif

#if QT_VERSION >= 0x050100
#ifdef CONFIG_LV2_UI_X11
if (m_lv2_ui_type == LV2_UI_TYPE_X11) {
Expand Down
12 changes: 12 additions & 0 deletions src/qtractorLv2Plugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,11 @@ class qtractorLv2Plugin : public qtractorPlugin
// LV2 UI portMap method.
uint32_t lv2_ui_port_index(const char *port_symbol);

#ifdef CONFIG_LV2_UI_TOUCH
// LV2 UI touch control (ui->host).
void lv2_ui_touch(uint32_t port_index, bool grabbed);
#endif

// LV2 UI resize control (host->ui).
void lv2_ui_resize(const QSize& size);

Expand Down Expand Up @@ -466,6 +471,12 @@ class qtractorLv2Plugin : public qtractorPlugin
// Changed UI params hash-queue.
QHash<unsigned long, float> m_ui_params;

#ifdef CONFIG_LV2_UI_TOUCH
LV2UI_Touch m_lv2_ui_touch;
LV2_Feature m_lv2_ui_touch_feature;
QHash<unsigned long, bool> m_ui_params_touch;
#endif

#ifdef CONFIG_LV2_UI_IDLE
// LV2 UI Idle extension data interface.
const LV2UI_Idle_Interface *m_lv2_ui_idle_interface;
Expand All @@ -474,6 +485,7 @@ class qtractorLv2Plugin : public qtractorPlugin
// LV2 UI Show extension data interface.
const LV2UI_Show_Interface *m_lv2_ui_show_interface;
#endif

#if QT_VERSION >= 0x050100
#ifdef CONFIG_LV2_UI_GTK2
struct _GtkWidget *m_pGtkWindow;
Expand Down
3 changes: 3 additions & 0 deletions src/qtractorMainForm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5467,6 +5467,9 @@ void qtractorMainForm::helpAbout (void)
list << tr("LV2 Plug-in Buf-size support disabled.");
#endif
#ifdef CONFIG_LV2_UI
#ifndef CONFIG_LV2_UI_TOUCH
list << tr("LV2 Plug-in UI Touch interface support disabled.");
#endif
#ifndef CONFIG_LV2_UI_IDLE
list << tr("LV2 Plug-in UI Idle interface support disabled.");
#endif
Expand Down
Loading

0 comments on commit 3fe8414

Please sign in to comment.