@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @c This file is part of lilypond.tely @ignore Translation of GIT committish: 4a527608c5ff2ce31e596495d00dce181dc1b9ea When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore @c \version "2.11.61" @node Interfaces for programmers @chapter Interfaces for programmers Se pueden realizar trucos avanzados mediante el uso de Scheme. Si no está familizarizado con Scheme, le conviene leer nuestro tutorial de Scheme, @rlearning{Scheme tutorial}. @menu * Music functions:: * Programmer interfaces:: * Building complicated functions:: * Markup programmer interface:: * Contexts for programmers:: * Scheme procedures as properties:: * Using Scheme code instead of \tweak:: * Difficult tweaks:: @end menu @node Music functions @section Music functions Esta sección trata sobre cómo crear funciones musicales dentro de LilyPond. @menu * Overview of music functions:: * Simple substitution functions:: * Paired substitution functions:: * Mathematics in functions:: * Void functions:: * Functions without arguments:: * Overview of available music functions:: @end menu @node Overview of music functions @subsection Overview of music functions Es fácil hacer una función que sustituya a una variable en código de LilyPond. La forma general de estas funciones es: @example funcion = #(define-music-function (analizador posicion @var{var1} @var{var2}... ) (@var{var1-type?} @var{var2-type?}...) #@{ @emph{...música...} #@}) @end example @noindent donde @multitable @columnfractions .33 .66 @item @var{argi} @tab @var{i}-ésima variable @item @var{argi-type?} @tab tipo de variable @item @var{...música...} @tab entrada normal de LilyPond, usando las variables como @code{#$var1}. @end multitable Los siguientes tipos de entrada se pueden usar como variables en una función musical. Esta lista no es exhaustiva; consulte otros lugares de la documentación específica de Scheme para ver otros tipos de variables. @multitable @columnfractions .33 .66 @headitem Tipo de entrada @tab notación de @var{argi-type?} @item Entero @tab @code{integer?} @item Flotante (número decimal) @tab @code{number?} @item Cadena de texto @tab @code{string?} @item Marcado @tab @code{markup?} @item Expresión musical @tab @code{ly:music?} @item Pareja de variables @tab @code{pair?} @end multitable Los argumentos @code{analizador} y @code{posicion} son obligatorios, y se usan en ciertas situaciones avanzadas. El argumento @code{analizador} se usa para acceder al valor de otra variable de LilyPond. El argumento @code{posicion} se usa para establecer el @q{origen} de la expresión musical que construye la función musical, de forma que en caso de producirse un error de sintaxis LilyPond pueda informar al usuario de un lugar adecuado donde buscar en el archivo de entrada. @node Simple substitution functions @subsection Simple substitution functions @untranslated @node Paired substitution functions @subsection Paired substitution functions @untranslated @node Mathematics in functions @subsection Mathematics in functions @untranslated @node Void functions @subsection Void functions @untranslated @node Functions without arguments @subsection Functions without arguments @untranslated @node Overview of available music functions @subsection Overview of available music functions @untranslated @include identifiers.tely @node Programmer interfaces @section Programmer interfaces @untranslated @menu * Input variables and Scheme:: * Internal music representation:: @end menu @node Input variables and Scheme @subsection Input variables and Scheme @untranslated @node Internal music representation @subsection Internal music representation @untranslated @node Building complicated functions @section Building complicated functions @untranslated @menu * Displaying music expressions:: * Music properties:: * Doubling a note with slurs (example):: * Adding articulation to notes (example):: @end menu @node Displaying music expressions @subsection Displaying music expressions @untranslated @node Music properties @subsection Music properties @untranslated @node Doubling a note with slurs (example) @subsection Doubling a note with slurs (example) @untranslated @node Adding articulation to notes (example) @subsection Adding articulation to notes (example) @untranslated @node Markup programmer interface @section Markup programmer interface @untranslated @menu * Markup construction in Scheme:: * How markups work internally:: * New markup command definition:: * New markup list command definition:: @end menu @node Markup construction in Scheme @subsection Markup construction in Scheme @untranslated @node How markups work internally @subsection How markups work internally @untranslated @node New markup command definition @subsection New markup command definition @untranslated @node New markup list command definition @subsection New markup list command definition @untranslated @node Contexts for programmers @section Contexts for programmers @untranslated @menu * Context evaluation:: * Running a function on all layout objects:: @end menu @node Context evaluation @subsection Context evaluation @untranslated @node Running a function on all layout objects @subsection Running a function on all layout objects @untranslated @node Scheme procedures as properties @section Scheme procedures as properties @untranslated @node Using Scheme code instead of \tweak @section Using Scheme code instead of @code{\tweak} @untranslated @node Difficult tweaks @section Difficult tweaks @untranslated