Config nodes do what they should do now. UX is still off, modifier keys do different things on MidiNodes and ConfigNodes.
This commit is contained in:
+2
-5
@@ -70,14 +70,11 @@ namespace VISEQ::APP {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int highest_id = 0;
|
int highest_id = 0;
|
||||||
Node hid;
|
|
||||||
for(auto n : graph.at("gm").at("nodes")){
|
for(auto n : graph.at("gm").at("nodes")){
|
||||||
std::cout << n << std::endl;
|
std::cout << n << std::endl;
|
||||||
if(n.is_object()){
|
if(n.is_object()){
|
||||||
Node mn = n.template get<Node>();
|
if(n.at("id").get<int>() > highest_id) {
|
||||||
if(mn.id > highest_id) {
|
highest_id = n.at("id").get<int>();
|
||||||
highest_id = mn.id;
|
|
||||||
hid = mn;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-14
@@ -12,7 +12,7 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
class ConfigNode : public Node{
|
class ConfigNode : public Node{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ConfigNode() : Node() {std::cout << "ConfigNode Constructor std" << std::endl;}
|
ConfigNode() {std::cout << "ConfigNode Constructor std" << std::endl;}
|
||||||
ConfigNode(Vec2Df position) : Node(position) {}
|
ConfigNode(Vec2Df position) : Node(position) {}
|
||||||
|
|
||||||
std::shared_ptr<ConfigNode> getPtr(){
|
std::shared_ptr<ConfigNode> getPtr(){
|
||||||
@@ -33,8 +33,10 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
|
|
||||||
virtual NodeType getNodeType() const override {return nodeType;}
|
virtual NodeType getNodeType() const override {return nodeType;}
|
||||||
|
|
||||||
int GGate(){
|
virtual void trigger() override {}
|
||||||
return 0;
|
|
||||||
|
virtual void setMode(int _mode) override {
|
||||||
|
mode = _mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
MIDI::MidiNote getNotes(){
|
MIDI::MidiNote getNotes(){
|
||||||
@@ -66,19 +68,8 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
mode = state->node_mode;
|
mode = state->node_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*std::vector<std::weak_ptr<MidiNode>> getConnectedMidiNodes(){*/
|
|
||||||
/* auto midi_conns = connections | RANGE_FILTER([](EDGES::SPTR_Edge c){ return c->start.lock()->getNodeType() == NodeType::MIDINODE || c->end.lock()->getNodeType() == NodeType::MIDINODE;}) | std::ranges::to<std::vector<std::shared_ptr<EDGES::Edge>>>();*/
|
|
||||||
/* std::vector<std::weak_ptr<MidiNode>> midi_nodes;*/
|
|
||||||
/* for(auto e : midi_conns){*/
|
|
||||||
/* if(e->start.lock()->getNodeType() == NodeType::MIDINODE) midi_nodes.push_back(std::dynamic_pointer_cast<MidiNode>(e->start.lock()));*/
|
|
||||||
/* if(e->end.lock()->getNodeType() == NodeType::MIDINODE) midi_nodes.push_back(std::dynamic_pointer_cast<MidiNode>(e->end.lock()));*/
|
|
||||||
/* }*/
|
|
||||||
/* return midi_nodes;*/
|
|
||||||
/*}*/
|
|
||||||
|
|
||||||
void interact(){
|
void interact(){
|
||||||
float wheel = GetMouseWheelMove();
|
float wheel = GetMouseWheelMove();
|
||||||
/*auto midi_nodes = getConnectedMidiNodes();*/
|
|
||||||
|
|
||||||
if(KEYS_DOWN.ctrl && !KEYS_DOWN.alt){
|
if(KEYS_DOWN.ctrl && !KEYS_DOWN.alt){
|
||||||
switch(state->node_mode){
|
switch(state->node_mode){
|
||||||
|
|||||||
+69
-77
@@ -1,6 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <filesystem>
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define _USE_MATH_DEFINES
|
#define _USE_MATH_DEFINES
|
||||||
#endif
|
#endif
|
||||||
@@ -42,10 +41,10 @@ namespace VISEQ::GRAPH{
|
|||||||
|
|
||||||
namespace VISEQ::MIDI{
|
namespace VISEQ::MIDI{
|
||||||
struct MidiNote{
|
struct MidiNote{
|
||||||
int channel = 1;
|
int channel = 0;
|
||||||
int note = 48;
|
int note = 0;
|
||||||
int velocity = 60;
|
int velocity = 0;
|
||||||
int gate = 10; // gate time in milliseconds
|
int gate = 0; // gate time in milliseconds
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MidiCC{
|
struct MidiCC{
|
||||||
@@ -87,6 +86,11 @@ namespace VISEQ::MIDI{
|
|||||||
int number;
|
int number;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline std::ostream& operator<<(std::ostream& os, const MidiNote note){
|
||||||
|
os << "note: " << note.note << " channel: " << note.channel << " velocity: " << note.velocity << " gate: " << note.gate;
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
inline MidiNote operator+(const MidiNote left, const MidiNote right){
|
inline MidiNote operator+(const MidiNote left, const MidiNote right){
|
||||||
MidiNote added;
|
MidiNote added;
|
||||||
added.note = left.note + right.note;
|
added.note = left.note + right.note;
|
||||||
@@ -181,102 +185,90 @@ namespace VISEQ::MIDI{
|
|||||||
return added;
|
return added;
|
||||||
}
|
}
|
||||||
|
|
||||||
// UNARY
|
// COMPOUND
|
||||||
|
|
||||||
inline MidiNote operator+=(const MidiNote left, const MidiNote right){
|
inline MidiNote& operator+=(MidiNote& left, const MidiNote& right){
|
||||||
MidiNote added;
|
left.note += right.note;
|
||||||
added.note = left.note + right.note;
|
left.channel += right.channel;
|
||||||
added.channel = left.channel + right.channel;
|
left.gate += right.gate;
|
||||||
added.gate = left.gate + right.gate;
|
left.velocity += right.velocity;
|
||||||
added.velocity = left.velocity + right.velocity;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiCC operator+=(const MidiCC left, const MidiCC right){
|
inline MidiCC& operator+=(MidiCC& left, const MidiCC right){
|
||||||
MidiCC added;
|
left.channel += right.channel;
|
||||||
added.channel = left.channel + right.channel;
|
left.control += right.control;
|
||||||
added.control = left.control + right.control;
|
left.value += right.value;
|
||||||
added.value = left.value+ right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiPC operator+=(const MidiPC left, const MidiPC right){
|
inline MidiPC& operator+=(MidiPC& left, const MidiPC right){
|
||||||
MidiPC added;
|
left.channel += right.channel;
|
||||||
added.channel = left.channel + right.channel;
|
left.program += right.program;
|
||||||
added.program = left.program + right.program;
|
left.value += right.value;
|
||||||
added.value = left.value+ right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiPitchBend operator+=(const MidiPitchBend left, const MidiPitchBend right){
|
inline MidiPitchBend& operator+=(MidiPitchBend& left, const MidiPitchBend right){
|
||||||
MidiPitchBend added;
|
left.channel += right.channel;
|
||||||
added.channel = left.channel + right.channel;
|
left.value += right.value;
|
||||||
added.value = left.value+ right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiAftertouch operator+=(const MidiAftertouch left, const MidiAftertouch right){
|
inline MidiAftertouch& operator+=(MidiAftertouch& left, const MidiAftertouch right){
|
||||||
MidiAftertouch added;
|
left.channel += right.channel;
|
||||||
added.channel = left.channel + right.channel;
|
left.value += right.value;
|
||||||
added.value = left.value+ right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiPolyPressure operator+=(const MidiPolyPressure left, const MidiPolyPressure right){
|
inline MidiPolyPressure& operator+=(MidiPolyPressure& left, const MidiPolyPressure right){
|
||||||
MidiPolyPressure added;
|
left.channel += right.channel;
|
||||||
added.channel = left.channel + right.channel;
|
left.note += right.note;
|
||||||
added.note = left.note + right.note;
|
left.value += right.value;
|
||||||
added.value = left.value+ right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiNote operator-=(const MidiNote left, const MidiNote right){
|
|
||||||
MidiNote added;
|
inline MidiNote& operator-=(MidiNote& left, const MidiNote& right){
|
||||||
added.note = left.note - right.note;
|
left.note -= right.note;
|
||||||
added.channel = left.channel - right.channel;
|
left.channel -= right.channel;
|
||||||
added.gate = left.gate - right.gate;
|
left.gate -= right.gate;
|
||||||
added.velocity = left.velocity - right.velocity;
|
left.velocity -= right.velocity;
|
||||||
return added;
|
return left;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiCC operator-=(const MidiCC left, const MidiCC right){
|
inline MidiCC& operator-=(MidiCC& left, const MidiCC right){
|
||||||
MidiCC added;
|
left.channel -= right.channel;
|
||||||
added.channel = left.channel - right.channel;
|
left.control -= right.control;
|
||||||
added.control = left.control - right.control;
|
left.value -= right.value;
|
||||||
added.value = left.value- right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiPC operator-=(const MidiPC left, const MidiPC right){
|
inline MidiPC& operator-=(MidiPC& left, const MidiPC right){
|
||||||
MidiPC added;
|
left.channel -= right.channel;
|
||||||
added.channel = left.channel - right.channel;
|
left.program -= right.program;
|
||||||
added.program = left.program - right.program;
|
left.value -= right.value;
|
||||||
added.value = left.value- right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiPitchBend operator-=(const MidiPitchBend left, const MidiPitchBend right){
|
inline MidiPitchBend& operator-=(MidiPitchBend& left, const MidiPitchBend right){
|
||||||
MidiPitchBend added;
|
left.channel -= right.channel;
|
||||||
added.channel = left.channel - right.channel;
|
left.value -= right.value;
|
||||||
added.value = left.value- right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiAftertouch operator-=(const MidiAftertouch left, const MidiAftertouch right){
|
inline MidiAftertouch& operator-=(MidiAftertouch& left, const MidiAftertouch right){
|
||||||
MidiAftertouch added;
|
left.channel -= right.channel;
|
||||||
added.channel = left.channel - right.channel;
|
left.value -= right.value;
|
||||||
added.value = left.value- right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline MidiPolyPressure operator-=(const MidiPolyPressure left, const MidiPolyPressure right){
|
inline MidiPolyPressure& operator-=(MidiPolyPressure& left, const MidiPolyPressure right){
|
||||||
MidiPolyPressure added;
|
left.channel -= right.channel;
|
||||||
added.channel = left.channel - right.channel;
|
left.note -= right.note;
|
||||||
added.note = left.note - right.note;
|
left.value -= right.value;
|
||||||
added.value = left.value- right.value;
|
return left;
|
||||||
return added;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Vec2D<T> operator*(const Vec2D<T> left, T scalar){*/
|
/*Vec2D<T> operator*(const Vec2D<T> left, T scalar){*/
|
||||||
/* return Vec2D<T>(left.x * scalar, left.y * scalar);*/
|
/* return Vec2D<T>(left.x * scalar, left.y * scalar);*/
|
||||||
/*};*/
|
/*};*/
|
||||||
|
|||||||
+9
-4
@@ -125,6 +125,8 @@ namespace VISEQ::GRAPH {
|
|||||||
void copyNodes(VEC_SPTR_Node _nodes, Vec2Df position){
|
void copyNodes(VEC_SPTR_Node _nodes, Vec2Df position){
|
||||||
for(auto n: _nodes){
|
for(auto n: _nodes){
|
||||||
nodes.insert(nodes.end(), std::make_shared<Node>(*n));
|
nodes.insert(nodes.end(), std::make_shared<Node>(*n));
|
||||||
|
/*if(n->getNodeType() == NodeType::MIDINODE) nodes.insert(nodes.end(), std::make_shared<MidiNode>(*n));*/
|
||||||
|
/*if(n->getNodeType() == NodeType::CONFIGNODE) nodes.insert(nodes.end(), std::make_shared<ConfigNode>(*n));*/
|
||||||
nodes.back()->setPosition(position + nodes.back()->drag_offset);
|
nodes.back()->setPosition(position + nodes.back()->drag_offset);
|
||||||
nodes.back()->selected = false;
|
nodes.back()->selected = false;
|
||||||
}
|
}
|
||||||
@@ -141,8 +143,9 @@ namespace VISEQ::GRAPH {
|
|||||||
VEC_SPTR_Node getCopiesOfSelectedNodes(){
|
VEC_SPTR_Node getCopiesOfSelectedNodes(){
|
||||||
VEC_SPTR_Node copied_nodes;
|
VEC_SPTR_Node copied_nodes;
|
||||||
for(auto n : selected_nodes){
|
for(auto n : selected_nodes){
|
||||||
// if(n->getNodeType() == NodeType::MIDINODE) copied_nodes.insert(copied_nodes.end(), std::make_shared<MidiNode>(*n));
|
|
||||||
copied_nodes.insert(copied_nodes.end(), std::make_shared<Node>(*n));
|
copied_nodes.insert(copied_nodes.end(), std::make_shared<Node>(*n));
|
||||||
|
/*if(n->getNodeType() == NodeType::MIDINODE) copied_nodes.insert(copied_nodes.end(), std::make_shared<MidiNode>(*n));*/
|
||||||
|
/*if(n->getNodeType() == NodeType::CONFIGNODE) copied_nodes.insert(copied_nodes.end(), std::make_shared<ConfigNode>(*n));*/
|
||||||
copied_nodes.back()->deselect();
|
copied_nodes.back()->deselect();
|
||||||
}
|
}
|
||||||
return copied_nodes;
|
return copied_nodes;
|
||||||
@@ -151,6 +154,8 @@ namespace VISEQ::GRAPH {
|
|||||||
SPTR_Node copyNode(SPTR_Node n, Vec2Df position){
|
SPTR_Node copyNode(SPTR_Node n, Vec2Df position){
|
||||||
std::cout << "copy basenode" << std::endl;
|
std::cout << "copy basenode" << std::endl;
|
||||||
nodes.insert(nodes.end(), std::make_shared<Node>(*n));
|
nodes.insert(nodes.end(), std::make_shared<Node>(*n));
|
||||||
|
/*if(n->getNodeType() == NodeType::MIDINODE) nodes.insert(nodes.end(), std::make_shared<MidiNode>(*n));*/
|
||||||
|
/*if(n->getNodeType() == NodeType::CONFIGNODE) nodes.insert(nodes.end(), std::make_shared<ConfigNode>(*n));*/
|
||||||
nodes.back()->setPosition(position);
|
nodes.back()->setPosition(position);
|
||||||
return nodes.back();
|
return nodes.back();
|
||||||
}
|
}
|
||||||
@@ -165,7 +170,7 @@ namespace VISEQ::GRAPH {
|
|||||||
|
|
||||||
void setNodeMode(int mode){
|
void setNodeMode(int mode){
|
||||||
for(auto n: nodes){
|
for(auto n: nodes){
|
||||||
n->SMode(mode);
|
n->setMode(mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,10 +383,10 @@ namespace VISEQ::GRAPH {
|
|||||||
float midi_gate_v2 = 0.0f;
|
float midi_gate_v2 = 0.0f;
|
||||||
|
|
||||||
if(c->start.lock()->getNodeType() == NodeType::MIDINODE){
|
if(c->start.lock()->getNodeType() == NodeType::MIDINODE){
|
||||||
midi_gate_v1 = Clamp((4.f / 1000.f) * std::dynamic_pointer_cast<MidiNode>(c->start.lock())->GGate(), 1.f, 4.f);
|
midi_gate_v1 = Clamp((4.f / 1000.f) * std::dynamic_pointer_cast<MidiNode>(c->start.lock())->getNotes().gate, 1.f, 4.f);
|
||||||
}
|
}
|
||||||
if(c->end.lock()->getNodeType() == NodeType::MIDINODE){
|
if(c->end.lock()->getNodeType() == NodeType::MIDINODE){
|
||||||
midi_gate_v2 = Clamp((4.f / 1000.f) * std::dynamic_pointer_cast<MidiNode>(c->end.lock())->GGate(), 1.f, 4.f);
|
midi_gate_v2 = Clamp((4.f / 1000.f) * std::dynamic_pointer_cast<MidiNode>(c->end.lock())->getNotes().gate, 1.f, 4.f);
|
||||||
}
|
}
|
||||||
// Line with small connector circles
|
// Line with small connector circles
|
||||||
if(c->end.lock()->getNodeType() == NodeType::MIDINODE && c->start.lock()->getNodeType() == NodeType::MIDINODE){
|
if(c->end.lock()->getNodeType() == NodeType::MIDINODE && c->start.lock()->getNodeType() == NodeType::MIDINODE){
|
||||||
|
|||||||
+7
-23
@@ -34,7 +34,7 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
bool enabled;
|
bool enabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
MidiNode() : Node() {std::cout << "MidiNode Constructor std" << std::endl;}
|
MidiNode() {std::cout << "MidiNode Constructor std" << std::endl;}
|
||||||
MidiNode(Vec2Df position) : Node(position) {}
|
MidiNode(Vec2Df position) : Node(position) {}
|
||||||
|
|
||||||
NodeType nodeType = NodeType::MIDINODE;
|
NodeType nodeType = NodeType::MIDINODE;
|
||||||
@@ -53,10 +53,6 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
bool gui_midi_velocity_edit = false;
|
bool gui_midi_velocity_edit = false;
|
||||||
bool gui_midi_gate_edit = false;
|
bool gui_midi_gate_edit = false;
|
||||||
|
|
||||||
bool triggered = false;
|
|
||||||
|
|
||||||
int mode = 0;
|
|
||||||
|
|
||||||
float start = 0;
|
float start = 0;
|
||||||
float fade = 0;
|
float fade = 0;
|
||||||
float time = 0;
|
float time = 0;
|
||||||
@@ -75,23 +71,18 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
void trigger() override {
|
void trigger() override {
|
||||||
triggered = true;
|
triggered = true;
|
||||||
start = GetTime();
|
start = GetTime();
|
||||||
fade = midiNote.gate;
|
fade = getNotes().gate;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMode(int _mode) override{
|
void setMode(int _mode) override {
|
||||||
mode = _mode;
|
mode = _mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GGate(){
|
|
||||||
return midiNote.gate;
|
|
||||||
}
|
|
||||||
|
|
||||||
MIDI::MidiNote getNotes() const {
|
MIDI::MidiNote getNotes() const {
|
||||||
MIDI::MidiNote cNote;
|
MIDI::MidiNote cNote;
|
||||||
for(auto cn : getConnectedConfigNodes()){
|
for(auto cn : getConnectedConfigNodes()){
|
||||||
cNote += cn.lock()->getNotes();
|
cNote += cn.lock()->getNotes();
|
||||||
}
|
}
|
||||||
std::cout << cNote.note << std::endl;
|
|
||||||
return midiNote + cNote;
|
return midiNote + cNote;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,6 +133,7 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
if(e->start.lock()->getNodeType() == NodeType::CONFIGNODE) config_nodes.push_back(std::dynamic_pointer_cast<ConfigNode>(e->start.lock()));
|
if(e->start.lock()->getNodeType() == NodeType::CONFIGNODE) config_nodes.push_back(std::dynamic_pointer_cast<ConfigNode>(e->start.lock()));
|
||||||
if(e->end.lock()->getNodeType() == NodeType::CONFIGNODE) config_nodes.push_back(std::dynamic_pointer_cast<ConfigNode>(e->end.lock()));
|
if(e->end.lock()->getNodeType() == NodeType::CONFIGNODE) config_nodes.push_back(std::dynamic_pointer_cast<ConfigNode>(e->end.lock()));
|
||||||
}
|
}
|
||||||
|
/*std::cout << "id: " << id << " n cn: " << config_nodes.size() << std::endl;*/
|
||||||
return config_nodes;
|
return config_nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,14 +142,6 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
mode = state->node_mode;
|
mode = state->node_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getMidiNote(){
|
|
||||||
int mod_notes = 0;
|
|
||||||
for(auto cn : getConnectedConfigNodes()){
|
|
||||||
mod_notes += cn.lock()->midiNote.note;
|
|
||||||
}
|
|
||||||
return midiNote.note + mod_notes;
|
|
||||||
}
|
|
||||||
|
|
||||||
void modMidiNote(int incr){
|
void modMidiNote(int incr){
|
||||||
midiNote.note += incr;
|
midiNote.note += incr;
|
||||||
if(midiNote.note < 0 ) midiNote.note = VISEQ::MIDI::Notes.size()-1;
|
if(midiNote.note < 0 ) midiNote.note = VISEQ::MIDI::Notes.size()-1;
|
||||||
@@ -223,7 +207,7 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
|
|
||||||
last = time;
|
last = time;
|
||||||
time = GetTime();
|
time = GetTime();
|
||||||
if(time - start >= (float)midiNote.gate / 1000.0f){
|
if(time - start >= (float)getNotes().gate / 1000.0f){
|
||||||
triggered = false;
|
triggered = false;
|
||||||
fade = 0;
|
fade = 0;
|
||||||
} else {
|
} else {
|
||||||
@@ -231,10 +215,10 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
}
|
}
|
||||||
|
|
||||||
DrawRing(position, radius, radius+4, 0, 360, 24, (Color){60, 60, 60, 255});
|
DrawRing(position, radius, radius+4, 0, 360, 24, (Color){60, 60, 60, 255});
|
||||||
DrawRing(position, radius, radius+4, 0.0f - 90.0f, (360.0f/127.0f) * midiNote.velocity - 90.0f, 24, (Color){158, 134, 200, 255});
|
DrawRing(position, radius, radius+4, 0.0f - 90.0f, (360.0f/127.0f) * getNotes().velocity - 90.0f, 24, (Color){158, 134, 200, 255});
|
||||||
DrawCircleLinesV(position, radius + 4, (Color){100, 100, 100, 255});
|
DrawCircleLinesV(position, radius + 4, (Color){100, 100, 100, 255});
|
||||||
|
|
||||||
float midi_gate_map = round((255.f / midiNote.gate) * fade);
|
float midi_gate_map = round((255.f / getNotes().gate) * fade);
|
||||||
|
|
||||||
Color gate_color = VS_COLOR_GREEN;
|
Color gate_color = VS_COLOR_GREEN;
|
||||||
|
|
||||||
|
|||||||
+6
-4
@@ -37,6 +37,12 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
float radius = 15.0f;
|
float radius = 15.0f;
|
||||||
bool config = false;
|
bool config = false;
|
||||||
|
|
||||||
|
bool triggered = false;
|
||||||
|
int mode = 0;
|
||||||
|
|
||||||
|
virtual void trigger() {}
|
||||||
|
virtual void setMode(int _mode) {mode = _mode;}
|
||||||
|
|
||||||
std::shared_ptr<Node> getPtr(){
|
std::shared_ptr<Node> getPtr(){
|
||||||
return shared_from_this();
|
return shared_from_this();
|
||||||
}
|
}
|
||||||
@@ -55,10 +61,6 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
|
|
||||||
virtual NodeType getNodeType() const {return nodeType;}
|
virtual NodeType getNodeType() const {return nodeType;}
|
||||||
|
|
||||||
virtual void SMode(int mode) {};
|
|
||||||
|
|
||||||
virtual void trigger() {};
|
|
||||||
|
|
||||||
void deselect() override {
|
void deselect() override {
|
||||||
selected = false;
|
selected = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <raylib.h>
|
#include <raylib.h>
|
||||||
#include <string>
|
|
||||||
#include "moveable.h"
|
#include "moveable.h"
|
||||||
|
|
||||||
#include "node.h"
|
#include "node.h"
|
||||||
|
|||||||
+6
-1
@@ -113,7 +113,12 @@ namespace VISEQ::GRAPH::NODES {
|
|||||||
|
|
||||||
inline void from_json(const json& j, std::shared_ptr<Node>& N){
|
inline void from_json(const json& j, std::shared_ptr<Node>& N){
|
||||||
std::cout << "SPTR_Node" << std::endl;
|
std::cout << "SPTR_Node" << std::endl;
|
||||||
N.reset(new Node(j.get<Node>()));
|
if(N->getNodeType() == NodeType::MIDINODE){
|
||||||
|
N.reset(new MidiNode(j.get<MidiNode>()));
|
||||||
|
}
|
||||||
|
if(N->getNodeType() == NodeType::CONFIGNODE){
|
||||||
|
N.reset(new ConfigNode(j.get<ConfigNode>()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user