diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index c52e8c2835..ea7a081c22 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -84,6 +84,10 @@ class PluginInsert : public Processor void set_value (double val); double get_value (void) const; XMLNode& get_state(); + + bool logarithmic () const { + return _logarithmic; + } private: PluginInsert* _plugin; @@ -113,6 +117,8 @@ class PluginInsert : public Processor return _splitting; } + std::string value_as_string (boost::shared_ptr) const; + PBD::Signal2 AnalysisDataGathered; /** Emitted when the return value of splitting () has changed */ PBD::Signal0 SplittingChanged; diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index 8a5919ab5a..a690cce5cc 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -1164,3 +1164,19 @@ PluginInsert::set_splitting (bool s) _splitting = s; SplittingChanged (); /* EMIT SIGNAL */ } + +string +PluginInsert::value_as_string (boost::shared_ptr ac) const +{ + boost::shared_ptr pc = boost::dynamic_pointer_cast (ac); + assert (pc); + + stringstream s; + if (pc->logarithmic ()) { + s << exp (pc->get_value ()); + } else { + s << pc->get_value (); + } + + return s.str (); +}