+ Stripable::set_state (node, version);
+
+ std::string str;
+ if (node.get_property ("name", str)) {
+ set_name (str);
+ }
+
+ node.get_property ("number", _number);
+
+ XMLNodeList const &children (node.children());
+ for (XMLNodeList::const_iterator i = children.begin(); i != children.end(); ++i) {
+ if ((*i)->name() == Controllable::xml_node_name) {
+
+ if (!(*i)->get_property ("name", str)) {
+ continue;
+ }
+
+ if (str == _gain_control->name()) {
+ _gain_control->set_state (**i, version);
+ }
+ if (str == _solo_control->name()) {
+ _solo_control->set_state (**i, version);
+ }
+ if (str == _mute_control->name()) {
+ _mute_control->set_state (**i, version);
+ }
+ } else if ((*i)->name() == Slavable::xml_node_name) {
+ Slavable::set_state (**i, version);
+ } else if ((*i)->name() == Automatable::xml_node_name) {
+ set_automation_xml_state (**i, Evoral::Parameter(NullAutomation));
+ }
+ }
+
+ return 0;