| [ << Alapfogalmak ] | [Top][Contents][Index] | [ A kimenet finomhangolása >> ] |
| [ < Kotta létrehozása az alapoktól ] | [ Up : A sablonok kibővítése ] | [ Partitúra és szólamkották > ] |
3.4.4 Kevesebb gépelés változókkal és függvényekkel
By this point, you’ve seen this kind of thing:
hornNotes = \relative { c''4 b dis c }
\score {
{
\hornNotes
}
}
You may even realize that this could be useful in minimalist music:
fragmentA = \relative { a'4 a8. b16 }
fragmentB = \relative { a'8. gis16 ees4 }
violin = \new Staff {
\fragmentA
\fragmentA
\fragmentB
\fragmentA
}
\score {
{
\violin
}
}
However, you can also use these variables (also known as macros, or user-defined commands) for tweaks:
dolce = \markup { \italic \bold dolce }
padText = { \once \override TextScript.padding = #5.0 }
fthenp=_\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
violin = \relative {
\repeat volta 2 {
c''4._\dolce b8 a8 g a b
\padText
c4.^"hi there!" d8 e' f g d
c,4.\fthenp b8 c4 c-.
}
}
\score {
{
\violin
}
\layout { ragged-right=##t }
}
These variables are obviously useful for saving typing. But they’re worth considering even if you only use them once – they reduce complexity. Let’s look at the previous example without any variables. It’s a lot harder to read, especially the last line.
violin = \relative {
\repeat volta 2 {
c''4._\markup { \italic \bold dolce } b8 a8 g a b
\once \override TextScript.padding = #5.0
c4.^"hi there!" d8 e' f g d
c,4.\markup { \dynamic f \italic \small { 2nd }
\hspace #0.1 \dynamic p }
b8 c4 c-.
}
}
So far we’ve seen static substitution – when LilyPond
sees \padText, it replaces it with the stuff that
we’ve defined it to be (ie the stuff to the right of
padtext=).
LilyPond can handle non-static substitution, too (you can think of these as functions).
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" d e f
\padText #2.6
c4^"piu mosso" fis a g
}
Using variables is also a good way to reduce work if the
LilyPond input syntax changes (see
Updating files with convert-ly). If
you have a single definition (such as \dolce) for all your
input files (see @ref{Style sheets}), then if the syntax changes, you
only need to update your single \dolce definition,
instead of making changes throughout every ‘.ly’ file.
| [ << Alapfogalmak ] | [Top][Contents][Index] | [ A kimenet finomhangolása >> ] |
| [ < Kotta létrehozása az alapoktól ] | [ Up : A sablonok kibővítése ] | [ Partitúra és szólamkották > ] |
![[image of music]](../d9/lily-204c5571.png)
![[image of music]](../43/lily-1c90a1f1.png)
![[image of music]](../95/lily-5cceccc4.png)
![[image of music]](../ac/lily-c0edb50a.png)