diff --git a/src/main.cpp b/src/main.cpp index b7eea0d..ce5d311 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -232,10 +232,10 @@ int main(){ if(x < corner_tl.x && y < corner_tl.y) node_tl = n; if(x > corner_br.x && y > corner_br.y) node_br = n; - if(x < corner_tl.x) corner_tl.x = x; - if(x > corner_br.x) corner_br.x = x; - if(y < corner_tl.y) corner_tl.y = y; - if(y > corner_br.y) corner_br.y = y; + if(x <= corner_tl.x) corner_tl.x = x; + if(x >= corner_br.x) corner_br.x = x; + if(y <= corner_tl.y) corner_tl.y = y; + if(y >= corner_br.y) corner_br.y = y; } corner_tl -= Vec2Df(offset, offset); corner_br += Vec2Df(offset, offset); diff --git a/src/midi-node.h b/src/midi-node.h index 2f77609..53d3175 100644 --- a/src/midi-node.h +++ b/src/midi-node.h @@ -45,7 +45,7 @@ namespace VISEQ::GRAPH::NODES { int midi_note_channel = 1; int midi_note = 48; int midi_velocity = 60; - int midi_gate = 25; // gate time in milliseconds + int midi_gate = 10; // gate time in milliseconds int midi_cc_channel = 0; int midi_cc = 0; diff --git a/src/moveable.h b/src/moveable.h index 3a635aa..7f5ed4a 100644 --- a/src/moveable.h +++ b/src/moveable.h @@ -12,7 +12,7 @@ namespace VISEQ::BASE { Movable(Vec2Df p, Vec2Df d, float s) : speed(s), position(p), direction(d) {} Movable(Vec2Df p, float s) : speed(s), position(p) {} - float speed = 1.0f; + float speed = 960.0f; Vec2Df position; Vec2Df direction; diff --git a/src/node.h b/src/node.h index 5ad3fee..d27511d 100644 --- a/src/node.h +++ b/src/node.h @@ -17,8 +17,8 @@ namespace VISEQ::GRAPH::NODES { public: Node() {} - Node(float x, float y) : Movable(Vec2Df(x, y), 0.0f) {} - Node(Vec2Df p) : Movable(p, 0.0f) {} + Node(float x, float y) : Movable(Vec2Df(x, y), 960.0f) {} + Node(Vec2Df p) : Movable(p, 960.0f) {} NodeType nodeType; diff --git a/src/signal.h b/src/signal.h index d2d231b..d23bcb7 100644 --- a/src/signal.h +++ b/src/signal.h @@ -30,6 +30,8 @@ namespace VISEQ::SIGNAL { Color color; + bool ui_edit_speed = false; + int midi_note_offset = 0; int midi_cc_offset = 0; diff --git a/src/state-manager.h b/src/state-manager.h index 39a1c45..1e34dda 100644 --- a/src/state-manager.h +++ b/src/state-manager.h @@ -49,11 +49,9 @@ namespace VISEQ::APP { void copyNodesAndConnections(VEC_SPTR_Node nodes, Vec2Df position){ VEC_SPTR_Edge copy_connections; - for(auto n : nodes){ - for(auto c : n->connections){ - if(std::ranges::contains(nodes, c->start) && std::ranges::contains(nodes, c->end)) { - copy_connections.push_back(std::make_shared(*c)); - } + for(auto c : gm.edges){ + if(std::ranges::contains(nodes, c->start) && std::ranges::contains(nodes, c->end)) { + copy_connections.push_back(std::make_shared(*c)); } } std::cout << copy_connections.size() << std::endl; diff --git a/src/ui.h b/src/ui.h index 25fc20e..3651812 100644 --- a/src/ui.h +++ b/src/ui.h @@ -77,10 +77,13 @@ namespace VISEQ::APP::UI{ for(auto &s : sm->signals){ if(GuiButton((Rectangle){20,(float)s_signal+70 + signal_configs*20, 20, 20},"X")) sm->removeSignal(s); DrawCircle(55, s_signal+80 + signal_configs*20, 6.0F, s->color); - float s_speed = round(s->speed); + + int s_speed = round(s->speed); s->multiplier = settings->bpm / 120.0f; float signal_bpm = round(settings->bpm * s->multiplier * (s->speed / settings->speed)); - GuiSlider((Rectangle){70, (float)s_signal+70 + signal_configs*20, 120, 20}, "", "", &s_speed, 1.0f, 16.0f * settings->grid * 4); + if(GuiSpinner((Rectangle){70, (float)s_signal+70 + signal_configs*20, 100, 20}, "", &s_speed, 1, 16 * settings->grid * 4, s->ui_edit_speed)) s->ui_edit_speed = !s->ui_edit_speed; + if(GuiButton((Rectangle){200,(float)s_signal+70 + signal_configs*20, 30, 20}, "1/2")) s_speed = settings->speed / 2; + //if(GuiButton((Rectangle){200,(float)s_signal+70 + signal_configs*20, 30, 20},"1/4")) s_speed = settings->speed / 4; GuiLabel((Rectangle){195, (float)s_signal+70 + signal_configs*20, 30, 20}, std::format("{}",signal_bpm).c_str()); GuiToggle((Rectangle){240, (float)s_signal+70 + signal_configs*20, 20, 20},"P", &s->run); s->speed = s_speed;