summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/lv2_plugin.h
AgeCommit message (Collapse)Author
2013-10-18Merge remote-tracking branch 'remotes/origin/exportvis' into windows+ccJohn Emmas
Conflicts (hopefully resolved): gtk2_ardour/wscript libs/ardour/ardour/audioregion.h libs/ardour/ardour/debug.h libs/ardour/ardour/directory_names.h libs/ardour/ardour/filesystem_paths.h libs/ardour/ardour/session_event.h libs/gtkmm2ext/gtkmm2ext/utils.h libs/panners/1in2out/wscript libs/panners/2in2out/wscript libs/panners/vbap/wscript libs/pbd/pbd/debug.h libs/pbd/pbd/file_utils.h libs/pbd/pbd/pathexpand.h libs/pbd/pbd/ringbuffer.h libs/pbd/pbd/ringbufferNPT.h libs/pbd/pbd/search_path.h libs/pbd/pbd/stacktrace.h libs/pbd/pbd/uuid.h libs/pbd/pbd/uuid_boost.h libs/surfaces/control_protocol/control_protocol/basic_ui.h libs/surfaces/control_protocol/control_protocol/control_protocol.h
2013-10-17add export visibility macros across libardourPaul Davis
2013-09-03Merge branch 'master' into windowsPaul Davis
2013-08-29update external plugin UI handlingRobin Gareus
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-04'libs/ardour' - Main body of changes required for building with MSVCJohn Emmas
2013-06-03honor LV2 rsz:minimumSize for Atom Event buffersRobin Gareus
2013-01-27Support state:loadDefaultState feature.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@14007 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-18Deliver MIDI events to atom ports that support it, merged with transport events.David Robillard
Eliminate delivery of non-MIDI events to Ardour MIDI buffers. Fix the general mess of LV2 port flags and types. Unify old MIDI API and new atom API MIDI stuff. Making this work required changing the way we do LV2 MIDI slightly: instead of BufferSet::get_lv2_midi doing the translation automatically, it returns an empty buffer and the caller is responsible for actually filling it. This allows the LV2 code to iterate over the MIDI and transport changes in one go to merge them into the buffer at the correct times. Synth plugins using the new atom API now work and can get accurate transport information along with the MIDI that drives them. git-svn-id: svn://localhost/ardour2/branches/3.0@13522 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-18Better implementation of LV2 plugin<=>UI communication.David Robillard
This might use a bit more memory than it could, but it works reliably for me loading a large Ingen patch inside Ardour as an LV2 plugin, which I'm pretty sure is by far the most high volume such communication out there. git-svn-id: svn://localhost/ardour2/branches/3.0@13519 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-17Sent precise transport information to LV2 plugins via events.David Robillard
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-08-29Implement latest buf-size extension via new options extension.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@13151 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-28LV2: amend previous commit, respect replicated plugin instancesRobin Gareus
When a plugin is replicated (eg. mono plugin on a stereo-track), configure_io() is only called for the first instance. The 2nd instance will not have dedicated buffers but re-use copies of the first instance. Should the 2nd instance use a LV2 worker-thread or local communication ports they can not be shared with the first instance. -> this patch allocates Atom-buffers for each instance. PS. this still needs more work; there is only one UI instance for all plugin instances. messages from the UI should go to all instances. git-svn-id: svn://localhost/ardour2/branches/3.0@13148 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-28LV2: allocate dedicated buffers for [non-midi] event-ports.Robin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13147 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-27dedicated LV2 non-MIDI atom-event-port handlingRobin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13144 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-21Create and realize LV2 UI container before instantiating (required for ↵David Robillard
proper embedding in some situations). git-svn-id: svn://localhost/ardour2/branches/3.0@13140 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-18Fix some const-violating casts.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@13138 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-17LV2 log extension support.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@13135 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-08Support new LV2 buf-size extension if a new enough (currently svn) LV2 is ↵David Robillard
present. git-svn-id: svn://localhost/ardour2/branches/3.0@13112 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-192nd half of patch for handling LV2 presets from colinf (#4698)Paul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@12786 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-27Re-implement URIMap to tolerate broken plugins that use the wrong context toDavid Robillard
map MIDI event types (fix #4889). All uri-map contexts are now just ignored, and equivalent to urid (which is equivalent to uri-map with context NULL). We now just hope that no event types are mapped after UINT16_MAX URIs have been mapped, and die horribly otherwise. This is exceedingly unlikely to happen any time in the next several years, if ever. git-svn-id: svn://localhost/ardour2/branches/3.0@12462 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-20Add "Description" pane to generic plugin UI for LV2 plugins with ↵David Robillard
documentation (rdfs:comment property). A Gtk::Entry might be better here, making Gtk::Label wrap based on size is tedious... git-svn-id: svn://localhost/ardour2/branches/3.0@12043 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-20Set tooltips on generic UI controls for LV2 plugin controls with ↵David Robillard
documentation (rdfs:comment property). git-svn-id: svn://localhost/ardour2/branches/3.0@12042 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-11Fix crash introduced in r11877 (oops). Add LV2Plugin::port_index().David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@11885 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-10Forward port LV2 BPM and freewheeling port stuff from 2.0-ongoing.David Robillard
Fix worker implementation to preserve error codes. git-svn-id: svn://localhost/ardour2/branches/3.0@11877 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-06Execute plugin worker tasks immediately in the audio thread if freewheeling.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@11803 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-05Implement LV2 worker extension.David Robillard
This is done by way of a generic Worker object/thread, which currently just applies to one LV2 plugin, but the idea is to share one thread and set of buffers among many plugins. The same pattern may also be useful elsewhere in Ardour. The responding part gets a bit tricker when sharing a worker between plugins, it's not a blocker, and I'm lazy, sooo here's this. This commit also adds a new portable in-process semaphore to PBD. The existing one is pretty weird and uses a named semaphore on OSX for reasons unknown to me. Perhaps as a quick fix to avoid POSIX semaphores being utterly broken on OSX? It would probably be a good idea to replace that with this new one, which uses Mach kernel semaphores on OSX which work well, though I am not sure how pedantically real-time safe they are to signal. git-svn-id: svn://localhost/ardour2/branches/3.0@11790 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-30Update to latest LV2 state extension.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@11769 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-25Update to latest LV2 atom extension.David Robillard
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-02-29Update to latest LV2 atom extension.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@11548 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25Fix real-time violation, only send UI updates if explicitly requested by UI.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@11522 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25Use FastScreenUpdate for UI message updating, and only if plugin has message ↵David Robillard
output ports. git-svn-id: svn://localhost/ardour2/branches/3.0@11521 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25Full round-trip message communication between LV2 UIs and plugins.David Robillard
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-25Support LV2 atom sequence ports alongside old event ports.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@11517 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-24Clean up LV2 code in preparation for atom support.David Robillard
Merge all parameter_is_* boolvectors into a single vector of flags (smaller/faster). git-svn-id: svn://localhost/ardour2/branches/3.0@11515 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-28Fix compilation with older Glib.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@11378 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-28Use new Lilv state API to save LV2 plugin state.David Robillard
This saves a complete history of plugin state, i.e. save is no longer destructive. However, data is shared as much as possible, and new state is only written if the plugin state has actually changed. There is exactly one link in the entire session directory to any external file, so archiving will work with minimal copying. Not sure sure about the naming of the "externals" directory, but I have nothing better... git-svn-id: svn://localhost/ardour2/branches/3.0@11372 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-01-23Cache results of lilv_port_is_a(...) in various places.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@11315 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-24Save references to external files in LV2 state as symbolic links.David Robillard
With this commit it is possible to archive sessions that contain plugins with complex file-containing state (e.g. Linuxsampler with a sample bank loaded) with any archive tool, e.g.: tar -hjcf session.tar.bz2 session Which will give you a fully self-contained archive of everything used in the session, so you can e.g. send it to a collaborator who may not have the same sample banks in the same place as you and it will work. git-svn-id: svn://localhost/ardour2/branches/3.0@10817 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-23Implement latest LV2 state extension (0.4).David Robillard
Corresponding patch to LinuxSampler available here: http://drobilla.net/files/linuxsampler_lv2_state_0_4.diff git-svn-id: svn://localhost/ardour2/branches/3.0@10788 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-11Update LV2 persist extension implementation (now named LV2 state).David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@10556 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-01Fix broken whitespace. I'd apologize for the compile times if it was my ↵David Robillard
fault :D git-svn-id: svn://localhost/ardour2/branches/3.0@9654 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-15Support compilation with (old) SLV2, or (new) Lilv and (optionally) Suil.David Robillard
Fix ticket #0004041. git-svn-id: svn://localhost/ardour2/branches/3.0@9516 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-14Move SLV2-independent LV2 persist state implementation to lv2_state.h.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@9515 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-14Completely localist use of SLV2 to lv2_plugin.cc and lv2_plugin_ui.cc.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@9514 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-14Make LV2World local to lv2_plugin.ccDavid Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@9513 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-14Remove LV2Plugin::slv2_port.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@9512 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-14Generic scale points API.David Robillard
Hide scale points implementation inside specific Plugin subclass. Don't needlessley/slowly get scale points twice for each port while building UI. Remove dependence on specific plugin types from GenericPluginUI. git-svn-id: svn://localhost/ardour2/branches/3.0@9511 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-22Use new Suil and SLV2 APIs for LV2 plugin UIs.David Robillard
Add lv2_ui.h (required by lv2_external_ui.h). git-svn-id: svn://localhost/ardour2/branches/3.0@9406 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-06Implement latest LV2 files extension.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@9300 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-03Implement LV2 files extension.David Robillard
This extension works with the persist extension to allow plugins to save references to files in their state, but still allow the host (e.g. Ardour) to control where files are located, making it possible to do a deep export of a session with all files (e.g. loaded sampler banks) included. Tested working with a patched version of LinuxSampler... TODO: Make symlinks in the plugin state directory rather than refer to absolute file paths in state files (i.e. support session export, either by ardour or any other tool, in particular the Jack session manager...) git-svn-id: svn://localhost/ardour2/branches/3.0@9272 d708f5d6-7413-0410-9779-e7cbd77b26cf