| [ < ] | [ > ] | [ << ] | [ Amunt ] | [ >> ] | [Part superior] | [Continguts] | [Índex] | [ ? ] |
@translationof Using music functions
Sempre que calgui reutilitzar ajustaments amb diferents expressions musicals, freqüentment convé fer que l’ajustament formi part d’una funció musical. En aquesta secció estudiarem sols les funcions de substitució, en les quals l’objecte es substitueix una variable dins d’un fragment de codi d’entrada del LilyPond. Es descriuen altres funcions més complexes a (extending)Music functions section ‘Funcions musicals’ in Extensions.
| 5.6.1 Sintaxi de les funcions de substitució | ||
| 5.6.2 Exemples de funcions de substitució |
| [ < ] | [ > ] | [ << ] | [ Amunt ] | [ >> ] | [Part superior] | [Continguts] | [Índex] | [ ? ] |
@translationof Substitution function syntax
És fàcil fer una funció que substitueixi una variable dins de codi del LilyPond. La forma general d’aquestes funcions és
funcion =
#(define-music-function
(arg1 arg2 …)
(type1? type2? …)
#{
…música…
#})
|
donde
argN | n-èssim argument |
typeN? | predicat de tipus de l’Scheme per al qual argN
ha de retornar #t. |
…música… | codi d’entrada normal del LilyPond, que utilitza $ (en
els llocs en els quals sols es permeten construccions del
LilyPond) o # (per usar-ho com un valor de l’Scheme o un
argument de funció musical o música dins de llistes de música) per
referenciar arguments (per exemple ‘#arg1’). |
Cal la llista de predicats de tipus. Alguns dels predicats de tipus més comuns que es fan servir en les funcions musicals són:
boolean? cheap-list? (utilitzar en lloc de ‘list?’ per processar-ho més ràpid) ly:duration? ly:music? ly:pitch? markup? number? pair? string? symbol? |
Per veure una llista dels predicats de tipus disponibles consulteu Predicats de tipus predefinits. També es permeten els predicats de tipus definits per l’usuari.
Referència de la notació: Predicats de tipus predefinits.
Expansió del LilyPond: (extending)Music functions section ‘Funcions musicals’ in Extensions.
Fitxers instal·lats: ‘lily/music-scheme.cc’, ‘scm/c++.scm’, ‘scm/lily.scm’.
| [ < ] | [ > ] | [ << ] | [ Amunt ] | [ >> ] | [Part superior] | [Continguts] | [Índex] | [ ? ] |
@translationof Substitution function examples
Aquesta secció presenta alguns exemples de funcions de substitució. No pretenen ésser exhaustives, sinó demostrar algunes de les possibilitats de les funcions de substitució senzilles.
En el primer exemple es defineix una funció que simplifica l’ajustament del farcit d’un element d’inscripció de text 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 }
A més de nombre, podem usar expressions musicals, com notes, per als arguments de les funcions musicals:
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 }
Ambdues funcions són expressions úniques senzilles en les quals
sols falta l’últim element d’una crida de funció o
sobreescriptura. Per a aquestes definicions de funció en
particular, hi ha una sintaxi alternativa més simple que
consisteix simplement a escriure la part constant de l’expressió i
substituir l’element final que falta per \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 }
Es poden definir funcions de substitució amb més d’un argument:
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 }
| [ < ] | [ > ] | [ << ] | [ Amunt ] | [ >> ] |
This document was generated by gub on Juliol 13, 2020 using texi2html 1.82.
Altres idiomes: English, deutsch, español, français, italiano, 日本語.
Quant a la selecció automàtica de la llengua.