- ParameterDescriptor(const Evoral::Parameter& parameter)
- : key((uint32_t)-1)
- , datatype(Variant::VOID)
- , unit(NONE)
- , normal(parameter.normal())
- , lower(parameter.min())
- , upper(parameter.max())
- , step((upper - lower) / 100.0f)
- , smallstep((upper - lower) / 1000.0f)
- , largestep((upper - lower) / 10.0f)
- , integer_step(parameter.type() >= MidiCCAutomation &&
- parameter.type() <= MidiChannelPressureAutomation)
- , toggled(parameter.toggled())
- , logarithmic(false)
- , sr_dependent(false)
- , min_unbound(0)
- , max_unbound(0)
- , enumeration(false)
- {
- if (parameter.type() == GainAutomation) {
- unit = DB;
- }
- }
-
- ParameterDescriptor()
- : key((uint32_t)-1)
- , datatype(Variant::VOID)
- , unit(NONE)
- , normal(0)
- , 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)
- {}
-
- /// Set step, smallstep, and largestep, based on current description
- void update_steps() {
- if (unit == ParameterDescriptor::MIDI_NOTE) {
- step = smallstep = 1; // semitone
- largestep = 12; // octave
- } else {
- const float delta = upper - lower;
-
- step = delta / 1000.0f;
- smallstep = delta / 10000.0f;
- largestep = delta / 10.0f;
-
- if (integer_step) {
- step = rint(step);
- largestep = rint(largestep);
- // leave smallstep alone for fine tuning
- }
- }
- }
+ static std::string midi_note_name (uint8_t);
+
+ ParameterDescriptor(const Evoral::Parameter& parameter);
+
+ ParameterDescriptor();
+
+ /** Set step, smallstep, and largestep, based on current description. */
+ void update_steps();