Commit Graph

125 Commits

Author SHA1 Message Date
Robin Gareus
4bd1e2e184 NO-OP: consolidate code (VST ID by name) 2021-07-03 19:07:27 +02:00
Robin Gareus
23c9d1b732 AU: Support loading sessions using numeric AU IDs 2021-07-03 19:07:26 +02:00
Robin Gareus
2f68656679 Update API to send immediate events
This is to allow passing the EventType to the Buffer, using a
consistent {[Time], Type, size, data} API, that is equivalent
for all classes.

This is particularly useful for Lua scripts and plugin UIs
than can call `write_immediate_event()` while being ignorant
where the data is routed to (MIDI tracks, plugins, processors).
2020-09-20 19:16:43 +02:00
Robin Gareus
0ca0b4f335 VST3 skeleton 2020-09-16 22:49:19 +02:00
Robin Gareus
c5014d9d9e Remove unused LV2 ifdef 1/3
LV2 has been mandatory since 6.0 (04ccd328dc)
2020-09-15 17:01:32 +02:00
Robin Gareus
68b23b9f82 Skip presets lookup for empty prest URI 2020-09-14 23:37:22 +02:00
Robin Gareus
1a50b6b8ea Update Plugin API to allow timestamped parameter changes
This is in preparation for VST3 automation.
2020-09-14 23:37:21 +02:00
Robin Gareus
6d83e47860 Fix Plugin-preset saving when preset exists
Previously the GUI explicitly called remove_preset() before
saving a plugin-preset. This functionality is now moved
into the backend.

This fixes a case when a user tries to save/replace factory presets
and works around https://github.com/lv2/lilv/issues/37
2020-06-24 23:59:09 +02:00
Robin Gareus
1674261f89 On plugin internal-state change, mark preset as modified 2020-06-21 17:36:01 +02:00
Robin Gareus
0e37759495 Synchronize preset changes of plugin-instances
When adding or removing a plugin preset, all instances
of the same plugin need to be notified to update their
preset list.
2020-06-11 19:42:37 +02:00
Paul Davis
5948d14012 plugins should NOT resolve MIDI notes at loopend
Their data will come from (1) disk, in which case the DiskReader will do the resolve (2) live input
in which case the player/user will do the resolve
2020-01-07 19:27:04 -07:00
Paul Davis
bd509bba49 fix questionable and not entirely intended change that was a part of dad47e445c 2019-11-15 20:40:23 -07:00
Paul Davis
dad47e445c remove debug output 2019-11-06 23:54:47 -07:00
Paul Davis
625b8297ea fix unconditional note resolution during DiskReader::realtime_locate()
When looping, we do not want to resolve notes at the end of the loop via ::realtime_locate() -
::get_midi_playback() has already taken care of this. But when not looping, we need this. So,
add an argument to tell all interested parties whether the locate is for a loop end or not
2019-11-06 22:12:40 -07:00
Paul Davis
febaa1ff2d fix unconditional note resolution during DiskReader::realtime_locate()
When looping, we do not want to resolve notes at the end of the loop via ::realtime_locate() -
::get_midi_playback() has already taken care of this. But when not looping, we need this. So,
add an argument to tell all interested parties whether the locate is for a loop end or not
2019-11-06 16:00:31 -07:00
Robin Gareus
a5140f4558 Handle Lua DSP script load failure (unknown plugin)
This handles a very specific edge-case: A script that was
successfully parsed before, fails load on session state restore.
2019-11-01 15:54:36 +01:00
Robin Gareus
7e5120e7c9 NO-OP: indent, comments and consistency 2019-10-15 12:26:14 +02:00
Robin Gareus
7fb259ece2 Fix fan-out channel-assignment 2019-10-13 23:12:38 +02:00
Paul Davis
f470d3e856 remove all use of NO_PLUGIN_STATE #ifdef
We determined several years that we should never ever do this,
and changed the basis for the free/demo copy because of that.
2019-10-02 18:04:40 -06:00
Robin Gareus
08644d8f2a No-OP: move doxygen doc into header files 2019-08-29 17:57:22 +02:00
Robin Gareus
a22f918d9d Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Robin Gareus
dba3ff5236 Assume default plugin bussing is stereo
This changes fan-out to prefer stereo tarcks unless specified otherwise
by a plugin (LV2 port-groups, or AU busses)
2019-06-03 16:28:10 +02:00
Robin Gareus
d2b73141af Fix analysis plugin when using plugin-presets 2019-02-28 04:49:27 +01:00
Robin Gareus
5d4fbcb1ea Allow to special case plugins used for IR analysis
This is relevant for some VST specifics (e.g connected pins) or
similar audioMasterCallbacks that use either global or plugin-insert
specific data.
2019-02-28 04:49:00 +01:00
Robin Gareus
2ec28f3ce7 Clean up Latency API (Processor vs Plugin)
Plugins are only a source of Latency (Plugin delay).
The API to query, signal and override Latency is managed
by PluginInsert.
2019-02-17 01:51:49 +01:00
Robin Gareus
53a0199a06 Restore actual plugin-preset on session-load
This checks if the preset is actually available on the given system
and also sets the user-flag correctly.
2018-12-02 01:36:32 +01:00
Robin Gareus
cbef72b8a1 Optimize Plugin connect & run API, use const maps 2018-11-04 02:16:34 +01:00
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