13
0
Commit Graph

93 Commits

Author SHA1 Message Date
e343434b60 UI port-events are not limited to outputs. 2016-01-03 20:28:16 +01:00
9e3299f97d change Controllable::set_value() API to include grouped control consideration.
This also removes Route::group_gain_control() and associated machinery.
Not yet tested with Mackie or other surfaces. More work to done to
start using the group capabilities, and also potentially to add
or derive more controls as RouteAutomationControls
2016-01-02 04:58:30 -05:00
5dd5bf0f70 notify LV2 GUIs about port-changes when loading presets 2015-10-28 04:06:14 +01:00
0880a166c4 variable name change: make purpose of formerly named "_values" in LV2 plugin UI code more clear
And if this is wrong, then rename it again with the right one
2015-10-21 08:10:25 -04:00
270ec425f8 confirm LV2 GUI changes
If a parameter change is initiated by the UI, the host sends a
notifications to confirm (echo) or invalidates (replaces) the value.
(automation: touch, playback,...).

Stateless LV2 GUIs without internal data-model depend on this.
2015-10-21 01:57:16 +02:00
47bbffc5d8 do not update LV2 output port displays unless the value has changed 2015-10-20 11:39:56 -04:00
1d4494961b add commentary 2015-10-20 11:31:18 -04:00
8533b8244f also update LV2 output port displays as part of periodic updates 2015-10-20 11:28:53 -04:00
ac008dac02 Clean up generic and LV2 plugin GUI to deal with ParameterChanged(Externally) alteration 2015-10-20 10:23:49 -04:00
7804a524dc Revert "rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result."
This reverts commit 336b2eb9a4.
2015-10-20 10:23:49 -04:00
336b2eb9a4 rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.

Significant modification of LV2 GUI updating was required.

Still to be tested for feedback loop issues: AudioUnits
2015-10-20 09:07:58 -04:00
aabc5108f3 Revert inadvertently pushed commit
This reverts commit 3a6114c025.
The actual solution is http://dev.drobilla.net/ticket/1085
2015-09-13 04:10:14 +02:00
3a6114c025 center, don't expand plugin widgets 2015-09-13 04:09:24 +02:00
ebe15849d4 gracefully handle LV2 GUI instantiation failure. 2015-09-06 19:32:13 +02:00
d1334074af add plugin parameter reset button - closes #6297 2015-05-04 20:52:48 +02:00
de078a04e2 Fix LV2 preset deletion and clash between plugins.
Before this, LV2 preset deletion in Ardour was doubly broken: the wrong file
was being removed, and removing the correct file would only result in a broken
preset.  This change uses a new version of Lilv which has a more sophisticated
mechanism for preset deletion.

Also, fix "clashing" presets saved with the same name for different plugins, by
prefixing the plugin name to the bundle (this is now a recommendation in the
LV2 preset specification).
2015-03-07 14:54:03 -05:00
a0eeb80885 fix embedded plugin UI keyboard handling
When the GUI is opened the first time all is fine, focus is on the
embedded widget. However once a user presses one of the preset buttons
(Add, Save,...) there is no possibility to return focus to the
embedded widget. Ardour always 'sees' it as focus=GtkButton and passes
the event to the editor.
2015-02-21 03:16:04 +01:00
12ad41675d fix memory leak in case LV2 GUI fails. 2015-02-19 20:39:26 +01:00
5b3ff655f1 Fix LV2 UIs with spacey paths (e.g. Pianoteq). 2015-02-13 22:00:38 -05:00
b5c9a92a58 Move Timers/Timeouts from ARDOUR_UI into functions in timers.h and use PBD::Timers 2015-01-01 19:04:14 +07:00
8a128b33d3 Automation of LV2 plugin properties.
Work towards ParameterDescriptor being used more universally to describe control characteristics.
2014-11-02 02:10:24 -05:00
0a60077a61 Fix spelling error. 2014-10-31 20:46:09 -04:00
c01e37171e keep processing LV2 Ringbuffer once it is allocated
Discard messages in LV2PluginUI::write_to_ui() if the
ringbuffer exists but the UI is not active.

