aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/SMFDriver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SMFDriver.cpp')
-rw-r--r--src/engine/SMFDriver.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/engine/SMFDriver.cpp b/src/engine/SMFDriver.cpp
index 33fc686..5b6d940 100644
--- a/src/engine/SMFDriver.cpp
+++ b/src/engine/SMFDriver.cpp
@@ -63,6 +63,8 @@ SMFDriver::learn(const string& filename, unsigned track, double q, Raul::BeatTim
else
learn_track(m, reader, track, q, max_duration);
+ m->reset();
+
if (m->nodes().size() > 1)
return m;
else
@@ -89,6 +91,8 @@ SMFDriver::learn(const string& filename, double q, Raul::BeatTime max_duration)
learn_track(m, reader, t, q, max_duration);
}
+ m->reset();
+
if (m->nodes().size() > 1)
return m;
else
@@ -246,7 +250,7 @@ SMFDriver::learn_track(SharedPtr<Machine> m,
// (these happen after polyphonic sections)
if (is_delay_node(connect_node) && connect_node->duration() == 0
&& connect_node->outgoing_edges().size() == 1
- && (*connect_node->outgoing_edges().begin())->dst() == resolved) {
+ && (*connect_node->outgoing_edges().begin())->head() == resolved) {
connect_node->outgoing_edges().clear();
assert(connect_node->outgoing_edges().empty());
connect_node->set_enter_action(resolved->enter_action());
@@ -301,11 +305,8 @@ SMFDriver::learn_track(SharedPtr<Machine> m,
active_nodes.clear();
}
- if (added_nodes > 0)
- /*if (initial_node->outgoing_edges().size() == 1)
- (*initial_node->outgoing_edges().begin())->dst()->set_initial(true);
- else*/
- m->add_node(initial_node);
+ if (m->nodes().find(initial_node) == m->nodes().end())
+ m->add_node(initial_node);
}