X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fardour%2Fladspa_plugin.h;h=6853a1dc367f38c31c6749f1c1035cd96064bf8e;hb=df59a000b79f891f17ec8a05b390982dac67e5ff;hp=855aa7189be69dceb6479f8fc7dd3b9a2ea30738;hpb=e0aaed6d65f160c328cb8b56d7c6552ee15d65e2;p=ardour.git diff --git a/libs/ardour/ardour/ladspa_plugin.h b/libs/ardour/ardour/ladspa_plugin.h index 855aa7189b..6853a1dc36 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 @@ -25,9 +25,8 @@ #include #include -#include -#include "pbd/stateful.h" +#include "pbd/stateful.h" #include #include "ardour/ladspa.h" @@ -40,27 +39,27 @@ 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 (); /* 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; + 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 () { + void activate () { if (!_was_activated && _descriptor->activate) _descriptor->activate (_handle); @@ -82,9 +81,12 @@ 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); + int set_block_size (pframes_t /*nframes*/) { return 0; } + + int connect_and_run (BufferSet& bufs, + 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,23 +97,26 @@ 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); } @@ -120,21 +125,30 @@ 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 { - public: - LadspaPluginInfo () { }; + public: + LadspaPluginInfo (); ~LadspaPluginInfo () { }; PluginPtr load (Session& session);