@item @uref{../user/out-www/lilypond/lilypond.html,LilyPond reference manual}
also available in @uref{../user/out-www/lilypond.ps.gz,Postscript}
@item LilyPond @uref{../user/out-www/lilypond-internals/lilypond-internals.html,internals}
+@item @uref{../user/out-www/features/features.html, LilyPond features}
+work in progress, to me merged with reference manual.
@item @uref{../user/out-www/glossary.html,A glossary of musical
terms}, includes translations. Also available in @uref{../user/out-www/glossary.ps.gz,Postscript})
@item @uref{../user/out-www/lilypond-book.html,lilypond-book}, a tool for
@lilypondfile{beam-length.ly}
+@lilypondfile{beam-dir-function.ly}
+
@lilypondfile{triplets.ly}
+
@lilypondfile{slur-nice.ly}
@lilypondfile{slur-symmetry.ly}
@lilypondfile{slur-symmetry-1.ly}
# The next version of makeinfo should split html files into their own
# directory. For now available only as patches from
# http://appel.lilypond.org/software
-SPLITTING_MAKEINFO = $(shell makeinfo --version | grep 4.0.jcn2)
+SPLITTING_MAKEINFO = $(shell makeinfo --version | grep '4.0.jcn[2,3]')
# Generic rule using % twice not possible?
ifneq ($(SPLITTING_MAKEINFO),)
-DEEP_HTML_FILES = $(outdir)/lilypond/lilypond.html $(outdir)/lilypond-internals/lilypond-internals.html
+DEEP_HTML_FILES = $(outdir)/lilypond/lilypond.html $(outdir)/lilypond-internals/lilypond-internals.html $(outdir)/features/features.html
else
--- /dev/null
+\header{
+texidoc="
+Adding a @code{Bar_engraver} to the LyricsVoice context makes sure that
+lyrics don't collide with barlines.
+";
+}
+
+\score {
+ \context StaffGroup <
+ \notes \context Staff {
+ b1 b1 \bar "|.";
+ }
+ \lyrics\context Lyrics <
+ \context LyricsVoiceWithBars {
+% thisContextHasSpanBarEngraver1 added
+ ThisContextCertainlyHasSpanBarEngraverAddedButTheresSomethingFunny1. Here.
+ }
+ \context LyricsVoice {
+ this4 one has no SpanBarEngraverAddedToContext1
+ }
+ >
+ \notes \context Staff = SB { b1 b1 }
+ >
+ \paper {
+ linewidth = -1.0\cm;
+ \translator {
+ \LyricsContext
+ \consists "Span_bar_engraver";
+ \accepts "LyricsVoiceWithBars";
+ }
+ \translator {
+ \LyricsVoiceContext
+ \name "LyricsVoiceWithBars";
+ }
+ \translator {
+ \LyricsVoiceContext
+ }
+ }
+}
--- /dev/null
+\include "paper20.ly"
+Sopnotes = \notes {
+ \time 4/4;
+ \key g \major;
+ \clef treble;
+ \partial 8 * 3;
+ e'8 f'8 g'8 |
+ d'8 d'16 d'16 e'8. e'16 g'8 g'8 f'8 f'8
+}
+
+\score {
+ \notes
+ <
+ \context Staff="sop"
+ <
+ \$Sopnotes
+ >
+ >
+ \paper {
+ \translator {
+ \StaffContext
+ autoBeamSettings \override #'(end * * * * ) = #(make-moment 1 8)
+ }
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Arg, right ending of slur is too far right. I did make a better
+test .ly for this, but can't seem to find it now.
+";
+}
+
+\score {
+ \notes \relative c'' {
+ \property Voice.Stem \set #'direction = #1
+ \property Voice.Slur \set #'direction = #1
+ d,32( d'4 )d8..
+ \property Voice.Slur \set #'attachment = #'(stem . stem)
+ d,32( d'4 )d8..
+ }
+ \paper {
+ linewidth = -1.;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+There are several ways to calculate the direction of a beam
+
+@table @samp
+@item majority
+number count of up or down notes
+@item mean
+mean centre distance of all notes
+@item median
+mean centre distance weighted per note
+@end table
+
+We should see:
+
+ up down down
+
+ up up down
+";
+}
+
+\score {
+ \notes \relative c'' {
+ % the default
+ %\property Voice.Beam \set #'dir-function = #beam-dir-majority
+ [d8 a]
+ \property Voice.Beam \set #'dir-function = #beam-dir-mean
+ [d a]
+ \property Voice.Beam \set #'dir-function = #beam-dir-median
+ [d a]
+
+ \property Voice.Beam \set #'dir-function = #beam-dir-majority
+ \time 3/8;
+ [d8 a a]
+ \property Voice.Beam \set #'dir-function = #beam-dir-mean
+ [d a a]
+ \property Voice.Beam \set #'dir-function = #beam-dir-median
+ [d a a]
+ }
+}
}
\lyrics\context Lyrics <
\context LyricsVoiceWithBars {
- thisContextHasSpanBarEngraver1 added
+% thisContextHasSpanBarEngraver1 added
+ ThisContextCertainlyHasSpanBarEngraverAddedButTheresSomethingFunny1. Here.
}
\context LyricsVoice {
this4 one has no SpanBarEngraverAddedToContext1
Rational r;
if (moment)
- r = unsmob_moment (get_property ("measurePosition"))->mod_rat (moment);
+ {
+ /* Ugh? measurePosition can be negative, when \partial
+ We may have to fix this elsewhere (timing translator)
+ r = unsmob_moment (get_property ("measurePosition"))->mod_rat (moment);
+ */
+ Moment pos = * unsmob_moment (get_property ("measurePosition"));
+ if (pos < Moment (0))
+ {
+ Moment length = * unsmob_moment (get_property ("measureLength"));
+ pos = length - pos;
+ }
+ r = pos.mod_rat (moment);
+ }
else
{
if (dir == START)