aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/Mutation.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-12-07 17:27:06 +0000
committerDavid Robillard <d@drobilla.net>2007-12-07 17:27:06 +0000
commitaa11564fef8ed9330d42081288e8f310072c67d6 (patch)
tree3d092d0117fd8a309d4ec16e158893744a777362 /src/engine/Mutation.cpp
parent885af895243b43220b1e99f1d3b2bebcc2ec6398 (diff)
downloadmachina-aa11564fef8ed9330d42081288e8f310072c67d6.tar.gz
machina-aa11564fef8ed9330d42081288e8f310072c67d6.tar.bz2
machina-aa11564fef8ed9330d42081288e8f310072c67d6.zip
Fix loading selector nodes.
Choosing evolution target MIDI from GUI. git-svn-id: http://svn.drobilla.net/lad/machina@963 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/Mutation.cpp')
-rw-r--r--src/engine/Mutation.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/engine/Mutation.cpp b/src/engine/Mutation.cpp
index d60ef34..a307ce5 100644
--- a/src/engine/Mutation.cpp
+++ b/src/engine/Mutation.cpp
@@ -52,10 +52,12 @@ AddNode::mutate(Machine& machine)
//cout << "ADD NODE" << endl;
// Create random node
- SharedPtr<Node> node(new Node(1.0));
+ SharedPtr<Node> node(new Node());
node->set_selector(true);
SharedPtr<Node> note_node = machine.random_node();
+ if (!note_node)
+ return;
uint8_t note = PtrCast<MidiAction>(note_node->enter_action())->event()[1];
node->set_enter_action(ActionFactory::note_on(note));
@@ -154,7 +156,7 @@ RemoveEdge::mutate(Machine& machine)
//cout << "REMOVE EDGE" << endl;
SharedPtr<Node> tail = machine.random_node();
- if (tail)
+ if (tail && !(tail->is_initial() && tail->edges().size() == 1))
tail->remove_edge(tail->random_edge());
}