X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic.cc;h=7a38d7af41d84851151b65e2c5bcbdaa4cc4e010;hb=288456fe3fe04dd089aa53c2fc2435ddd33b4801;hp=02dbe41499e644d184c356254933e4c1397fddfa;hpb=25e22b5ae7e6c1c5a8ffa82fd8217909ef3fa124;p=lilypond.git diff --git a/lily/music.cc b/lily/music.cc index 02dbe41499..7a38d7af41 100644 --- a/lily/music.cc +++ b/lily/music.cc @@ -161,6 +161,7 @@ Music::generic_to_relative_octave (Pitch last) if (Music *m = unsmob_music (elt)) last = m->to_relative_octave (last); + (void) music_list_to_relative (get_property ("articulations"), last, true); last = music_list_to_relative (get_property ("elements"), last, false); return last; } @@ -232,7 +233,8 @@ transpose_mutable (SCM alist, Pitch delta) if (Music *m = unsmob_music (val)) m->transpose (delta); } - else if (prop == ly_symbol2scm ("elements")) + else if (prop == ly_symbol2scm ("elements") + || prop == ly_symbol2scm ("articulations")) transpose_music_list (val, delta); else if (prop == ly_symbol2scm ("pitch-alist") && scm_is_pair (val)) @@ -269,7 +271,7 @@ Music::origin () const ES TODO: This method should probably be reworked or junked. */ Stream_event * -Music::to_event () const +Music::to_event (Context *c) const { SCM class_name = ly_camel_case_2_lisp_identifier (get_property ("name")); @@ -277,7 +279,8 @@ Music::to_event () const if (!internal_is_music_type (class_name)) programming_error ("Not a music type"); - Stream_event *e = new Stream_event (class_name, mutable_property_alist_); + Stream_event *e = new Stream_event (c->make_event_class (class_name), + mutable_property_alist_); Moment length = get_length (); if (length.to_bool ()) e->set_property ("length", length.smobbed_copy ()); @@ -290,7 +293,7 @@ Music::to_event () const 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); + art_ev = scm_cons (m->to_event (c)->unprotect (), art_ev); } e->set_property ("articulations", scm_reverse_x (art_ev, SCM_EOL)); } @@ -307,7 +310,7 @@ Music::to_event () const void Music::send_to_context (Context *c) { - Stream_event *ev = to_event (); + Stream_event *ev = to_event (c); c->event_source ()->broadcast (ev); ev->unprotect (); }