#include "engine/Param.hpp" #include "random.hpp" #include "math.hpp" namespace rack { namespace engine { json_t *Param::toJson() { json_t *rootJ = json_object(); // Infinite params should serialize to 0 if (isBounded()) { json_object_set_new(rootJ, "value", json_real(value)); } return rootJ; } void Param::fromJson(json_t *rootJ) { if (isBounded()) { json_t *valueJ = json_object_get(rootJ, "value"); if (valueJ) value = json_number_value(valueJ); } } void Param::reset() { if (isBounded()) { value = defaultValue; } } void Param::randomize() { if (isBounded()) { value = math::rescale(random::uniform(), 0.f, 1.f, minValue, maxValue); } } } // namespace engine } // namespace rack