Sophie

Sophie

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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- header_tag -->
<html lang="es">
<head>
<title>Trucos avanzados con Scheme - 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.es.html#Top">
<link rel="up" href="Further-tweaking.es.html#Further-tweaking" title="Trucajes adicionales">
<link rel="prev" href="Avoiding-tweaks-with-slower-processing.es.html#Avoiding-tweaks-with-slower-processing" title="Evitar los trucos con un proceso ralentizado">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1999--2007 por los autores

_The translation of the following copyright notice is provided
for courtesy to non-English speakers, but only the notice in English
legally counts._

_La traducción de la siguiente nota de copyright se ofrece como
cortesía para las personas de habla no inglesa, pero únicamente la
nota en inglés tiene validez legal._

     Se otorga permiso para copiar, distribuir y/o modificar este
     documento bajo los términos de la Licencia de Documentación
     Libre de GNU, versión 1.1 o cualquier versión posterior
     publicada por la Free Software Foundation; sin ninguna de las
     secciones invariantes.  Se incluye una copia de esta licencia
     dentro de la sección titulada ``Licencia de Documentación Libre
     de GNU''.
     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="Advanced-tweaks-with-Scheme"></a>
Anterior:&nbsp;<a rel="previous" accesskey="p" href="Avoiding-tweaks-with-slower-processing.es.html#Avoiding-tweaks-with-slower-processing">Evitar los trucos con un proceso ralentizado</a>,
Arriba:&nbsp;<a rel="up" accesskey="u" href="Further-tweaking.es.html#Further-tweaking">Trucajes adicionales</a>
<hr>
</div>

<h4 class="subsection">4.6.5 Trucos avanzados con Scheme</h4>

<p>Aunque es posible hacer muchas cosas con las instrucciones
<code>\override</code> y <code>\tweak</code> , tenemos una forma incluso más
poderosa de modificar el funcionamiento de LilyPond, a través de un
interface programable hacia las operaciones internas de LilyPond.  Se
puede incorporar código escrito en el lenguaje de programación Scheme,
directamente en el mecanismo de funcionamiento de LilyPond.  Por
supuesto, para hacer esto se necesitan al menos unos conocimientos
básicos de programación en Scheme, y damos una introducción en el
<a href="Scheme-tutorial.es.html#Scheme-tutorial">Tutorial de Scheme</a>.

   <p>Como ejemplo que ilustra una de las muchas posibilidades, en lugar de
dar a una propiedad un valor constante, se puede establecer al
resultado de un procedimiento de Scheme que se invoca cada vez que
LilyPond accede a esta propiedad.  La propiedad se puede establecer
dinámicamente a un valor determinado por el procedimiento en el
momento en que se invoca.  En este ejemplo damos a las cabezas de las
notas un color que depende de su posición dentro del pentagrama.

   <blockquote>
<pre class="verbatim">     
     #(define (color-notehead grob)
       "Color the notehead according to its position on the staff."
       (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
         (case mod-position
           ;;   Return rainbow colors
           ((1) (x11-color 'red    ))  ; for C
           ((2) (x11-color 'orange ))  ; for D
           ((3) (x11-color 'yellow ))  ; for E
           ((4) (x11-color 'green  ))  ; for F
           ((5) (x11-color 'blue   ))  ; for G
           ((6) (x11-color 'purple ))  ; for A
           ((0) (x11-color 'violet ))  ; for B
         )
       )
     )
     
     \relative c' {
       % Truco para obtener color a partir del procedimiento color-notehead
       \override NoteHead #'color = #color-notehead
       c2 c' | 
       b4 g8 a b4 c | 
       c,2 a' | 
       g1 |
     }
     \addlyrics {
       Some -- where o -- ver the Rain -- bow way up high,
     }
</pre>
     <p>
 <a href="../8d/lily-7f1337b1.ly"> <img align="middle" border="0" src="../8d/lily-7f1337b1.png" alt="[image of music]"> </a>
</p>

   </blockquote>

   <p>Se pueden encontrar ejemplos adicionales que muestran la utilización
de estos interfaces programables, en <a href="Tweaking-with-Scheme.es.html#Tweaking-with-Scheme">Trucos con Scheme</a>.

<!-- *- coding: utf-8; mode: texinfo; -*- -->
<!-- This file is part of lilypond.tely -->
<!-- \version "2.11.51" -->
   <!-- footer_tag --><br><hr>
<div class="node">
<p>
Anterior:&nbsp;<a rel="previous" accesskey="p" href="Avoiding-tweaks-with-slower-processing.es.html#Avoiding-tweaks-with-slower-processing">Evitar los trucos con un proceso ralentizado</a>,
Arriba:&nbsp;<a rel="up" accesskey="u" href="Further-tweaking.es.html#Further-tweaking">Trucajes adicionales</a>
</div>

<div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;">
<p>
<font size="-1">
Esta página corresponde a LilyPond-2.11.57 (rama de desarrollo).
<br>
<address>
Informe de los fallos a través de la lista en español <a href="http://es.groups.yahoo.com/group/lilypond-es/">lilypond-es</a>, o en inglés a través de <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>
Se agradecen las <a href="http://lilypond.org/web/devel/participating/documentation-adding">sugerencias para la documentación</a>.
</font>
</p>
</div>


<P>
 Otros idiomas: <a href="Advanced-tweaks-with-Scheme.html">English</a>, <a href="Advanced-tweaks-with-Scheme.fr.html">français</a>, <a href="Advanced-tweaks-with-Scheme.de.html">deutsch</a>.
 <BR>
 
</P>
</BODY></html>