<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- header_tag --> <html lang="en"> <head> <title>What symbols to engrave? - 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="Automated-engraving.html#Automated-engraving" title="Automated engraving"> <link rel="next" href="Music-representation.html#Music-representation" title="Music representation"> <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="What-symbols-to-engrave%3f"></a> <a name="What-symbols-to-engrave_003f"></a> Next: <a rel="next" accesskey="n" href="Music-representation.html#Music-representation">Music representation</a>, Previous: <a rel="previous" accesskey="p" href="Automated-engraving.html#Automated-engraving">Automated engraving</a>, Up: <a rel="up" accesskey="u" href="Background.html#Background">Background</a> <hr> </div> <h4 class="unnumberedsubsec">What symbols to engrave?</h4> <p><a name="index-engraving-11"></a><a name="index-typography-12"></a> The formatting process decides where to place symbols. However, this can only be done once it is decided <em>what</em> symbols should be printed, in other words what notation to use. <p>Common music notation is a system of recording music that has evolved over the past 1000 years. The form that is now in common use dates from the early renaissance. Although the basic form (i.e., note heads on a 5-line staff) has not changed, the details still evolve to express the innovations of contemporary notation. Hence, it encompasses some 500 years of music. Its applications range from monophonic melodies to monstrous counterpoints for large orchestras. <p>How can we get a grip on such a many-headed beast, and force it into the confines of a computer program? Our solution is to break up the problem of notation (as opposed to engraving, i.e., typography) into digestible and programmable chunks: every type of symbol is handled by a separate module, a so-called plug-in. Each plug-in is completely modular and independent, so each can be developed and improved separately. Such plug-ins are called <code>engraver</code>s, by analogy with craftsmen who translate musical ideas to graphic symbols. <p>In the following example, we see how we start out with a plug-in for note heads, the <code>Note_heads_engraver</code>. <blockquote> <p> <a href="../ab/lily-b4a43b4c.ly"> <img align="middle" border="0" src="../ab/lily-b4a43b4c.png" alt="[image of music]"> </a> </p> </blockquote> <p class="noindent">Then a <code>Staff_symbol_engraver</code> adds the staff <blockquote> <p> <a href="../4f/lily-d3521339.ly"> <img align="middle" border="0" src="../4f/lily-d3521339.png" alt="[image of music]"> </a> </p> </blockquote> <p class="noindent">the <code>Clef_engraver</code> defines a reference point for the staff <blockquote> <p> <a href="../aa/lily-09f3f79c.ly"> <img align="middle" border="0" src="../aa/lily-09f3f79c.png" alt="[image of music]"> </a> </p> </blockquote> <p class="noindent">and the <code>Stem_engraver</code> adds stems. <blockquote> <p> <a href="../b6/lily-678a89f6.ly"> <img align="middle" border="0" src="../b6/lily-678a89f6.png" alt="[image of music]"> </a> </p> </blockquote> <p class="noindent">The <code>Stem_engraver</code> is notified of any note head coming along. Every time one (or more, for a chord) note head is seen, a stem object is created and connected to the note head. By adding engravers for beams, slurs, accents, accidentals, bar lines, time signature, and key signature, we get a complete piece of notation. <blockquote> <p> <a href="../21/lily-46f41737.ly"> <img align="middle" border="0" src="../21/lily-46f41737.png" alt="[image of music]"> </a> </p> </blockquote> <p>This system works well for monophonic music, but what about polyphony? In polyphonic notation, many voices can share a staff. <blockquote> <p> <a href="../f3/lily-dec1d271.ly"> <img align="middle" border="0" src="../f3/lily-dec1d271.png" alt="[image of music]"> </a> </p> </blockquote> <p>In this situation, the accidentals and staff are shared, but the stems, slurs, beams, etc., are private to each voice. Hence, engravers should be grouped. The engravers for note heads, stems, slurs, etc., go into a group called ‘Voice context,’ while the engravers for key, accidental, bar, etc., go into a group called ‘Staff context.’ In the case of polyphony, a single Staff context contains more than one Voice context. Similarly, multiple Staff contexts can be put into a single Score context. The Score context is the top level notation context. <p class="noindent"> <h5 class="subsubheading">See also</h5> <p class="indent"> <p>Internals Reference: <a name="index-Contexts-13"></a><a href="../lilypond-internals/Contexts.html#Contexts">Contexts</a>. <blockquote> <p> <a href="../8e/lily-558a01df.ly"> <img align="middle" border="0" src="../8e/lily-558a01df.png" alt="[image of music]"> </a> </p> </blockquote> <!-- footer_tag --><br><hr> <div class="node"> <p> <a name="What-symbols-to-engrave_003f"></a> Next: <a rel="next" accesskey="n" href="Music-representation.html#Music-representation">Music representation</a>, Previous: <a rel="previous" accesskey="p" href="Automated-engraving.html#Automated-engraving">Automated engraving</a>, Up: <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="What-symbols-to-engrave_003f.fr.html">français</a>, <a href="What-symbols-to-engrave_003f.es.html">español</a>, <a href="What-symbols-to-engrave_003f.de.html">deutsch</a>. <BR> </P> </BODY></html>