@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: 1c1a90eaa67cdb75cd62c80fc11cd20635e68f93
+ Translation of GIT committish: cef012cb7eef18f4ad00ef6f63afd39c95bd104a
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"
+@c \version "2.12.0"
@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
+está familiarizado con Scheme, le conviene leer nuestro tutorial de
Scheme, @rlearning{Scheme tutorial}.
@menu
LilyPond. La forma general de estas funciones es:
@example
-funcion =
-#(define-music-function (parser location @var{var1} @var{var2}... )
- (@var{var1-type?} @var{var2-type?}...)
+function =
+#(define-music-function (parser location @var{var1} @var{var2}...@var{vari}... )
+ (@var{var1-type?} @var{var2-type?}...@var{vari-type?}...)
#@{
@emph{...música...}
#@})
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}.
+@item @var{vari} @tab @var{i}-ésima variable
+@item @var{vari-type?} @tab tipo de la @var{i}-ésima variable
+@item @var{...música...} @tab entrada normal de LilyPond, usando las variables como @code{#$var1}, etc.
@end multitable
Los siguientes tipos de entrada se pueden usar como variables en una
variables.
@multitable @columnfractions .33 .66
-@headitem Tipo de entrada @tab notación de @var{argi-type?}
+@headitem Tipo de entrada @tab notación de @var{vari-type?}
@item Entero @tab @code{integer?}
@item Flotante (número decimal) @tab @code{number?}
@item Cadena de texto @tab @code{string?}
@item Pareja de variables @tab @code{pair?}
@end multitable
-Los argumentos @code{parser} y @code{location} son obligatorios, y
-se usan en ciertas situaciones avanzadas. El argumento
-@code{parser} se usa para acceder al valor de otra variable de
-LilyPond. El argumento @code{location} 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.
+Los argumentos @code{parser} y @code{location} son obligatorios, y se
+usan en ciertas situaciones avanzadas. El argumento @code{parser} se
+usa para tener acceso al valor de otra variable de LilyPond. El
+argumento @code{location} 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
@node Void functions
@subsection Void functions
-Una función musical debe devolver una expresión musical, per a veces
+Una función musical debe devolver una expresión musical, pero a veces
podemos necesitar una función en la que no hay música en juego (como
la desactivación de la funcionalidad Apuntar y Pulsar). Para hacerlo,
devolvemos una expresión musical @code{void} (vacía).
#@{#@}))
@end example
-Para la imresión real de los números de compás donde se llama a esta
+Para la impresión real de los números de compás donde se llama a esta
función, invoque a @command{lilypond} con
@example
@end example
Esto supone que las variables de entrada y las variables de Scheme se
-pueden intermezclar con libertad. En el ejemplo siguiente, se
+pueden entremezclar con libertad. En el ejemplo siguiente, se
almacena un fragmento musical en la variable @code{traLaLa}, y se
-dupplica utilizando Scheme. El resultado se importa en un bloque
+duplica utilizando Scheme. El resultado se importa en un bloque
@code{\score} por medio de una segunda variable @code{twice}:
@lilypond[verbatim]
@code{ly:export}, un valor de Scheme se interpreta como si hubiera
sido introducido en sintaxis de LilyPond. En vez de definir
@code{\twice}, el ejemplo anterior podría también haberse escrito como
+
@example
-@dots{}
+...
@{ #(ly:export (make-sequential-music (list newLa))) @}
@end example
-El sódigo de Scheme se evalúa tan pronto como el analizador sintáctico
+El código de Scheme se evalúa tan pronto como el analizador sintáctico
lo encuentra. Para definir código de Scheme en un macro (para
llamarlo con posterioridad), use @ref{Void functions}, o bien
expressions}.
@item
-@q{typo} o intterface: cada nombre de música tiene varios @q{tipos} o
+@q{tipo} o interface: cada nombre de música tiene varios @q{tipos} o
interfaces, por ejemplo una nota es un @code{event}, pero también es
un @code{note-event}, un @code{rhythmic-event} y un
@code{melodic-event}. Todas las clases musicales se encuentran
@rinternals{Music properties}.
Una expresión musical compuesta es un objeto musical que contiene
-otros objetos musicales en sus propiedades. Se puede almacernar una
+otros objetos musicales en sus propiedades. Se puede almacenar una
lista de objetos en la propiedad @code{elements} de un objeto musical,
o un solo objeto musical @q{hijo} en la propiedad @code{element}. Por
ejemplo, @rinternals{SequentialMusic} tiene sus hijos en
lilypond archivo.ly >resultado.txt
@end example
-Con la aplicación de un poco de formato, la inforamción anterior es
+Con la aplicación de un poco de formato, la información anterior es
fácil de leer:
@example
como una expresión @code{EventChord} que contiene un objeto
@code{NoteEvent} (que almacena las propiedades de duración y altura) y
cualquier otra información adicional (en este caso, un evento
-@code{AbsoluteDynamicEvent} con una porpiedad de texto @code{"f"}.
+@code{AbsoluteDynamicEvent} con una propiedad de texto @code{"f"}.
@node Music properties
1)))))
@end example
-Las malas noticias son que las espresiones @code{SlurEvent} se deben
+Las malas noticias son que las expresiones @code{SlurEvent} se deben
añadir @q{dentro} de la nota (o más concretamente, dentro de la
expresión @code{EventChord}).
@example
(define (add-marcato event-chord)
"Añadir una ArticulationEvent de marcato a los elementos de `event-chord',
- que se ssupone que es una expresión EventChord."
+ que se supone que es una expresión EventChord."
(let ((result-event-chord (ly:music-deep-copy event-chord)))
(set! (ly:music-property result-event-chord 'elements)
(cons (make-music 'ArticulationEvent
el marcato a su propiedad lista de elementos.
@example
-(set! place new-value)
+(set! lugar valor-nuevo)
@end example
-Aquí, lo que queremos establecer (el @q{place}) es la propiedad
+Aquí, lo que queremos establecer (el @q{lugar}) es la propiedad
@q{elements} de la expresión @code{result-event-chord}.
@example
(ly:music-property result-event-chord 'elements))
@end example
-@code{cons} se usa para añadir un elemento a una lsita sin modificar
+@code{cons} se usa para añadir un elemento a una lista sin modificar
la lista original. Esto es lo que queremos: la misma lista que antes,
más la nueva expresión @code{ArticulationEvent}. El orden dentro de
la propiedad elements no es importante aquí.
@example
addMarcato = #(define-music-function (parser location event-chord)
(ly:music?)
- "Add a marcato ArticulationEvent to the elements of `event-chord',
- which is supposed to be an EventChord expression."
+ "Añadir un ArticulationEvent de marcato a los elementos de `event-chord',
+ que se supone que es una expresión EventChord."
(let ((result-event-chord (ly:music-deep-copy event-chord)))
(set! (ly:music-property result-event-chord 'elements)
(cons (make-music 'ArticulationEvent
@noindent
Este ejemplo muestra las principales reglas de traducción entre la
-sitaxis del marcado normal de LilyPond y la sintaxis del marcado de
+sintaxis del marcado normal de LilyPond y la sintaxis del marcado de
Scheme.
@quotation
lista de marcados, llamado @code{args}. El predicado para listas de
marcados es @code{markup-list?}.
-Em primer lugar, la función toma el ancho del sangrado, una propiedad
+En primer lugar, la función toma el ancho del sangrado, una propiedad
llamada aquí @code{par-indent}, de la lista de propiedades
@code{props}. Si no se encuentra la propiedad, el valor
predeterminado es @code{2}. Después, se hace una lista de líneas
@end example
Observe, sin embargo, que @code{\override}, aplicado a
-@code{NoteMusicalPaperColumn} y a @code{PaperColumn}, aún funciona
-como se espera dentro de los bloques @code{\context.
+@code{NonMusicalPaperColumn} y a @code{PaperColumn}, aún funciona
+como se espera dentro de los bloques @code{\context}.
@end itemize