X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fladspa_plugin.h;h=dbb635fd91132fe3e80a1e36501a090c5b9d6ea5;hb=f371ac1beb035716ef2e1def831a61bd4b5020c2;hp=b26e4120b129032600d5314fb029e9ddeedacfae;hpb=449aab3c465bbbf66d221fac3d7ea559f1720357;p=ardour.git diff --git a/libs/ardour/ardour/ladspa_plugin.h b/libs/ardour/ardour/ladspa_plugin.h index b26e4120b1..dbb635fd91 100644 --- a/libs/ardour/ardour/ladspa_plugin.h +++ b/libs/ardour/ardour/ladspa_plugin.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2000-2006 Paul Davis + Copyright (C) 2000-2006 Paul Davis 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 @@ -23,44 +23,42 @@ #include #include #include -#include -#include +#include -#include +#include "pbd/stateful.h" -#include -#include -#include +#include "ardour/ladspa.h" +#include "ardour/plugin.h" namespace ARDOUR { class AudioEngine; class Session; -class LadspaPlugin : public ARDOUR::Plugin +class LIBARDOUR_API LadspaPlugin : public ARDOUR::Plugin { public: - LadspaPlugin (void *module, ARDOUR::AudioEngine&, ARDOUR::Session&, uint32_t index, nframes_t sample_rate); + LadspaPlugin (std::string module_path, ARDOUR::AudioEngine&, ARDOUR::Session&, uint32_t index, framecnt_t sample_rate); LadspaPlugin (const LadspaPlugin &); ~LadspaPlugin (); /* 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; + float default_value (uint32_t port) { return _default_value (port); } + 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; uint32_t nth_parameter (uint32_t port, bool& ok) const; - - std::set automatable() const; - void activate () { + std::set automatable() const; + + void activate () { if (!_was_activated && _descriptor->activate) _descriptor->activate (_handle); @@ -82,10 +80,14 @@ class LadspaPlugin : public ARDOUR::Plugin _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); - std::string describe_parameter (Parameter); + int set_block_size (pframes_t /*nframes*/) { return 0; } + + int connect_and_run (BufferSet& bufs, + framepos_t start, framepos_t end, double speed, + ChanMapping in, ChanMapping out, + pframes_t nframes, framecnt_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; @@ -95,49 +97,62 @@ 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& node); - bool save_preset(std::string name); + boost::shared_ptr + 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; } - int require_output_streams (uint32_t); - /* 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]; } + 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; } - + 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; + float _default_value (uint32_t port) const; + std::string _module_path; + Glib::Module* _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 (std::string module_path, 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 { - public: - LadspaPluginInfo () { }; +class LIBARDOUR_API LadspaPluginInfo : public PluginInfo { + public: + LadspaPluginInfo (); ~LadspaPluginInfo () { }; PluginPtr load (Session& session); + std::vector get_presets (bool user_only) const; }; typedef boost::shared_ptr LadspaPluginInfoPtr;