X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fkey-performer.cc;h=b55210a4487d60e37f598f9e37f47e2acf81b4a2;hb=b638d530ac5a32a832646cdd2b680ce52d0764f0;hp=bca4c5c106e8fd59f48e914a7b17ce632a76b82a;hpb=cec6dfa6bf0fb931eb7f42b1ee44ca2ec19a9f34;p=lilypond.git diff --git a/lily/key-performer.cc b/lily/key-performer.cc index bca4c5c106..b55210a448 100644 --- a/lily/key-performer.cc +++ b/lily/key-performer.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Jan Nieuwenhuizen + (c) 1997--2000 Jan Nieuwenhuizen */ #include "key-performer.hh" @@ -11,47 +11,51 @@ #include "audio-item.hh" +ADD_THIS_TRANSLATOR (Key_performer); -IMPLEMENT_IS_TYPE_B1(Key_performer,Performer); -ADD_THIS_TRANSLATOR(Key_performer); - -Key_performer::Key_performer() +Key_performer::Key_performer () { key_req_l_ = 0; + audio_p_ = 0; } -Key_performer::~Key_performer() +Key_performer::~Key_performer () { } -void -Key_performer::do_print() const +void +Key_performer::do_process_music () { -#ifndef NPRINT - if (key_req_l_) - key_req_l_->print(); -#endif + if (key_req_l_ && key_req_l_->pitch_alist_ != SCM_UNDEFINED) + { + audio_p_ = new Audio_key (); // *key_req_l_->key_); + Audio_element_info info (audio_p_, key_req_l_); + announce_element (info); + key_req_l_ = 0; + } } void -Key_performer::do_process_requests() +Key_performer::do_pre_move_processing () { - if (key_req_l_) - play (new Audio_key (key_req_l_)); - key_req_l_ = 0; + if (audio_p_) + { + play_element (audio_p_); + audio_p_ = 0; + } } bool -Key_performer::do_try_request (Request* req_l) +Key_performer::do_try_music (Music* req_l) { - if (key_req_l_) - return false; - - if (req_l->command()) - key_req_l_ = req_l->command()->keychange (); - - if (key_req_l_) - return true; + if (Key_change_req *kc = dynamic_cast (req_l)) + { + if (key_req_l_) + warning (_ ("FIXME: key change merge")); + + key_req_l_ = kc; + return true; + } return false; }