X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fdynamic-performer.cc;h=0dd455606095a99c8326f447d3b30b245ede81ab;hb=cf5b2dd83e1f12e53181e9b43c62aa2e70137622;hp=b264e72edd6fe84cb7a0ec09e7603b0886f66ba8;hpb=a7f82e4dc22fc6219a9fe0f6874f8c91e3f31f24;p=lilypond.git diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc index b264e72edd..0dd4556060 100644 --- a/lily/dynamic-performer.cc +++ b/lily/dynamic-performer.cc @@ -3,13 +3,14 @@ source file of the GNU LilyPond music typesetter - (c) 2000--2005 Jan Nieuwenhuizen + (c) 2000--2006 Jan Nieuwenhuizen */ #include "performer.hh" #include "audio-item.hh" -#include "music.hh" +#include "stream-event.hh" +#include "translator.icc" /* TODO: @@ -23,25 +24,25 @@ class Dynamic_performer : public Performer public: TRANSLATOR_DECLARATIONS (Dynamic_performer); protected: - virtual bool try_music (Music *req); - PRECOMPUTED_VIRTUAL void stop_translation_timestep (); - virtual void create_audio_elements (); + void stop_translation_timestep (); + void process_music (); + DECLARE_TRANSLATOR_LISTENER (absolute_dynamic); private: - Music *script_req_; + Stream_event *script_event_; Audio_dynamic *audio_; }; Dynamic_performer::Dynamic_performer () { - script_req_ = 0; + script_event_ = 0; audio_ = 0; } void -Dynamic_performer::create_audio_elements () +Dynamic_performer::process_music () { - if (script_req_) + if (script_event_) { SCM proc = get_property ("dynamicAbsoluteVolumeFunction"); @@ -49,7 +50,7 @@ Dynamic_performer::create_audio_elements () if (ly_is_procedure (proc)) { // urg - svolume = scm_call_1 (proc, script_req_->get_property ("text")); + svolume = scm_call_1 (proc, script_event_->get_property ("text")); } Real volume = robust_scm2double (svolume, 0.5); @@ -76,16 +77,14 @@ Dynamic_performer::create_audio_elements () SCM s = get_property ("midiInstrument"); if (!scm_is_string (s)) - s = get_property ("instrument"); + s = get_property ("instrumentName"); if (!scm_is_string (s)) s = scm_makfrom0str ("piano"); SCM eq = get_property ("instrumentEqualizer"); if (ly_is_procedure (eq)) - { - s = scm_call_1 (eq, s); - } + s = scm_call_1 (eq, s); if (is_number_pair (s)) { @@ -95,9 +94,9 @@ Dynamic_performer::create_audio_elements () } audio_ = new Audio_dynamic (volume); - Audio_element_info info (audio_, script_req_); + Audio_element_info info (audio_, script_event_); announce_element (info); - script_req_ = 0; + script_event_ = 0; } } @@ -106,31 +105,27 @@ Dynamic_performer::stop_translation_timestep () { if (audio_) { - play_element (audio_); audio_ = 0; } } -bool -Dynamic_performer::try_music (Music *r) +IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_performer, absolute_dynamic); +void +Dynamic_performer::listen_absolute_dynamic (Stream_event *r) { - if (!script_req_) - { - if (r->is_mus_type ("absolute-dynamic-event")) // fixme. - { - script_req_ = r; - return true; - } - } - return false; + if (!script_event_) + script_event_ = r; } -#include "translator.icc" - ADD_TRANSLATOR (Dynamic_performer, - /*descr*/ "", - /* creats*/ "", - /* accepts */ "absolute-dynamic-event", - /* acks */ "", - /*reads */"dynamicAbsoluteVolumeFunction midiMaximumVolume midiMinimumVolume midiInstrument instrumentEqualizer", + /* doc */ "", + /* create */ "", + + /* read */ + "dynamicAbsoluteVolumeFunction " + "instrumentEqualizer " + "midiMaximumVolume " + "midiMinimumVolume " + "midiInstrument " + , /*writes*/"");