#ifndef __ardour_parameter_descriptor_h__
#define __ardour_parameter_descriptor_h__
+#include "ardour/types.h"
#include "ardour/variant.h"
+#include "evoral/Parameter.hpp"
+#include "evoral/ParameterDescriptor.hpp"
+
namespace ARDOUR {
typedef std::map<const std::string, const float> ScalePoints;
*
* Essentially a union of LADSPA, VST and LV2 info.
*/
-struct ParameterDescriptor
+struct LIBARDOUR_API ParameterDescriptor : public Evoral::ParameterDescriptor
{
- ParameterDescriptor()
- : key((uint32_t)-1)
- , datatype(Variant::VOID)
- , lower(0)
- , upper(0)
- , step(0)
- , smallstep(0)
- , largestep(0)
- , integer_step(false)
- , toggled(false)
- , logarithmic(false)
- , sr_dependent(false)
- , min_unbound(0)
- , max_unbound(0)
- , enumeration(false)
- , midinote(false)
- {}
+ enum Unit {
+ NONE, ///< No unit
+ DB, ///< Decibels
+ MIDI_NOTE, ///< MIDI note number
+ HZ, ///< Frequency in Hertz
+ };
+
+ ParameterDescriptor(const Evoral::Parameter& parameter);
+
+ ParameterDescriptor();
+
+ /** Set step, smallstep, and largestep, based on current description. */
+ void update_steps();
std::string label;
+ std::string print_fmt; ///< format string for pretty printing
boost::shared_ptr<ScalePoints> scale_points;
uint32_t key; ///< for properties
Variant::Type datatype; ///< for properties
- float lower; ///< for frequencies, this is in Hz (not a fraction of the sample rate)
- float upper; ///< for frequencies, this is in Hz (not a fraction of the sample rate)
+ AutomationType type;
+ Unit unit;
float step;
float smallstep;
float largestep;
bool integer_step;
- bool toggled;
bool logarithmic;
bool sr_dependent;
bool min_unbound;
bool max_unbound;
bool enumeration;
- bool midinote; ///< only used if integer_step is also true
};
} // namespace ARDOUR