Commit Graph

98 Commits

Author SHA1 Message Date
Robin Gareus
b8491014a5 Update plugin classification
* dedicated API for classes (effect, instrument, util)
* prepare for tags (rather than categories)
* prepare removal of per-plugin in_category() API
2018-01-30 01:33:48 +01:00
Paul Davis
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
Robin Gareus
2ca3009143 Allow to send MIDI data directly to a plugin 2017-09-09 03:08:46 +02:00
Tim Mayberry
d972fa431c Remove unnecessary LocaleGuard header include 2017-06-23 09:12:53 +10:00
Tim Mayberry
a5836e2922 Remove LocaleGuard from Plugin::get_state
Let the plugin implementation of Plugin::add_state use a LocaleGuard if it is
necessary (VST/LV2). This puts the LocaleGuards where they are required but the
LocaleGuards in Session::set/get_state will mean these LocaleGuards are a noop.
They are still useful for documentation purposes and in case the code is called
from a non-Session context at some point.
2017-06-22 10:48:38 +10:00
Tim Mayberry
6d35b3c4e4 Remove locale_guard.h from ardour/ardour.h header
Add to source files that use LocaleGuard

Results in far less recompiling when pbd/locale_guard.h changes
2017-06-22 10:48:38 +10:00
Robin Gareus
c3390a2c4b Add an API to conveniently query plugin-parameter labels 2017-04-25 14:01:00 +02:00
Tim Mayberry
64e1bf5ab7 Use XMLNode::get/set_property API in ARDOUR::Plugin class 2017-04-19 09:36:49 +10:00
Robin Gareus
64f40c09fa Fix setting Plugin-Owner (route) for analysis plugins 2017-04-12 17:37:26 +02:00
Robin Gareus
52b203ad36 Fix issue with automation-playback constantly marking a session dirty. 2017-03-12 02:37:30 +01:00
Robin Gareus
b084036c87 Fix oddities when replacing VST-presets.
VST used the count of available of presets as URI:
 - add 2 presets (1,2)
 - remove first, add another one -> two presets with same URI (2,2)

PluginInfo::get_presets() simply lists all (name only) in a vector.
Plugin::find_presets() uses the URI in a map (unique by URI).

..various ensuing bugs: eg. Plugin::remove_preset() looked up by name,
but didn't check for NULL.
2017-01-20 00:50:14 +01:00
Robin Gareus
8b93fb02f3 Mac VST-2.x support 2016-11-13 16:35:06 +01:00
Robin Gareus
97111b0ec2 Clean up is_instrument vs needs-midi-in API
The latter is only really relevant for Audio Units.

This fixes an issue with vocoders or audio-plugins that simply have
a MIDI input for other purposes to be wrongly categorized as Instruments..
.. and thereby override strict-i/o rules (prefer stereo)
2016-10-07 20:55:21 +02:00
Paul Davis
f41bc70ee9 change all MIDI read-from-source to map all events into the loop-range for seamless looping (if using) 2016-09-13 14:11:29 -05:00
Robin Gareus
f0a54d0f9c mark session dirty when changing plugin presets 2016-08-06 14:28:45 +02:00
Paul Davis
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
Robin Gareus
e9a8ccc7e2 major internal plugin & processor API change:
Pass current (latency compensated) cycle times to plugin.
This fixes time-reporting to plugins and also fixes automation
and when bouncing (the session->transport* is not valid) etc.
2016-06-25 02:23:56 +02:00
Robin Gareus
6d343ba3c6 fix LocaleGuard contstructor (3dc77280) 2016-05-07 12:19:41 +02:00
Robin Gareus
3dc7728038 we always only use the "C" locale when saving. 2016-05-05 21:49:56 +02:00
Robin Gareus
e56c8f0309 don't special case lua processors, use plugin-manager 2016-04-29 02:57:42 +02:00
Robin Gareus
424cacfbc8 variable plugin port config.
* extend plugin API (query IO ports)
* collect possible variable plugin configurations (AU, Lua)
* prepare semi-automatic configuration (presets: mono, stereo, N)
2016-04-15 17:57:40 +02:00
Robin Gareus
b23ef97845 add Plugin API to query port-labels and side-chain property. 2016-04-03 22:45:23 +02:00
Robin Gareus
fc988428bc fix plugin preset listing 2016-03-19 16:41:59 +01:00
Robin Gareus
51385ced3c Implement Lua DSP processor/plugin 2016-02-23 15:41:08 +01:00
Robin Gareus
0e6f763734 and again. 2016-01-09 01:24:10 +01:00
Robin Gareus
5a047fcd15 fix typo in ce7d18bc16 2016-01-09 01:01:18 +01:00
Robin Gareus
ce7d18bc16 don't allow to delete factory presets 2016-01-09 00:51:24 +01:00
Robin Gareus
b4b0f57c0b remove default implementation to query plugin-preset names 2016-01-08 11:09:43 +01:00
Robin Gareus
d5dbdc9ea5 Add API to allow querying plugin-presets without instantiating the plugin 2016-01-07 17:23:39 +01:00
Robin Gareus
81a3ae985d Keep plugin presets in sync across plugin-instances. 2015-12-25 22:38:48 +01:00
Robin Gareus
7a5cea45e1 fix seamless midi-looping - fixes #5438
well, now...
 - Midi-Ports have a midi-buffer.
 - Midi-Tracks have a midi-buffer.
 - Midi-tracks have a diskstream.
 - Midi-diskstream has a midi-ring-buffer.
 - Midi-tracks have a delivery
 - The delivery can get a reference to the actual backend-ports
 - The delivery calls the Midi-Port's flush() buffer to send out queued events
   at the end of a cycle

