+@code{\tweak}. Sin embargo, se puede sobreescribir la propiedad @code{tie-configuration} de
+@code{TieColumn} para fijar la línea de inicio y la dirección según se requiera.
+
+@seealso
+Referencia de funcionamiento interno:
+@rinternals{TieColumn}.
+
+
+@node Uso de las funciones musicales
+@section Uso de las funciones musicales
+@translationof Using music functions
+
+@c TODO -- add @seealso, etc. to these subsections
+
+Dondequiera que se necesite reutilizar trucos con distintas
+expresiones musicales, con frecuencia conviene hacer que el truco
+forme parte de una @emph{función musical}. En esta sección
+estudiaremos solamente las funciones de @emph{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
+@rextend{Funciones musicales}.
+
+@menu
+* Sintaxis de las funciones de sustitución::
+* Ejemplos de funciones de sustitución::
+@end menu
+
+@node Sintaxis de las funciones de sustitución
+@subsection Sintaxis de las funciones de sustitución
+@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
+
+@example
+funcion =
+#(define-music-function
+ (parser location @var{arg1} @var{arg2} @dots{})
+ (@var{type1?} @var{type2?} @dots{})
+ #@{
+ @var{@dots{}música@dots{}}
+ #@})
+@end example
+
+@noindent
+donde
+
+@multitable @columnfractions .33 .66
+@item @code{@var{argN}}
+@tab @var{n}-ésimo argumento
+
+@item @code{@var{typeN?}}
+@tab @emph{predicado de tipo} de Scheme para el que @code{@var{argN}}
+debe devolver @code{#t}.
+
+@item @code{@var{@dots{}música@dots{}}}
+@tab entrada de LilyPond normal, que utiliza @code{$} para
+referenciar argumentos (p.ej. @samp{$arg1}).
+@end multitable
+
+
+Los argumentos @code{parser} y @code{location} son necesarios, y se
+utilizan en algunas situaciones avanzadas como se encuentra descrito
+en @rextend{Sintaxis de las funciones musicales}. Para las funciones
+de sustitución, tan sólo hemos de asegurarnos de incluirlos.
+
+También 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:
+
+@example
+boolean?
+cheap-list? @emph{(utilizar en lugar de }@q{list?}@emph{ para un procesado más rápido)}
+ly:music?
+markup?
+number?
+pair?
+string?
+symbol?
+@end example
+
+@noindent
+Para ver una lista de los predicados de tipo disponibles, consulte
+@ref{Predicados de tipo predefinidos}. También se permiten los
+predicados de tipo definidos por el usuario.
+
+
+@seealso
+
+Referencia de la notación:
+@ref{Predicados de tipo predefinidos}.
+
+Expansión de LilyPond:
+@rextend{Sintaxis de las funciones musicales}.
+
+Archivos instalados:
+@file{lily/music-scheme.cc},
+@file{scm/c++.scm},
+@file{scm/lily.scm}.
+
+
+@node Ejemplos de funciones de sustitución
+@subsection Ejemplos de funciones de sustitución
+@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:
+
+@lilypond[quote,verbatim,ragged-right]
+padText =
+#(define-music-function
+ (parser location padding)
+ (number?)
+ #{
+ \once \override TextScript #'padding = $padding
+ #})
+
+\relative c''' {
+ c4^"piu mosso" b a b
+ \padText #1.8
+ c4^"piu mosso" d e f
+ \padText #2.6
+ c4^"piu mosso" fis a g
+}
+@end lilypond
+
+Además de números, podemos usar expresiones musicales, como notas,
+para los argumentos de las funciones musicales:
+
+@c TODO: use a better example (the music argument is redundant).
+
+@lilypond[quote,verbatim,ragged-right]
+custosNote =
+#(define-music-function
+ (parser location note)
+ (ly:music?)
+ #{
+ \once \override Voice.NoteHead #'stencil =
+ #ly:text-interface::print
+ \once \override Voice.NoteHead #'text =
+ \markup \musicglyph #"custodes.mensural.u0"
+ \once \override Voice.Stem #'stencil = ##f
+ $note
+ #})
+
+\relative c' { c4 d e f \custosNote g }
+@end lilypond
+
+Se pueden definir funciones de sustitución con más de un argumento:
+
+@lilypond[quote,verbatim,ragged-right]
+tempoPadded =
+#(define-music-function
+ (parser location padding tempotext)
+ (number? string?)
+ #{
+ \once \override Score.MetronomeMark #'padding = $padding
+ \tempo \markup { \bold $tempotext }
+ #})
+
+\relative c'' {
+ \tempo \markup { "Low tempo" }
+ c4 d e f g1
+ \tempoPadded #4.0 #"High tempo"
+ g4 f e d c1
+}
+@end lilypond