drastic rethink of the relationship between remote control ID and route order keys...
[ardour.git] / libs / ardour / ardour / ladspa_plugin.h
index f4da2bf0a008989c91b428a0ea01afcadabe0531..6853a1dc367f38c31c6749f1c1035cd96064bf8e 100644 (file)
@@ -39,7 +39,7 @@ class Session;
 class LadspaPlugin : public ARDOUR::Plugin
 {
   public:
-       LadspaPlugin (void *module, ARDOUR::AudioEngine&, ARDOUR::Session&, uint32_t index, nframes_t sample_rate);
+       LadspaPlugin (void *module, ARDOUR::AudioEngine&, ARDOUR::Session&, uint32_t index, framecnt_t sample_rate);
        LadspaPlugin (const LadspaPlugin &);
        ~LadspaPlugin ();
 
@@ -51,7 +51,7 @@ class LadspaPlugin : public ARDOUR::Plugin
        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;
+       framecnt_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;
@@ -81,11 +81,11 @@ class LadspaPlugin : public ARDOUR::Plugin
                        _descriptor->cleanup (_handle);
        }
 
-       int set_block_size (nframes_t /*nframes*/) { return 0; }
+       int set_block_size (pframes_t /*nframes*/) { return 0; }
 
        int connect_and_run (BufferSet& bufs,
                        ChanMapping in, ChanMapping out,
-                       nframes_t nframes, nframes_t offset);
+                       pframes_t nframes, framecnt_t offset);
 
        std::string describe_parameter (Evoral::Parameter);
        std::string state_node_name() const { return "ladspa"; }
@@ -97,9 +97,12 @@ class LadspaPlugin : public ARDOUR::Plugin
        bool parameter_is_output(uint32_t) const;
        bool parameter_is_toggled(uint32_t) const;
 
-       XMLNode& get_state();
-       int      set_state (const XMLNode&, int version);
-       bool     save_preset(std::string name);
+       boost::shared_ptr<Plugin::ScalePoints>
+       get_scale_points(uint32_t port_index) const;
+
+       int set_state (const XMLNode&, int version);
+
+       bool load_preset (PresetRecord);
 
        bool has_editor() const { return false; }
 
@@ -110,7 +113,7 @@ class LadspaPlugin : public ARDOUR::Plugin
        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]; }
+       LADSPA_PortDescriptor       port_descriptor(uint32_t i) const;
        const LADSPA_PortRangeHint* port_range_hints() const          { return _descriptor->PortRangeHints; }
        const char * const *        port_names() const                { return _descriptor->PortNames; }
 
@@ -122,17 +125,25 @@ class LadspaPlugin : public ARDOUR::Plugin
        void*                    _module;
        const LADSPA_Descriptor* _descriptor;
        LADSPA_Handle            _handle;
-       nframes_t                _sample_rate;
+       framecnt_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);
+       void find_presets ();
+
+       void init (void *mod, uint32_t index, framecnt_t rate);
+       void run_in_place (pframes_t nsamples);
        void latency_compute_run ();
        int set_state_2X (const XMLNode&, int version);
+       std::string do_save_preset (std::string name);
+       void do_remove_preset (std::string name);
+       std::string preset_envvar () const;
+       std::string preset_source (std::string) const;
+       bool write_preset_file (std::string);
+       void add_state (XMLNode *) const;
 };
 
 class LadspaPluginInfo : public PluginInfo {