+1.4.1.jcn1
+==========
+
+* Fix for index, small doco fixes.
+
+* Bugfix: use roman font (instead of feta) for unacorda pedal.
+
+* Don't use cyclic symlinks for web doc.
+
+* Don't create `empty pngs' with touch, make symlinks instead.
+
+* Added extra header titling fields to ly2dvi too.
+
+1.4.1
+=====
+
1.4.0.jcn7
==========
@lilypondfile[printfilename]{tuplet-staffline-collision.ly}
+@lilypondfile[printfilename]{tuplet-nest.ly}
@section Property details
@section Comments
-LilyPond is a long way from finished and polished, so we please send
-your criticism, comments, bugreports, patches, etc., to the mailing
-list. and @emph{not} to us personally.
+LilyPond is a long way from finished and polished, so please send your
+criticism, comments, bugreports, patches, etc., to the mailing list,
+@emph{not} to us personally.
We have the following mailing lists:
-i\input texinfo @c -*-texinfo-*-
+\input texinfo @c -*-texinfo-*-
@setfilename index.info
@settitle LilyPond homepage
LilyPond input is @b{plain text}. So, you can use your favorite text
editor to enter it, you can put it in mail or embed it in an article like
this:
+@quotation
@lilypond[fragment,verbatim, relative 1]
- \key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
-@end lilypond
+\key c \minor r8 c16 b c8 g as c16 b c8 d | g,4
+@end lilypond
+@end quotation
Or you can use it to print music from other programs, using one of the
numerous input filters.
LilyPond output looks @b{beautiful}. The font and the layout algorithms
were inspired by engraved music, so you can expect that same clear and
-elegant look from your LilyPond output. And if you don't like the
-looks, you can tweak almost everything.
+elegant look from your LilyPond output. And if anything is not to your
+liking, you can tweak almost everything.
LilyPond is @b{free software}. It is part of the
@uref{http://www.gnu.org/,GNU Project}. It is licensed under GNU General
Public License, so you can use, modify and redistribute the program with
-almost no restrictions. LilyPond is part of the
+almost no restrictions.
@unnumberedsec Want to know more?
# Generic rule using % twice not possible?
# $(outdir)/%/%.html: $(outdir)/%.texi
$(outdir)/lilypond/lilypond.html: $(outdir)/lilypond.texi
+ mkdir -p $(dir $@)
$(MAKEINFO) --output=$@ --html $<
-cp -f $(outdir)/*.png $(outdir)/lilypond
-cp -f $(outdir)/lilypond/index.html $@
$(deep-footify) $(shell find $(outdir)/$(*F)/*.html)
$(outdir)/lilypond-internals/lilypond-internals.html: $(outdir)/lilypond-internals.texi
+ mkdir -p $(dir $@)
$(MAKEINFO) --output=$@ --html $<
-cp -f $(outdir)/*.png $(outdir)/lilypond-internals
-cp -f $(outdir)/lilypond-internals/index.html $@
$(deep-footify) $(shell find $(outdir)/$(*F)/*.html)
-
ifeq ($(SPLITTING_MAKEINFO),yes)
DEEP_HTML_FILES = $(outdir)/lilypond/lilypond.html $(outdir)/lilypond-internals/lilypond-internals.html
-local-WWW: rm-deep-symlinks
-
-rm-deep-symlinks:
- cd $(outdir) && rm -f lilypond lilypond-internals; true
-
else
-DEEP_HTML_FILES = $(outdir)/lilypond.html $(outdir)/lilypond-internals.html
-
# Links referred to by Documentation index
LILYPOND_LINKS=Reference-Manual.html Tutorial.html Ly2dvi.html Midi2ly.html
local-WWW: deep-symlinks
deep-symlinks:
- cd $(outdir) && rm -f lilypond && ln -s . lilypond
- cd $(outdir) && rm -f lilypond-internals && ln -s . lilypond-internals
- cd $(outdir) && $(foreach i, $(LILYPOND_LINKS),\
+ mkdir -p $(outdir)/lilypond
+ cd $(outdir)/lilypond && $(foreach i, $(LILYPOND_LINKS),\
rm -f $(i) && ln -s lilypond.html $(i) &&) true
+
endif
@ifnottex
@macro reng {word}
-@ref{ (lilypond-internals)\word\, \word\ },
+@ref{ (lilypond-internals)\word\, \word\ }
@end macro
@end ifnottex
@iftex
@macro reng {word}
\word\
-
@end macro
@end iftex
@ifnottex
@macro rgrob {word}
-@ref{ (lilypond-internals)\word\, \word\ },
+@ref{ (lilypond-internals)\word\, \word\ }
@end macro
@end ifnottex
@iftex
@macro rgrob {word}
\word\
-
@end macro
@end iftex
@ifnottex
@macro rint {word}
-@ref{ (lilypond-internals)\word\, \word\ },
+@ref{ (lilypond-internals)\word\, \word\ }
@end macro
@end ifnottex
@iftex
@macro rint {word}
\word\
+@end macro
+@end iftex
+@ifnottex
+@macro texisharp {word}
+#
+@end macro
+@end ifnottex
+
+@iftex
+@macro texisharp {word}
+@tex
+$\\sharp$
+@end tex
+@end macro
+@end iftex
+
+@ifnottex
+@macro texiflat {word}
+b
+@end macro
+@end ifnottex
+
+@iftex
+@macro texiflat {word}
+@tex
+$\\flat$
+@end tex
@end macro
@end iftex
@end quotation
@separate
-A sharp is made by adding ``@code{is}'', a flat by adding ``@code{es}'':
+A sharp (@texisharp{}) is made by adding ``@code{is}'', a flat
+(@texiflat{}) by adding ``@code{es}'':
@quotation
@example
@end lilypond
@end quotation
+@c accidentals...
There are some interesting points to note in this example. Firstly,
-accidentals don't have to be marked explicitly: you just enter the
-pitch, and LilyPond determines whether or not to print an accidental.
-Secondly, bar lines and beams are drawn automatically. Thirdly,
-LilyPond calculates line breaks for you; it doesn't matter where you
-make new lines in the source file.
+accidentals (sharps and flats) don't have to be marked explicitly: you
+just enter the note name, and LilyPond determines whether or not to
+print an accidental. Secondly, bar lines and beams are drawn
+automatically. Thirdly, LilyPond calculates line breaks for you; it
+doesn't matter where you make new lines in the source file.
The example also indicates that a piece of music written in a high
register needs lots of quotes. This makes the input a bit unreadable,
@quotation
@lilypond[fragment,relative 1, verbatim]
-c8( cis d )e
+d4( )c16( cis d e c cis d )e( )d4
@end lilypond
@end quotation
@separate
MAJOR_VERSION=1
MINOR_VERSION=4
PATCH_LEVEL=1
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=jcn1
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
--- /dev/null
+\header {
+ texidoc="Manual hack for nested tuplets"
+}
+
+#(define (make-text-checker-once text)
+ (lambda (grob) (and text-checker-once
+ (if (equal? text (ly-get-grob-property grob 'text))
+ (begin
+ (set! text-checker-once #f) #t)
+ #f))))
+
+#(define text-checker-once #t)
+
+\score {
+ \notes\relative c'' {
+
+ \property Voice.tupletNumberFormatFunction = #fraction-tuplet-formatter
+
+ \outputproperty #(make-text-checker-once "2:3")
+ #'extra-offset = #'(0 . 1)
+ \times 2/3 {
+ \times 2/3 {
+ a a a
+ }
+ \times 3/5 {
+ a a a a a
+ }
+ }
+ }
+ \paper { linewidth = -1. }
+}
--- /dev/null
+\header {
+texidoc="Octave duplicate parts of music"
+}
+
+upperOne = \notes\relative c'' {
+ a4 a a a
+ a4 a a a
+ a4 a a a
+ a4 a a a
+}
+
+upperOctave = \notes <
+ \context Thread=upperOne { \transpose c \upperOne }
+ \context Thread=upperOne {
+ \property Thread.devNullThread = #'allways s1*2
+ \property Thread.devNullThread = #'() s1*2
+ }
+>
+
+lowerOne = \notes\relative c {
+ a8 a a a a a a a
+ a8 a a a a a a a
+ a8 a a a a a a a
+ a8 a a a a a a a
+}
+
+firstEight = \notes {
+ \property Thread.devNullThread = #'() s8
+ \property Thread.devNullThread = #'allways s8*7
+}
+
+lowerOctave = \notes <
+ \context Thread=lowerOne { \transpose c \lowerOne }
+ \context Thread=lowerOne {
+ \repeat "unfold" 4 { \firstEight }
+ }
+>
+
+\score {
+ <
+ \context PianoStaff <
+ \context Staff=upper <
+ \context Voice=upperOne <
+ \upperOne
+ \upperOctave
+ >
+ >
+ \context Staff=lower <
+ \clef bass
+ \context Voice=lowerOne <
+ \lowerOne
+ \lowerOctave
+ >
+ >
+ >
+ >
+ \paper { }
+}
$(outdir)/%.gif: $(outdir)/%.ps
sh $(PS_TO_GIFS) $<
-mv $(name-stem)-page*.gif $(outdir)/
- touch $@
+# touch $@
+ ln -s $(outdir)/$(name-stem)-page1.gif $@
$(outdir)/%.png: $(outdir)/%.ps
sh $(PS_TO_PNGS) $<
-mv $(name-stem)-page*.png $(outdir)/
- touch $@
+# touch $@
+ ln -s $(outdir)/$(name-stem)-page1.png $@
$(outdir)/%.ly.txt: %.ly
ln -f $< $@
(UnaCordaPedal . (
(molecule-callback . ,Text_item::brew_molecule)
+ (font-family . roman)
(font-shape . italic)
(no-spacing-rods . #t)
(self-alignment-X . 0)
return s
-layout_fields = ['title', 'subtitle', 'subsubtitle', 'footer', 'head',
- 'composer', 'arranger', 'instrument', 'opus', 'piece', 'metre',
- 'meter', 'poet']
+layout_fields = ['dedication', 'title', 'subtitle', 'subsubtitle',
+ 'footer', 'head', 'composer', 'arranger', 'instrument',
+ 'opus', 'piece', 'metre', 'meter', 'poet', 'texttranslator']
# init to empty; values here take precedence over values in the file