| @@ -906,9 +906,22 @@ public: | |||||
| return ranges.getNormalizedValue(fPlugin.getParameterValue(index)); | return ranges.getNormalizedValue(fPlugin.getParameterValue(index)); | ||||
| } | } | ||||
| void vst_setParameter(const int32_t index, const float value) | |||||
| void vst_setParameter(const int32_t index, float value) | |||||
| { | { | ||||
| const uint32_t hints(fPlugin.getParameterHints(index)); | |||||
| const ParameterRanges& ranges(fPlugin.getParameterRanges(index)); | const ParameterRanges& ranges(fPlugin.getParameterRanges(index)); | ||||
| if (hints & kParameterIsBoolean) | |||||
| { | |||||
| const float midRange = ranges.min + (ranges.max - ranges.min) / 2.0f; | |||||
| value = value > midRange ? ranges.max : ranges.min; | |||||
| } | |||||
| else if (hints & kParameterIsInteger) | |||||
| { | |||||
| value = std::round(value); | |||||
| } | |||||
| const float realValue(ranges.getUnnormalizedValue(value)); | const float realValue(ranges.getUnnormalizedValue(value)); | ||||
| fPlugin.setParameterValue(index, realValue); | fPlugin.setParameterValue(index, realValue); | ||||