2024-10-22 01:55:31 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
2024-10-30 14:55:24 +01:00
|
|
|
#include "graph-manager.h"
|
2024-11-21 02:03:32 +01:00
|
|
|
#include "node.h"
|
2024-10-22 01:55:31 +02:00
|
|
|
#include "signal.h"
|
|
|
|
|
#include "midi.h"
|
|
|
|
|
|
2024-11-01 02:38:47 +01:00
|
|
|
#include <memory>
|
2024-10-22 01:55:31 +02:00
|
|
|
|
2024-11-03 03:48:49 +01:00
|
|
|
using namespace VISEQ::GRAPH;
|
2024-10-22 01:55:31 +02:00
|
|
|
|
2024-11-03 03:48:49 +01:00
|
|
|
namespace VISEQ::SIGNAL {
|
|
|
|
|
|
|
|
|
|
typedef std::shared_ptr<Signal> SPTR_Signal;
|
|
|
|
|
typedef std::vector<SPTR_Signal> VEC_SPTR_Signal;
|
|
|
|
|
|
2024-11-30 02:54:40 +01:00
|
|
|
class SignalManager : public std::enable_shared_from_this<SignalManager>{
|
2024-11-03 03:48:49 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
SignalManager() {}
|
2024-12-04 01:43:06 +01:00
|
|
|
SignalManager(std::shared_ptr<GraphManager> gm, std::mutex *mutex) : mutex(mutex), gm(gm) {}
|
2024-11-03 03:48:49 +01:00
|
|
|
|
2024-11-30 02:54:40 +01:00
|
|
|
std::shared_ptr<SignalManager> getPtr(){
|
|
|
|
|
return shared_from_this();
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-03 03:48:49 +01:00
|
|
|
VISEQ::MIDI::Midi midi;
|
|
|
|
|
|
|
|
|
|
std::mutex *mutex;
|
2024-12-04 01:43:06 +01:00
|
|
|
std::shared_ptr<GraphManager> gm;
|
2024-11-03 03:48:49 +01:00
|
|
|
|
|
|
|
|
VEC_SPTR_Signal signals;
|
2024-10-22 01:55:31 +02:00
|
|
|
|
2024-11-04 01:00:59 +01:00
|
|
|
VEC_SPTR_Signal erase_signals;
|
|
|
|
|
|
2024-11-03 03:48:49 +01:00
|
|
|
bool loop = true;
|
|
|
|
|
bool play = false;
|
2024-10-22 01:55:31 +02:00
|
|
|
|
2026-01-05 02:56:30 +01:00
|
|
|
void pause();
|
|
|
|
|
void stop();
|
|
|
|
|
void start();
|
|
|
|
|
void reset();
|
|
|
|
|
void startSignalThread();
|
|
|
|
|
void stopSignalThread();
|
|
|
|
|
void addSignalAtNode(WPTR_Node node);
|
|
|
|
|
void rerouteSignal(VEC_SPTR_Node nodes, VEC_WPTR_Node adjacent_nodes);
|
|
|
|
|
void rebaseSignal(VEC_SPTR_Node nodes);
|
|
|
|
|
void removeSignal(std::shared_ptr<Signal> s);
|
|
|
|
|
void updateSignals();
|
|
|
|
|
void drawSignals(Vec2Df mouse_pos, Camera2D camera);
|
2024-12-04 01:43:06 +01:00
|
|
|
|
|
|
|
|
NLOHMANN_DEFINE_TYPE_INTRUSIVE(SignalManager, signals)
|
2024-11-07 00:56:33 +01:00
|
|
|
|
2024-11-03 03:48:49 +01:00
|
|
|
};
|
|
|
|
|
}
|