| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Using music functions
Dondequiera que se necesite reutilizar trucos con distintas expresiones musicales, con frecuencia conviene hacer que el truco forme parte de una función musical. En esta sección estudiaremos solamente las funciones de sustitución, en las que el objeto es sustituir una variable dentro de un fragmento de código de entrada de LilyPond. Se describen otras funciones más complejas en (extending)Funciones musicales sección ‘Funciones musicales’ en Extender.
| 5.6.1 Sintaxis de las funciones de sustitución | ||
| 5.6.2 Ejemplos de funciones de sustitución |
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Substitution function syntax
Es fácil hacer una función que sustituya una variable dentro de código de LilyPond. La forma general de estas funciones es
funcion =
#(define-music-function
(arg1 arg2 …)
(type1? type2? …)
#{
…música…
#})
|
donde
argN | n-ésimo argumento |
typeN? | predicado de tipo de Scheme para el que argN
debe devolver #t. |
…música… | código de entrada normal de LilyPond, que utiliza $ (en los
lugares en que sólo se permiten construcciones de LilyPond) o
# (para usarlo como un valor de Scheme o un argumento de
función musical o música dentro de listas de música) para
referenciar argumentos (p.ej. ‘#arg1’). |
Es necesaria la lista de predicados de tipo. Algunos de los predicados de tipo más comunes que se utilizan en las funciones musicales son:
boolean? cheap-list? (utilizar en lugar de ‘list?’ para un procesado más rápido) ly:duration? ly:music? ly:pitch? markup? number? pair? string? symbol? |
Para ver una lista de los predicados de tipo disponibles, consulte Predicados de tipo predefinidos. También se permiten los predicados de tipo definidos por el usuario.
Referencia de la notación: Predicados de tipo predefinidos.
Expansión de LilyPond: (extending)Funciones musicales sección ‘Funciones musicales’ en Extender.
Archivos instalados: ‘lily/music-scheme.cc’, ‘scm/c++.scm’, ‘scm/lily.scm’.
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] | [Arriba] | [Índice general] | [Índice] | [ ? ] |
@translationof Substitution function examples
Esta sección presenta algunos ejemplos de funciones de sustitución. No pretenden ser exhaustivas, sino demostrar algunas de las posibilidades de las funciones de sustitución sencillas.
En el primer ejemplo se define una función que simplifica el ajuste del relleno de un elemento de inscripción de texto TextScript:
padText = #(define-music-function (padding) (number?) #{ \once \override TextScript.padding = #padding #}) \relative { c''4^"piu mosso" b a b \padText #1.8 c4^"piu mosso" b a b \padText #2.6 c4^"piu mosso" b a b }
Además de números, podemos usar expresiones musicales, como notas, para los argumentos de las funciones musicales:
custosNote = #(define-music-function (note) (ly:music?) #{ \tweak NoteHead.stencil #ly:text-interface::print \tweak NoteHead.text \markup \musicglyph "custodes.mensural.u0" \tweak Stem.stencil ##f #note #}) \relative { c'4 d e f \custosNote g }
Ambas funciones son expresiones únicas sencillas en las que solo
falta el último elemento de una lamada de función o
sobreescritura. Para estas definiciones de función en particular,
existe una sintaxis alternativa más simple que consiste
simplemente en escribir la parte constante de la expresión y
sustituir el elemento final que falta por \etc:
padText = \once \override TextScript.padding = \etc \relative { c''4^"piu mosso" b a b \padText #1.8 c4^"piu mosso" b a b \padText #2.6 c4^"piu mosso" b a b }
custosNote = \tweak NoteHead.stencil #ly:text-interface::print \tweak NoteHead.text \markup \musicglyph "custodes.mensural.u0" \tweak Stem.stencil ##f \etc \relative { c'4 d e f \custosNote g }
Se pueden definir funciones de sustitución con más de un argumento:
tempoPadded = #(define-music-function (padding tempotext) (number? markup?) #{ \once \override Score.MetronomeMark.padding = #padding \tempo \markup { \bold #tempotext } #}) \relative { \tempo \markup { "Low tempo" } c''4 d e f g1 \tempoPadded #4.0 "High tempo" g4 f e d c1 }
| [ < ] | [ > ] | [ << ] | [ Subir ] | [ >> ] |
Este documento ha sido generado por gub el el 13 julio 2020 utilizando texi2html 1.82.
Otros idiomas: English, català, deutsch, français, italiano, 日本語.
Acerca de la selección automática del idioma.