init Recording_group_engraver twice.
+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 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.
@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.
@macro refbugs
@noindent
-@heading Bugs
+@subsubheading Bugs
@end macro
@macro seealso
@noindent
-@heading See also
+@subsubheading See also
@end macro
@macro refcommands
@noindent
-@heading Predefined commands
+@subsubheading Predefined commands
@end macro
@macro syntax
@noindent
-@heading Syntax
+@subsubheading Syntax
@end macro
\StaffContext
\consists Custos_engraver
}
-raggedright = ##t
+ raggedright = ##t
}
}
@end lilypond
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,
+
@node Horizontal spacing
@subsection Horizontal Spacing
MAJOR_VERSION=2
MINOR_VERSION=1
PATCH_LEVEL=26
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=hwn1
void
programming_error (String s)
{
- message (_f ("programming error: %s (Continuing; cross thumbs)\n",
+ message (_f ("programming error: %s (Continuing; crossing fingers)\n",
s.to_str0 ()));
}
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;
class Timing_translator : public virtual Translator
{
public:
- // VIRTUAL_COPY_CONS (Translator);
TRANSLATOR_DECLARATIONS(Timing_translator);
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::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));
}
void
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)
(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))
- (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))
- (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)
- ((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 (attached-to-stem slur dir)
+ ((and (memq (ly:spanner-get-bound slur dir)
+ (ly:grob-property slur 'note-columns))
(ly:grob? stem)
- (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)
- (ly:grob-property slur 'direction)))
+ (ly:grob-property slur 'direction))
+ )
'stem)
- ((not (attached-to-stem slur dir)) 'loose-end)
- (else 'head))
+ ((not (attached-to-stem slur dir))
+ 'loose-end)
+ (else
+ 'head))
))