* only show user-visible changes.
@end ignore
+@item
+The @code{\markuplines} command has been renamed to @code{\markuplist}
+for a better match with its semantics and general Lilypond
+nomenclature.
+
+@item
+The interface for specifying string tunings in tablature has been
+simplified considerably.
+
@item
Beams can now have their slopes preserved over line breaks.
@lilypond[fragment,quote,relative=2]
the beam grob.
@item
-Music, event, and scheme functions can now be defined with optional
-arguments before mandatory arguments.
+In function arguments music, markups and Scheme expressions (as well
+as several other syntactic entities) have become mostly
+interchangeable and are told apart only by evaluating the respective
+predicate.
+
+@item
+Music functions (and their close relatives) can now be defined with
+optional arguments.
+
+@item
+For defining commands executed only for their side-effects,
+@code{define-void-function} is now available.
@item
There is a new @code{define-event-function} command in analogy to
we want to know if a Scheme value is a non-empty list. Instead of:
@example
-(scm_list_p (scm_value) && scm_value != SCM_EOL)
+(scm_is_true (scm_list_p (scm_value)) && scm_value != SCM_EOL)
@end example
-one should use:
+one can usually use:
@example
scm_is_pair (scm_value)
@end example
-since a list of at least one member is considered as a pair.
+since a list of at least one member is a pair. This test is
+cheap; @code{scm_list_p} is actually quite more complex since it makes
+sure that its argument is neither a `dotted list' where the last pair
+has a non-null @code{cdr}, nor a circular list. There are few
+situations where the complexity of those tests make sense.
Unfortunately, there is not a @code{scm_is_[something]} function for
everything. That's one of the reasons why LilyPond has its own Scheme
-interface.
+interface. As a rule of thumb, tests that are cheap enough to be
+worth inlining tend to have such a C interface. So there is
+@code{scm_is_pair} but not @code{scm_is_list}, and @code{scm_is_eq}
+but not @code{scm_is_equal}.
@subheading General definitions
Return @code{true} if @var{b} is @code{SCM_BOOL_T}, else return @code{false}.
-This should be used instead of @code{scm_is_true} and @code{scm_is_false}
-for properties since empty lists are sometimes used to unset them.
+This should be used instead of @code{scm_is_true} and
+@code{scm_is_false} for properties since in Lilypond, unset properties
+are read as an empty list, and by convention unset Boolean properties
+default to false. Since both @code{scm_is_true} and
+@code{scm_is_false} only compare with @code{##f} in line with what
+Scheme's conditionals do, they are not really useful for checking the
+state of a Boolean property.
@subsubheading bool ly_is_[something] (args)
@subsubheading bool is_[type] (SCM s)
Test whether the type of @var{s} is [type].
-[type] is a LilyPond-only type of value (direction, axis...).
+[type] is a LilyPond-only set of values (direction, axis...). More
+often than not, the code checks Lilypond specific C++-implemented
+types using
+
+@subsubheading [type *] unsmob_[type] (SCM s)
+
+This tries converting a Scheme object to a pointer of the desired
+kind. If the Scheme object is of the wrong type, a pointer value
+of@w{ }@code{0} is returned, making this suitable for a Boolean test.
@node Conversion
@subsection Conversion
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@c Translators: Till Paala
Dieser neue Beschriftungslistenbefehl kann wie folgt benutzt werden:
@example
-\markuplines @{
+\markuplist @{
\paragraph @{
Die Kunst des Notensatzes wird auch als \italic @{Notenstich@} bezeichnet. Dieser
Begriff stammt aus dem traditionellen Notendruck. Noch bis vor etwa
Guide, node Updating translation committishes.
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.16"
@c Translators: Till Paala
\mynotes
}
\new TabStaff {
- \contextStringTuning #'custom-tuning <c' g' d'' a''>
+ #(define custom-tuning #{ \stringTuning <c' g' d'' a''> #})
+ \set stringTunings = #custom-tuning
\mynotes
}
>>
Das vorherige Beispiel könnte auch folgenderweise geschrieben werden:
@lilypond[quote,verbatim]
-\makeStringTuning #'custom-tuning <c' g' d'' a''>
+"custom-tuning" = \stringTuning <c' g' d'' a''>
mynotes = {
c'4 e' g' c'' |
Guide, node Updating translation committishes.
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@c Translators: Till Paala
@translationof Table of contents
Ein Inhaltsverzeichnis kann eingefügt werden mit dem Befehl
-@code{\markuplines \table-of-contents}. Die Elemente, die im
+@code{\markuplist \table-of-contents}. Die Elemente, die im
Inhaltsverzeichnis aufgelistet werden sollen, werden mit dem
@code{\tocItem}-Befehl markiert, welches sowohl auf höchster
Ebene als auch in einem musikalischen Ausdruck verwendet werden
kann.
@verbatim
-\markuplines \table-of-contents
+\markuplist \table-of-contents
\pageBreak
\tocItem \markup "Erste Partitur"
(add-toc-item! 'tocActMarkup text))
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocAct \markup { Atto Primo }
\tocItem \markup { Coro. Viva il nostro Alcide }
\tocItem \markup { Cesare. Presti omai l'Egizzia terra }
}
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocItem \markup { Allegro }
\tocItem \markup { Largo }
\markup \null
@c Translators: Till Paala
-@c \version "2.14.0"
+@c \version "2.15.17"
@node Notationsübersicht
@appendix Notationsübersicht
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #clefs
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #clefs
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #timesig
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #timesig
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #numbers
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #numbers
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #accidentals
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #accidentals
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #default-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #default-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #special-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #special-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #shape-note-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #shape-note-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #rests
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #rests
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #flags
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #flags
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #dots
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #dots
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #dynamics
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #dynamics
@end lilypond
@translationof Script glyphs
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #scripts
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #scripts
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #arrowheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #arrowheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #brackettips
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #brackettips
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #pedal
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #pedal
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #accordion
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #accordion
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #vaticana
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #vaticana
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #medicaea
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #medicaea
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #hufnagel
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #hufnagel
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #mensural
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #mensural
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #neomensural
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #neomensural
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #petrucci
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #petrucci
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #solesmes
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #solesmes
@end lilypond
@appendixsec Textbeschriftungslistenbefehle
@translationof Text markup list commands
-Folgende Befehle können mit dem Befehl @code{\markuplines} zusammen
+Folgende Befehle können mit dem Befehl @code{\markuplist} zusammen
benutzt werden:
@include markup-list-commands.tely
Guide, node Updating translation committishes.
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@c Translators: Till Paala
setzen kann. Einzelheiten zu den vielfältigen Möglichkeiten finden
sich in @ref{Textbeschriftung über mehrere Seiten}.
-@funindex \markuplines
+@funindex \markuplist
@funindex \markup
-@funindex markuplines
+@funindex markuplist
@funindex markup
@predefined
@code{\markup},
-@code{\markuplines}.
+@code{\markuplist}.
@endpredefined
@cindex Text über mehrere Seiten
@cindex mehrseitiger Text
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@funindex \justified-lines
@funindex justified-lines
@funindex \wordwrap-lines
fließen zu lassen:
@lilypond[quote,verbatim]
-\markuplines {
+\markuplist {
\justified-lines {
A very long text of justified lines.
...
Installierte Dateien:
@file{scm/define-markup-commands.scm}.
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@predefined
-@code{\markuplines}.
+@code{\markuplist}.
@endpredefined
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@node Interfaces para programadores
@chapter Interfaces para programadores
#(define-markup-list-command (paragraph layout props args) (markup-list?)
#:properties ((par-indent 2))
(interpret-markup-list layout props
- #@{\markuplines \justified-lines @{ \hspace #$par-indent $args @} #@}))
+ #@{\markuplist \justified-lines @{ \hspace #$par-indent $args @} #@}))
@end example
Esta nueva instrucción de lista de marcados se puede usar como sigue:
@example
-\markuplines @{
+\markuplist @{
\paragraph @{
El arte de la tipografía musical se llama \italic @{grabado (en plancha).@}
El término deriva del proceso tradicional de impresión de música.
{
\once \override Stem #'transparent = ##t
\once \override Flag #'transparent = ##t
- \once \override Flag #'transparent = ##t
b8~ b\noBeam
}
\\
{
\once \override Stem #'transparent = ##t
\once \override Flag #'transparent = ##t
- \once \override Flag #'transparent = ##t
\once \override Stem #'length = #8
b8~ b\noBeam
}
\override BarLine #'X-extent = #'(-1 . 1)
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
- \override Flag #'transparent = ##t
\override Beam #'transparent = ##t
\override BarLine #'transparent = ##t
\override TupletNumber #'transparent = ##t
\override NoteHead #'style = #'slash
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
-\override Flag #'transparent = ##t
@end example
Todos estos añadidos tienen que cooperar, y esto se consigue con un
\override NoteHead #'style = #'slash
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
- \override Flag #'transparent = ##t
\alias Voice
@}
@end example
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.16"
@node Instrumentos de cuerda con trastes
@section Instrumentos de cuerda con trastes
\mynotes
}
\new TabStaff {
- \contextStringTuning #'custom-tuning <c' g' d'' a''>
+ #(define custom-tuning #{ \stringTuning <c' g' d'' a''> #})
+ \set stringTunings = #custom-tuning
\mynotes
}
>>
como sigue:
@lilypond[quote,verbatim]
-\makeStringTuning #'custom-tuning <c' g' d'' a''>
+"custom-tuning" = \stringTuning <c' g' d'' a''>
mynotes = {
c'4 e' g' c'' |
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@node Entrada y salida generales
@chapter Entrada y salida generales
@translationof Table of contents
Se puede insertar un índice general o tabla de contenidos utilizando
-la instrucción @code{\markuplines \table-of-contents}. Los elementos
+la instrucción @code{\markuplist \table-of-contents}. Los elementos
que deben aparecer en la tabla de contenidos se introducen con la
instrucción @code{\tocItem}, que se puede usar en el nivel más alto de
la jerarquía del código, o dentro de una expresión musical.
@verbatim
-\markuplines \table-of-contents
+\markuplist \table-of-contents
\pageBreak
\tocItem \markup "Primera partitura"
(add-toc-item! 'tocActMarkup text))
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocAct \markup { Atto Primo }
\tocItem \markup { Coro. Viva il nostro Alcide }
\tocItem \markup { Cesare. Presti omai l'Egizzia terra }
}
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocItem \markup { Allegro }
\tocItem \markup { Largo }
\markup \null
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@node Tablas del manual sobre notación
@appendix Tablas del manual sobre notación
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #clefs
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #clefs
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #timesig
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #timesig
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #numbers
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #numbers
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #accidentals
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #accidentals
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #default-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #default-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #special-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #special-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #shape-note-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #shape-note-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #rests
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #rests
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #flags
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #flags
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #dots
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #dots
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #dynamics
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #dynamics
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #scripts
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #scripts
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #arrowheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #arrowheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #brackettips
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #brackettips
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #pedal
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #pedal
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #accordion
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #accordion
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #ties
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #ties
@end lilypond
@node Glifos de vaticana
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #vaticana
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #vaticana
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #medicaea
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #medicaea
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #hufnagel
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #hufnagel
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #mensural
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #mensural
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #neomensural
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #neomensural
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #petrucci
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #petrucci
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #solesmes
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #solesmes
@end lilypond
@translationof Text markup list commands
Se puede usar cualquiera de las siguientes instrucciones con
-@code{\markuplines}:
+@code{\markuplist}:
@include markup-list-commands.tely
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@node Texto
@section Texto
@funindex \markup
@funindex markup
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@predefined
@code{\markup},
-@code{\markuplines}.
+@code{\markuplist}.
@endpredefined
@cindex marcado, texto de, varias páginas
@cindex texto que ocupa varias páginas
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@funindex \justified-lines
@funindex justified-lines
@funindex \wordwrap-lines
@c KEEP LY
@lilypond[quote,verbatim]
-\markuplines {
+\markuplist {
\justified-lines {
Un texto muy largo de líneas justificadas.
...
@file{scm/define-markup-commands.scm}.
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@predefined
-@code{\markuplines}.
+@code{\markuplist}.
@endpredefined
"
- doctitlees = "Glissando de acordes en tablatura"
\ No newline at end of file
+ doctitlees = "Glissando de acordes en tablatura"
alinear el borde derecho de la marca con la línea divisoria.
"
- doctitlees = "Imprimir marcas al final de una línea"
\ No newline at end of file
+ doctitlees = "Imprimir marcas al final de una línea"
texidoces = "
He aquí un cuadro que muestra todas las articulaciones disponibles:
-"
\ No newline at end of file
+"
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@node Interfaces for programmers
@chapter Interfaces for programmers
@noindent
Some type predicates are specially handled by the parser since it
can't recognize the arguments reliably otherwise. Currently these are
-@code{ly:music?}, @code{ly:pitch?}, and @code{ly:duration?}.
-
-All other predicates can be specified in Scheme syntax if desired
-(introduced with @code{#} or as the result of calling a scheme
-function), but Lilypond will also accept a number of Lilypond
-constructs it can recognize fully without lookahead. Currently, those
-include simple strings (with or without quotes), context
-modifications, full markups and markup lists.
-
-If you really want to input one of the special items as a Scheme rather
-than a LilyPond expression, you may write them as a Scheme expression
-that calls @code{ly:export} at its outermost level.
+@code{ly:pitch?} and @code{ly:duration?}.
+
+Suitability of arguments for all other predicates is determined by
+actually calling the predicate after Lilypond has already converted
+them into a Scheme expression. As a consequence, the argument can be
+specified in Scheme syntax if desired (introduced with @code{#} or as
+the result of calling a scheme function), but Lilypond will also
+convert a number of Lilypond constructs into Scheme before actually
+checking the predicate on them. Currently, those include music,
+simple strings (with or without quotes), full markups and markup
+lists, score, book, bookpart, context definition and output definition
+blocks.
+
+For some kinds of expression (like most music not enclosed in braces)
+Lilypond needs to look further than the expression itself in order to
+determine its end. When such an expression is considered for an
+optional argument by evaluating its predicate, Lilypond can't ``back
+up'' when it decides the expression does not fit the parameter, and
+complains. So in some contexts involving optional arguments, you may
+need extra braces to make them acceptable to Lilypond.
+
+This also applies for music arguments preceding @code{ly:duration?}
+arguments. It may also affect the last argument of a scheme function
+that is used as the last part of another expression, since otherwise
+Lilypond won't know whether following postevents or durations apply to
+the argument of the Scheme function, or to the containing music
+expression.
For a list of available type predicates, see
@ruser{Predefined type predicates}.
values, and the matching continues with the next non-optional argument.
Apart from places where a Scheme value is required, there are a few
-places where @code{#} expressions are accepted and evaluated for their
-side effects but otherwise ignored. Mostly those are the places where
-an assignment would be acceptable as well.
-
-There are a few special places where an argument matching
-@code{ly:music?} has to be either a music identifier or a music
-expression enclosed in @code{@{}@dots{}@code{@}} or
-@code{<<}@dots{}@code{>>} explicitly, so that possibly following
-optional durations or postevents can't be confused with additional
-arguments. One obvious place is before a @code{ly:duration?}
-predicate. Another is as the last argument of a scheme function when it
-is used in a place where such optional parts could be considered either
-part of the music argument or not.
-
-In those rare cases, you have to delimit your music arguments
-appropriately to spare LilyPond from getting confused.
+places where @code{#} expressions are currently accepted and evaluated
+for their side effects but otherwise ignored. Mostly those are the
+places where an assignment would be acceptable as well.
+
+Since it is a bad idea to return values that can be misinterpreted in
+some context, you should use normal scheme functions only for those
+cases where you always return a useful value, and use void scheme
+functions (@pxref{Void scheme functions}) otherwise.
@node Void scheme functions
@subsection Void scheme functions
@funindex define-void-function
+@funindex \void
Sometimes a procedure is executed in order to perform an action rather
than return a value. Some programming languages (like C and Scheme)
\noPointAndClick % disable point and click
@end example
+If you want to evaluate an expression only for its side-effect and
+don't want any value it may return interpreted, you can do so by
+prefixing it with @code{\void}:
+
+@example
+\void #(hashq-set! some-table some-key some-value)
+@end example
+
+That way, you can be sure that Lilypond will not assign meaning to the
+returned value regardless of where it encounters it. This will also
+work for music functions such as @code{\displayMusic}.
+
@node Music functions
@section Music functions
#(define-markup-list-command (paragraph layout props args) (markup-list?)
#:properties ((par-indent 2))
(interpret-markup-list layout props
- #@{\markuplines \justified-lines @{ \hspace #$par-indent $args @} #@}))
+ #@{\markuplist \justified-lines @{ \hspace #$par-indent $args @} #@}))
@end example
This new markup list command can be used as follows:
@example
-\markuplines @{
+\markuplist @{
\paragraph @{
The art of music typography is called \italic @{(plate) engraving.@}
The term derives from the traditional process of music printing.
pitch properties) and any extra information (in this case, an
@code{AbsoluteDynamicEvent} with a @code{"f"} text property.
+@funindex{\void}
+@code{\displayMusic} returns the music it displays, so it will get
+interpreted as well as displayed. To avoid interpretation, write
+@code{\void} before @code{\displayMusic}.
@node Music properties
@subsection Music properties
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.16"
@c Translators: Matthieu Jacquot
@c Translation checkers: Jean-Charles Malahieude
\mynotes
}
\new TabStaff {
- \contextStringTuning #'custom-tuning <c' g' d'' a''>
+ #(define custom-tuning #{ \stringTuning <c' g' d'' a''> #})
+ \set stringTunings = #custom-tuning
\mynotes
}
>>
Nous pourrions donc écrire l'exemple précédent ainsi@tie{}:
@lilypond[quote,verbatim]
-\makeStringTuning #'custom-tuning <c' g' d'' a''>
+"custom-tuning" = \stringTuning <c' g' d'' a''>
mynotes = {
c'4 e' g' c'' |
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@c Translators: Jean-Charles Malahieude, Valentin Villenave
@subsection Table des matières
@translationof Table of contents
-La commande @code{\markuplines \table-of-contents} vous permettra de
+La commande @code{\markuplist \table-of-contents} vous permettra de
générer une table des matières. Les éléments qui la composeront sont
créés par la commande @code{\tocItem}, insérée indépendamment ou au sein
d'une expression musicale.
@verbatim
-\markuplines \table-of-contents
+\markuplist \table-of-contents
\pageBreak
\tocItem \markup "Premier mouvement"
(add-toc-item! 'tocActMarkup text))
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocAct \markup { Atto Primo }
\tocItem \markup { Coro. Viva il nostro Alcide }
\tocItem \markup { Cesare. Presti omai l'Egizzia terra }
}
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocItem \markup { Allegro }
\tocItem \markup { Largo }
\markup \null
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@c Translators: Frédéric Chiasson, Jean-Charles Malahieude
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #clefs
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #clefs
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #timesig
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #timesig
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #numbers
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #numbers
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #accidentals
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #accidentals
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #default-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #default-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #special-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #special-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #shape-note-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #shape-note-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #rests
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #rests
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #flags
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #flags
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #dots
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #dots
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #dynamics
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #dynamics
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #scripts
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #scripts
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #arrowheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #arrowheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #brackettips
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #brackettips
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #pedal
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #pedal
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #accordion
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #accordion
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #ties
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #ties
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #vaticana
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #vaticana
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #medicaea
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #medicaea
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #hufnagel
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #hufnagel
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #mensural
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #mensural
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #neomensural
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #neomensural
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #petrucci
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #petrucci
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #solesmes
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #solesmes
@end lilypond
@translationof Text markup list commands
Les commandes suivantes peuvent être utilisées dans un
-bloc @code{\markuplines @{ @}}.
+bloc @code{\markuplist @{ @}}.
@include markup-list-commands.tely
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@c Translators: Jean-Charles Malahieude
@c Translation checkers: Valentin Villenave, John Mandereau
@funindex \markup
@funindex markup
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@predefined
@code{\markup},
-@code{\markuplines}.
+@code{\markuplist}.
@endpredefined
@cindex markup, texte multi-page
@cindex plusieurs pages de texte
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@funindex \justified-lines
@funindex justified-lines
@funindex \wordwrap-lines
@funindex wordwrap-lines
Alors que @code{\markup} s'utilise pour traiter un bloc de texte
-insécable, @code{\markuplines} permet, employé en tête de partition,
+insécable, @code{\markuplist} permet, employé en tête de partition,
d'obtenir un bloc de lignes réparties différemment et, le cas échéant,
sur plusieurs pages.
@c KEEP LY
@lilypond[quote,verbatim]
-\markuplines {
+\markuplist {
\justified-lines {
Un long texte constitué de lignes justifiées.
...
@file{scm/define-markup-commands.scm}.
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@predefined
-@code{\markuplines}.
+@code{\markuplist}.
@endpredefined
Do not use @ref{} in files in Documentation/included/;
cross-references should be made with specific macros such as
@rcontrib{}, @rextend{}, etc. See Documentation/macros.itexi for a
-complete list.
\ No newline at end of file
+complete list.
@uref{http://www.philholmes.net}
Build unentangler, Bug squad member
+@item Ian Hulin:
+Core developer
+
@item Reinhold Kainhofer:
@email{reinhold@@kainhofer.com},
@uref{http://reinhold.kainhofer.com},
tuning-alist))
#(define (chord-display tuning-alist-entry)
- (let* ((ch-mus (cdr tuning-alist-entry))
- (tuning-symbol (car tuning-alist-entry))
- (ev-chord (car (extract-named-music
- ch-mus
- 'EventChord)))
- (elts (ly:music-property ev-chord 'elements)))
- (music-map (lambda (m)
- (begin
- (if (not (null? (ly:music-property m 'duration)))
- (ly:music-set-property!
- m
- 'duration
- (ly:make-duration 0 0 1 1)))
- m))
- ev-chord)
- (let ((elts (ly:music-property ev-chord 'elements))
- (script (make-music 'TextScriptEvent
- 'direction 1
- 'text (symbol->string tuning-symbol))))
- (ly:music-set-property!
- ev-chord
- 'elements
- (cons script elts)))
- ev-chord))
+ (let* ((tuning-symbol (car tuning-alist-entry))
+ (pitches (cdr tuning-alist-entry)))
+ (make-music 'EventChord
+ 'elements
+ (cons (make-music 'TextScriptEvent
+ 'direction 1
+ 'text (symbol->string tuning-symbol))
+ (map (lambda (pitch)
+ (make-music 'NoteEvent
+ 'duration (ly:make-duration 0 0 1 1)
+ 'pitch pitch))
+ pitches)))))
displayInstrumentDefaultTunings =
#(define-music-function (parser location instrument) (string?)
-\version "2.15.13"
+\version "2.15.17"
#(set-default-paper-size "a4")
\paper {
#:override '(thickness . 0.1) #:box (cdr pair))))
(list-tail (assoc-get 'replacement-alist defs) 3)))))
-\markuplines \justified-lines \show-special-characters
+\markuplist \justified-lines \show-special-characters
\override NoteHead #'style = #'slash
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
-\override Flag #'transparent = ##t
@end example
これらのプラグインすべてが共同する必要があり、@c
\override NoteHead #'style = #'slash
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
- \override Flag #'transparent = ##t
\alias Voice
@}
@end example
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@c Translators: Yoshiki Sawada
@subsection 目次
@translationof Table of contents
-目次は @code{\markuplines \table-of-contents} コマンドを用いて挿入します。@c
+目次は @code{\markuplist \table-of-contents} コマンドを用いて挿入します。@c
目次に表示すべき要素は @code{\tocItem} コマンドで挿入されます
-- このコマンドは最上位あるいは音楽表記の内部で使用します。
@verbatim
-\markuplines \table-of-contents
+\markuplist \table-of-contents
\pageBreak
\tocItem \markup "First score"
(add-toc-item! 'tocActMarkup text))
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocAct \markup { Atto Primo }
\tocItem \markup { Coro. Viva il nostro Alcide }
\tocItem \markup { Cesare. Presti omai l'Egizzia terra }
}
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocItem \markup { Allegro }
\tocItem \markup { Largo }
\markup \null
version that you are working on. See TRANSLATION for details.
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@c Translators: Yoshiki Sawada
@funindex \markup
@funindex markup
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@predefined
@code{\markup},
-@code{\markuplines}
+@code{\markuplist}
@endpredefined
@cindex markup text, multi-page (複数ページにわたるマークアップ テキスト)
@cindex text spread over multiple pages (複数ページに広がるテキスト)
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@funindex \justified-lines
@funindex justified-lines
@funindex \wordwrap-lines
@c KEEP LY
@lilypond[quote,verbatim]
-\markuplines {
+\markuplist {
\justified-lines {
両端揃えされた非常に長いテキスト。
...
インストールされているファイル:
@file{scm/define-markup-commands.scm}.
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@predefined
-@code{\markuplines}
+@code{\markuplist}
@endpredefined
{
\once \override Stem #'transparent = ##t
\once \override Flag #'transparent = ##t
- \once \override Flag #'transparent = ##t
b8~ b\noBeam
}
\\
{
\once \override Stem #'transparent = ##t
\once \override Flag #'transparent = ##t
- \once \override Flag #'transparent = ##t
\once \override Stem #'length = #8
b8~ b\noBeam
}
}
if (useAjax) {
resObject = erzXMLHttpRequestObject ();
-}
\ No newline at end of file
+}
\override BarLine #'X-extent = #'(-1 . 1)
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
- \override Flag #'transparent = ##t
\override Beam #'transparent = ##t
\override BarLine #'transparent = ##t
\override TupletNumber #'transparent = ##t
\override NoteHead #'style = #'slash
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
-\override Flag #'transparent = ##t
@end example
All these plug-ins have to cooperate, and this is achieved with a
\override NoteHead #'style = #'slash
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
- \override Flag #'transparent = ##t
\alias Voice
@}
@end example
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.16"
@node Fretted string instruments
@section Fretted string instruments
@cindex tablature, bass
@cindex tablature, double bass
-@funindex StringTunings
+@funindex stringTunings
LilyPond tablature automatically calculates the fret for
a note based on the string to which the note is assigned.
@code{banjo-open-g-tuning}. The predefined string tunings
are found in @file{ly/string-tuning-init.ly}.
-@funindex contextStringTunings
-@funindex \contextStringTunings
+@funindex stringTuning
+@funindex \stringTuning
@cindex tablature, custom string tunings
@cindex custom string tunings
Any desired string tuning can be created. The
-@code{\contextStringTuning} function can be
-used to define a string tuning and set it as the
-@code{stringTunings} for the current context.
-@code{\contextStringTuning} takes two arguments: the
-symbol in which the string tuning will be stored,
-and a chord construct
-that defines the pitches of each string in the tuning.
+@code{\stringTuning} function can be
+used to define a string tuning which can be used
+to set @code{stringTunings} for the current context.
+
+Its argument is a chord construct
+defining the pitches of each string in the tuning.
The chord construct must be in absolute octave mode,
see @ref{Absolute octave entry}. The string
with the highest number (generally the lowest string) must
\mynotes
}
\new TabStaff {
- \contextStringTuning #'custom-tuning <c' g' d'' a''>
+ \set stringTunings = \stringTuning <c' g' d'' a''>
\mynotes
}
>>
The @code{stringTunings} property is also used by
@code{FretBoards} to calculate automatic fret diagrams.
-@funindex makeStringTuning
-@funindex \makeStringTuning
-
String tunings are used as part of the hash key
for predefined fret diagrams
-(see @ref{Predefined fret diagrams}). The @code{\makeStringTuning}
-function is used to create a string tuning without setting the
-@code{stringTunings} property in the current context. The
-arguments to @code{\makeStringTuning} are the symbol to be
-used for the new string tuning and a chord construct used
-to define the tuning.
+(see @ref{Predefined fret diagrams}).
+
The previous example could also be written as follows:
@lilypond[quote,verbatim]
-\makeStringTuning #'custom-tuning <c' g' d'' a''>
+"custom-tuning" = \stringTuning <c' g' d'' a''>
mynotes = {
c'4 e' g' c'' |
object. Pitch objects are created with the Scheme function
@code{ly:make-pitch} (see @ref{Scheme functions}).
-If desired, a string tuning can be created as a Scheme
-literal. The example below recreates the examples above,
-but the string tuning is not saved as a separate object:
-
-@lilypond[quote,verbatim]
-mynotes = {
- c'4 e' g' c'' |
- e''4 g'' b'' c'''
-}
-
-<<
- \new Staff {
- \clef treble
- \mynotes
- }
- \new TabStaff {
- \set TabStaff.stringTunings = #`(,(ly:make-pitch 1 5 0)
- ,(ly:make-pitch 1 1 0)
- ,(ly:make-pitch 0 4 0)
- ,(ly:make-pitch 0 0 0))
- \mynotes
- }
->>
-@end lilypond
+@code{\stringTuning} creates such an object from chord input.
LilyPond automatically calculates the number of lines in the
@code{TabStaff} and the number of strings in an automatically
calculated @code{FretBoard} as the number of elements
in @code{stringTunings}.
+To let all TabStaff contexts use the same custom tuning by default,
+you can use
+
+@example
+\layout @{
+ \context @{
+ \TabStaff
+ stringTunings = \stringTuning \notemode @{ <c' g' d'' a''> @}
+ @}
+@}
+@end example
+
+
@cindex moderntab clef
@cindex clef, moderntab
@cindex clef, tab
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@node General input and output
@chapter General input and output
@node Table of contents
@subsection Table of contents
-A table of contents is included using the @code{\markuplines \table-of-contents}
+A table of contents is included using the @code{\markuplist \table-of-contents}
command. The elements which should appear in the table of contents are
entered with the @code{\tocItem} command, which may be used either at
top-level, or inside a music expression.
@verbatim
-\markuplines \table-of-contents
+\markuplist \table-of-contents
\pageBreak
\tocItem \markup "First score"
(add-toc-item! 'tocActMarkup text))
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocAct \markup { Atto Primo }
\tocItem \markup { Coro. Viva il nostro Alcide }
\tocItem \markup { Cesare. Presti omai l'Egizzia terra }
}
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\tocItem \markup { Allegro }
\tocItem \markup { Largo }
\markup \null
more realistic MIDI output is available by means of
@ref{The Articulate script}.
-@c TODO Check this
-The midi output allocates a channel for each staff, and one for global
-settings. Therefore the midi file should not have more than 15 staves
-(or 14 if you do not use drums). Other staves will remain silent.
+The MIDI output allocates a channel for each staff, and reserves channel
+10 for drums. There are only 16 MIDI channels per device, so if the
+score contains more than 15 staves, MIDI channels will be reused.
@menu
* Creating MIDI files::
@funindex \displayLilyMusic
Displaying a music expression in LilyPond notation can be
-done with the music function @code{\displayLilyMusic} but only when
-using the command line. For example,
+done with the music function @code{\displayLilyMusic}. To see the
+output, you will typically want to call LilyPond using the command
+line. For example,
@example
@{
lilypond file.ly >display.txt
@end example
+@funindex \void
+Note that Lilypond does not just display the music expression, but
+also interprets it (since @code{\displayLilyMusic} returns it in
+addition to displaying it). This is convenient since you can just
+insert @code{\displayLilyMusic} into existing music in order to get
+information about it. If you don't actually want Lilypond to
+interpret the displayed music as well as display it, use @code{\void}
+in order to have it ignored:
+
+@example
+@{
+ \void \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
+@}
+@end example
+
@node Displaying scheme music expressions
@subsection Displaying scheme music expressions
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@node Notation manual tables
@appendix Notation manual tables
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #clefs
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #clefs
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #timesig
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #timesig
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #numbers
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #numbers
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #accidentals
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #accidentals
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #default-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #default-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #special-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #special-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #shape-note-noteheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #shape-note-noteheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #rests
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #rests
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #flags
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #flags
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #dots
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #dots
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #dynamics
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #dynamics
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #scripts
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #scripts
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #arrowheads
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #arrowheads
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #brackettips
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #brackettips
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #pedal
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #pedal
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #accordion
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #accordion
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #ties
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #ties
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #vaticana
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #vaticana
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #medicaea
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #medicaea
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #hufnagel
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #hufnagel
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #mensural
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #mensural
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #neomensural
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #neomensural
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #petrucci
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #petrucci
@end lilypond
@lilypond[quote]
\include "font-table.ly"
-\markuplines \override-lines #'(word-space . 4)
- \doc-chars #solesmes
+\markuplist \override-lines #'(word-space . 4)
+ \doc-chars #solesmes
@end lilypond
@node Text markup list commands
@appendixsec Text markup list commands
-The following commands can all be used with @code{\markuplines}:
+The following commands can all be used with @code{\markuplist}:
@include markup-list-commands.tely
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.14.0"
+@c \version "2.15.17"
@node Text
@section Text
@funindex \markup
@funindex markup
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@predefined
@code{\markup},
-@code{\markuplines}.
+@code{\markuplist}.
@endpredefined
@cindex markup text, multi-page
@cindex text spread over multiple pages
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@funindex \justified-lines
@funindex justified-lines
@funindex \wordwrap-lines
pages:
@lilypond[quote,verbatim]
-\markuplines {
+\markuplist {
\justified-lines {
A very long text of justified lines.
...
@file{scm/define-markup-commands.scm}.
-@funindex \markuplines
-@funindex markuplines
+@funindex \markuplist
+@funindex markuplist
@predefined
-@code{\markuplines}.
+@code{\markuplist}.
@endpredefined
sodipodi:rx="7.8389831"
sodipodi:ry="8.8188562"
d="m 103.86653,28.416313 a 7.8389831,8.8188562 0 1 1 -15.677971,0 7.8389831,8.8188562 0 1 1 15.677971,0 z"
- transform="matrix(0.8,0,0,-0.8,1.9597458,92.108051)" /></g></svg>
\ No newline at end of file
+ transform="matrix(0.8,0,0,-0.8,1.9597458,92.108051)" /></g></svg>
+
+
+
%% Translation of GIT committish: 2d548a99cb9dba80f2ff035582009477cd37eceb
texidoces = "
+
+
+
%% Translation of GIT committish: 2d548a99cb9dba80f2ff035582009477cd37eceb
texidoces = "
Se pueden establecer las propiedades de los diagramas de
lsrtags = "fretted-strings"
-%% Translation of GIT committish: cde045f4e833aa491fb63f2222e14bef49507577
- texidoces = "
-
-Se pueden añadir diagramas de posiciones predefinidas para
-instrumentos nuevos además de los estándar que se usan para la
-guitarra. Este archivo muestra cómo se hace, definiendo una afinación
-nueva y unas cuantas posiciones para el cuatro venezolano.
-
-Este archivo también muestra cómo se pueden incluir las digitaciones
-en los acordes que se usan como puntos de referencia para la búsqueda
-de acordes en la tabla, y mostrarse en el diagrama de posiciones y la
-tablatura @code{TabStaff}, pero no en la música.
-
-Estas posiciones no se pueden transportar porque contienen información
-de las cuerdas. Hay planes para corregir esto en un futuro.
-
-"
- doctitlees = "Definición de posiciones predefinidas para otros instrumentos"
-
-
-%% Translation of GIT committish: f23429bc5cfa9d141ef7b4509afc46c140308a1e
- texidocde = "
-Vordefinierte Bunddiagramme können für neue Instrumente hinzugefügt werden
-neben denen, die schon für die Gitarre definiert sind. Dieses Schnipsel
-zeigt, wie man eine neue Saitenstimmung definiert und dann eigene vordefinierte
-Bunddiagramme bestimmt. Das Beispiel ist für das venezualische Cuatro.
-
-Dieses Schnipsel zeigt auch, wie Fingersatz in die Akkorde eingebunden
-werden kann, um als Referenzpunkt für die Akkordauswahl benutzt werden
-kann. Dieser Fingersatz wird im Bunddiagramm und in der Tabulatur,
-aber nicht in den Noten angezeigt.
-
-Diese Bunddiagramme sind nicht transponierbar, weil sie Saiteninformationen
-enthalten. Das soll in der Zukunft verbessert werden.
-
-"
- doctitlede = "Eigene vordefinierte Bunddiagramme für andere Instrumente erstellen"
-
-%% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
-
- texidocfr = "
-La liste des diagrammes standards prédéfinis pour la guitare peut être
-augmentée d'autres définitions spécifiques à d'autres instruments.
-Voici comment définir un nouvel accordage ainsi que quelques diagrammes
-prédéfinis pour le @qq{cuatro vénézuélien}.
-
-Cet exemple illustre aussi la manière d'ajouter des doigtés aux
-accords ; ils serviront de référence pour la boucle d'accord et seront
-indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans la musique.
-
-Ces diagrammes ne peuvent pas être transposés, dans la mesure où ils
-contiennent des informations sur les cordes. Ceci est amené à évoluer.
-
-"
- doctitlefr = "Création de diagrammes de fret prédéfinis pour d'autres instruments"
-
-
texidoc = "
Predefined fret diagrams can be added for new instruments in addition
to the standards used for guitar. This file shows how this is done by
% and then run scripts/auxiliar/makelsr.py
%
% This file is in the public domain.
-%% Note: this file works from version 2.14.0
+%% Note: this file works from version 2.15.10
\version "2.15.10"
\header {
hideFretNumber = {
\once \override TabNoteHead #'transparent = ##t
\once \override NoteHead #'transparent = ##t
- \once \override Stem #'transparent = ##t \once \override Flag #'transparent = ##t
+ \once \override Stem #'transparent = ##t
\once \override Flag #'transparent = ##t
\once \override NoteHead #'no-ledgers = ##t
\once \override Glissando #'(bound-details left padding) = #0.3
%% and then run scripts/auxiliar/makelsr.py
%%
%% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.17"
\header {
lsrtags = "text"
texidoc = "
Text that can spread over pages is entered with the
-@code{\\markuplines} command.
+@code{\\markuplist} command.
"
doctitle = "Markup lines"
(make-justified-lines-markup-list (cons (make-hspace-markup 2) args))))
% Candide, Voltaire
-\markuplines {
+\markuplist {
\override-lines #'(baseline-skip . 2.5) {
\paragraph {
Il y avait en Westphalie, dans le château de M. le baron de
\once \override NoteHead #'transparent = ##t
\once \override Stem #'transparent = ##t
\once \override Flag #'transparent = ##t
- \once \override Flag #'transparent = ##t
\once \override NoteHead #'no-ledgers = ##t
\once \override Glissando #'(bound-details left padding) = #0.3
}
%% and then run scripts/auxiliar/makelsr.py
%%
%% This file is in the public domain.
-\version "2.14.0"
+\version "2.15.17"
\header {
lsrtags = "paper-and-layout"
texidoc = "
-A table of contents is included using @code{\\markuplines
+A table of contents is included using @code{\\markuplist
\\table-of-contents}. The TOC items are added with the
@code{\\tocItem} command.
#(set-default-paper-size "a6")
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\pageBreak
\tocItem \markup { The first score }
\score {
@c used for news about the upcoming release; see CG 10.2
+@newsItem
+@subsubheading LilyPond 2.15.16 released! @emph{October 28, 2011}
+
+We are happy to announce the release of LilyPond 2.15.16. This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version. Please
+note that due to a few Critical bugs, this is not the next release
+candidate.
+
+@newsEnd
+
+
@newsItem
@subsubheading LilyPond 2.15.15 released! @emph{October 24, 2011}
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=15
-PATCH_LEVEL=16
+PATCH_LEVEL=17
MY_PATCH_LEVEL=
VERSION_STABLE=2.14.2
-VERSION_DEVEL=2.15.15
+VERSION_DEVEL=2.15.16
{
}
+ vector<T, A> (size_t n) : __flower_vector<T, A> (n)
+ {
+ }
+
vector<T, A> (vector<T, A> const &v) : __flower_vector<T, A> (v)
{
}
\new Voice \with { \consists Ambitus_engraver } {
c'4( es')
}
-}
\ No newline at end of file
+}
bd4 sn4 bd4 sn4
}
}
-}
\ No newline at end of file
+}
\new Staff { \clef "treble_8" \test }
\new TabStaff { \test }
>>
-}
\ No newline at end of file
+}
\unset suggestAccidentals
c'8 [ des'' ]
r2
-}
\ No newline at end of file
+}
\relative c'{
d16 e f \grace d'8 g,16
-}
\ No newline at end of file
+}
c32[ c32 r16 c8]
c16[ r32 c32 r16 c16]
c16[ r16 c32 r32 c16]
-}
\ No newline at end of file
+}
-\version "2.14.0"
+\version "2.15.17"
\header {
texidoc = "A book can be split into several parts with different paper settings,
\tocItem \markup "Third part"
\markup { Third part }
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
}
\once \override Staff.KeySignature #'break-align-anchor-alignment = #RIGHT
\mark \default
ces1
-}
\ No newline at end of file
+}
\mark \default
\noBreak
c'1
-}
\ No newline at end of file
+}
{
<c''' d'' g''>4^"absolute" q q q
\relative c' { <c'' d, g>4^"relative" q q q }
-}
\ No newline at end of file
+}
-\version "2.14.0"
+\version "2.15.16"
\header {
texidoc="
\mynotes
}
\new TabStaff {
- \contextStringTuning #'custom-tuning <c' g' d'' a''>
+ #(define custom-tuning #{ \stringTuning <c' g' d'' a''> #})
+ \set stringTunings = #custom-tuning
\mynotes
}
>>
<12 5>4.
<12 5>4.
r4
-}
\ No newline at end of file
+}
\override Fingering #'direction = #down
\transpose c c, \music }
>>
-}
\ No newline at end of file
+}
\override NoteHead #'no-ledgers = ##t
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
- \override Flag #'transparent = ##t
\override Beam #'transparent = ##t
<< \skips
\new Staff = "Staff_pfLower" << \lower >>
>>
>>
-}
\ No newline at end of file
+}
</textobject>
</inlinemediaobject>
</chapter>
-</book>
\ No newline at end of file
+</book>
\end{lilypond}
-\end{document}
\ No newline at end of file
+\end{document}
-\version "2.14.0"
+\version "2.15.17"
\header {
texidoc = "Text that can spread over pages is entered with the
-@code{\\markuplines} command. It can be assigned to a variable and inserted
-at top-level with or without preceding it by @code{\\markuplines}."
+@code{\\markuplist} command. It can be assigned to a variable and inserted
+at top-level with or without preceding it by @code{\\markuplist}."
}
#(set-default-paper-size "a6")
-mytext = \markuplines {
+mytext = \markuplist {
\justified-lines {
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed
eiusmod tempor incidunt ut labore et dolore magna aliqua. ...
}
}
-\markuplines \mytext
+\markuplist \mytext
\mytext
-\version "2.14.0"
+\version "2.15.17"
\header {
tagline = ##f
texidoc = "Text that can spread over pages is entered with the
-@code{\\markuplines} command. Widowed and orphaned lines are avoided
-at the begininng and end of a @code{\\markuplines} containing more
+@code{\\markuplist} command. Widowed and orphaned lines are avoided
+at the begininng and end of a @code{\\markuplist} containing more
than one line."
}
(interpret-markup-list layout props
(make-justified-lines-markup-list (cons (make-hspace-markup 2) args))))
\book {
- \markuplines {} % Empty list is handled gracefully
+ \markuplist {} % Empty list is handled gracefully
%% Candide, Voltaire
- \markuplines \override-lines #'(baseline-skip . 3.0) {
+ \markuplist \override-lines #'(baseline-skip . 3.0) {
\paragraph { % The final two lines are placed on page 2.
Il y avait en Westphalie, dans le château de M. le baron de
Thunder-ten-tronckh, un jeune garçon à qui la nature avait donné
perdu par l'injure du temps. (not orphaned)
}
}
- \markuplines \override-lines #'(baseline-skip . 3.9) {
+ \markuplist \override-lines #'(baseline-skip . 3.9) {
\paragraph {
Monsieur le baron était un des plus puissants seigneurs de la
Westphalie, car son château avait une porte et des fenêtres. Sa
riaient quand il faisait des contes.
}
}
- \markuplines {
+ \markuplist {
\paragraph { % A single-line paragraph may be orphaned
Madame la ... (may be orphaned)
}
\guitar
}
>>
-}
\ No newline at end of file
+}
\guitar
}
>>
-}
\ No newline at end of file
+}
* 75 ... Other instrumental notation
* 90 ... Compressed MusicXML files
* 99 ... Compatibility with broken MusicXML
-@end menu
\ No newline at end of file
+@end menu
-\version "2.14.0"
+\version "2.15.17"
-\markuplines \wordwrap-lines {
+\markuplist \wordwrap-lines {
This regtest does not contain any header and paper blocks. Its purpose is to
test whether anything breaks if these blocks are absent.
}
}
{ c'1 \break c'1 \break \noPageBreak c'1 \break c'1 }
-}
\ No newline at end of file
+}
}
{ \repeat unfold 11 { c'1 } \pageBreak \repeat unfold 6 { c'1 } }
-}
\ No newline at end of file
+}
\book {
\paper { page-count = 2}
\score { {c'1 c'1} }
-}
\ No newline at end of file
+}
\book {
\paper { page-count = 3}
\score { {c'1 c'1} }
-}
\ No newline at end of file
+}
\book {
\paper { page-count = 1}
\score { { \repeat unfold 10 {c'1 \break} } }
-}
\ No newline at end of file
+}
\book {
\repeat unfold 2
{ \mark \markup \column {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} c1 \break }
-}
\ No newline at end of file
+}
}
{ \repeat unfold 3 { c'1 } \pageBreak \repeat unfold 3 { c'1 } }
-}
\ No newline at end of file
+}
-\version "2.14.0"
+\version "2.15.17"
\header {
texidoc = "Page labels on loose columns are not ignored: this includes both mid-line
#(set-default-paper-size "a6")
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\relative c' {
c2 \tocItem "Mid-line" c^"mid"
}
\header { piece = "First score" }
}
-}
\ No newline at end of file
+}
\book {
\markup { \with-link #'dummy \concat { "Link to non-existing label" } }
-}
\ No newline at end of file
+}
d' d'
}
}
-}
\ No newline at end of file
+}
\markup \textBox
\markup \textBox
\markup \textBox
-}
\ No newline at end of file
+}
\new Staff \repeat unfold 12 { g'4 }
>>
}
-}
\ No newline at end of file
+}
\new Staff c'1
\new Staff c'1
>>
-}
\ No newline at end of file
+}
-\version "2.14.0"
+\version "2.15.17"
\header {
texidoc = "Adjacent lines of markup are placed as closely
\paper {
ragged-last-bottom = ##f
}
- \markuplines {
+ \markuplist {
\column { A B } C D E
}
}
\new Staff c'1
>>
>>
-}
\ No newline at end of file
+}
\score
{
\new Staff c'1
-}
\ No newline at end of file
+}
is not printed as ragged."
}
-{ \repeat unfold 9 {a b c d} }
\ No newline at end of file
+{ \repeat unfold 9 {a b c d} }
ragged-right = ##f
}
-{ a b c d }
\ No newline at end of file
+{ a b c d }
is printed as ragged by default."
}
-{ a b c d }
\ No newline at end of file
+{ a b c d }
\repeat tremolo 12 { c64 e64 }
\repeat tremolo 14 { c64 e64 }
\repeat tremolo 15 { c64 e64 }
->>
\ No newline at end of file
+>>
\score { \relative c' {
c8 \repeat "tremolo" 14 { c32 a32 } |
}
-}
\ No newline at end of file
+}
<<
\relative c'' { c4 d e f }
\\ \relative c' { c4 d e f }
->>
\ No newline at end of file
+>>
a2( b4 c)
% ^ extra SlurEvent
}
-%% END
\ No newline at end of file
+%% END
{
c'4 c' \bar "" c' c' \break
\repeat unfold 10 { c' c' c' c' \bar "" \noBreak }
-}
\ No newline at end of file
+}
\new Staff = "lh" \relative c' {
s2.
}
->>
\ No newline at end of file
+>>
\clef bass
\repeat unfold 12 { \rh a'16 \lh d \rh a' \lh d \noBreak }
}
->>
\ No newline at end of file
+>>
\new Voice \foo
\new Voice \bar
>>
-}
\ No newline at end of file
+}
\override NoteSpacing #'space-to-barline = ##f
c'2 c'2
c'1
-}
\ No newline at end of file
+}
-\version "2.14.0"
+\version "2.15.17"
\header {
texidoc = "
notes = \relative c' {
\time 3/4
<f d>4. <bes>8 <g e>4
- \set fretLabels = #`("a" "b" ,(markup #:italic #:smaller "c"))
+ \set fretLabels = \markuplist {"a" "b" \italic \smaller "c"}
<f d>4. <bes>8 <g e>4
- \set fretLabels = #`(,(markup #:with-color red "a")
+ \set fretLabels = \markuplist {\with-color #red "a"
"b"
- ,(markup #:italic #:smaller "c"))
+ \italic \smaller "c"}
<f d>4. <bes>8 <g e>4
- \set fretLabels = #'("α" "β" "γ")
+ \set fretLabels = \markuplist {"α" "β" "γ"}
<f d>4. <bes>8 <g e>4
}
\score {
\new TabStaff
\with {
- stringTunings = #`(,(ly:make-pitch 1 3 0)
- ,(ly:make-pitch 1 1 0)
- ,(ly:make-pitch 0 5 0)
- ,(ly:make-pitch 0 3 0)
- ,(ly:make-pitch 0 1 0)
- ,(ly:make-pitch -1 5 0))
+ stringTunings = \stringTuning \notemode { <a d' f' a' d'' f''> }
tablatureFormat = #fret-letter-tablature-format
}
\new TabVoice {
-\version "2.14.0"
+\version "2.15.16"
\header {
\new TabStaff {
- \set TabStaff.stringTunings = #`(,(ly:make-pitch 0 3 0)
- ,(ly:make-pitch 0 5 SHARP)
- ,(ly:make-pitch 1 1 SHARP)
- ,(ly:make-pitch 1 4 SHARP))
+ \set TabStaff.stringTunings = \stringTuning <gis'' dis'' ais' f'>
\relative c'' { c4 d e f }
}
-\version "2.14.0"
+\version "2.15.17"
\header {
texidoc = "A table of contents is included using
-@code{\\markuplines \\table-of-contents}. The toc items are added with
+@code{\\markuplist \\table-of-contents}. The toc items are added with
the @code{\\tocItem} command. In the PDF backend, the toc items are linked
to the corresponding pages."
}
#(set-default-paper-size "a6")
\book {
- \markuplines \table-of-contents
+ \markuplist \table-of-contents
\pageBreak
\tocItem \markup "The first score"
{ e' }
\header { piece = "Second score" }
}
-}
\ No newline at end of file
+}
/* properties */
"style "
"stroke-style "
- );
\ No newline at end of file
+ );
/*
ALIST
*/
-
-// This one is used nowhere.
-bool
-ly_is_alist_equal (SCM a, SCM b)
-{
- if (!scm_is_pair (a) || !scm_is_pair (b))
- return false;
- for (SCM s = a; scm_is_pair (s); s = scm_cdr (s))
- {
- SCM key = scm_caar (s);
- SCM val = scm_cdar (s);
- SCM l = scm_assoc (key, b);
-
- if (scm_is_false (l) || !ly_is_equal (scm_cdr (l), val))
- return false;
- }
- return true;
-}
-
SCM
ly_alist_vals (SCM alist)
{
{"lyricsto", LYRICSTO},
{"mark", MARK},
{"markup", MARKUP},
- {"markuplines", MARKUPLINES},
+ {"markuplist", MARKUPLIST},
{"midi", MIDI},
{"name", NAME},
{"new", NEWCONTEXT},
}
return font_list;
-}
\ No newline at end of file
+}
%right FUNCTION_ARGUMENTS
MARKUP LYRICS_STRING MARKUP_IDENTIFIER STRING STRING_IDENTIFIER
- MARKUPLINES WITH CONTEXT_MOD_IDENTIFIER MARKUPLINES_IDENTIFIER
+ MARKUPLIST WITH CONTEXT_MOD_IDENTIFIER MARKUPLIST_IDENTIFIER
SCORE BOOK BOOKPART PAPER LAYOUT MIDI
SEQUENTIAL SIMULTANEOUS DOUBLE_ANGLE_OPEN MUSIC_IDENTIFIER '{'
PITCH_IDENTIFIER NOTENAME_PITCH TONICNAME_PITCH
%token LYRICSTO "\\lyricsto"
%token MARK "\\mark"
%token MARKUP "\\markup"
-%token MARKUPLINES "\\markuplines"
+%token MARKUPLIST "\\markuplist"
%token MIDI "\\midi"
%token NAME "\\name"
%token NOTEMODE "\\notemode"
%token <scm> MARKUP_FUNCTION
%token <scm> MARKUP_LIST_FUNCTION
%token <scm> MARKUP_IDENTIFIER
-%token <scm> MARKUPLINES_IDENTIFIER
+%token <scm> MARKUPLIST_IDENTIFIER
%token <scm> MUSIC_FUNCTION
%token <scm> MUSIC_IDENTIFIER
%token <scm> NOTENAME_PITCH
| full_markup {
$$ = $1;
}
+ | full_markup_list
+ {
+ $$ = $1;
+ }
;
scalar:
;
full_markup_list:
- MARKUPLINES_IDENTIFIER {
+ MARKUPLIST_IDENTIFIER {
$$ = $1;
}
- | MARKUPLINES
+ | MARKUPLIST
{ PARSER->lexer_->push_markup_state (); }
markup_list {
$$ = $3;
;
markup_list:
- MARKUPLINES_IDENTIFIER {
+ MARKUPLIST_IDENTIFIER {
$$ = $1;
}
| markup_composed_list {
return MARKUP_IDENTIFIER;
} else if (Text_interface::is_markup_list (sid)) {
*destination = sid;
- return MARKUPLINES_IDENTIFIER;
+ return MARKUPLIST_IDENTIFIER;
}
return -1;
return a == b ? SCM_BOOL_T : SCM_BOOL_F;
}
+LY_DEFINE (ly_make_spring, "ly:make-spring",
+ 2, 0, 0, (SCM ideal, SCM min_dist),
+ "Make a spring. @var{ideal} is the ideal distance of the"
+ " spring, and @var{min-dist} is the minimum distance.")
+{
+ LY_ASSERT_TYPE (scm_is_number, ideal, 1);
+ LY_ASSERT_TYPE (scm_is_number, min_dist, 2);
+
+ Spring s (scm_to_double (ideal), scm_to_double (min_dist));
+
+ return s.smobbed_copy ();
+}
+
+LY_DEFINE (ly_spring_set_inverse_compress_strength_x, "ly:spring-set-inverse-compress-strength!",
+ 2, 0, 0, (SCM spring, SCM strength),
+ "Set the inverse compress @var{strength} of @var{spring}.")
+{
+ LY_ASSERT_SMOB (Spring, spring, 1);
+ LY_ASSERT_TYPE (scm_is_number, strength, 2);
+
+ Spring *s = unsmob_spring (spring);
+ s->set_inverse_compress_strength (scm_to_double (strength));
+ return s->smobbed_copy ();
+}
+
+LY_DEFINE (ly_spring_set_inverse_stretch_strength_x, "ly:spring-set-inverse-stretch-strength!",
+ 2, 0, 0, (SCM spring, SCM strength),
+ "Set the inverse stretch @var{strength} of @var{spring}.")
+{
+ LY_ASSERT_SMOB (Spring, spring, 1);
+ LY_ASSERT_TYPE (scm_is_number, strength, 2);
+
+ Spring *s = unsmob_spring (spring);
+ s->set_inverse_stretch_strength (scm_to_double (strength));
+ return s->smobbed_copy ();
+}
+
+IMPLEMENT_TYPE_P (Spring, "ly:spring?");
#include "lookup.hh"
#include "dimensions.hh"
#include "output-def.hh"
+#include "paper-column.hh"
#include "warn.hh"
#include "item.hh"
#include "staff-symbol-referencer.hh"
{
Item *x = sp->get_bound (d);
- span_points[d] = x->relative_coordinate (common, X_AXIS);
- if (!x->break_status_dir ()
- && !x->extent (x, X_AXIS).is_empty ())
- span_points[d] += x->extent (x, X_AXIS)[d];
+ span_points[d] = ((!x->break_status_dir ()
+ && !x->extent (x, X_AXIS).is_empty ())
+ ? Paper_column::break_align_width (x, ly_symbol2scm ("break-alignment"))[d]
+ : x->relative_coordinate (common, X_AXIS));
}
span_points[d] -= d * t / 2;
Direction dir = (Direction)sign (pos - nearest_line);
if (scm_is_pair (ledger_positions))
+ // custom ledger line positions
{
Real min_pos = HUGE_VAL;
Real max_pos = -HUGE_VAL;
int n = (int) floor ((ledger_fill[DOWN] - min_pos) / cycle);
Real current;
SCM s = scm_cdr (ledger_positions);
+ if (!scm_is_pair (s) || cycle < 0.1)
+ return values;
do
{
s2 = scm_car (s);
while (current <= ledger_fill[UP]);
}
else
+ // normal ledger lines
{
int ledger_count = (int) floor ((abs (nearest_line - pos) + ledger_extra) / 2);
values.resize (ledger_count);
\override NoteHead #'style = #'vaticana.punctum
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
- \override Flag #'transparent = ##t
}
}
\override NoteHead #'no-ledgers = ##t
\override Stem #'transparent = ##t
\override Flag #'transparent = ##t
- \override Flag #'transparent = ##t
\override Beam #'transparent = ##t
\override Accidental #'transparent = ##t
}
\revert Beam #'transparent
\revert Stem #'transparent
\revert Flag #'transparent
- \revert Flag #'transparent
\revert NoteHead #'transparent
\revert NoteHead #'no-ledgers
\revert Dots #'transparent
%%%% You should have received a copy of the GNU General Public License
%%%% along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
-\version "2.14.0"
+\version "2.15.16"
%% A stringTuning is a list of pitches ordered by string number
%% from 1 to N.
%% Here we define a number of default string tunings.
-%% A scheme function for converting a chord to a string tuning
-#(define (chord->tuning parser tuning-symbol chord)
- (let* ((ev-chord (car (extract-named-music chord 'EventChord)))
- (pitches (event-chord-pitches ev-chord)))
- (ly:parser-define! parser tuning-symbol (reverse pitches))))
-
%% A music function for converting a chord to a string tuning.
%% The music argument for \makeStringTuning must be a chord in
%% absolute mode ordered from the highest string number to the
%% lowest string number
-makeStringTuning =
-#(define-music-function (parser location tuning chord)
- (symbol? ly:music?)
- (_ "Convert @{chord} to a string tuning stored in @code{tuning}.
-@{chord} must be in absolute pitches and should have the highest
-string number (generally the lowest pitch) first. @code{tuning}
-should be a string that will be converted to a symbol.")
- (begin
- (chord->tuning parser tuning chord)
- (make-music 'SequentialMusic 'void #t)))
-
-
-%% A music function for converting a chord to a string tuning
-%% and setting the current context stringTunings property to
-%% the newly-defined-string tuning.
-
-contextStringTuning =
-#(define-music-function (parser location tuning chord)
- (symbol? ly:music?)
- (_ "Convert @{chord} to a string tuning stored in @code{tuning},
-and set @code{stringTunings} of the current context to the
-newly-defined tuning.
-@{chord} must be in absolute pitches and should have the highest
-string number (generally the lowest pitch) first. @code{tuning}
-should be a string that will be converted to a symbol.")
- (chord->tuning parser tuning chord)
- #{ \set stringTunings = #(ly:parser-lookup $parser $tuning)
- #})
-
-%% A music function for converting an alist to string-tunings
-makeDefaultStringTunings =
-#(define-music-function (parser location default-tuning-alist)
- (cheap-list?)
- (_ "Define default string tunings for each element of
-@code{default-tuning-alist}.")
- (begin
- (for-each (lambda (alist-entry)
- (chord->tuning parser (car alist-entry) (cdr alist-entry)))
- default-tuning-alist)
- (make-music 'SequentialMusic 'void #t)))
-
-% tuning definitions require default pitchnames
-\languageSaveAndChange #default-language
-
-%% Define alist of default string tunings
-defaultStringTunings =
-#`(
- ;; guitar tunings
- (guitar-tuning . ,#{<e, a, d g b e'>#})
- (guitar-seven-string-tuning . ,#{<b,, e, a, d g b e'>#})
- (guitar-drop-d-tuning . ,#{<d, a, d g b e'>#})
- (guitar-open-g-tuning . ,#{<d, g, d g b d'>#})
- (guitar-open-d-tuning . ,#{<d, a, d fis a d'>#})
- (guitar-dadgad-tuning . ,#{<d, a, d g a d'>#})
- (guitar-lute-tuning . ,#{<e, a, d fis b e'>#})
- (guitar-asus4-tuning . ,#{<e, a, d e a e'>#})
-
- ;; bass tunings
- (bass-tuning . ,#{<e,, a,, d, g,>#})
- (bass-four-string-tuning . ,#{<e,, a,, d, g,>#})
- (bass-drop-d-tuning . ,#{<d,, a,, d, g,>#})
- (bass-five-string-tuning . ,#{<b,,, e,, a,, d, g,>#})
- (bass-six-string-tuning . ,#{<b,,, e,, a,, d, g, c>#})
-
- ;; mandolin tunings
- (mandolin-tuning . ,#{<g d' a' e''>#})
-
- ;; tunings for 5-string banjo
- (banjo-open-g-tuning . ,#{<g' d g b d'>#})
- (banjo-c-tuning . ,#{<g' c g b d'>#})
- (banjo-modal-tuning . ,#{<g' d g c' d'>#})
- (banjo-open-d-tuning . ,#{<a' d fis a d'>#})
- (banjo-open-dm-tuning . ,#{<a' d fis a d'>#})
-
- ;; ukulele tunings
- (ukulele-tuning . ,#{<g' c' e' a'>#})
- (ukulele-d-tuning . ,#{<a' d' fis' b'>#})
- (tenor-ukulele-tuning . ,#{<a' e' c' g>#})
- (baritone-ukulele-tuning . ,#{<e' b g d>#})
-
- ;; orchestral strings
- (violin-tuning . ,#{<g d' a' e''>#})
- (viola-tuning . ,#{<c g d' a'>#})
- (cello-tuning . ,#{<c, g, d a>#})
- (double-bass-tuning . ,#{<e,, a,, d, g,>#})
- )
+stringTuning =
+#(define-scheme-function (parser location chord)
+ (ly:music?)
+ (_i "Convert @var{chord} to a string tuning.
+@var{chord} must be in absolute pitches and should have the highest
+string number (generally the lowest pitch) first.")
+ (let* ((ev-chord (car (extract-named-music chord 'EventChord))))
+ (reverse! (event-chord-pitches ev-chord))))
+
+defaultStringTunings = #'()
+
+makeDefaultStringTuning =
+#(define-void-function (parser location symbol pitches) (symbol? list?)
+ (_i "This defines a string tuning @var{symbol} via a list of @var{pitches}.
+The @var{symbol} also gets registered in @code{defaultStringTunings}
+for documentation purposes.")
+ (ly:parser-define! parser symbol pitches)
+ (set! defaultStringTunings (acons symbol pitches defaultStringTunings)))
+
+%% guitar tunings
+\makeDefaultStringTuning #'guitar-tuning \stringTuning <e, a, d g b e'>
+\makeDefaultStringTuning #'guitar-seven-string-tuning \stringTuning <b,, e, a, d g b e'>
+\makeDefaultStringTuning #'guitar-drop-d-tuning \stringTuning <d, a, d g b e'>
+\makeDefaultStringTuning #'guitar-open-g-tuning \stringTuning <d, g, d g b d'>
+\makeDefaultStringTuning #'guitar-open-d-tuning \stringTuning <d, a, d fis a d'>
+\makeDefaultStringTuning #'guitar-dadgad-tuning \stringTuning <d, a, d g a d'>
+\makeDefaultStringTuning #'guitar-lute-tuning \stringTuning <e, a, d fis b e'>
+\makeDefaultStringTuning #'guitar-asus4-tuning \stringTuning <e, a, d e a e'>
+
+%% bass tunings
+\makeDefaultStringTuning #'bass-tuning \stringTuning <e,, a,, d, g,>
+\makeDefaultStringTuning #'bass-four-string-tuning \stringTuning <e,, a,, d, g,>
+\makeDefaultStringTuning #'bass-drop-d-tuning \stringTuning <d,, a,, d, g,>
+\makeDefaultStringTuning #'bass-five-string-tuning \stringTuning <b,,, e,, a,, d, g,>
+\makeDefaultStringTuning #'bass-six-string-tuning \stringTuning <b,,, e,, a,, d, g, c>
+
+%% mandolin tunings
+\makeDefaultStringTuning #'mandolin-tuning \stringTuning <g d' a' e''>
+
+%% tunings for 5-string banjo
+\makeDefaultStringTuning #'banjo-open-g-tuning \stringTuning <g' d g b d'>
+\makeDefaultStringTuning #'banjo-c-tuning \stringTuning <g' c g b d'>
+\makeDefaultStringTuning #'banjo-modal-tuning \stringTuning <g' d g c' d'>
+\makeDefaultStringTuning #'banjo-open-d-tuning \stringTuning <a' d fis a d'>
+\makeDefaultStringTuning #'banjo-open-dm-tuning \stringTuning <a' d fis a d'>
+
+%% ukulele tunings
+\makeDefaultStringTuning #'ukulele-tuning \stringTuning <g' c' e' a'>
+\makeDefaultStringTuning #'ukulele-d-tuning \stringTuning <a' d' fis' b'>
+\makeDefaultStringTuning #'tenor-ukulele-tuning \stringTuning <a' e' c' g>
+\makeDefaultStringTuning #'baritone-ukulele-tuning \stringTuning <e' b g d>
+
+%% orchestral strings
+\makeDefaultStringTuning #'violin-tuning \stringTuning <g d' a' e''>
+\makeDefaultStringTuning #'viola-tuning \stringTuning <c g d' a'>
+\makeDefaultStringTuning #'cello-tuning \stringTuning <c, g, d a>
+\makeDefaultStringTuning #'double-bass-tuning \stringTuning <e,, a,, d, g,>
+
+defaultStringTunings = #(reverse! defaultStringTunings)
%% convert 5-string banjo tuning to 4-string by removing the 5th string
-#(define-public (four-string-banjo tuning)
- (reverse (cdr (reverse tuning))))
-
-%% make all of the default string tunings
-
-\makeDefaultStringTunings #defaultStringTunings
-
-% restore the language
-\languageRestore
-
+"four-string-banjo" = #(lambda (tuning)
+ (take tuning 4))
-\version "2.14.0"
+\version "2.15.17"
%% defined later, in a closure
#(define-public (add-toc-item! markup-symbol text)
( _i "Outputs the table of contents, using the paper variable
@code{tocTitleMarkup} for its title, then the list of lines
built using the @code{tocItem} music function
-Usage: @code{\\markuplines \\table-of-contents}" )
+Usage: @code{\\markuplist \\table-of-contents}" )
(cons (interpret-markup layout props
(ly:output-def-lookup layout 'tocTitleMarkup))
(space-lines (chain-assoc-get 'baseline-skip props)
top-htaccess=$(trusted-dir)/lilypond.org.htaccess
dir-htaccess=$(trusted-dir)/website-dir.htaccess
TEXI2HTML_PROGRAM=$(HOME)/usr/bin/texi2html
- EXAMPLES=$(HOME)/lilypond/media/ly-examples
- PICTURES=$(HOME)/lilypond/media/pictures
PYTHON=python
PYTHONPATH=$(TRUSTED_DIR)
else
top-htaccess=$(top-src-dir)/Documentation/web/server/lilypond.org.htaccess
dir-htaccess=$(top-src-dir)/Documentation/web/server/website-dir.htaccess
include $(config_make)
- # I assume this is run from top-build-dir
- EXAMPLES=Documentation/web/ly-examples/out-www
- PICTURES=Documentation/pictures/out-www
endif
################################################################
WEB_POST=python $(script-dir)/website_post.py
WEB_BIBS=python $(script-dir)/bib2texi.py
+EXAMPLES=$(LILYPOND_WEB_MEDIA_GIT)/ly-examples
+PICTURES=$(LILYPOND_WEB_MEDIA_GIT)/pictures
+
SERVER_FILES=$(top-src-dir)/Documentation/web/server
# don't include web
.PHONY: website website-bibs website-css website-examples website-misc \
website-pictures website-post website-test website-texinfo \
- website-version website-xrefs
+ website-version website-xrefs check-setup
+
+check-setup:
+ifeq ($(LILYPOND_WEB_MEDIA_GIT),)
+ echo "Need a $LILYPOND_WEB_MEDIA_GIT environment variable!"
+ exit 1
+endif
-website: website-post website-examples website-pictures website-css website-misc
+website: check-setup website-post website-examples website-pictures website-css website-misc
website-bibs: website-version $(OUT) $(bib-files)
str = re.sub (r"(\s+(?:\\once\s*)?)\\revert\s*Stem\s+#'stencil", r"\g<1>\\revert Stem #'stencil\g<1>\\revert Flag #'stencil", str)
return str
+@rule ((2, 15, 16), r"\makeStringTuning, \contextStringTuning -> \stringTuning")
+def conv (str):
+ str = re.sub (r"(\s+)\\contextStringTuning(\s+)#'([-a-zA-Z]+)(\s+<[^<>]+>)",
+ r"""\g<1>#(define \g<3> #{ \\stringTuning\g<4> #})\g<1>\\set stringTunings = #\g<3>""",
+ str)
+ str = re.sub (r"""
+\\makeStringTuning(\s+)#'([-a-zA-Z]+)""",
+ r"""
+"\g<2>" = \\stringTuning""", str)
+ str = re.sub (r"\\makeStringTuning(\s+)#'([-a-zA-Z]+)(\s+<[^<>]+>)",
+ r"#(define \g<2> #{ \\stringTuning\g<3> #})", str)
+ return str
+
+@rule ((2, 15, 17), "\\markuplines -> \\markuplist")
+def conv (str):
+ str = re.sub (r"""
+\\markuplines( +)([^ ].*)
+ \1([^ ])""", r"""
+\\markuplist\g<1>\g<2>
+ \g<1>\g<3>""", str)
+ str = re.sub (r"\\markuplines", r"\\markuplist", str)
+ str = re.sub (r"@funindex markuplines", r"@funindex markuplist", str)
+ return str
# Guidelines to write rules (please keep this at the end of this file)
#
(,ly:skyline-pair? . "pair of skylines")
(,ly:source-file? . "source file")
(,ly:spanner? . "spanner")
+ (,ly:spring? . "spring")
(,ly:stencil? . "stencil")
(,ly:stream-event? . "stream event")
(,ly:translator? . "translator")
topFile.read(crossRefs)
crossRefs.check()
if returnCode > 0:
- print "Errors found: status code: ",returnCode
\ No newline at end of file
+ print "Errors found: status code: ",returnCode
default: $(SHARED_LIBRARY)
-$(SHARED_LIB_PREFIX)$(NAME): default
\ No newline at end of file
+$(SHARED_LIB_PREFIX)$(NAME): default
16.\or 17.\or 18.\or 19.\or 20.\or
21.\or 22.\or 23.\or 24.\or 25.\or
26.\or 27.\or 28.\or 29.\or 30.\or
- 31.\fi}
\ No newline at end of file
+ 31.\fi}