X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpiano-pedal-performer.cc;h=fd32e92684349e8f3dad98b04b8ce2c5fdecab28;hb=4cb2a5267e16d233b13089ab37a467c3d19da235;hp=9bd045aed87b11af6750441ebefe268173c8a63c;hpb=7a558267cfbc5a90bf87a80ce9bcfed087692064;p=lilypond.git diff --git a/lily/piano-pedal-performer.cc b/lily/piano-pedal-performer.cc index 9bd045aed8..fd32e92684 100644 --- a/lily/piano-pedal-performer.cc +++ b/lily/piano-pedal-performer.cc @@ -10,8 +10,6 @@ #include "command-request.hh" #include "musical-request.hh" #include "audio-item.hh" -#include "dictionary.hh" -#include "dictionary-iter.hh" /** perform Piano pedals @@ -26,41 +24,38 @@ class Piano_pedal_performer : public Performer }; public: - VIRTUAL_COPY_CONS (Translator); - Piano_pedal_performer (); + TRANSLATOR_DECLARATIONS(Piano_pedal_performer); ~Piano_pedal_performer (); protected: - virtual void do_creation_processing (); - virtual bool do_try_music (Music*); - virtual void do_process_music (); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); + virtual void initialize (); + virtual bool try_music (Music*); + virtual void create_audio_elements (); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); private: Link_array audio_p_arr_; Pedal_info * info_alist_; }; -ADD_THIS_TRANSLATOR (Piano_pedal_performer); - Piano_pedal_performer::Piano_pedal_performer () { info_alist_ = 0; } -Piano_pedal_performer::~Piano_pedal_performer() +Piano_pedal_performer::~Piano_pedal_performer () { delete[] info_alist_; } void -Piano_pedal_performer::do_creation_processing () +Piano_pedal_performer::initialize () { info_alist_ = new Pedal_info[4]; Pedal_info *p = info_alist_; - char * names [] = { "Sostenuto", "Sustain", "UnaChorda", 0 }; + char * names [] = { "Sostenuto", "Sustain", "UnaCorda", 0 }; char **np = names ; do { @@ -71,20 +66,20 @@ Piano_pedal_performer::do_creation_processing () p++; } - while (*(np ++)); + while (* (np ++)); } void -Piano_pedal_performer::do_process_music () +Piano_pedal_performer::create_audio_elements () { - for (Pedal_info*p = info_alist_; p->name_; p ++) + for (Pedal_info*p = info_alist_; p && p->name_; p ++) { if (p->req_l_drul_[STOP]) { if (!p->start_req_l_) { - p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: %s", String (p->name_))); + p->req_l_drul_[STOP]->origin ()->warning (_f ("can't find start of piano pedal: `%s'", String (p->name_))); } else { @@ -104,11 +99,13 @@ Piano_pedal_performer::do_process_music () a->dir_ = START; audio_p_arr_.push (a); } + p->req_l_drul_[START] = 0; + p->req_l_drul_[STOP] = 0; } } void -Piano_pedal_performer::do_pre_move_processing () +Piano_pedal_performer::stop_translation_timestep () { for (int i=0; i< audio_p_arr_.size (); i++) play_element (audio_p_arr_[i]); @@ -116,9 +113,9 @@ Piano_pedal_performer::do_pre_move_processing () } void -Piano_pedal_performer::do_post_move_processing () +Piano_pedal_performer::start_translation_timestep () { - for (Pedal_info*p = info_alist_; p->name_; p ++) + for (Pedal_info*p = info_alist_; p && p->name_; p ++) { p->req_l_drul_[STOP] = 0; p->req_l_drul_[START] = 0; @@ -126,18 +123,20 @@ Piano_pedal_performer::do_post_move_processing () } bool -Piano_pedal_performer::do_try_music (Music* r) +Piano_pedal_performer::try_music (Music* r) { - if (Span_req * s = dynamic_cast(r)) + if (Span_req * s = dynamic_cast (r)) { for (Pedal_info*p = info_alist_; p->name_; p ++) { - if (s->span_type_str_ == String (p->name_)) + if (scm_equal_p (s->get_mus_property ("span-type"), + ly_str02scm (p->name_)) == SCM_BOOL_T) { - p->req_l_drul_[s->get_span_dir()] = s; + p->req_l_drul_[s->get_span_dir ()] = s; return true; } } } return false; } +ENTER_DESCRIPTION (Piano_pedal_performer, "","","","","" );