<!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 : <a rel="next" accesskey="n" href="Aligning-contexts.fr.html#Aligning-contexts">Alignement des contextes</a>, Précédent : <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 : <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> : <pre class="example">\layout { \context { ... } } </pre> <p>En lieu et place des points (<small class="dots">...</small>), voici les éléments à saisir : <ul> <li>Tout d'abord, il convient de donner un nom <code>\name</code> à notre nouveau contexte : <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> : <pre class="example"> \alias Voice </pre> <li>Ce contexte doit pouvoir imprimer des notes, et des indications textuelles ; 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 : <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 ‘écrase’ pour qu'elles aient toutes la même position verticale, définie par <code>squashedPosition</code> : ici il s'agit de la valeur <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 : <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> : il s'agit de <code>Engraver_group</code>, <pre class="example"> \type "Engraver_group" </pre> </ul> <p>Récapitulons – on se retrouve avec le bloc suivant : <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> : <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 : <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 : <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 :)" } a1 } </pre> <!-- footer_tag --><br><hr> <div class="node"> <p> Suivant : <a rel="next" accesskey="n" href="Aligning-contexts.fr.html#Aligning-contexts">Alignement des contextes</a>, Précédent : <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 : <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 : <a href="Defining-new-contexts.html">English</a>, <a href="Defining-new-contexts.es.html">español</a>. <BR> </P> </BODY></html>