aboutsummaryrefslogtreecommitdiffstats
path: root/src/Machine.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Machine.hpp')
-rw-r--r--src/Machine.hpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/Machine.hpp b/src/Machine.hpp
index aefd041..a2360bb 100644
--- a/src/Machine.hpp
+++ b/src/Machine.hpp
@@ -18,26 +18,36 @@
#define MACHINA_MACHINE_HPP
#include <vector>
+#include <map>
+#include "raul/SharedPtr.h"
#include "types.hpp"
+#include "Node.hpp"
namespace Machina {
-class Node;
-
class Machine {
public:
Machine(size_t poly);
~Machine();
- Node* initial_node() { return _initial_node; }
+ // Main context
+ void activate() { _activated = true; }
+ void deactivate() { _activated = false; }
+ void add_node(const Node::ID& id, SharedPtr<Node> node);
+ // Audio context
void reset();
void process(FrameCount nframes);
+
+ SharedPtr<Node> initial_node() { return _initial_node; }
private:
- Node* _initial_node;
+ bool _activated;
+ SharedPtr<Node> _initial_node;
std::vector<Node*> _voices;
+
+ std::map<Node::ID, SharedPtr<Node> > _nodes;
FrameCount _time;
};