@@ -1,6 +1,4 @@ | |||||
#pragma once | #pragma once | ||||
#include <jansson.h> | |||||
#include <common.hpp> | #include <common.hpp> | ||||
#include <math.hpp> | #include <math.hpp> | ||||
@@ -20,9 +18,6 @@ struct Param { | |||||
void setValue(float value) { | void setValue(float value) { | ||||
this->value = value; | this->value = value; | ||||
} | } | ||||
json_t* toJson(); | |||||
void fromJson(json_t* rootJ); | |||||
}; | }; | ||||
@@ -1,6 +1,8 @@ | |||||
#pragma once | #pragma once | ||||
#include <vector> | #include <vector> | ||||
#include <jansson.h> | |||||
#include <Quantity.hpp> | #include <Quantity.hpp> | ||||
#include <engine/Param.hpp> | #include <engine/Param.hpp> | ||||
@@ -80,6 +82,9 @@ struct ParamQuantity : Quantity { | |||||
void randomize() override; | void randomize() override; | ||||
virtual std::string getDescription(); | virtual std::string getDescription(); | ||||
virtual json_t* toJson(); | |||||
virtual void fromJson(json_t* rootJ); | |||||
}; | }; | ||||
@@ -189,12 +189,12 @@ void Module::fromJson(json_t* rootJ) { | |||||
json_t* Module::paramsToJson() { | json_t* Module::paramsToJson() { | ||||
json_t* rootJ = json_array(); | json_t* rootJ = json_array(); | ||||
for (size_t paramId = 0; paramId < params.size(); paramId++) { | |||||
for (size_t paramId = 0; paramId < paramQuantities.size(); paramId++) { | |||||
// Don't serialize unbounded Params | // Don't serialize unbounded Params | ||||
if (!paramQuantities[paramId]->isBounded()) | if (!paramQuantities[paramId]->isBounded()) | ||||
continue; | continue; | ||||
json_t* paramJ = params[paramId].toJson(); | |||||
json_t* paramJ = paramQuantities[paramId]->toJson(); | |||||
json_object_set_new(paramJ, "id", json_integer(paramId)); | json_object_set_new(paramJ, "id", json_integer(paramId)); | ||||
@@ -221,7 +221,7 @@ void Module::paramsFromJson(json_t* rootJ) { | |||||
paramId = i; | paramId = i; | ||||
// Check ID bounds | // Check ID bounds | ||||
if (paramId >= params.size()) | |||||
if (paramId >= paramQuantities.size()) | |||||
continue; | continue; | ||||
// Check that the Param is bounded | // Check that the Param is bounded | ||||
@@ -230,7 +230,7 @@ void Module::paramsFromJson(json_t* rootJ) { | |||||
json_t* valueJ = json_object_get(paramJ, "value"); | json_t* valueJ = json_object_get(paramJ, "value"); | ||||
if (valueJ) | if (valueJ) | ||||
params[paramId].setValue(json_number_value(valueJ)); | |||||
paramQuantities[paramId]->setValue(json_number_value(valueJ)); | |||||
} | } | ||||
} | } | ||||
@@ -1,23 +0,0 @@ | |||||
#include <engine/Param.hpp> | |||||
namespace rack { | |||||
namespace engine { | |||||
json_t* Param::toJson() { | |||||
json_t* rootJ = json_object(); | |||||
json_object_set_new(rootJ, "value", json_real(value)); | |||||
return rootJ; | |||||
} | |||||
void Param::fromJson(json_t* rootJ) { | |||||
json_t* valueJ = json_object_get(rootJ, "value"); | |||||
if (valueJ) | |||||
value = json_number_value(valueJ); | |||||
} | |||||
} // namespace engine | |||||
} // namespace rack |
@@ -147,6 +147,20 @@ std::string ParamQuantity::getDescription() { | |||||
} | } | ||||
json_t* ParamQuantity::toJson() { | |||||
json_t* rootJ = json_object(); | |||||
json_object_set_new(rootJ, "value", json_real(getValue())); | |||||
return rootJ; | |||||
} | |||||
void ParamQuantity::fromJson(json_t* rootJ) { | |||||
json_t* valueJ = json_object_get(rootJ, "value"); | |||||
if (valueJ) | |||||
setValue(json_number_value(valueJ)); | |||||
} | |||||
std::string SwitchQuantity::getDisplayValueString() { | std::string SwitchQuantity::getDisplayValueString() { | ||||
int index = (int) std::floor(getValue()); | int index = (int) std::floor(getValue()); | ||||
if (!(0 <= index && index < (int) labels.size())) | if (!(0 <= index && index < (int) labels.size())) | ||||