- Context *null
- = get_outlet ()->find_create_context (ly_symbol2scm ("Devnull"),
- "", SCM_EOL);
-
- if (!null)
- programming_error ("No Devnull found?");
-
- null_.set_translator (null);
-
- Context *one = tr->find_create_context (ly_symbol2scm ("Voice"),
- "one", props);
-
- one_.set_translator (one);
-
- set_translator (one);
- first_iter_ = unsmob_iterator (get_iterator (unsmob_music (ly_car (lst))));
-
-
- Context *two = tr->find_create_context (ly_symbol2scm ("Voice"),
- "two", props);
- two_.set_translator (two);
- set_translator (two);
- second_iter_ = unsmob_iterator (get_iterator (unsmob_music (ly_cadr (lst))));
-
-
- set_translator (tr);
+ for (int i = 0; i < NUM_OUTLETS; i++)
+ {
+ SCM type = (i == CONTEXT_NULL) ? ly_symbol2scm ("Devnull") : ly_symbol2scm ("Voice");
+ /* find context below c: otherwise we may create new staff for each voice */
+ c = c->find_create_context (type, outlet_names_[i], SCM_EOL);
+ handles_[i].set_context (c);
+ if (c->is_alias (ly_symbol2scm ("Voice")))
+ c->event_source ()->add_listener (GET_LISTENER (set_busy), ly_symbol2scm ("music-event"));
+ }