Sophie

Sophie

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

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>Définition de nouveaux contextes - GNU LilyPond - manuel de notation</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="GNU LilyPond - manuel de notation">
<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.fr.html#Top">
<link rel="up" href="Interpretation-contexts.fr.html#Interpretation-contexts" title="Contextes d'interprétation">
<link rel="prev" href="Changing-context-default-settings.fr.html#Changing-context-default-settings" title="Modification des réglages par défaut d'un contexte">
<link rel="next" href="Aligning-contexts.fr.html#Aligning-contexts" title="Alignement des contextes">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<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="Defining-new-contexts"></a>
Suivant&nbsp;:&nbsp;<a rel="next" accesskey="n" href="Aligning-contexts.fr.html#Aligning-contexts">Alignement des contextes</a>,
Précédent&nbsp;:&nbsp;<a rel="previous" accesskey="p" href="Changing-context-default-settings.fr.html#Changing-context-default-settings">Modification des réglages par défaut d'un contexte</a>,
Haut&nbsp;:&nbsp;<a rel="up" accesskey="u" href="Interpretation-contexts.fr.html#Interpretation-contexts">Contextes d'interprétation</a>
<hr>
</div>

<h4 class="subsection">5.1.6 Définition de nouveaux contextes</h4>

<p>Les contextes tels que <code>Staff</code> ou <code>Voice</code> sont faits
de briques de constructions empilées.  En combinant divers graveurs,
il est possible de créer de nouveaux types de contextes.

   <p>Dans l'exemple suivant, on construit, de zéro, un nouveau contexte très
semblable à <code>Voice</code>, mais qui n'imprime que des têtes de notes en forme
de barres obliques au centre de la portée.  Un tel contexte, par exemple, peut
servir à indiquer un passage improvisé dans un morceau de jazz.

<!-- KEEP LY -->
   <blockquote>
     <p>
 <a href="../dd/lily-d3930202.ly"> <img align="middle" border="0" src="../dd/lily-d3930202.png" alt="[image of music]"> </a>
</p>

   </blockquote>

   <p>On a rassemblé les réglages dans un bloc <code>\context</code>, lui-même dans
le bloc <code>\layout</code>&nbsp;:

<pre class="example">\layout {
  \context {
    ...
  }
}
</pre>
   <p>En lieu et place des points (<small class="dots">...</small>), voici les éléments à saisir&nbsp;:

     <ul>
<li>Tout d'abord, il convient de donner un nom <code>\name</code> à notre nouveau contexte&nbsp;:

     <pre class="example">     \name ImproVoice
</pre>
     <li>Comme il est très semblable à <code>Voice</code>, nous souhaitons que toutes les
commandes associées au <code>Voice</code> déjà existant, restent valables.  D'où nécessité
de la commande <code>\alias</code>, qui va l'associer au contexte <code>Voice</code>&nbsp;:

     <pre class="example">     \alias Voice
</pre>
     <li>Ce contexte doit pouvoir imprimer des notes, et des indications textuelles&nbsp;;
on ajoute donc les graveurs appropriés.

     <pre class="example">     \consists Note_heads_engraver
     \consists Text_engraver
</pre>
     <li>Cependant, on veut que les notes s'affichent toutes au centre de la portée&nbsp;:

     <pre class="example">     \consists Pitch_squash_engraver
     squashedPosition = #0
</pre>
     <p class="noindent">Le graveur <a name="index-Pitch_005fsquash_005fengraver-1024"></a><a href="../lilypond-internals/Pitch_005fsquash_005fengraver.fr.html#Pitch_005fsquash_005fengraver">Pitch_squash_engraver</a> intercepte les notes créées par