all clear ? :)

 - when splitting the process-cycle: only the Ports are informed.
   all other objects see a "normal" short process cycle starting at "0".

The offset needs to be applied early on, so that internally routed buffers
push the event at the correct time when combining the buffer with
immediate and async events.

Luckily Port::port_offset() is a static member, available to all, objects,
which allows to bridge the conceptual gap between the diskstream and
the delivery.

There's a snag:
When there's a note-on directly at the beginning of the loop it coincides
with the panic message sent when looping.
The panic comes before note events, so it *should* be good.

Also the final note-offs (state tracker end of loop/region) are sent
1 sample too early (smells like an off-by-one), and are hence dropped.
(no matter we send a panic right after it).
It should really be at the same time, just before the panic.
2015-11-29 01:27:18 +01:00
Paul Davis
f806f059b3 rename Plugin::ParameterChanged to ParameterChangedExternally to reflect its intent, and clean up the libardour side of 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.
2015-10-20 10:23:49 -04:00
Paul Davis
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
Paul Davis
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
John Emmas
8d46cc99fe Fix a problem where VST automation data wasn't getting written (if the adjustments were made from the plugin's own controls) 2015-10-14 14:54:27 +01:00
Robin Gareus
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Robin Gareus
8e7c065f83 limit plugin-preset ‘seen_set_state’ message. 2015-03-23 01:53:07 +01:00
Ben Loftis
d2fa2450aa use C locale, because POSIX locale is not supported on windows, and operation is undefined. C works on all platforms 2015-01-19 07:29:25 -06:00
David Robillard
8bba63282a Reduce unnecessary non-const MIDI buffer access. 2014-11-20 15:32:06 -05:00
John Emmas
d176cbc804 'libs/ardour' - Compiler specific includes and includes 2013-08-04 17:01:37 +01:00
Paul Davis
650964f320 Merge branch 'master' into windows 2013-07-17 08:05:59 -04:00
Paul Davis
332deec155 tweaks to NO_PLUGIN_STATE logic 2013-07-15 20:43:44 -04:00
Paul Davis
742753a996 Don't require liblrdf on windows
This removes dependence on liblrdf, libraptor and libxslt
2013-07-11 14:20:02 -04:00
Paul Davis
80a13145f3 Generalize no-plugin-state from AudioUnits to all plugins
Replace AU_STATE_SUPPORT compile-time define with NO_PLUGIN_STATE and make it prevent plugin state setting, preset loading, preset saving and plugin state saving. Blocks on these actions exist partially in the backend and partially in the GUI (this latter class are not absolute, and should OSC or MIDI be able to drive Plugin::save_preset() the block could be circumvented). Set NO_PLUGIN_STATE if --freebie is used at waf-configure time
2013-06-13 22:50:54 -04:00
Paul Davis
d89f209f4a tentative redesign of MIDI looping, will probably fix #5050 but needs more extensive testing; remove several unused parameter names
git-svn-id: svn://localhost/ardour2/branches/3.0@13810 d708f5d6-7413-0410-9779-e7cbd77b26cf
2013-01-08 21:36:42 +00:00
Paul Davis
5ce7e740c4 when sending notice of a change in a plugin parameter value, send the current value
git-svn-id: svn://localhost/ardour2/branches/3.0@13121 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-09 17:37:23 +00:00
Paul Davis
1df227424a patch from colinf that adds an 'empty' preset to the preset drop-down list, so that plugins can be set back to the 'no preset' state rather than being stuck in the state of 'preset loaded and modified'. This should apply to all plugin types, though I've only tried it on LV2 and LADSPA.
git-svn-id: svn://localhost/ardour2/branches/3.0@12787 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-19 16:02:24 +00:00
David Robillard
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
Paul Davis
02ec346c2b add virtual method is_instrument() to PluginInfo (already existed for AUPluginInfo) and use to determine if plugin is an instrument for the purposes of AddRouteDialog, since the rules are plugin-type specific
git-svn-id: svn://localhost/ardour2/branches/3.0@11426 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-02 18:51:32 +00:00
Paul Davis
5558b3cf06 a grab bag of changes correcting and improving the way MIDI note on/off tracking is done. may/should fix a number of problem with spurious note-offs under a variety of circumstances
git-svn-id: svn://localhost/ardour2/branches/3.0@11074 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-26 17:01:31 +00:00