+ ProcessorList::iterator reader_pos = find (new_processors.begin(), new_processors.end(), _disk_reader);
+ if (reader_pos != new_processors.end()) {
+ /* insert after disk-reader */
+ new_processors.insert (++reader_pos, _capturing_processor);
+ } else {
+ ProcessorList::iterator return_pos = find (new_processors.begin(), new_processors.end(), _intreturn);
+ /* insert after return */
+ if (return_pos != new_processors.end()) {
+ new_processors.insert (++return_pos, _capturing_processor);
+ } else {
+ new_processors.push_front (_capturing_processor);
+ }
+ }
+ }
+
+ /* Polarity Invert */
+ if (_polarity) {
+ ProcessorList::iterator reader_pos = find (new_processors.begin(), new_processors.end(), _disk_reader);
+ if (reader_pos != new_processors.end()) {
+ /* insert after disk-reader */
+ new_processors.insert (++reader_pos, _polarity);
+ } else {
+ ProcessorList::iterator return_pos = find (new_processors.begin(), new_processors.end(), _intreturn);
+ /* insert after return */
+ if (return_pos != new_processors.end()) {
+ new_processors.insert (++return_pos, _polarity);
+ } else {
+ new_processors.push_front (_polarity);
+ }
+ }
+ }
+
+ /* Input meter */
+ if (_meter && _meter_point == MeterInput) {
+ /* add meter just before the disk-writer (if any)
+ * otherwise at the top, but after the latency delayline
+ * (perhaps it should also be after intreturn on busses ??)
+ */
+ assert (!_meter->display_to_user ());
+ ProcessorList::iterator writer_pos = find (new_processors.begin(), new_processors.end(), _disk_writer);
+ if (writer_pos != new_processors.end()) {
+ /* insert before disk-writer */
+ new_processors.insert (writer_pos, _meter);
+ } else {
+ ProcessorList::iterator return_pos = find (new_processors.begin(), new_processors.end(), _intreturn);
+ /* insert after return */
+ if (return_pos != new_processors.end()) {
+ new_processors.insert (++return_pos, _meter);
+ } else {
+ new_processors.push_front (_meter);
+ }
+ }
+ }
+
+ if (!is_master() && !is_monitor() && !is_auditioner()) {
+ ProcessorList::iterator reader_pos = find (new_processors.begin(), new_processors.end(), _disk_reader);
+ if (reader_pos != new_processors.end()) {
+ /* insert before disk-reader */
+ new_processors.insert (reader_pos, _delayline);
+ } else {
+ new_processors.push_front (_delayline);
+ }