From 9c4b0d53715d94ee923729eb40416ea90f71516c Mon Sep 17 00:00:00 2001 From: Joe Neeman Date: Thu, 21 Aug 2008 09:26:27 -0700 Subject: [PATCH] Small cleanups due to Han-Wen's comments. --- input/regression/accidental-contemporary.ly | 27 +++++++++++++++------ lily/accidental-engraver.cc | 16 ++++-------- lily/context.cc | 15 ++++++++++++ lily/include/context.hh | 6 +++-- lily/scale.cc | 2 +- 5 files changed, 45 insertions(+), 21 deletions(-) diff --git a/input/regression/accidental-contemporary.ly b/input/regression/accidental-contemporary.ly index 145c96a987..926c9ffc62 100644 --- a/input/regression/accidental-contemporary.ly +++ b/input/regression/accidental-contemporary.ly @@ -16,18 +16,31 @@ immediately repeated 'neo-modern-cautionary style acts like neo-modern, adding cautionary parentheses around accidentals. @end itemize + +Both scores should show the same accidentals. " } \layout { ragged-right = ##t } -\relative c'' { - #(set-accidental-style 'dodecaphonic) - gis4 a g gisis - #(set-accidental-style 'neo-modern) - gis8 a gis gis g' gis gis,, a' - #(set-accidental-style 'neo-modern-cautionary) - eis fis eis eis g2 +\score { + \relative c'' { + #(set-accidental-style 'dodecaphonic) + gis4 a g gisis + #(set-accidental-style 'neo-modern) + gis8 a gis gis g' gis gis,, a' + #(set-accidental-style 'neo-modern-cautionary) + eis fis eis eis g2 + } } +\score { + \relative c'' { + \set Staff.autoAccidentals = #'() + \set Staff.autoCautionaries = #'() + gis!4 a! g! gisis! + gis!8 a gis! gis g'! gis! gis,,! a' + eis! fis! eis? eis g?2 + } +} diff --git a/lily/accidental-engraver.cc b/lily/accidental-engraver.cc index 4d8fbc06a1..f93fcca465 100644 --- a/lily/accidental-engraver.cc +++ b/lily/accidental-engraver.cc @@ -257,7 +257,7 @@ check_pitch_against_signature (SCM key_signature, Pitch const &pitch, // TODO: consider moving check_pitch_against_signature to SCM (in which case // we can delete this function). LY_DEFINE (ly_find_accidentals_simple, "ly:find-accidentals-simple", 5, 0, 0, - (SCM keysig, SCM pp, SCM barnum, SCM laziness, SCM octaveness ), + (SCM keysig, SCM pitch_scm, SCM barnum, SCM laziness, SCM octaveness ), "Checks the need for an accidental and a 'restore' accidental against a" " key signature. The laziness is the number of bars for which reminder" " accidentals are used (ie. if laziness is zero, we only cancel accidentals" @@ -266,7 +266,7 @@ LY_DEFINE (ly_find_accidentals_simple, "ly:find-accidentals-simple", 5, 0, 0, " 'any-octave and it specifies whether accidentals should be canceled in" " different octaves.") { - LY_ASSERT_TYPE (unsmob_pitch, pp, 2); + LY_ASSERT_TYPE (unsmob_pitch, pitch_scm, 2); LY_ASSERT_TYPE (scm_is_integer, barnum, 3); LY_ASSERT_TYPE (ly_is_symbol, octaveness, 5); @@ -275,7 +275,7 @@ LY_DEFINE (ly_find_accidentals_simple, "ly:find-accidentals-simple", 5, 0, 0, SCM_ASSERT_TYPE (symbol_ok, octaveness, SCM_ARG5, __FUNCTION__, "'any-octave or 'same-octave"); - Pitch * pitch = unsmob_pitch (pp); + Pitch *pitch = unsmob_pitch (pitch_scm); int bar_number = scm_to_int (barnum); bool ignore_octave = ly_symbol2scm ("any-octave") == octaveness; @@ -512,14 +512,8 @@ Accidental_engraver::stop_translation_timestep () Rational a = pitch->get_alteration (); SCM key = scm_cons (scm_from_int (o), scm_from_int (n)); - Duration *dur = unsmob_duration (note->get_property ("duration")); - Rational dur_length = dur ? dur->get_length () : Rational (0); - Moment mp = robust_scm2moment (get_property ("measurePosition"), Moment (0)); - - Moment end_mp = mp.grace_part_ < Rational(0) - ? Moment(mp.main_part_, mp.grace_part_ + dur_length) - : Moment(mp.main_part_ + dur_length, 0); - + Moment end_mp = measure_position (context (), + unsmob_duration (note->get_property ("duration"))); SCM position = scm_cons (scm_from_int (barnum), end_mp.smobbed_copy ()); SCM localsig = SCM_EOL; diff --git a/lily/context.cc b/lily/context.cc index 2f23024e2d..c2c4a06f71 100644 --- a/lily/context.cc +++ b/lily/context.cc @@ -709,6 +709,21 @@ measure_position (Context const *context) return m; } +/* Finds the measure position after a note of length DUR that + begins at the current measure position. */ +Moment +measure_position (Context const *context, Duration const *dur) +{ + Moment pos = measure_position (context); + Rational dur_length = dur ? dur->get_length () : Rational (0); + + Moment end_pos = pos.grace_part_ < Rational(0) + ? Moment(pos.main_part_, pos.grace_part_ + dur_length) + : Moment(pos.main_part_ + dur_length, 0); + + return end_pos; +} + int measure_number (Context const *context) { diff --git a/lily/include/context.hh b/lily/include/context.hh index f0cd67c314..9b58854dc8 100644 --- a/lily/include/context.hh +++ b/lily/include/context.hh @@ -9,12 +9,13 @@ #ifndef CONTEXT_HH #define CONTEXT_HH +#include "duration.hh" +#include "lily-proto.hh" #include "listener.hh" #include "moment.hh" +#include "scm-hash.hh" #include "std-vector.hh" #include "virtual-methods.hh" -#include "scm-hash.hh" -#include "lily-proto.hh" class Context { @@ -139,6 +140,7 @@ Grob *get_current_rest (Context *voice); DECLARE_UNSMOB (Context, context); Moment measure_position (Context const *context); +Moment measure_position (Context const *context, Duration const *dur); Rational measure_length (Context const *context); int measure_number (Context const *context); void set_context_property_on_children (Context *trans, SCM sym, SCM val); diff --git a/lily/scale.cc b/lily/scale.cc index 24abf335bc..aa17285510 100644 --- a/lily/scale.cc +++ b/lily/scale.cc @@ -19,7 +19,7 @@ LY_DEFINE (ly_make_scale, "ly:make-scale", 1, 0, 0, (SCM steps), "Create a scale. " - "The argument is a vector of natural numbers, each of which " + "The argument is a vector of rational numbers, each of which " "represents the number of tones of a pitch above the tonic.") { bool type_ok = scm_is_vector (steps); -- 2.39.2