- if ((prop = node.property ("type")) != 0) {
-
- boost::shared_ptr<Processor> processor;
-
- /* meter, amp, monitor and intreturn are all singletons, deal with them first */
-
- if (prop->value() == "meter") {
-
- if (_meter) {
- if (_meter->set_state (node, Stateful::loading_state_version)) {
- return false;
- } else {
- return true;
- }
- }
-
- PeakMeter* pm = new PeakMeter (_session);
-
- if (pm->set_state (node, Stateful::loading_state_version)) {
- delete pm;
- return false;
- }
-
- _meter.reset (pm);
- _meter->set_display_to_user (_meter_point == MeterCustom);
-
- processor = _meter;
-
- } else if (prop->value() == "monitor") {
-
- if (_monitor_control) {
- if (_monitor_control->set_state (node, Stateful::loading_state_version)) {
- return false;
- } else {
- return true;
- }
- }
-
- MonitorProcessor* mp = new MonitorProcessor (_session);
- if (mp->set_state (node, Stateful::loading_state_version)) {
- delete mp;
- return false;
- }
-
- _monitor_control.reset (mp);
- processor = _monitor_control;
-
- } else if (prop->value() == "amp") {
-
- if (_amp) {
- processor = _amp;
- if (processor->set_state (node, Stateful::loading_state_version)) {
- return false;
- } else {
- /* no reason to add it */
- return true;
- }
- }
-
- Amp* a = new Amp (_session, _mute_master);
- if (_amp->set_state (node, Stateful::loading_state_version)) {
- delete a;
- return false;
- }
-
- _amp.reset (a);
- processor = _amp;
-
- } else if (prop->value() == "intreturn") {
-
- /* a route only has one internal return. If it exists already
- just set its state, and return
- */
-
- if (_intreturn) {
- if (_intreturn->set_state (node, Stateful::loading_state_version)) {
- return false;
- } else {
- return true;
- }
- }
-
- InternalReturn* iret = new InternalReturn (_session);
- if (iret->set_state (node, Stateful::loading_state_version)) {
- delete iret;
- return false;
- }
-
- _intreturn.reset (iret);
- processor = _intreturn;
-
- } else if (prop->value() == "main-outs") {
-
- if (_main_outs) {
- if (_main_outs->set_state (node, Stateful::loading_state_version)) {
- return false;
- } else {
- return true;
- }
- }
-
- Delivery* del = new Delivery (_session, _output, _mute_master, X_("toBeResetFroXML"), Delivery::Role (0));
- if (del->set_state (node, Stateful::loading_state_version)) {
- delete del;
- return false;
- }
-
- _main_outs.reset (del);
- processor = _main_outs;
-
- } else if (prop->value() == "intsend") {
-
- InternalSend* isend = new InternalSend (_session, _mute_master, boost::shared_ptr<Route>(), Delivery::Role (0));
- if (isend->set_state (node, Stateful::loading_state_version)) {
- delete isend;
- return false;
- }
-
- processor.reset (isend);
-
- } else if (prop->value() == "ladspa" || prop->value() == "Ladspa" ||
- prop->value() == "lv2" ||
- prop->value() == "vst" ||
- prop->value() == "audiounit") {
-
- processor.reset (new PluginInsert(_session, node));
-
- } else if (prop->value() == "port") {