diff options
author | David Robillard <d@drobilla.net> | 2007-04-05 17:06:53 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-04-05 17:06:53 +0000 |
commit | 4541e87aa843dd97c542f7c66fcbc0a16ffbcee5 (patch) | |
tree | b78b2bc374e62401df6e6e5d3d250d1845053ec4 /src/engine/MachineBuilder.cpp | |
parent | 0123cdeacc9acc7ca16fa8b0a9dee7a5d916b7df (diff) | |
download | machina-4541e87aa843dd97c542f7c66fcbc0a16ffbcee5.tar.gz machina-4541e87aa843dd97c542f7c66fcbc0a16ffbcee5.tar.bz2 machina-4541e87aa843dd97c542f7c66fcbc0a16ffbcee5.zip |
Code cleanups.
git-svn-id: http://svn.drobilla.net/lad/machina@399 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/MachineBuilder.cpp')
-rw-r--r-- | src/engine/MachineBuilder.cpp | 73 |
1 files changed, 3 insertions, 70 deletions
diff --git a/src/engine/MachineBuilder.cpp b/src/engine/MachineBuilder.cpp index b62e90e..8be9148 100644 --- a/src/engine/MachineBuilder.cpp +++ b/src/engine/MachineBuilder.cpp @@ -12,7 +12,7 @@ * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include <algorithm> @@ -91,22 +91,15 @@ MachineBuilder::connect_nodes(SharedPtr<Machine> m, SharedPtr<Node> delay_node; - /*cerr << "******" << endl; - cerr << "Connect nodes durations: " << tail->duration() << " .. " << head->duration() << endl; - cerr << "Connect nodes times: " << tail_end_time << " .. " << head_start_time << endl;*/ - if (is_delay_node(tail) && tail->outgoing_edges().size() == 0) { // Tail is a delay node, just accumulate the time difference into it - //cerr << "Accumulating delay " << tail_end_time << " .. " << head_start_time << endl; set_node_duration(tail, tail->duration() + head_start_time - tail_end_time); tail->add_outgoing_edge(SharedPtr<Edge>(new Edge(tail, head))); } else if (head_start_time == tail_end_time) { // Connect directly - //cerr << "Connnecting directly " << tail_end_time << " .. " << head_start_time << endl; tail->add_outgoing_edge(SharedPtr<Edge>(new Edge(tail, head))); } else { // Need to actually create a delay node - //cerr << "Adding delay node for " << tail_end_time << " .. " << head_start_time << endl; delay_node = SharedPtr<Node>(new Node()); set_node_duration(delay_node, head_start_time - tail_end_time); tail->add_outgoing_edge(SharedPtr<Edge>(new Edge(tail, delay_node))); @@ -114,8 +107,6 @@ MachineBuilder::connect_nodes(SharedPtr<Machine> m, m->add_node(delay_node); } - /*cerr << "******" << endl << endl;*/ - return delay_node; } @@ -130,10 +121,7 @@ MachineBuilder::event(Raul::BeatTime time_offset, if (ev_size == 0) return; - //cerr << "t = " << t << endl; - if ((buf[0] & 0xF0) == MIDI_CMD_NOTE_ON) { - //cerr << "NOTE ON: " << (int)buf[1] << ", channel = " << (int)(buf[0] & 0x0F) << endl; SharedPtr<Node> node(new Node()); node->set_enter_action(SharedPtr<Action>(new MidiAction(ev_size, buf))); @@ -148,7 +136,6 @@ MachineBuilder::event(Raul::BeatTime time_offset, if (j->second->outgoing_edges().empty()) { this_connect_node = j->second; this_connect_node_end_time = j->first + j->second->duration(); - cerr << "POLY CONNECT!\n"; break; } } @@ -157,7 +144,6 @@ MachineBuilder::event(Raul::BeatTime time_offset, // Currently monophonic, or didn't find a poly node, so use _connect_node // which is maintained below on note off events. if ( ! this_connect_node) { - cerr << "NO POLY CONNECT\n"; this_connect_node = _connect_node; this_connect_node_end_time = _connect_node_end_time; } @@ -166,9 +152,6 @@ MachineBuilder::event(Raul::BeatTime time_offset, SharedPtr<Node> delay_node = connect_nodes(_machine, this_connect_node, this_connect_node_end_time, node, t); - if (delay_node) - cerr << "XXXXXXXXXXXXXX NOTE ON DELAY NODE\n"; - if (delay_node) { _connect_node = delay_node; _connect_node_end_time = t; @@ -178,7 +161,7 @@ MachineBuilder::event(Raul::BeatTime time_offset, _active_nodes.push_back(node); } else if ((buf[0] & 0xF0) == MIDI_CMD_NOTE_OFF) { - //cerr << "NOTE OFF: " << (int)buf[1] << endl; + for (ActiveList::iterator i = _active_nodes.begin(); i != _active_nodes.end(); ++i) { SharedPtr<MidiAction> action = PtrCast<MidiAction>((*i)->enter_action()); if (!action) @@ -191,8 +174,6 @@ MachineBuilder::event(Raul::BeatTime time_offset, && (ev[0] & 0x0F) == (buf[0] & 0x0F) // same channel && ev[1] == buf[1]) // same note { - //cerr << "FOUND MATCHING NOTE OFF!\n"; - SharedPtr<Node> resolved = *i; resolved->set_exit_action(SharedPtr<Action>(new MidiAction(ev_size, buf))); @@ -201,15 +182,11 @@ MachineBuilder::event(Raul::BeatTime time_offset, // Last active note if (_active_nodes.size() == 1) { - cerr << "{ RESOLVING, t= " << t << "\n"; - _connect_node_end_time = t; // Finish a polyphonic section if (_poly_nodes.size() > 0) { - cerr << "POLY\n"; - _connect_node = SharedPtr<Node>(new Node()); _machine->add_node(_connect_node); @@ -228,14 +205,11 @@ MachineBuilder::event(Raul::BeatTime time_offset, // Just monophonic } else { - cerr << "NO POLY\n"; - // Trim useless delay node if possible (these appear after poly sections) if (is_delay_node(_connect_node) && _connect_node->duration() == 0 && _connect_node->outgoing_edges().size() == 1 && (*_connect_node->outgoing_edges().begin())->head() == resolved) { - cerr << "TRIMMING\n"; _connect_node->outgoing_edges().clear(); assert(_connect_node->outgoing_edges().empty()); _connect_node->set_enter_action(resolved->enter_action()); @@ -248,18 +222,13 @@ MachineBuilder::event(Raul::BeatTime time_offset, _machine->add_node(_connect_node); } else { - - cerr << "RESOLVED\n"; _connect_node = resolved; _machine->add_node(resolved); } } - cerr << "}"; - // Polyphonic, add this state to poly list } else { - cerr << "ADDING POLY\n"; _poly_nodes.push_back(make_pair(resolved->enter_time(), resolved)); _connect_node = resolved; _connect_node_end_time = t; @@ -273,6 +242,7 @@ MachineBuilder::event(Raul::BeatTime time_offset, break; } } + } } @@ -309,43 +279,6 @@ MachineBuilder::resolve() && _machine->nodes().find(_initial_node) == _machine->nodes().end()) _machine->add_node(_initial_node); -#if 0 - // Quantize - if (_quantization > 0) { - for (Machine::Nodes::iterator i = _machine->nodes().begin(); - i != _machine->nodes().end(); ++i) { - Raul::BeatTime q_dur = Quantizer::quantize(_quantization, (*i)->duration()); - - // Never quantize a note to duration 0 - if (q_dur > 0 || ( !(*i)->enter_action() && !(*i)->exit_action() )) - (*i)->set_duration(q_dur); - } - } - - // Remove any useless states - for (Machine::Nodes::iterator i = _machine->nodes().begin(); - i != _machine->nodes().end() ; ) { - - if (!(*i)->enter_action() && !(*i)->exit_action() && (*i)->duration() == 0 - && (*i)->outgoing_edges().size() <= 1) { - - // Connect any predecessors to the successor - if ((*i)->outgoing_edges().size() == 1) { - SharedPtr<Node> successor = *((*i)->outgoing_edges().begin())->head(); - - for (Machine::Nodes::iterator i = _machine->nodes().begin(); - i != _machine->nodes().end() ; ) { - - - Machine::Nodes::iterator next = i; - ++next; - - _machine->remove_node(*i); - - i = next; - } - } -#endif } |