diff options
author | David Robillard <d@drobilla.net> | 2008-01-12 23:45:50 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-01-12 23:45:50 +0000 |
commit | e92c1669c1cdf857b8a3900abb9f891e6ca9fdad (patch) | |
tree | f02725efdfd3473527cb7fa94471a7cff2528880 /libs/ardour | |
parent | bf256c168170de1b9e1411bb563c571d67470c05 (diff) |
Merge with 2.0-ongoing R2885.
Fix loading of 2.0 sessions.
git-svn-id: svn://localhost/ardour2/trunk@2904 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/audio_unit.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/ladspa_plugin.h | 102 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_state.h | 14 | ||||
-rw-r--r-- | libs/ardour/ardour/port_insert.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/processor.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/rb_effect.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/vst_plugin.h | 2 | ||||
-rw-r--r-- | libs/ardour/audio_unit.cc | 12 | ||||
-rw-r--r-- | libs/ardour/audioregion.cc | 2 | ||||
-rw-r--r-- | libs/ardour/ladspa_plugin.cc | 105 | ||||
-rw-r--r-- | libs/ardour/plugin_manager.cc | 2 | ||||
-rw-r--r-- | libs/ardour/session.cc | 3 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 6 | ||||
-rw-r--r-- | libs/ardour/vst_plugin.cc | 12 |
16 files changed, 91 insertions, 179 deletions
diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h index b0e4d34c28..115e008a54 100644 --- a/libs/ardour/ardour/audio_unit.h +++ b/libs/ardour/ardour/audio_unit.h @@ -70,8 +70,6 @@ class AUPlugin : public ARDOUR::Plugin int connect_and_run (BufferSet& bufs, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset); std::set<uint32_t> automatable() const; - void store_state (ARDOUR::PluginState&); - void restore_state (ARDOUR::PluginState&); string describe_parameter (uint32_t); string state_node_name () const { return "audiounit"; } void print_parameter (uint32_t, char*, uint32_t len) const; diff --git a/libs/ardour/ardour/ladspa_plugin.h b/libs/ardour/ardour/ladspa_plugin.h index 7c0b0b2abe..976584b687 100644 --- a/libs/ardour/ardour/ladspa_plugin.h +++ b/libs/ardour/ardour/ladspa_plugin.h @@ -32,7 +32,6 @@ #include <jack/types.h> #include <ardour/ladspa.h> -#include <ardour/plugin_state.h> #include <ardour/plugin.h> #include <ardour/ladspa_plugin.h> @@ -54,53 +53,47 @@ class LadspaPlugin : public ARDOUR::Plugin /* Plugin interface */ std::string unique_id() const; - const char * label() const { return descriptor->Label; } - const char * name() const { return descriptor->Name; } - const char * maker() const { return descriptor->Maker; } - uint32_t parameter_count() const { return descriptor->PortCount; } - float default_value (uint32_t port); - nframes_t signal_latency() const; - void set_parameter (uint32_t port, float val); - float get_parameter (uint32_t port) const; - int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; + const char* label() const { return _descriptor->Label; } + const char* name() const { return _descriptor->Name; } + const char* maker() const { return _descriptor->Maker; } + uint32_t parameter_count() const { return _descriptor->PortCount; } + float default_value (uint32_t port); + nframes_t signal_latency() const; + void set_parameter (uint32_t port, float val); + float get_parameter (uint32_t port) const; + int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; + uint32_t nth_parameter (uint32_t port, bool& ok) const; + std::set<Parameter> automatable() const; - uint32_t nth_parameter (uint32_t port, bool& ok) const; - void activate () { - if (was_activated) - return; - if (descriptor->activate) { - descriptor->activate (handle); - } + void activate () { + if (!_was_activated && _descriptor->activate) + _descriptor->activate (_handle); - was_activated = true; + _was_activated = true; } - void deactivate () { - if (!was_activated) - return; - if (descriptor->deactivate) { - descriptor->deactivate (handle); - } + void deactivate () { + if (_was_activated && _descriptor->deactivate) + _descriptor->deactivate (_handle); - was_activated = false; + _was_activated = false; } + void cleanup () { activate(); deactivate(); - if (descriptor->cleanup) { - descriptor->cleanup (handle); - } + if (_descriptor->cleanup) + _descriptor->cleanup (_handle); } + 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); - void store_state (ARDOUR::PluginState&); - void restore_state (ARDOUR::PluginState&); string describe_parameter (Parameter); string state_node_name() const { return "ladspa"; } - void print_parameter (uint32_t, char*, uint32_t len) const; + void print_parameter (uint32_t, char*, uint32_t len) const; bool parameter_is_audio(uint32_t) const; bool parameter_is_control(uint32_t) const; @@ -109,8 +102,8 @@ class LadspaPlugin : public ARDOUR::Plugin bool parameter_is_toggled(uint32_t) const; XMLNode& get_state(); - int set_state(const XMLNode& node); - bool save_preset(string name); + int set_state(const XMLNode& node); + bool save_preset(string name); bool has_editor() const { return false; } @@ -118,32 +111,27 @@ class LadspaPlugin : public ARDOUR::Plugin /* LADSPA extras */ - LADSPA_Properties properties() const { return descriptor->Properties; } - uint32_t index() const { return _index; } - const char * copyright() const { return descriptor->Copyright; } - LADSPA_PortDescriptor port_descriptor(uint32_t i) const { return descriptor->PortDescriptors[i]; } - const LADSPA_PortRangeHint * port_range_hints() const { return descriptor->PortRangeHints; } - const char * const * port_names() const { return descriptor->PortNames; } - void set_gain (float gain) { - descriptor->set_run_adding_gain (handle, gain); - } - void run_adding (uint32_t nsamples) { - descriptor->run_adding (handle, nsamples); - } - void connect_port (uint32_t port, float *ptr) { - descriptor->connect_port (handle, port, ptr); - } + LADSPA_Properties properties() const { return _descriptor->Properties; } + uint32_t index() const { return _index; } + const char * copyright() const { return _descriptor->Copyright; } + LADSPA_PortDescriptor port_descriptor(uint32_t i) const { return _descriptor->PortDescriptors[i]; } + const LADSPA_PortRangeHint* port_range_hints() const { return _descriptor->PortRangeHints; } + const char * const * port_names() const { return _descriptor->PortNames; } + + void set_gain (float gain) { _descriptor->set_run_adding_gain (_handle, gain); } + void run_adding (uint32_t nsamples) { _descriptor->run_adding (_handle, nsamples); } + void connect_port (uint32_t port, float *ptr) { _descriptor->connect_port (_handle, port, ptr); } private: - void *module; - const LADSPA_Descriptor *descriptor; - LADSPA_Handle handle; - nframes_t sample_rate; - LADSPA_Data *control_data; - LADSPA_Data *shadow_data; - LADSPA_Data *latency_control_port; - uint32_t _index; - bool was_activated; + void* _module; + const LADSPA_Descriptor* _descriptor; + LADSPA_Handle _handle; + nframes_t _sample_rate; + LADSPA_Data* _control_data; + LADSPA_Data* _shadow_data; + LADSPA_Data* _latency_control_port; + uint32_t _index; + bool _was_activated; void init (void *mod, uint32_t index, nframes_t rate); void run_in_place (nframes_t nsamples); diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h index d721476db7..73f89f1a91 100644 --- a/libs/ardour/ardour/plugin.h +++ b/libs/ardour/ardour/plugin.h @@ -30,7 +30,6 @@ #include <jack/types.h> #include <ardour/types.h> #include <ardour/chan_count.h> -#include <ardour/plugin_state.h> #include <ardour/cycles.h> #include <ardour/latent.h> #include <ardour/parameter.h> @@ -131,8 +130,6 @@ class Plugin : public PBD::StatefulDestructible, public Latent virtual int connect_and_run (BufferSet& bufs, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset) = 0; virtual std::set<Parameter> automatable() const = 0; - virtual void store_state (ARDOUR::PluginState&) = 0; - virtual void restore_state (ARDOUR::PluginState&) = 0; virtual string describe_parameter (Parameter) = 0; virtual string state_node_name() const = 0; virtual void print_parameter (uint32_t, char*, uint32_t len) const = 0; diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index 2038153d86..42c53c487c 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -25,7 +25,6 @@ #include <sigc++/signal.h> #include <ardour/ardour.h> -#include <ardour/plugin_state.h> #include <ardour/types.h> #include <ardour/processor.h> #include <ardour/automation_event.h> diff --git a/libs/ardour/ardour/plugin_state.h b/libs/ardour/ardour/plugin_state.h deleted file mode 100644 index bd499e2b90..0000000000 --- a/libs/ardour/ardour/plugin_state.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef __ardour_plugin_state_h__ -#define __ardour_plugin_state_h__ - -#include <map> - -namespace ARDOUR { - -struct PluginState { - std::map<uint32_t,float> parameters; -}; - -} - -#endif /* __ardour_plugin_state_h__ */ diff --git a/libs/ardour/ardour/port_insert.h b/libs/ardour/ardour/port_insert.h index 114d196750..1743040bf5 100644 --- a/libs/ardour/ardour/port_insert.h +++ b/libs/ardour/ardour/port_insert.h @@ -27,7 +27,6 @@ #include <sigc++/signal.h> #include <ardour/ardour.h> #include <ardour/io_processor.h> -#include <ardour/plugin_state.h> #include <ardour/types.h> class XMLNode; diff --git a/libs/ardour/ardour/processor.h b/libs/ardour/ardour/processor.h index bf9dfe0430..d3e95e8ebf 100644 --- a/libs/ardour/ardour/processor.h +++ b/libs/ardour/ardour/processor.h @@ -30,7 +30,6 @@ #include <ardour/types.h> #include <ardour/ardour.h> -#include <ardour/plugin_state.h> #include <ardour/buffer_set.h> #include <ardour/automatable.h> #include <ardour/latent.h> diff --git a/libs/ardour/ardour/rb_effect.h b/libs/ardour/ardour/rb_effect.h index bde0422335..a536a309b3 100644 --- a/libs/ardour/ardour/rb_effect.h +++ b/libs/ardour/ardour/rb_effect.h @@ -20,7 +20,7 @@ #ifndef __ardour_rbeffect_h__ #define __ardour_rbeffect_h__ -#include <ardour/audiofilter.h> +#include <ardour/filter.h> namespace ARDOUR { diff --git a/libs/ardour/ardour/vst_plugin.h b/libs/ardour/ardour/vst_plugin.h index 3a05360f15..e41d000f9c 100644 --- a/libs/ardour/ardour/vst_plugin.h +++ b/libs/ardour/ardour/vst_plugin.h @@ -72,8 +72,6 @@ class VSTPlugin : public ARDOUR::Plugin 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); - void store_state (ARDOUR::PluginState&); - void restore_state (ARDOUR::PluginState&); string describe_parameter (uint32_t); string state_node_name() const { return "vst"; } void print_parameter (uint32_t, char*, uint32_t len) const; diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index f86e784169..9f19a21865 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -401,18 +401,6 @@ AUPlugin::automatable() const return automates; } -void -AUPlugin::store_state (ARDOUR::PluginState&) -{ - -} - -void -AUPlugin::restore_state (ARDOUR::PluginState&) -{ - -} - string AUPlugin::describe_parameter (uint32_t) { diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc index f1534827fd..86abd4beaa 100644 --- a/libs/ardour/audioregion.cc +++ b/libs/ardour/audioregion.cc @@ -636,7 +636,7 @@ AudioRegion::set_live_state (const XMLNode& node, Change& what_changed, bool sen set_fade_out_active (false); } } - + } } diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc index 696ada3b81..ccc12f8cf8 100644 --- a/libs/ardour/ladspa_plugin.cc +++ b/libs/ardour/ladspa_plugin.cc @@ -62,11 +62,11 @@ LadspaPlugin::LadspaPlugin (void *mod, AudioEngine& e, Session& session, uint32_ LadspaPlugin::LadspaPlugin (const LadspaPlugin &other) : Plugin (other) { - init (other.module, other._index, other.sample_rate); + init (other._module, other._index, other._sample_rate); for (uint32_t i = 0; i < parameter_count(); ++i) { - control_data[i] = other.shadow_data[i]; - shadow_data[i] = other.shadow_data[i]; + _control_data[i] = other._shadow_data[i]; + _shadow_data[i] = other._shadow_data[i]; } } @@ -77,61 +77,61 @@ LadspaPlugin::init (void *mod, uint32_t index, nframes_t rate) uint32_t i, port_cnt; const char *errstr; - module = mod; - control_data = 0; - shadow_data = 0; - latency_control_port = 0; - was_activated = false; + _module = mod; + _control_data = 0; + _shadow_data = 0; + _latency_control_port = 0; + _was_activated = false; - dfunc = (LADSPA_Descriptor_Function) dlsym (module, "ladspa_descriptor"); + dfunc = (LADSPA_Descriptor_Function) dlsym (_module, "ladspa_descriptor"); if ((errstr = dlerror()) != NULL) { error << _("LADSPA: module has no descriptor function.") << endmsg; throw failed_constructor(); } - if ((descriptor = dfunc (index)) == 0) { + if ((_descriptor = dfunc (index)) == 0) { error << _("LADSPA: plugin has gone away since discovery!") << endmsg; throw failed_constructor(); } _index = index; - if (LADSPA_IS_INPLACE_BROKEN(descriptor->Properties)) { - error << string_compose(_("LADSPA: \"%1\" cannot be used, since it cannot do inplace processing"), descriptor->Name) << endmsg; + if (LADSPA_IS_INPLACE_BROKEN(_descriptor->Properties)) { + error << string_compose(_("LADSPA: \"%1\" cannot be used, since it cannot do inplace processing"), _descriptor->Name) << endmsg; throw failed_constructor(); } - sample_rate = rate; + _sample_rate = rate; - if (descriptor->instantiate == 0) { + if (_descriptor->instantiate == 0) { throw failed_constructor(); } - if ((handle = descriptor->instantiate (descriptor, rate)) == 0) { + if ((_handle = _descriptor->instantiate (_descriptor, rate)) == 0) { throw failed_constructor(); } port_cnt = parameter_count(); - control_data = new LADSPA_Data[port_cnt]; - shadow_data = new LADSPA_Data[port_cnt]; + _control_data = new LADSPA_Data[port_cnt]; + _shadow_data = new LADSPA_Data[port_cnt]; for (i = 0; i < port_cnt; ++i) { if (LADSPA_IS_PORT_CONTROL(port_descriptor (i))) { - connect_port (i, &control_data[i]); + connect_port (i, &_control_data[i]); if (LADSPA_IS_PORT_OUTPUT(port_descriptor (i)) && strcmp (port_names()[i], X_("latency")) == 0) { - latency_control_port = &control_data[i]; - *latency_control_port = 0; + _latency_control_port = &_control_data[i]; + *_latency_control_port = 0; } if (!LADSPA_IS_PORT_INPUT(port_descriptor (i))) { continue; } - shadow_data[i] = default_value (i); + _shadow_data[i] = default_value (i); } } @@ -149,39 +149,12 @@ LadspaPlugin::~LadspaPlugin () // dlclose (module); - if (control_data) { - delete [] control_data; + if (_control_data) { + delete [] _control_data; } - if (shadow_data) { - delete [] shadow_data; - } -} - -void -LadspaPlugin::store_state (PluginState& state) -{ - state.parameters.clear (); - - for (uint32_t i = 0; i < parameter_count(); ++i){ - - if (LADSPA_IS_PORT_INPUT(port_descriptor (i)) && - LADSPA_IS_PORT_CONTROL(port_descriptor (i))){ - pair<uint32_t,float> datum; - - datum.first = i; - datum.second = shadow_data[i]; - - state.parameters.insert (datum); - } - } -} - -void -LadspaPlugin::restore_state (PluginState& state) -{ - for (map<uint32_t,float>::iterator i = state.parameters.begin(); i != state.parameters.end(); ++i) { - set_parameter (i->first, i->second); + if (_shadow_data) { + delete [] _shadow_data; } } @@ -189,7 +162,7 @@ string LadspaPlugin::unique_id() const { char buf[32]; - snprintf (buf, sizeof (buf), "%lu", descriptor->UniqueID); + snprintf (buf, sizeof (buf), "%lu", _descriptor->UniqueID); return string (buf); } @@ -308,10 +281,10 @@ LadspaPlugin::default_value (uint32_t port) if (LADSPA_IS_HINT_SAMPLE_RATE(prh[port].HintDescriptor) && !earlier_hint) { if (bounds_given) { if (sr_scaling) { - ret *= sample_rate; + ret *= _sample_rate; } } else { - ret = sample_rate; + ret = _sample_rate; } } @@ -321,8 +294,8 @@ LadspaPlugin::default_value (uint32_t port) void LadspaPlugin::set_parameter (uint32_t which, float val) { - if (which < descriptor->PortCount) { - shadow_data[which] = (LADSPA_Data) val; + if (which < _descriptor->PortCount) { + _shadow_data[which] = (LADSPA_Data) val; #if 0 ParameterChanged (Parameter(PluginAutomation, which), val); /* EMIT SIGNAL */ @@ -343,9 +316,9 @@ float LadspaPlugin::get_parameter (uint32_t which) const { if (LADSPA_IS_PORT_INPUT(port_descriptor (which))) { - return (float) shadow_data[which]; + return (float) _shadow_data[which]; } else { - return (float) control_data[which]; + return (float) _control_data[which]; } } @@ -356,7 +329,7 @@ LadspaPlugin::nth_parameter (uint32_t n, bool& ok) const ok = false; - for (c = 0, x = 0; x < descriptor->PortCount; ++x) { + for (c = 0, x = 0; x < _descriptor->PortCount; ++x) { if (LADSPA_IS_PORT_CONTROL (port_descriptor (x))) { if (c++ == n) { ok = true; @@ -383,7 +356,7 @@ LadspaPlugin::get_state() child = new XMLNode("port"); snprintf(buf, sizeof(buf), "%u", i); child->add_property("number", string(buf)); - snprintf(buf, sizeof(buf), "%+f", shadow_data[i]); + snprintf(buf, sizeof(buf), "%+f", _shadow_data[i]); child->add_property("value", string(buf)); root->add_child_nocopy (*child); } @@ -515,8 +488,8 @@ LadspaPlugin::signal_latency () const return _user_latency; } - if (latency_control_port) { - return (nframes_t) floor (*latency_control_port); + if (_latency_control_port) { + return (nframes_t) floor (*_latency_control_port); } else { return 0; } @@ -617,16 +590,16 @@ LadspaPlugin::run_in_place (nframes_t nframes) { for (uint32_t i = 0; i < parameter_count(); ++i) { if (LADSPA_IS_PORT_INPUT(port_descriptor (i)) && LADSPA_IS_PORT_CONTROL(port_descriptor (i))) { - control_data[i] = shadow_data[i]; + _control_data[i] = _shadow_data[i]; } } - descriptor->run (handle, nframes); + _descriptor->run (_handle, nframes); } void LadspaPlugin::latency_compute_run () { - if (!latency_control_port) { + if (!_latency_control_port) { return; } diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index f0465d0ad5..d321d6f259 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -328,7 +328,7 @@ PluginManager::get_ladspa_category (uint32_t plugin_id) } pattern.subject = matches1->object; - pattern.predicate = (char*)LADSPA_BASE "hasLabel"; + pattern.predicate = (char*)(LADSPA_BASE "hasLabel"); pattern.object = 0; pattern.object_type = lrdf_literal; diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index cef5c7df48..19d562f844 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -273,7 +273,6 @@ Session::Session (AudioEngine &eng, _state_of_the_state = StateOfTheState (_state_of_the_state & ~Dirty); - Config->ParameterChanged.connect (mem_fun (*this, &Session::config_changed)); } @@ -711,7 +710,7 @@ Session::when_engine_running () osc->set_session (*this); #endif - + } void diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index a08d09d949..d8d3d82810 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -716,7 +716,7 @@ Session::save_state (string snapshot_name, bool pending) bool was_dirty = dirty(); _state_of_the_state = StateOfTheState (_state_of_the_state & ~Dirty); - + if (was_dirty) { DirtyChanged (); /* EMIT SIGNAL */ } @@ -1270,8 +1270,8 @@ Session::set_state (const XMLNode& node) } if ((child = find_named_node (node, "Bundles")) == 0) { - error << _("Session: XML state has no bundles section") << endmsg; - goto out; + warning << _("Session: XML state has no bundles section (2.0 session?)") << endmsg; + //goto out; } else { /* We can't load Bundles yet as they need to be able to convert from port names to Port objects, which can't happen until diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index 5969d91982..47b5cb4fba 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -510,15 +510,3 @@ VSTPluginInfo::load (Session& session) return PluginPtr ((Plugin*) 0); } } - -void -VSTPlugin::store_state (ARDOUR::PluginState& s) -{ - -} - -void -VSTPlugin::restore_state (ARDOUR::PluginState& s) -{ - -} |