init Recording_group_engraver twice.
12 files changed:
+2004-02-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * lily/recording-group-engraver.cc (start_translation_timestep):
+ init Recording_group_engraver twice.
+
2004-02-23 Jan Nieuwenhuizen <janneke@gnu.org>
* gcc-3.4 snapshot: 3.4.0 20040215 (prerelease) compile fixes, and
2004-02-23 Jan Nieuwenhuizen <janneke@gnu.org>
* gcc-3.4 snapshot: 3.4.0 20040215 (prerelease) compile fixes, and
2004-02-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
2004-02-23 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * Documentation/user/invoking.itexi (Point and click): add index
+ entry.
+
+ * scm/slur.scm (calc-slur-extremity): use 'stem only if slur would
+ go under beam.
+
+ * lily/beam-quanting.cc: tune down ROUND_TO_ZERO_SLOPE, this fixes
+ sarabande beam.
+
+ * flower/warn.cc (programming_error): cross fingers not thumbs.
+
+ * lily/rest.cc (polyphonic_offset_callback): return 0 when
+ staff-position is set.
+
+ * VERSION: release 2.1.26
+
* scm/chord-entry.scm (construct-chord): process transposition
after processing explicit-11.
* scm/chord-entry.scm (construct-chord): process transposition
after processing explicit-11.
@section Point and click
@cindex poind and click
@section Point and click
@cindex poind and click
+@cindex source specials
+@cindex specials, source
+
Point and click lets you find notes in the input by clicking on them in
the Xdvi window. This makes it easier to find input that causes some
error in the sheet music.
Point and click lets you find notes in the input by clicking on them in
the Xdvi window. This makes it easier to find input that causes some
error in the sheet music.
@end macro
@macro seealso
@noindent
@end macro
@macro seealso
@noindent
@end macro
@macro refcommands
@noindent
@end macro
@macro refcommands
@noindent
-@heading Predefined commands
+@subsubheading Predefined commands
\StaffContext
\consists Custos_engraver
}
\StaffContext
\consists Custos_engraver
}
staves is fixed by setting @code{forced-distance}. If you want to
override this, use a @code{\translator} block as follows:
@example
staves is fixed by setting @code{forced-distance}. If you want to
override this, use a @code{\translator} block as follows:
@example
- \translator @{
- \PianoStaffContext
- VerticalAlignment \override #'forced-distance = #9
+ \paper @{
+ \translator @{
+ \PianoStaffContext
+ \override VerticalAlignment #'forced-distance = #9
+ @}
+ @dots{}
@}
@end example
This would bring the staves together at a distance of 9 staff spaces,
@}
@end example
This would bring the staves together at a distance of 9 staff spaces,
@node Horizontal spacing
@subsection Horizontal Spacing
@node Horizontal spacing
@subsection Horizontal Spacing
MAJOR_VERSION=2
MINOR_VERSION=1
PATCH_LEVEL=26
MAJOR_VERSION=2
MINOR_VERSION=1
PATCH_LEVEL=26
void
programming_error (String s)
{
void
programming_error (String s)
{
- message (_f ("programming error: %s (Continuing; cross thumbs)\n",
+ message (_f ("programming error: %s (Continuing; crossing fingers)\n",
const int MUSICAL_DIRECTION_FACTOR = 400;
const int IDEAL_SLOPE_FACTOR = 10;
const int MUSICAL_DIRECTION_FACTOR = 400;
const int IDEAL_SLOPE_FACTOR = 10;
-const Real ROUND_TO_ZERO_SLOPE = 0.05;
+const Real ROUND_TO_ZERO_SLOPE = 0.02;
const int ROUND_TO_ZERO_POINTS = 4;
extern bool debug_beam_quanting_flag;
const int ROUND_TO_ZERO_POINTS = 4;
extern bool debug_beam_quanting_flag;
class Timing_translator : public virtual Translator
{
public:
class Timing_translator : public virtual Translator
{
public:
- // VIRTUAL_COPY_CONS (Translator);
TRANSLATOR_DECLARATIONS(Timing_translator);
TRANSLATOR_DECLARATIONS(Timing_translator);
Recording_group_engraver::initialize ()
{
Engraver_group_engraver::initialize ();
Recording_group_engraver::initialize ()
{
Engraver_group_engraver::initialize ();
- accumulator_ = gh_cons (SCM_EOL, SCM_EOL);
+ accumulator_ = gh_cons (gh_cons (now_mom (). smobbed_copy (), SCM_EOL),
+ SCM_EOL);
}
Recording_group_engraver::Recording_group_engraver()
}
Recording_group_engraver::Recording_group_engraver()
Recording_group_engraver::start_translation_timestep ()
{
Engraver_group_engraver::start_translation_timestep();
Recording_group_engraver::start_translation_timestep ()
{
Engraver_group_engraver::start_translation_timestep();
-
- scm_set_car_x (accumulator_, gh_cons (now_mom ().smobbed_copy (), SCM_EOL));
+
+
+ /*
+ We have to do this both in initialize() and
+ start_translation_timestep(), since start_translation_timestep()
+ isn't called on the first time-step.g
+ */
+ if (!gh_pair_p (gh_car (accumulator_)))
+ scm_set_car_x (accumulator_, gh_cons (now_mom ().smobbed_copy (), SCM_EOL));
Rest::polyphonic_offset_callback (SCM smob, SCM)
{
Grob* me = unsmob_grob (smob);
Rest::polyphonic_offset_callback (SCM smob, SCM)
{
Grob* me = unsmob_grob (smob);
+ if (gh_number_p (me->get_property ("staff-position")))
+ return gh_double2scm (0);
+
Direction d = get_grob_direction (me);
Real off = 2* d ;
if(off)
Direction d = get_grob_direction (me);
Real off = 2* d ;
if(off)
(define (attached-to-stem slur dir)
(let* ((note-columns (ly:grob-property slur 'note-columns))
(define (attached-to-stem slur dir)
(let* ((note-columns (ly:grob-property slur 'note-columns))
- (col (if (= dir 1) (car note-columns) (car (last-pair note-columns))))
+ (col (if (= dir RIGHT)
+ (car note-columns)
+ (car (last-pair note-columns))))
(stem (ly:grob-property col 'stem)))
(and
(eq? col (ly:spanner-get-bound slur dir))
(stem (ly:grob-property col 'stem)))
(and
(eq? col (ly:spanner-get-bound slur dir))
- (ly:grob? stem)
- (ly:grob-property stem 'heads))))
+ ;(ly:grob? stem)
+ ;(pair? (ly:grob-property stem 'heads))
+
+ )))
;;
(define (calc-slur-extremity slur dir)
(let* ((note-columns (ly:grob-property slur 'note-columns))
;;
(define (calc-slur-extremity slur dir)
(let* ((note-columns (ly:grob-property slur 'note-columns))
- (col (car (if (= dir 1) note-columns (reverse note-columns))))
- (stem (ly:grob-property col 'stem)))
-
+ (col (if (= dir 1)
+ (car note-columns)
+ (car (last-pair note-columns))))
+ (stem (ly:grob-property col 'stem))
+ (beaming (if (and (ly:grob? stem)
+ (ly:grob? (ly:grob-property stem 'beam)))
+ (ly:grob-property stem 'beaming)
+ '(() . ())))
+ (one-side-beaming (if (= dir RIGHT)
+ (car beaming)
+ (cdr beaming)))
+
+ )
(cond
((< (length note-columns) 1) 'head)
(cond
((< (length note-columns) 1) 'head)
- ((not (attached-to-stem slur dir)) 'loose-end)
+ ((not (attached-to-stem slur dir))
+
+ 'loose-end)
((and stem
(not (equal? (ly:grob-property slur 'direction)
(ly:grob-property stem 'direction)))) 'head)
((and stem
(not (equal? (ly:grob-property slur 'direction)
(ly:grob-property stem 'direction)))) 'head)
- ((and (attached-to-stem slur dir)
+ ((and (memq (ly:spanner-get-bound slur dir)
+ (ly:grob-property slur 'note-columns))
- (ly:grob? (ly:grob-property stem 'beam))
+
+ ;; slur would go under beam for 'head
+ (> (length one-side-beaming ) 0)
;; and beam on same side as slur
(equal?
(ly:grob-property stem 'direction)
;; and beam on same side as slur
(equal?
(ly:grob-property stem 'direction)
- (ly:grob-property slur 'direction)))
+ (ly:grob-property slur 'direction))
+ )
- ((not (attached-to-stem slur dir)) 'loose-end)
- (else 'head))
+ ((not (attached-to-stem slur dir))
+ 'loose-end)
+ (else
+ 'head))