Sophie

Sophie

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

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>Modifying context plug-ins - GNU LilyPond Notation Reference</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="GNU LilyPond Notation Reference">
<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Interpretation-contexts.html#Interpretation-contexts" title="Interpretation contexts">
<link rel="prev" href="Creating-contexts.html#Creating-contexts" title="Creating contexts">
<link rel="next" href="Changing-context-default-settings.html#Changing-context-default-settings" title="Changing context default settings">
<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="Modifying-context-plug-ins"></a>
<a name="Modifying-context-plug_002dins"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="Changing-context-default-settings.html#Changing-context-default-settings">Changing context default settings</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Creating-contexts.html#Creating-contexts">Creating contexts</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Interpretation-contexts.html#Interpretation-contexts">Interpretation contexts</a>
<hr>
</div>

<h4 class="subsection">5.1.3 Modifying context plug-ins</h4>

<!-- TODO Should this be Modifying engravers or Modifying contexts? -->
<p>Notation contexts (like <code>Score</code> and <code>Staff</code>) not only
store properties,
they also contain plug-ins called &lsquo;engravers&rsquo; that create notation
elements.  For example, the <code>Voice</code> context contains a
<code>Note_head_engraver</code> and the <code>Staff</code> context contains a
<code>Key_signature_engraver</code>.

   <p>For a full a description of each plug-in, see
<a name="index-Engravers-and-Performers-2629"></a><a href="../lilypond-internals/Engravers-and-Performers.html#Engravers-and-Performers">Engravers and Performers</a>. 
Every context described in
<a name="index-Contexts-2630"></a><a href="../lilypond-internals/Contexts.html#Contexts">Contexts</a>
lists the engravers used for that context.

   <p>It can be useful to shuffle around these plug-ins.  This is done by
starting a new context with <code>\new</code> or <code>\context</code>, and
modifying it,

   <p><a name="index-g_t_005cwith-2631"></a><a name="index-g_t_005cwith-2632"></a>

<pre class="example">\new <var>context</var> \with {
  \consists ...
  \consists ...
  \remove ...
  \remove ...
  <em>etc.</em>
}
{
  <em>..music..</em>
}
</pre>
   <p class="noindent">where the <small class="dots">...</small> should be the name of an engraver.  Here is a simple
example which removes <code>Time_signature_engraver</code> and
<code>Clef_engraver</code> from a <code>Staff</code> context,

   <blockquote>
<pre class="verbatim">     
     &lt;&lt;
       \new Staff {
         f2 g
       }
       \new Staff \with {
          \remove "Time_signature_engraver"
          \remove "Clef_engraver"
       } {
         f2 g2
       }
     >>
</pre>
     <p>
 <a href="../5f/lily-208361c9.ly">
  <img align="middle"
    border="0" src="../5f/lily-208361c9.png" alt="[image of music]">
 </a>
</p>

   </blockquote>

   <p>In the second staff there are no time signature or clef symbols.  This
is a rather crude method of making objects disappear since it will affect
the entire staff.  This method also influences the spacing, which may or
may not be desirable.  More sophisticated methods of blanking objects
are shown in <a name="index-Visibility-and-color-of-objects-2633"></a><a href="../lilypond-learning/Visibility-and-color-of-objects.html#Visibility-and-color-of-objects">Visibility and color of objects</a>.

   <p>The next example shows a practical application.  Bar lines and time
signatures are normally synchronized across the score.  This is done
by the <code>Timing_translator</code> and <code>Default_bar_line_engraver</code>. 
This plug-in keeps an administration of time signature, location
within the measure, etc.  By moving these engraver from <code>Score</code> to
<code>Staff</code> context, we can have a score where each staff has its own
time signature.

   <p><a name="index-polymetric-scores-2634"></a><a name="index-Time-signatures_002c-multiple-2635"></a>
<blockquote>
<pre class="verbatim">     
     \new Score \with {
       \remove "Timing_translator"
       \remove "Default_bar_line_engraver"
     } &lt;&lt;
       \new Staff \with {
         \consists "Timing_translator"
         \consists "Default_bar_line_engraver"
       } {
           \time 3/4
           c4 c c c c c
       }
       \new Staff \with {
         \consists "Timing_translator"
         \consists "Default_bar_line_engraver"
       } {
            \time 2/4
            c4 c c c c c
       }
     >>
</pre>
     <p>
 <a href="../3b/lily-bf4b61d3.ly">
  <img align="middle"
    border="0" src="../3b/lily-bf4b61d3.png" alt="[image of music]">
 </a>
</p>

   </blockquote>

   <!-- footer_tag --><br><hr>
<div class="node">
<p>
<a name="Modifying-context-plug_002dins"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="Changing-context-default-settings.html#Changing-context-default-settings">Changing context default settings</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Creating-contexts.html#Creating-contexts">Creating contexts</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Interpretation-contexts.html#Interpretation-contexts">Interpretation contexts</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="Modifying-context-plug_002dins.fr.html">français</a>, <a href="Modifying-context-plug_002dins.es.html">español</a>.
 <BR>
 
</P>
</BODY></html>