| @@ -3,11 +3,12 @@ | |||||
| #include "util.hpp" | #include "util.hpp" | ||||
| #include <jansson.h> | #include <jansson.h> | ||||
| #include <ossia/ossia.hpp> | |||||
| #include <ossia/network/network.hpp> | |||||
| #include <ossia/network/oscquery/oscquery_server.hpp> | #include <ossia/network/oscquery/oscquery_server.hpp> | ||||
| namespace rack { | namespace rack { | ||||
| extern ossia::net::generic_device& root_dev(); | |||||
| struct Param { | struct Param { | ||||
| float value = 0.0; | float value = 0.0; | ||||
| @@ -45,8 +46,6 @@ struct Output { | |||||
| Light plugLights[2]; | Light plugLights[2]; | ||||
| }; | }; | ||||
| static ossia::net::generic_device& root_dev(); | |||||
| struct Module { | struct Module { | ||||
| std::vector<Param> params; | std::vector<Param> params; | ||||
| std::vector<Input> inputs; | std::vector<Input> inputs; | ||||
| @@ -54,6 +53,8 @@ struct Module { | |||||
| std::vector<Light> lights; | std::vector<Light> lights; | ||||
| /** For CPU usage meter */ | /** For CPU usage meter */ | ||||
| float cpuTime = 0.0; | float cpuTime = 0.0; | ||||
| ossia::net::node_base* node{}; | |||||
| /** Deprecated, use constructor below this one */ | /** Deprecated, use constructor below this one */ | ||||
| Module() DEPRECATED {} | Module() DEPRECATED {} | ||||
| @@ -63,6 +64,8 @@ struct Module { | |||||
| inputs.resize(numInputs); | inputs.resize(numInputs); | ||||
| outputs.resize(numOutputs); | outputs.resize(numOutputs); | ||||
| lights.resize(numLights); | lights.resize(numLights); | ||||
| node = &ossia::net::create_node(rack::root_dev(),"module"); | |||||
| } | } | ||||
| virtual ~Module() {} | virtual ~Module() {} | ||||
| @@ -9,6 +9,7 @@ | |||||
| #include "app.hpp" | #include "app.hpp" | ||||
| #include "components.hpp" | #include "components.hpp" | ||||
| #include <iostream> | #include <iostream> | ||||
| #include <sstream> | |||||
| namespace rack { | namespace rack { | ||||
| @@ -24,10 +25,8 @@ Model *createModel(std::string manufacturer, std::string slug, std::string name, | |||||
| ModuleWidget *createModuleWidget() override { | ModuleWidget *createModuleWidget() override { | ||||
| ModuleWidget *moduleWidget = new TModuleWidget(); | ModuleWidget *moduleWidget = new TModuleWidget(); | ||||
| moduleWidget->model = this; | moduleWidget->model = this; | ||||
| // TODO move node creation here | |||||
| node = &ossia::net::create_node(rack::root_dev(),name); | |||||
| moduleWidget->module->node->set_name(name); | |||||
| return moduleWidget; | return moduleWidget; | ||||
| } | } | ||||
| }; | }; | ||||
| @@ -47,14 +46,21 @@ Widget *createScrew(Vec pos) { | |||||
| } | } | ||||
| template <class TParamWidget> | template <class TParamWidget> | ||||
| ParamWidget *createParam(Vec pos, Module *module, int paramId, float minValue, float maxValue, float defaultValue) { | |||||
| ParamWidget *createParam(Vec pos, Module *module, int paramId, float minValue, float maxValue, float defaultValue, std::string name = std::string("")) { | |||||
| ParamWidget *param = new TParamWidget(); | ParamWidget *param = new TParamWidget(); | ||||
| param->box.pos = pos; | param->box.pos = pos; | ||||
| param->module = module; | param->module = module; | ||||
| param->paramId = paramId; | param->paramId = paramId; | ||||
| auto& p = module->params[paramId]; | auto& p = module->params[paramId]; | ||||
| auto& p_node = ossia::net::create_node(*module->node,p.name); | |||||
| if (name == "") | |||||
| { | |||||
| std::stringstream ss; | |||||
| ss << "param." << paramId; | |||||
| name = ss.str(); | |||||
| } | |||||
| auto& p_node = ossia::net::create_node(*module->node, name); | |||||
| p.ossia_param = p_node.create_parameter(ossia::val_type::FLOAT); | p.ossia_param = p_node.create_parameter(ossia::val_type::FLOAT); | ||||
| p.ossia_param->set_domain(ossia::make_domain(minValue,maxValue)); | p.ossia_param->set_domain(ossia::make_domain(minValue,maxValue)); | ||||
| p.ossia_param->set_bounding(ossia::bounding_mode::CLIP); | p.ossia_param->set_bounding(ossia::bounding_mode::CLIP); | ||||
| @@ -1,5 +1,7 @@ | |||||
| #include "app.hpp" | #include "app.hpp" | ||||
| #include <ossia/network/network.hpp> | |||||
| #include <ossia/network/oscquery/oscquery_server.hpp> | |||||
| namespace rack { | namespace rack { | ||||
| @@ -27,5 +29,12 @@ void sceneDestroy() { | |||||
| gScene = NULL; | gScene = NULL; | ||||
| } | } | ||||
| ossia::net::generic_device& root_dev(){ | |||||
| static ossia::net::generic_device dev{ | |||||
| std::make_unique<ossia::oscquery::oscquery_server_protocol>(1234, 5678), | |||||
| "VCV-Rack"}; | |||||
| return dev; | |||||
| } | |||||
| } // namespace rack | } // namespace rack | ||||
| @@ -276,22 +276,4 @@ float engineGetSampleTime() { | |||||
| return sampleTime; | return sampleTime; | ||||
| } | } | ||||
| Module::Module(){} | |||||
| Module::Module(int numParams, int numInputs, int numOutputs, int numLights) { | |||||
| params.resize(numParams); | |||||
| inputs.resize(numInputs); | |||||
| outputs.resize(numOutputs); | |||||
| lights.resize(numLights); | |||||
| } | |||||
| ossia::net::generic_device& root_dev(){ | |||||
| static ossia::net::generic_device dev{ | |||||
| std::make_unique<ossia::oscquery::oscquery_server_protocol>(1234, 5678), | |||||
| "VCV-Rack"}; | |||||
| return dev; | |||||
| } | |||||
| } // namespace rack | } // namespace rack | ||||