diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/audio_port.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/audio_unit.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/audioengine.h | 8 | ||||
-rw-r--r-- | libs/ardour/ardour/buffer_set.h | 20 | ||||
-rw-r--r-- | libs/ardour/ardour/chan_count.h | 10 | ||||
-rw-r--r-- | libs/ardour/ardour/chan_mapping.h | 82 | ||||
-rw-r--r-- | libs/ardour/ardour/io.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/ladspa_plugin.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/lv2_event_buffer.h | 81 | ||||
-rw-r--r-- | libs/ardour/ardour/lv2_plugin.h | 13 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_buffer.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_port.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 17 | ||||
-rw-r--r-- | libs/ardour/ardour/port.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/processor.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/route.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/uri_map.h | 60 | ||||
-rw-r--r-- | libs/ardour/ardour/vst_plugin.h | 6 |
20 files changed, 304 insertions, 31 deletions
diff --git a/libs/ardour/ardour/audio_port.h b/libs/ardour/ardour/audio_port.h index 85bac1f286..09bd8bdd1e 100644 --- a/libs/ardour/ardour/audio_port.h +++ b/libs/ardour/ardour/audio_port.h @@ -38,6 +38,8 @@ class AudioPort : public Port void cycle_start (nframes_t); void cycle_end (nframes_t); void cycle_split (); + + size_t raw_buffer_size(jack_nframes_t nframes) const; Buffer& get_buffer (nframes_t nframes, nframes_t offset = 0) { return get_audio_buffer (nframes, offset); diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h index e023979ed8..83d85ec5d0 100644 --- a/libs/ardour/ardour/audio_unit.h +++ b/libs/ardour/ardour/audio_unit.h @@ -30,13 +30,14 @@ #include <vector> #include <map> -#include "ardour/plugin.h" - #include <AudioUnit/AudioUnit.h> #include <appleutility/AUParamInfo.h> #include <boost/shared_ptr.hpp> +#include "ardour/plugin.h" +#include "ardour/chan_mapping.h" + class CAComponent; class CAAudioUnit; class CAComponentDescription; diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 54154141f6..9dec7c8ec3 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -40,9 +40,10 @@ namespace ARDOUR { -class Session; -class Port; class InternalPort; +class MidiPort; +class Port; +class Session; class AudioEngine : public sigc::trackable { @@ -74,6 +75,8 @@ class AudioEngine : public sigc::trackable nframes_t frame_rate(); nframes_t frames_per_cycle(); + size_t raw_buffer_size(DataType t); + int usecs_per_cycle () const { return _usecs_per_cycle; } bool get_sync_offset (nframes_t& offset) const; @@ -213,6 +216,7 @@ class AudioEngine : public sigc::trackable bool _running; bool _has_run; nframes_t _buffer_size; + std::map<DataType,size_t> _raw_buffer_sizes; nframes_t _frame_rate; /// number of frames between each check for changes in monitor input nframes_t monitor_check_interval; diff --git a/libs/ardour/ardour/buffer_set.h b/libs/ardour/ardour/buffer_set.h index f02470c3e8..72f45762c7 100644 --- a/libs/ardour/ardour/buffer_set.h +++ b/libs/ardour/ardour/buffer_set.h @@ -31,6 +31,7 @@ class Buffer; class AudioBuffer; class MidiBuffer; class PortSet; +class LV2EventBuffer; /** A set of buffers of various types. * @@ -55,7 +56,6 @@ public: void attach_buffers(PortSet& ports, nframes_t nframes, nframes_t offset = 0); - void ensure_buffers(const ChanCount& count, size_t buffer_capacity); void ensure_buffers(DataType type, size_t num_buffers, size_t buffer_capacity); const ChanCount& available() const { return _available; } @@ -68,10 +68,7 @@ public: size_t buffer_capacity(DataType type) const; - Buffer& get(DataType type, size_t i) { - assert(i <= _count.get(type)); - return *_buffers[type][i]; - } + Buffer& get(DataType type, size_t i); AudioBuffer& get_audio(size_t i) { return (AudioBuffer&)get(DataType::AUDIO, i); @@ -81,6 +78,14 @@ public: return (MidiBuffer&)get(DataType::MIDI, i); } + /** Get a MIDI buffer translated into an LV2 MIDI buffer for use with plugins. + * The index here corresponds directly to MIDI buffer numbers (i.e. the index + * passed to get_midi), translation back and forth will happen as needed */ + LV2EventBuffer& get_lv2_midi(bool input, size_t i); + + /** Flush modified LV2 event output buffers back to Ardour buffers */ + void flush_lv2_midi(bool input, size_t i); + void read_from(BufferSet& in, nframes_t nframes); // ITERATORS @@ -137,6 +142,11 @@ private: /// Vector of vectors, indexed by DataType std::vector<BufferVec> _buffers; + + /// LV2 MIDI buffers (for conversion to/from MIDI buffers) + // + typedef std::vector< std::pair<bool, LV2EventBuffer*> > LV2Buffers; + LV2Buffers _lv2_buffers; /// Use counts (there may be more actual buffers than this) ChanCount _count; diff --git a/libs/ardour/ardour/chan_count.h b/libs/ardour/ardour/chan_count.h index ff70be6bb6..fb4b1999ca 100644 --- a/libs/ardour/ardour/chan_count.h +++ b/libs/ardour/ardour/chan_count.h @@ -20,10 +20,10 @@ #ifndef __ardour_chan_count_h__ #define __ardour_chan_count_h__ +#include <cassert> #include <ostream> #include "ardour/data_type.h" -#include <cassert> namespace ARDOUR { @@ -103,6 +103,14 @@ public: bool operator>=(const ChanCount& other) const { return ( (*this > other) || (*this == other) ); } + + static ChanCount max(const ChanCount& a, const ChanCount& b) { + ChanCount ret; + for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) { + ret.set(*t, std::max(a.get(*t), b.get(*t))); + } + return ret; + } static const ChanCount INFINITE; static const ChanCount ZERO; diff --git a/libs/ardour/ardour/chan_mapping.h b/libs/ardour/ardour/chan_mapping.h new file mode 100644 index 0000000000..1dae20e34a --- /dev/null +++ b/libs/ardour/ardour/chan_mapping.h @@ -0,0 +1,82 @@ +/* + Copyright (C) 2009 Paul Davis + Author: Dave Robillard + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __ardour_chan_mapping_h__ +#define __ardour_chan_mapping_h__ + +#include <map> +#include <cassert> +#include <ostream> +#include <utility> + +#include "ardour/data_type.h" + +namespace ARDOUR { + + +/** A mapping from one set of channels to another + * (e.g. how to 'connect' two BufferSets). + */ +class ChanMapping { +public: + ChanMapping() {} + ChanMapping(ChanCount identity) { + for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) { + for (size_t i = 0; i <= identity.get(*t); ++i) + set(*t, i, i); + } + } + + uint32_t get(DataType t, uint32_t from) { + Mappings::iterator tm = _mappings.find(t); + assert(tm != _mappings.end()); + TypeMapping::iterator m = tm->second.find(from); + assert(m != tm->second.end()); + return m->second; + } + + void set(DataType t, uint32_t from, uint32_t to) { + Mappings::iterator tm = _mappings.find(t); + if (tm == _mappings.end()) { + tm = _mappings.insert(std::make_pair(t, TypeMapping())).first; + } + tm->second.insert(std::make_pair(from, to)); + } + + /** Increase the 'to' field of every mapping for type @a t by @a delta */ + void offset(DataType t, uint32_t delta) { + Mappings::iterator tm = _mappings.find(t); + if (tm != _mappings.end()) { + for (TypeMapping::iterator m = tm->second.begin(); m != tm->second.end(); ++m) { + m->second += delta; + } + } + } + +private: + typedef std::map<uint32_t, uint32_t> TypeMapping; + typedef std::map<DataType, TypeMapping> Mappings; + + Mappings _mappings; +}; + +} // namespace ARDOUR + +#endif // __ardour_chan_mapping_h__ + diff --git a/libs/ardour/ardour/io.h b/libs/ardour/ardour/io.h index 6b309bf50c..8457668756 100644 --- a/libs/ardour/ardour/io.h +++ b/libs/ardour/ardour/io.h @@ -365,7 +365,7 @@ class IO : public SessionObject, public AutomatableControls, public Latent int make_connections (const XMLNode&); boost::shared_ptr<Bundle> find_possible_bundle (const string &desired_name, const string &default_name, const string &connection_type_name); - void setup_peak_meters (); + virtual void setup_peak_meters (); void meter (); bool ensure_inputs_locked (ChanCount, bool clear, void *src); diff --git a/libs/ardour/ardour/ladspa_plugin.h b/libs/ardour/ardour/ladspa_plugin.h index 855aa7189b..847b582432 100644 --- a/libs/ardour/ardour/ladspa_plugin.h +++ b/libs/ardour/ardour/ladspa_plugin.h @@ -84,7 +84,10 @@ class LadspaPlugin : public ARDOUR::Plugin void set_block_size (nframes_t nframes) {} - int connect_and_run (BufferSet& bufs, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset); + int connect_and_run (BufferSet& bufs, + ChanMapping in, ChanMapping out, + nframes_t nframes, nframes_t offset); + std::string describe_parameter (Evoral::Parameter); std::string state_node_name() const { return "ladspa"; } void print_parameter (uint32_t, char*, uint32_t len) const; diff --git a/libs/ardour/ardour/lv2_event_buffer.h b/libs/ardour/ardour/lv2_event_buffer.h new file mode 100644 index 0000000000..9d35d36d55 --- /dev/null +++ b/libs/ardour/ardour/lv2_event_buffer.h @@ -0,0 +1,81 @@ +/* + Copyright (C) 2009 Paul Davis + Author: Dave Robillard + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __ardour_lv2_event_buffer_h__ +#define __ardour_lv2_event_buffer_h__ + +#include "lv2ext/lv2_event.h" +#include "lv2ext/lv2_event_helpers.h" + +namespace ARDOUR { + + +class LV2EventBuffer { +public: + LV2EventBuffer(size_t capacity); + ~LV2EventBuffer(); + + inline LV2_Event_Buffer* data() { return _data; } + inline const LV2_Event_Buffer* data() const { return _data; } + + inline void rewind() const { lv2_event_begin(&_iter, _data); } + + inline void reset() { + _latest_frames = 0; + _latest_subframes = 0; + _data->event_count = 0; + _data->size = 0; + rewind(); + } + + inline size_t event_count() const { return _data->event_count; } + inline uint32_t capacity() const { return _data->capacity; } + inline uint32_t size() const { return _data->size; } + inline uint32_t latest_frames() const { return _latest_frames; } + inline uint32_t latest_subframes() const { return _latest_subframes; } + + bool increment() const; + + bool is_valid() const; + + bool get_event(uint32_t* frames, + uint32_t* subframes, + uint16_t* type, + uint16_t* size, + uint8_t** data) const; + + bool append(uint32_t frames, + uint32_t subframes, + uint16_t type, + uint16_t size, + const uint8_t* data); + + bool append(const LV2_Event_Buffer* buf); + +private: + LV2_Event_Buffer* _data; ///< Contents + mutable LV2_Event_Iterator _iter; ///< Iterator into _data + uint32_t _latest_frames; ///< Latest time of all events (frames) + uint32_t _latest_subframes; ///< Latest time of all events (subframes) +}; + + +} // namespace ARDOUR + +#endif // __ardour_lv2_event_buffer_h__ diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h index f235a0b4c2..7daf4ed2b1 100644 --- a/libs/ardour/ardour/lv2_plugin.h +++ b/libs/ardour/ardour/lv2_plugin.h @@ -33,6 +33,7 @@ #include <jack/types.h> #include <slv2/slv2.h> #include "ardour/plugin.h" +#include "ardour/uri_map.h" namespace ARDOUR { class AudioEngine; @@ -95,9 +96,12 @@ class LV2Plugin : public ARDOUR::Plugin void set_block_size (nframes_t nframes) {} - int connect_and_run (BufferSet& bufs, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset); + int connect_and_run (BufferSet& bufs, + ChanMapping in, ChanMapping out, + nframes_t nframes, nframes_t offset); + std::string describe_parameter (Evoral::Parameter); - std::string state_node_name() const { return "LV2"; } + std::string state_node_name() const { return "lv2"; } void print_parameter (uint32_t, char*, uint32_t len) const; bool parameter_is_audio(uint32_t) const; @@ -107,6 +111,8 @@ class LV2Plugin : public ARDOUR::Plugin bool parameter_is_output(uint32_t) const; bool parameter_is_toggled(uint32_t) const; + static uint32_t midi_event_type() { return _midi_event_type; } + XMLNode& get_state(); int set_state(const XMLNode& node); bool save_preset(std::string uri); @@ -138,6 +144,9 @@ class LV2Plugin : public ARDOUR::Plugin LV2_Feature _data_access_feature; LV2_Feature _instance_access_feature; + static URIMap _uri_map; + static uint32_t _midi_event_type; + void init (LV2World& world, SLV2Plugin plugin, nframes_t rate); void run (nframes_t nsamples); void latency_compute_run (); diff --git a/libs/ardour/ardour/midi_buffer.h b/libs/ardour/ardour/midi_buffer.h index 70e2203df4..43626fd0e7 100644 --- a/libs/ardour/ardour/midi_buffer.h +++ b/libs/ardour/ardour/midi_buffer.h @@ -44,6 +44,7 @@ public: bool push_back(const Evoral::MIDIEvent<TimeType>& event); bool push_back(const jack_midi_event_t& event); + bool push_back(TimeType time, size_t size, const uint8_t* data); uint8_t* reserve(TimeType time, size_t size); void resize(size_t); diff --git a/libs/ardour/ardour/midi_port.h b/libs/ardour/ardour/midi_port.h index 2f3d8d1647..e4d6a41d05 100644 --- a/libs/ardour/ardour/midi_port.h +++ b/libs/ardour/ardour/midi_port.h @@ -40,6 +40,8 @@ class MidiPort : public Port { void cycle_end (nframes_t nframes); void cycle_split (); void flush_buffers (nframes_t nframes, nframes_t offset = 0); + + size_t raw_buffer_size(jack_nframes_t nframes) const; Buffer& get_buffer (nframes_t nframes, nframes_t offset = 0) { return get_midi_buffer (nframes, offset); diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h index 0039a1f8ca..2cf3d3fc34 100644 --- a/libs/ardour/ardour/plugin.h +++ b/libs/ardour/ardour/plugin.h @@ -29,6 +29,7 @@ #include <jack/types.h> #include "ardour/chan_count.h" +#include "ardour/chan_mapping.h" #include "ardour/cycles.h" #include "ardour/latent.h" #include "ardour/plugin_insert.h" @@ -126,7 +127,9 @@ class Plugin : public PBD::StatefulDestructible, public Latent virtual void deactivate () = 0; virtual void set_block_size (nframes_t nframes) = 0; - virtual int connect_and_run (BufferSet& bufs, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset) = 0; + virtual int connect_and_run (BufferSet& bufs, + ChanMapping in, ChanMapping out, + nframes_t nframes, nframes_t offset) = 0; virtual std::set<Evoral::Parameter> automatable() const = 0; virtual string describe_parameter (Evoral::Parameter) = 0; diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index 88a5ee357d..99bd492ab5 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -104,16 +104,10 @@ class PluginInsert : public Processor nframes_t signal_latency() const; boost::shared_ptr<Plugin> get_impulse_analysis_plugin(); + + void collect_signal_for_analysis(nframes_t nframes); sigc::signal<void, BufferSet*, BufferSet*> AnalysisDataGathered; - void collect_signal_for_analysis(nframes_t nframes) { - // called from outside the audio thread, so this should be safe - _signal_analysis_input_bufferset.ensure_buffers(input_streams(), nframes); - _signal_analysis_output_bufferset.ensure_buffers(output_streams(), nframes); - - _signal_analysis_collected_nframes = 0; - _signal_analysis_collect_nframes_max = nframes; - } private: /* disallow copy construction */ @@ -126,15 +120,16 @@ class PluginInsert : public Processor float default_parameter_value (const Evoral::Parameter& param); - std::vector<boost::shared_ptr<Plugin> > _plugins; + typedef std::vector<boost::shared_ptr<Plugin> > Plugins; + Plugins _plugins; boost::weak_ptr<Plugin> _impulseAnalysisPlugin; nframes_t _signal_analysis_collected_nframes; nframes_t _signal_analysis_collect_nframes_max; - BufferSet _signal_analysis_input_bufferset; - BufferSet _signal_analysis_output_bufferset; + BufferSet _signal_analysis_inputs; + BufferSet _signal_analysis_outputs; void automation_run (BufferSet& bufs, nframes_t nframes); void connect_and_run (BufferSet& bufs, nframes_t nframes, nframes_t offset, bool with_auto, nframes_t now = 0); diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h index 0c77eb15dd..3f86fb8fd2 100644 --- a/libs/ardour/ardour/port.h +++ b/libs/ardour/ardour/port.h @@ -101,6 +101,9 @@ public: void set_latency (nframes_t); virtual void reset (); + + /** @return the size of the raw buffer (bytes) for duration @a nframes (audio frames) */ + virtual size_t raw_buffer_size(jack_nframes_t nframes) const = 0; virtual DataType type () const = 0; virtual void cycle_start (nframes_t) = 0; @@ -108,7 +111,7 @@ public: virtual void cycle_split () = 0; virtual Buffer& get_buffer (nframes_t nframes, nframes_t offset = 0) = 0; virtual void flush_buffers (nframes_t, nframes_t offset = 0) {} - + static void set_engine (AudioEngine *); sigc::signal<void, bool> MonitorInputChanged; diff --git a/libs/ardour/ardour/processor.h b/libs/ardour/ardour/processor.h index 24d3cd93c7..c2c23b8f67 100644 --- a/libs/ardour/ardour/processor.h +++ b/libs/ardour/ardour/processor.h @@ -95,8 +95,8 @@ class Processor : public SessionObject, public AutomatableControls, public Laten virtual bool is_out_of_place () const { return false; } virtual bool can_support_io_configuration (const ChanCount& in, ChanCount& out) const = 0; - virtual ChanCount output_streams() const { return _configured_input; } virtual ChanCount input_streams () const { return _configured_input; } + virtual ChanCount output_streams() const { return _configured_output; } virtual XMLNode& state (bool full); virtual XMLNode& get_state (void); @@ -116,6 +116,7 @@ protected: bool _next_ab_is_active; bool _configured; ChanCount _configured_input; + ChanCount _configured_output; Placement _placement; uint32_t _sort_key; void* _gui; /* generic, we don't know or care what this is */ diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 183be9c4c8..6926dbd036 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -161,7 +161,7 @@ class Route : public IO } } - ChanCount max_processor_outs () const { return processor_max_outs; } + ChanCount max_processor_streams () const { return processor_max_streams; } ChanCount pre_fader_streams() const; /** A record of the stream configuration at some point in the processor list. @@ -333,11 +333,13 @@ class Route : public IO sigc::connection input_signal_connection; - ChanCount processor_max_outs; + ChanCount processor_max_streams; uint32_t _remote_control_id; uint32_t pans_required() const; ChanCount n_process_buffers (); + + void setup_peak_meters (); virtual int _set_state (const XMLNode&, bool call_base); virtual void _set_processor_states (const XMLNodeList&); diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index ce238fbc2e..bc8dcb81f1 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -944,6 +944,8 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable gain_t* gain_automation_buffer () const { return _gain_automation_buffer; } pan_t** pan_automation_buffer () const { return _pan_automation_buffer; } + + void ensure_buffer_set (BufferSet& buffers, const ChanCount& howmany); /* VST support */ diff --git a/libs/ardour/ardour/uri_map.h b/libs/ardour/ardour/uri_map.h new file mode 100644 index 0000000000..78e5393271 --- /dev/null +++ b/libs/ardour/ardour/uri_map.h @@ -0,0 +1,60 @@ +/* + Copyright (C) 2009 Paul Davis + Author: Dave Robillard + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef __ardour_uri_map_h__ +#define __ardour_uri_map_h__ + +#include <map> +#include <string> +#include <boost/utility.hpp> +#include <slv2/slv2.h> +#include "lv2ext/lv2_uri_map.h" + +namespace ARDOUR { + + +/** Implementation of the LV2 URI Map extension + */ +class URIMap : public boost::noncopyable { +public: + URIMap(); + + LV2_Feature* feature() { return &uri_map_feature; } + + uint32_t uri_to_id(const char* map, + const char* uri); + +private: + typedef std::map<std::string, uint32_t> Map; + + static uint32_t uri_map_uri_to_id(LV2_URI_Map_Callback_Data callback_data, + const char* map, + const char* uri); + + LV2_Feature uri_map_feature; + LV2_URI_Map_Feature uri_map_feature_data; + Map uri_map; + uint32_t next_uri_id; +}; + + +} // namespace ARDOUR + +#endif // __ardour_uri_map_h__ diff --git a/libs/ardour/ardour/vst_plugin.h b/libs/ardour/ardour/vst_plugin.h index 7541740cf8..d4ca3b8b60 100644 --- a/libs/ardour/ardour/vst_plugin.h +++ b/libs/ardour/ardour/vst_plugin.h @@ -71,7 +71,11 @@ class VSTPlugin : public ARDOUR::Plugin void activate (); void deactivate (); void set_block_size (nframes_t nframes); - int connect_and_run (BufferSet&, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset); + + int connect_and_run (BufferSet&, + ChanMapping in, ChanMapping out, + nframes_t nframes, nframes_t offset); + string describe_parameter (Evoral::Parameter); string state_node_name() const { return "vst"; } void print_parameter (uint32_t, char*, uint32_t len) const; |