This fixes "[ERROR]: Error writing from plugin to UI" messages
if the UI was once active but has been closed since.

This is a hotfix solution, eventually the LV2 backend should be updated
and a function LV2Plugin::disable_ui_emmission() implemented.
2013-11-05 02:06:20 +01:00
01e0f51223 LV2 extUI handling - amend to previous commit. 2013-09-02 16:57:46 +02:00
c05ad01b2d LV2 external UI handling - revert to <= 3.3. behaviour
Don't ever clean up external UI plugins that use the LV2plug.in URI.
only free the memory of the last instance when the plugin is removed
or ardour closes.
2013-09-02 16:21:12 +02:00
03c26762e6 update external plugin UI handling
amend to 4cdb018 and 1d972d0

override ui_closed() behavior for lv2ui:external
Keep UI around and do not re-instantiate, but simply show it again.
(this is against the original specs but was agreed upon by various
authors and the previous behavior or Ardour.)

kx:external-ui are cleaned up after ui_closed().
2013-08-29 13:05:11 +02:00
1d972d05c5 add LV2 support for kx:external-ui#
the ABI of http://kxstudio.sf.net/ns/lv2ext/external-ui# is identical to
http://lv2plug.in/ns/extensions/ui#external
It just adds a distinction between #Host and #Widget for cosmetic reasons.
Sadly some newer plugins are released with only support for kxstudio URI :(
2013-08-25 16:21:18 +02:00
4cdb018cae free memory of external plugins on GUI close (major mem leak).
There is at least one known plugin that has a problem with this
(custom thread race condition) but it also crashes in other hosts:
http://www.drumgizmo.org/wiki/doku.php?id=bugs&do=showcaselink&showid=8&project=drumgizmo

tested to be working with various nedko, falktx and x42 plugins
2013-08-25 16:21:18 +02:00
3ca63cc38c fix gtk "child->parent == NULL" asserts 2013-08-03 13:45:27 +02:00
c33cabeb82 update plugin UIs at reasonable rate (25Hz) 2013-07-11 20:39:24 +02:00
4c5ef5318e Sent precise transport information to LV2 plugins via events.
We send the full transport state (frame position, BBT time, transport speed,
meter) to the plugin:

 * At the start of a cycle whenever a relocate or transport speed change has
   occurred

 * On every occurrence of a meter change within a cycle

This means the plugin gets a sample accurate meter/tempo map, even if the meter
changes in the middle of a cycle.  However, this is not quite right yet: things
can get wonky if the tempo map is edited while rolling, since this code will
not detect the change and fail to update the plugin at the start of the cycle.

Other changes:

 * Factor out TempoMetric::set_metric() and simplify some tempo functions
 * Clean up LV2 URID stuff


git-svn-id: svn://localhost/ardour2/branches/3.0@13513 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-17 18:41:19 +00:00
4e3aee3548 LV2: Send messages from one UI to all replicated instances.
Addresses issue mentioned in previous commit.

git-svn-id: svn://localhost/ardour2/branches/3.0@13149 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-28 15:42:42 +00:00
7b7140f5ed Create and realize LV2 UI container before instantiating (required for proper embedding in some situations).
git-svn-id: svn://localhost/ardour2/branches/3.0@13140 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-21 19:29:19 +00:00
760ccbabfb add -Wpointer-arith -Wcast-qual -Wcast-align and others to compile flags, and fix const cast warnings generated by new flags
git-svn-id: svn://localhost/ardour2/branches/3.0@13124 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-10 15:57:09 +00:00
34321110dd patch for handling LV2 presets from colinf (#4698)
git-svn-id: svn://localhost/ardour2/branches/3.0@12785 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-19 15:59:14 +00:00
6fa6514cfd Remove over 500 unnecessary includes (including 54 of session.h).
It's slightly possible that this causes trivial build failures on different
configurations, but otherwise shouldn't cause any problems (i.e. no actual
changes other than include/naming/namespace stuff).  I deliberately avoided
removing libardour-config.h since this can mysteriously break things, though a
few of those do seem to be unnecessary.

This commit only targets includes of ardour/*.h.  There is also a very large
number of unnecessary includes of stuff in gtk2_ardour; tackling that should
also give a big improvement in build time when things are modified.


git-svn-id: svn://localhost/ardour2/branches/3.0@12420 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-24 06:09:29 +00:00
17406258ae Gracefully handle LV2 UIs that fail to return a widget.
git-svn-id: svn://localhost/ardour2/branches/3.0@12416 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-24 02:50:36 +00:00
bc34fd18c2 Fix crashes when closing LV2 plugin UIs.
git-svn-id: svn://localhost/ardour2/branches/3.0@12085 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-24 22:07:05 +00:00
8b111ed224 Fix crash when closing LV2 UIs.
git-svn-id: svn://localhost/ardour2/branches/3.0@12067 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-23 19:54:31 +00:00
6e2dd99a04 Remove support for old and/or experimental LV2 stuff.
Ardour 3 now simply depends on the latest version of Lilv, which depends on the LV2 package (which contains all the LV2 headers).

git-svn-id: svn://localhost/ardour2/branches/3.0@12041 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-20 01:00:45 +00:00
81a76cc0fd A bit of crash proofiness for insane plugin UIs.
Plugin UI touch confirmed working with suil r4173 and distrho JUCE plugin "TAL Filter II".


git-svn-id: svn://localhost/ardour2/branches/3.0@11935 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-12 04:03:14 +00:00
d99311d21b Implement ui:portIndex and ui:touch features.
Touch should allow custom plugin UIs to work properly with automation as the
generic UI does.  IIRC this was requested for mixbus, however, no current
plugin UI I am aware of implements it, so it is completely untested.


git-svn-id: svn://localhost/ardour2/branches/3.0@11888 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-11 04:53:47 +00:00
Carl Hetherington
5638dd0c17 Patch from Nick to fix crash on closing a LV2 plugin
(#4794).


git-svn-id: svn://localhost/ardour2/branches/3.0@11764 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-27 21:08:11 +00:00
1716dc0ce6 Update to latest LV2 atom extension.
Implement proper support for fixed size LV2 plugin UIs.


git-svn-id: svn://localhost/ardour2/branches/3.0@11757 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-25 17:17:40 +00:00
Carl Hetherington
0e5abb0e4b Make lv2ui_instantiate and lv2ui_free a little more symmetrical, so that there aren't GTK errors on reopening a LV2 plugin UI because of trying to repack already packed widgets (#4733).
git-svn-id: svn://localhost/ardour2/branches/3.0@11589 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-04 21:45:51 +00:00
fdca23a791 Sshh.
git-svn-id: svn://localhost/ardour2/branches/3.0@11523 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25 20:55:57 +00:00
66f9f3061f Fix real-time violation, only send UI updates if explicitly requested by UI.
git-svn-id: svn://localhost/ardour2/branches/3.0@11522 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25 20:54:38 +00:00
1e6694f41a Use FastScreenUpdate for UI message updating, and only if plugin has message output ports.
git-svn-id: svn://localhost/ardour2/branches/3.0@11521 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25 20:43:14 +00:00
c65b95f6d3 Tidy.
git-svn-id: svn://localhost/ardour2/branches/3.0@11520 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25 09:19:03 +00:00
4d7810dee8 Full round-trip message communication between LV2 UIs and plugins.
Still a little bit rough around the edges, but it works.  This can be tested
with the eg-sampler plugin from LV2 svn (whose UI can load different samples).


git-svn-id: svn://localhost/ardour2/branches/3.0@11519 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25 08:43:23 +00:00