Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 3a7b4dfc766af1222d90c7f03a0844e6 > files > 6053

lilypond-doc-2.11.57-1mdv2009.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- header_tag -->
<html lang="en">
<head>
<title>Automated engraving - GNU LilyPond Learning Manual</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="GNU LilyPond Learning Manual">
<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Background.html#Background" title="Background">
<link rel="prev" href="Engraving.html#Engraving" title="Engraving">
<link rel="next" href="What-symbols-to-engrave_003f.html#What-symbols-to-engrave_003f" title="What symbols to engrave?">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1999--2007 by the authors

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.1 or any later version published by the Free Software
     Foundation; with no Invariant Sections.  A copy of the license is
     included in the section entitled ``GNU Free Documentation
     License''.
   -->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
hr { border:0; height:1; color: #000000; background-color: #000000; }
/* hr {
  border:  none;
  height: 1px;
  color: #666666;
  background-color: #666666;
}
body {
  border-left: 1px solid #666666;
  border-right: 1px solid #666666;
  color: #332d28;
  margin-right: auto;
  margin-left: auto;
  width: 60em;
  list-style-type: square;
  font-family: Arial,Helvetica,sans-serif;
  padding-right: 1em;
  padding-left: 1em;
}
a {
  border-bottom: 1px dashed #344242;
  text-decoration: none;
  color: #344242;
}
a:link {
  text-decoration: none;
}
a:visited {
  border-bottom: 1px dashed #666666;
  color: #666666;
}
a:active {
  border-bottom: 1px solid #00cccc;
  color: #00cccc;
}
a:hover {
  border-bottom: 1px solid #1d7b85;
  color: #1d7b85;
}
blockquote {
  border: 1px solid #cccccc;
  padding: 3px;
  width: 40em;
}
.node {
  border-left: 1px solid #666666;
  margin: -0.5em 0px 1em;
  padding: 2px 1px 0px;
  font-style: italic;
}
.node a {
  border:  none;
  text-decoration: underline;
  font-style: normal;
  font-weight: bold;
}
.verbatim {
  font-family: "Courier New",Courier,monospace;
}
.unnumberedsubsubsec {
  font-size: large;
  color: #1d7b85;
}
.subsubheading {
  font-size: large;
  color: #3b220d;
}
.contents {
  border: 1px dashed #339999;
  margin: 3px 2em;
  list-style-type: square;
  padding-right: 1em;
  width: 40em;
  background-color: #fcfff9;
}
.contents a {
  border-bottom: 1px dashed #423d34;
  text-decoration: none;
  color: #423d34;
}
.contents a:visited {
  border-bottom: 1px dashed #666666;
  color: #666666;
}
.contents a:active {
  border-bottom: 1px solid #f0d86d;
  color: #f0d86d;
}
.contents a:hover {
  border-bottom: 1px solid #3b220d;
  color: #3b220d;
}
.menu {
  border-left: 1px dashed #339999;
  margin: 3px 2em 1em;
  list-style-type: square;
  padding-left: 1.4em;
  width: 40em;
}
.unnumbered {
}
h2 {
  font-size: x-large;
  color: #1d7b85;
}
*/
--></style>
</head>
<BODY BGCOLOR=WHITE TEXT=BLACK>

<div class="node">
<p>
<a name="Automated-engraving"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="What-symbols-to-engrave_003f.html#What-symbols-to-engrave_003f">What symbols to engrave?</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Engraving.html#Engraving">Engraving</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Background.html#Background">Background</a>
<hr>
</div>

<h4 class="unnumberedsubsec">Automated engraving</h4>

<p>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?

   <p>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.

   <p>When we started, we wrote the LilyPond program entirely in the C++
programming language; the program's functionality was set in stone
by the developers.  That proved to be unsatisfactory for a number
of reasons:

     <ul>
<li>When LilyPond makes mistakes, users need to override
formatting decisions.  Therefore, the user must have access to the
formatting engine.  Hence, rules and settings cannot be fixed by
us at compile-time but must be accessible for users at run-time.

     <li>Engraving is a matter of visual judgment, and therefore a
matter of taste.  As knowledgeable as we are, users can disagree
with our personal decisions.  Therefore, the definitions of
typographical style must also be accessible to the user.

     <li>Finally, we continually refine the formatting algorithms, so
we need a flexible approach to rules.  The C++ language forces a
certain method of grouping rules that do not match well with how
music notation works.

   </ul>

   <p>These problems have been addressed by integrating an interpreter
for the Scheme programming language and rewriting parts of
LilyPond in Scheme.  The current formatting architecture is built
around the notion of graphical objects, described by Scheme
variables and functions.  This architecture encompasses formatting
rules, typographical style and individual formatting decisions. 
The user has direct access to most of these controls.

   <p>Scheme variables control layout decisions.  For example, many
graphical objects have a direction variable that encodes the
choice between up and down (or left and right).  Here you see two
chords, with accents and arpeggios.  In the first chord, the
graphical objects have all directions down (or left).  The second
chord has all directions up (right).

   <blockquote>
     <p>
 <a href="../f2/lily-3d263833.ly">
  <img align="middle"
    border="0" src="../f2/lily-3d263833.png" alt="[image of music]">
 </a>
</p>

   </blockquote>

<p class="noindent">The process of formatting a score consists of reading and writing
the variables of graphical objects.  Some variables have a preset
value.  For example, the thickness of many lines &ndash; a
characteristic of typographical style &ndash; is a variable with a
preset value.  You are free to alter this value, giving your score
a different typographical impression.

   <blockquote>
     <p>
 <a href="../29/lily-1b1eab1c.ly">
  <img align="middle"
    border="0" src="../29/lily-1b1eab1c.png" alt="[image of music]">
 </a>
</p>

   </blockquote>

   <p>Formatting rules are also preset variables: each object has
variables containing procedures.  These procedures perform the
actual formatting, and by substituting different ones, we can
change the appearance of objects.  In the following example, the
rule which note head objects are used to produce their symbol is
changed during the music fragment.

   <blockquote>
     <p>
 <a href="../8f/lily-c9522073.ly">
  <img align="middle"
    border="0" src="../8f/lily-c9522073.png" alt="[image of music]">
 </a>
</p>

   </blockquote>

   <!-- footer_tag --><br><hr>
<div class="node">
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="What-symbols-to-engrave_003f.html#What-symbols-to-engrave_003f">What symbols to engrave?</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Engraving.html#Engraving">Engraving</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Background.html#Background">Background</a>
</div>

<div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;">
<p>
<font size="-1">
This page is for LilyPond-2.11.57 (development-branch).
<br>
<address>
Report errors to <a href="http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs">http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs</a>. </address>
<br>
Your <a href="http://lilypond.org/web/devel/participating/documentation-adding">suggestions for the documentation</a> are welcome.
</font>
</p>
</div>


<P>
 Other languages: <a href="Automated-engraving.fr.html">français</a>, <a href="Automated-engraving.es.html">español</a>, <a href="Automated-engraving.de.html">deutsch</a>.
 <BR>
 
</P>
</BODY></html>