X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fessay%2Fengraving.itely;h=410e631709d941588806f5bdb40c923428501ffa;hb=10455d930094f0a998fa9efc034825007abebdea;hp=baf8d60b2f396d4b41c109d7c71b4337026eabbf;hpb=42aeb12cd52eefe8fd99cdc6eba0def699d21196;p=lilypond.git diff --git a/Documentation/essay/engraving.itely b/Documentation/essay/engraving.itely index baf8d60b2f..410e631709 100644 --- a/Documentation/essay/engraving.itely +++ b/Documentation/essay/engraving.itely @@ -15,17 +15,132 @@ This section covers the overall goals and architecture of LilyPond. +@c TODO: +@c remove 3mm eps bounding box left padding for Sarabande (This will +@c require adding a new snippet option to lilypond-book.py +@c check formatting of HTML output +@c + +@c Notes: +@c Incorrect beaming in the Sarabande is a known bug. + @menu -* Engraving:: +* The LilyPond story:: +* Engraving details:: * Automated engraving:: * What symbols to engrave?:: * Music representation:: * Example applications:: +* Appendix:: @end menu +@node The LilyPond story +@unnumberedsec The LilyPond story + +Before LilyPond had a community of users around the world, before it had +been used to produce university course notes or world-premier opera +performance scores, before there was an essay on music engraving or any +computer code or even an organized team of developers, LilyPond began +with a question: -@node Engraving -@unnumberedsec Engraving +@quotation +Why does most computer output fail to achieve the beauty and balance of +a hand-engraved score? +@end quotation + +@noindent +Some of the answers can be found by examining the two scores +@ifnottex +below. +@end ifnottex +@iftex +on the following pages. +@end iftex +The first score is a beautiful hand-engraved score from 1950 and the +second is a modern, computer-engraved edition. + +@ifnottex +@noindent +Bärenreiter BA 320, @copyright{}1950: + +@sourceimage{baer-suite1-fullpage,,,png} + +@noindent +Henle no. 666, @copyright{}2000: + +@sourceimage{henle-suite1-fullpage,,,png} +@end ifnottex + +The notes here are identical, taken from Bach's first Suite for solo +cello, but the appearance is different, especially if you print them out +and veiw them from a distance. +@ifnottex +(The PDF version of this manual has high-resolution images suitable for +printing.) +@end ifnottex +Try reading or playing from each of the scores and you will find that +the hand-engraved score is more enjoyable to use. It has flowing lines +and movement, and it feels like a living, breathing piece of music, +while the newer edition seems cold and mechanical. + +It is kind of hard to immediately see what makes the difference with the +newer edition. Everything looks neat and tiny, possibly even ``better'' +because it looks more computerized and uniform. This really puzzled us +for quite a while. We wanted to improve computer notation, but we first +had to figure out what was wrong with it. + +The answer lies in the precise, mathematical uniformity of the newer +edition. Find the barline in the middle of each line: in the +hand-engraved score the position of these barlines has some natural +natural variation, while in the newer version they line up almost +perfectly. This is shown in these simplified page layout diagrams, +traced from the hand-engraved (left) and computer-generated music +(right): + +@quotation +@iftex +@sourceimage{pdf/page-layout-comparison,,,} +@end iftex +@ifnottex +@sourceimage{page-layout-comparison,,,png} +@end ifnottex +@end quotation +@noindent + +In the computer-generated output, even the individual noteheads are +aligned in vertical columns, making the contour of the melody disappear +into a rigid grid of musical markings. + +There are other differences as well: in the hand-engraved edition the +vertical lines are all stronger, the slurs lie closer to the noteheads, +and there is more visual variety in the placement of the beams. Although +such details may seem like nitpicking, the result is a score that is +easier to read. In the computer-generated output, each line is nearly +identical and if the musician looks away for a moment, she will be lost +on the page. + +LilyPond was designed to solve the problems we found in existing +software and to create beautiful music that mimics the finest +hand-engraved scores. Along the way, we have learned a great deal about +the work that goes into a well-engraved score. In this essay we describe +several of those aspects that we have tried to imitate in LilyPond. + +@iftex +@page +@noindent +Bärenreiter BA 320, @copyright{}1950: + +@sourceimage{baer-suite1-fullpage,16cm,,} +@page +@noindent +Henle no. 666, @copyright{}2000: +@sp 3 +@sourceimage{henle-suite1-fullpage,16cm,,} +@page +@end iftex + +@node Engraving details +@unnumberedsec Engraving details @cindex engraving @cindex typography, music @@ -33,100 +148,156 @@ LilyPond. @cindex plate engraving @cindex music engraving -The art of music typography is called @emph{(plate) engraving}. -The term derives from the traditional process of music printing. -Just a few decades ago, sheet music was made by cutting and -stamping the music into a zinc or pewter plate in mirror image. -The plate would be inked, and the depressions caused by the cutting -and stamping would hold ink. An image was formed by pressing -paper to the plate. The stamping and cutting was done completely -by hand. Making a correction was cumbersome, if possible at all, -so the engraving had to be perfect in one go. Engraving was a -highly specialized skill; a craftsman had to complete around five -years of training before earning the title of master engraver, and -another five years of experience were necessary to become truly -skilled. - -Nowadays, all newly printed music is produced with computers. -This has obvious advantages: prints are cheaper to make, and -editorial work can be delivered by email. Unfortunately, the -pervasive use of computers has also decreased the graphical -quality of scores. Computer printouts have a bland, mechanical -look, which makes them unpleasant to play from. - - -@c introduce illustrating aspects of engraving, font... -The images below illustrate the difference between traditional -engraving and typical computer output, and the third picture shows -how LilyPond mimics the traditional look. The left picture shows -a scan of a flat symbol from an edition published in 2000. The -center depicts a symbol from a hand-engraved Bärenreiter edition -of the same music. The left scan illustrates typical flaws of -computer print: the staff lines are thin, the weight of the flat -symbol matches the light lines and it has a straight layout with -sharp corners. By contrast, the Bärenreiter flat has a bold, -almost voluptuous rounded look. Our flat symbol is designed -after this one, among others. It is rounded, and its weight -harmonizes with the thickness of our staff lines, which are also -much thicker than lines in the computer edition. - -@multitable @columnfractions .125 .25 .25 .25 .125 -@item @tab -@ifnotinfo +The art of music typography is called @emph{(plate) engraving}, a term +that derives from the manual process of music printing@footnote{Early +european printers explored several processes, including hand-carved +wooden blocks, movable type, and engraved sheets of thin metal. +Typesetting had the advantage of being more easily corrected and +facilitating the inclusion of text and lyrics, but only engraving +offered the ability to do unimpeded layout and unanticipated notation. +In the end, hand-engraved scores became the standard for all printed +music, with the exception of some hymnals and songbooks where +typesetting was justified by its ease and economy, even into the +twentieth century.}. Just a few decades ago, sheet music was made by +cutting and stamping the music into a zinc or pewter plate in mirror +image. The plate would be inked, and the depressions caused by the +cutting and stamping would hold ink. An image was formed by pressing +paper to the plate. The stamping and cutting was done completely by hand +and making a correction was cumbersome, so the engraving had to be +nearly perfect in one go. Engraving was a highly specialized skill; a +craftsman had to complete around five years of training before earning +the title of master engraver, and another five years of experience were +necessary to become truly skilled. + +@quotation @iftex -@image{pictures/henle-flat-gray,,4cm} +@sourceimage{hader-slaan,,7cm,} @end iftex @ifnottex -@image{pictures/henle-flat-gray,,,png} +@sourceimage{hader-slaan,,,jpg} @end ifnottex +@end quotation -@tab +LilyPond is inspired by traditional manual engravings published by +European music publishers in and towards the end of the first half of +the twentieth century, inlcuding Baerenreiter, Duhem, Durand, +Hofmeister, Peters, and Schott. This is sometimes regarded as the peak +of traditional musical engraving practice. + +@c Now all newly printed music is produced with computers. This has +@c obvious advantages: prints are cheaper to make, editorial work can be +@c delivered by email, and the original data can be easily stored. +@c Unfortunately, computer-generated scores rarely match the quality of +@c hand-engraved scores. Instead, computer printouts have a bland, +@c mechanical look, which makes them unpleasant to play from. + +@menu +* Music fonts:: +* Optical spacing:: +* Ledger lines:: +* Optical sizing:: +* Why work so hard?:: +@end menu + +@node Music fonts +@unnumberedsubsec Music fonts + +The images below illustrate some differences between traditional +engraving and typical computer output. The left picture shows a scan of +a flat symbol from a hand-engraved Bärenreiter edition, while the right +picture depicts a symbol from an edition of the same music published in +2000. Although both images are printed in the same shade of ink, the +earlier version looks darker: the staff lines are heavier, and the +Bärenreiter flat has a bold, almost voluptuous rounded look. The right +scan, on the other hand, has thinner lines and a straight layout with +sharp corners. + +@multitable @columnfractions .25 .25 .25 .25 +@item @tab +@ifnotinfo @iftex -@image{pictures/baer-flat-gray,,4cm} +@sourceimage{baer-flat-gray,,4cm,} @end iftex @ifnottex -@image{pictures/baer-flat-gray,,,png} +@sourceimage{baer-flat-gray,,,png} @end ifnottex @tab @iftex -@image{pictures/lily-flat-bw,,4cm} +@sourceimage{henle-flat-gray,,4cm,} @end iftex @ifnottex -@image{pictures/lily-flat-bw,,,png} +@sourceimage{henle-flat-gray,,,png} @end ifnottex + @end ifnotinfo @ifinfo -@image{lilypond/pictures/henle-flat-bw,,,,png} @image{lilypond/pictures/baer-flat-bw,,,,png} -@image{lilypond/pictures/lily-flat-bw,,,,png} +@sourceimage{henle-flat-bw,,,png} +@sourceimage{baer-flat-bw,,,png} +@sourceimage{lily-flat-bw,,,png} @end ifinfo + @item @tab -Henle (2000) -@tab Bärenreiter (1950) @tab -LilyPond Feta font (2003) +Henle (2000) @end multitable - @cindex musical symbols @cindex font @cindex blackness @cindex balance -@c introduce illustrating aspects of engraving, spacing... +When we wanted to write a computer program to create music typography, +there were no musical fonts freely available that could match the +elegance of our favorite scores. Undeterred, we created a font of +musical symbols, relying on nice printouts of hand-engraved music. The +experience helped develop a typographical taste, and it made us +appreciate subtle design details. Without that experience, we would not +have realized how ugly the fonts were that we admired at first. + +Below is a sample of two music fonts: the upper set is the default font +in the Sibelius software (the @emph{Opus} font), and the lower set is +our own LilyPond font. + +@quotation +@iftex +@sourceimage{pdf/OpusAndFeta,,,} +@end iftex +@ifnottex +@sourceimage{OpusAndFeta,,,png} +@end ifnottex +@end quotation + +The LilyPond symbols are heavier and their weight is more consistent, +which makes them easier to read. Fine endings, such as the ones on the +sides of the quarter rest, should not end in sharp points, but rather +in rounded shapes. This is because sharp corners of the punching dies +are fragile and quickly wear out when stamping in metal. Taken together, +the blackness of the font must be carefully tuned together with the +thickness of lines, beams and slurs to give a strong yet balanced +overall impression. + +Also, notice that our half-notehead is not elliptic but slightly diamond +shaped. The vertical stem of a flat symbol is slightly brushed, becoming +wider at the top. The sharp and the natural are easier to distinguish +from a distance because their angled lines have different slopes and the +vertical strokes are heavier. + +@node Optical spacing +@unnumberedsubsec Optical spacing + In spacing, the distribution of space should reflect the durations -between notes. However, many modern scores adhere to the -durations with mathematical precision, which leads to poor -results. In the next example a motive is printed twice: once -using exact mathematical spacing, and once with corrections. Can -you spot which fragment is which? +between notes. However, as we saw in the Bach Suite above, many modern +scores adhere to the durations with mathematical precision, which leads +to poor results. In the next example a motive is printed twice: the +first time using exact mathematical spacing, and the second with +corrections. Which do you prefer? @cindex optical spacing -@c file spacing-optical. -@c need to include it here, because we want two images. + @lilypond \paper { ragged-right = ##t @@ -140,14 +311,15 @@ music = { \stemNeutral e'8[ e'8 e'8 e'8] } - \score { \music \layout { \context { \Staff - \override NoteSpacing #'stem-spacing-correction = #0.6 + \override NoteSpacing #'stem-spacing-correction = #0.0 + \override NoteSpacing #'same-direction-correction = #0.0 + \override StaffSpacing #'stem-spacing-correction = #0.0 } } } @@ -166,15 +338,14 @@ music = { \stemNeutral e'8[ e'8 e'8 e'8] } + \score { \music \layout { \context { \Staff - \override NoteSpacing #'stem-spacing-correction = #0.0 - \override NoteSpacing #'same-direction-correction = #0.0 - \override StaffSpacing #'stem-spacing-correction = #0.0 + \override NoteSpacing #'stem-spacing-correction = #0.6 } } } @@ -184,42 +355,196 @@ music = { @cindex regular spacing @cindex spacing, regular -Each bar in the fragment only uses notes that are played in a -constant rhythm. The spacing should reflect that. Unfortunately, -the eye deceives us a little; not only does it notice the distance -between note heads, it also takes into account the distance -between consecutive stems. As a result, the notes of an -up-stem/@/down-stem combination should be put farther apart, and -the notes of a down-stem/@/up-stem combination should be put -closer together, all depending on the combined vertical positions -of the notes. The upper two measures are printed with this -correction, the lower two measures, however, form -down-stem/@/up-stem clumps of notes. - - -Musicians are usually more absorbed with performing than with -studying the looks of a piece of music, so nitpicking -typographical details may seem academic. But it is not. In -larger pieces with monotonous rhythms, spacing corrections lead to -subtle variations in the layout of every line, giving each one a -distinct visual signature. Without this signature all lines would -look the same, and they become like a labyrinth. A distinct visual -signature helps to keep musicians from losing their place on the -page when they look away or have a lapse in concentration. - -Similarly, the strong visual look of bold symbols on heavy staff -lines stands out better when the music is far away from the -reader: for example, if it is on a music stand. A careful -distribution of white space allows music to be set very tightly -without crowding symbols together. The result minimizes the -number of page turns, which is a great advantage. - -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 her task. For performance material like sheet -music, this is of double importance: musicians have a limited -amount of attention. The less attention they need for reading, -the more they can focus on playing the music. In other words, +Each bar in the fragment only uses notes that are played in a constant +rhythm. The spacing should reflect that. Unfortunately, the eye deceives +us a little; not only does it notice the distance between note heads, it +also takes into account the distance between consecutive stems. As a +result, the notes of an up-stem/@/down-stem combination should be put +farther apart, and the notes of a down-stem/@/up-stem combination should +be put closer together, all depending on the combined vertical positions +of the notes. The lower two measures are printed with this correction, +the upper two measures, however, form down-stem/@/up-stem clumps of +notes. A master engraver would adjust the spacing as needed to please +the eye. + +Another example of optical spacing is the visual interplay between the +stems and the bar lines. When an up-stem precedes the bar line, a little +more space is needed to keep it from feeling crowded: + +@lilypond +\paper { + ragged-right = ##t +} + +\score { + { + c''8 c'' c'' c'' c'' c'' c'' c'' \break + a' a' a' a' a' a' a' a' + } + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + \override NoteSpacing #'stem-spacing-correction = #0.7 + } + \context { + \Score + \remove "Bar_number_engraver" + } + } +} +@end lilypond + +@node Ledger lines +@unnumberedsubsec Ledger lines + +@cindex ledger lines +@cindex collisions + +Ledger lines present a typographical challenge: they make it more +difficult to space musical symbols close together and they must be clear +enough to identify the pitch at a glance. In the example below, we see +that ledger lines should be thicker than normal staff lines and that an +expert engraver will shorten a ledger line to allow closer spacing with +accidentals. We have included this feature in LilyPond's engraving. + +@multitable @columnfractions .25 .25 .25 .25 +@item @tab + +@iftex +@sourceimage{baer-ledger,3cm,,} +@end iftex +@ifnottex +@sourceimage{baer-ledger,,,png} +@end ifnottex + +@tab + +@iftex +@sourceimage{lily-ledger,3cm,,} +@end iftex +@ifnottex +@sourceimage{lily-ledger,,,png} +@end ifnottex + +@end multitable + + +@node Optical sizing +@unnumberedsubsec Optical sizing + +Music may need to be printed in a range of sizes. Originally, this was +accomplished by creating punching dies in each of the required sizes, +which meant that each die was designed to look its best at that size. +With the advent of digital fonts, a single outline can be mathematically +scaled to any size, which is very convenient, but at the smaller sizes +the glyphs will appear very light. + +In LilyPond, we have created fonts in a range of weights, corresponding +to a range of music sizes. This is a LilyPond engraving at staff size +26: + +@quotation +@iftex +@sourceimage{pdf/size26,,23mm,} +@end iftex +@ifnottex +@sourceimage{size26,,,png} +@end ifnottex +@end quotation + +@noindent +and this is the same engraving set at staff size 11, then +magnified by 236% to print at the same size as the previous example: + +@quotation +@iftex +@sourceimage{pdf/size11,,23mm,} +@end iftex +@ifnottex +@sourceimage{size11,,,png} +@end ifnottex +@end quotation + +@noindent +At smaller sizes, LilyPond uses proportionally heavier lines so the +music will still read well. + +@ignore +This also allows staves of different sizes to coexist peacefully when +used together on the same page: + +@c TODO: are the stems in this example the right thickness? How should +@c line wieghts be scaled for small staves? + +@c Grieg's Violin Sonata Op. 45 +@lilypond[indent=1.5cm] +global = { + \time 6/8 + \key c \minor +} + +\new Score << + \new Staff \with { + fontSize = #-4 + \override StaffSymbol #'staff-space = #(magstep -4) + \override StaffSymbol #'thickness = #(magstep -3) + } + \relative c' { + \global + \set Staff.instrumentName = #"Violin" + c8.(\f^> b16 c d) ees8.(^> d16 c b) + g8.(^> b16 c ees) g8-.^> r r + R2. + } + \new PianoStaff << + \set PianoStaff.instrumentName = #"Piano" + \new Staff \relative c' { + \global + s2. + s4. s8 r8 r16 + 4.^> 8 r r + } + \new Staff \relative c { + \global + \clef "bass" + << { + \once \override DynamicText #'X-offset = #-3 + 2.~->^\f + 4.~ 8 + } \\ { + 2.~ + 4.~ 8 + } >> + r8 r16 16 + 4.-> 8 r r + } + >> +>> +@end lilypond +@end ignore + +@node Why work so hard? +@unnumberedsubsec Why work so hard? + +Musicians are usually more absorbed with performing than with studying +the looks of a piece of music, so nitpicking typographical details may +seem academic. But it is not. Sheet music is performance material: +everything is done to aid the musician in letting her perform better, +and anything that is unclear or unpleasant to read is a hinderance. + +Traditionally engraved music uses bold symbols on heavy staff to create +a strong, well-balanced look that stands out well when the music is far +away from the reader: for example, if it is on a music stand. A careful +distribution of white space allows music to be set very tightly without +crowding symbols together. The result minimizes the number of page +turns, which is a great advantage. + +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 sheet music this is of double importance because musicians +have a limited amount of attention. The less attention they need for +reading, the more they can focus on playing the music. In other words, better typography translates to better performances. These examples demonstrate that music typography is an art that is @@ -238,18 +563,375 @@ to see and love to play from. @cindex engraving, automated @cindex automated engraving -How do we go about implementing typography? If craftsmen need -over ten years to become true masters, how could we simple hackers -ever write a program to take over their jobs? +This section describes what is required to create software that can +mimic the layout of engraved scores: a method of explaining good +layouts to the computer, detailed comparisons with real engravings, +and enough flexibility to deal with the wide range of challenges +that printed music can present. + +@menu +* Beauty contests:: +* Improvement by benchmarking:: +* Getting things right:: +* Flexible architecture:: +@end menu + +@node Beauty contests +@unnumberedsubsec Beauty contests + +How do we actually make formatting decisions? In other words, which +of the three configurations should we choose for the following slur? + +@lilypond +\relative c { + \clef bass + \once \override Slur #'positions = #'(1.5 . 1) + e8[( f] g[ a b d,)] r4 + \once \override Slur #'positions = #'(2 . 3) + e8[( f] g[ a b d,)] r4 + e8[( f] g[ a b d,)] r4 +} +@end lilypond + +There are a few books on the art of music engraving +available. Unfortunately, they contain rules of simple thumbs and some +examples. Such rules can be instructive, but they are a far cry from +an algorithm that we could readily implement in a computer. Following +the instructions from literature leads to algorithms with lots of +handcoded exceptions. Doing all this case analysis is a lot of work, +and often not all cases are covered completely: + +@quotation +@iftex +@sourceimage{ross-beam-scan,7cm,,} +@end iftex +@ifnottex +@sourceimage{ross-beam-scan,,,.jpg} +@end ifnottex +@end quotation + +(Image source: Ted Ross, @emph{The Art of Music Engraving}) + +Rather than trying to write detailed layout rules for every possible +scenario, we only have to describe the objectives well enough that +LilyPond can judge the attractiveness of several alternatives. Then, +for each possible configuration we compute an ugliness score and we +choose the least ugly configuration. + +For example, here are three possible slur configurations, and LilyPond +has given each one a score in `ugly points'. The first example gets 15.39 +points for grazing one of the notes: + +@lilypond +\relative c { + \clef bass + \once \override Slur #'positions = #'(1.5 . 1) + e8[(_"15.39" f] g[ a b d,)] r4 +} +@end lilypond + +The +second one is nicer, but the slur doesn't start or end on the noteheads. +It gets 1.71 points for the left side and 9.37 points for the right +side, plus another 2 points because the slur ascends while the melody +descends for a total of 13.08 ulgy points: + +@lilypond +\relative c { + \clef bass + \once \override Slur #'positions = #'(2 . 3) + e8[(_"13.08" f] g[ a b d,)] r4 +} +@end lilypond + +The final slur gets 10.04 +points for the gap on the right and 2 points for the upward slope, but +it is the most attractive of the three configurations, so LilyPond +selects this one: + +@lilypond +\relative c { + \clef bass + e8[(_"12.04" f] g[ a b d,)] r4 +} +@end lilypond + +This technique is quite general, and is used to make optimal decisions +for beam configurations, ties and dots in chords, line breaks, and page +breaks. The results of these decisions can be judged by comparison to +real engravings. + +@node Improvement by benchmarking +@unnumberedsubsec Improvement by benchmarking + +LilyPond's output has improved gradually over time, and it continues to +improve by comparing its output to hand-engraved scores. + +For example, here is one line of a benchmark piece from a +hand-engraved edition (Bärenreiter BA320): + +@iftex +@sourceimage{baer-sarabande-hires,16cm,,} +@end iftex +@ifnottex +@sourceimage{baer-sarabande,,,png} +@end ifnottex + +@noindent +and the same quotation as engraved by a very old version of LilyPond +(version 1.4, May 2001): + +@iftex +@sourceimage{pdf/lily14-sarabande,16cm,,} +@end iftex +@ifnottex +@sourceimage{lily14-sarabande,,,png} +@end ifnottex + +@noindent The LilyPond 1.4 output is certainly readable, but close +comparison with the hand-engraved score showed a lot of errors in the +formatting details: + +@iftex +@sourceimage{lily14-sarabande-annotated-hires,16cm,,} +@end iftex +@ifnottex +@sourceimage{lily14-sarabande-annotated,,,png} +@end ifnottex + +@itemize @bullet +@item there is too much space before the time signature +@item the stems of the beamed notes are too long +@item the second and fourth measures are too narrow +@item the slur is awkward-looking +@item the trill marks are too big +@item the stems are too thin +@end itemize + +@noindent +(There were also two missing noteheads, several missing editorial +annotations, and an incorrect pitch!) + +By adjusting the layout rules and font design, the output has improved +considerably. Compare the same reference score and the output +from the current version of LilyPond (@version{}): + +@iftex +@sourceimage{baer-sarabande-hires,16cm,,} +@end iftex +@ifnottex +@sourceimage{baer-sarabande,,,png} +@end ifnottex + +@lilypond[staffsize=17.5,line-width=15.9\cm] +\relative c { + \clef "bass" + \key d \minor + \time 3/4 + \mergeDifferentlyDottedOn + << {\slurDashed d8.-\flageolet( e16) e4.-\trill( d16 e)} + \\ {d4_2 a2} + >> + \slurDashed + 4. e8( d c) + \slurSolid + bes g' f e16( f g_1 a_2 bes_3 d,_2) + \slurDashed + cis4.-\trill b8_3( a g) + << {\slurDashed d'8.( e16) e4.-\trill( d16 e)} + \\ {4 a2} + >> +} +@end lilypond + +@noindent +The current output is not a clone of the reference edition, but it is +much closer to publication quality that the earlier output. + +@node Getting things right +@unnumberedsubsec Getting things right + +We can also measure LilyPond's ability to make music engraving decisions +automatically by comparing LilyPond's output to the output of a +commercial software product. In this case we have chosen Finale 2008, +which is one of the most popular commercial scorewriters, particularly +in North America. Sibelius is their major rival and they appear to be +especially strong in the European market. + +For our comparison we chose Bach's Fugue in G minor from the +Well-Tempered Clavier, Book I, BWV 861, whose opening subject is + +@lilypond +\relative c' { + \key g \minor + \clef "treble_8" + r8 d ees g, fis4 g + r8 a16 bes c8 bes16 a bes8 +} +@end lilypond + +@noindent + +We made our comparison by engraving the last seven measures of the piece +(28--34) in Finale and LilyPond. This is the point in the piece where +the subject returns in a three-part stretto and leads into the closing +section. In the Finale version, we have resisted the temptation to make +any adjustments to the default output because we are trying to show the +things that each software package gets right without assistance. + +Many of the differences between the two engravings are visible in +measures 28--29, as shown here with Finale first and LilyPond second: + +@iftex +@sourceimage{pdf/bwv861mm28-29,14cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861mm28-29,,,png} +@end ifnottex + +@lilypond[staffsize=19.5,line-width=14\cm] +global = {\key g \minor} + +partI = \relative c' { + \voiceOne + fis8 d' ees g, fis4 g + r8 a16 bes c8 bes16 a d8 r r4 +} + +partII = \relative c' { + \voiceTwo + d4 r4 r8 d'16 c bes8 c16 d + ees8 d c ees a, r r4 +} +partIII = \relative c' { + \voiceOne + r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a +} +partIV = \relative c { + \voiceTwo + d4 r r2 + r8 d ees g, fis4 a +} + +\score { + << + % \set Score.barNumberVisibility = #all-bar-numbers-visible + % required in 2.13 + \set Score.currentBarNumber = #28 + \bar "" + \new PianoStaff << + \new Staff = "RH" << + \global + \new Voice = "voiceI" { \partI } + \new Voice = "voiceII" { \partII } + >> + + \new Staff = "LH" << + \clef "bass" + \global + \new Voice = "voiceIII" { \partIII } + \new Voice = "voiceIV" { \partIV } + >> + >> + >> + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + } + \context { + \PianoStaff + \override StaffGrouper #'between-staff-spacing #'padding = #1 + } + } +} +@end lilypond -The answer is: we cannot. Typography relies on human judgment of -appearance, so people cannot be replaced completely. However, -much of the dull work can be automated. If LilyPond solves most -of the common situations correctly, this will be a huge -improvement over existing software. The remaining cases can be -tuned by hand. Over the course of years, the software can be -refined to do more and more things automatically, so manual -overrides are less and less necessary. +Some shortcomings in the unedited Finale output include: +@itemize @bullet +@item Most of the beams extend too far off the staff. A beam that points +towards the center of the staff should have a length of about one +octave, but engravers shorten this when the beam points away from the +staff in multi-voice music. The Finale beaming can be easily improved +with the Patterson Beams plug-in, but we elected to skip that step for +this example. +@item Finale doesn't adjust the positions of interlocking noteheads, +which makes the music extremely difficult to read when the upper and +lower voices exchange positions temporarily: + +@lilypond +collide = \once \override NoteColumn #'force-hshift = #0 +\new Score << + \new Voice = "sample" \relative c''{ + \key g \minor + << + {\voiceOne g4 \collide g4} + \new Voice {\voiceTwo bes \collide bes} + >> + } + \new Lyrics \lyricsto "sample" \lyricmode { "good " " bad" } +>> +@end lilypond + +@item Finale has placed all of the rests at fixed heights on the staff. +The user is free to adjust them as needed, but the software makes no +attempt to consider the content of the other voice. As luck would have +it, there are no true collsions between notes and rests in this example, +but that has more to do with the positions of the notes than the rest. +In other words, Bach deserves more credit for avoiding a complete +collision that Finale does. + +@end itemize + +This example is not intended to suggest that Finale cannot be used to +produce beautiful output. On the contrary, in the hands of a skilled +user it can and does, but it requires skill and time. One of the +fundamental differences between LilyPond and commercial scorewriters is +that LilyPond hopes to reduce the amount of human intervention to an +absolute minimum, while other packages try to provide an attractive +interface in which to make these types of edits. + +One particularly glaring omission we found in the Finale sample is a +missing flat in measure 33: + +@quotation +@iftex +@sourceimage{pdf/bwv861mm33-34-annotate,7.93cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861mm33-34-annotate,,,png} +@end ifnottex +@end quotation + +@noindent +The flat symbol is required to cancel out the natural in the same +measure, but Finale misses it because it occurred in a different voice. +The user must not only remember to run a beaming plug-in and respace the +noteheads and rests, she must also check each measure for cross-voice +accidentals if she is to avoid interrupting a rehearsal for an engraving +error. + +If you are interested in examining these examples in more detail, the +full seven-measure excerpt can be found at the end of this essay in +engravings by Finale and LilyPond along with four different published +engravings. Close examination reveals that there is some acceptible +variation among the hand-engravings, but that LilyPond compares +reasonably well to that acceptible range. There are still some +shortcomings in the LilyPond output, for example, it appears a bit too +agressive in shortening some of the stems, so there is room for further +development and fine-tuning. + +Of course, typography relies on human judgment of appearance, so people +cannot be replaced completely. However, much of the dull work can be +automated. If LilyPond solves most of the common situations correctly, +this will be a huge improvement over existing software. Over the course +of years, the software can be refined to do more and more things +automatically, so manual overrides are less and less necessary. Where +manual adjustments are needed, LilyPond's structure has been designed +with that flexibility in mind. + +@node Flexible architecture +@unnumberedsubsec Flexible architecture When we started, we wrote the LilyPond program entirely in the C++ programming language; the program's functionality was set in stone @@ -803,3 +1485,151 @@ makes it easy to mix music and text in documents. TODO: add extra chapter for computer aesthetics? + +@page +@node Appendix +@unnumberedsec Appendix + +This appendix contaions four reference engravings and two +software-engraved versions of Bach's Fugue in G minor from the +Well-Tempered Clavier, Book I, BWV 861 (the last seven measures). + +@noindent +Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1, +1989): + +@iftex +@sourceimage{bwv861-baer,16cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861-baer-small,,,png} +@end ifnottex + +@noindent +Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1, +1989), an alternate musical source. Aside from the textual differences, +this demsontrates slight variations in the engraving decisions, even +from the same publisher and edition: + +@iftex +@sourceimage{bwv861-baer-alt,16cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861-baer-alt-small,,,png} +@end ifnottex + +@noindent +Breitkopf & Härtel, edited by Ferruccio Busoni (Wiesbaden, 1894), also +available from the Petrucci Music Library (IMSLP #22081). The editorial +markings (fingerings, articulations, etc.) have been removed for clearer +comparison with the other editions here: + +@iftex +@sourceimage{bwv861-breitkopf,16cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861-breitkopf-small,,,png} +@end ifnottex + +@noindent +Bach-Gessellschaft edition (Leipzig, 1866), available from the Petrucci +Music Library (IMSPL #02221): + +@iftex +@sourceimage{bwv861-gessellschaft,16cm,,} +@end iftex +@ifnottex +@sourceimage{bwv861-gessellschaft-small,,,png} +@end ifnottex + +@noindent +Finale 2008: + +@iftex +@sourceimage{pdf/bwv861-finale2008a,,,} +@end iftex +@ifnottex +@sourceimage{bwv861-finale2008a,,,png} +@end ifnottex + +@sp 4 +@noindent +LilyPond, version @version{}: + +@lilypond[staffsize=14.3,line-width=15.9\cm] +global = {\key g \minor} + +partI = \relative c' { + \voiceOne + fis8 d' ees g, fis4 g + r8 a16 bes c8 bes16 a d8 r r4 + r2 r8 d16 ees f8 ees16 d + ees4 ~ ees16 d c bes a4 r8 ees'16 d + c8 d16 ees d8 e16 fis g8 fis16 g a4 ~ + a8 d, g f ees d c bes + a2 g\fermata \bar "|." +} + +partII = \relative c' { + \voiceTwo + d4 r4 r8 d'16 c bes8 c16 d + ees8 d c ees a, r r4 + r8 fis16 g a8 g16 fis g2 ~ + g2 r8 d' ees g, + fis4 g r8 a16 bes c8 bes16 a + bes4. 8 r r + 4 d2 +} +partIII = \relative c' { + \voiceOne + r2 r8 d ees g, fis4 g r8 a16 bes c8 bes16 a + bes2 ~ bes8 b16 a g8 a16 b + c4 r r2 + R1 + r8 d ees g, fis4 g + r8 a16 bes c8 bes16 a b2 +} +partIV = \relative c { + \voiceTwo + d4 r r2 + r8 d ees g, fis4 a + d,8 d'16 c bes8 c16 d ees2 ~ + ees8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a + d,8 d'16 c bes8 c16 d ees8 c a fis' + g f ees d c bes a g + c a d d, g2\fermata +} + +\score { + << + % \set Score.barNumberVisibility = #all-bar-numbers-visible + % required in 2.13 + \set Score.currentBarNumber = #28 + \bar "" + \new PianoStaff << + \new Staff = "RH" << + \global + \new Voice = "voiceI" { \partI } + \new Voice = "voiceII" { \partII } + >> + + \new Staff = "LH" << + \clef "bass" + \global + \new Voice = "voiceIII" { \partIII } + \new Voice = "voiceIV" { \partIV } + >> + >> + >> + \layout { + \context { + \Staff + \remove "Time_signature_engraver" + } + \context { + \PianoStaff + \override StaffGrouper #'between-staff-spacing #'padding = #1 + } + } +} +@end lilypond