NAME = documentation
LANGS = $(shell $(PYTHON) $(top-src-dir)/python/langdefs.py)
-MANUALS_SUBDIRS = application contributor essay general learning notation
+MANUALS_SUBDIRS = application automated-engraving contributor essay general learning notation
SUBDIRS = $(MANUALS_SUBDIRS) snippets logo pictures misc po css $(LANGS)
STEPMAKE_TEMPLATES = documentation texinfo tex omf
LOCALSTEPMAKE_TEMPLATES = lilypond ly
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+ Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+@ignore
+hmm, the one big page is too big, but it was really inviting to
+ read. this is not. maybe just scrap this menu and introduction
+ to index?
+@end ignore
+
+@setfilename automated-engraving.info
+@settitle Obsessed with putting ink on paper
+@documentencoding UTF-8
+@documentlanguage en
+
+@set web
+@include macros.itexi
+
+@afourpaper
+
+@ifnottex
+@node Top
+@top
+@chapheading
+@end ifnottex
+
+@unnumberedsec What is behind LilyPond?
+
+@sourceimage{hader-collage,,,.jpeg}
+
+LilyPond is not unique in making music notation: there are a lot of
+programs that print music, and nowadays most of the newly printed
+music is made with computers. Unfortunately, that also shows: just
+ask any musician that plays classical music: new scores do not look as
+nice as old ones.
+
+What is the difference between hand-work and machine work, and what
+ has caused it? How can we improve the situation? This essay explains
+ problems in music notation (software), and our approach to solving
+ them.
+
+@menu
+* introduction:: Introduction -- what's wrong with computer music notation.
+* software:: What's wrong with software -- or how Finale is not the end-all of music software.
+* problem-statement:: How not to design software -- or modeling music notation.
+* divide-and-conquer:: Divide and conqueror -- a blue print for automated notation.
+* implementing-notation:: Impressive, but does it also work in theory -- a practical approach to capturing notation.
+* engraving:: Music engraving -- the art of printing music.
+* implementing-typography:: Implementing typography -- hackers attack the engraving problem.
+* formatting-architecture:: A flexible program architecture -- lets us write engraving software
+* scoring-esthetics:: Beautiful numbers -- how LilyPond participates in the Miss World contests.
+* benchmarking:: Notation benchmarking -- is a flexible architecture enough?
+* schubert:: Notation benchmarking -- project too?
+* typography-features:: Typographical features -- unique to LilyPond.
+* input-format:: Input format -- how to enter music.
+* conclusion:: Conclusion.
+@end menu
+
+@contents
+
+@c This essay is also available in @ref{big-page.html,one big page}.
+
+@include automated-engraving/introduction.itexi
+@include automated-engraving/software.itexi
+@include automated-engraving/problem-statement.itexi
+@include automated-engraving/divide-and-conquer.itexi
+@include automated-engraving/implementing-notation.itexi
+@include automated-engraving/engraving.itexi
+@include automated-engraving/implementing-typography.itexi
+@include automated-engraving/formatting-architecture.itexi
+@include automated-engraving/scoring-esthetics.itexi
+@include automated-engraving/benchmarking.itexi
+@include automated-engraving/schubert.itexi
+@include automated-engraving/typography-features.itexi
+@include automated-engraving/input-format.itexi
+@include automated-engraving/conclusion.itexi
+
+@bye
+
--- /dev/null
+depth = ../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
@divClass{float-center}
@divEnd
-@ref{pictures/baer-sarabande-hires.jpeg,
-@image{pictures/baer-sarabande,,,.png}}
+@c @ref{baer-sarabande-hires.jpeg,
+@sourceimage{baer-sarabande,,,.png}
+@c }
@divClass{float-center}
@divEnd
@divClass{float-center}
@divEnd
-@image{pictures/lily14-sarabande,,,.png}
+@sourceimage{lily14-sarabande,,,.png}
@divClass{float-center}
@divEnd
@divClass{float-center}
@divEnd
-@image{pictures/lily14-sarabande-correct,,,.png}
+@sourceimage{lily14-sarabande-correct,,,.png}
@divClass{float-center}
@divEnd
@divClass{float-center}
@divEnd
-@image{pictures/lily17-sarabande,,,.png}
+@sourceimage{lily17-sarabande,,,.png}
@divClass{float-center}
@divEnd
@divClass{float-center}
@divEnd
-@image{pictures/baer-sarabande,,,.png}
+@sourceimage{baer-sarabande,,,.png}
@divClass{float-center}
@divEnd
@divClass{float-right}
@divEnd
-Next: @ref{typography-features.html,Cool features},
+Next: @ref{typography-features,Cool features},
typographical hoops that we made LilyPond jump through.
@bye
We have shown you what engraved music should look like, and how we built
our software to emulate that look. We have put a lot of effort into
-building it. Thanks to all that hard work, you can @ref{@DEPTH@switch/tour.html,use the program to print nice music
-too}.
+building it. Thanks to all that hard work, you can
+
+FIXME
+
+@c @ref{@DEPTH@switch/tour.html,use the program to print nice music too}.
To complete the reading of this essay, you may want to have a look at
-@ref{@DEPTH@about/pubs.html,publications and articles},
-especially @ref{http://www.musicbyandrew.ca/finale-lilypond-1.html,Andrew
+
+FIXME
+
+@c @ref{@DEPTH@about/pubs.html,publications and articles},
+especially @uref{http://www.musicbyandrew.ca/finale-lilypond-1.html,Andrew
Hawryluk's writings}, which include Finale and LilyPond notation
benchmarking.
@divClass{float-right}
@divEnd
-Go @ref{index,back} to the index.
+@c Go @ref{Top,back} to the top.
@bye
@end ignore
-
+@node divide-and-conquer
@unnumberedsec Plan de campagne
Since content and form of a score are separate, we have to match that
in the design of software. Hence, the basic blueprint of our program
should follow this scheme
-@table asis
+@multitable @columnfractions .3 .3 .3
@item
-@tab
-
-@image{pictures/simple-notation,,,.png}
+@sourceimage{simple-notation,,,.png}
@tab
@tab
-@code{{ c'4 d'8 }}
+@code{@{ c'4 d'8 @}}
@item
-@tab
-
1. form
-@end table
+@end multitable
In effect, we are conquering the problem by dividing it into
subproblems
@divClass{float-right}
@divEnd
-Next: @ref{implementing-notation.html,Impressive, but does it also
+Next: @ref{implementing-notation,Impressive, but does it also
work in theory}? A practical approach to capturing notation.
@bye
version that you are working on. See TRANSLATION for details.
@end ignore
-
-
-
@node engraving
-
-
-@image{pictures/hader-slaan,,,.jpeg}
-
@unnumberedsec Music engraving
+@sourceimage{hader-slaan,,,.jpeg}
+
When we know what symbols to print, we have to decide where to put
them so the the result looks pleasing. This art is called @emph{music
@item
Finally, engraving is about selecting proper distance and
-blackness for scores. @image{pictures/stone-distance,,,.png} The
+blackness for scores. @sourceimage{stone-distance,,,.png} The
quality of the end result must be judged visually. This is virtually
impossible to capture in formal rules.
-@end itemize@*
+@end itemize
@divClass{float-right}
@divEnd
-Next: @ref{implementing-typography.html,Stamping computer
+Next: @ref{implementing-typography,Stamping computer
screens?}. Computer hackers take over the engraving business.
@divClass{float-center}
@divEnd
-@image{pictures/directions-updown,,,.png}
+@sourceimage{directions-updown,,,.png}
The process of formatting a score consists of reading and writing
object variables.
@divClass{float-center}
@divEnd
-@image{pictures/thickness-tweaks,,,.png}
+@sourceimage{thickness-tweaks,,,.png}
@item
Formatting rules are also preset variables: each object has
@divClass{float-center}
@divEnd
-@image{pictures/mc-squared,,,.png}
+@sourceimage{mc-squared,,,.png}
@end itemize
@divClass{float-right}
@divEnd
Next:
- @ref{scoring-esthetics.html,Beautiful numbers}: how
+ @ref{scoring-esthetics,Beautiful numbers}: how
LilyPond participates in the Miss World contests.
@bye
@divClass{float-center}
@divEnd
-@image{pictures/engraver-noteheads,,,.png}
+@sourceimage{engraver-noteheads,,,.png}
This plug-in creates graphical objects from musical events. People
that put graphics to musical ideas are called copyists or engravers,
@divClass{float-center}
@divEnd
-@image{pictures/engraver-staff,,,.png}
+@sourceimage{engraver-staff,,,.png}
@item
@divClass{float-center}
@divEnd
-@image{pictures/engraver-clef,,,.png}
+@sourceimage{engraver-clef,,,.png}
@divClass{float-center}
@divEnd
-@image{pictures/engraver-stem,,,.png}
+@sourceimage{engraver-stem,,,.png}
This engraver is notified of any note head coming along. Every time
one (or more, for a chord) note head is seen, a stem object is
@divClass{float-center}
@divEnd
-@image{pictures/engraver-slur,,,.png}
+@sourceimage{engraver-slur,,,.png}
@divClass{float-center}
@divEnd
-@image{pictures/engraver-acc,,,.png}
+@sourceimage{engraver-acc,,,.png}
The @code{Accidental_engraver} is the most complex plug-in: it has
to look at the key signature, note pitches, ties, and bar lines to
@end itemize
-@unnumberedsec Polyphonic notation
+@c @unnumberedsec Polyphonic notation
+@heading Polyphonic notation
The system shown in the last section works well for monophonic music,
but what about polyphony? In polyphonic notation, many voices can
@divClass{float-center}
@divEnd
-@image{pictures/engraver-final,,,.png}
+@sourceimage{engraver-final,,,.png}
In this situation, the accidentals and staff are shared, but the
stems, slurs, beams, etc. are private to each voice. Hence, engravers
@divClass{float-center}
@divEnd
-@image{pictures/engraver-score,,,.png}
+@sourceimage{engraver-score,,,.png}
@divClass{float-right}
@divEnd
-Next: @ref{engraving.html,The art of stamping}:
+Next: @ref{engraving,The art of stamping}:
how @emph{did} they make hand-made music?
@bye
@divClass{float-right}
@divEnd
-Next: @ref{formatting-architecture.html,Program architecture,
+Next: @ref{formatting-architecture,Program architecture,
your flexible friend}: tuning, tweaking and developing typography
rules.
+++ /dev/null
-\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
-@ignore
- Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
- When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
-@end ignore
-
-@ignore
-hmm, the one big page is too big, but it was really inviting to
- read. this is not. maybe just scrap this menu and introduction
- to index?
-@end ignore
-
-@chapheading @qq{Obsessed with putting ink on paper}
-@node index
-
-@unnumberedsec What is behind LilyPond?
-
-
-@image{pictures/hader-collage,,,.jpeg}
-
-
-
-LilyPond is not unique in making music notation: there are a lot of
-programs that print music, and nowadays most of the newly printed
-music is made with computers. Unfortunately, that also shows: just
-ask any musician that plays classical music: new scores do not look as
-nice as old ones.
-
-What is the difference between hand-work and machine work, and what
- has caused it? How can we improve the situation? This essay explains
- problems in music notation (software), and our approach to solving
- them.
-
-@menu
-
-@itemize
- @item
-
- @ref{introduction.html,Introduction}: what's wrong with
- computer music notation.
-
-
- @item
-
- @ref{software.html,What's wrong with software}, or how
- Finale is not the end-all of music software.
-
-
- @item
-
- @ref{problem-statement.html,How not to design software},
- or: modeling music notation.
-
-
- @item
-
- @ref{divide-and-conquer.html,Divide and conqueror},
- A blue print for automated notation.
-
-
- @item
-
- @ref{implementing-notation.html,Impressive, but does it also
- work in theory}? A practical approach to capturing notation.
-
- @item
-
- @ref{engraving.html,Music engraving}, the art of printing
- music.
-
-
-
- @item
-
- @ref{implementing-typography.html,Implementing typography}:
- hackers attack the engraving problem.
-
-
- @item
-
- @ref{formatting-architecture.html,A flexible program
- architecture} lets us write engraving software
-
-
- @item
-
- @ref{scoring-esthetics.html,Beautiful numbers}: how
- LilyPond participates in the Miss World contests.
-
-
- @item
-
- @ref{benchmarking.html,Notation benchmarking}: is a flexible
- architecture enough?
-
-
- @item
-
- @ref{typography-features.html,Typographical features} unique
- to LilyPond.
-
-
- @item
-
- @ref{input-format.html,Input format}: how to enter music.
-
-
- @item
-
- @ref{conclusion.html,Conclusion}
-
-
-@end itemize
-
-This essay is also available in @ref{big-page.html,one big
- page}.
-
-@bye
-
@divClass{float-center}
@divEnd
-@image{pictures/simple-notation,,,.png}
+@sourceimage{simple-notation,,,.png}
On a microscopic scale, such syntax is easy to use. On a larger scale,
syntax also needs structure. How else can you enter complex pieces
music expressions: by combining small fragments of music into larger
ones, more complex music can be expressed. For example,
-@table asis
+@multitable @columnfractions .5 .5
@item
-@tab
-
c4
@tab
-@image{pictures/simultaneous-0,,,.png}
+@sourceimage{simultaneous-0,,,.png}
-@end table
+@end multitable
-Combine this simultaneously with two other notes by enclosing in <<
-and >>.
+Combine this simultaneously with two other notes by enclosing in <<
+and >>.
-@table asis
-@item
+@multitable @columnfractions .5 .5
-@tab
+@item
@verbatim
- <<c4 d4 e4>>
+ <<c4 d4 e4>>
@end verbatim
@tab
-@image{pictures/simultaneous-1,,,.png}
+@sourceimage{simultaneous-1,,,.png}
-@end table
+@end multitable
This expression is put in sequence by enclosing it in braces, i.e.,
-@table asis
+@multitable @columnfractions .5 .5
@item
-@tab
@verbatim
- { <<c4 d4 e4>> f4 }
+ { <<c4 d4 e4>> f4 }
@end verbatim
@tab
-@image{pictures/simultaneous-2,,,.png}
+@sourceimage{simultaneous-2,,,.png}
-@end table
+@end multitable
The above is another expression, and therefore, it may be combined
again with a simultaneous expression (in this case, a half note).
-@table asis
+@multitable @columnfractions .5 .5
@item
-@tab
-
@verbatim
-<< { <<c4 d4 e4>> f4 } g2 >>
+<< { <<c4 d4 e4>> f4 } g2 >>
@end verbatim
@tab
-@image{pictures/simultaneous-3,,,.png}
+@sourceimage{simultaneous-3,,,.png}
-@end table
+@end multitable
Such recursive structures can be specified neatly and formally in a
@emph{context-free grammar}. The parsing code is also generated
illustrated by the line-counts for the respective components: parsing
and representation take up less than 10% of the code.
-@table asis
-@item
+@multitable @columnfractions .5 .5
@item
Parsing + representation
+@tab
@item
total
-
-
-@item
-
@tab
+@item
6000 lines C++
-
@tab
61500 lines C++
+@end multitable
-
-@end table
-
-<! todo :
+@ignore
+ TODO :
blurbs about lilypond today
future?
- >
+@end ignore
@divClass{float-right}
@divEnd
-Next: @ref{conclusion.html,wrapping it up}, the conclusion.
+Next: @ref{conclusion,wrapping it up}, the conclusion.
@bye
the looks of both pages sink in. Which one do you like better, and
why?
-@table asis
+@ifnottex
+@multitable @columnfractions .5 .5
@item
-@tab
-@image{pictures/baer-suite1-fullpage,,,.png}
+@sourceimage{baer-suite1-fullpage,,,.png}
@tab
-@image{pictures/henle-suite1-fullpage,,,.png}
+@sourceimage{henle-suite1-fullpage,,,.png}
@item
-@tab
B@"arenreiter (BA 320, (c) 1950)
@tab
Henle (nr. 666 (c) 2000)
-
-
-@end table
+@end multitable
+@end ifnottex
The left picture looks nice: it has flowing lines and movement. It's
music, and it's alive. Now, the picture on the right shows the same
@divClass{float-center}
@divEnd
-@image{pictures/baer-suite1-line,,,.png}
+@sourceimage{baer-suite1-line,,,.png}
@divClass{float-center}
@divEnd
@divClass{float-center}
@divEnd
-@image{pictures/henle-suite1-line,,,.png}
+@sourceimage{henle-suite1-line,,,.png}
@divClass{float-center}
@divEnd
@divClass{float-right}
@divEnd
-Next: @ref{software.html,What's wrong with software}, or how
+Next: @ref{software,What's wrong with software}, or how
Finale is not the end-all of music software.
+++ /dev/null
-\input texinfo @c -*-texinfo-*-
-@c %**start of header
-@setfilename introduction
-@settitle What's wrong with computer music notation?
-@c %**end of header
-
-@node Top
-
- We like to call LilyPond an "automated engraving system." It will format music notation beautifully without requiring typographical expertise of its users.
-
- LilyPond is not unique in making music notation: there are a lot of programs that print music, and nowadays most of the newly printed music is made with computers. Unfortunately, that also shows: just ask any musician that plays classical music: new scores do not look as nice as old (from before, say, 1970) scores: the new ones have a bland, mechanical look. They are not at all pleasurable to play from.
-
- To illustrate this, take a look at the following examples. Both are editions of the 1st Cello Suite by J.S.Bach. The one on the left is a very beautifully hand-engraved edition from 1950, the one on the right is a typical contemporary computer product. Take a few seconds to let the looks of both pages sink in. Which one do you like better, and why?
-
-
-@table @asis
-
-@item
-
-
-@item Bärenreiter (BA 320, (c) 1950)
-Henle (nr. 666 (c) 2000)
-
-@end table
-
-
- The left picture looks nice: it has flowing lines and movement. It's music, and it's alive. Now, the picture on the right shows the same music, and it was written by Bach. His music surely has liveliness and flowing lines.... Except, the score doesn't show it: it looks rigid and mechanical. To understand better why that is, let's blow up a fragment of both pieces:
-
-
-
- Hand-made
-
-@
-
-
-
-
-Computer-made
-
- The location of the bar lines is a giveaway. In the new edition, both barlines are on exactly the same horizontal location. Also, the note heads are on the exact same horizontal location. When you look back at the whole page, you can easily verify that almost all barlines are in the same location, as are most of the note heads. The entire thing is spaced as if it were put to a big grid, which is what causes the mechanical impression.
-
- This is not the only error on this example, and more importantly, this piece is not the only one with typographical errors. Sadly, almost all music printed nowadays is full of basic typographical mistakes.
-
- Musicians are usually more absorbed with performing the music than with studying its looks, so this nitpicking about typographical details may seem academical. That is not justified. This piece here has a monotonous rhythm. If all lines look the same, they become like a labyrinth. If the musician looks away once or has a lapse in his concentration, he will be lost on the page.
-
- In general, this is a common characteristic of typography. Layout should be pretty, not only for its own sake, but especially because it helps the reader in his task. For performance material like sheet music, this is doubly important: musicians have a limited amount of attention. The less attention they need for reading, the more they can focus on playing itself. In other words, better typography translates to better performances.
-
- Next: What's wrong with software, or how Finale is not the end-all of music software.
-@contents
-@bye
pattern. Consider the example below, with two staves containing two
measures.
-@image{pictures/naive-notation,,,.png}
+@sourceimage{naive-notation,,,.png}
Isn't writing software all about finding hierarchies and modeling the
real world in terms of trees? In the view of a naive programmer, the
above fragment of notation is easily abstracted to a nested set of
boxes
-@image{pictures/naive-notation-uml,,,.png}
+@sourceimage{naive-notation-uml,,,.png}
It's easy to follow this model when writing software. It's obvious
how to store this data in memory, and writing on disk can be easily
@verbatim
- <score>
- <staff>
- <measure id="1">
- <chord length="1/2">
- <pitch name="c">
- </chord>
- <chord>
+ <score>
+ <staff>
+ <measure id="1">
+ <chord length="1/2">
+ <pitch name="c">
+ </chord>
+ <chord>
....
- </measure>
- </staff>
- </score>
+ </measure>
+ </staff>
+ </score>
@end verbatim
hierarchical representation works for a lot of simpler music, but it
falls apart for advanced use. Consider the following example:
-@image{pictures/nonnaive-notation,,,.png}
+@sourceimage{nonnaive-notation,,,.png}
In this example, several assumptions of the previous model are
violated: staves start and stop at will, voices jump around between
@divClass{float-right}
@divEnd
-Next: @ref{divide-and-conquer.html,Divide and conqueror},
+Next: @ref{divide-and-conquer,Divide and conqueror},
a blue print for automated notation
@bye
@end ignore
-
+@node schubert
@unnumberedsec S@"angers Morgenlied, by Franz Schubert
The benchmarking project for the LilyPond 2.1.x series, was the
The result of 2.1.5 was nice, but certainly not perfect,
-@image{pictures/bench-morgenlied,,,.png}
+@sourceimage{bench-morgenlied,,,.png}
Here is the original,
-@image{pictures/morgenlied-crop-2,,,.jpeg}
+@sourceimage{morgenlied-crop-2,,,.jpeg}
and the result of LilyPond 2.1.35.
-@image{pictures/morgenlied-ly-crop2,,,.png}
+@sourceimage{morgenlied-ly-crop2,,,.png}
This is a page from a song-book, which is printed in a smaller format.
Normal print uses 20 pt staff height, this uses 17 pt. In smaller
due to the limited resolution of computer screens. For a more detailed
view, see the LilyPond PDF, available
-@ref{@@DOC@@v2.2/input/mutopia/F.Schubert/out-www/morgenlied.pdf,here}.
+@uref{http://lilypond.org/documentation/v2.2/input/mutopia/F.Schubert/out-www/morgenlied.pdf,here}.
@divClass{float-right}
@divEnd
-@ref{benchmarking.html,Back to the essay}
-
-
-
-
-
+@ref{benchmarking,Back to the essay}
@bye
@end ignore
-
+@node scoring-esthetics
@unnumberedsec Beautiful numbers
How do we actually make formatting decisions? In other words, which
of the three configurations should we choose for the following slur?
-@image{pictures/slur-esthetics,,,.png}
+@sourceimage{slur-esthetics,,,.png}
There are a few books on the art of music engraving
available. Unfortunately, they contain rules of simple thumbs and some
@divClass{float-center}
@divEnd
-@image{pictures/ross-beam-scan,,,.jpeg}
+@sourceimage{ross-beam-scan,,,.jpeg}
@divClass{float-center}
@divEnd
same as a beauty contest: for each possible configuration, we compute an
ugliness score. Then we choose the least ugly configuration.
-@image{pictures/slur-esthetics-annotate-1,,,.png}
+@sourceimage{slur-esthetics-annotate-1,,,.png}
For example, in the above configuration, the slur nicely connects the
starting and ending note of the figure, a desirable trait. However, it
Therefore, for this configuration, we deduct a `variance' score of
15.39.
-@image{pictures/slur-esthetics-annotate-2,,,.png}
+@sourceimage{slur-esthetics-annotate-2,,,.png}
In this configuration, the slur keeps a uniform distance from the
heads, but we have to deduct some points because the slur doesn't
Furthermore, the slur goes up, while the melody goes down. This incurs
a penalty of 2.00 points
-@image{pictures/slur-esthetics-annotate-3,,,.png}
+@sourceimage{slur-esthetics-annotate-3,,,.png}
Finally, in this configuration, only the ending the slur is far away
from the ending note head, at a score of 10.04 ugliness points.
@item
determining beam slopes
-@image{pictures/beam-scoring-example,,,.png}
+@sourceimage{beam-scoring-example,,,.png}
@item
formatting tied chords
-@image{pictures/ties-scoring-example,,,.png}
+@sourceimage{ties-scoring-example,,,.png}
@item
formatting dotted chords
@divClass{float-right}
@divEnd
-Next: @ref{benchmarking.html,Man is the measure of things}: is a
+Next: @ref{benchmarking,Man is the measure of things}: is a
flexible architecture enough?
@bye
@divClass{float-center}
@divEnd
-@image{pictures/finale-sarabande-full,,,.png}
+@sourceimage{finale-sarabande-full,,,.png}
This example far surpasses the previous one when it comes to
formatting errors: there are serious errors in literally
@divClass{float-center}
@divEnd
-@image{pictures/finale-flat-detail,,,.png}
+@sourceimage{finale-flat-detail,,,.png}
The errors go down to the teensy details: below is a blowup of the
beam in that measure. Of course, in proper typography the beam should
@divClass{float-center}
@divEnd
-@image{pictures/finale-beam-detail,,,.png}
+@sourceimage{finale-beam-detail,,,.png}
Now, one could refute that Finale has a graphical interface, and it
lets you easily move about elements to correct errors, or use plug-ins
@divClass{float-center}
@divEnd
-@image{pictures/finale-flat-correct,,,.png}
+@sourceimage{finale-flat-correct,,,.png}
Unless you are an expert, typographical errors will irk you without
being obvious. Many of them will go uncorrected and will still be in the
@divClass{float-right}
@divEnd
-Next: @ref{problem-statement.html,How not to design software},
+Next: @ref{problem-statement,How not to design software},
or: modeling music notation.
match that, the overall impression is much stronger. This is also very
clear from the following blowups:
-@table asis@item
-@tab
+@multitable @columnfractions .3 .3 .3
+@item
-@image{pictures/henle-flat-gray,,,.png}
+@sourceimage{henle-flat-gray,,,.png}
@tab
-@image{pictures/baer-flat-gray,,,.png}
+@sourceimage{baer-flat-gray,,,.png}
@tab
-@image{pictures/lily-flat-bw,,,.png}
+@sourceimage{lily-flat-bw,,,.png}
@item
-
-@tab
Henle (2000)
@tab
-@end table
+@end multitable
Another typical aspect of hand-engraved scores is the general look of
the symbols. They almost never have sharp corners. This is because
-@unnumberedsec Spacing
+@c @unnumberedsec Spacing
+@heading Spacing
One of the problems that the Bach piece above inspired us to attack
is the spacing engine. One of its features is optical spacing.
@divClass{float-center}
@divEnd
-@image{pictures/spacing-with-corr,,,.png}
+@sourceimage{spacing-with-corr,,,.png}
@divClass{float-center}
@divEnd
-@image{pictures/spacing-no-corr,,,.png}
+@sourceimage{spacing-no-corr,,,.png}
This fragment only uses quarter notes: notes that are played in a
constant rhythm. The spacing should reflect that. Unfortunately, the
down-stem/up-stems combinations form clumps of notes.
-@unnumberedsec Ledger lines
+@c @unnumberedsec Ledger lines
+@heading Ledger lines
Ledger lines are typographically difficult. They can easily blot
together with other signs, such as ledger lines or
lines wider (thus taking up more space), or shortening ledger lines
(which hampers readability.)
-@table asis@item
-@tab
+@multitable @columnfractions .3 .3 .3
+@item
-@image{pictures/henle-ledger,,,.png}
+@sourceimage{henle-ledger,,,.png}
@tab
-@image{pictures/baer-ledger,,,.png}
+@sourceimage{baer-ledger,,,.png}
@tab
-@image{pictures/lily-ledger,,,.png}
+@sourceimage{lily-ledger,,,.png}
@item
-
-@tab
Henle (2000)
@tab
-@end table
+@end multitable
Traditional engravers would adjust the size of a ledger line,
depending on what symbols were in the neighborhood. LilyPond does the
@divClass{float-right}
@divEnd
-Next: @ref{input-format.html,Use the Source, Luke}, or: what
+Next: @ref{input-format,Use the Source, Luke}, or: what
goes into LilyPond.
@bye
# FIXME: Hardcoded file names!?
manuals_subdirectories_re = \
- re.compile ('(application|essay|general|learning|notation)/')
+ re.compile ('(application|automated-engraving|essay|general|learning|notation)/')
def add_old_name (file_path):
for new_path in renames_map:
return 'href="' + os.path.join (source_val, m.group (1)) + '"'
# More hardcoding, yay!
-splitted_docs_re = re.compile ('(Documentation/out-www/(essay|notation|music-glossary|application|general|learning|snippets))/')
+splitted_docs_re = re.compile ('(Documentation/out-www/(automated-engraving|essay|notation|music-glossary|application|general|learning|snippets))/')
lily_snippets_re = re.compile ('(href|src)="(../lily-.*?|.*?[.]png)"')
pictures_re = re.compile ('src="(pictures/.*?)"')