<a name="index-Note_005fheads_005fengraver-1025"></a><a href="../lilypond-internals/Note_005fheads_005fengraver.fr.html#Note_005fheads_005fengraver">Note_heads_engraver</a>, et les &lsquo;écrase&rsquo; pour qu'elles aient toutes la
même position verticale, définie par <code>squashedPosition</code>&nbsp;: ici il s'agit de la
valeur&nbsp;<code>0</code>, c'est-à-dire la ligne du milieu.

     <li>On veut que les notes aient la forme d'une barre oblique, sans aucune hampe&nbsp;:

     <pre class="example">     \override NoteHead #'style = #'slash
     \override Stem #'transparent = ##t
</pre>
     <li>Afin que tous ces graveurs puissent travailler de concert, on leur adjoint un
sous-programme spécial, introduit par la commande <code>\type</code>&nbsp;: il s'agit de
<code>Engraver_group</code>,

     <pre class="example">     \type "Engraver_group"
</pre>
     </ul>

   <p>Récapitulons &ndash; on se retrouve avec le bloc suivant&nbsp;:

<pre class="example">\context {
  \name ImproVoice
  \type "Engraver_group"
  \consists "Note_heads_engraver"
  \consists "Text_engraver"
  \consists Pitch_squash_engraver
  squashedPosition = #0
  \override NoteHead #'style = #'slash
  \override Stem #'transparent = ##t
  \alias Voice
}
</pre>
   <p><a name="index-g_t_005caccepts-1026"></a><a name="index-g_t_005caccepts-1027"></a>
Ce n'est pas tout.  En effet, on veut intégrer le nouveau contexte
<code>ImproVoice</code> dans la hiérarchie des contextes.  Tout comme le
contexte <code>Voice</code>, sa place est au sein du contexte <code>Staff</code>. 
Nous allons donc modifier le contexte <code>Staff</code>,
au moyen de la commande <code>\accepts</code>&nbsp;:

<pre class="example">\context {
  \Staff
  \accepts ImproVoice
}
</pre>
   <p><a name="index-g_t_005cdenies-1028"></a><a name="index-g_t_005cdenies-1029"></a>
Le contraire de <code>\accepts</code> est <code>\denies</code>,
qui est parfois utile lorsque l'on recycle des définitions de
contextes déjà existantes.

   <p>Enfin, tout cela doit prendre place dans le bloc <code>\layout</code>,
comme suit&nbsp;:

<pre class="example">\layout {
  \context {
    \name ImproVoice
    ...
  }
  \context {
    \Staff
    \accepts "ImproVoice"
  }
}
</pre>
   <p>On peut alors saisir la musique, comme dans l'exemple plus haut&nbsp;:

<pre class="example">\relative c'' {
  a4 d8 bes8
  \new ImproVoice {
    c4^"ad lib" c
    c4 c^"dévêtez-vous"
    c c_"tout en jouant&nbsp;:)"
  }
  a1
}
</pre>
   <!-- footer_tag --><br><hr>
<div class="node">
<p>
Suivant&nbsp;:&nbsp;<a rel="next" accesskey="n" href="Aligning-contexts.fr.html#Aligning-contexts">Alignement des contextes</a>,
Précédent&nbsp;:&nbsp;<a rel="previous" accesskey="p" href="Changing-context-default-settings.fr.html#Changing-context-default-settings">Modification des réglages par défaut d'un contexte</a>,
Haut&nbsp;:&nbsp;<a rel="up" accesskey="u" href="Interpretation-contexts.fr.html#Interpretation-contexts">Contextes d'interprétation</a>
</div>

<div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;">
<p>
<font size="-1">
Cette page documente LilyPond-2.11.57 (branche de développement).
<br>
<address>
Rapportez toute anomalie en français à <a href="mailto:lilypond-user-fr@gnu.org">lilypond-user-fr@gnu.org</a> ou en anglais à <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>
Vos <a href="http://lilypond.org/web/devel/participating/documentation-adding">suggestions à propos de la documentation</a> sont les bienvenues.
</font>
</p>
</div>


<P>
 Autres langues&nbsp;: <a href="Defining-new-contexts.html">English</a>, <a href="Defining-new-contexts.es.html">español</a>.
 <BR>
 
</P>
</BODY></html>