+/*
+ ES TODO: This method should probably be reworked or junked.
+*/
+Stream_event *
+Music::to_event () const
+{
+ SCM class_name = ly_camel_case_2_lisp_identifier (get_property ("name"));
+
+ // catch programming mistakes.
+ if (!internal_is_music_type (class_name))
+ programming_error ("Not a music type");
+
+ Stream_event *e = new Stream_event
+ (Lily::ly_make_event_class (class_name),
+ mutable_property_alist_);
+ Moment length = get_length ();
+ if (length.to_bool ())
+ e->set_property ("length", length.smobbed_copy ());
+
+ // articulations as events.
+ SCM art_mus = e->get_property ("articulations");
+ if (scm_is_pair (art_mus))
+ {
+ SCM art_ev = SCM_EOL;
+ for (; scm_is_pair (art_mus); art_mus = scm_cdr (art_mus))
+ {
+ Music *m = unsmob<Music> (scm_car (art_mus));
+ art_ev = scm_cons (m->to_event ()->unprotect (), art_ev);
+ }
+ e->set_property ("articulations", scm_reverse_x (art_ev, SCM_EOL));
+ }