Age | Commit message (Collapse) | Author |
|
* extend plugin API (query IO ports)
* collect possible variable plugin configurations (AU, Lua)
* prepare semi-automatic configuration (presets: mono, stereo, N)
|
|
|
|
|
|
|
|
|
|
goes along with https://github.com/x42/automate.lv2
|
|
The Session-reference is only needed to instantiate/load the plugin.
Indexing presets is not supposed to call load() and be const WRT to
PluginInfo
|
|
|
|
|
|
|
|
Since control-ports have a fixed value for the current process-block,
Ardour splits a plugin's run() process cycle on every automation event
to facilitate sample-accurate automation.
Since automation is interpolated between events, this ensures that each
explicit automation point is reached (not interpolated).
Plugins where this is not required and which favor a fixed block-size,
can now specify an optional Feature: NoSampleAccurateControl.
One example: a convolution plugin with smoothed gain control.
|
|
|
|
This is akin to VST2's audioMasterGetBlockSize.
It returns the current nominal block size (think jack-buffersize).
It's not the only block size that may be used when calling run(), it's
just the normal one. The actual block sizes used may be larger or smaller
and may vary between successive calls of run().
This change became neccesary after 53e969e9. Some plugins expected
maxBlockLength to be the /current/ buffer-size and not all-time maxiumum.
Those plugins can now use nominalBlockLength.
|
|
the buffersize may change anytime (split cycles),
also plugin analysis uses a 4096 sample window.
|
|
|
|
Work towards ParameterDescriptor being used more universally to describe control characteristics.
|
|
This fixes circular dependency issues that arise when using ParameterDescriptor more widely.
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
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().
|
|
|
|
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@14007 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
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
|
|
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
|
|
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
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@13151 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
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
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@13147 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@13144 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
proper embedding in some situations).
git-svn-id: svn://localhost/ardour2/branches/3.0@13140 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@13138 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@13135 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
present.
git-svn-id: svn://localhost/ardour2/branches/3.0@13112 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@12786 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
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
|
|
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
|
|
documentation (rdfs:comment property).
git-svn-id: svn://localhost/ardour2/branches/3.0@12042 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@11885 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
Fix worker implementation to preserve error codes.
git-svn-id: svn://localhost/ardour2/branches/3.0@11877 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@11803 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
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
|
|
git-svn-id: svn://localhost/ardour2/branches/3.0@11769 d708f5d6-7413-0410-9779-e7cbd77b26cf
|
|
Implement proper support for fixed size LV2 plugin UIs.
git-svn-id: svn://localhost/ardour2/branches/3.0@11757 d708f5d6-7413-0410-9779-e7cbd77b26cf
|