'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
+ }
+}
// 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"
" '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);
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;
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;
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)
{
#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
{
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);