aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/machina
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/machina')
-rw-r--r--src/engine/machina/Driver.hpp12
-rw-r--r--src/engine/machina/Engine.hpp10
-rw-r--r--src/engine/machina/Loader.hpp5
-rw-r--r--src/engine/machina/Machine.hpp15
-rw-r--r--src/engine/machina/URIs.hpp9
5 files changed, 34 insertions, 17 deletions
diff --git a/src/engine/machina/Driver.hpp b/src/engine/machina/Driver.hpp
index c80fc26..69bf951 100644
--- a/src/engine/machina/Driver.hpp
+++ b/src/engine/machina/Driver.hpp
@@ -18,18 +18,23 @@
#ifndef MACHINA_DRIVER_HPP
#define MACHINA_DRIVER_HPP
-#include "raul/MIDISink.hpp"
#include "raul/RingBuffer.hpp"
#include "machina/types.hpp"
+#include "MIDISink.hpp"
+
namespace Machina {
class Machine;
-class Driver : public Raul::MIDISink {
+class Driver : public MIDISink {
public:
- Driver(SharedPtr<Machine> machine) : _machine(machine) {}
+ Driver(Raul::Forge& forge, SharedPtr<Machine> machine)
+ : _forge(forge)
+ , _machine(machine)
+ {}
+
virtual ~Driver() {}
SharedPtr<Machine> machine() { return _machine; }
@@ -52,6 +57,7 @@ public:
virtual void finish_record() {}
protected:
+ Raul::Forge& _forge;
SharedPtr<Machine> _machine;
SharedPtr<UpdateBuffer> _updates;
};
diff --git a/src/engine/machina/Engine.hpp b/src/engine/machina/Engine.hpp
index 8c3a117..5f11d55 100644
--- a/src/engine/machina/Engine.hpp
+++ b/src/engine/machina/Engine.hpp
@@ -22,6 +22,7 @@
#include <glibmm/ustring.h>
+#include "raul/Atom.hpp"
#include "raul/SharedPtr.hpp"
#include "machina/Driver.hpp"
@@ -33,15 +34,19 @@ class Machine;
class Engine {
public:
- Engine(SharedPtr<Driver> driver, Sord::World& rdf_world);
+ Engine(Raul::Forge& forge,
+ SharedPtr<Driver> driver,
+ Sord::World& rdf_world);
Sord::World& rdf_world() { return _rdf_world; }
- static SharedPtr<Driver> new_driver(const std::string& name,
+ static SharedPtr<Driver> new_driver(Raul::Forge& forge,
+ const std::string& name,
SharedPtr<Machine> machine);
SharedPtr<Driver> driver() { return _driver; }
SharedPtr<Machine> machine() { return _driver->machine(); }
+ Raul::Forge& forge() { return _forge; }
SharedPtr<Machine> load_machine(const Glib::ustring& uri);
SharedPtr<Machine> load_machine_midi(const Glib::ustring& uri,
@@ -60,6 +65,7 @@ private:
SharedPtr<Driver> _driver;
Sord::World& _rdf_world;
Loader _loader;
+ Raul::Forge _forge;
};
} // namespace Machina
diff --git a/src/engine/machina/Loader.hpp b/src/engine/machina/Loader.hpp
index a393ccd..470b109 100644
--- a/src/engine/machina/Loader.hpp
+++ b/src/engine/machina/Loader.hpp
@@ -20,7 +20,7 @@
#include <glibmm/ustring.h>
-#include "raul/Path.hpp"
+#include "raul/Atom.hpp"
#include "raul/SharedPtr.hpp"
#include "sord/sordmm.hpp"
@@ -33,11 +33,12 @@ class Machine;
class Loader {
public:
- Loader(Sord::World& rdf_world);
+ Loader(Raul::Forge& forge, Sord::World& rdf_world);
SharedPtr<Machine> load(const Glib::ustring& filename);
private:
+ Raul::Forge& _forge;
Sord::World& _rdf_world;
};
diff --git a/src/engine/machina/Machine.hpp b/src/engine/machina/Machine.hpp
index b9ad4c1..d65b670 100644
--- a/src/engine/machina/Machine.hpp
+++ b/src/engine/machina/Machine.hpp
@@ -21,7 +21,7 @@
#include <vector>
#include <boost/utility.hpp>
-#include "raul/List.hpp"
+#include "raul/Atom.hpp"
#include "raul/Maid.hpp"
#include "raul/RingBuffer.hpp"
#include "raul/SharedPtr.hpp"
@@ -42,7 +42,7 @@ class LearnRequest;
*/
class Machine : public Stateful {
public:
- Machine(TimeUnit unit);
+ Machine(Raul::Forge& forge, TimeUnit unit);
Machine(const Machine& copy);
Machine& operator=(const Machine& other);
@@ -74,30 +74,31 @@ public:
SharedPtr<LearnRequest> pending_learn() { return _pending_learn; }
void clear_pending_learn() { _pending_learn.reset(); }
- typedef Raul::List< SharedPtr<Node> > Nodes;
+ typedef std::list< SharedPtr<Node> > Nodes;
Nodes& nodes() { return _nodes; }
const Nodes& nodes() const { return _nodes; }
SharedPtr<Node> random_node();
SharedPtr<Edge> random_edge();
- void set_sink(SharedPtr<Raul::MIDISink> sink);
+ void set_sink(SharedPtr<MIDISink> sink);
private:
// Audio context
SharedPtr<Node> earliest_node() const;
- bool enter_node(SharedPtr<Raul::MIDISink> sink, SharedPtr<Node> node, SharedPtr<UpdateBuffer> updates);
- void exit_node(SharedPtr<Raul::MIDISink> sink, SharedPtr<Node>, SharedPtr<UpdateBuffer> updates);
+ bool enter_node(SharedPtr<MIDISink> sink, SharedPtr<Node> node, SharedPtr<UpdateBuffer> updates);
+ void exit_node(SharedPtr<MIDISink> sink, SharedPtr<Node>, SharedPtr<UpdateBuffer> updates);
static const size_t MAX_ACTIVE_NODES = 128;
std::vector< SharedPtr<Node> > _active_nodes;
+ Raul::Forge& _forge;
bool _is_activated;
bool _is_finished;
Raul::TimeStamp _time;
SharedPtr<LearnRequest> _pending_learn;
- WeakPtr<Raul::MIDISink> _sink;
+ WeakPtr<MIDISink> _sink;
Nodes _nodes;
};
diff --git a/src/engine/machina/URIs.hpp b/src/engine/machina/URIs.hpp
index 944ab63..ae6cd2f 100644
--- a/src/engine/machina/URIs.hpp
+++ b/src/engine/machina/URIs.hpp
@@ -32,8 +32,9 @@ public:
static inline const URIs& instance() { assert(_instance); return *_instance; }
- Raul::Atom machina_MidiAction_atom;
-
+ URIInt machina_Edge;
+ URIInt machina_MidiAction;
+ URIInt machina_Node;
URIInt machina_active;
URIInt machina_canvas_x;
URIInt machina_canvas_y;
@@ -50,7 +51,9 @@ public:
private:
URIs()
- : machina_MidiAction_atom(Raul::Atom::URI, "machina:MidiAction")
+ : machina_Edge(43)
+ , machina_MidiAction(43)
+ , machina_Node(42)
, machina_active(1)
, machina_canvas_x(2)
, machina_canvas_y(3)