X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fdynamic-performer.cc;h=cc6936a475b0759030d8301065fe87df9783d955;hb=ed9862d117b627c0438d6c11d1bb3ef103abbc47;hp=08250660137aad944db45562edb16bd58d2d2f69;hpb=1fc55f384b7be38162ff82b1eb86ca0449346f87;p=lilypond.git diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc index 0825066013..cc6936a475 100644 --- a/lily/dynamic-performer.cc +++ b/lily/dynamic-performer.cc @@ -3,26 +3,25 @@ source file of the GNU LilyPond music typesetter - (c) 2000 Jan Nieuwenhuizen + (c) 2000--2004 Jan Nieuwenhuizen */ #include "performer.hh" -#include "command-request.hh" -#include "musical-request.hh" + +#include "event.hh" #include "audio-item.hh" /* TODO: - handle multiple requests - */ + + handle multiple events -/** - perform absolute (text) dynamics + perform absolute (text) dynamics */ class Dynamic_performer : public Performer { public: - TRANSLATOR_DECLARATIONS(Dynamic_performer); + TRANSLATOR_DECLARATIONS (Dynamic_performer); protected: virtual bool try_music (Music* req); virtual void stop_translation_timestep (); @@ -33,8 +32,6 @@ private: Audio_dynamic* audio_; }; - - Dynamic_performer::Dynamic_performer () { script_req_ = 0; @@ -49,28 +46,26 @@ Dynamic_performer::create_audio_elements () SCM proc = get_property ("dynamicAbsoluteVolumeFunction"); SCM svolume = SCM_EOL; - if (gh_procedure_p (proc)) + if (ly_c_procedure_p (proc)) { // urg - svolume = gh_call1 (proc, script_req_->get_mus_property ("text")); + svolume = scm_call_1 (proc, script_req_->get_property ("text")); } - Real volume = 0.5; - if (gh_number_p (svolume)) - volume = gh_scm2double (svolume); + Real volume = robust_scm2double (svolume, 0.5); /* properties override default equaliser setting */ SCM min = get_property ("midiMinimumVolume"); SCM max = get_property ("midiMaximumVolume"); - if (gh_number_p (min) || gh_number_p (max)) + if (scm_is_number (min) || scm_is_number (max)) { Interval iv (0, 1); - if (gh_number_p (min)) - iv[MIN] = gh_scm2double (min); - if (gh_number_p (max)) - iv[MAX] = gh_scm2double (max); + if (scm_is_number (min)) + iv[MIN] = scm_to_double (min); + if (scm_is_number (max)) + iv[MAX] = scm_to_double (max); volume = iv[MIN] + iv.length () * volume; } else @@ -80,24 +75,22 @@ Dynamic_performer::create_audio_elements () */ SCM s = get_property ("midiInstrument"); - if (!gh_string_p (s)) + if (!scm_is_string (s)) s = get_property ("instrument"); - if (!gh_string_p (s)) + if (!scm_is_string (s)) s = scm_makfrom0str ("piano"); SCM eq = get_property ("instrumentEqualizer"); - if (gh_procedure_p (eq)) + if (ly_c_procedure_p (eq)) { - s = gh_call1 (eq, s); + s = scm_call_1 (eq, s); } - if (gh_pair_p (s)) + if (is_number_pair (s)) { - Interval iv; - iv[MIN] = gh_scm2double (ly_car (s)); - iv[MAX] = gh_scm2double (ly_cdr (s)); + Interval iv = ly_scm2interval (s); volume = iv[MIN] + iv.length () * volume; } } @@ -124,8 +117,7 @@ Dynamic_performer::try_music (Music* r) { if (!script_req_) { - if (dynamic_cast (r) - && r->get_mus_property ("text-type") == ly_symbol2scm ("dynamic")) + if (r->is_mus_type ("absolute-dynamic-event")) // fixme. { script_req_ = r; return true; @@ -134,10 +126,10 @@ Dynamic_performer::try_music (Music* r) return false; } -ENTER_DESCRIPTION(Dynamic_performer, +ENTER_DESCRIPTION (Dynamic_performer, /*descr*/ "", /* creats*/ "", - /* accepts */ "note-column-interface script-interface", + /* accepts */ "absolute-dynamic-event", /* acks */ "", /*reads */"dynamicAbsoluteVolumeFunction midiMaximumVolume midiMinimumVolume midiInstrument instrumentEqualizer", /*writes*/"");