| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Using music functions
Quando le modifiche devono essere riusate con diverse espressioni musicali, è spesso conveniente fare in modo che la modifica faccia parte di una funzione musicale. In questa sezione, trattiamo soltanto le funzioni di sostituzione, dove l’obiettivo è sostituire una variabile in un punto del codice di input di LilyPond. Altre funzioni più complesse sono descritte in (extending)Music functions section ‘Music functions’ in Estendere.
| 5.6.1 Sintassi della funzione di sostituzione | ||
| 5.6.2 Esempi della funzione di sostituzione |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Substitution function syntax
Creare una funzione che sostituisca una variabile presente nel codice LilyPond è semplice. La forma generica di queste funzioni è:
funzione =
#(define-music-function
(arg1 arg2 …)
(tipo1? tipo2? …)
#{
…musica…
#})
|
dove
argN | nesimo argomento |
tipoN? | un tipo di predicato Scheme per il quale argN
deve ritornare #t. |
…musica… | il normale input LilyPond, usando $ (nei punti in cui sono
consentiti solo i costrutti LilyPond) o # (per usarlo come un valore
Scheme o come argomento di una funzione musicale o come musica all’interno
di liste di musica) per riferirsi agli argomenti (es: ‘#arg1’). |
La lista del tipo di predicati è obbligatoria. Alcuni dei tipi di predicati più comuni usati nelle funzioni musicali sono:
boolean? cheap-list? (usarlo al posto di ‘list?’ per un'elaborazione più veloce) ly:duration? ly:music? ly:pitch? markup? number? pair? string? symbol? |
Un elenco dei tipi di predicati disponibili si trova in Tipi di predicati predefiniti. Sono consentiti anche tipi di predicati definiti dagli utenti.
Guida alla notazione: Tipi di predicati predefiniti.
Estendere LilyPond: (extending)Music functions section ‘Music functions’ in Estendere.
File installati: ‘lily/music-scheme.cc’, ‘scm/c++.scm’, ‘scm/lily.scm’.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Substitution function examples
Questa sezione presenta alcuni esempi di funzione di sostituzione. L’obiettivo non è fornire un elenco esaustivo, ma mostrare soltanto alcune delle possibilità di semplici funzioni di sostituzione.
Nel primo esempio, viene definita una funzione che semplifica il padding di un oggetto TextScript:
padText = #(define-music-function (padding) (number?) #{ \once \override TextScript.padding = #padding #}) \relative { c''4^"più mosso" b a b \padText #1.8 c4^"più mosso" b a b \padText #2.6 c4^"più mosso" b a b }
Oltre ai numeri, si possono usare come argomenti delle funzioni musicali anche le espressioni musicali, come le note:
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 }
Entrambe queste funzioni sono semplici espressioni singole dove manca soltanto
l’ultimo elemento di una chiamata di una funzione o di una sovrascrittura. Per
queste particolari definizioni di funzione, esiste una sintassi alternativa
più semplice, che consiste nello scrivere interamente la parte costante
dell’espressione e sostituire il suo elemento finale mancante con \etc:
padText = \once \override TextScript.padding = \etc \relative { c''4^"più mosso" b a b \padText #1.8 c4^"più mosso" b a b \padText #2.6 c4^"più 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 }
Si possono definire funzioni di sostituzione con molteplici argomenti:
tempoPadded = #(define-music-function (padding tempotext) (number? markup?) #{ \once \override Score.MetronomeMark.padding = #padding \tempo \markup { \bold #tempotext } #}) \relative { \tempo \markup { "Tempo basso" } c''4 d e f g1 \tempoPadded #4.0 "Tempo alto" g4 f e d c1 }
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] |
This document was generated by gub on Luglio 13, 2020 using texi2html 1.82.
Altre lingue: English, català, deutsch, español, français, 日本語.
A proposito della selezione automatica della lingua.