|
- #pragma once
-
- #include "util/range.h"
-
- namespace DHE {
- namespace Rotation {
- constexpr auto gain_range = Range{0.f, 2.f};
- constexpr auto av_range = Range{-1.f, 1.f};
-
- inline auto cv_offset(float bipolar_voltage) -> float {
- static constexpr auto cv_to_offset = 0.1f;
- return bipolar_voltage * cv_to_offset;
- }
-
- inline auto av_multiplier(float av_amount) -> float {
- return av_range.scale(av_amount);
- }
-
- inline auto gain_multiplier(float gain_amount) -> float {
- return gain_range.scale(gain_amount);
- }
-
- inline auto modulated(float knob_rotation, float cv_bipolar_voltage,
- float av_amount) -> float {
- return knob_rotation +
- av_multiplier(av_amount) * cv_offset(cv_bipolar_voltage);
- }
-
- inline auto modulated(float knob_rotation, float cv_bipolar_voltage) -> float {
- return knob_rotation + cv_offset(cv_bipolar_voltage);
- }
- } // namespace Rotation
- } // namespace DHE
|