pats
tags
test-output-distance
+Documentation/user/lilypond
<br>
<strong>@DATE@</strong>
</p>
+
+ <p>
+ <strong>Achtung:</strong> Diese Übersetzung befindet sich noch in der Entwicklung, <br>
+ die englische Version (Link unten auf der Seite) bietet die
+ vollständige Fassung der Dokumentation.
+ </p>
</div>
<table align="center">
@lilypond[quote,ragged-right,staffsize=26]
\score {
{
- \fatText
+ \textLengthOn
s^\markup {
\column {
"vaticana"
@lilypond[ragged-right,fragment,relative=1,quote]
{
- \fatText
+ \textLengthOn
\time 2/2
c1^\markup { \hspace #-2.0 \typewriter default }
@qq{Noten und Text} (für die Sopranstimme).
@example
-\version "2.11.23"
+\version "2.11.38"
melodie = \relative c' @{
\clef treble
\key c \major
@qq{Nur Noten}-Beispiel an:
@example
-\version "2.11.23"
+\version "2.11.38"
melodie = \relative c' @{
\clef treble
\key c \major
@example
-\version "2.11.23"
+\version "2.11.38"
sopranNoten = \relative c' @{
\clef treble
\key c \major
vollständige Vorlage für Sopran und Cello:
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
sopranoMusic = \relative c' {
\clef treble
\key c \major
eine vollständige Notationsdatei.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' {
\clef treble
\key c \major
entsprechende Zeile entweder ändern oder auskommentieren.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' {
\clef treble
\key c \major
das richtige Beispiel für Sie!
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' {
\clef treble
\key c \major
Text und Akkorden schreiben.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' {
\clef treble
\key c \major
Hier kommt ein einfaches Klaviersystem.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
upper = \relative c'' {
\clef treble
\key c \major
Melodie mit Text, darunter Klavierbegleitung.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c'' {
\clef treble
\key c \major
(und damit das zusätzliche System für die Gesangstimme auslassen).
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
upper = \relative c'' {
\clef treble
\key c \major
kopieren.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
upper = \relative c'' {
\clef treble
\key c \major
Vorzeichen benutzt.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global= {
\time 4/4
@verbatim
%%%%% piece.ly
-\version "2.11.23"
+\version "2.11.38"
global= {
\time 4/4
%%%%% score.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
#(set-global-staff-size 14)
\score {
%%%%% vn1.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
\score {
\keepWithTag #'vn1 \music
%%%%% vn2.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
\score {
\keepWithTag #'vn2 \music
%%%%% vla.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
\score {
\keepWithTag #'vla \music
%%%%% vlc.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
\score {
\keepWithTag #'vlc \music
sind fast immer gleich in allen Stimmen.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global = {
\key c \major
\time 4/4
tenorMusic), verändert sich auch der Klavierauszug entsprechend.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global = {
\key c \major
\time 4/4
über und unter dem System angeordnet.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global = {
\key c \major
\time 4/4
zwischen den Systemen geschrieben.
@lilypond[quote,verbatim,line-width=11.0\cm]
-\version "2.11.23"
+\version "2.11.38"
global = {
\set Score.skipBars = ##t
@lilypond[quote,verbatim,ragged-right]
\include "gregorian-init.ly"
-\version "2.11.23"
+\version "2.11.38"
chant = \relative c' {
\set Score.timing = ##f
@c The `line-width' argument is for the \header.
@lilypond[quote,verbatim,ragged-right,line-width]
-\version "2.11.23"
+\version "2.11.38"
\header {
title = "Song"
subtitle = "(tune)"
@ The `line-width' is for \header.
@li lypond[quote,verbatim,ragged-right,line-width]
-\version "2.11.23"
+\version "2.11.38"
\header {
dedication = "dedication"
title = "Title"
für eine bestimmte Quelldatei benutzt worden ist:
@example
-\version "2.11.23"
+\version "2.11.38"
@end example
@noindent
@code{\header}-Umgebung direkt nach der Versionsnummer eingefügt.
@example
-\version "2.11.23"
+\version "2.11.38"
\header @{
title = "Symphony"
composer = "Ich"
@item @strong{Schreiben Sie immer mit @code{\version} die
Versionsnummer
in jede Datei}. Beachten Sie, dass in allen Vorlagen die Versionsnummer
-@code{\version "2.11.23"} eingetragen ist. Es empfielt sich, in alle
+@code{\version "2.11.38"} eingetragen ist. Es empfielt sich, in alle
Dateien, unabhängig von ihrer Größe, den @code{\version}-Befehl
einzufügen. Persönliche Erfahrung hat gezeigt, dass es ziemlich
frustrierend sein kann zu erinnern, welche Programmversion man etwa
@example
%%% global.ly
-\version "2.11.23"
+\version "2.11.38"
#(ly:set-option 'point-and-click #f)
\include "../init/init-defs.ly"
\include "../init/init-layout.ly"
@lilypond[quote,ragged-right,staffsize=26]
\score {
{
- \fatText
+ \textLengthOn
s^\markup {
\column {
"vaticana"
@lilypond[ragged-right,fragment,relative=1,quote]
{
- \fatText
+ \textLengthOn
\time 2/2
c1^\markup { \hspace #-2.0 \typewriter default }
en la música para principiantes
@lilypond[quote,ragged-right,verbatim,fragment,staffsize=26]
- \setEasyHeads
+ \easyHeadsOn
c'2 e'4 f' | g'1
@end lilypond
-La orden @code{\setEasyHeads} sobreescribe los ajustes del objeto
+La orden @code{\easyHeadsOn} sobreescribe los ajustes del objeto
@internalsref{NoteHead}. Para que las letras sean legibles, se tienen que imprimir
en un tamaño grande de la tipografÃa. Para imprimir con un tamaño de tipografÃa mayor, consulte
@ref{Setting the staff size}.
@refcommands
-@funindex \setEasyHeads
-@code{\setEasyHeads}
+@funindex \easyHeadsOn
+@code{\easyHeadsOn}
@node Shape note heads
de soprano).
@example
-\version "2.11.23"
+\version "2.11.38"
melodia = \relative c' @{
\clef treble
\key c \major
Ahora queremos añadir una parte de violoncello. Veamos el ejemplo @q{Sólo notas}:
@example
-\version "2.11.23"
+\version "2.11.38"
melodia = \relative c' @{
\clef treble
\key c \major
notas del cello.
@example
-\version "2.11.23"
+\version "2.11.38"
musicaSoprano = \relative c' @{
\clef treble
\key c \major
fácil solución. Presentamos aquà la plantilla completa para soprano y cello.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
sopranoMusic = \relative c' {
\clef treble
\key c \major
escriba las notas y ¡ha terminado!
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' {
\clef treble
\key c \major
correspondiente.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' {
\clef treble
\key c \major
¿Quiere preparar una «lead sheet» u hoja guÃa de una canción con acordes? ¡No busque más!
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' {
\clef treble
\key c \major
Esta plantilla le permite preparar una canción con melodÃa, letra y acordes.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' {
\clef treble
\key c \major
He aquà un sencillo sistema de piano.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
upper = \relative c'' {
\clef treble
\key c \major
acompañamiento de piano.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c'' {
\clef treble
\key c \major
la letra en medio de los pentagramas del piano (y omitir el pentagrama separado para la melodÃa).
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
upper = \relative c'' {
\clef treble
\key c \major
usted mismo.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
upper = \relative c'' {
\clef treble
\key c \major
para las indicaciones del compás y de la armadura de la tonalidad.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global= {
\time 4/4
@verbatim
%%%%% piece.ly
-\version "2.11.23"
+\version "2.11.38"
global= {
\time 4/4
%%%%% score.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
#(set-global-staff-size 14)
\score {
%%%%% vn1.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
\score {
\keepWithTag #'vn1 \music
%%%%% vn2.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
\score {
\keepWithTag #'vn2 \music
%%%%% vla.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
\score {
\keepWithTag #'vla \music
%%%%% vlc.ly
-\version "2.11.23"
+\version "2.11.38"
\include "piece.ly"
\score {
\keepWithTag #'vlc \music
para todas las partes.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global = {
\key c \major
\time 4/4
reducción de piano.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global = {
\key c \major
\time 4/4
y @code{alignBelowContext}.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global = {
\key c \major
\time 4/4
en vez de hacerlo sobre ellos.
@lilypond[quote,verbatim,line-width=11.0\cm]
-\version "2.11.23"
+\version "2.11.38"
global = {
\set Score.skipBars = ##t
@lilypond[quote,verbatim,ragged-right]
\include "gregorian-init.ly"
-\version "2.11.23"
+\version "2.11.38"
chant = \relative c' {
\set Score.timing = ##f
@c The `line-width' argument is for the \header.
@lilypond[quote,verbatim,ragged-right,line-width]
-\version "2.11.23"
+\version "2.11.38"
\header {
title = "Song"
subtitle = "(tune)"
@ The `line-width' is for \header.
@li lypond[quote,verbatim,ragged-right,line-width]
-\version "2.11.23"
+\version "2.11.38"
\header {
dedication = "dedication"
title = "Title"
Es posible colocar cadenas de texto arbitrarias o @ref{Text markup},
encima o debajo de las notas utilizando una cadena @code{c^"texto"}. Por omisión,
estas indicaciones no influyen sobre el espaciado de las notas, pero si se utiliza la
-instrucción @code{\fatText}, las anchuras se tendrán en cuenta
+instrucción @code{\textLengthOn}, las anchuras se tendrán en cuenta
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c4^"longtext" \fatText c4_"longlongtext" c4
+c4^"longtext" \textLengthOn c4_"longlongtext" c4
@end lilypond
@noindent
-Para evitar que el texto influya sobre el espaciado, utilice @code{\emptyText}.
+Para evitar que el texto influya sobre el espaciado, utilice @code{\textLengthOff}.
También se pueden añadir a una nota textos con un formato más complejo utilizando la
orden markup (marcado),
@refcommands
-@funindex \fatText
-@code{\fatText},
-@funindex \emptyText
-@code{\emptyText}.
+@funindex \textLengthOn
+@code{\textLengthOn},
+@funindex \textLengthOff
+@code{\textLengthOff}.
@commonprop
@lilypond[relative=2,ragged-right,verbatim,fragment]
d2 \glissando d'2
-\once \override Glissando #'dash-fraction = #0.5
+\once \override Glissando #'style = #'dashed-line
d,2 \glissando d'2
\override Glissando #'style = #'dotted-line
d,2 \glissando d'2
Para imprimir una lÃnea continua, use
@example
-\override TextSpanner #'dash-fraction = #'()
+\override TextSpanner #'style = #'line
@end example
orden @code{\line}
@lilypond[quote,verbatim,fragment,relative=1]
-\fatText
+\textLengthOn
c4^\markup{ \center-align { on three lines } }
c4^\markup{ \center-align { "all one line" } }
c4^\markup{ \center-align { { on three lines } } }
dentro del elemento de marcado (generalmente con @code{\hspace #0}).
@lilypond[quote,verbatim,fragment,relative=1]
-\fatText
+\textLengthOn
c'4^\markup{ \raise #5 "not raised" }
\once \override TextScript #'padding = #3
c'4^\markup{ raised }
el archivo:
@example
-\version "2.11.23"
+\version "2.11.38"
@end example
@noindent
@ruser{Version number}.
@example
-\version "2.11.23"
+\version "2.11.38"
\header @{
title = "Symphony"
composer = "Me"
@itemize @bullet
@item @strong{Incluya los números de @code{\version} en todos los archivos}. Dese cuenta de que todas las
-plantillas contienen una cadena como @code{\version "2.11.23"}. Le recomendamos
+plantillas contienen una cadena como @code{\version "2.11.38"}. Le recomendamos
mucho que siempre incluya la @code{\version}, sin importar cuán
pequeño pueda ser su archivo. Desde la experiencia personal podemos decirle que es bastante frustrante
intentar recordar el número de versión de LilyPond que estaba usando hace unos años.
@example
%%% global.ly
-\version "2.11.23"
+\version "2.11.38"
#(ly:set-option 'point-and-click #f)
\include "../iniciar/iniciar-definiciones.ly"
\include "../iniciar/iniciar-disposicion.ly"
@lilypond[quote,ragged-right,staffsize=26]
\score {
{
- \fatText
+ \textLengthOn
s^\markup {
\column {
"vaticana"
@lilypond[ragged-right,fragment,relative=1,quote]
{
- \fatText
+ \textLengthOn
\time 2/2
c1^\markup { \hspace #-2.0 \typewriter default }
la tête. On l'utilise dans des partitions pour débutants.
@lilypond[quote,ragged-right,verbatim,fragment,staffsize=26]
- \setEasyHeads
+ \easyHeadsOn
c'2 e'4 f' | g'1
@end lilypond
-La commande @code{\setEasyHeads} remplace tous les réglages de l'objet
+La commande @code{\easyHeadsOn} remplace tous les réglages de l'objet
@internalsref{NoteHead}. L'impression doit être de plus grande
taille, afin que les lettres soient lisibles. Voir à ce propos
@ref{Setting the staff size}.
@refcommands
-@funindex \setEasyHeads
-@code{\setEasyHeads}
+@funindex \easyHeadsOn
+@code{\easyHeadsOn}
@node Shape note heads
@qq{notes et paroles}, pour la partie de soprano.
@example
-\version "2.11.23"
+\version "2.11.38"
melodie = \relative c' @{
\clef treble
\key c \major
Jetons un coup d'oeil sur l'exemple avec les notes seules :
@example
-\version "2.11.23"
+\version "2.11.38"
melodie = \relative c' @{
\clef treble
\key c \major
le veut l'usage, et donnons-lui d'autres notes.
@example
-\version "2.11.23"
+\version "2.11.38"
musiqueSoprano = \relative c' @{
\clef treble
\key c \major
soprano et violoncelle au complet :
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
sopranoMusic = \relative c' {
\clef treble
\key c \major
@ref{Text markup} en langage LilyPond, au dessus ou au dessous des
notes en employant la syntaxe @code{c^"text"}. Par défaut, ces
indications n'affecteront en rien l'espacement des notes, sauf Ã
-utiliser la commande @code{\fatText}.
+utiliser la commande @code{\textLengthOn}.
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c4^"longtext" \fatText c4_"longlongtext" c4
+c4^"longtext" \textLengthOn c4_"longlongtext" c4
@end lilypond
@noindent
-Pour revenir à l'espacement par défaut, utilisez @code{\emptyText}.
+Pour revenir à l'espacement par défaut, utilisez @code{\textLengthOff}.
Des constructions plus élaborées d'étiquette peuvent être obtenues en
ayant recours à la commande @emph{markup} :
@refcommands
-@funindex \fatText
-@code{\fatText},
-@funindex \emptyText
-@code{\emptyText}.
+@funindex \textLengthOn
+@code{\textLengthOn},
+@funindex \textLengthOff
+@code{\textLengthOff}.
@commonprop
@lilypond[relative=2,ragged-right,verbatim,fragment]
d2 \glissando d'2
-\once \override Glissando #'dash-fraction = #0.5
+\once \override Glissando #'style = #'dashed-line
d,2 \glissando d'2
\override Glissando #'style = #'dotted-line
d,2 \glissando d'2
Pour obtenir une ligne pleine, utilisez
@example
-\override TextSpanner #'dash-fraction = #'()
+\override TextSpanner #'style = #'line
@end example
différencier les listes de mots.
@lilypond[quote,verbatim,fragment,relative=1]
-\fatText
+\textLengthOn
c4^\markup{ \center-align { on three lines } }
c4^\markup{ \center-align { "all one line" } }
c4^\markup{ \center-align { { on three lines } } }
de l'étiquette (généralement avec @code{\hspace #0}).
@lilypond[quote,verbatim,fragment,relative=1]
-\fatText
+\textLengthOn
c'4^\markup{ \raise #5 "not raised" }
\once \override TextScript #'padding = #3
c'4^\markup{ raised }
LilyPond pour laquelle le fichier a été écrit,
@example
-\version "2.11.32"
+\version "2.11.38"
@end example
@noindent
bloc @code{\header} est habituellement placé en début de fichier.
@example
-\version "2.11.32"
+\version "2.11.38"
\header @{
title = "Symphonie"
composer = "Moi"
@example
%%% global.ly
-\version "2.11.32"
+\version "2.11.38"
#(ly:set-option 'point-and-click #f)
\include "../init/init-defs.ly"
\include "../init/init-mise-en-page.ly"
@ifhtml
This document is also available in @uref{NEWS.pdf,PDF}. It's part of
-the @uref{../,LilyPond Documentation}
+the @uref{../,LilyPond Documentation} .
@end ifhtml
@end ignore
+@item
+@code{\setEasyHeads} has been renamed to @code{\easyHeadsOn}, and a new
+command @code{\easyHeadsOff} reverts note heads to normal heads.
+
+@item
+@code{\fatText} and @code{\emptyText} have been renamed to
+@code{\textLengthOn} and @code{\textLengthOff}, respectively.
+
@item
Underlining is now possible with the @code{\underline} markup command.
# todo: add latex.
PDF_FILES = $(TELY_FILES:%.tely=$(outdir)/%.pdf)
+# this prevents aux files from being reused for translated docs
+TEXI2PDF_FLAGS = --tidy
INFO_DOCS = lilypond lilypond-internals music-glossary lilypond-program lilypond-learning
INFO_FILES = $(INFO_DOCS:%=$(outdir)/%.info)
+ifeq ($(out),www)
+INFO_IMAGES_DIR = lilypond
+endif
+
STEPMAKE_TEMPLATES=tex texinfo omf documentation
-#TEXI2DVI_FLAGS = -E
OMF_FILES += $(outdir)/lilypond-internals.html.omf
LOCALSTEPMAKE_TEMPLATES=lilypond ly
ifeq ($(out),www)
# This builds all .info targets with images, in out-www.
-# Viewawble with a recent Emacs, doing: M-x info out-www/lilypond.info
+# Viewable with a recent Emacs, doing: C-u C-h i out-www/lilypond.info
# Cancel the special, non-image info generation rule that skips images:
$(outdir)/%.info: $(outdir)/%.nexi
+# "makeinfo --info" MUST be able to read PNGs from CWD for info images
+# to work, hence lilypond/ -> $(outdir)/ symlink.
+# $(outdir)/lilypond/*.png symlinks are only needed to view
+# out-www/*.info with Emacs -- HTML docs no longer need these
+# symlinks, see replace_symlinks_urls in
+# buildscripts/add_html_footer.py.
+$(outdir)/%.info: lilypond
+lilypond: $(OUT_PNG_IMAGES)
+ rm -f lilypond
+ ln -s $(outdir) lilypond
+ mkdir -p $(outdir)/lilypond
+ find $(outdir)/lilypond/ -name '*'.png | xargs rm -f
+ (cd $(outdir)/lilypond/ ; ln -sf ../*.png . )
+
local-install-info: info
- -$(INSTALL) -d $(DESTDIR)$(package_infodir)
+ -$(INSTALL) -d $(DESTDIR)$(infodir)
ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
## Can not have absolute symlinks because some binary packages build schemes
## install files in nonstandard root. Best we can do is to notify the
@echo
@echo "For images in the INFO docs to work, do: "
@echo
- @echo " (cd $(package_infodir) && ln -sf ../../doc/lilypond/Documentation/user/*png .)"
+ @echo " (cd $(infodir) && ln -sfT ../doc/lilypond/html/Documentation/user lilypond)"
@echo "or add something like that to the postinstall script."
@echo
else # installing directly into standard /usr/...
- -$(INSTALL) -d $(DESTDIR)$(package_infodir)
+ -$(INSTALL) -d $(DESTDIR)$(infodir)
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-learning.info
+ -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-internals.info
+ -install-info --remove --info-dir=$(infodir) $(outdir)/music-glossary.info
install-info --info-dir=$(infodir) $(outdir)/lilypond.info
- (cd $(package_infodir) && ln -sf $(webdir)/Documentation/user/*png .)
+ cd $(infodir) && ln -sfT $(webdir)/Documentation/user lilypond
endif # installing directly into standard /usr/...
local-uninstall-WWW:
- rm -f $(package_infodir)/*.png
+ rm -f $(infodir)/lilypond
else # out!=www
# Cancel the default info generation rule that generates images:
-$(outdir)/%.info: # $(outdir)/%.texi
+$(outdir)/%.info: $(outdir)/%.texi
local-install-info: info
-$(INSTALL) -d $(DESTDIR)$(package_infodir)
@echo "and read the extra instructions."
@echo
else # installing directly into standard /usr/...
- -$(INSTALL) -d $(DESTDIR)$(package_infodir)
+ -$(INSTALL) -d $(DESTDIR)$(infodir)
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-learning.info
+ -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-internals.info
+ -install-info --remove --info-dir=$(infodir) $(outdir)/music-glossary.info
install-info --info-dir=$(infodir) $(outdir)/lilypond.info
@echo
@echo "***************************************************************"
default:
+local-clean:
+ rm -f lilypond
local-help: extra-local-help
extra-local-help:
@echo -e "\
- dvi update dvi documents\n\
info update info pages\n\
ps update PostScript documents\n\
xml update Docbook xml documentation\n\
$(outdir)/lilypond.nexi: $(outdir)/lilypond-internals.texi
#
-# The split user manual
+# Split manuals in HTML
#
-$(outdir)/lilypond/index.html: $(outdir)/lilypond.texi $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
- mkdir -p $(dir $@)
- $(MAKEINFO) -I$(outdir) --output=$(outdir)/lilypond --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-# we /might/ switch to texi2html if it can be fixed:
-# echo "*************************************"
-# echo $<
-# cd $(outdir)
-# texi2html --output=$(outdir)/lilypond --css-include=$(top-src-dir)/Documentation/texinfo.css $<
- find $(outdir)/lilypond/ -name '*'.png -o -name '*'.ly | xargs rm -f
-# symbolic links to save space
- (cd $(outdir)/lilypond/ ; ln -sf ../*.png ../*.ly . )
+$(outdir)/lilypond/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
+$(outdir)/lilypond-program/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
+$(outdir)/lilypond-learning/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
+$(outdir)/music-glossary/index.html: $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
-#
-# One big page user manual
-#
-$(outdir)/lilypond-big-page.html: $(outdir)/lilypond.texi $(OUT_PNG_IMAGES)
- $(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
#
-# The split program usage
+# Manuals in one big HTML page
#
-$(outdir)/lilypond-program/index.html: $(outdir)/lilypond-program.texi $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
- mkdir -p $(dir $@)
- $(MAKEINFO) -I$(outdir) --output=$(outdir)/lilypond-program --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
- find $(outdir)/lilypond-program/ -name '*'.png -o -name '*'.ly | xargs rm -f
-# symbolic links to save space
- (cd $(outdir)/lilypond-program/ ; ln -sf ../*.png ../*.ly . )
-
-#
-# The Learning Manual
-#
-$(outdir)/lilypond-learning/index.html: $(outdir)/lilypond-learning.texi $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
- mkdir -p $(dir $@)
- $(MAKEINFO) -I$(outdir) --output=$(outdir)/lilypond-learning --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
- find $(outdir)/lilypond-learning/ -name '*'.png -o -name '*'.ly | xargs rm -f
-# symbolic links to save space
- (cd $(outdir)/lilypond-learning/ ; ln -sf ../*.png ../*.ly . )
-
-
-#
-# One big page program usage
-#
-$(outdir)/lilypond-program-big-page.html: $(outdir)/lilypond-program.texi $(OUT_PNG_IMAGES)
- $(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
-
-#
-# One big page learning manual
-#
-$(outdir)/lilypond-learning-big-page.html: $(outdir)/lilypond-learning.texi $(OUT_PNG_IMAGES)
- $(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
-
-
-#
-# The split internals reference
-#
-$(outdir)/lilypond-internals/index.html: $(outdir)/lilypond-internals.texi
- mkdir -p $(dir $@)
- $(MAKEINFO) --output=$(outdir)/lilypond-internals --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
-
-#
-# One big page internals reference
-#
-$(outdir)/lilypond-internals-big-page.html: $(outdir)/lilypond-internals.texi
- $(MAKEINFO) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
-
-#
-# The split glossary
-#
-$(outdir)/music-glossary/index.html: $(outdir)/music-glossary.texi
- mkdir -p $(dir $@)
- $(MAKEINFO) --output=$(outdir)/music-glossary --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
- find $(outdir)/music-glossary/ -name '*'.png -o -name '*'.ly | xargs rm -f
-# symbolic links to save space
- (cd $(outdir)/music-glossary/ ; ln -sf ../*.png ../*.ly . )
+$(outdir)/lilypond-big-page.html: $(OUT_PNG_IMAGES)
+$(outdir)/lilypond-program-big-page.html: $(OUT_PNG_IMAGES)
+$(outdir)/lilypond-learning-big-page.html: $(OUT_PNG_IMAGES)
$(outdir)/lilypond.xml: $(outdir)/lilypond.texi
mkdir -p $(dir $@)
mkdir -p $(dir $@)
$(MAKEINFO) --output=$(outdir)/lilypond-internals --docbook $<
-$(outdir)/lilypond.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
-
-$(outdir)/lilypond-program.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
-
-$(outdir)/lilypond-learning.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
+$(outdir)/lilypond.pdf $(outdir)/lilypond-program.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
+$(outdir)/lilypond-learning.pdf $(outdir)/music-glossary.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
$(outdir)/%.png: %.png
convert -depth 8 -geometry 50x50% $< $@
@rm -f $(@)
ln -sf ../../ $(@)
-$(outdir)/lilypond/source:
- @rm -f $(@)
- mkdir -p $(outdir)/lilypond
- ln -sf ../../../ $(@)
-
-$(outdir)/music-glossary/source:
- @rm -f $(@)
- mkdir -p $(outdir)/music-glossary
- ln -sf ../../../ $(@)
-
-$(outdir)/lilypond-program/source:
+$(outdir)/%/source:
@rm -f $(@)
- mkdir -p $(outdir)/lilypond-program
- ln -sf ../../../ $(@)
-
-$(outdir)/lilypond-learning/source:
- @rm -f $(@)
- mkdir -p $(outdir)/lilypond-learning
+ mkdir -p $(dir $@)
ln -sf ../../../ $(@)
local-WWW: $(HTML_FILES) $(DEEP_HTML_FILES)\
- $(datafiles) $(PDF_FILES) $(source-links) info info-dir
-
-info-dir:
- $(SHELL) $(buildscript-dir)/install-info-html.sh --dir=$(outdir) lilypond lilypond-internals music-glossary lilypond-program lilypond-learning
-
+ $(datafiles) $(PDF_FILES) $(source-links) info
$(outdir)/%.bib: %.bib
ln -f $< $@
$(top-build-dir)/mf/$(outconfbase)/feta16list.ly:
$(MAKE) -C $(top-src-dir)/mf
-$(outdir)/lilypond.texi: $(ITELY_FILES) $(ITEXI_FILES)
-$(outdir)/lilypond.nexi: $(ITELY_FILES) $(ITEXI_FILES)
+$(outdir)/lilypond.texi $(outdir)/lilypond-program.texi $(outdir)/lilypond-learning.texi: $(ITELY_FILES) $(ITEXI_FILES)
+$(outdir)/lilypond.nexi $(outdir)/lilypond-program.nexi $(outdir)/lilypond-learning.nexi: $(ITELY_FILES) $(ITEXI_FILES)
-# Prevent building music-glossary.texi from default target
-$(outdir)/music-glossary.nexi:
# Rules for the automatically generated documentation
% to find the current version number,
grep "version \"" tutorial.itely
+Please don't forget updating translated docs (in LANGS/user) too!
+
% (nobody ever remembers to update this file, so I've stopped
% trying to record it here)
@end menu
@node Ancient note heads
-@unnumberedsubsubsec Ancient note heads
+@subsubsection Ancient note heads
@cindex note heads, ancient
@node Ancient accidentals
-@unnumberedsubsubsec Ancient accidentals
+@subsubsection Ancient accidentals
@cindex accidentals
@lilypond[quote,ragged-right,staffsize=26]
\score {
{
- \fatText
+ \textLengthOn
s^\markup {
\column {
"vaticana"
As shown, not all accidentals are supported by each style. When
trying to access an unsupported accidental, LilyPond will switch to a
different style, as demonstrated in
-@lsr{ancient,ancient-accidentals.ly}.
+@c @lsr{ancient,ancient-accidentals.ly}.
Similarly to local accidentals, the style of the key signature can be
controlled by the @code{glyph-name-alist} property of the
Internals Reference: @internalsref{KeySignature}.
-Examples: @lsrdir{ancient}
+Examples: @c @lsrdir{ancient}
@node Ancient rests
-@unnumberedsubsubsec Ancient rests
+@subsubsection Ancient rests
@cindex rests, ancient
There are no 32th and 64th rests specifically for the mensural or
neo-mensural style. Instead, the rests from the default style will be
-taken. See @lsr{pitches,rests} for a chart of all rests.
+taken. See @c @lsr{pitches,rests} for a chart of all rests.
There are no rests in Gregorian Chant notation; instead, it uses
@ref{Divisiones}.
@node Ancient clefs
-@unnumberedsubsubsec Ancient clefs
+@subsubsection Ancient clefs
@cindex clefs
@node Ancient flags
-@unnumberedsubsubsec Ancient flags
+@subsubsection Ancient flags
@cindex flags
scope for mensural notation).
@node Ancient time signatures
-@unnumberedsubsubsec Ancient time signatures
+@subsubsection Ancient time signatures
@cindex time signatures
@lilypond[ragged-right,fragment,relative=1,quote]
{
- \fatText
+ \textLengthOn
\time 2/2
c1^\markup { \hspace #-2.0 \typewriter default }
@node Ancient articulations
-@unnumberedsubsubsec Ancient articulations
+@subsubsection Ancient articulations
@cindex articulations
the right end of the episem line is often too far to the right.
@node Custodes
-@unnumberedsubsubsec Custodes
+@subsubsection Custodes
@cindex custos
@cindex custodes
Internals Reference: @internalsref{Custos}.
Examples:
-@lsr{ancient,custodes@/.ly}.
+@c @lsr{ancient,custodes@/.ly}.
@node Divisiones
-@unnumberedsubsubsec Divisiones
+@subsubsection Divisiones
@cindex divisio
@cindex divisiones
Internals Reference: @internalsref{BreathingSign}.
-Examples: @lsr{expressive,breathing-sign.ly}.
+Examples: @c @lsr{expressive,breathing-sign.ly}.
@node Ligatures
-@unnumberedsubsubsec Ligatures
+@subsubsection Ligatures
@cindex Ligatures
@end menu
@node White mensural ligatures
-@unnumberedsubsubsec White mensural ligatures
+@subsubsection White mensural ligatures
@cindex Mensural ligatures
@cindex White mensural ligatures
Horizontal spacing is poor.
@node Gregorian square neumes ligatures
-@unnumberedsubsubsec Gregorian square neumes ligatures
+@subsubsection Gregorian square neumes ligatures
@cindex Square neumes ligatures
@cindex Gregorian square neumes ligatures
@node Gregorian Chant contexts
-@unnumberedsubsubsec Gregorian Chant contexts
+@subsubsection Gregorian Chant contexts
@cindex VaticanaVoiceContext
@cindex VaticanaStaffContext
@node Mensural contexts
-@unnumberedsubsubsec Mensural contexts
+@subsubsection Mensural contexts
@cindex MensuralVoiceContext
@cindex MensuralStaffContext
@end menu
@node Bagpipe definitions
-@unnumberedsubsubsec Bagpipe definitions
+@subsubsection Bagpipe definitions
LilyPond contains special definitions for music for the Scottish
highland bagpipe; to use them, add
@node Bagpipe example
-@unnumberedsubsubsec Bagpipe example
+@subsubsection Bagpipe example
This is what the well known tune Amazing Grace looks like in bagpipe
notation.
@code{Score} can contain many @code{Staff} contexts.
@quotation
-@image{context-example,5cm,,}
+@sourceimage{context-example,5cm,,}
@end quotation
Each context has the responsibility for enforcing some notation rules,
@c really awkward; I just shoved this in here from the tutorial.
@node A lead sheet
-@unnumberedsubsubsec A lead sheet
+@subsubsection A lead sheet
@cindex Lead sheets
@cindex chords
@node Introducing chord names
-@unnumberedsubsubsec Introducing chord names
+@subsubsection Introducing chord names
@cindex chord names
LilyPond has support for printing chord names. Chords may be entered
@node Chords mode
-@unnumberedsubsubsec Chords mode
+@subsubsection Chords mode
@cindex Chords mode
In chord mode sets of pitches (chords) are entered with normal note
@node Printing chord names
-@unnumberedsubsubsec Printing chord names
+@subsubsection Printing chord names
@cindex printing chord names
@cindex chord names
@file{ly/@/chord@/-modifier@/-init@/.ly}.
For an example of tuning this property, see also
-@lsr{chords,chord@/-name@/-exceptions@/.ly}
+@c @lsr{chords,chord@/-name@/-exceptions@/.ly}
@cindex exceptions, chord names.
This property contains the markup object used for the 7th step, when
it is major. Predefined options are @code{whiteTriangleMarkup} and
@code{blackTriangleMarkup}. See
-@lsr{chords,chord@/-name@/-major7@/.ly} for an example.
+@c @lsr{chords,chord@/-name@/-major7@/.ly} for an example.
@funindex chordNameSeparator
@item chordNameSeparator
Jazz chord notation, and a systematic scheme called Banter chords. The
alternate Jazz notation is also shown on the chart in @ref{Chord name
chart}. Turning on these styles is demonstrated in
-@lsr{chords,chord-names-jazz.ly}.
+@c @lsr{chords,chord-names-jazz.ly}.
@cindex Banter
@cindex jazz chords
@seealso
Examples:
-@lsrdir{chords}
+@c @lsrdir{chords}
Init files: @file{scm/@/chords@/-ignatzek@/.scm}, and
@file{scm/@/chord@/-entry@/.scm}.
--- /dev/null
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+ Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+
+@node Editorial annotations
+@section Editorial annotations
+
+@lilypondfile[ragged-right,line-width=16\cm,staffsize=16,quote]
+{editorial-headword.ly}
+
+@menu
+* Inside the staff::
+* Outside the staff::
+@end menu
+
+
+@node Inside the staff
+@subsection Inside the staff
+
+
+@menu
+* Selecting notation font size::
+* Fingering instructions::
+* Hidden notes::
+* Coloring objects::
+* Parentheses::
+* Stems::
+@end menu
+
+@node Selecting notation font size
+@subsubsection Selecting notation font size
+
+@cindex font size
+@cindex font size, selecting
+@cindex selecting font size
+
+The easiest method of setting the font size of any context is by
+setting the @code{fontSize} property.
+
+@lilypond[quote,fragment,relative=1,verbatim]
+c8
+\set fontSize = #-4
+c f
+\set fontSize = #3
+g
+@end lilypond
+
+@noindent
+It does not change the size of variable symbols, such as beams or
+slurs.
+
+@cindex font size scaling
+
+Internally, the @code{fontSize} context property will cause the
+@code{font-size} property to be set in all layout objects. The
+value of @code{font-size} is a number indicating the size relative
+to the standard size for the current staff height. Each step up
+is an increase of approximately 12% of the font size. Six steps
+is exactly a factor two. The Scheme function @code{magstep}
+converts a @code{font-size} number to a scaling factor. The
+@code{font-size} property can also be set directly, so that only
+certain layout objects are affected.
+
+@lilypond[quote,fragment,relative=1,verbatim]
+c8
+\override NoteHead #'font-size = #-4
+c f
+\override NoteHead #'font-size = #3
+g
+@end lilypond
+
+@cindex standard font size
+@cindex font size, standard
+
+Font size changes are achieved by scaling the design size that is
+closest to the desired size. The standard font size (for
+@code{font-size} equals 0), depends on the standard staff height.
+For a 20pt staff, a 10pt font is selected.
+
+The @code{font-size} property can only be set on layout objects that
+use fonts. These are the ones supporting the @code{font-interface}
+layout interface.
+
+@refcommands
+
+The following commands set @code{fontSize} for the current voice:
+
+@funindex \tiny
+@code{\tiny},
+@funindex \small
+@code{\small},
+@funindex \normalsize
+@code{\normalsize}.
+
+@seealso
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+Internals Reference: @internalsref{font-interface}.
+
+
+@node Fingering instructions
+@subsubsection Fingering instructions
+
+@cindex fingering
+@cindex finger change
+
+Fingering instructions can be entered using
+
+@example
+@var{note}-@var{digit}
+@end example
+
+For finger changes, use markup texts
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
+c4-1 c-2 c-3 c-4
+c^\markup { \finger "2 - 3" }
+@end lilypond
+
+@cindex thumb-script
+
+
+You can use the thumb-script to indicate that a note should be
+played with the thumb (e.g., in cello music)
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+<a_\thumb a'-3>8 <b_\thumb b'-3>
+@end lilypond
+
+@cindex fingering chords
+@cindex chords, fingering
+
+Fingerings for chords can also be added to individual notes of the
+chord by adding them after the pitches
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
+< c-1 e-2 g-3 b-5 >4
+@end lilypond
+
+
+@commonprop
+
+You may exercise greater control over fingering chords by setting
+@code{fingeringOrientations}
+
+@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
+\set fingeringOrientations = #'(left down)
+<c-1 es-2 g-4 bes-5 > 4
+\set fingeringOrientations = #'(up right down)
+<c-1 es-2 g-4 bes-5 > 4
+@end lilypond
+
+Using this feature, it is also possible to put fingering
+instructions very close to note heads in monophonic music,
+
+@lilypond[verbatim,ragged-right,quote,fragment]
+\set fingeringOrientations = #'(right)
+<es'-2>4
+@end lilypond
+
+
+@seealso
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+Internals Reference: @internalsref{Fingering}.
+
+
+@node Hidden notes
+@subsubsection Hidden notes
+
+@cindex Hidden notes
+@cindex Invisible notes
+@cindex Transparent notes
+
+@funindex \hideNotes
+@funindex \unHideNotes
+
+Hidden (or invisible or transparent) notes can be useful in
+preparing theory or composition exercises.
+
+@lilypond[quote,ragged-right,verbatim,relative=2,fragment]
+c4 d4
+\hideNotes
+e4 f4
+\unHideNotes
+g4 a
+@end lilypond
+
+@seealso
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+
+@node Coloring objects
+@subsubsection Coloring objects
+
+@cindex colored objects
+@cindex colors
+@cindex coloring objects
+@cindex colored notes
+@cindex coloring notes
+@cindex notes, colored
+
+Individual objects may be assigned colors. You may use the color
+names listed in the @ref{List of colors}.
+
+@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
+\override NoteHead #'color = #red
+c4 c
+\override NoteHead #'color = #(x11-color 'LimeGreen)
+d
+\override Stem #'color = #blue
+e
+@end lilypond
+
+@cindex x11-color
+
+The full range of colors defined for X11 can be accessed by using
+the Scheme function x11-color. The function takes one argument
+that can be a symbol
+
+@example
+\override Beam #'color = #(x11-color 'MediumTurquoise)
+@end example
+
+or a string
+
+@example
+\override Beam #'color = #(x11-color "MediumTurquoise")
+@end example
+
+The first form is quicker to write and is more efficient.
+However, using the second form it is possible to access X11 colors
+by the multi-word form of its name
+
+@example
+\override Beam #'color = #(x11-color "medium turquoise")
+@end example
+
+If x11-color cannot make sense of the parameter then the color
+returned defaults to black. It should be obvious from the final
+score that something is wrong.
+
+This example illustrates the use of x11-color. Notice that the
+stem color remains black after being set to (x11-color 'Boggle),
+which is deliberate nonsense.
+
+@lilypond[quote,ragged-right,verbatim]
+{
+ \override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
+ \set Staff.instrumentName = \markup {
+ \with-color #(x11-color 'navy) "Clarinet"
+ }
+ \time 2/4
+ gis''8 a''
+ \override Beam #'color = #(x11-color "medium turquoise")
+ gis'' a''
+ \override NoteHead #'color = #(x11-color "LimeGreen")
+ gis'' a''
+ \override Stem #'color = #(x11-color 'Boggle)
+ gis'' a''
+}
+@end lilypond
+
+
+TODO
+you can get exact RGB colors by specifying
+
+% black
+\override Stem #'color = #(rgb-color 0 0 0)
+% white
+\override Stem #'color = #(rgb-color 1 1 1)
+% dark blue
+\override Stem #'color = #(rgb-color 0 0 0.5)
+
+
+@seealso
+
+Notation Reference: @ref{List of colors}, @ref{Objects connected to
+the input}.
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+@refbugs
+Not all x11 colors are distinguishable in a web browser. For web
+use normal colors are recommended.
+
+An x11 color is not necessarily exactly the same shade as a
+similarly named normal color.
+
+Notes in a chord cannot be colored with @code{\override}; use
+@code{\tweak} instead. See @ref{Objects connected to the input},
+for details.
+
+
+@node Parentheses
+@subsubsection Parentheses
+
+@cindex ghost notes
+@cindex notes, ghost
+@cindex notes, parenthesized
+@cindex parentheses
+
+Objects may be parenthesized by prefixing @code{\parenthesize} to
+the music event,
+
+@lilypond[relative=2,fragment,verbatim,ragged-right]
+<
+ c
+ \parenthesize d
+ g
+>4-\parenthesize -.
+@end lilypond
+
+This only functions inside chords, to parenthesize a single note it
+must be enclosed with @code{<>} as if it is a chord.
+
+@example
+< \parenthesize NOTE>
+@end example
+
+@seealso
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+
+@node Stems
+@subsubsection Stems
+
+@cindex stem
+
+Whenever a note is found, a @code{Stem} object is created
+automatically. For whole notes and rests, they are also created but
+made invisible.
+
+@refcommands
+
+@funindex \stemUp
+@code{\stemUp},
+@funindex \stemDown
+@code{\stemDown},
+@funindex \stemNeutral
+@code{\stemNeutral}.
+
+
+@commonprop
+
+@cindex stem, direction
+@cindex stem, up
+@cindex stem, down
+@cindex stem, neutral
+
+To change the direction of stems on the center line of the staff, use
+
+@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+a4 b c b
+\override Stem #'neutral-direction = #up
+a4 b c b
+\override Stem #'neutral-direction = #down
+a4 b c b
+@end lilypond
+
+@seealso
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+
+@node Outside the staff
+@subsection Outside the staff
+
+
+@menu
+* Balloon help::
+* Grid lines::
+* Blank music sheet::
+* Analysis brackets::
+@end menu
+
+@node Balloon help
+@subsubsection Balloon help
+
+Elements of notation can be marked and named with the help of a
+square balloon. The primary purpose of this feature is to explain
+notation.
+
+The following example demonstrates its use.
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+\new Voice \with { \consists "Balloon_engraver" }
+{
+ \balloonGrobText #'Stem #'(3 . 4) \markup { "I'm a Stem" }
+ <f-\balloonText #'(-2 . -2) \markup { "I'm a note head" } >8
+}
+@end lilypond
+
+@noindent
+There are two music functions, @code{balloonGrobText} and
+@code{balloonText}; the former takes the name of the grob to adorn,
+while the latter may be used as an articulation on a note. The other
+arguments are the offset and the text of the label.
+
+@cindex balloon
+@cindex notation, explaining
+
+@seealso
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+Internals Reference: @internalsref{text-balloon-interface}.
+
+
+@node Grid lines
+@subsubsection Grid lines
+
+Vertical lines can be drawn between staves synchronized with the
+notes.
+
+@lilypond[ragged-right,quote,verbatim]
+\layout {
+ \context {
+ \Staff
+ \consists "Grid_point_engraver" %% sets of grid
+ gridInterval = #(ly:make-moment 1 4)
+ }
+}
+
+\new Score \with {
+ \consists "Grid_line_span_engraver"
+ %% centers grid lines horizontally below note heads
+ \override NoteColumn #'X-offset = #-0.5
+}
+
+\new ChoirStaff <<
+ \new Staff {
+ \stemUp
+ \relative {
+ c'4. d8 e8 f g4
+ }
+ }
+ \new Staff {
+ %% centers grid lines vertically
+ \override Score.GridLine #'extra-offset = #'( 0.0 . 1.0 )
+ \stemDown
+ \clef bass
+ \relative c {
+ c4 g' f e
+ }
+ }
+>>
+@end lilypond
+
+@seealso
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+
+@node Blank music sheet
+@subsubsection Blank music sheet
+
+@cindex sheet music, empty
+@cindex staves, blank sheet
+@cindex blank staff paper
+@cindex staff paper, blank
+
+A blank music sheet can be produced also by using invisible notes,
+and removing @code{Bar_number_engraver}.
+
+
+@lilypond[quote,verbatim]
+\layout{ indent = #0 }
+emptymusic = {
+ \repeat unfold 2 % Change this for more lines.
+ { s1\break }
+ \bar "|."
+}
+\new Score \with {
+ \override TimeSignature #'transparent = ##t
+% un-comment this line if desired
+% \override Clef #'transparent = ##t
+ defaultBarType = #""
+ \remove Bar_number_engraver
+} <<
+
+% modify these to get the staves you want
+ \new Staff \emptymusic
+ \new TabStaff \emptymusic
+>>
+@end lilypond
+
+@seealso
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+
+@node Analysis brackets
+@subsubsection Analysis brackets
+
+@cindex brackets
+@cindex phrasing brackets
+@cindex musicological analysis
+@cindex note grouping bracket
+
+Brackets are used in musical analysis to indicate structure in musical
+pieces. LilyPond supports a simple form of nested horizontal
+brackets. To use this, add the @code{Horizontal_bracket_engraver} to
+the @code{Staff} context. A bracket is started with
+@code{\startGroup} and closed with @code{\stopGroup}.
+
+@lilypond[quote,ragged-right,verbatim]
+\score {
+ \relative c'' {
+ c4\startGroup\startGroup
+ c4\stopGroup
+ c4\startGroup
+ c4\stopGroup\stopGroup
+ }
+ \layout {
+ \context {
+ \Staff \consists "Horizontal_bracket_engraver"
+}}}
+@end lilypond
+
+@seealso
+
+Snippets: @lsrdir{Editorial,Editorial-annotations}.
+
+Internals Reference: @internalsref{HorizontalBracket},
+@internalsref{Horizontal_bracket_engraver}, @internalsref{Staff}.
+
+
+++ /dev/null
-@c -*- coding: utf-8; mode: texinfo; -*-
-@ignore
- Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
- When revising a translation, copy the HEAD committish of the
- version that you are working on. See TRANSLATION for details.
-@end ignore
-
-@node Editorial annotations
-@section Editorial annotations
-
-@lilypondfile[ragged-right,line-width=16\cm,staffsize=16,quote]
-{editorial-headword.ly}
-
-@menu
-* Inside the staff::
-* Outside the staff::
-@end menu
-
-
-@node Inside the staff
-@subsection Inside the staff
-
-
-@menu
-* Selecting notation font size::
-* Fingering instructions::
-* Hidden notes::
-* Coloring objects::
-* Parentheses::
-* Stems::
-@end menu
-
-@node Selecting notation font size
-@unnumberedsubsubsec Selecting notation font size
-
-The easiest method of setting the font size of any context is by
-setting the @code{fontSize} property.
-
-@lilypond[quote,fragment,relative=1,verbatim]
-c8
-\set fontSize = #-4
-c f
-\set fontSize = #3
-g
-@end lilypond
-
-@noindent
-It does not change the size of variable symbols, such as beams or
-slurs.
-
-Internally, the @code{fontSize} context property will cause the
-@code{font-size} property to be set in all layout objects. The
-value of @code{font-size} is a number indicating the size relative
-to the standard size for the current staff height. Each step up
-is an increase of approximately 12% of the font size. Six steps
-is exactly a factor two. The Scheme function @code{magstep}
-converts a @code{font-size} number to a scaling factor. The
-@code{font-size} property can also be set directly, so that only
-certain layout objects are affected.
-
-@lilypond[quote,fragment,relative=1,verbatim]
-c8
-\override NoteHead #'font-size = #-4
-c f
-\override NoteHead #'font-size = #3
-g
-@end lilypond
-
-Font size changes are achieved by scaling the design size that is
-closest to the desired size. The standard font size (for
-@code{font-size} equals 0), depends on the standard staff height.
-For a 20pt staff, a 10pt font is selected.
-
-The @code{font-size} property can only be set on layout objects
-that use fonts. These are the ones supporting the
-@internalsref{font-interface} layout interface.
-
-@refcommands
-
-The following commands set @code{fontSize} for the current voice:
-
-@funindex \tiny
-@code{\tiny},
-@funindex \small
-@code{\small},
-@funindex \normalsize
-@code{\normalsize}.
-
-
-@node Fingering instructions
-@unnumberedsubsubsec Fingering instructions
-
-@cindex fingering
-@cindex finger change
-
-Fingering instructions can be entered using
-
-@example
-@var{note}-@var{digit}
-@end example
-
-For finger changes, use markup texts
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
-c4-1 c-2 c-3 c-4
-c^\markup { \finger "2 - 3" }
-@end lilypond
-
-You can use the thumb-script to indicate that a note should be
-played with the thumb (e.g., in cello music)
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-<a_\thumb a'-3>8 <b_\thumb b'-3>
-@end lilypond
-
-Fingerings for chords can also be added to individual notes of the
-chord by adding them after the pitches
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-< c-1 e-2 g-3 b-5 >4
-@end lilypond
-
-
-@commonprop
-
-You may exercise greater control over fingering chords by setting
-@code{fingeringOrientations}
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=1]
-\set fingeringOrientations = #'(left down)
-<c-1 es-2 g-4 bes-5 > 4
-\set fingeringOrientations = #'(up right down)
-<c-1 es-2 g-4 bes-5 > 4
-@end lilypond
-
-Using this feature, it is also possible to put fingering
-instructions very close to note heads in monophonic music,
-
-@lilypond[verbatim,ragged-right,quote,fragment]
-\set fingeringOrientations = #'(right)
-<es'-2>4
-@end lilypond
-
-
-@seealso
-
-Internals Reference: @internalsref{Fingering}.
-
-Examples: @lsr{expressive,fingering-chords.ly}
-
-
-
-@node Hidden notes
-@unnumberedsubsubsec Hidden notes
-
-@cindex Hidden notes
-@cindex Invisible notes
-@cindex Transparent notes
-
-@funindex \hideNotes
-@funindex \unHideNotes
-
-Hidden (or invisible or transparent) notes can be useful in
-preparing theory or composition exercises.
-
-@lilypond[quote,ragged-right,verbatim,relative=2,fragment]
-c4 d4
-\hideNotes
-e4 f4
-\unHideNotes
-g4 a
-@end lilypond
-
-
-@node Coloring objects
-@unnumberedsubsubsec Coloring objects
-
-Individual objects may be assigned colors. You may use the color
-names listed in the @ref{List of colors}.
-
-@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\override NoteHead #'color = #red
-c4 c
-\override NoteHead #'color = #(x11-color 'LimeGreen)
-d
-\override Stem #'color = #blue
-e
-@end lilypond
-
-The full range of colors defined for X11 can be accessed by using
-the Scheme function x11-color. The function takes one argument
-that can be a symbol
-
-@example
-\override Beam #'color = #(x11-color 'MediumTurquoise)
-@end example
-
-or a string
-
-@example
-\override Beam #'color = #(x11-color "MediumTurquoise")
-@end example
-
-The first form is quicker to write and is more efficient.
-However, using the second form it is possible to access X11 colors
-by the multi-word form of its name
-
-@example
-\override Beam #'color = #(x11-color "medium turquoise")
-@end example
-
-If x11-color cannot make sense of the parameter then the color
-returned defaults to black. It should be obvious from the final
-score that something is wrong.
-
-This example illustrates the use of x11-color. Notice that the
-stem color remains black after being set to (x11-color 'Boggle),
-which is deliberate nonsense.
-
-@lilypond[quote,ragged-right,verbatim]
-{
- \override Staff.StaffSymbol #'color = #(x11-color 'SlateBlue2)
- \set Staff.instrumentName = \markup {
- \with-color #(x11-color 'navy) "Clarinet"
- }
- \time 2/4
- gis''8 a''
- \override Beam #'color = #(x11-color "medium turquoise")
- gis'' a''
- \override NoteHead #'color = #(x11-color "LimeGreen")
- gis'' a''
- \override Stem #'color = #(x11-color 'Boggle)
- gis'' a''
-}
-@end lilypond
-
-
-TODO
-you can get exact RGB colors by specifying
-
-% black
-\override Stem #'color = #(rgb-color 0 0 0)
-% white
-\override Stem #'color = #(rgb-color 1 1 1)
-% dark blue
-\override Stem #'color = #(rgb-color 0 0 0.5)
-
-
-@seealso
-
-Appendix: @ref{List of colors}.
-
-
-@refbugs
-Not all x11 colors are distinguishable in a web browser. For web
-use normal colors are recommended.
-
-An x11 color is not necessarily exactly the same shade as a
-similarly named normal color.
-
-Notes in a chord cannot be colored with @code{\override}; use
-@code{\tweak} instead. See @ref{Objects connected to the input},
-for details.
-
-
-@node Parentheses
-@unnumberedsubsubsec Parentheses
-
-@cindex ghost notes
-@cindex notes, ghost
-@cindex notes, parenthesized
-
-Objects may be parenthesized by prefixing @code{\parenthesize} to
-the music event,
-
-@lilypond[relative=2,fragment,verbatim,ragged-right]
-<
- c
- \parenthesize d
- g
->4-\parenthesize -.
-@end lilypond
-
-This only functions inside chords, to parenthesize a single note it
-must be enclosed with @code{<>} as if it is a chord.
-
-@example
-< \parenthesize NOTE>
-@end example
-
-
-@node Stems
-@unnumberedsubsubsec Stems
-
-Whenever a note is found, a @internalsref{Stem} object is created
-automatically. For whole notes and rests, they are also created
-but made invisible.
-
-@refcommands
-
-@funindex \stemUp
-@code{\stemUp},
-@funindex \stemDown
-@code{\stemDown},
-@funindex \stemNeutral
-@code{\stemNeutral}.
-
-
-@commonprop
-
-To change the direction of stems on the center line of the staff, use
-
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-a4 b c b
-\override Stem #'neutral-direction = #up
-a4 b c b
-\override Stem #'neutral-direction = #down
-a4 b c b
-@end lilypond
-
-
-@node Outside the staff
-@subsection Outside the staff
-
-
-@menu
-* Balloon help::
-* Grid lines::
-* Blank music sheet::
-* Analysis brackets::
-@end menu
-
-@node Balloon help
-@unnumberedsubsubsec Balloon help
-
-Elements of notation can be marked and named with the help of a
-square balloon. The primary purpose of this feature is to explain
-notation.
-
-The following example demonstrates its use.
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\new Voice \with { \consists "Balloon_engraver" }
-{
- \balloonGrobText #'Stem #'(3 . 4) \markup { "I'm a Stem" }
- <f-\balloonText #'(-2 . -2) \markup { "I'm a note head" } >8
-}
-@end lilypond
-
-@noindent
-There are two music functions, @code{balloonText} and
-@code{balloonGrobText}. The latter takes the name of the grob to
-adorn, while the former may be used as an articulation on a note.
-The other arguments are the offset and the text of the label.
-
-@cindex balloon
-@cindex notation, explaining
-
-@seealso
-
-Internals Reference: @internalsref{text-balloon-interface}.
-
-
-@node Grid lines
-@unnumberedsubsubsec Grid lines
-
-Vertical lines can be drawn between staves synchronized with the
-notes.
-
-@lilypond[ragged-right,quote,verbatim]
-\layout {
- \context {
- \Staff
- \consists "Grid_point_engraver" %% sets of grid
- gridInterval = #(ly:make-moment 1 4)
- }
-}
-
-\new Score \with {
- \consists "Grid_line_span_engraver"
- %% centers grid lines horizontally below note heads
- \override NoteColumn #'X-offset = #-0.5
-}
-
-\new ChoirStaff <<
- \new Staff {
- \stemUp
- \relative {
- c'4. d8 e8 f g4
- }
- }
- \new Staff {
- %% centers grid lines vertically
- \override Score.GridLine #'extra-offset = #'( 0.0 . 1.0 )
- \stemDown
- \clef bass
- \relative c {
- c4 g' f e
- }
- }
->>
-@end lilypond
-
-Examples: @lsrdir{education}
-
-
-@node Blank music sheet
-@unnumberedsubsubsec Blank music sheet
-
-@cindex Sheet music, empty
-@cindex Staves, blank sheet
-
-A blank music sheet can be produced also by using invisible notes,
-and removing @code{Bar_number_engraver}.
-
-
-@lilypond[quote,verbatim]
-\layout{ indent = #0 }
-emptymusic = {
- \repeat unfold 2 % Change this for more lines.
- { s1\break }
- \bar "|."
-}
-\new Score \with {
- \override TimeSignature #'transparent = ##t
-% un-comment this line if desired
-% \override Clef #'transparent = ##t
- defaultBarType = #""
- \remove Bar_number_engraver
-} <<
-
-% modify these to get the staves you want
- \new Staff \emptymusic
- \new TabStaff \emptymusic
->>
-@end lilypond
-
-
-@node Analysis brackets
-@unnumberedsubsubsec Analysis brackets
-
-@cindex brackets
-@cindex phrasing brackets
-@cindex musicological analysis
-@cindex note grouping bracket
-
-Brackets are used in musical analysis to indicate structure in
-musical pieces. LilyPond supports a simple form of nested
-horizontal brackets. To use this, add the
-@internalsref{Horizontal_bracket_engraver} to the
-@internalsref{Staff} context. A bracket is started with
-@code{\startGroup} and closed with @code{\stopGroup}.
-
-@lilypond[quote,ragged-right,verbatim]
-\score {
- \relative c'' {
- c4\startGroup\startGroup
- c4\stopGroup
- c4\startGroup
- c4\stopGroup\stopGroup
- }
- \layout {
- \context {
- \Staff \consists "Horizontal_bracket_engraver"
-}}}
-@end lilypond
-
-@seealso
-
-Internals Reference: @internalsref{HorizontalBracket}.
-
-
@end menu
@node Articulations and ornamentations
-@unnumberedsubsubsec Articulations and ornamentations
+@subsubsection Articulations and ornamentations
@cindex articulations
@cindex scripts
@seealso
-Snippets: @lsrdir{expressive}
+Snippets: @lsrdir{Expressive,Expressive-marks}
Internals Reference: @internalsref{Script},
@internalsref{TextScript}.
@node Dynamics
-@unnumberedsubsubsec Dynamics
+@subsubsection Dynamics
@cindex dynamics
@funindex \pppp
Learning Manual: @rlearning{Articulation and dynamics}.
-Snippets: @lsrdir{expressive}
+Snippets: @lsrdir{Expressive,Expressive-marks}
Internals Reference: @internalsref{DynamicText},
@internalsref{Hairpin}. Vertical positioning of these symbols is
@end menu
@node Slurs
-@unnumberedsubsubsec Slurs
+@subsubsection Slurs
@cindex slurs
@seealso
-Snippets: @lsrdir{expressive}
+Snippets: @lsrdir{Expressive,Expressive-marks}
Internals Reference: @internalsref{Slur}.
@node Phrasing slurs
-@unnumberedsubsubsec Phrasing slurs
+@subsubsection Phrasing slurs
@cindex phrasing slurs
@cindex phrasing marks
@seealso
-Snippets: @lsrdir{expressive}
+Snippets: @lsrdir{Expressive,Expressive-marks}
Internals Reference: @internalsref{PhrasingSlur}.
@node Breath marks
-@unnumberedsubsubsec Breath marks
+@subsubsection Breath marks
Breath marks are entered using @code{\breathe}:
@seealso
-Snippets: @lsrdir{expressive}, @lsr{expressive,breathing-sign.ly}.
+Snippets: @lsrdir{Expressive,Expressive-marks}, @c @lsr{expressive,breathing-sign.ly}.
Internals Reference: @internalsref{BreathingSign}.
@node Falls and doits
-@unnumberedsubsubsec Falls and doits
+@subsubsection Falls and doits
Falls and doits can be added to notes using the @code{\bendAfter}
command,
@end menu
@node Glissando
-@unnumberedsubsubsec Glissando
+@subsubsection Glissando
@cindex glissando
@funindex \glissando
Music Glossary: @rglos{falls}, @rglos{doits}.
-Snippets: @lsrdir{expressive}.
+Snippets: @lsrdir{Expressive,Expressive-marks}.
@c FIXME: I need to figure out what's up with these. -gp
@c @lsr{expressive,glissando.ly},
@node Arpeggio
-@unnumberedsubsubsec Arpeggio
+@subsubsection Arpeggio
@cindex arpeggio
@cindex broken chord
Notation Reference: @ref{Ties}, for writing out arpeggios.
-Snippets: @lsrdir{expressive}
+Snippets: @lsrdir{Expressive,Expressive-marks}
Internals Reference: @internalsref{Arpeggio},
@internalsref{PianoStaff}.
@node Trills
-@unnumberedsubsubsec Trills
+@subsubsection Trills
Short trills are printed with @code{\trill} like normal
articulation; see @ref{Articulations and ornamentations}.
@seealso
-Snippets: @lsrdir{expressive}
+Snippets: @lsrdir{Expressive,Expressive-marks}
Internals Reference: @internalsref{TrillSpanner}.
A basic example of a lilypond input file is
@example
-\version "2.11.23"
+\version "2.11.38"
\score @{
@var{...compound music expression...} % all the music goes here!
\header @{ @}
Notation Reference -- @ruser{Score layout} and
@ruser{Creating MIDI files}.
-The @code{\book} command allows
-several @code{\score} blocks to be combined into one output.
-If there are several @code{\book} blocks each one produces a
+You may code multiple @code{\score} blocks. Each will be
+treated as a separate score, but they will be all combined into
+a single output file. A @code{\book} command is not necessary
+-- one will be implicitly created. However, if you would like
+separate output files from one @code{.ly} file then the
+@code{\book} command should be used to separate the different
+sections: each @code{\book} block will produce a
separate output file. For details see @ruser{Multiple scores
in a book}.
>>
\new Staff <<
\new Voice = "SopTwo" {
+ \global
\SopTwoMusic
}
\new Lyrics \lyricsto "SopTwo" {
>>
\new Staff <<
\clef "bass"
- \new Voice = "Tenor" { \voiceOne \TenorMusic }
+ \new Voice = "Tenor" { \voiceOne \TimeKey \TenorMusic }
\new Voice = "Bass" { \voiceTwo \BassMusic }
>>
>>
contain many @code{Staff} contexts.
@quotation
-@image{context-example,5cm,,}
+@sourceimage{context-example,5cm,,}
@end quotation
Each context has the responsibility for enforcing some notation rules,
@lilypond[quote,verbatim,ragged-right]
<<
\new Staff \relative c'' {
- \set Staff.instrumentName = "Soprano"
+ \set Staff.instrumentName = #"Soprano"
c4 c
}
\new Staff \relative c' {
- \set instrumentName = "Alto" % Wrong!
+ \set instrumentName = #"Alto" % Wrong!
d4 d
}
>>
output. This is a crude way of modifying the output, but it
can sometimes be useful.
-@unnumberedsubsubsec Changing a single context
+@subsubsection Changing a single context
To remove an engraver from a single context we use the
@code{\with} command placed immediately after the context creation
>>
@end lilypond
-@unnumberedsubsubsec Changing all contexts of the same type
+@subsubsection Changing all contexts of the same type
The examples above show how to remove or add engravers to
individual contexts. It is also possible to remove or add
soprano part).
@example
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' @{
\clef treble
\key c \major
Now we want to add a cello part. Let's look at the @q{Notes only} example:
@example
-\version "2.11.23"
+\version "2.11.38"
melody = \relative c' @{
\clef treble
\key c \major
@}
@end example
-We don't need two @code{\version} commands. We'll need the @code{melody}
-section. We don't want two @code{\score} sections -- if we had two
-@code{\score}s, we'd get the two parts separately. We want them together,
-as a duet. Within the @code{\score} section, we don't need two
-@code{\layout} or @code{\midi}.
-
-If we simply cut and paste the @code{melody} section, we would end up with
-two @code{melody} sections. So let's rename them. We'll call the section
-for the soprano @code{sopranoMusic} and the section for the cello
-@code{celloMusic}. While we're doing this, let's rename @code{text}
-to be @code{sopranoLyrics}. Remember to rename both instances of all
-these names -- both the initial definition (the
+We don't need two @code{\version} commands. We'll need the
+@code{melody} section. We don't want two @code{\score} sections
+-- if we had two @code{\score}s, we'd get the two parts separately.
+We want them together, as a duet. Within the @code{\score}
+section, we don't need two @code{\layout} or @code{\midi}.
+
+If we simply cut and paste the @code{melody} section, we would
+end up with two @code{melody} definitions. This would not generate
+an error, but the second one would be used for both melodies.
+So let's rename them to make them distinct. We'll call the
+section for the soprano @code{sopranoMusic} and the section for
+the cello @code{celloMusic}. While we're doing this, let's rename
+@code{text} to be @code{sopranoLyrics}. Remember to rename both
+instances of all these names -- both the initial definition (the
@code{melody = \relative c' @{ } part) and the name's use (in the
@code{\score} section).
-While we're doing this, let's change the cello part's staff -- celli
-normally use bass clef. We'll also give the cello some different
-notes.
+While we're doing this, let's change the cello part's staff --
+celli normally use bass clef. We'll also give the cello some
+different notes.
@example
-\version "2.11.23"
+\version "2.11.38"
sopranoMusic = \relative c' @{
\clef treble
\key c \major
easily fixed. Here's the complete soprano and cello template.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.37"
sopranoMusic = \relative c' {
\clef treble
\key c \major
@c The following should appear as music without code
@lilypond[quote,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global = { \key d \major \time 4/4 }
sopMusic = \relative c'' {
\clef "treble"
}
altoMusic = \relative a' {
\clef "treble"
- r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 |
+ r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 |
}
altoWords = \sopWords
tenorMusic = \relative c' {
for the three bars of the example above gives:
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
global = { \key d \major \time 4/4 }
sopMusic = \relative c'' {
\clef "treble"
and key:
@example
-\version "2.11.23"
+\version "2.11.38"
\header @{
title = "Jesu, meine Freude"
composer = "J S Bach"
is to add the music, and combine all the parts together.
@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
+\version "2.11.38"
\header {
title = "Jesu, meine Freude"
composer = "J S Bach"
+
+
@end menu
@node String number indications
-@unnumberedsubsubsec String number indications
+@subsubsection String number indications
@cindex String numbers
@seealso
Internals Reference: @internalsref{StringNumber},
-@lsr{guitar/,string-number.ly}.
+@c @lsr{guitar/,string-number.ly}.
@node Tablatures basic
-@unnumberedsubsubsec Tablatures basic
+@subsubsection Tablatures basic
@cindex Tablatures basic
Tablature notation is used for notating music for plucked string
@node Non-guitar tablatures
-@unnumberedsubsubsec Non-guitar tablatures
+@subsubsection Non-guitar tablatures
@cindex Non-guitar tablatures
You can change the tuning of the strings. A string tuning is given as
@node Banjo tablatures
-@unnumberedsubsubsec Banjo tablatures
+@subsubsection Banjo tablatures
@cindex Banjo tablatures
LilyPond has basic support for five stringed banjo. When making tablatures
@node Fret diagrams
-@unnumberedsubsubsec Fret diagrams
+@subsubsection Fret diagrams
@cindex fret diagrams
@cindex chord diagrams
@seealso
-Examples: @lsrdir{guitar}
+Examples: @c @lsrdir{guitar}
@node Right hand fingerings
-@unnumberedsubsubsec Right hand fingerings
+@subsubsection Right hand fingerings
Right hand fingerings in chords can be entered using
@code{@var{note}-\rightHandFinger @var{finger}}
@node Other guitar issues
-@unnumberedsubsubsec Other guitar issues
+@subsubsection Other guitar issues
This example demonstrates how to include guitar position and
barring indications.
@seealso
-Examples: @lsr{non-notation,clip-systems.ly}
+Examples: @c @lsr{non-notation,clip-systems.ly}
@node Including LilyPond files
@seealso
-@lsr{text,utf-8.ly}
+@c @lsr{text,utf-8.ly}
@node Different editions from one source
@seealso
-Examples: @lsr{parts,tag@/-filter@/.ly}
+Examples: @c @lsr{parts,tag@/-filter@/.ly}
@refbugs
You can view the documentation online at
@uref{http://lilypond.org/doc/}, but you can also build it locally.
-This process requires a successful compile of lilypond. The
-documentation is built by issuing
-
-@example
-make web
-@end example
-
-Building the website requires some additional tools and packages
+This process requires a successful compile of lilypond, and some
+additional tools and packages
@itemize
@item The @uref{http://netpbm.sourceforge.net/,netpbm utilities}
@uref{http://bugs.ghostscript.com/show_bug.cgi?id=688017}.
@end itemize
-The HTML files can be installed into the standard documentation path
-by issuing
+The documentation is built by issuing
+
+@example
+make web
+@end example
+
+After compilation, the HTML documentation tree is available in
+@file{out-www/offline-root/}, and can be browsed locally.
+
+The HTML and PDF files can be installed into the standard documentation
+path by issuing
@example
make out=www web-install
@end example
+It is also possible to build a documentation tree in
+@file{out-www/online-root/}, with special processing, so it can be used
+on a website with content negociation for automatic language selection;
+this can be achieved by issuing
+
+@example
+make WEB_TARGETS=online web
+@end example
+
+@noindent
+and both @q{offline} and @q{online} targets can be generated by issuing
+
+@example
+make WEB_TARGETS="offline online" web
+@end example
+
@node Building LilyPond
@subsection Building LilyPond
@end ifnottex
@end ifnotinfo
@ifinfo
-@c workaround for makeinfo-4.6: line breaks and multi-column cookies
-@image{henle-flat-bw,,,png} @image{baer-flat-bw,,,png}
-@image{lily-flat-bw,,,png}
+@image{lilypond/henle-flat-bw,,,png} @image{lilypond/baer-flat-bw,,,png}
+@image{lilypond/lily-flat-bw,,,png}
@end ifinfo
@item @tab
@ignore
Distributions will want to install lilypond.info in postinstall, doing:
- install-info --info-dir=/usr/share/info out/lilypond.info
+ install-info --info-dir=/usr/share/info out[-www]/lilypond.info
* Prepend GNU for dir, must be unique.
@c
-@c Info files are installed in subdirectories to allow images to be present.
-@c
-@dircategory LilyPond
+@c Info files are no longer installed in a subdirectory, images are
+@c expected to be found in lilypond/ subdirectory.
+@dircategory GNU LilyPond --- the music typesetter
@direntry
-* LilyPond: (lilypond/lilypond). The GNU music typesetter.
-* abc2ly: (lilypond/lilypond-program)Invoking abc2ly. Importing ABC.
-* convert-ly: (lilypond/lilypond-program)Invoking convert-ly. Older LilyPond versions.
-* etf2ly: (lilypond/lilypond-program)Invoking etf2ly. Importing Finale.
-* lilypond-book: (lilypond/lilypond-program)LilyPond-book. Integrating text and music.
-* midi2ly: (lilypond/lilypond-program)Invoking midi2ly. Importing MIDI.
+* LilyPond Learning Manual: (lilypond-learning). Start here.
+* Music Glossary: (music-glossary). For non-English users.
+* LilyPond: (lilypond). LilyPond Notation Reference.
+* LilyPond Internals Reference: (lilypond-internals). Definitions for tweaking.
+* LilyPond Application Usage: (lilypond-program). Installing and running applications.
+* abc2ly: (lilypond-program)Invoking abc2ly. Importing ABC.
+* convert-ly: (lilypond-program)Updating files with convert-ly. Older LilyPond versions.
+* etf2ly: (lilypond-program)Invoking etf2ly. Importing Finale.
+* lilypond-book: (lilypond-program)LilyPond-book. Integrating text and music.
+* midi2ly: (lilypond-program)Invoking midi2ly. Importing MIDI.
+* musicxml2ly: (lilypond-program)Invoking musicxml2ly. Importing MusicXML.
@end direntry
@c don't remove this comment.
@node LilyPond command index
@appendix LilyPond command index
+This index does blah blah blah.
+
@printindex ky
@node LilyPond index
@appendix LilyPond index
+In contrast, this index does blaz blaz blaz.
+
@printindex cp
@bye
@end quotation
@end macro
-@c TODO: define different output for info
+@ifnotinfo
@macro notation{TEXT}
@var{\TEXT\}
@end macro
+@end ifnotinfo
+@ifinfo
+@macro notation{TEXT}
+\TEXT\
+@end macro
+@end ifinfo
-
-@c **** Headings in a doc subsection ****
-
-@c not really a heading, but...
@macro smallspace
@sp 1
@end macro
+
+@c **** Displaying images not generated by lilypond-book
+
+@c current installation setup of Info docs requires that all images are
+@c expected to be found in lilypond/ subdirectory. lilypond-book already
+@c generates proper @image commands for images of music; these macros
+@c definitions do the same for other images.
+
+@ifnotinfo
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+@end ifnotinfo
+
+@ifinfo
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{lilypond/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+@end ifinfo
+
+
+@c **** Headings in a doc subsection ****
+
@c obsolete; being removed.
@macro refcommands
@noindent
@c **** Links and references ****
-@c usage: @lsr{ancient,custodes.ly}
-@macro lsr{DIR,TEXT}
+@c usage: @lsr{ancient,Ancient-notation,custodes.ly}
+@macro lsr{SECTION,DIR,TEXT}
@ifhtml
-@uref{source/input/lsr/snippets/\DIR\.html#\TEXT\,@file{\DIR\/\TEXT\}}
+@uref{source/input/lsr/snippets/\DIR\.html#\TEXT\,@file{\SECTION\/\TEXT\}}
@end ifhtml
@ifnothtml
-@file{\DIR\/\TEXT\}
+@file{\SECTION\/\TEXT\}
@end ifnothtml
@end macro
-@macro lsrdir{DIR}
+@c usage: @lsrdir{ancient,Ancient-notation}
+@macro lsrdir{SECTION,DIR}
@ifhtml
-@uref{source/input/lsr/snippets/\DIR\.html,\DIR\}
+@uref{source/input/lsr/snippets/\DIR\.html,\SECTION\}
@end ifhtml
@ifnothtml
\DIR\
@ifhtml
@c ***** HTML *****
-@c makeinfo-4.7 encodes html names, which means that nodes that
-@c contain nonalphanum characters will be broken links on the website.
-@c @uref{../lilypond-internals/\TEXT\.html,\TEXT\}@c
-@c @inforef{} adds ``See'' to the sentence, which is annoying, but
-@c better than a broken link.
-@c @inforef{\TEXT\,,lilypond-internals}@c
-@c using @ref without punctuation is OK without for formats other than info
-
@ifset bigpage
@macro internalsref{TEXT}
Languages in this order.
@itemize
+@item UK - British English (where it differs from American English)
@item ES - Spanish
@item I - Italian
@item F - French
@item D - German
@item NL - Dutch
-@item UK - British English
@item DK - Danish
@item S - Swedish
@item FI - Finnish
* beat::
* bind::
* brace::
-* bracket::
+* bracket::
* brass::
* breath mark::
* breve::
* forefall::
* forte::
* fourth::
-* Frenched score::
-* Frenched staff::
-* Frenched staves::
+* Frenched score::
+* Frenched staff::
+* Frenched staves::
* fugue::
* functional harmony::
* G::
* lilypond::
* ligature::
* line::
+* loco::
* long appoggiatura::
* longa::
* lyrics::
* meter::
* metronome::
* metronomic indication::
+* metronome mark::
* mezzo-soprano::
* middle C::
* minor::
* note head::
* note names::
* note value::
+* octavation::
* octave sign::
* octave::
* ornament::
* ossia::
-* ottava::
* part::
* pause::
* pennant::
* quadruplet::
* quarter note::
* quarter rest::
+* quarter tone::
* quintuplet::
* rallentando::
* relative key::
Indication of where to breathe in vocal and wind instrument parts.
+
@node breve
@section breve
S: ?,
FI: ?.
-FIXME: this is a placeholder
+The pitch at which the piano and other nontransposing instruments play: such
+instruments are said to be @q{in C}. The following list includes some (but not
+all) instruments that play in concert pitch:
+
+@itemize
+
+@item Woodwinds
+@itemize
+@item flute
+@item oboe
+@item bassoon
+@end itemize
+
+@item Brass
+@itemize
+@item alto trombone
+@item tenor trombone
+@item bass trombone
+@end itemize
+
+@item Strings
+@itemize
+@item violin
+@item viola
+@item violincello
+@end itemize
+
+@item piano
+
+@end itemize
+
+The trombones are a special case: although they are said to be @q{in F} (alto or
+bass) or @q{in B-flat} (tenor), this refers to their fundamental note, not to
+their parts' transposition. (In fact, the trombones' parts are written at
+concert pitch with an appropriate clef -- alto, tenor or bass.) This differs
+from other instruments @q{in F}, @q{in B-flat}, and so on, which are transposing
+instruments.
+
+Instruments that play @q{in C} but in a different octave than what is written
+are, technically speaking, @emph{transposing instruments}:
+
+@itemize
+
+@item piccolo (plays an octave higher)
+@item celesta (plays an octave higher)
+@item double-bass (plays an octave lower)
+
+@end itemize
+
+@seealso
+
+@ref{transposing instrument}.
@node conjunct movement
@node eighth note
@section eighth note
+UK: quaver,
ES: corchea,
I: croma,
F: croche,
-UK: quaver,
D: Achtel, Achtelnote,
NL: achtste noot,
DK: ottendedelsnode,
@node eighth rest
@section eighth rest
+UK: quaver rest,
ES: silencio de corchea,
I: pausa di croma,
F: demi-soupir,
-UK: quaver rest,
D: Achtelpause,
NL: achtste rust,
DK: ottendedelspause,
indicated @samp{sul G}, another series to be played on the D string
would be indicated @samp{sul D}, and so on.
+@item
+With an octave indication (also called @emph{octavation}, q.v.) to indicate that
+a passage is to be played higher or lower by the given number of octaves.
+
@end itemize
@seealso
-@ref{melisma}, @ref{sul G}, @ref{thorough bass}
+@ref{melisma}, @ref{sul G}, @ref{thorough bass}, @ref{octavation}.
@node F
@node half note
@section half note
+UK: minim,
ES: blanca,
I: minima,
F: blanche,
-UK: minim,
D: Halbe, halbe Note,
NL: halve noot,
DK: halvnode,
@node half rest
@section half rest
+UK: minim rest,
ES: silencio de blanca,
I: pausa di minima,
F: demi-pause,
-UK: minim rest,
D: halbe Pause,
NL: halve, rust,
DK: halvnodespause,
@node lilypond
@section lilypond
+UK: lily pond,
ES: estanque de nenúfares,
I: stagno del giglio,
-F: étang de lis,
-UK: lily pond,
+F: étang de nénuphars, étang de nymphéas,
D: Seerosenteich,
NL: le@-lie@-vij@-ver,
DK: liliedam,
@ref{staff}.
+@node loco
+@section loco
+
+ES: ?,
+I: loco,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
+[From Italian, @q{place}]. Instruction to play the following passage at the
+written pitch. Cancels octavation (q.v.).
+
+@seealso
+
+@ref{octavation}.
+
+
@node long appoggiatura
@section long appoggiatura
@section melisma
ES: melisma,
+I: ?,
F: mélisme,
D: Melisma,
NL: melisma,
+DK: ?,
+S: ?,
FI: melisma, laulettavan tavun sävelkuvio.
A melisma (plural, from Greek: melismata) is a group of notes or tones
@c TODO: add languages
+ES: ?,
+I: ?,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
@seealso
@ref{extender line}.
@node mensural notation
@section mensural notation
-@c FIXME: add languages
+@c TODO: add languages
ES: ?,
I: ?,
@c TODO: add definition (inc. info on proportional notation)
-@c FIXME: add cross-references.
+@c TODO: add cross-references.
@node meter
Other than quadruple and sextuple meters, these other recurrence
patterns were not frequently used prior to the 20th Century.
-In addition to classification by @emph{tactus}, meters can be further
-classified by how the tactus is subdivided: in two, the meter is
-@emph{simple}; in three, the meter is @emph{compound}.
+In addition to classification by primary beat grouping, meters can be further
+classified by how the primary beat is subdivided: if in two, the meter is
+@emph{simple}; if in three, the meter is @emph{compound}.
@itemize
aes4 bes8 aes ges4 aes f8 es \bar "||"}
@end lilypond
-Compound duple meter:
+Compound duple meter (unknown):
@lilypond[fragment,line-width=13.0\cm]
\relative c' {
\relative c' {
\time 12/8
\key e \major
- b8.( a16) gis8 a8.( gis16) fis8 gis8.( fis16) e8 fis4 b,8 |
+ b'8.( a16) gis8 a8.( gis16) fis8 gis8.( fis16) e8 fis4 b,8 |
e4 e8 fis( gis) a b4.~ b4 b8
\bar "||"}
@end lilypond
Device indicating the exact tempo of a piece.
+Invented ca. 1812 by Dietrich Nikolaus Winkler of Amsterdam, but takes its name
+from Johann Nepomuk Mälzel, who copied the device, added a scale of tempo
+divisions, and patented it as a "metronome". The inevitable lawsuit that
+followed acknowledged Winkler as the creator, but by then Mälzel had already
+sold many of them, and people had taken to calling it a Mälzel Metronome.
+
@seealso
-@ref{metronomic indication}.
+@ref{metronome mark}.
@node metronomic indication
@section metronomic indication
+@seealso
+
+@ref{metronome mark}
+
+
+@node metronome mark
+@section metronome mark
+
ES: indicación metronómica,
I: indicazione metronomica,
F: indication métronomique,
S: metronomangivelse,
FI: metronomiosoitus.
-Exact tempo indication (in beats per minute). Also denoted by
-M.M.@: (Mälzels Metronom).
+Exact tempo indication (in beats per minute). Abbreviated @samp{M.M.} or
+@samp{MM}, which is short for Mälzels Metronom (or Mälzel's Mark,
+@emph{anglice}).
+
+@seealso
+
+@ref{metronome}
@node mezzo-soprano
@end lilypond
+@node octavation
+@section octavation
+
+ES: ?,
+I: ?,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
+The use of a phrase or abbreviation with an extender line or bracket to indicate
+that a passage is to be played in a different octave:
+
+@itemize
+
+@item @samp{15ma}: play two octaves higher
+@item @samp{8va}: play one octave higher
+@item @samp{8vb}: play one octave lower
+@item @samp{8va} written below the passage: same as @samp{8vb}
+@item @samp{15vb}: play two octaves lower
+@item @samp{15va} written below the passage: same as @samp{15vb}
+
+@end itemize
+
+Another practice, which may be useful for longer passages, is to indicate the
+different octave with a phrase at the beginning (see below). When the music
+returns to the written pitch, the octavation is cancelled with the word
+@emph{loco} (q.v.).
+
+To parallel the list above:
+
+@itemize
+
+@item @samp{15ma}: @emph{alla quindicesima (alta)}
+@item @samp{8va}: @emph{all'ottava} or @emph{ottava sopra}
+@item @samp{8vb}: @emph{ottava bassa}, @emph{ottava sotto}
+@item @samp{15vb}: @emph{alla quindicesima (bassa)}
+
+@end itemize
+
+@emph{Quindicesima} can be replaced with @emph{quindecima}, which is Latin.
+
+@seealso
+
+@ref{interval}, @ref{loco}, @ref{octave}.
+
+
@node octave sign
@section octave sign
+ES: ?,
+I: ?,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
+Putting 8 or 15 above or below the clef to indicate that the entire part is
+played in the indicated octave: a clef-wide octavation. An octave sign can be
+applied to any clef, though it is most frequently used with the G and F clefs.
+
@seealso
@ref{G clef}, @ref{F clef}.
S: oktav,
FI: oktaavi.
+The interval of an octave, sometimes abbreviated @samp{8ve}.
+
+For uses like @emph{all'ottava} or @emph{8va} with an extender line or
+bracket, or @samp{loco} see octavation.
+
@seealso
-@ref{ottava}, @ref{interval}.
+@ref{interval}, @ref{octavation}.
@node ornament
of the music, for example for small hands.
-@node ottava
-@section ottava
-
-@c TODO: translations
-
-ES: ?,
-I: ottava,
-F: octave,
-DE: Oktavierung,
-NL: ?,
-DK: ?,
-S: ?,
-FI: ?.
-
-[From Italian] The interval of an octave, abbreviated 8va.
-
-@emph{All'ottava}, @emph{ottava alta}, @emph{ottava sopra}, or
-@emph{8va} written above a passage indicates that it should be played
-an octave higher than written. @emph{Ottava bassa}, @emph{ottava
-sotto}, or @emph{8va} written below a passage indicates that it should
-be played an octave lower than written.
-
-@seealso
-
-@ref{interval}.
-
-
@node part
@section part
@node quarter note
@section quarter note
+UK: crotchet,
ES: negra,
I: semiminima, nera,
F: noire,
-UK: crotchet,
D: Viertel, Viertelnote,
NL: kwartnoot,
DK: fjerdedelsnode,
@node quarter rest
@section quarter rest
+UK: crotchet rest,
ES: silencio de negra,
I: pausa di semiminima,
F: soupir,
-UK: crotchet rest,
D: Viertelpause,
NL: kwart rust,
DK:@w{ }fjerdedelspause,
@ref{note value}.
+@node quarter tone
+@section quarter tone
+
+ES: ?,
+I: ?,
+F: quart de ton,
+D: Viertelton,
+NL: kwart toon,
+DK: ?,
+S: kvartston,
+FI: ?.
+
+An interval equal to half a semitone.
+
+@seealso
+
+@ref{interval}
+
+
@node quintuplet
@section quintuplet
ES: ?,
I: ?,
F: ?,
-UK: ?,
D: ?,
NL: ?,
DK: ?,
@node sixteenth note
@section sixteenth note
+UK: semiquaver,
ES: semicorchea,
I: semicroma,
F: double croche,
-UK: semiquaver,
D: Sechzehntel, Sechzehntelnote,
NL: zes@-ti@-ende noot,
DK: sekstendedelsnode,
@node sixteenth rest
@section sixteenth rest
+UK: semiquaver rest,
ES: silencio de semicorchea,
I: pausa di semicroma,
F: quart de soupir,
-UK: semiquaver rest,
D: Sechzehntelpause,
NL: zestiende rust,
DK: sekstendedelspause,
@node sixty-fourth note
@section sixty-fourth note
+UK: hemidemisemiquaver,
ES: semifusa,
I: semibiscroma,
F: quadruple croche,
-UK: hemidemisemiquaver,
D: Vierundsechzigstel, Vierundsechzigstelnote,
NL: vierenzestigste noot,
DK: fi@-re@-og@-tred@-sinds@-ty@-ven@-de@-dels@-no@-de,
@node sixty-fourth rest
@section sixty-fourth rest
+UK: hemidemisemiquaver rest,
ES: silencio de semifusa,
I: pausa di semibiscroma,
F: seizième de soupir,
-UK: hemidemisemiquaver rest,
D: Vierundsechzigstelpause,
NL: vierenzestigste rust,
DK: fi@-re@-og@-tred@-sinds@-ty@-ven@-de@-dels@-pau@-se,
@node thirty-second note
@section thirty-second note
+UK: demisemiquaver,
ES: fusa,
I: biscroma,
F: triple croche,
-UK: demisemiquaver,
D: Zweiunddreissigstel, Zweiunddreissigstelnote,
NL: twee-endertig@-ste noot,
DK: toogtredivtedelsnode,
@node thirty-second rest
@section thirty-second rest
+UK: demisemiquaver rest,
ES: silencio de fusa,
I: pausa di biscroma,
F: huitième de soupir,
-UK: demisemiquaver rest,
D: Zweiunddreissigstel@-pause,
NL: 32e rust,
DK: toogtredivtedelspause,
S: ?,
FI: ?.
-FIXME: this is a placeholder
+Instruments whose notated pitch is different from their sounded pitch. Except
+for those whose notated and sounding pitches differ by one or more octaves (to
+reduce the number of ledger lines needed), most such instruments are identified
+by the letter name of the pitch class of their fundamental. The pitch class is
+the note that @emph{sounds} (disregarding the octave in which it sounds) when
+the instrument plays a notated C.
+
+For example: when played on the B-flat clarinet, the note middle C @emph{sounds}
+the B-flat one tone lower. If played on the A clarinet, the same written
+note sounds the A (one and half tones -- a minor third -- lower).
+
+Not all transposing instruments include the pitch class in their name:
+
+@itemize
+@item English horn (in F)
+@item Alto flute (in G)
+@end itemize
+
+@seealso
+
+@ref{concert pitch}.
@node transposition
@node whole note
@section whole note
+UK: semibreve,
ES: redonda,
I: semibreve,
F: ronde,
-UK: semibreve,
D: Ganze, ganze Note,
NL: hele noot,
DK: helnode,
@node whole rest
@section whole rest
+UK: semibreve rest,
ES: silencio de redonda,
I: pausa di semibreve,
F: pause,
-UK: semibreve rest,
D: ganze Pause, ganztaktige Pause,
NL: hele rust,
DK: helnodespause,
@node Duration names notes and rests
-@chapter Duration names, notes and rests
-
-@table @code
-@item DURATION NAMES, NOTES AND RESTS
-@end table
+@chapter Duration names notes and rests
-@multitable @columnfractions .15 .26 .33 .26
+@multitable @columnfractions .07 .23 .23 .23 .24
-@item
- @tab @strong{UK}
- @tab @strong{I}
- @tab @strong{F (note name / rest name)}
-@item
- @tab @strong{D}
- @tab @strong{NL}
- @tab @strong{DK}
-@item
- @tab @strong{S}
- @tab @strong{FI}
- @tab @strong{ES}
-
-@c extra @items make this table harder to read, so I removed them.
-
-@item @strong{longa}
- @tab longa
- @tab longa
- @tab longa
-@item
- @tab Longa
- @tab longa
- @tab longa
-@item
+@headitem @strong{US}
+ @tab long
+ @tab breve
+ @tab whole
+ @tab half
+@item @strong{UK}
@tab longa
+ @tab breve
+ @tab semibreve
+ @tab minim
+@item @strong{ES}
@tab longa
+ @tab cuadrada
+ @tab redonda
+ @tab blanca
+@item @strong{IT}
@tab longa
-
-@item @strong{breve}
- @tab breve
@tab breve
+ @tab semibreve
+ @tab minima
+@item @strong{FR}
+ @tab longa
@tab brève / double-pause
-@item
- @tab Brevis
- @tab brevis
- @tab brevis
-@item
- @tab brevis
- @tab brevis
- @tab cuadrada
-
-@item @strong{whole}
- @tab semi@-breve
- @tab semi@-breve
@tab ronde / pause
-@item
- @tab Ganze
- @tab hele
- @tab hel
-@item
- @tab hel
- @tab koko@-nuotti/@w{-tauko}
- @tab redonda
-
-@item @strong{half}
- @tab minim
- @tab minima
@tab blanche / demi-pause
-@item
+@item @strong{DE}
+ @tab Longa
+ @tab Brevis
+ @tab Ganze
@tab Halbe
+@item @strong{NL}
+ @tab longa
+ @tab brevis
+ @tab hele
@tab halve
+@item @strong{DK}
+ @tab longa
+ @tab brevis
+ @tab hel
@tab halv
-@item
+@item @strong{SE}
+ @tab longa
+ @tab brevis
+ @tab hel
@tab halv
+@item @strong{FI}
+ @tab longa
+ @tab brevis
+ @tab koko@-nuotti/@w{-tauko}
@tab puoli@-nuotti/@w{-tauko}
- @tab blanca
-@item @strong{quarter}
- @tab crotchet
- @tab semiminima
- @tab noire / soupir
-@item
- @tab Viertel
- @tab kwart
- @tab fjerdedel
-@item
- @tab fjärdedel
- @tab neljännesosa@-nuotti/@w{-tauko}
- @tab negra
+@end multitable
+
+@multitable @columnfractions .07 .31 .31 .31
-@item @strong{eighth}
+@headitem @strong{US}
+ @tab quarter
+ @tab eighth
+ @tab sixteenth
+@item @strong{UK}
+ @tab crotchet
@tab quaver
+ @tab semiquaver
+@item @strong{ES}
+ @tab negra
+ @tab corchea
+ @tab semicorchea
+@item @strong{IT}
+ @tab semiminima
@tab croma
+ @tab semicroma
+@item @strong{FR}
+ @tab noire / soupir
@tab croche / demi-soupir
-@item
+ @tab double* croche / quart de soupir
+@item @strong{DE}
+ @tab Viertel
@tab Achtel
- @tab achtste
- @tab ottendedel
-@item
- @tab åttondel
- @tab kahdeksasosa@-nuotti/@w{-tauko}
- @tab corchea
-
-@item @strong{sixteenth}
- @tab semiquaver
- @tab semicroma
- @tab double croche / quart de soupir
-@item
@tab Sechzehntel
+@item @strong{NL}
+ @tab kwart
+ @tab achtste
@tab zestiende
+@item @strong{DK}
+ @tab fjerdedel
+ @tab ottendedel
@tab sekstendedel
-@item
+@item @strong{SE}
+ @tab fjärdedel
+ @tab åttondel
@tab sextondel
+@item @strong{FI}
+ @tab neljännesosa@-nuotti/@w{-tauko}
+ @tab kahdeksasosa@-nuotti/@w{-tauko}
@tab kuudestoistaosa@-nuotti/@w{-tauko}
- @tab semicorchea
-@item @strong{thirty-second}
- @tab demisemiquaver
- @tab biscroma
- @tab triple croche / huitième de soupir
-@item
- @tab Zweiunddreissigstel
- @tab tweeendertigste
- @tab toogtredivtedel
-@item
- @tab trettiotvåondel
- @tab kolmaskymme@-neskahdesosa@-nuotti/@w{-tauko}
- @tab fusa
+@end multitable
-@item @strong{sixty-fourth}
+* About the French naming system: the word @emph{croche} refers to the
+note's "hook". Therefore, from the eighth note on, the note names mean
+@q{hook}, @q{doubled hook}, @q{trebled hook}, and so on.
+
+The rest names are based on the @emph{soupir}, or quarter rest. Subsequent
+rests are expressed as fractions thereof: half a @emph{soupir}, a quarter of
+a @emph{soupir}, and so on.
+
+@multitable @columnfractions .07 .46 .47
+
+@headitem @strong{US}
+ @tab thirty-second
+ @tab sixty-fourth
+@item @strong{UK}
+ @tab demisemiquaver
@tab hemidemisemiquaver
+@item @strong{ES}
+ @tab fusa*
+ @tab semifusa
+@item @strong{IT}
+ @tab biscroma
@tab semibiscroma
+@item @strong{FR}
+ @tab triple croche / huitième de soupir
@tab quadruple croche / seizième de soupir
-@item
+@item @strong{DE}
+ @tab Zweiunddreissigstel
@tab Vierundsechzigstel
+@item @strong{NL}
+ @tab tweeendertigste
@tab vierenzestigste
+@item @strong{DK}
+ @tab toogtredivtedel
@tab fireogtred@-sindstyvendedel
-@item
+@item @strong{SE}
+ @tab trettiotvåondel
@tab sextiofjärdedel
+@item @strong{FI}
+ @tab kolmaskymme@-neskahdesosa@-nuotti/@w{-tauko}
@tab kuudeskymme@-nesneljäsosa@-nuotti/@w{-tauko}
+
+@end multitable
+
+@multitable @columnfractions .07 .46 .47
+
+@headitem @strong{US} @tab one-hundred-twenty-eighth
+ @tab two-hundred-fifty-sixth@item @strong{UK}
+ @tab semihemidemisemiquaver or
+ quasihemidemisemiquaver @tab demisemihemidemisemiquaver (?)
+@item @strong{IT}
+ @tab fusa*
@tab semifusa
+@item @strong{ES}
+ @tab garrapatea @tab semigarrapatea@item @strong{FR}
+ @tab quintuple croche / trente-deuxième de soupir @tab sextuple croche / soixante-quatrième de soupir@item @strong{DE}
+ @tab Hundertundachtundzwanzigstel @tab Zweihundertundsechsundfünfzigstel@item @strong{NL}
+ @tab ?
+ @tab ?
+@item @strong{DK}
+ @tab ?
+ @tab ?
+@item @strong{SE}
+ @tab ?
+ @tab ?
+@item @strong{FI}
+ @tab ?
+ @tab ?
@end multitable
+* The terms @emph{fusa} and @emph{semifusa}, which derive from mensural notation
+(q.v), are used as note durations by the Italians and the Spanish, but for notes
+of different durations.
+
+@seealso
+
+@ref{mensural notation}
+
@node Pitch names
@chapter Pitch names
@end menu
@node Repeats and MIDI
-@unnumberedsubsubsec Repeats and MIDI
+@subsubsection Repeats and MIDI
@cindex expanding repeats
@funindex \unfoldRepeats
* Overview of text markup commands::
* Overview of text markup list commands::
* List of articulations::
+* All context properties::
+* Layout properties::
+* Identifiers::
+* Scheme functions::
@end menu
-@ignore
-@n ode All context properties
-@a ppendixsec All context properties
+@node All context properties
+@appendixsec All context properties
-@i nclude context-properties.tely
+@include context-properties.tely
-@n ode Layout properties
-@ap pendixsec Layout properties
+@node Layout properties
+@appendixsec Layout properties
-@in clude layout-properties.tely
+@include layout-properties.tely
+
+
+@node Identifiers
+@appendixsec Identifiers
+
+@include identifiers.tely
+
+
+@node Scheme functions
+@appendixsec Scheme functions
+
+@include scheme-functions.tely
-@end ignore
@include repeats.itely
@include simultaneous.itely
@include staff.itely
-@include educational.itely
+@include editorial.itely
@include text.itely
@node Showing melody rhythms
-@unnumberedsubsubsec Showing melody rhythms
+@subsubsection Showing melody rhythms
Sometimes you might want to show only the rhythm of a melody. This
can be done with the rhythmic staff. All pitches of notes on such a
@node Entering percussion
-@unnumberedsubsubsec Entering percussion
+@subsubsection Entering percussion
@cindex percussion
@cindex drums
Internals Reference: @internalsref{note-event}.
@node Percussion staves
-@unnumberedsubsubsec Percussion staves
+@subsubsection Percussion staves
@cindex percussion
@cindex drums
@c TODO: check name -gp
@node Ghost notes
-@unnumberedsubsubsec Ghost notes
+@subsubsection Ghost notes
Ghost notes for drums and percussion may be created using the
@code{\parenthesize} command detailed in @ref{Parentheses}. However,
@node Automatic staff changes
-@unnumberedsubsubsec Automatic staff changes
+@subsubsection Automatic staff changes
@cindex Automatic staff changes
Voices can be made to switch automatically between the top and the bottom
@node Manual staff switches
-@unnumberedsubsubsec Manual staff switches
+@subsubsection Manual staff switches
@cindex manual staff switches
@cindex staff switch, manual
@node Pedals
-@unnumberedsubsubsec Pedals
+@subsubsection Pedals
@cindex Pedals
Pianos have pedals that alter the way sound is produced. Generally, a
Notation Reference: @ref{Ties} (laissez vibrer).
@node Staff switch lines
-@unnumberedsubsubsec Staff switch lines
+@subsubsection Staff switch lines
@cindex follow voice
@node Cross staff stems
-@unnumberedsubsubsec Cross staff stems
+@subsubsection Cross staff stems
Chords that cross staves may be produced by increasing the length
of the stem in the lower staff, so it reaches the stem in the upper
{pitches-headword.ly}
This section discusses how to specify the pitch of notes. There
-are three steps to this process: input, modifying, and output.
+are three steps to this process: input, modification, and output.
@menu
* Writing pitches::
This section discusses how to input pitches. There are two
different ways to place notes in octaves: absolute and relative
-mode. In most cases, relative mode will be more convient.
+mode. In most cases, relative mode will be more convenient.
@menu
* Absolute octave entry::
@node Absolute octave entry
-@unnumberedsubsubsec Absolute octave entry
+@subsubsection Absolute octave entry
@cindex pitch names
@cindex pitches
Music Glossary: @rglos{Pitch names}.
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
@node Relative octave entry
-@unnumberedsubsubsec Relative octave entry
+@subsubsection Relative octave entry
@cindex relative
@cindex relative octave specification
@item
An octave changing mark@tie{}@code{'} or@tie{}@code{,} can be added to
-respectively raise or lower a pitch by an extra octave, relatively to
-the pitch calculated without octave mark.
+respectively raise or lower a pitch by an extra octave, relative to
+the pitch calculated without an octave mark.
@item
Multiple octave changing marks can be used. For example, @code{''}@tie{}and
If the preceding item is a chord, the first note of the chord is
used as the reference point for the octave placement of a
-following note or chord. Inside of chords the next note is always
+following note or chord. Inside chords, the next note is always
relative to the preceding one.
@lilypond[verbatim,quote,ragged-right]
As explained above, the octave of pitches is calculated only with
the note names, regardless of any alterations. Therefore, an
-E-double-sharp sharp following a B will be placed higher, while an
-F-double-flat would be placed lower. In other words, a
+E-double-sharp following a B will be placed higher, while an
+F-double-flat will be placed lower. In other words, a
double-augmented fourth is considered a smaller interval than a
double-diminished fifth, regardless of the number of semitones
that each interval contains.
Notation Reference: @ref{Octave checks}.
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
+@funindex \transpose
+@funindex \chordmode
+@funindex \relative
+
@refbugs
The relative conversion will not affect @code{\transpose},
To use relative mode within transposed music, an additional
@code{\relative} must be placed inside @code{\transpose}.
-@c TODO: DEPRECATED
+@c NOTE: DEPRECATED
If no @var{startpitch} is specified for @code{\relative},
then@tie{}@code{c'} is assumed. However, this is a deprecated
option and may disappear in future versions, so its use is
@node Accidentals
-@unnumberedsubsubsec Accidentals
+@subsubsection Accidentals
+
+@cindex accidental
+@cindex key signature
+@cindex clef
@warning{New users are sometimes confused about accidentals and
key signatures. In LilyPond, note names are the raw input; key
@cindex note names, Dutch
@cindex note names, default
-
-A @notation{sharp} pitch is made by adding @code{is} to the name,
-and a @notation{flat} pitch by adding @code{es}. As you might
-expect, a @notation{double sharp} or @notation{double flat} is
-made by adding @code{isis} or @code{eses}. This syntax is derived
-from Dutch note naming conventions. To use other names for
-accidentals, see @ref{Note names in other languages}.
+@cindex sharp
+@cindex flat
+@cindex double sharp
+@cindex sharp, double
+@cindex double flat
+@cindex flat, double
+
+A @notation{sharp} pitch is made by adding @code{is} to the note name,
+and a @notation{flat} pitch by adding @code{es}. As you might expect,
+a @notation{double sharp} or @notation{double flat} is made by adding
+@code{isis} or @code{eses}. This syntax is derived from Dutch note
+naming conventions. To use other names for accidentals, see
+@ref{Note names in other languages}.
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
ais1 aes aisis aeses
cis cis cis! cis? c c c! c?
@end lilypond
-Accidentals are only printed on tied notes which begin a new
-system:
+Accidentals on tied notes are only printed at the beginning of a
+new system:
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
-cis1~ cis~
+cis1 ~ cis ~
\break
cis
@end lilypond
@seealso
Music Glossary: @rglos{sharp}, @rglos{flat}, @rglos{double sharp},
-@rglos{double flat}, @rglos{Pitch names}.
+@rglos{double flat}, @rglos{Pitch names}, @rglos{quarter-tone}.
Learning Manual: @rlearning{Accidentals and key signatures}.
@ref{Musica ficta accidentals},
@ref{Note names in other languages}.
-Snippets: @lsrdir{Pitches},
-@lsr{Pitches,
-dodecaphonic-style-accidentals-for-each-note-including-naturals.ly},
-@lsr{Pitches, makam.ly}.
+Snippets: @lsrdir{Pitches,Pitches}.
@refbugs
There are no generally accepted standards for denoting
-three-quarter flats, so LilyPond's symbol does not conform to any
-standard.
+quarter-tone accidentals, so LilyPond's symbol does not conform to
+any standard.
@node Note names in other languages
-@unnumberedsubsubsec Note names in other languages
+@subsubsection Note names in other languages
There are predefined sets of note names for various other
-languages. To use them, include the language specific init file.
-For example, add @code{\include "english.ly"} to the top of the
-input file. The available language files and the note names they
-define are:
+languages. To use them, include the language-specific init file.
+For example, to use English notes names, add @code{\include
+"english.ly"} to the top of the input file. The available
+language files and the note names they define are:
@cindex note names, other languages
+@cindex pitch names, other languages
@smallexample
@multitable {nederlands.ly} {do re mi fa sol la sib si} {-iss/-is} {-ess/-es} {-ss/-x/-sharpsharp} {-essess/-eses}
@end multitable
@end smallexample
+In Dutch, @code{aes} is contracted to @code{as}, but both forms
+are accepted in LilyPond. Similarly, both @code{es} and
+@code{ees} are accepted. This also applies to
+@code{aeses}@tie{}/@tie{}@code{ases} and
+@code{eeses}@tie{}/@tie{}@code{eses}. Sometimes only these
+contracted names are defined in the corresponding language files.
+
+@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
+a2 as e es a ases e eses
+@end lilypond
+
+
Some music uses microtones whose alterations are fractions of a
-@q{normal} sharp or flat. The note names for quartertones defined
-in the various language files are listed in the following table.
-Here the prefixes @notation{semi-} and @notation{sesqui-} mean
-@q{half} and @q{one and a half}, respectively. For the other
+@q{normal} sharp or flat. The note names for quarter-tones
+defined in the various language files are listed in the following
+table. Here the prefixes @notation{semi-} and @notation{sesqui-}
+mean @q{half} and @q{one and a half}, respectively. For the other
languages, no special names have been defined yet.
@smallexample
@multitable {nederlands.ly} {do re mi fa sol la sib si} {-iss/-is} {-ess/-es} {-ississ/-isis} {-ississ/-isis}
@headitem Language
@tab Note names
- @tab semi- @tab semi- @tab sesqui- @tab sesqui-
+ @tab semi-sharp @tab semi-flat @tab sesqui-sharp @tab sesqui-flat
@item nederlands.ly
@tab c d e f g a bes b
@end multitable
@end smallexample
-In Dutch, @code{aes} is contracted to @code{as}, but both forms
-are accepted in LilyPond. Similarly, both @code{es} and
-@code{ees} are accepted. This also applies to
-@code{aeses}@tie{}/@tie{}@code{ases} and
-@code{eeses}@tie{}/@tie{}@code{eses}. Sometimes only these
-contracted names are defined in the corresponding language files.
-
-@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
-a2 as e es a ases e eses
-@end lilypond
-
-In some languages such as Norwegian and Swedish, the usual
-spelling for accidentals is a double @q{s} such as in @code{ciss}
-or @code{cess}. For both historical reasons and a greater
-simplicity, LilyPond uses a single @q{s} for all these languages.
@seealso
-Music Glossary: @lsrdir{Pitch names}.
+Music Glossary: @rglos{Pitch names}.
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
@node Changing multiple pitches
@end menu
@node Octave checks
-@unnumberedsubsubsec Octave checks
+@subsubsection Octave checks
@cindex octave correction
@cindex octave check
@funindex =
@funindex \octave
-@c FIXME: bad descriptions.
In relative mode, it is easy to forget an octave changing mark.
Octave checks make such errors easier to find by displaying a
warning and correcting the octave if a note is found in an
unexpected octave.
-To check the octave of a specific note, add
-@code{=}@tie{}@var{quotes} after the pitch. The @var{quotes}
-indicate what its absolute octave should be. This example will
-generate a warning (and change the pitch) because the second note
-is the absolute octave @code{d''} instead of @code{d'} as
-indicated by the octave correction.
+To check the octave of a specific note, specify the absolute
+octave after the @code{=}@tie{}symbol. This example will generate
+a warning (and change the pitch) because the second note is the
+absolute octave @code{d''} instead of @code{d'} as indicated by
+the octave correction.
@lilypond[verbatim,quote,ragged-right,fragment]
\relative c'' {
- c2 d='
+ c2 d='4 d
e2 f
}
@end lilypond
-The octave of pitches may also be checked with the
-@code{\octave}@tie{}@var{controlpitch} command.
-@var{controlpitch} is specified in absolute mode. This checks
-that the interval between the previous note and the
-@var{contorlpitch} is within a fourth (the normal calculation of
-relative mode). If this check fails, a warning is printed, but
-the previous note is not changed. Future notes are relative to
-the @var{controlpitch}.
+The octave of notes may also be checked with the
+@code{\octave}@tie{}@var{controlpitch} command. @var{controlpitch} is
+specified in absolute mode. This checks that the interval between the
+previous note and the @var{controlpitch} is within a fourth (i.e. the
+normal calculation of relative mode). If this check fails, a warning
+is printed, but the previous note is not changed. Future notes are
+relative to the @var{controlpitch}.
@lilypond[verbatim,quote,ragged-right,fragment]
\relative c'' {
}
@end lilypond
-Compare these two bars. The first and third @code{\octave} check
-fail, but the second ones passes without fail.
+Compare the two bars below. The first and third @code{\octave}
+check fail, but the second one does not fail.
@lilypond[verbatim,quote,ragged-right,fragment]
\relative c'' {
@end lilypond
-
@seealso
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
@node Transpose
-@unnumberedsubsubsec Transpose
+@subsubsection Transpose
@cindex transpose
+@cindex transposition
@cindex transposition of pitches
@funindex \transpose
This means that @var{musicexpr} is transposed by the interval
between the pitches @var{frompitch} and @var{topitch}: any note
with pitch @var{frompitch} is changed to @var{topitch} and any
-other note is transposed by the same interval.
+other note is transposed by the same interval. Both pitches are
+entered in absolute mode.
Consider a piece written in the key of D-major. It can be
transposed up to E-major; note that the key signature is
@code{\transpose} distinguishes between enharmonic pitches: both
@code{\transpose c cis} or @code{\transpose c des} will transpose
-up half a tone. The first version will print sharps and the notes
+up a semitone. The first version will print sharps and the notes
will remain on the same scale step, the second version will print
flats on the scale step above.
typeset them for a transposing instrument, but the opposite is
also possible if you for example have a set of instrumental parts
and want to print a conductor's score. For example, when entering
-music for a B-flat trumpet which begins on a notated E (concert
-D), one would write:
+music for a B-flat trumpet that begins on a notated E (concert D),
+one would write:
@example
musicInBflat = @{ e4 @dots{} @}
Notation Reference: @ref{Instrument transpositions}.
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
Internals Reference: @internalsref{TransposedMusic}.
+@funindex \transpose
+@funindex \chordmode
+@funindex \relative
+
@refbugs
-If you want to use both @code{\transpose} and @code{\relative},
-you must put @code{\transpose} outside of @code{\relative}, since
-@code{\relative} will have no effect on music that appears inside
-a @code{\transpose}.
+
+The relative conversion will not affect @code{\transpose},
+@code{\chordmode} or @code{\relative} sections in its argument.
+To use relative mode within transposed music, an additional
+@code{\relative} must be placed inside @code{\transpose}.
@node Displaying pitches
@node Clef
-@unnumberedsubsubsec Clef
+@subsubsection Clef
@funindex \clef
-
@cindex G clef
@cindex C clef
@cindex F clef
@cindex baritone clef
@cindex varbaritone clef
@cindex subbass clef
-
-The clef is set with the @code{\clef} @var{clefname} command:
+@cindex clef
+@cindex ancient clef
+@cindex clef, ancient
+@cindex clef, G
+@cindex clef, C
+@cindex clef, F
+@cindex clef, treble
+@cindex clef, violin
+@cindex clef, alto
+@cindex clef, tenor
+@cindex clef, bass
+@cindex clef, french
+@cindex clef, soprano
+@cindex clef, mezzosoprano
+@cindex clef, baritone
+@cindex clef, varbaritone
+@cindex subbass clef, subbass
+
+The clef is set with the @code{\clef} @var{clefname} command.
+Middle C is shown in every example.
@lilypond[verbatim,quote,ragged-right,fragment,relative=1]
\clef treble
c2 c
@end lilypond
-Supported clefs include:
-
-@multitable @columnfractions .4 .6
-@headitem Clef @tab Position
-@item @code{treble, violin, G, G2} @tab
-G clef (g') on 2nd line
-@item @code{alto, C} @tab
-C clef (c') on 3rd line
-@item @code{tenor} @tab
-C clef (c') on 4th line
-@item @code{bass, F} @tab
-F clef (f) on 4th line
-@item @code{french} @tab
-G clef (g') on 1st line, so-called French violin clef
-@item @code{soprano} @tab
-C clef (c') on 1st line
-@item @code{mezzosoprano} @tab
-C clef (c') on 2nd line
-@item @code{baritone} @tab
-C clef (c') on 5th line
-@item @code{varbaritone} @tab
-F clef (f) on 3rd line
-@item @code{subbass} @tab
-F clef (f) on 5th line
-@item @code{percussion} @tab
-percussion clef
-@item @code{tab} @tab
-tablature clef
-@end multitable
+Other clefs include:
+
+@lilypond[verbatim,quote,ragged-right,fragment,relative=1]
+\clef french
+c2 c
+\clef soprano
+c2 c
+\clef mezzosoprano
+c2 c
+\clef baritone
+c2 c
+
+\break
+
+\clef varbaritone
+c2 c
+\clef subbass
+c2 c
+\clef percussion
+c2 c
+\clef tab
+c2 c
+@end lilypond
Further supported clefs are described under @ref{Ancient clefs}.
+@cindex transposing clefs
+@cindex clef, transposing
+@cindex octave transposition
+
By adding @code{_8} or @code{^8} to the clef name, the clef is
transposed one octave down or up, respectively, and @code{_15} and
@code{^15} transposes by two octaves. The argument @var{clefname}
must be enclosed in quotes when it contains underscores or digits.
-For example,
@cindex choral tenor clef
@lilypond[verbatim,quote,ragged-right,fragment,relative=1]
-\clef "treble_8" c1
-\clef "bass^15" c1
+\clef "treble_8"
+c2 c
+\clef "bass^15"
+c2 c
@end lilypond
Notation Reference: @ref{Ancient clefs}.
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
Internals Reference: @internalsref{Clef}.
@node Key signature
-@unnumberedsubsubsec Key signature
+@subsubsection Key signature
@cindex key signature
@funindex \key
\key @var{pitch} @var{mode}
@end example
-@funindex \minor
@funindex \major
@funindex \minor
@funindex \ionian
@funindex \phrygian
@funindex \dorian
@cindex church modes
+@cindex modes
Here, @var{mode} should be @code{\major} or @code{\minor} to get a
key signature of @var{pitch}-major or @var{pitch}-minor,
respectively. You may also use the standard mode names, also
-called @q{church modes}: @code{\ionian}, @code{\locrian},
-@code{\aeolian}, @code{\mixolydian}, @code{\lydian},
-@code{\phrygian}, and @code{\dorian}.
+called @q{church modes}: @code{\ionian}, @code{\dorian},
+@code{\phrygian}, @code{\lydian}, @code{\mixolydian},
+@code{\aeolian}, and @code{\locrian}.
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
\key g \major
Learning Manual: @rlearning{Accidentals and key signatures}.
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
Internals Reference: @internalsref{KeyCancellation},
@internalsref{KeySignature}, @internalsref{Key_engraver}.
@node Ottava brackets
-@unnumberedsubsubsec Ottava brackets
+@subsubsection Ottava brackets
@cindex ottava
@cindex 15ma
@commonprop
-@ignore
-Internally the function sets the properties @code{ottavation}
-(e.g., to @code{"8va"} or @code{"8vb"}) and
-@code{middleCPosition}. To override the text of the bracket, set
-@code{ottavation} after invoking @code{set-octavation}, i.e.,
-
-@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
-#(set-octavation 1)
-\set Staff.ottavation = #"8"
-c'
-@end lilypond
-@end ignore
-
-@c FIXME: add this
-@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
-@c {}
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{ottava-text.ly}
@seealso
-Music Glossary: @rglos{ottava}.
+Music Glossary: @rglos{octavation}.
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
Internals Reference: @internalsref{OttavaBracket}.
-@refbugs
-
-@c FIXME: This should have been fixed by Joe.
-@c If it hasn't, we should mention the appropriate
-@c workaround (there is a snippet in the LSR) -vv
-@code{set-octavation} will get confused when clef changes happen
-during an octavation bracket.
-
@node Instrument transpositions
-@unnumberedsubsubsec Instrument transpositions
+@subsubsection Instrument transpositions
@cindex transposition, MIDI
@cindex transposition, instrument
+@cindex transposing instrument
+@cindex MIDI
+@funindex \transposition
When typesetting scores that involve transposing instruments, some
parts can be typeset in a different pitch than the
The pitch to use for @code{\transposition} should correspond to
the real sound heard when a@tie{}@code{c'} written on the staff is
-played by the transposing instrument. @code{\transposition}
-should @emph{only} be used if the pitches are @emph{not} being
-entered in concert pitch.
+played by the transposing instrument. This pitch is entered in
+absolute mode, so an instrument that produces a real sound which
+is one tone higher than the printed music should use
+@code{\transposition d'}. @code{\transposition} should
+@emph{only} be used if the pitches are @emph{not} being entered in
+concert pitch.
Here are a few notes for violin and B-flat clarinet where the
parts have been entered using the notes and key as they appear in
\key a \major
\transposition a
c d e f
-\fatText
+\textLengthOn
r1^\markup{Switch to B\flat clarinet}
\key bes \major
@seealso
-Music Glossary: @rglos{concert pitch},
-@rglos{transposing instrument}.
+Music Glossary: @rglos{concert pitch}, @rglos{transposing instrument}.
Notation Reference: @ref{Quoting other voices}, @ref{Transpose}.
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
@node Automatic accidentals
-@unnumberedsubsubsec Automatic accidentals
-@cindex automatic accidentals
+@subsubsection Automatic accidentals
+@cindex automatic accidentals
+@cindex accidentals, automatic
+@cindex accidentals
+@cindex accidental style
+@cindex default accidental style
+@cindex accidental style, default
@funindex set-accidental-style
There are many different conventions on how to typeset
-accidentals. LilyPond provides a function to specify which such
+accidentals. LilyPond provides a function to specify which
accidental style to use. This function is called as follows
@example
The accidental style applies to the current @code{Staff} by
default (with the exception of the styles @code{piano} and
@code{piano-cautionary}, which are explained below). Optionally,
-the function can take a second argument which determines in which
+the function can take a second argument that determines in which
scope the style should be changed. For example, to use the same
style in all staves of the current @code{StaffGroup}, use
@end lilypond
@item modern
+@cindex accidentals, modern style
+@cindex modern style accidentals
@funindex modern style accidentals
This rule corresponds to the common practice in the twentieth
century. It prints the same accidentals as @code{default}, with
-two exceptions which serve to avoid ambiguity: after temporary
+two exceptions that serve to avoid ambiguity: after temporary
accidentals, cancellation marks are printed also in the following
measure (for notes in the same octave) and, in the same measure,
for notes in other octaves. Hence the naturals before
@end lilypond
@item modern-cautionary
+@cindex accidentals, modern cautionary style
+@cindex modern style accidentals
+@cindex modern style cautionary accidentals
+@cindex modern accidental style
+@cindex modern cautionary accidental style
@funindex modern-cautionary
This rule is similar to @code{modern}, but the @q{extra}
@end lilypond
@item modern-voice
+@cindex accidentals, multivoice
+@cindex accidentals, modern
+@cindex modern accidentals
+@cindex multivoice accidentals
@funindex modern-voice
This rule is used for multivoice accidentals to be read both by
@seealso
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
Internals Reference: @internalsref{Accidental_engraver},
@internalsref{Accidental}, @internalsref{AccidentalSuggestion},
@node Ambitus
-@unnumberedsubsubsec Ambitus
+@subsubsection Ambitus
@cindex ambitus
The term @notation{ambitus} or @notation{ambit} denotes a range of
Ambits are denoted at the beginning of a piece near the initial
clef. The range is graphically specified by two note heads that
-represent the minimum and maximum pitch. Accidentals are only
+represent the lowest and highest pitches. Accidentals are only
printed if they are not part of the key signature.
@lilypond[verbatim,quote,ragged-right]
@seealso
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
Internals Reference: @internalsref{Ambitus},
@internalsref{AmbitusLine}, @internalsref{AmbitusNoteHead},
@end menu
@node Special note heads
-@unnumberedsubsubsec Special note heads
+@subsubsection Special note heads
@cindex note heads, special
@end lilypond
@noindent
-To see all note head styles, please see @ref{Note head styles}.
+To see all note head styles, see @ref{Note head styles}.
@seealso
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
Notation Reference: @ref{Note head styles}.
@node Easy notation note heads
-@unnumberedsubsubsec Easy notation note heads
+@subsubsection Easy notation note heads
@cindex note heads, practice
@cindex note heads, easy notation
@cindex Hal Leonard
The @q{easy play} note head includes a note name inside the head.
-It is used in music for beginners
+It is used in music for beginners.
@lilypond[verbatim,quote,ragged-right]
#(set-global-staff-size 26)
\relative c' {
- \setEasyHeads
+ \easyHeadsOn
c2 e4 f
g1
+ \easyHeadsOff
+ c,1
}
@end lilypond
-The command @code{\setEasyHeads} overrides settings for the
-@code{NoteHead} object. To make the letters readable, it
-has to be printed in a large font size. To print with a larger
-font, see @ref{Setting the staff size}.
+The command @code{\easyHeadsOn} overrides settings for the
+@code{NoteHead} object. These settings can be reverted with the command
+@code{\easyHeadsOff}. To make the letters readable, it has to be printed
+in a large font size. To print with a larger font, see @ref{Setting the
+staff size}.
@refcommands
-@funindex \setEasyHeads
-@code{\setEasyHeads}
+@funindex \easyHeadsOn
+@funindex \easyHeadsOff
+@code{\easyHeadsOn}, @code{\easyHeadsOff}
@seealso
Notation Reference: @ref{Setting the staff size}.
-Snippets: @lsrdir{Pitches},
+Snippets: @lsrdir{Pitches,Pitches},
Internals Reference: @internalsref{NoteHead}.
@node Shape note heads
-@unnumberedsubsubsec Shape note heads
+@subsubsection Shape note heads
@cindex note heads, shape
@funindex \key
@seealso
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
@node Improvisation
-@unnumberedsubsubsec Improvisation
+@subsubsection Improvisation
@cindex improvisation
@cindex slashed note heads
}
@end lilypond
+
+@refcommands
+
+@funindex \improvisationOn
+@funindex \improvisationOff
+
+@code{\improvisationOn}, @code{\improvisationOff}
+
@seealso
-Snippets: @lsrdir{Pitches}.
+Snippets: @lsrdir{Pitches,Pitches}.
Internals Reference: @internalsref{Pitch_squash_engraver},
@internalsref{Voice}.
* Notation Reference: a (hopefully complete) description of
LilyPond input notation. Some material from here may be
- duplicated in the Learning Manual (for teaching). The material is
- presented in an approximate order of increasing difficulty, but
- the goal is _not_ to provide a step-by-step learning environment.
- For example, all material under "Pitches" should remain in that
- section, even though microtonal accidentals may seem more advanced
- than info about clefs or time signatures -- "Pitches" should be a
- one-stop reference about the pitch portion of notes. This section
- is written in formal technical writing style.
-
-Users are not expected to read this manual from start to finish.
-However, they should be familiar with the material in the Learning
-Manual (particularly ``Fundamental Concepts''), so do not repeat
-that material in each section of this book. Also, you should
-assume that users know what the notation means; explaining musical
-concepts happens in the Music Glossary.
+ duplicated in the Learning Manual (for teaching), but consider
+ the NR to be the "definitive" description of each notation
+ element, with the LM being an "extra". The goal is _not_ to
+ provide a step-by-step learning environment -- do not avoid
+ using notation that has not be introduced previously in the
+ NR (for example, use \break if appropriate). This section is
+ written in formal technical writing style.
+
+Avoid duplication. Although users are not expected to read this
+manual from start to finish, they should be familiar with the
+material in the Learning Manual (particularly ``Fundamental
+Concepts''), so do not repeat that material in each section of
+this book. Also watch out for common constructs, like ^ - _ for
+directions -- those are explained in NR 3. In NR 1, you can
+mention that "dynamics (or whatever) may be placed above or below
+the staff, for details see @ref{Up and down}".
+
+Most tweaks should be added to LSR and not placed directly in the
+.itely file. In some cases, tweaks may be placed in the main
+text, but ask about this first.
+
+Finally, you should assume that users know what the notation
+means; explaining musical concepts happens in the Music Glossary.
* Application Usage: information about using the program lilypond
@node Repeat syntax
-@unnumberedsubsubsec Repeat syntax
+@subsubsection Repeat syntax
@cindex repeats
@node Normal repeats
-@unnumberedsubsubsec Normal repeats
+@subsubsection Normal repeats
@cindex volta
@cindex prima volta
the topmost staff. This can be adjusted by adding
@code{Volta_engraver} to the Staff context where you want the
brackets to appear; see @ref{Modifying context plug-ins} and
-@lsr{repeats,volta@/-multi@/-staff@/.ly}.
+@c @lsr{repeats,volta@/-multi@/-staff@/.ly}.
@lilypond[verbatim,ragged-right,quote]
\score { <<
@seealso
-Snippets: @lsrdir{repeats}
+Snippets: @lsrdir{Repeats,Repeats}
Internals Reference: @internalsref{VoltaBracket},
@internalsref{RepeatedMusic},
@node Manual repeat commands
-@unnumberedsubsubsec Manual repeat commands
+@subsubsection Manual repeat commands
@funindex repeatCommands
Notation Reference: @ref{Bar lines}.
-Snippets: @lsrdir{repeats}
+Snippets: @lsrdir{Repeats,Repeats}
Internals Reference: @internalsref{VoltaBracket},
@internalsref{RepeatedMusic}, @internalsref{VoltaRepeatedMusic},
@end menu
@node Tremolo repeats
-@unnumberedsubsubsec Tremolo repeats
+@subsubsection Tremolo repeats
@cindex tremolo beams
Internals Reference: @internalsref{Beam},
@internalsref{StemTremolo}.
-Snippets: @lsrdir{repeats}
+Snippets: @lsrdir{Repeats,Repeats}
Elsewhere: @internalsref{StemTremolo}.
@node Measure repeats
-@unnumberedsubsubsec Measure repeats
+@subsubsection Measure repeats
@cindex percent repeats
@cindex measure repeats
@seealso
-Snippets: @lsrdir{repeats}
+Snippets: @lsrdir{Repeats,Repeats}
Internals Reference: @internalsref{RepeatSlash},
@internalsref{PercentRepeat}, @internalsref{DoublePercentRepeat},
@lilypondfile[ragged-right,line-width=16\cm,staffsize=14,quote]
{rhythms-headword.ly}
-This section discusses rhythms, durations, and bars.
+This section discusses rhythms, rests, durations, beaming and bars.
@menu
* Writing rhythms::
@end menu
@node Durations
-@unnumberedsubsubsec Durations
+@subsubsection Durations
+
+@cindex durations, of notes
+@cindex note durations
-@cindex duration
-@cindex beams, automatic
@funindex \longa
@funindex \breve
@funindex \maxima
-When entering notes, durations are designated by numbers and dots:
-durations are entered as their reciprocal values. For example, a
+Durations are designated by numbers and dots.
+Durations are entered as their reciprocal values. For example, a
quarter note is entered using a @code{4} (since it is a 1/4 note),
-while a half note is entered using a @code{2} (since it is a 1/2
+and a half note is entered using a @code{2} (since it is a 1/2
note). For notes longer than a whole you must use the
-@code{\longa} (a double breve) and @code{\breve} commands. Note
-durations as short as 64th notes may be specified. Shorter values
+@code{\longa} (a double breve) and @code{\breve} commands.
+Durations as short as 64th notes may be specified. Shorter values
are possible, but only as beamed notes.
@c Two 64th notes are needed to obtain beams
@end lilypond
@noindent
-and the same durations with automatic beaming turned off
-see @ref{Automatic beams}:
+Here are the same durations with automatic beaming turned off.
@c not strictly "writing rhythms"; more of a "displaying" thing,
@c but it's ok here. -gp
c4 c8 c16 c32 c64 c64
@end lilypond
-If the duration is omitted then it is set to the previously
+A note with the duration of a quadruple breve may be entered with
+@code{\maxima}, but this is supported only within ancient music
+notation. For details, see @ref{Ancient notation}.
+
+If the duration is omitted, it is set to the previously
entered duration. The default for the first note is a quarter
note.
a a a2 a a4 a a1 a
@end lilypond
+@cindex notes, dotted
+@cindex dotted notes
@funindex .
-To obtain dotted note lengths, simply add a dot (@code{.}) to the
-number. Double-dotted notes are produced in a similar way.
+To obtain dotted note lengths, place a dot (@code{.}) after the
+duration. Double-dotted notes are specified by appending two
+dots, and so on.
@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
a4 b c4. b8 a4. b4.. c8.
@end lilypond
-Some durations cannot be entered using only binary durations
-and dots, and can only be represented by tying two or more
-notes together. Tied notes are covered in @ref{Ties}.
+Some durations cannot be represented with just binary durations
+and dots; they can be represented only by tying two or more
+notes together. For details, see @ref{Ties}.
+
+For ways of specifying durations for the syllables of lyrics and
+ways of aligning lyrics to notes, see @ref{Vocal music}.
+
+Optionally, notes can be spaced strictly proportionately to their
+duration. For details of this and other settings which control
+proportional notation, see @ref{Proportional notation}.
@refcommands
Dots are normally moved up to avoid staff lines, except in
polyphonic situations. The following commands may be used to
-force a particular direction manually:
+force a particular direction manually, and to return to the
+default behaviour:
@funindex \dotsUp
@code{\dotsUp},
@funindex \dotsNeutral
@code{\dotsNeutral}.
-For ways of specifying durations for the syllables of lyrics and
-ways of aligning lyrics to notes see @ref{Vocal music}.
-
-A note with the duration of a quadruple breve may be entered with
-@code{\maxima}, but this is supported only within ancient music
-notation; see @ref{Ancient notation}.
-
-Optionally, notes can be spaced proportionately to their duration.
-For details of this and other settings which control proportional
-notation see @ref{Proportional notation}.
-
@seealso
-Music Glossary: @rglos{breve}, @rglos{longa}.
+Music Glossary: @rglos{breve}, @rglos{longa}, @rglos{note value}
+@rglos{Duration names notes and rests}.
-Notation Reference:@ref{Automatic beams}, @ref{Ties}, @ref{Writing rests}, @ref{Vocal music},
+Notation Reference: @ref{Automatic beams}, @ref{Ties},
+@ref{Writing rhythms}, @ref{Writing rests}, @ref{Vocal music},
@ref{Ancient notation}, @ref{Proportional notation}.
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{Dots},
@internalsref{DotColumn}.
@refbugs
-@c duplicated in Durations and Rests. -gp
+@c Deliberately duplicated in Durations and Rests. -gp
There is no fundamental limit to rest durations (both in terms of
-longest and shortest), but the number of glyphs is limited: there
-are rests from 128th to maxima (8 x whole).
+longest and shortest), but the number of glyphs is limited:
+rests from 128th to maxima (8 x whole) may be printed.
@node Tuplets
-@unnumberedsubsubsec Tuplets
+@subsubsection Tuplets
@cindex tuplets
@cindex triplets
@commonprop
+@cindex tuplet formatting
+@cindex triplet formatting
+
@funindex tupletNumberFormatFunction
@funindex tupletSpannerDuration
-@cindex tuplet formatting
+@c Sent to Snippet 5 Feb 08
The property @code{tupletSpannerDuration} specifies how long each
bracket should last. With this, you can make lots of tuplets
while typing @code{\times} only once, thus saving lots of typing.
@funindex TupletNumber
-The format of the number is determined by the property @code{text}
-in @code{TupletNumber}. The default prints only the denominator,
-but if the property is set with @code{\override
-TupletNumber #'text = #tuplet-number::calc-fraction-text},
-@var{num}:@var{den} will be printed instead.
+By default, only the numerator of the tuplet number
+is printed over the tuplet bracket, i.e. the denominator
+of the argument to the @code{\times} command. Alternatively,
+@var{num}:@var{den} of the tuplet number may be printed, or
+the tuplet number may be suppressed altogether.
-To print tuplets without tuplet numbers, use
-@code{\override TupletNumber #'transparent = ##t}:
@lilypond[quote,fragment,relative=2,ragged-right,verbatim]
\times 2/3 { c8 c c } \times 2/3 { c8 c c }
\times 2/3 { c8 c c }
@end lilypond
-To change the appearance of nested tuplets beginning at the same
-music moment individually, the @code{\tweak} function must be used
-(see @ref{Objects connected to the input}). In the following
-example, @code{\tweak} specifies fraction text for the outer
-@code{TupletNumber} and denominator text for the
-@code{TupletNumber} of the first of the three inner tuplets.
+@c TODO Add snippet to show this
+Tuplets may extend over bar lines, but they will inhibit a
+line break unless the @code{Forbid_line_break_engraver} is
+removed from the @code{Voice context}.
-@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
+@subheading Modifying nested tuplets
+
+@cindex tuplets, nested
+@cindex triplets, nested
+@cindex bracket, tuplet
+@cindex tuplet bracket
+@cindex triplet bracket
+@funindex TupletBracket
+
+If nested tuplets do not begin at the same moment their
+appearance may be modified in the usual way with
+@code{\override} commands:
+
+@c NOTE Tuplet brackets collide if notes are high on staff
+@c See issue 509
+@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
+\times 2/3 { c8[ c c]}
+\once \override TupletNumber #'text = #tuplet-number::calc-fraction-text
+\times 2/3 {
+ c[ c]
+ c[ c]
+ \once \override TupletNumber #'transparent = ##t
+ \times 2/3 { c8[ c c] }
+\times 2/3 { c8[ c c]}
+}
+@end lilypond
+
+However, if the nested tuplets begin at the same musical moment,
+@code{\override} commands cannot be applied to just one of them
+-- they apply to both. So to change the appearance of nested
+tuplets beginning at the same musical moment individually, the
+@code{\tweak} function must be used (see @ref{Objects connected
+to the input}). The @code{\tweak} function is applied to the
+following @code{\times} command as it appears in the input stream,
+and so can distinguish between separate @code{\times} commands
+even if their tuplets begin at the same musical moment.
+
+In this example, the @code{\tweak} command is used to specify
+fraction text for the outer @code{TupletNumber} and denominator
+text for the @code{TupletNumber} of the first of the three
+inner tuplets.
+
+@c NOTE Tuplet brackets collide if notes are high on staff
+@c so use relative=1 until this is fixed
+@c See issue 509
+@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
\tweak #'text #tuplet-number::calc-fraction-text
\times 4/3 {
\tweak #'text #tuplet-number::calc-denominator-text
}
@end lilypond
-@cindex bracket, tuplet
-@funindex TupletBracket
-
-@c FIXME: after LM 6 Tweaks includes \tweak info, look at this.-gp
-@c It *should* be explained why \tweak must be used here, and why
-@c \override doesn't work. I've made an attempt, but I'm not sure
-@c if it is factually correct to say that \tweak must be used.
In the next example, @code{\tweak} and @code{\override} work
together to specify @code{TupletBracket} direction. The first
@code{\tweak} positions the @code{TupletBracket} of the outer
tuplet above the staff. The second @code{\tweak} positions the
@code{TupletBracket} of the first of the three inner tuplets below
-the staff. Note that the @code{\tweak} function affects only
-events that begin at the same music moment: the outer tuplet and
-the first of the three inner tuplets. To position the
-@code{TupletBrackets} of the second and third of the inner tuplets
-below the staff, we use @code{\override} in the usual way.
+the staff. Note that the @code{\tweak} command needs to be used
+only for events that begin at the same music moment: the outer
+tuplet and the first of the three inner tuplets. To position the
+@code{TupletBracket}s of the second and third of the inner tuplets
+below the staff, we can use @code{\override} in the usual way.
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
\tweak #'text #tuplet-number::calc-fraction-text
}
@end lilypond
-Tuplet brackets can be made to run to prefatory matter or the next
-note:
+@subheading Modifying tuplet bracket length
+
+@cindex tuplet bracket length
+@cindex triplet bracket length
+@cindex bracket length, tuplets
+@funindex tupletFullLength
+@funindex tupletFullLengthNote
+
+Tuplet brackets can be made to run to prefatory matter or the
+next note.
+Default tuplet brackets end at the right edge of the final note
+of the tuplet; full-length tuplet brackets extend farther to the
+right, either to cover all the non-rhythmic notation up to the
+following note, or to cover only the whitespace before the next
+item of notation, be that a clef, time signature, key signature,
+or another note. The example shows how to switch tuplets to
+full length mode and how to modify what material they cover.
+
@lilypond[ragged-right,verbatim,quote]
\new RhythmicStaff {
+ % Set tuplets to be extendable ..
\set tupletFullLength = ##t
+ % .. to cover all items up to the next note
\set tupletFullLengthNote = ##t
\time 2/4
\times 2/3 { c4 c c }
+ % .. or to cover just whitespace
\set tupletFullLengthNote = ##f
\time 4/4
\times 4/5 { c4 c1 }
}
@end lilypond
+@subheading Compressing music
+
+@cindex compressing music
@funindex \compressMusic
-@funindex \times
@code{\compressMusic} works similarly to \times, but does not
-create a tuplet bracket; see @ref{Polymetric notation}.
-
+create a tuplet bracket. One application is in polymetric
+notation, as shown in the following example. See
+@ref{Polymetric notation}.
-@refbugs
+@c not added yet. -gp
+@c @lilypondfile [ragged-right,line-width=16\cm,staffsize=14,quote]
+@c {printing-music-with-different-time-signatures.ly}
-Tuplets which cross bar lines will prevent a line break at that
-point.
@seealso
-Music Glossary: @rglos{tuplet}.
+Music Glossary: @rglos{triplet}, @rglos{tuplet},
+@rglos{polymetric}.
Notation Reference: @ref{Time administration},
@ref{Objects connected to the input}, @ref{Polymetric notation}.
-Snippets: @lsrdir{rhythms}.
+Snippets: @lsrdir{Rhythms,Rhythms}.
Internals Reference: @internalsref{TupletBracket},
@internalsref{TupletNumber}, and @internalsref{TimeScaledMusic}.
@node Scaling durations
-@unnumberedsubsubsec Scaling durations
+@subsubsection Scaling durations
You can alter the length of a duration by a fraction @var{N/M}
by appending @code{*@var{N/M}} (or @code{*@var{N}} if @var{M=1}).
Notation Reference: @ref{Tuplets}, @ref{Skips}, @ref{Polymetric notation}.
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
@node Ties
-@unnumberedsubsubsec Ties
+@subsubsection Ties
@cindex tie
@funindex ~
Music Glossary: @rglos{tie},
@c [TODO]add @rglos{laissez vibrer}. when there is a glossary entry.
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference:
@internalsref{LaissezVibrerTie}
@internalsref{LaissezVibrerTieColumn}
Example files:
-@lsr{connecting,laissez-vibrer-ties.ly}
+@c @lsr{connecting,laissez-vibrer-ties.ly}
@commonprop
Notation Reference: @ref{Automatic note splitting}.
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{Tie}.
@end menu
@node Rests
-@unnumberedsubsubsec Rests
+@subsubsection Rests
@cindex rest
@cindex maxima
@cindex longa
Notation Reference: @ref{Full measure rests}.
-Snippets: @lsrdir{rhythms}.
+Snippets: @lsrdir{Rhythms,Rhythms}.
Internals Reference: @internalsref{Rest}.
@refbugs
-@c duplicated in Durations and Rests. -gp
+@c Deliberately duplicated in Durations and Rests. -gp
There is no fundamental limit to rest durations (both in terms of
longest and shortest), but the number of glyphs is limited: there
are rests from 128th to maxima (8 x whole).
@node Skips
-@unnumberedsubsubsec Skips
+@subsubsection Skips
@cindex skip
@cindex invisible rest
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{SkipMusic}.
@node Full measure rests
-@unnumberedsubsubsec Full measure rests
+@subsubsection Full measure rests
@cindex multi measure rests
@cindex full measure rests
below it. Long text attached in this way does not cause the
measure to expand, and may collide with text in adjacent measures.
Long text is better attached to a zero-length skip note preceding
-the rest, preceded by @code{\fatText} (turn off again with
-@code{\emptyText}), since this will cause the measure to expand to
+the rest, preceded by @code{\textLengthOn} (turn off again with
+@code{\textLengthOff}), since this will cause the measure to expand to
accommodate the length of the text:
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
\set Score.skipBars = ##t
-\fatText
+\textLengthOn
s1*0^\markup {[MAJOR GENERAL]}
R1*19
s1*0^\markup {[MABEL] }
s1*0_\markup {\italic {Cue: ... it is yours}}
R1*30
-\emptyText
+\textLengthOff
c4^\markup {CHORUS} d f c
@end lilypond
Notation Reference: @ref{Durations}, @ref{Text},
@ref{Text markup}, @ref{Text scripts}.
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{MultiMeasureRest}.
@end menu
@node Time signature
-@unnumberedsubsubsec Time signature
+@subsubsection Time signature
@cindex time signature
@cindex meter
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{TimeSignature}, and
@internalsref{Timing_translator}.
-Examples: @lsr{contemporary,compound-time-signature.ly}.
+Examples: @c @lsr{contemporary,compound-time-signature.ly}.
@refbugs
@node Upbeats
-@unnumberedsubsubsec Upbeats
+@subsubsection Upbeats
@cindex anacrusis
@cindex upbeat
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
@node Unmetered music
-@unnumberedsubsubsec Unmetered music
+@subsubsection Unmetered music
@cindex cadenza
@funindex \cadenzaOn
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
@node Polymetric notation
-@unnumberedsubsubsec Polymetric notation
+@subsubsection Polymetric notation
@cindex double time signatures
@cindex signatures, polymetric
be faked. In the next example, the markup for the time signature
is created with a markup text. This markup text is inserted in
the @internalsref{TimeSignature} grob. See also
-@lsr{contemporary,compound-time-signature}.
+@c @lsr{contemporary,compound-time-signature}.
@lilypond[verbatim,ragged-right]
% create 2/4 + 5/8
@seealso
-Snippets: @lsrdir{rhythms}, @lsr{contemporary,compound-time-signature}.
+Snippets: @lsrdir{Rhythms,Rhythms}, @c @lsr{contemporary,compound-time-signature}.
Internals Reference: @internalsref{TimeSignature}, @internalsref{Timing-translator}, @internalsref{Staff}.
@node Automatic note splitting
-@unnumberedsubsubsec Automatic note splitting
+@subsubsection Automatic note splitting
Long notes which overrun bar lines can be converted automatically
to tied notes. This is done by replacing the
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{Note_heads_engraver},
@internalsref{Completion_heads_engraver},
@end menu
@node Automatic beams
-@unnumberedsubsubsec Automatic beams
+@subsubsection Automatic beams
By default, beams are inserted automatically:
Notation Reference: @ref{Manual beams}, @ref{Setting automatic beam behavior}.
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{Beam}.
@node Setting automatic beam behavior
-@unnumberedsubsubsec Setting automatic beam behavior
+@subsubsection Setting automatic beam behavior
@funindex autoBeamSettings
@funindex (end * * * *)
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
@node Manual beams
-@unnumberedsubsubsec Manual beams
+@subsubsection Manual beams
@cindex beams, manual
@commonprop
@node Feathered beams
-@unnumberedsubsubsec Feathered beams
+@subsubsection Feathered beams
@cindex beams, feathered
@funindex \featherDurations
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
@end menu
@node Bar lines
-@unnumberedsubsubsec Bar lines
+@subsubsection Bar lines
@cindex bar lines
@funindex \bar
Notation Reference: @ref{Line breaking}, @ref{Repeats},
@ref{System start delimiters}.
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{BarLine} (created at
@internalsref{Staff} level), @internalsref{SpanBar} (across
@node Bar numbers
-@unnumberedsubsubsec Bar numbers
+@subsubsection Bar numbers
@cindex bar numbers
@cindex measure numbers
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{BarNumber}.
-Examples: @lsrdir{bar number}
-
@refbugs
@node Bar and bar number checks
-@unnumberedsubsubsec Bar and bar number checks
+@subsubsection Bar and bar number checks
@cindex bar check
@funindex barCheckSynchronize
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
@node Rehearsal marks
-@unnumberedsubsubsec Rehearsal marks
+@subsubsection Rehearsal marks
@cindex rehearsal marks
@cindex mark, rehearsal
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
This manual: @ref{The Feta font}, @ref{Text marks}.
@code{format-mark-letters}. They can be used as inspiration for
other formatting functions.
-Examples: @lsr{parts,rehearsal-mark-numbers.ly}
+Examples: @c @lsr{parts,rehearsal-mark-numbers.ly}
@node Special rhythmic concerns
@end menu
@node Grace notes
-@unnumberedsubsubsec Grace notes
+@subsubsection Grace notes
@funindex \grace
@cindex ornaments
@rglos{acciaccatura},
@rglos{appoggiatura}
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{GraceMusic}.
supported, and might produce crashes or other errors.
@node Aligning to cadenzas
-@unnumberedsubsubsec Aligning to cadenzas
+@subsubsection Aligning to cadenzas
@cindex cadenza
@cindex cadenza, aligning to
@seealso
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
@node Time administration
-@unnumberedsubsubsec Time administration
+@subsubsection Time administration
@cindex time administration
@cindex timing (within the score)
This manual: @ref{Bar numbers}, @ref{Unmetered music}
-Snippets: @lsrdir{rhythms}
+Snippets: @lsrdir{Rhythms,Rhythms}
Internals Reference: @internalsref{Timing_translator},
@internalsref{Score}
+
+
+
@end menu
@node Chorded notes
-@unnumberedsubsubsec Chorded notes
+@subsubsection Chorded notes
@cindex Chords
Notation Reference: @ref{Introducing chord names}.
-Snippets: @lsrdir{simultaneous}.
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
@refbugs
@node Clusters
-@unnumberedsubsubsec Clusters
+@subsubsection Clusters
@cindex cluster
@seealso
-Snippets: @lsrdir{simultaneous}.
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
Internals Reference: @internalsref{ClusterSpanner},
@internalsref{ClusterSpannerBeacon},
@internalsref{Cluster_spanner_engraver}.
-Examples: @lsr{contemporary,cluster@/.ly}.
+Examples: @c @lsr{contemporary,cluster@/.ly}.
@end menu
@node Collision resolution
-@unnumberedsubsubsec Collision resolution
+@subsubsection Collision resolution
@cindex merging notes
@cindex note collisions
@seealso
-Snippets: @lsrdir{simultaneous}.
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
Internals Reference: the objects responsible for resolving
collisions are @internalsref{NoteCollision} and
@node Automatic part combining
-@unnumberedsubsubsec Automatic part combining
+@subsubsection Automatic part combining
@cindex automatic part combining
@cindex part combiner
@cindex combining parts
Music Glossary: @rglos{a due}.
-Snippets: @lsrdir{simultaneous}.
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}.
Internals Reference: @internalsref{PartCombineMusic}, @internalsref{Voice}.
@node Writing music in parallel
-@unnumberedsubsubsec Writing music in parallel
+@subsubsection Writing music in parallel
@cindex Writing music in parallel
@cindex Interleaved music
@seealso
-Snippets: @lsrdir{simultaneous}
+Snippets: @lsrdir{Simultaneous,Simultaneous-notes}
* Breaks::
* Vertical spacing::
* Horizontal spacing::
+* Page layout MOVED FROM LM::
@end menu
* Page breaking::
* Optimal page breaking::
* Optimal page turning::
-* Minimal page breaking::
+* Minimal page breaking::
* Explicit breaks::
* Using an extra voice for breaks::
@end menu
automatically. This allows vertical alignments to be stretched to
fit pages in a second formatting run. This is fairly new and
complicated. More details are available in
-@lsrdir{spacing}
+@c @lsrdir{spacing}
@refbugs
specifying the vertical extent are described in connection with
the @internalsref{Axis_group_engraver}.
-Example files: @lsr{spacing,page-spacing.ly},
-@lsr{spacing,alignment-vertical-spacing.ly}.
+Example files: @c @lsr{spacing,page-spacing.ly},
+@c @lsr{spacing,alignment-vertical-spacing.ly}.
@node Vertical spacing between systems
for these related settings.
+
+@node Page layout MOVED FROM LM
+@section Page layout MOVED FROM LM
+
+@menu
+* Introduction to layout::
+* Global sizes::
+* Line breaks::
+* Page breaks::
+* Fitting music onto fewer pages::
+@end menu
+
+@node Introduction to layout
+@subsection Introduction to layout
+
+The global paper layout is determined by three factors:
+the page layout, the line breaks, and the spacing. These all
+influence each other. The choice of spacing determines how
+densely each system of music is set. This influences where line
+breaks are chosen, and thus ultimately, how many pages a piece
+of music takes.
+
+Settings which influence layout may be placed in two blocks.
+The @code{\paper @{...@}} block is placed outside any
+@code{\score @{...@}} blocks and contains settings that
+relate to the entire document. The @code{\layout @{...@}}
+block is placed within a @code{\score @{...@}} block and
+contains settings for that particular score. If you have
+only one @code{\score @{...@}} block the two have the same
+effect. In general the commands shown in this section can
+be placed in either.
+
+Much more detail on the options for tweaking the laying out
+of music are contained in @ruser{Spacing issues}.
+
+@node Global sizes
+@subsection Global sizes
+
+TODO Check all these examples
+
+The default @strong{paper size} which LilyPond assumes in laying
+out the music is A4. This may be changed in two ways:
+
+@example
+#(set-default-paper-size "a6")
+
+\paper @{
+#(set-paper-size "letter")
+@}
+@end example
+
+@noindent
+The first command sets the size of all pages. The second command
+sets the size of the pages to which the \paper block applies -- if
+the \paper block is at the top of the file, then it will apply
+to all pages. Support for the following paper sizes is available:
+a6, a5, a4, a3, legal, letter, 11x17 (also known as tabloid).
+Setting the paper size automatically sets suitable margins and
+line length.
+
+If the symbol @code{landscape} is supplied as an argument to
+@code{set-default-paper-size}, the pages will be rotated by 90
+degrees, and wider line widths will be set correspondingly, e.g.
+
+@example
+#(set-default-paper-size "a6" 'landscape)
+@end example
+
+The default @strong{staff size} is set to 20 points.
+This may be changed in two ways:
+
+@example
+#(set-global-staff-size 14)
+
+\paper @{
+#(set-global-staff-size 16)
+@}
+@end example
+
+@noindent
+The first command sets the size in all pages. The second command
+sets the size in the pages to which the \paper block applies -\96 if
+the \paper block is at the top of the file, then it will apply
+to all pages. All the fonts are automatically scaled to suit
+the new value of the staff size.
+
+@node Line breaks
+@subsection Line breaks
+
+Line breaks are normally determined automatically. They are chosen
+so that lines look neither cramped nor loose, and consecutive
+lines have similar density. Occasionally you might want to
+override the automatic breaks; you can do this by specifying
+@code{\break}. This will force a line break at this point. However,
+line breaks can only occur at the end of @q{complete} bars, i.e.,
+where there are no notes or tuplets left @q{hanging} over the bar
+line. If you want to have a line break where there is no bar line,
+you can force an invisible bar line by entering @code{\bar ""},
+although again there must be no notes left hanging over in any of
+the staves at this point, or it will be ignored.
+
+The opposite command, @code{\noBreak}, forbids a line break at the
+bar line where it is inserted.
+
+The most basic settings influencing line spacing are @code{indent}
+and @code{line-width}. They are set in the @code{\layout} block.
+They control the indentation of the first line of music, and the
+lengths of the lines.
+
+If @code{ragged-right} is set to true in the @code{\layout} block,
+then systems end at their natural horizontal length, instead of
+being spread horizontally to fill the whole line. This is useful
+for short fragments, and for checking how tight the natural
+spacing is.
+
+The option @code{ragged-last} is similar to @code{ragged-right},
+but affects only the last line of the piece.
+
+@example
+\layout @{
+indent = #0
+line-width = #150
+ragged-last = ##t
+@}
+@end example
+
+@node Page breaks
+@subsection Page breaks
+
+The default page breaking may be overriden by inserting
+@code{\pageBreak} or @code{\noPageBreak} commands.
+These commands are analogous to the @code{\break} and
+@code{\noBreak} commands discused above and force or forbid
+a page-break at the point where they are inserted.
+Of course, the @code{\pageBreak} command also forces a line break.
+Like @code{\break}, the @code{\pageBreak} command is effective only
+at the end of a @q{complete} bar as defined above. For more
+details see @ruser{Page breaking} and following sections.
+
+There are also analogous settings to @code{ragged-right} and
+@code{ragged-last} which have the same effect on vertical spacing:
+@code{ragged-bottom} and @code{ragged-last-bottom}. If set to
+@code{##t} the systems on all pages or just the last page
+respectively will not be justified vertically.
+
+For more details see @ruser{Vertical spacing}.
+
+@node Fitting music onto fewer pages
+@subsection Fitting music onto fewer pages
+
+Sometimes you can end up with one or two staves on a second
+(or third, or fourth...) page. This is annoying, especially
+if you look at previous pages and it looks like there is plenty
+of room left on those.
+
+When investigating layout issues, @code{annotate-spacing} is
+an invaluable tool. This command prints the values of various
+layout spacing commands; see @ruser{Displaying spacing}, for more
+details. From the output of @code{annotate-spacing}, we can
+see which margins we may wish to alter.
+
+Other than margins, there are a few other options to save space:
+
+@itemize
+@item
+You may tell LilyPond to place systems as close together as
+possible (to fit as many systems as possible onto a page), but
+then to space those systems out so that there is no blank
+space at the bottom of the page.
+
+@example
+\paper @{
+ between-system-padding = #0.1
+ between-system-space = #0.1
+ ragged-last-bottom = ##f
+ ragged-bottom = ##f
+@}
+@end example
+
+@item
+You may force the number of systems (i.e., if LilyPond wants
+to typeset some music with 11 systems, you could force it to
+use 10).
+
+@example
+\paper @{
+ system-count = #10
+@}
+@end example
+
+@item
+Avoid (or reduce) objects which increase the vertical size of
+a system. For example, volta repeats (or alternate repeats)
+require extra space. If these repeats are spread over two
+systems, they will take up more space than one system with
+the volta repeats and another system without.
+
+Another example is moving dynamics which @q{stick out} of
+a system, as in the second bar here:
+
+@lilypond[verbatim,quote,fragment,ragged-right,relative=1]
+e4 c g\f c
+\override DynamicText #'extra-offset = #'( -2.2 . 2.0)
+e4 c g\f c
+@end lilypond
+
+@item
+Alter the horizontal spacing via @code{SpacingSpanner}. See
+@ruser{Changing horizontal spacing}, for more details. Here's
+an example first showing the default behaviour:
+
+@lilypond[verbatim,quote,ragged-right]
+\score {
+ \relative c'' {
+ g4 e e2 |
+ f4 d d2 |
+ c4 d e f |
+ g4 g g2 |
+ g4 e e2 |
+ }
+}
+@end lilypond
+
+@noindent
+and now with @code{common-shortest-duration} increased from the
+value of @code{1/4} (a quarter note is the most common in this
+example) to @code{1/2}:
+
+@lilypond[verbatim,quote,ragged-right]
+\score {
+ \relative c'' {
+ g4 e e2 |
+ f4 d d2 |
+ c4 d e f |
+ g4 g g2 |
+ g4 e e2 |
+ }
+ \layout {
+ \context {
+ \Score
+ \override SpacingSpanner
+ #'common-shortest-duration = #(ly:make-moment 1 2)
+ }
+ }
+}
+@end lilypond
+
+@noindent
+Note that this override cannot be modified dynamically, so it must
+always be placed in a @code{\context@{..@}} block so that it applies
+to the whole score.
+
+TODO Add description of using \context in this way earlier if it is
+not already anywhere -td
+
+@end itemize
+
+
+
@end menu
@node System start delimiters
-@unnumberedsubsubsec System start delimiters
+@subsubsection System start delimiters
@cindex start of system
@cindex staff, multiple
Staff groups can be nested, using the context
@code{InnerStaffGroup} or @code{InnerChoirStaff}; see
-@lsr{staff,staff-brackets.ly}
+@c @lsr{staff,staff-brackets.ly}
@c snippet 137
@commonprop
@c FIXME: Graham will deal with this. -gp
@c snippet 201
To display a bracket even if there is only one staff, see
-@lsr{staff,display-bracket-with-only-one-staff-in-a
-system.ly}
+@c @lsr{staff,display-bracket-with-only-one-staff-in-a system.ly}
@seealso
Music Glossary: @rglos{brace}, @rglos{staff}, @rglos{staves}
@rglos{bracket}.
-Snippets: @lsrdir{staff}
+Snippets: @lsrdir{Staff,Staff-notation}
Internals Reference: @internalsref{ChoirStaff},
@internalsref{GrandStaff}, @internalsref{StaffGroup},
@node Staff symbol
-@unnumberedsubsubsec Staff symbol
+@subsubsection Staff symbol
@cindex adjusting staff symbol
@code{staff symbol}. The staff symbol may be tuned in the number,
thickness and distance of lines, using properties. This is
demonstrated in the example files
-@lsr{staff,changing-the-number-of-lines-in-a-staff.ly} and
-@lsr{staff,changing-the-staff-size.ly}.
+@c @lsr{staff,changing-the-number-of-lines-in-a-staff.ly} and
+@c @lsr{staff,changing-the-staff-size.ly}.
In addition, staves may be started and stopped at will. This is
done with @code{\startStaff} and @code{\stopStaff}.
Music Glossary: @rglos{ossia}, @rglos{staff}, @rglos{Frenched staff}.
-Snippets: @lsrdir{staff}
+Snippets: @lsrdir{Staff,Staff-notation}
Internals Reference: @internalsref{StaffSymbol},
@internalsref{DrumStaff}.
@node Hiding staves
-@unnumberedsubsubsec Hiding staves
+@subsubsection Hiding staves
@cindex Frenched scores
@cindex staves, hiding
Notation Reference: @ref{Staff symbol}.
-Snippets: @lsrdir{staff}
+Snippets: @lsrdir{Staff,Staff-notation}
Internals Reference: @internalsref{ChordNames},
@internalsref{FiguredBass}, @internalsref{Lyrics},
@end menu
@node Metronome marks
-@unnumberedsubsubsec Metronome marks
+@subsubsection Metronome marks
@cindex Tempo
@cindex beats per minute
@seealso
Music Glossary: @rglos{metronome}, @rglos{metronomic indication},
-@rglos{tempo indication}.
-@c FIXME : add @rglos{Mälzels Metronome}, @rglos{M.M.}, @rglos{tempo}?
+@rglos{tempo indication}, @rglos{metronome mark}.
Notation Reference: @ref{Text markup}.
-Snippets: @lsrdir{staff}.
+Snippets: @lsrdir{Staff,Staff-notation}.
Internals Reference: @internalsref{MetronomeMark}, @ref{MIDI
output}.
@node Instrument names
-@unnumberedsubsubsec Instrument names
+@subsubsection Instrument names
@cindex instrument names
@cindex instrument names, short
Notation Reference: @ref{Modifying context plug-ins}.
-Snippets: @lsrdir{staff}
+Snippets: @lsrdir{Staff,Staff-notation}
Internals Reference: @internalsref{InstrumentName},
@internalsref{PianoStaff}, @internalsref{Staff}.
@node Quoting other voices
-@unnumberedsubsubsec Quoting other voices
+@subsubsection Quoting other voices
@cindex cues
@cindex quoting other voices
@cindex fragments
+@cindex cue notes
With quotations, fragments of other parts can be inserted into a
part directly. Before a part can be quoted, it must be marked
Notation Reference: @ref{Instrument transpositions}.
-Snippets: @lsrdir{staff}
+Snippets: @lsrdir{Staff,Staff-notation}
Internals Reference: @internalsref{QuoteMusic}, @internalsref{Voice}.
@node Formatting cue notes
-@unnumberedsubsubsec Formatting cue notes
+@subsubsection Formatting cue notes
+@cindex cues
+@cindex cue notes
+@cindex cue notes, formatting
+@cindex fragments
+@cindex quoting other voices
@cindex cues, formatting
The previous section deals with inserting notes from another
@end example
This will insert notes from the part @var{name} into a
-@internalsref{Voice} called @code{cue}. This happens
+@code{Voice} called @code{cue}. This happens
simultaneously with @var{music}, which usually is a rest. When
the cue notes start, the staff in effect becomes polyphonic for a
moment. The argument @var{updown} determines whether the cue
@end lilypond
-Here are a couple of hints for successful cue notes
+Here are a couple of hints for successful cue notes:
@itemize
@item
Cue notes have smaller font sizes.
@item
-the cued part is marked with the instrument playing the cue.
+The cued part is marked with the instrument playing the cue.
@item
-when the original part takes over again, this should be marked
+When the original part takes over again, this should be marked
with the name of the original instrument.
+@item
Any other changes introduced by the cued part should also be
undone. For example, if the cued instrument plays in a different
clef, the original clef should be stated once again.
@seealso
-Snippets: @lsrdir{staff}
-
+Snippets: @lsrdir{Staff,Staff-notation}.
+Internals Reference: @internalsref{Voice}.
@end menu
@node Artificial harmonics (strings)
-@unnumberedsubsubsec Artificial harmonics (strings)
+@subsubsection Artificial harmonics (strings)
@cindex artificial harmonics
@node Single staff
@appendixsec Single staff
-@appendixsubsec Notes only
-The first example gives you a staff with notes, suitable for a solo
-instrument or a melodic fragment. Cut and paste this into a file,
-add notes, and you're finished!
+@appendixsubsec Notes only
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-melody = \relative c' {
- \clef treble
- \key c \major
- \time 4/4
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{single-staff-template-with-only-notes.ly}
- a4 b c d
-}
-
-\score {
- \new Staff \melody
- \layout { }
- \midi {}
-}
-@end lilypond
@appendixsubsec Notes and lyrics
-The next example demonstrates a simple melody with lyrics. Cut and
-paste, add notes, then words for the lyrics. This example turns off
-automatic beaming, which is common for vocal parts. If you want to use
-automatic beaming, you'll have to change or comment out the relevant
-line.
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-melody = \relative c' {
- \clef treble
- \key c \major
- \time 4/4
-
- a4 b c d
-}
-
-text = \lyricmode {
- Aaa Bee Cee Dee
-}
-
-\score{
- <<
- \new Voice = "one" {
- \autoBeamOff
- \melody
- }
- \new Lyrics \lyricsto "one" \text
- >>
- \layout { }
- \midi { }
-}
-@end lilypond
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{single-staff-template-with-notes-and-lyrics.ly}
@appendixsubsec Notes and chords
-Want to prepare a lead sheet with a melody and chords? Look no further!
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-melody = \relative c' {
- \clef treble
- \key c \major
- \time 4/4
-
- f4 e8[ c] d4 g |
- a2 ~ a2 |
-}
-
-harmonies = \chordmode {
- c4:m f:min7 g:maj c:aug d2:dim b:sus
-}
-
-\score {
- <<
- \new ChordNames {
- \set chordChanges = ##t
- \harmonies
- }
- \new Staff \melody
- >>
-
- \layout{ }
- \midi { }
-}
-@end lilypond
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{single-staff-template-with-notes-and-chords.ly}
@appendixsubsec Notes, lyrics, and chords.
-This template allows you to prepare a song with melody, words, and chords.
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-melody = \relative c' {
- \clef treble
- \key c \major
- \time 4/4
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{single-staff-template-with-notes,-lyrics,-and-chords.ly}
- a b c d
-}
-
-text = \lyricmode {
- Aaa Bee Cee Dee
-}
-
-harmonies = \chordmode {
- a2 c2
-}
-
-\score {
- <<
- \new ChordNames {
- \set chordChanges = ##t
- \harmonies
- }
- \new Voice = "one" {
- \autoBeamOff
- \melody
- }
- \new Lyrics \lyricsto "one" \text
- >>
- \layout { }
- \midi { }
-}
-@end lilypond
@node Piano templates
@appendixsec Piano templates
-@appendixsubsec Solo piano
-
-Here is a simple piano staff.
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-upper = \relative c'' {
- \clef treble
- \key c \major
- \time 4/4
-
- a b c d
-}
-lower = \relative c {
- \clef bass
- \key c \major
- \time 4/4
-
- a2 c
-}
+@appendixsubsec Solo piano
-\score {
- \new PianoStaff <<
- \set PianoStaff.instrumentName = "Piano "
- \new Staff = "upper" \upper
- \new Staff = "lower" \lower
- >>
- \layout { }
- \midi { }
-}
-@end lilypond
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{piano-template-simple.ly}
@appendixsubsec Piano and melody with lyrics
-Here is a typical song format: one staff with the melody and lyrics, with
-piano accompaniment underneath.
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-melody = \relative c'' {
- \clef treble
- \key c \major
- \time 4/4
-
- a b c d
-}
-
-text = \lyricmode {
- Aaa Bee Cee Dee
-}
-
-upper = \relative c'' {
- \clef treble
- \key c \major
- \time 4/4
-
- a b c d
-}
-
-lower = \relative c {
- \clef bass
- \key c \major
- \time 4/4
-
- a2 c
-}
-
-\score {
- <<
- \new Voice = "mel" {
- \autoBeamOff
- \melody
- }
- \new Lyrics \lyricsto mel \text
-
- \new PianoStaff <<
- \new Staff = "upper" \upper
- \new Staff = "lower" \lower
- >>
- >>
- \layout {
- \context { \RemoveEmptyStaffContext }
- }
- \midi { }
-}
-@end lilypond
-
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{piano-template-with-melody-and-lyrics.ly}
@appendixsubsec Piano centered lyrics
-Instead of having a full staff for the melody and lyrics, you can place
-the lyrics between the piano staff (and omit the separate melody staff).
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-upper = \relative c'' {
- \clef treble
- \key c \major
- \time 4/4
-
- a b c d
-}
-
-lower = \relative c {
- \clef bass
- \key c \major
- \time 4/4
-
- a2 c
-}
-
-text = \lyricmode {
- Aaa Bee Cee Dee
-}
-
-\score {
- \new GrandStaff <<
- \new Staff = upper { \new Voice = "singer" \upper }
- \new Lyrics \lyricsto "singer" \text
- \new Staff = lower {
- \clef bass
- \lower
- }
- >>
- \layout {
- \context { \GrandStaff \accepts "Lyrics" }
- \context { \Lyrics \consists "Bar_engraver" }
- }
- \midi { }
-}
-@end lilypond
-
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{piano-template-with-centered-lyrics.ly}
@appendixsubsec Piano centered dynamics
-Many piano scores have the dynamics centered between the two
-staves. This requires a bit of tweaking to implement, but
-since the template is right here, you don't have to do the
-tweaking yourself.
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-upper = \relative c'' {
- \clef treble
- \key c \major
- \time 4/4
-
- a b c d
-}
-
-lower = \relative c {
- \clef bass
- \key c \major
- \time 4/4
-
- a2 c
-}
-
-dynamics = {
- s2\fff\> s4
- s\!\pp
-}
-
-pedal = {
- s2\sustainDown s2\sustainUp
-}
-
-\score {
- \new PianoStaff <<
- \new Staff = "upper" \upper
- \new Dynamics = "dynamics" \dynamics
- \new Staff = "lower" <<
- \clef bass
- \lower
- >>
- \new Dynamics = "pedal" \pedal
- >>
- \layout {
- \context {
- \type "Engraver_group"
- \name Dynamics
- \alias Voice % So that \cresc works, for example.
- \consists "Output_property_engraver"
-
- \override VerticalAxisGroup #'minimum-Y-extent = #'(-1 . 1)
- \override DynamicLineSpanner #'Y-offset = #0
- pedalSustainStrings = #'("Ped." "*Ped." "*")
- pedalUnaCordaStrings = #'("una corda" "" "tre corde")
-
- \consists "Piano_pedal_engraver"
- \consists "Script_engraver"
- \consists "Dynamic_engraver"
- \consists "Text_engraver"
-
- \override TextScript #'font-size = #2
- \override TextScript #'font-shape = #'italic
-
- \consists "Skip_event_swallow_translator"
-
- \consists "Axis_group_engraver"
- }
- \context {
- \PianoStaff
- \accepts Dynamics
- }
- }
-}
-\score {
- \new PianoStaff <<
- \new Staff = "upper" << \upper \dynamics >>
- \new Staff = "lower" << \lower \dynamics >>
- \new Dynamics = "pedal" \pedal
- >>
- \midi {
- \context {
- \type "Performer_group"
- \name Dynamics
- \consists "Piano_pedal_performer"
- }
- \context {
- \PianoStaff
- \accepts Dynamics
- }
- }
-}
-@end lilypond
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{piano-template-with-centered-dynamics.ly}
@node String quartet
@appendixsec String quartet
-@appendixsubsec String quartet
-
-This template demonstrates a string quartet. It also uses a @code{\global}
-section for time and key signatures.
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-
-global= {
- \time 4/4
- \key c \major
-}
-violinOne = \new Voice { \relative c''{
- \set Staff.instrumentName = "Violin 1 "
-
- c2 d e1
-
-\bar "|." }}
-violinTwo = \new Voice { \relative c''{
- \set Staff.instrumentName = "Violin 2 "
-
- g2 f e1
-
-\bar "|." }}
-viola = \new Voice { \relative c' {
- \set Staff.instrumentName = "Viola "
- \clef alto
-
- e2 d c1
-
-\bar "|." }}
-cello = \new Voice { \relative c' {
- \set Staff.instrumentName = "Cello "
- \clef bass
-
- c2 b a1
+@appendixsubsec String quartet
-\bar "|."}}
-
-\score {
- \new StaffGroup <<
- \new Staff << \global \violinOne >>
- \new Staff << \global \violinTwo >>
- \new Staff << \global \viola >>
- \new Staff << \global \cello >>
- >>
- \layout { }
- \midi { }
-}
-@end lilypond
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{string-quartet-template-simple.ly}
@appendixsubsec String quartet parts
-The previous example produces a nice string quartet, but what if you
-needed to print parts? This template demonstrates how to use the
-@code{\tag} feature to easily split a piece into individual parts.
-
-You need to split this template into separate files; the filenames
-are contained in comments at the beginning of each file. @code{piece.ly}
-contains all the music definitions. The other files -- @code{score.ly},
-@code{vn1.ly}, @code{vn2.ly}, @code{vla.ly}, and
-@code{vlc.ly} -- produce the appropiate part.
-
-@verbatim
-%%%%% piece.ly
-\version "2.11.23"
-
-global= {
- \time 4/4
- \key c \major
-}
-
-Violinone = \new Voice { \relative c''{
- \set Staff.instrumentName = "Violin 1 "
-
- c2 d e1
-
-\bar "|." }} %*********************************
-Violintwo = \new Voice { \relative c''{
- \set Staff.instrumentName = "Violin 2 "
-
- g2 f e1
-
-\bar "|." }} %*********************************
-Viola = \new Voice { \relative c' {
- \set Staff.instrumentName = "Viola "
- \clef alto
-
- e2 d c1
-
-\bar "|." }} %*********************************
-Cello = \new Voice { \relative c' {
- \set Staff.instrumentName = "Cello "
- \clef bass
-
- c2 b a1
-
-\bar "|."}} %**********************************
-
-music = {
- <<
- \tag #'score \tag #'vn1 \new Staff { << \global \Violinone >> }
- \tag #'score \tag #'vn2 \new Staff { << \global \Violintwo>> }
- \tag #'score \tag #'vla \new Staff { << \global \Viola>> }
- \tag #'score \tag #'vlc \new Staff { << \global \Cello>> }
- >>
-}
-
-
-
-%%%%% score.ly
-\version "2.11.23"
-\include "piece.ly"
-#(set-global-staff-size 14)
-\score {
- \new StaffGroup \keepWithTag #'score \music
- \layout { }
- \midi { }
-}
-
-
-%%%%% vn1.ly
-\version "2.11.23"
-\include "piece.ly"
-\score {
- \keepWithTag #'vn1 \music
- \layout { }
-}
-
-
-%%%%% vn2.ly
-\version "2.11.23"
-\include "piece.ly"
-\score {
- \keepWithTag #'vn2 \music
- \layout { }
-}
-
-
-%%%%% vla.ly
-\version "2.11.23"
-\include "piece.ly"
-\score {
- \keepWithTag #'vla \music
- \layout { }
-}
-
-
-%%%%% vlc.ly
-\version "2.11.23"
-\include "piece.ly"
-\score {
- \keepWithTag #'vlc \music
- \layout { }
-}
-@end verbatim
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{string-quartet-template-with-separate-parts.ly}
@node Vocal ensembles
@appendixsubsec SATB vocal score
-Here is a standard four-part SATB vocal score. With larger ensembles,
-it's often useful to include a section which is included in all
-parts. For example, the time signature and key signatures are almost
-always the same for all parts.
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-global = {
- \key c \major
- \time 4/4
-}
-
-sopMusic = \relative c'' {
- c4 c c8[( b)] c4
-}
-sopWords = \lyricmode {
- hi hi hi hi
-}
-
-altoMusic = \relative c' {
- e4 f d e
-}
-altoWords =\lyricmode {
- ha ha ha ha
-}
-
-tenorMusic = \relative c' {
- g4 a f g
-}
-tenorWords = \lyricmode {
- hu hu hu hu
-}
-
-bassMusic = \relative c {
- c4 c g c
-}
-bassWords = \lyricmode {
- ho ho ho ho
-}
-
-\score {
- \new ChoirStaff <<
- \new Lyrics = sopranos { s1 }
- \new Staff = women <<
- \new Voice =
- "sopranos" { \voiceOne << \global \sopMusic >> }
- \new Voice =
- "altos" { \voiceTwo << \global \altoMusic >> }
- >>
- \new Lyrics = "altos" { s1 }
- \new Lyrics = "tenors" { s1 }
- \new Staff = men <<
- \clef bass
- \new Voice =
- "tenors" { \voiceOne <<\global \tenorMusic >> }
- \new Voice =
- "basses" { \voiceTwo <<\global \bassMusic >> }
- >>
- \new Lyrics = basses { s1 }
-
- \context Lyrics = sopranos \lyricsto sopranos \sopWords
- \context Lyrics = altos \lyricsto altos \altoWords
- \context Lyrics = tenors \lyricsto tenors \tenorWords
- \context Lyrics = basses \lyricsto basses \bassWords
- >>
-
- \layout {
- \context {
- % a little smaller so lyrics
- % can be closer to the staff
- \Staff
- \override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3)
- }
- }
-}
-@end lilypond
-
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{vocal-ensemble-template.ly}
@appendixsubsec SATB vocal score and automatic piano reduction
-This template adds an automatic piano reduction to the SATB vocal
-score. This demonstrates one of the strengths of LilyPond -- you
-can use a music definition more than once. If you make any changes
-to the vocal notes (say, tenorMusic), then the changes will also
-apply to the piano reduction.
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-global = {
- \key c \major
- \time 4/4
-}
-
-sopMusic = \relative c'' {
- c4 c c8[( b)] c4
-}
-sopWords = \lyricmode {
- hi hi hi hi
-}
-
-altoMusic = \relative c' {
- e4 f d e
-}
-altoWords =\lyricmode {
- ha ha ha ha
-}
-
-tenorMusic = \relative c' {
- g4 a f g
-}
-tenorWords = \lyricmode {
- hu hu hu hu
-}
-
-bassMusic = \relative c {
- c4 c g c
-}
-bassWords = \lyricmode {
- ho ho ho ho
-}
-
-\score {
- <<
- \new ChoirStaff <<
- \new Lyrics = sopranos { s1 }
- \new Staff = women <<
- \new Voice =
- "sopranos" { \voiceOne << \global \sopMusic >> }
- \new Voice =
- "altos" { \voiceTwo << \global \altoMusic >> }
- >>
- \new Lyrics = "altos" { s1 }
- \new Lyrics = "tenors" { s1 }
- \new Staff = men <<
- \clef bass
- \new Voice =
- "tenors" { \voiceOne <<\global \tenorMusic >> }
- \new Voice =
- "basses" { \voiceTwo <<\global \bassMusic >> }
- >>
- \new Lyrics = basses { s1 }
-
- \context Lyrics = sopranos \lyricsto sopranos \sopWords
- \context Lyrics = altos \lyricsto altos \altoWords
- \context Lyrics = tenors \lyricsto tenors \tenorWords
- \context Lyrics = basses \lyricsto basses \bassWords
- >>
- \new PianoStaff <<
- \new Staff <<
- \set Staff.printPartCombineTexts = ##f
- \partcombine
- << \global \sopMusic >>
- << \global \altoMusic >>
- >>
- \new Staff <<
- \clef bass
- \set Staff.printPartCombineTexts = ##f
- \partcombine
- << \global \tenorMusic >>
- << \global \bassMusic >>
- >>
- >>
- >>
- \layout {
- \context {
- % a little smaller so lyrics
- % can be closer to the staff
- \Staff
- \override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3)
- }
- }
-}
-@end lilypond
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{vocal-ensemble-template-with-automatic-piano-reduction.ly}
@appendixsubsec SATB with aligned contexts
-Here all the lyrics lines are placed using @code{alignAboveContext}
-and @code{alignBelowContext}.
-
-@lilypond[quote,verbatim,ragged-right]
-\version "2.11.23"
-global = {
- \key c \major
- \time 4/4
-}
-
-sopMusic = \relative c'' {
- c4 c c8[( b)] c4
-}
-sopWords = \lyricmode {
- hi hi hi hi
-}
-
-altoMusic = \relative c' {
- e4 f d e
-}
-altoWords =\lyricmode {
- ha ha ha ha
-}
-
-tenorMusic = \relative c' {
- g4 a f g
-}
-tenorWords = \lyricmode {
- hu hu hu hu
-}
-
-bassMusic = \relative c {
- c4 c g c
-}
-bassWords = \lyricmode {
- ho ho ho ho
-}
-
-\score {
- \new ChoirStaff <<
- \new Staff = women <<
- \new Voice =
- "sopranos" { \voiceOne << \global \sopMusic >> }
- \new Voice =
- "altos" { \voiceTwo << \global \altoMusic >> }
- >>
- \new Lyrics \with {alignAboveContext=women} \lyricsto sopranos \sopWords
- \new Lyrics \with {alignBelowContext=women} \lyricsto altos \altoWords
-% we could remove the line about this with the line below, since we want
-% the alto lyrics to be below the alto Voice anyway.
-% \new Lyrics \lyricsto altos \altoWords
-
- \new Staff = men <<
- \clef bass
- \new Voice =
- "tenors" { \voiceOne <<\global \tenorMusic >> }
- \new Voice =
- "basses" { \voiceTwo <<\global \bassMusic >> }
- >>
-
- \new Lyrics \with {alignAboveContext=men} \lyricsto tenors \tenorWords
- \new Lyrics \with {alignBelowContext=men} \lyricsto basses \bassWords
-% again, we could replace the line above this with the line below.
-% \new Lyrics \lyricsto basses \bassWords
- >>
-
- \layout {
- \context {
- % a little smaller so lyrics
- % can be closer to the staff
- \Staff
- \override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3)
- }
- }
-}
-
-
-\score {
- \new ChoirStaff <<
- \new Staff = women <<
- \new Voice =
- "sopranos" { \voiceOne << \global \sopMusic >> }
- \new Voice =
- "altos" { \voiceTwo << \global \altoMusic >> }
- >>
-
- \new Lyrics \with {alignAboveContext=women} \lyricsto sopranos \sopWords
- \new Lyrics \lyricsto altos \altoWords
-
- \new Staff = men <<
- \clef bass
- \new Voice =
- "tenors" { \voiceOne <<\global \tenorMusic >> }
- \new Voice =
- "basses" { \voiceTwo <<\global \bassMusic >> }
- >>
-
- \new Lyrics \with {alignAboveContext=men} \lyricsto tenors \tenorWords
- \new Lyrics \lyricsto basses \bassWords
- >>
-
- \layout {
- \context {
- % a little smaller so lyrics
- % can be closer to the staff
- \Staff
- \override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3)
- }
- }
-}
-@end lilypond
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
@c bad node name to avoid node name confict
@appendixsubsec Transcription of mensural music
-When transcribing mensural music, an incipit at the beginning of the
-piece is useful to indicate the original key and tempo. While today
-musicians are used to bar lines in order to faster recognize rhythmic
-patterns, bar lines were not yet invented during the period of
-mensural music; in fact, the meter often changed after every few
-notes. As a compromise, bar lines are often printed between the
-staves rather than on the staves.
-
-@lilypond[quote,verbatim,line-width=11.0\cm]
-\version "2.11.23"
-
-global = {
- \set Score.skipBars = ##t
-
- % incipit
- \once \override Score.SystemStartBracket #'transparent = ##t
- \override Score.SpacingSpanner #'spacing-increment = #1.0 % tight spacing
- \key f \major
- \time 2/2
- \once \override Staff.TimeSignature #'style = #'neomensural
- \override Voice.NoteHead #'style = #'neomensural
- \override Voice.Rest #'style = #'neomensural
- \set Staff.printKeyCancellation = ##f
- \cadenzaOn % turn off bar lines
- \skip 1*10
- \once \override Staff.BarLine #'transparent = ##f
- \bar "||"
- \skip 1*1 % need this extra \skip such that clef change comes
- % after bar line
- \bar ""
-
- % main
- \revert Score.SpacingSpanner #'spacing-increment % CHECK: no effect?
- \cadenzaOff % turn bar lines on again
- \once \override Staff.Clef #'full-size-change = ##t
- \set Staff.forceClef = ##t
- \key g \major
- \time 4/4
- \override Voice.NoteHead #'style = #'default
- \override Voice.Rest #'style = #'default
-
- % TODO: setting printKeyCancellation back to #t must not
- % occur in the first bar after the incipit. Dto. for forceClef.
- % Therefore, we need an extra \skip.
- \skip 1*1
- \set Staff.printKeyCancellation = ##t
- \set Staff.forceClef = ##f
-
- \skip 1*7 % the actual music
-
- % let finis bar go through all staves
- \override Staff.BarLine #'transparent = ##f
-
- % finis bar
- \bar "|."
-}
-
-discantusNotes = {
- \transpose c' c'' {
- \set Staff.instrumentName = "Discantus "
-
- % incipit
- \clef "neomensural-c1"
- c'1. s2 % two bars
- \skip 1*8 % eight bars
- \skip 1*1 % one bar
-
- % main
- \clef "treble"
- d'2. d'4 |
- b e' d'2 |
- c'4 e'4.( d'8 c' b |
- a4) b a2 |
- b4.( c'8 d'4) c'4 |
- \once \override NoteHead #'transparent = ##t c'1 |
- b\breve |
- }
-}
-
-discantusLyrics = \lyricmode {
- % incipit
- IV-
-
- % main
- Ju -- bi -- |
- la -- te De -- |
- o, om --
- nis ter -- |
- ra, __ om- |
- "..." |
- -us. |
-}
-
-altusNotes = {
- \transpose c' c'' {
- \set Staff.instrumentName = "Altus "
-
- % incipit
- \clef "neomensural-c3"
- r1 % one bar
- f1. s2 % two bars
- \skip 1*7 % seven bars
- \skip 1*1 % one bar
-
- % main
- \clef "treble"
- r2 g2. e4 fis g | % two bars
- a2 g4 e |
- fis g4.( fis16 e fis4) |
- g1 |
- \once \override NoteHead #'transparent = ##t g1 |
- g\breve |
- }
-}
-
-altusLyrics = \lyricmode {
- % incipit
- IV-
-
- % main
- Ju -- bi -- la -- te | % two bars
- De -- o, om -- |
- nis ter -- ra, |
- "..." |
- -us. |
-}
-
-tenorNotes = {
- \transpose c' c' {
- \set Staff.instrumentName = "Tenor "
-
- % incipit
- \clef "neomensural-c4"
- r\longa % four bars
- r\breve % two bars
- r1 % one bar
- c'1. s2 % two bars
- \skip 1*1 % one bar
- \skip 1*1 % one bar
-
- % main
- \clef "treble_8"
- R1 |
- R1 |
- R1 |
- r2 d'2. d'4 b e' | % two bars
- \once \override NoteHead #'transparent = ##t e'1 |
- d'\breve |
- }
-}
-
-tenorLyrics = \lyricmode {
- % incipit
- IV-
-
- % main
- Ju -- bi -- la -- te | % two bars
- "..." |
- -us. |
-}
-
-bassusNotes = {
- \transpose c' c' {
- \set Staff.instrumentName = "Bassus "
-
- % incipit
- \clef "bass"
- r\maxima % eight bars
- f1. s2 % two bars
- \skip 1*1 % one bar
-
- % main
- \clef "bass"
- R1 |
- R1 |
- R1 |
- R1 |
- g2. e4 |
- \once \override NoteHead #'transparent = ##t e1 |
- g\breve |
- }
-}
-
-bassusLyrics = \lyricmode {
- % incipit
- IV-
-
- % main
- Ju -- bi- |
- "..." |
- -us. |
-}
-
-\score {
- \new StaffGroup = choirStaff <<
- \new Voice =
- "discantusNotes" << \global \discantusNotes >>
- \new Lyrics =
- "discantusLyrics" \lyricsto discantusNotes { \discantusLyrics }
- \new Voice =
- "altusNotes" << \global \altusNotes >>
- \new Lyrics =
- "altusLyrics" \lyricsto altusNotes { \altusLyrics }
- \new Voice =
- "tenorNotes" << \global \tenorNotes >>
- \new Lyrics =
- "tenorLyrics" \lyricsto tenorNotes { \tenorLyrics }
- \new Voice =
- "bassusNotes" << \global \bassusNotes >>
- \new Lyrics =
- "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics }
- >>
- \layout {
- \context {
- \Score
-
- % no bars in staves
- \override BarLine #'transparent = ##t
-
- % incipit should not start with a start delimiter
- \remove "System_start_delimiter_engraver"
- }
- \context {
- \Voice
-
- % no slurs
- \override Slur #'transparent = ##t
-
- % Comment in the below "\remove" command to allow line
- % breaking also at those bar lines where a note overlaps
- % into the next bar. The command is commented out in this
- % short example score, but especially for large scores, you
- % will typically yield better line breaking and thus improve
- % overall spacing if you comment in the following command.
- %\remove "Forbid_line_break_engraver"
- }
- }
-}
-@end lilypond
-
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{ancient-notation-template----modern-transcription-of-mensural-music.ly}
@appendixsubsec Gregorian transcription template
-This example demonstrates how to do modern transcription of Gregorian
-music. Gregorian music has no measure, no stems; it uses only half and
-quarter note heads, and special marks, indicating rests of different length.
-
-@lilypond[quote,verbatim,ragged-right]
-\include "gregorian-init.ly"
-\version "2.11.23"
-
-chant = \relative c' {
- \set Score.timing = ##f
- f4 a2 \divisioMinima
- g4 b a2 f2 \divisioMaior
- g4( f) f( g) a2 \finalis
-}
-
-verba = \lyricmode {
- Lo -- rem ip -- sum do -- lor sit a -- met
-}
-
-\score {
- \new Staff <<
- \new Voice = "melody" {
- \chant
- }
- \new Lyrics = "one" \lyricsto melody \verba
- >>
-
- \layout {
- \context {
- \Staff
- \remove "Time_signature_engraver"
- \remove "Bar_engraver"
- \override Stem #'transparent = ##t
- }
- \context {
- \Voice
- \override Stem #'length = #0
- }
- \context {
- \Score
- barAlways = ##t
- }
- }
-}
-@end lilypond
-
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{ancient-notation-template----modern-transcription-of-gregorian-music.ly}
@node Jazz combo
@appendixsec Jazz combo
-This is a much more complicated template, for a jazz ensemble. Note that all
-instruments are notated in @code{\key c \major}. This refers to the key in
-concert pitch; LilyPond will automatically transpose the key if the music
-is within a @code{\transpose} section.
-
-@c TODO must clean up this jazz combo example
-@c - transpositions stated in names (ie "trumpet in Bb" or whatever)
-@c - one global section, instead of "global" (time) and "key"
-@c - does it need those wierd macros? sl, nsl, etc.
-@c - maybe ask Amelie Zapf to clean it up, or whether I should just
-@c make whatever changes I feel like.
-
-@c TODO: produces a warning ; key change merge.
-@c The `line-width' argument is for the \header.
-
-@lilypond[quote,verbatim,ragged-right,line-width]
-\version "2.11.23"
-\header {
- title = "Song"
- subtitle = "(tune)"
- composer = "Me"
- meter = "moderato"
- piece = "Swing"
- tagline = \markup {
- \column {
- "LilyPond example file by Amelie Zapf,"
- "Berlin 07/07/2003"
- }
- }
- texidoc = "Jazz tune for combo
- (horns, guitar, piano, bass, drums)."
-}
-
-#(set-global-staff-size 16)
-\include "english.ly"
-
-%%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%%
-
-sl = {
- \override NoteHead #'style = #'slash
- \override Stem #'transparent = ##t
-}
-nsl = {
- \revert NoteHead #'style
- \revert Stem #'transparent
-}
-cr = \override NoteHead #'style = #'cross
-ncr = \revert NoteHead #'style
-
-%% insert chord name style stuff here.
-
-jzchords = { }
-
-
-%%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%%
-
-global = {
- \time 4/4
-}
-
-Key = { \key c \major }
-
-% ############ Horns ############
-
-% ------ Trumpet ------
-trpt = \transpose c d \relative c'' {
- \Key
- c1 c c
-}
-trpharmony = \transpose c' d {
- \jzchords
-}
-trumpet = {
- \global
- \set Staff.instrumentName = #"Trumpet"
- \clef treble
- <<
- \trpt
- >>
-}
-
-% ------ Alto Saxophone ------
-alto = \transpose c a \relative c' {
- \Key
- c1 c c
-}
-altoharmony = \transpose c' a {
- \jzchords
-}
-altosax = {
- \global
- \set Staff.instrumentName = #"Alto Sax"
- \clef treble
- <<
- \alto
- >>
-}
-
-% ------ Baritone Saxophone ------
-bari = \transpose c a' \relative c {
- \Key
- c1 c \sl d4^"Solo" d d d \nsl
-}
-bariharmony = \transpose c' a \chordmode {
- \jzchords s1 s d2:maj e:m7
-}
-barisax = {
- \global
- \set Staff.instrumentName = #"Bari Sax"
- \clef treble
- <<
- \bari
- >>
-}
-
-% ------ Trombone ------
-tbone = \relative c {
- \Key
- c1 c c
-}
-tboneharmony = \chordmode {
- \jzchords
-}
-trombone = {
- \global
- \set Staff.instrumentName = #"Trombone"
- \clef bass
- <<
- \tbone
- >>
-}
-
-% ############ Rhythm Section #############
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{jazz-combo-template.ly}
-% ------ Guitar ------
-gtr = \relative c'' {
- \Key
- c1 \sl b4 b b b \nsl c1
-}
-gtrharmony = \chordmode {
- \jzchords
- s1 c2:min7+ d2:maj9
-}
-guitar = {
- \global
- \set Staff.instrumentName = #"Guitar"
- \clef treble
- <<
- \gtr
- >>
-}
-
-%% ------ Piano ------
-rhUpper = \relative c'' {
- \voiceOne
- \Key
- c1 c c
-}
-rhLower = \relative c' {
- \voiceTwo
- \Key
- e1 e e
-}
-lhUpper = \relative c' {
- \voiceOne
- \Key
- g1 g g
-}
-lhLower = \relative c {
- \voiceTwo
- \Key
- c1 c c
-}
-PianoRH = {
- \clef treble
- \global
- \set Staff.midiInstrument = "acoustic grand"
- <<
- \new Voice = "one" \rhUpper
- \new Voice = "two" \rhLower
- >>
-}
-PianoLH = {
- \clef bass
- \global
- \set Staff.midiInstrument = "acoustic grand"
- <<
- \new Voice = "one" \lhUpper
- \new Voice = "two" \lhLower
- >>
-}
-
-piano = {
- <<
- \set PianoStaff.instrumentName = #"Piano"
- \new Staff = "upper" \PianoRH
- \new Staff = "lower" \PianoLH
- >>
-}
-
-% ------ Bass Guitar ------
-Bass = \relative c {
- \Key
- c1 c c
-}
-bass = {
- \global
- \set Staff.instrumentName = #"Bass"
- \clef bass
- <<
- \Bass
- >>
-}
-
-% ------ Drums ------
-up = \drummode {
- hh4 <hh sn>4 hh <hh sn> hh <hh sn>4
- hh4 <hh sn>4
- hh4 <hh sn>4
- hh4 <hh sn>4
-}
-
-down = \drummode {
- bd4 s bd s bd s bd s bd s bd s
-}
-
-drumContents = {
- \global
- <<
- \set DrumStaff.instrumentName = #"Drums"
- \new DrumVoice { \voiceOne \up }
- \new DrumVoice { \voiceTwo \down }
- >>
-}
-
-%%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%%
-
-\score {
- <<
- \new StaffGroup = "horns" <<
- \new Staff = "trumpet" \trumpet
- \new Staff = "altosax" \altosax
- \new ChordNames = "barichords" \bariharmony
- \new Staff = "barisax" \barisax
- \new Staff = "trombone" \trombone
- >>
-
- \new StaffGroup = "rhythm" <<
- \new ChordNames = "chords" \gtrharmony
- \new Staff = "guitar" \guitar
- \new PianoStaff = "piano" \piano
- \new Staff = "bass" \bass
- \new DrumStaff { \drumContents }
- >>
- >>
-
- \layout {
- \context { \RemoveEmptyStaffContext }
- \context {
- \Score
- \override BarNumber #'padding = #3
- \override RehearsalMark #'padding = #2
- skipBars = ##t
- }
- }
-
- \midi { }
-}
-@end lilypond
@ignore
-
This isn't very useful, and only duplicates material in
"global issues". And if this info changes, this section often
gets forgotten.
@ The `line-width' is for \header.
@li lypond[quote,verbatim,ragged-right,line-width]
-\version "2.11.23"
+\version "2.11.38"
\header {
dedication = "dedication"
title = "Title"
@end menu
@node Overview of text entry
-@unnumberedsubsubsec Overview of text entry
+@subsubsection Overview of text entry
There are four ways to add text to scores:
@seealso
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
@node Text scripts
-@unnumberedsubsubsec Text scripts
+@subsubsection Text scripts
@cindex Text scripts
@cindex text items, non-empty
It is possible to place arbitrary strings of text or @ref{Text
markup}, above or below notes by using a string @code{c^"text"}.
By default, these indications do not influence the note spacing,
-but by using the command @code{\fatText}, the widths will be taken
+but by using the command @code{\textLengthOn}, the widths will be taken
into account
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-c4^"longtext" \fatText c4_"longlongtext" c4
+c4^"longtext" \textLengthOn c4_"longlongtext" c4
@end lilypond
@noindent
-To prevent text from influencing spacing, use @code{\emptyText}.
+To prevent text from influencing spacing, use @code{\textLengthOff}.
More complex formatting may also be added to a note by using the
markup command,
@refcommands
-@funindex \fatText
-@code{\fatText},
-@funindex \emptyText
-@code{\emptyText}.
+@funindex \textLengthOn
+@code{\textLengthOn},
+@funindex \textLengthOff
+@code{\textLengthOff}.
@commonprop
Notation Reference: @ref{Text markup}.
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
Internals Reference: @internalsref{TextScript}.
@node Text spanners
-@unnumberedsubsubsec Text spanners
+@subsubsection Text spanners
@cindex Text spanners
@seealso
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
Internals Reference: @internalsref{TextSpanner}.
@node Text marks
-@unnumberedsubsubsec Text marks
+@subsubsection Text marks
@cindex coda on bar line
@cindex segno on bar line
@seealso
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
Internals Reference: @internalsref{RehearsalMark}.
@end menu
@node Text markup introduction
-@unnumberedsubsubsec Text markup introduction
+@subsubsection Text markup introduction
@cindex markup
@cindex text markup
the @code{\line} command
@lilypond[quote,verbatim,fragment,relative=1]
-\fatText
+\textLengthOn
c4^\markup{ \center-align { on three lines } }
c4^\markup{ \center-align { "all one line" } }
c4^\markup{ \center-align { { on three lines } } }
#0}).
@lilypond[quote,verbatim,fragment,relative=1]
-\fatText
+\textLengthOn
c'4^\markup{ \raise #5 "not raised" }
\once \override TextScript #'padding = #3
c'4^\markup{ raised }
This manual: @ref{Overview of text markup commands}.
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
Internals Reference: @internalsref{TextScript}.
@node Nested scores
-@unnumberedsubsubsec Nested scores
+@subsubsection Nested scores
It is possible to nest music inside markups, by adding a
@code{\score} block to a markup expression. Such a score must
@seealso
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
@node Page wrapping text
-@unnumberedsubsubsec Page wrapping text
+@subsubsection Page wrapping text
Whereas @code{\markup} is used to enter a non-breakable block of
text, @code{\markuplines} can be used at top-level to enter lines
This manual: @ref{Overview of text markup list commands}, @ref{New
markup list command definition}.
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
@refcommands
@code{\markuplines}
@node Font selection
-@unnumberedsubsubsec Font selection
+@subsubsection Font selection
@cindex font selection
@cindex font magnification
@seealso
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
@node Special text concerns
@end menu
@node New dynamic marks
-@unnumberedsubsubsec New dynamic marks
+@subsubsection New dynamic marks
It is possible to print new dynamic marks or text that should be
aligned with dynamics. Use @code{make-dynamic-script} to create
@seealso
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
@node Text and line spanners
-@unnumberedsubsubsec Text and line spanners
+@subsubsection Text and line spanners
Some performance indications, e.g., @i{rallentando} and
@i{accelerando} and @i{trills} are written as text and are
@seealso
-Snippets: @lsrdir{text}
+Snippets: @lsrdir{Text,Text}
Internals Reference: @internalsref{TextSpanner},
@internalsref{Glissando}, @internalsref{VoiceFollower},
(optionally) a MIDI file which can be played. The first example
shows what a simple input text file looks like.
+To create sheet music, we write a text file that specifies the
+notation. For example, if we write:
+
@example
@{
c' e' g' e'
}
@end lilypond
-@warning{Every piece of LilyPond input needs to have
-@strong{@{ curly braces @}} placed around the input. The braces
+@warning{Notes and lyrics in LilyPond input must always be
+surrounded by @strong{@{ curly braces @}}. The braces
should also be surrounded by a space unless they are at the
beginning or end of a line to avoid ambiguities. The braces may
be omitted in some examples in this manual, but don't forget them
confusion to newcomers, so let us explain it in more detail.
LilyPond makes a sharp distinction between musical content and
-layout. The alteration (@notation{flat}, @notation{natural} or
+layout. The alteration (@notation{flat}, @notation{natural sign} or
@notation{sharp}) of a note is part of the pitch, and is therefore
musical content. Whether an accidental (a @emph{printed} flat,
natural or sharp sign) is printed in front of the corresponding
@subheading Simultaneous music expressions: single staff
To determine the number of staves in a piece, LilyPond looks at
-the first expression. If it is a single note, there is one staff;
-if there is a simultaneous expression, there is more than one
-staff.
+the beginning of the first expression. If is a single note, there
+is one staff; if there is a simultaneous expression, there is more
+than one staff.
@lilypond[verbatim,quote,ragged-right]
\relative c'' {
Music Glossary: @rglos{chord}.
-@notation{Chords} can be made by surrounding pitches with single
-angle brackets. Note that all the notes in a chord must have the
-same duration, and that duration is placed after the closing
-bracket.
+We saw earlier how notes can be combined into @notation{chords} by
+indicating they are simultaneous by enclosing them in double angle
+brackets. However, the normal way of indicating a chord is to
+surround the pitches with @emph{single} angle brackets. Note that
+all the notes in a chord must have the same duration, and that the
+duration is placed after the closing bracket.
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
r4 <c e g>4 <c f a>2
Think of chords as almost equivalent to single notes:
almost everything you can attach to a single note can be attached
-to a chord, and everything must go @emph{outside} the angle
-brackets. For example, you can combine markings like beams and
+to a chord, and everything must go @emph{outside} the angle
+brackets. For example, you can combine markings like beams and
ties with chords. They must be placed outside the angle brackets.
@lilypond[verbatim,quote,ragged-right,fragment,relative=2]
was used to write the file:
@example
-\version "2.11.23"
+\version "2.11.38"
@end example
@noindent
underneath the @ref{Version number}.
@example
-\version "2.11.23"
+\version "2.11.38"
\header @{
title = "Symphony"
composer = "Me"
+
This chapter discusses how to modify output. LilyPond is extremely
configurable; virtually every fragment of output may be changed.
-TODO: This chapter is still under development and this version is
-not yet complete. Don't translate yet!
-
-
@menu
* Tweaking basics::
* Appearance of objects::
* Placement of objects::
* Collisions of objects::
-* Page layout::
* Further tweaking::
@end menu
achieved.
In this section we cover the basic concepts required to understand
-tweaking. Later we give a variety of potted commands which can
+tweaking. Later we give a variety of ready-made commands which can
simply be copied to obtain the same effect in your own scores, and
at the same time we show how these commands may be constructed so
that you may learn how to develop your own tweaks.
properties associated with that particular staff, for example, its
name and its key signature, together with details of the engravers
which have been assigned to operate within that staff's context.
-Similarly, there are @code{Voice} objects, @code{Score} objects,
-@code{Lyric} objects, and objects to represent bar lines,
- note heads, ties, dynamics, etc, each with their own set of
-properties.
+Similarly, there are objects to hold the properties of all other
+contexts, such as @code{Voice} objects, @code{Score} objects,
+@code{Lyrics} objects, as well as objects to represent all
+notational elements such as bar lines,
+note heads, ties, dynamics, etc. Every object has its own set of
+property values.
Some types of object are given special names. Objects which
represent items of notation on the printed output such as
@headitem Object/property type
@tab Naming convention
@tab Example
-@item Contexts, Layout Objects
+@item Contexts
@tab Aaaa or AaaaAaaaAaaa
- @tab Staff, GrandStaff,
+ @tab Staff, GrandStaff
+@item Layout Objects
+ @tab Aaaa or AaaaAaaaAaaa
+ @tab Slur, NoteHead
@item Engravers
@tab Aaaa_aaa_engraver
@tab Clef_engraver, Note_heads_engraver
@c Maybe explain in a later iteration -td
The final tweaking command which is available is @code{\tweak}.
-It is not really a new command but a shorthand for an
-@code{\override} command which must be used in a few special
-circumstances. Again, we shall not discuss or use it here.
-You may find the details in
+This should be used to change the properties of objects which
+occur at the same musical moment, such as the notes within a
+chord. Using @code{\override} would affect all the notes
+within a chord, whereas @code{\tweak} affects just the following
+item in the input stream. You may find the details in
@ruser{Objects connected to the input}.
-@c Maybe explain in a later iteration -td
@node The Internals Reference manual
@section The Internals Reference manual
in a piece of music. But the bar lines are normally inserted
automatically. How do we prevent them printing?
-As before, we go to the IR to find the layout object which prints
+Before we tackle this, let us remember that object properties
+are grouped in what are called @emph{interfaces} -- see
+@ref{Properties found in interfaces}. This is simply to
+group together those properties that are commonly required
+together -- if one of them is required for an object, so are
+the others. Some objects then need the properties in some
+interfaces, others need them from other interfaces. The
+interfaces which contain the properties required by a
+particular grob are listed in the IR at the bottom of the
+page describing that grob, and those properties may be
+viewed by looking at those interfaces.
+
+We explained how to find information about grobs in
+@ref{Properties of layout objects}. Using the same approach,
+we go to the IR to find the layout object which prints
bar lines. Going via @emph{Backend} and @emph{All layout objects}
we find there
is a layout object called @code{BarLine}. Its properties include
when the object is created. The following table shows
the default numerical values for some of the commonest
outside-staff objects which are, by default, placed in the
-@code{Staff} Context.
-
-@multitable @columnfractions .3 .3
-@headitem Layout Object @tab Priority
-@item @code{DynamicLineSpanner} @tab @code{ 250}
-@item @code{DynamicText} @tab @code{ 250}
-@item @code{OttavaBracket} @tab @code{ 400}
-@item @code{TextScript} @tab @code{ 450}
-@item @code{TextSpanner} @tab @code{ 350}
+@code{Staff} or @code{Voice} contexts.
+
+@multitable @columnfractions .3 .3 .3
+@headitem Layout Object
+ @tab Priority
+ @tab Controls position of:
+@item @code{MultiMeasureRestText}
+ @tab @code{450}
+ @tab Text over full-bar rests
+@item @code{TextScript}
+ @tab @code{450}
+ @tab Markup text
+@item @code{OttavaBracket}
+ @tab @code{400}
+ @tab Ottava brackets
+@item @code{TextSpanner}
+ @tab @code{350}
+ @tab Text spanners
+@item @code{DynamicLineSpanner}
+ @tab @code{250}
+ @tab All dynamic markings
+@item @code{VoltaBracketSpanner}
+ @tab @code{100}
+ @tab Volta brackets
+@item @code{TrillSpanner}
+ @tab @code{50}
+ @tab Spanning trills
@end multitable
-Here is an example showing the default placement of these.
+Here is an example showing the default placement of some of
+these.
@cindex text spanner
@funindex \startTextSpan
@multitable @columnfractions .3 .3
@headitem Layout Object @tab Priority
-@item @code{BarNumber} @tab @code{ 100}
-@item @code{MetronomeMark} @tab @code{1000}
@item @code{RehearsalMark} @tab @code{1500}
+@item @code{MetronomeMark} @tab @code{1000}
+@item @code{BarNumber} @tab @code{ 100}
@end multitable
If the default values of @code{outside-staff-priority} does not
like the ottava bracket to be placed below the text spanner in the
example above. All we need to do is to look up the priority of
@code{OttavaBracket} in the IR or in the tables above, and reduce
-it to a value lower than that of a @code{TextSpanner}:
+it to a value lower than that of a @code{TextSpanner}, remembering
+that @code{OttavaBracket} is created in the @code{Staff} context:
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
% Set details for later Text Spanner
% Place dynamics above staff
\dynamicUp
%Place following Ottava Bracket below Text Spanners
-\once \override OttavaBracket #'outside-staff-priority = #340
+\once \override Staff.OttavaBracket #'outside-staff-priority = #340
% Start Ottava Bracket
#(set-octavation 1)
c' \startTextSpan
is to position all the annotation at the same distance above
the staff? To do this, we clearly
will need to space the notes out horizontally to make more
-room for the text. This is done using the @code{fatText}
+room for the text. This is done using the @code{textLengthOn}
command.
-@subheading \fatText
+@subheading \textLengthOn
-@funindex \fatText
+@funindex \textLengthOn
@cindex notes, spreading out with text
By default, text produced by markup takes up no horizontal space
-as far as laying out the music is concerned. The @code{\fatText}
+as far as laying out the music is concerned. The @code{\textLengthOn}
command reverses this behaviour, causing the notes to be spaced
out as far as is necessary to accommodate the text:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-\fatText % Cause notes to space out to accommodate text
+\textLengthOn % Cause notes to space out to accommodate text
c2^"Text1"
c^"Text2"
c^"Text3"
@end lilypond
The command to revert to the default behaviour is
-@code{\emptyText}. Remember @code{\once} only works with
+@code{\textLengthOff}. Remember @code{\once} only works with
@code{\override}, @code{\set}, @code{\revert} or @code{unset},
-so cannot be used with @code{\fatText}.
+so cannot be used with @code{\textLengthOn}.
Markup text will also avoid notes which project above the staff.
If this is not desired, the automatic displacement upwards may
R1
% Turn off collision avoidance
\once \override TextScript #'outside-staff-priority = ##f
-\fatText % and turn on fatText
+\textLengthOn % and turn on textLengthOn
c,,2^"Long Text " % Spaces at end are honoured
c''2
@end lilypond
be preferable to space out the notes
a little further, so the dynamic markings can all fit at the
same vertical distance from the staff. We were able to do this
-for markup text by using the @code{\fatText} command, but there
+for markup text by using the @code{\textLengthOn} command, but there
is no equivalent command for dynamic marks. So we shall have to
work out how to do this using @code{\override} commands.
By default, outside-staff objects are given a width of zero so
that they may overlap in the horizontal direction. This is done
-by by the trick of adding infinity to the leftmost extent and
+by the trick of adding infinity to the leftmost extent and
minus infinity to the rightmost extent by setting the
@code{extra-spacing-width} to @code{'(+inf.0 . -inf.0)}. So
to ensure they do not overlap in the horizontal direction we
@code{self-alignment-X}
@cindex self-alignment-X property
-This property aligns the object to the left, to the right, or
-centers it with respect to the parent object's reference point.
-It may be used with all objects which support the
-@code{self-alignment-interface}. In general these are objects
+This property can be used to align the object to the left, to
+the right, or to center it with respect to the parent object's
+reference point. It may be used with all objects which support
+the @code{self-alignment-interface}. In general these are objects
that contain text. The values are @code{LEFT}, @code{RIGHT}
-or @code{CENTER}. The movement is limited by the length of the
-object. Any numerical value between @code{-1} and @code{+1} may
-also be specified, where @code{-1} is left-aligned, @code{+1}
-is right-aligned, and numbers in between move the text
-progressively from left-aligned to right-aligned.
+or @code{CENTER}. Alternatively, a numerical value between
+@code{-1} and @code{+1} may be specified, where @code{-1} is
+left-aligned, @code{+1} is right-aligned, and numbers in between
+move the text progressively from left-aligned to right-aligned.
+Numerical values greater than @code{1} may be specified to move
+the text even further to the left, or less than @code{-1} to
+move the text even further to the right. A change of @code{1}
+in the value corresponds to a movement of half the text's length.
@item
@code{extra-spacing-width}
of beams, slurs, and tuplets. It takes a pair of numbers
giving the position of the left and right ends of the beam, slur,
etc. relative to the center line of the staff. Units are
-staff-spaces.
+staff-spaces. Note, though, that slurs and phrasing slurs cannot
+be repositioned by arbitrarily large amounts. LilyPond first
+generates a list of possible positions for the slur and by default
+finds the slur that @qq{looks best}. If the @code{positions}
+property has been overridden the slur that is closest to the
+requested positions is selected from the list.
@end table
Objects do not all have all of these properties in general.
Let's now see how the properties in the previous section can
help to resolve overlapping notation.
-@subheading padding property
+@c FIXME: formatting
+@subheading @code{padding}
@cindex padding property
The @code{padding} property can be set to increase
@end lilypond
Note in the second example how important it is to figure out what
-context handles a certain object. Since the @code{MetronomeMark} object
+context handles a certain object. Since the @code{MetronomeMark}
+object
is handled in the @code{Score} context, property changes in the
@code{Voice} context will not be noticed. For more details, see
@ruser{Constructing a tweak}.
-@subheading left-padding and right-padding properties
+If the @code{padding} property of an object is increased when that
+object is in a stack of objects being positioned according to
+their @code{outside-staff-priority}, then that object and all
+objects outside it are moved.
+
+
+@subheading @code{left-padding} and @code{right-padding}
@cindex left-padding property
@cindex right-padding property
@end lilypond
-@node Page layout
-@section Page layout
-
-@menu
-* Introduction to layout::
-* Global sizes::
-* Line breaks::
-* Page breaks::
-* Fitting music onto fewer pages::
-@end menu
-
-@node Introduction to layout
-@subsection Introduction to layout
-
-The global paper layout is determined by three factors:
-the page layout, the line breaks, and the spacing. These all
-influence each other. The choice of spacing determines how
-densely each system of music is set. This influences where line
-breaks are chosen, and thus ultimately, how many pages a piece
-of music takes.
-
-Settings which influence layout may be placed in two blocks.
-The @code{\paper @{...@}} block is placed outside any
-@code{\score @{...@}} blocks and contains settings that
-relate to the entire document. The @code{\layout @{...@}}
-block is placed within a @code{\score @{...@}} block and
-contains settings for that particular score. If you have
-only one @code{\score @{...@}} block the two have the same
-effect. In general the commands shown in this section can
-be placed in either.
-
-Much more detail on the options for tweaking the laying out
-of music are contained in @ruser{Spacing issues}.
-
-@node Global sizes
-@subsection Global sizes
-
-TODO Check all these examples
-
-The default @strong{paper size} which LilyPond assumes in laying
-out the music is A4. This may be changed in two ways:
-
-@example
-#(set-default-paper-size "a6")
-
-\paper @{
-#(set-paper-size "letter")
-@}
-@end example
-
-@noindent
-The first command sets the size of all pages. The second command
-sets the size of the pages to which the \paper block applies -- if
-the \paper block is at the top of the file, then it will apply
-to all pages. Support for the following paper sizes is available:
-a6, a5, a4, a3, legal, letter, 11x17 (also known as tabloid).
-Setting the paper size automatically sets suitable margins and
-line length.
-
-If the symbol @code{landscape} is supplied as an argument to
-@code{set-default-paper-size}, the pages will be rotated by 90
-degrees, and wider line widths will be set correspondingly, e.g.
-
-@example
-#(set-default-paper-size "a6" 'landscape)
-@end example
-
-The default @strong{staff size} is set to 20 points.
-This may be changed in two ways:
-
-@example
-#(set-global-staff-size 14)
-
-\paper @{
-#(set-global-staff-size 16)
-@}
-@end example
-
-@noindent
-The first command sets the size in all pages. The second command
-sets the size in the pages to which the \paper block applies -\96 if
-the \paper block is at the top of the file, then it will apply
-to all pages. All the fonts are automatically scaled to suit
-the new value of the staff size.
-
-@node Line breaks
-@subsection Line breaks
-
-Line breaks are normally determined automatically. They are chosen
-so that lines look neither cramped nor loose, and consecutive
-lines have similar density. Occasionally you might want to
-override the automatic breaks; you can do this by specifying
-@code{\break}. This will force a line break at this point. However,
-line breaks can only occur at the end of @q{complete} bars, i.e.,
-where there are no notes or tuplets left @q{hanging} over the bar
-line. If you want to have a line break where there is no bar line,
-you can force an invisible bar line by entering @code{\bar ""},
-although again there must be no notes left hanging over in any of
-the staves at this point, or it will be ignored.
-
-The opposite command, @code{\noBreak}, forbids a line break at the
-bar line where it is inserted.
-
-The most basic settings influencing line spacing are @code{indent}
-and @code{line-width}. They are set in the @code{\layout} block.
-They control the indentation of the first line of music, and the
-lengths of the lines.
-
-If @code{ragged-right} is set to true in the @code{\layout} block,
-then systems end at their natural horizontal length, instead of
-being spread horizontally to fill the whole line. This is useful
-for short fragments, and for checking how tight the natural
-spacing is.
-
-The option @code{ragged-last} is similar to @code{ragged-right},
-but affects only the last line of the piece.
-
-@example
-\layout @{
-indent = #0
-line-width = #150
-ragged-last = ##t
-@}
-@end example
-
-@node Page breaks
-@subsection Page breaks
-
-The default page breaking may be overriden by inserting
-@code{\pageBreak} or @code{\noPageBreak} commands.
-These commands are analogous to the @code{\break} and
-@code{\noBreak} commands discused above and force or forbid
-a page-break at the point where they are inserted.
-Of course, the @code{\pageBreak} command also forces a line break.
-Like @code{\break}, the @code{\pageBreak} command is effective only
-at the end of a @q{complete} bar as defined above. For more
-details see @ruser{Page breaking} and following sections.
-
-There are also analogous settings to @code{ragged-right} and
-@code{ragged-last} which have the same effect on vertical spacing:
-@code{ragged-bottom} and @code{ragged-last-bottom}. If set to
-@code{##t} the systems on all pages or just the last page
-respectively will not be justified vertically.
-
-For more details see @ruser{Vertical spacing}.
-
-@node Fitting music onto fewer pages
-@subsection Fitting music onto fewer pages
-
-Sometimes you can end up with one or two staves on a second
-(or third, or fourth...) page. This is annoying, especially
-if you look at previous pages and it looks like there is plenty
-of room left on those.
-
-When investigating layout issues, @code{annotate-spacing} is
-an invaluable tool. This command prints the values of various
-layout spacing commands; see @ruser{Displaying spacing}, for more
-details. From the output of @code{annotate-spacing}, we can
-see which margins we may wish to alter.
-
-Other than margins, there are a few other options to save space:
-
-@itemize
-@item
-You may tell LilyPond to place systems as close together as
-possible (to fit as many systems as possible onto a page), but
-then to space those systems out so that there is no blank
-space at the bottom of the page.
-
-@example
-\paper @{
- between-system-padding = #0.1
- between-system-space = #0.1
- ragged-last-bottom = ##f
- ragged-bottom = ##f
-@}
-@end example
-
-@item
-You may force the number of systems (i.e., if LilyPond wants
-to typeset some music with 11 systems, you could force it to
-use 10).
-
-@example
-\paper @{
- system-count = #10
-@}
-@end example
-
-@item
-Avoid (or reduce) objects which increase the vertical size of
-a system. For example, volta repeats (or alternate repeats)
-require extra space. If these repeats are spread over two
-systems, they will take up more space than one system with
-the volta repeats and another system without.
-
-Another example is moving dynamics which @q{stick out} of
-a system, as in the second bar here:
-
-@lilypond[verbatim,quote,fragment,ragged-right,relative=1]
-e4 c g\f c
-\override DynamicText #'extra-offset = #'( -2.2 . 2.0)
-e4 c g\f c
-@end lilypond
-
-@item
-Alter the horizontal spacing via @code{SpacingSpanner}. See
-@ruser{Changing horizontal spacing}, for more details. Here's
-an example first showing the default behaviour:
-
-@lilypond[verbatim,quote,ragged-right]
-\score {
- \relative c'' {
- g4 e e2 |
- f4 d d2 |
- c4 d e f |
- g4 g g2 |
- g4 e e2 |
- }
-}
-@end lilypond
-
-@noindent
-and now with @code{common-shortest-duration} increased from the
-value of @code{1/4} (a quarter note is the most common in this
-example) to @code{1/2}:
-
-@lilypond[verbatim,quote,ragged-right]
-\score {
- \relative c'' {
- g4 e e2 |
- f4 d d2 |
- c4 d e f |
- g4 g g2 |
- g4 e e2 |
- }
- \layout {
- \context {
- \Score
- \override SpacingSpanner
- #'common-shortest-duration = #(ly:make-moment 1 2)
- }
- }
-}
-@end lilypond
-
-@noindent
-Note that this override cannot be modified dynamically, so it must
-always be placed in a @code{\context@{..@}} block so that it applies
-to the whole score.
-
-TODO Add description of using \context in this way earlier if it is
-not already anywhere -td
-
-@end itemize
-
-
@node Further tweaking
@section Further tweaking
@menu
* Other uses for tweaks::
+* Using variables for tweaks::
* Other sources of information::
* Advanced tweaks with Scheme::
* Avoiding tweaks with slower processing::
@end itemize
+@node Using variables for tweaks
+@subsection Using variables for tweaks
+
+TODO Add section
@node Other sources of information
@subsection Other sources of information
+
+
+
@end menu
@node Setting simple songs
-@unnumberedsubsubsec Setting simple songs
+@subsubsection Setting simple songs
@cindex \addlyrics
@node Entering lyrics
-@unnumberedsubsubsec Entering lyrics
+@subsubsection Entering lyrics
@cindex lyrics
@funindex \lyricmode
@end menu
@node Automatic syllable durations
-@unnumberedsubsubsec Automatic syllable durations
+@subsubsection Automatic syllable durations
@cindex automatic syllable durations
@cindex lyrics and melodies
@end example
@node Another way of entering lyrics
-@unnumberedsubsubsec Another way of entering lyrics
+@subsubsection Another way of entering lyrics
Lyrics can also be entered without @code{\addlyrics} or
@code{\lyricsto}. In this case,
@node Assigning more than one syllable to a single note
-@unnumberedsubsubsec Assigning more than one syllable to a single note
+@subsubsection Assigning more than one syllable to a single note
@funindex _
@node More than one note on a single syllable
-@unnumberedsubsubsec More than one note on a single syllable
+@subsubsection More than one note on a single syllable
@cindex melisma
@cindex melismata
Internals Reference: @internalsref{Melisma_translator}.
-@lsr{vocal,lyric@/-combine.ly}.
+@c @lsr{vocal,lyric@/-combine.ly}.
@refbugs
inserted by hand.
@node Extenders and hyphens
-@unnumberedsubsubsec Extenders and hyphens
+@subsubsection Extenders and hyphens
@cindex melisma
@cindex extender
@end menu
@node Working with lyrics and variables
-@unnumberedsubsubsec Working with lyrics and variables
+@subsubsection Working with lyrics and variables
@cindex lyrics, variables
@node Lyrics to multiple notes of a melisma
-@unnumberedsubsubsec Lyrics to multiple notes of a melisma
+@subsubsection Lyrics to multiple notes of a melisma
One possibility is that the text has a melisma in one stanza, but
multiple syllables in another one. One solution is to make the faster
@node Divisi lyrics
-@unnumberedsubsubsec Divisi lyrics
+@subsubsection Divisi lyrics
You can display alternate (or divisi) lyrics by naming voice
contexts and attaching lyrics to those specific contexts.
@node Switching the melody associated with a lyrics line
-@unnumberedsubsubsec Switching the melody associated with a lyrics line
+@subsubsection Switching the melody associated with a lyrics line
More complex variations in text underlay are possible. It is possible
to switch the melody for a line of lyrics during the text. This is
@node Lyrics independent of notes
-@unnumberedsubsubsec Lyrics independent of notes
+@subsubsection Lyrics independent of notes
In some complex vocal music, it may be desirable to place
lyrics completely independently of notes. Music defined
@end menu
@node Spacing lyrics
-@unnumberedsubsubsec Spacing lyrics
+@subsubsection Spacing lyrics
@cindex Spacing lyrics
@cindex Lyrics, increasing space between
@node Adding stanza numbers
-@unnumberedsubsubsec Adding stanza numbers
+@subsubsection Adding stanza numbers
@cindex stanza number
@node Adding dynamics marks
-@unnumberedsubsubsec Adding dynamics marks
+@subsubsection Adding dynamics marks
Stanzas differing in loudness may be indicated by putting a
dynamics mark before each stanza. In Lilypond, everthing coming in
@end lilypond
@node Adding singer names
-@unnumberedsubsubsec Adding singer names
+@subsubsection Adding singer names
@cindex singer name
@cindex name of singer
@node Printing stanzas at the end
-@unnumberedsubsubsec Printing stanzas at the end
+@subsubsection Printing stanzas at the end
Sometimes it is appropriate to have one stanza set
to the music, and the rest added in verse form at
@node Printing stanzas at the end in multiple columns
-@unnumberedsubsubsec Printing stanzas at the end in multiple columns
+@subsubsection Printing stanzas at the end in multiple columns
When a piece of music has many verses, they are often printed in
multiple columns across the page. An outdented verse number often
@example
%%% global.ly
-\version "2.11.23"
+\version "2.11.38"
#(ly:set-option 'point-and-click #f)
\include "../init/init-defs.ly"
\include "../init/init-layout.ly"
--- /dev/null
+CHECKLIST FOR DOC SECTION REWRITES
+
+You've volunteered (or are considering volunteering) to edit a
+section of the NR. Congratulations! You'll learn a lot about
+this part of lilypond. You'll also get thoroughly fed up with
+documentation work, and especially with me... but as they say,
+"you can't make an omelett without breaking a few eggs". Welcome
+to egg-hood!
+
+REQUIRED READING
+
+- policy.txt
+- writing-texinfo.txt
+- this document :)
+- NR 1.1 Pitches. Ideally, read it in your favorite output format
+ (either info, PDF, or HTML), *and* in source format
+ (pitches.itely). This is our "demonstration" chapter, so the
+ below points really just boil down to "make it like
+ pitches.itely".
+
+
+WORKING
+
+I recommend working on one subsection at a time. For each
+subsection,
+- check the mundane formatting. Are the headings (@refcommands,
+ @seealso, etc) in the right order?
+- add any appropriate index entries.
+- check the links in the @seealso section -- links to music
+ glossary, internal references, and other NR sections are the
+ main concern. Check for potential additions.
+- move LSR-worthy material into LSR. Add the snippet (or
+ just send it to Valentin for adding), delete the material from
+ the .itely file, and add a @lilypondfile command.
+
+- check the examples and descriptions. Do they still work?
+ *Do not* assume that the existing text is accurate/complete;
+ some of the manual is highly out of date.
+- is the material in the @refbugs still accurate?
+- process anything on the TODO list on the GDP web site.
+- can the examples be improved (made more explanatory), or is
+ there any missing info? (feel free to ask specific questions
+ on -user; a couple of people claimed to be interesting in being
+ "consultants" who would help with such questions)
+
+In general, I favor short text explanations with good examples --
+"an example is worth a thousand words". When I worked on the
+docs, I spent about half my time just working on those tiny
+lilypond examples. Making easily-understandable examples is much
+harder than it looks.
+
+
+TWEAKS
+
+In general, any \set or \override commands should go in the
+"select snippets" section, which means that they should go in LSR
+and not the .itely file. For some cases, the command obviously
+belongs in the "main text" (ie not inside @refcommands or @seealso
+or whatever) -- instrument names are a good example of this.
+ \set Staff.instrumentName = #"foo"
+On the other side of this,
+ \override Score.Hairpin #'after-line-breaking = ##t
+clearly belongs in LSR.
+
+I'm quite willing to discuss specific cases if you think that a
+tweaks needs to be in the main text. But items that can go into
+LSR are easier to maintain, so I'd like to move as much as
+possible into there.
+
+
+It would be "nice" if you spent a lot of time crafting nice tweaks
+for users... but my recommendation is *not* to do this. There's a
+lot of doc work to do without adding examples of tweaks. Tweak
+examples are trivial to add later -- they could be made by normal
+users, or by you after GDP is over.
+
+Basically, it's not something that needs to be done while I'm
+around. Remember that I'm gone in August at the latest; there's a
+*lot* of doc work that should be done before then. I strongly
+recommend that you save all the tweaks until later.
+
+
+FINAL
+
+- when you think you're finished, let me know. I'll spend a few
+ minutes and send you a list of mistakes to fix.
+ (there's a *lot* of details to cover; we'll probably spend a
+ week going back and forth like this. See earlier warning about
+ hating me by the time you're done with a doc section :)
+- I'll ask people on -user to review the Snippet list at this
+ time; correcting things on the Snippet list is much easier than
+ getting comments on the integrated snippets.
+- when we're both satisfied with the section, we'll invite
+ comments from -user. Judging from my experience with Pitches,
+ it will take between three and five weeks to keep on revising
+ the "final" version.
+
+I personally found it quite frustrating to still be fixing
+problems in a doc section which I thought was "perfect" a whole
+bloody *month* ago. Don't get me wrong; it's great that we get so
+many comments from -user. :) But just be aware that when you
+think you're finally done with a section, you're actually only
+halfway there.
+
+
+
Most of the manual operates at the
@node Foo
- @unnumberedsubsubsec Foo
+ @subsubsection Foo
level. Sections are created with
@node Foo
@subsection Foo
* Use two spaces for indentation in lilypond examples. (no tabs)
+* All text strings should be prefaced with #. LilyPond does not
+ strictly require this, but it is helpful to get users accustomed
+ to this scheme construct. ie
+ \set Staff.instrumentName = #"cello"
+
+* Examples should end with a complete bar if possible.
+
* If possible, only write one bar per line. The notes on each
- line should be an independent line.
+ line should be an independent line -- tweaks should occur on
+ their own line if possible.
Bad:
\override textscript #'padding = #3 c1^"hi"
Good:
required. Any link in a doc section must be duplicated in the
@seealso section at the bottom.
-* Introducing examples may be done with
+* Introducing examples must be done with
. (ie finish the previous sentence/paragaph)
: (ie `in this example:')
, (ie `may add foo with the blah construct,')
+ The old "sentence runs directly into the example" method is not
+ allowed any more.
* Abbrevs in caps, e.g., HTML, DVI, MIDI, etc.
this is, don't say `Ba@ss{}tuba' but `Baßtuba'. This ensures that
all such characters appear in all output formats.
-* Don't use a @ref{link to another section} in the middle of a
- sentence. It looks ok in HTML, moderately bad in PDF, and
- utterly horrible in INFO. Instead, reword the sentence so that
- users are encouraged to see @ref{link to another section}.
- (at the end of the sentence)
-
-
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=11
-PATCH_LEVEL=37
+PATCH_LEVEL=39
MY_PATCH_LEVEL=
# version 2006/05/20 or later. #
########################################################################
-our $VERSION = "2.4.3"; # mf2pt1 version number
+our $VERSION = "2.4.4"; # mf2pt1 version number
require 5.6.1; # I haven't tested mf2pt1 with older Perl versions
use File::Basename;
my $varptr = shift; # Pointer to variable to define
return if defined $$varptr && $$varptr ne "UNSPECIFIED";
foreach my $val (@_) {
- next if !defined $val;
- $$varptr = $val;
- return;
+ next if !defined $val;
+ $$varptr = $val;
+ return;
}
}
# commands also defined by Plain Metafont.
my %opthash = ();
GetOptions (\%opthash,
- "fontversion=s", # font_version
+ "fontversion=s", # font_version
"comment=s", # font_comment
"family=s", # font_family
"weight=s", # font_weight
"designsize=f", # font_size (*)
"encoding=s", # font_coding_scheme (*)
"rounding=f",
- "bpppix=f",
+ "bpppix=f",
"ffscript=s",
"h|help",
"V|version") || pod2usage(2);
{
if (-e $encoding) {
# Filenames take precedence over built-in encodings.
- my @enc_array;
+ my @enc_array;
open (ENCFILE, "<$encoding") || die "${progname}: $! ($encoding)\n";
- while (my $oneline = <ENCFILE>) {
- $oneline =~ s/\%.*$//;
- foreach my $word (split " ", $oneline) {
- push @enc_array, substr($word, 1) if substr($word, 0, 1) eq "/";
- }
- }
+ while (my $oneline = <ENCFILE>) {
+ $oneline =~ s/\%.*$//;
+ foreach my $word (split " ", $oneline) {
+ push @enc_array, substr($word, 1) if substr($word, 0, 1) eq "/";
+ }
+ }
close ENCFILE;
- $encoding_name = substr (shift @enc_array, 1);
+ $encoding_name = substr (shift @enc_array, 1);
$encoding = \@enc_array;
- last ENCODING;
+ last ENCODING;
}
$encoding=\@standardencoding, last ENCODING if $encoding eq "standard";
$encoding=\@isolatin1encoding, last ENCODING if $encoding eq "isolatin1";
doc_dirs = ['input', 'Documentation', outdir]
target_pattern = os.path.join (outdir, '%s-root')
+# these redirection pages allow to go back to the documentation index
+# from HTML manuals/snippets page
static_files = {
os.path.join (outdir, 'index.html'):
- '''<META HTTP-EQUIV="refresh" content="0;URL=Documentation/index.html">
+ '''<META HTTP-EQUIV="refresh" content="0;URL=Documentation/index.html">
<html><body>Redirecting to the documentation index...</body></html>\n''',
os.path.join (outdir, 'VERSION'):
- package_version + '\n' }
+ package_version + '\n',
+ os.path.join ('input', 'lsr', outdir, 'index.html'):
+ '''<META HTTP-EQUIV="refresh" content="0;URL=../../index.html">
+<html><body>Redirecting to the documentation index...</body></html>\n'''
+ }
import langdefs
-# ugly hack: the following overwrites HTML Info dir with a link to
-# the (more useful) documentation index
for l in langdefs.LANGUAGES:
- static_files[os.path.join ('Documentation/user', outdir, l.file_name ('index', '.html'))] = \
+ static_files[os.path.join ('Documentation', 'user', outdir, l.file_name ('index', '.html'))] = \
'<META HTTP-EQUIV="refresh" content="0;URL=../' + l.file_name ('index', '.html') + \
'">\n<html><body>Redirecting to the documentation index...</body></html>\n'
dirs, symlinks, files = mirrortree.walk_tree (
tree_roots = doc_dirs,
process_dirs = outdir,
- exclude_dirs = '(^|/)(' + '|'.join ([l.code for l in langdefs.LANGUAGES]) + r'|po|out|\w*?-root)(/|$)',
+ exclude_dirs = '(^|/)(' + '|'.join ([l.code for l in langdefs.LANGUAGES]) + r'|po|out|.*?[.]t2d|\w*?-root)(/|$)',
find_files = r'.*?\.(?:midi|html|pdf|png|txt|ly|signature)$|VERSION',
- exclude_files = r'lily-[0-9a-f]+.*\.pdf')
+ exclude_files = r'lily-[0-9a-f]+.*\.(pdf|txt)')
# actual mirrorring stuff
html_files = []
# perl for help2man.
STEPMAKE_PERL(OPTIONAL)
-# New makeinfo for multi-page website docs Simply always require new
-# makeinfo should avoid bug reports; if people want to build lily
-# without the docs, they can find this comment and use an older
-# makeinfo--but hopefully won't report makeinfo problems.
-STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.8)
+STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.11)
AC_DEFINE_UNQUOTED(FLOWER_VERSION, "${FULL_FLOWER_VERSION}")
I = \once \override NoteColumn #'ignore-collision = ##t
-\version "2.11.32"
+\version "2.11.38"
staffPiano = \new PianoStaff {
\set Score.timing = ##f
-\version "2.11.11"
+\version "2.11.38"
\layout {
indent = #0
% Copyright 2006 for the entire score;
% All rights reserved by the composer.
-\version "2.11.2"
+\version "2.11.38"
\include "english.ly"
\include "cary-layout.ly"
\override Stem #'length = #10
\override Beam #'positions = #'(-13 . -13)
\override DynamicLineSpanner #'staff-padding = #18
- \override TextSpanner #'edge-text = #(cons (markup #:italic "covered") "")
+ \override TextSpanner #'bound-details #'left #'text = #(markup (#:italic "covered"))
\override TextSpanner #'dash-period = #1
\override TextSpanner #'dash-fraction = #0.2
- \override TextSpanner #'edge-height = #'(0 . 1.25)
- \override TextSpanner #'bound-padding = #0.5
+ \override TextSpanner #'bound-details #'left #'padding = #0.5
+ \override TextSpanner #'bound-details #'right #'padding = #0.5
\override TextSpanner #'staff-padding = #4
} {
%}
%% Optional version number
-\version "2.10.0"
+\version "2.11.38"
%}
%% Optional version number
-\version "2.10.0"
+\version "2.11.38"
%}
%% Optional version number
-\version "2.10.0"
+\version "2.11.38"
-\version "2.10.0"
+\version "2.11.38"
\header {
composer = "ARTHUR GRAY"
s32 s s\! s
}
- \fatText
+ \textLengthOn
s32 s-"rall." s s s8 s4
- \emptyText
+ \textLengthOff
| %5
s2-"a tempo" s8
s \> s s
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "chords, ancient-notation, contexts-and-engravers"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches, staff-notation, vocal-music"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "staff-notation, contexts-and-engravers"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "staff-notation, contexts-and-engravers, breaks"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, expressive-marks"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, percussion"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "guitar"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "titles"
details on this format string: Formatting Calendar Time.
" }
% begin verbatim
-\version "2.11.35"
+\version "2.11.38"
% first, define a variable to hold the formatted date:
date = #(strftime "%d-%m-%Y" (localtime (current-time)))
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "text, vocal-music, spacing"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "text, paper-and-layout, titles"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "text, vocal-music"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "tweaks-and-overrides, paper-and-layout, spacing"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
- lsrtags = "pitches"
+ lsrtags = "pitches, vocal-music"
texidoc = "
If you have multiple voices in a single staff and you want a single
ambitus per staff rather than per voice, add the
}
<<
\new Voice \relative c'' {
- % eliminates collision
- \override Staff.Ambitus #'X-offset = #-1.0
\voiceOne
c4 a d e f1
}
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "ancient-notation"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "ancient-notation, template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "ancient-notation, template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "ancient-notation"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches, editorial-and-educational-use"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, breaks"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "editorial-and-educational-use, text"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks, text"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "simultaneous-notes, editorial-and-educational-use, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks, editorial-and-educational-use"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "chords"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "editorial-and-educational-use, text, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "staff-notation"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "staff-notation, tweaks-and-overrides, paper-and-layout"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, contexts-and-engravers"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "chords"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches, staff-notation, editorial-and-educational-use, tweaks-and-overrides"
When a clef change takes place at a line break the new clef symbol is
printed at both the end of the previous line and the beginning of the
new line by default. If the warning clef at the end of the previous
-line in not required it can be suppressed by setting the
+line is not required it can be suppressed by setting the
explicitClefVisibility Staff property to the value
@code{end-of-line-invisible}. The default behaviour can be recovered
with @code{\\unset Staff.explicitClefVisibility}.
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Clip systems"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "simultaneous-notes, chords, piano-music"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "editorial-and-educational-use, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks, text"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "simultaneous-notes, text"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks"
creating-blank-staves.ly
chant-or-psalms-notation.ly
-adding-a-figured-bass-above-or-below-the-notes.ly
+adding-and-extra-staff-at-a-line-break.ly
adding-an-extra-staff.ly
vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
changing-time-signatures-inside-a-polymetric-section-using--compressmusic.ly
engravers-one-by-one.ly
-adding-and-extra-staff-at-a-line-break.ly
+adding-a-figured-bass-above-or-below-the-notes.ly
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "staff-notation, editorial-and-educational-use, contexts-and-engravers, paper-and-layout"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "expressive-marks, text, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "ancient-notation, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "vocal-music, piano-music, strings, midi"
composition? Solution: A Lilypond demo file.
" }
% begin verbatim
-%\version "2.11.35"
+%\version "2.11.38"
basemelodie = { c'4. \mf g c'16 b' c'' d'' | e'' d'' e'' f'' g''4 g'''4 r | r1 }
melodie = { \tempo 4 = 150 \basemelodie }
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "text, paper-and-layout, titles"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Drawing boxes around grobs"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Drawing circles around various objects"
-creating-blank-staves.ly
applying-noteheads-styles-depending-on-the-step-of-the-scale.ly
+creating-blank-staves.ly
changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly
coloring-objects.ly
inserting-score-fragments-above-the-staff,-as-markups.ly
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "contexts-and-engravers"
combining-dynamics-with-markup-texts.ly
creating-text-spanners.ly
-breathing-sign.ly
+adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rythms..ly
changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly
caesura-railtracks-with-fermata.ly
-adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rythms..ly
+breathing-sign.ly
center-text-below-hairpin-dynamics.ly
contemporary-glissando.ly
adding-parentheses-around-an-expressive-mark.ly
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, editorial-and-educational-use"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "editorial-and-educational-use, text, vocal-music"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, percussion"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "text, vocal-music"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "staff-notation, editorial-and-educational-use"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "piano-music, percussion, guitar, template"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
doctitle = "Letter tablature formatting"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Line arrows"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Makam"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Making an object invisible with the transparent property"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
doctitle = "Markup lines"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
% possible rename to scheme- or something like that. -gp
\header {
doctitle = "Move specific text"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches, staff-notation"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches, text"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
doctitle = "Outputting the version number"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Page label"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "piano-music, template"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
doctitle = "Piano template with centered dynamics"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "text, piano-music, template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "vocal-music, piano-music, template"
applying-noteheads-styles-depending-on-the-step-of-the-scale.ly
-ambiti-multiple-voices.ly
+creating-a-sequence-of-notes-on-various-pitches.ly
makam.ly
transposing-pitches-with-minimum-accidentals-smart-transpose.ly
ottava-text.ly
clefs-commonly-tweaked-properties.ly
dodecaphonic-style-accidentals-for-each-note-including-naturals.ly
preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly
-creating-a-sequence-of-notes-on-various-pitches.ly
+ambiti-multiple-voices.ly
non-traditional-key-signatures.ly
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "repeats, breaks"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "pitches"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "tweaks-and-overrides, spacing"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
doctitle = "Quoting another voice with transposition"
lsrtags = "pitches,staff-notation"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Quoting another voice"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, ancient-notation, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, editorial-and-educational-use, tweaks-and-overrides"
altering-the-number-of-stems-in-a-beam.ly
-chant-or-psalms-notation.ly
-heavily-customized-polymetric-time-signatures.ly
+adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rythms..ly
conducting-signs,-measure-grouping-signs.ly
-skips-in-lyric-mode-2.ly
-automatic-beam-subdivisions.ly
+heavily-customized-polymetric-time-signatures.ly
rhythmic-slashes.ly
-adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rythms..ly
+skips-in-lyric-mode-2.ly
+manually-controlling-beam-positions.ly
+chant-or-psalms-notation.ly
changing-time-signatures-inside-a-polymetric-section-using--compressmusic.ly
automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.ly
making-an-object-invisible-with-the-transparent-property.ly
-manually-controlling-beam-positions.ly
+automatic-beam-subdivisions.ly
forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly
controlling-tuplet-bracket-visibility.ly
beam-across-line-breaks.ly
-compound-time-signatures.ly
+skips-in-lyric-mode.ly
adding-drum-parts.ly
rest-styles.ly
-skips-in-lyric-mode.ly
+compound-time-signatures.ly
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "vocal-music, chords, template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "chords, template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "vocal-music, template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, vocal-music"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "rhythms, vocal-music"
alignment-vertical-spacing.ly
vertically-aligning-ossias-and-lyrics.ly
page-label.ly
-adjusting-lyrics-vertical-spacing.ly
proportional-strict-notespacing.ly
+adjusting-lyrics-vertical-spacing.ly
creating-blank-staves.ly
+time-signature-in-parentheses.ly
adding-and-extra-staff-at-a-line-break.ly
changing-the-number-of-lines-in-a-staff.ly
-time-signature-in-parentheses.ly
+inserting-score-fragments-above-the-staff,-as-markups.ly
adding-an-extra-staff.ly
changing-the-staff-size.ly
-quoting-another-voice.ly
+quoting-another-voice-with-transposition.ly
adding-ambiti-per-voice.ly
clefs-commonly-tweaked-properties.ly
+quoting-another-voice.ly
volta-multi-staff.ly
-inserting-score-fragments-above-the-staff,-as-markups.ly
-quoting-another-voice-with-transposition.ly
non-traditional-key-signatures.ly
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "strings, template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "strings, template"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Table of contents"
piano-template-with-centered-dynamics.ly
single-staff-template-with-notes-and-lyrics.ly
single-staff-template-with-only-notes.ly
-piano-template-with-centered-lyrics.ly
+jazz-combo-template.ly
score-for-diatonic-accordion.ly
piano-template-simple.ly
-string-quartet-template-with-separate-parts.ly
-ancient-notation-template----modern-transcription-of-gregorian-music.ly
ancient-notation-template----modern-transcription-of-mensural-music.ly
-piano-template-with-melody-and-lyrics.ly
+ancient-notation-template----modern-transcription-of-gregorian-music.ly
+single-staff-template-with-notes-and-chords.ly
string-quartet-template-simple.ly
single-staff-template-with-notes,-lyrics,-and-chords.ly
-single-staff-template-with-notes-and-chords.ly
-vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
-jazz-combo-template.ly
+piano-template-with-melody-and-lyrics.ly
+string-quartet-template-with-separate-parts.ly
vocal-ensemble-template.ly
+vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
+piano-template-with-centered-lyrics.ly
vocal-ensemble-template-with-automatic-piano-reduction.ly
vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
markup-lines.ly
center-text-below-hairpin-dynamics.ly
-piano-template-with-centered-lyrics.ly
+ottava-text.ly
demonstrating-all-headers.ly
changing-the-default-text-font-family.ly
-how-to-put-ties-between-syllables-in-lyrics.ly
+combining-two-parts-on-the-same-staff.ly
aligning-and-centering-instrument-names.ly
utf-8.ly
outputting-the-version-number.ly
blanking-staff-lines-using-the--whiteout-command.ly
formatting-lyrics-syllables.ly
-combining-two-parts-on-the-same-staff.ly
-ottava-text.ly
+how-to-put-ties-between-syllables-in-lyrics.ly
+piano-template-with-centered-lyrics.ly
adjusting-lyrics-vertical-spacing.ly
aligning-lyrics.ly
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "editorial-and-educational-use"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "staff-notation, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "ancient-notation, tweaks-and-overrides"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
doctitle = "Transposing music with minimum accidentals"
lsrtags = "pitches"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Using the @code{\tweak} command to tweak individual grobs"
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
%% Edit this file using a Unicode aware editor, such as GVIM, GEDIT, Emacs
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "vocal-music, tweaks-and-overrides, spacing"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "vocal-music, piano-music, template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "text, vocal-music, contexts-and-engravers, template"
%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.11.35"
+\version "2.11.38"
\header {
lsrtags = "vocal-music, template"
chant-or-psalms-notation.ly
single-staff-template-with-notes-and-lyrics.ly
skips-in-lyric-mode-2.ly
-vocal-ensemble-template-with-automatic-piano-reduction.ly
+skips-in-lyric-mode.ly
+aligning-lyrics.ly
vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
how-to-put-ties-between-syllables-in-lyrics.ly
adding-ambiti-per-voice.ly
-piano-template-with-melody-and-lyrics.ly
+vertically-aligning-ossias-and-lyrics.ly
single-staff-template-with-notes,-lyrics,-and-chords.ly
-demo-midiinstruments.ly
+vocal-ensemble-template-with-automatic-piano-reduction.ly
formatting-lyrics-syllables.ly
-vertically-aligning-ossias-and-lyrics.ly
-aligning-lyrics.ly
+piano-template-with-melody-and-lyrics.ly
+ambiti-multiple-voices.ly
vocal-ensemble-template.ly
adjusting-lyrics-vertical-spacing.ly
-skips-in-lyric-mode.ly
+demo-midiinstruments.ly
%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.11.36"
+\version "2.11.38"
\layout { ragged-right= ##t }
\header {
doctitle = "Volta multi-staff"
-\version "2.10.0"
+\version "2.11.38"
\header {
texidoc = " Chord names are generated from a list pitches. The
-\version "2.10.0"
+\version "2.11.38"
\header {
texidoc = "@cindex Chord Names German
The english naming of chords (default) can be changed to german
" }
-\version "2.10.0"
+\version "2.11.38"
\include "gregorian-init.ly"
-\version "2.11.34"
+\version "2.11.38"
\include "english.ly"
% NR 1.7 Editorial annotations
-\version "2.11.34"
+\version "2.11.38"
\include "english.ly"
% NR 1.3 Expressive marks
evenFooterMarkup = \markup {}
}
-\version "2.11.27"
+\version "2.11.38"
#(define-markup-command (doc-char layout props name) (string?)
(interpret-markup layout props
-\version "2.10.0"
+\version "2.11.38"
\header{
texidoc="
Note head shapes may be set from several choices.
-\version "2.11.34"
+\version "2.11.38"
\include "english.ly"
% NR 1.1 Pitches
-\version "2.11.34"
+\version "2.11.38"
\include "english.ly"
% NR 1.7 Repeats
-\version "2.11.34"
+\version "2.11.38"
\include "english.ly"
% NR 1.2 Rhythms
-\version "2.10.0"
+\version "2.11.38"
\header {
title = "Screech and boink"
subtitle = "Random complex notation"
-\version "2.10.0"
+\version "2.11.38"
% this chart is used in the manual too.
-\version "2.11.34"
+\version "2.11.38"
\include "english.ly"
% NR 1.5 Simultaneous notes
-\version "2.11.34"
+\version "2.11.38"
\include "english.ly"
% NR 1.6 Staff notation
-\version "2.11.34"
+\version "2.11.38"
\include "english.ly"
% NR 1.8 Text
-\version "2.10.0"
+\version "2.11.38"
\header {
title = "Title"
subtitle = "Subtitle"
copyright = "Public Domain"
}
-\version "2.10.0"
+\version "2.11.38"
global = {
\key a \minor
}
-\version "2.10.0"
+\version "2.11.38"
manuscriptBreak = { \break }
footer = "Mutopia-2001/04/27-xx"
}
-\version "2.10.0"
+\version "2.11.38"
#(set-global-staff-size 16)
-\version "2.10.0"
+\version "2.11.38"
forcedLastBreak = { \break }
#(ly:set-option 'old-relative)
-\version "2.10.0"
+\version "2.11.38"
%{
Header for Petites Preludes.
d4. fis16 g r16 bes8. ~ bes4 |
%10
\stemDown
- << d,1 { \fatText s4^\markup { \hspace #20 }
+ << d,1 { \textLengthOn s4^\markup { \hspace #20 }
s4^\markup { \hspace #1 } s4 }
>>
}
-\version "2.10.0"
+\version "2.11.38"
#(set-global-staff-size 16)
-\version "2.10.0"
+\version "2.11.38"
\header {
title = "Romanzen"
%}
-\version "2.10.0"
+\version "2.11.38"
\include "mozart-hrn3-defs.ily"
\include "mozart-hrn3-allegro.ily"
-\version "2.11.11"
+\version "2.11.38"
\header
{
-\version "2.10.0"
+\version "2.11.38"
\header {
title = "Puer natus est nobis"
subtitle = "Antiphona ad introitum VII"
-\version "2.10.0"
+\version "2.11.38"
\header{
texidoc="
}
\relative c'' \context Staff {
- \emptyText
+ \textLengthOff
\repeat volta 2 { \time 4/4 c4^"cuivre"_\fermata }
\alternative {
{
\header {
texidoc=" Auto change piano staff switches voices between up
-and down staves automatically rests are switched along with the coming
+and down staves automatically; rests are switched along with the coming
note. When central C is reached, staff is not yet switched (by default).
"
texidoc = "Excercise all output functions"
}
-\version "2.10.0"
+\version "2.11.38"
\paper { ragged-right = ##t }
\override Glissando #'style = #'zigzag
\slurDashed
f2( \glissando f')
- \setEasyHeads
+ \easyHeadsOn
f e
}
>>
\header {
-texidoc="Bar number may be set and their padding adjusted individually.
+texidoc="Bar numbers may be set and their padding adjusted individually.
The counting of bar numbers is started after the anacrusis.
To prevent clashes at the beginning of a line, the padding may have to
texidoc="
Beams should behave reasonably well, even under extreme circumstances.
Stems may be short, but noteheads should never touch the beam. Note that
-under normal circumstances, these beams would get knees here
+under normal circumstances, these beams would get knees. Here
@code{Beam.auto-knee-gap} was set to false.
"
}
\version "2.10.0"
\header {
- texidoc = "In french style beaming, the stems do not go between beams."
+ texidoc = "In French style beaming, the stems do not go between beams."
}
\layout { ragged-right= ##t }
\header{
texidoc=" Beams on ledgered notes should always reach the middle staff
-line. The second beam counting from the note head side, should never
+line. The second beam, counting from the note head side, should never
be lower than the second staff line. This does not hold for grace
note beams. Override with @code{no-stem-extend}. "
-\version "2.10.0"
+\version "2.11.38"
\header{
texidoc="
}
\relative c'' \context Voice {
- \emptyText
+ \textLengthOff
c1 \noBreak c1 \noBreak \mark "nobreak" c1 \noBreak
c1 \break \mark "break" c1 \break \mark "break" c1
}
-\version "2.10.0"
+\version "2.11.38"
\header{
{
- \fatText
+ \textLengthOn
\clef "treble" c'1^"treble" \bar "||"
\clef "french"c'1^"french" \bar "||"
\clef "soprano"c'1^"soprano" \bar "||"
\version "2.10.0"
\header {
- texidoc = "If collision resolution finds dotted note head must
- remain on left hand side, move dots to the right."
+ texidoc = "If dotted note heads must remain on the left side,
+collision resolution moves the dots to the right."
}
\version "2.10.0" \header{
- texidoc=" Noteheads can have dots, and rests too.
+ texidoc=" Both noteheads and rests can have dots.
Augmentation dots should never be printed on a staff line,
but rather be shifted vertically. They should go up, but in case of
multiple parts, the down stems have down shifted dots. In case of
-\version "2.10.0"
+\version "2.11.38"
\header {
texidoc = " Easy-notation (or Ez-notation) prints names in note heads.
}
\relative {
- \setEasyHeads
+ \easyHeadsOn
f1 e
f2 e
f4 e
\version "2.10.0"
-\header { texidoc = "Each clef have own accidental placing rules. " }
+\header { texidoc = "Each clef has its own accidental placing
+rules. "}
#(set-global-staff-size 16)
\version "2.10.0"
#(set-default-paper-size "a6" 'landscape)
+\header { texidoc = " Scores may be printed in landcape mode."}
+
pattern = \relative { a b c d \break }
--- /dev/null
+\header {
+ texidoc = "The ligature bracket right-end is not affected by other voices."
+}
+
+\version "2.11.38"
+<<
+ \new Staff {\[b2 b\] | \[b b\] }
+ \new Staff {b2 b | b4 b b b }
+>>
\version "2.10.0"
\header {
-
texidoc = "With the @code{\\lyricsto} mechanism, individual lyric
- lines can be associated with one melody line. For each lyric line,
- can be tuned whether to follow melismata or not."
-
+ lines can be associated with one melody line. Each lyric line
+can be tuned to either follow or ignore melismata."
}
\header {
texidoc = "Switching the melody to a different voice works even
-the switch occurs together with context instantiation."
+if the switch occurs together with context instantiation."
}
-\version "2.10.0"
+\version "2.11.38"
\header{
automaticMelismas (which will set melismas during slurs and ties). If
you want a different order than first Music, then Lyrics, you must
precook a chord of staves/lyrics and label those. Of course, the
-lyrics ignores any other rhythms in the piece."
+lyrics ignore any other rhythms in the piece."
}
m = \relative c'' {
\autoBeamOff
g8( a) r8 \times 2/3 { g'8( f e) } r8 \grace { d16[ c b] } e4
- \emptyText
+ \textLengthOff
d8.^"melisma" \melisma c16
\melismaEnd
b
<<
\context Staff { c' (c') c'( c') }
- \context Lyrics \lyricmode { bla -- alb xxx -- yyy }
+ \context Lyrics \lyricmode {
+ \override Lyrics . LyricSpace #'minimum-distance = #5.0
+ a -- b x -- y
+ }
>>
ragged-right = ##t
}
-\version "2.10.7"
+\version "2.11.38"
<<
\new Staff \relative c' {
\key aes \major
\context Voice = "1" {
f8 f
- \emptyText
+ \textLengthOff
f^"xxxxxxxxxxxxxxxxxxxxxxxxxx" f
}
-\version "2.11.5"
+\version "2.11.38"
{
- \fatText
+ \textLengthOn
f'1-\markup {
foo
\raise #0.2 \hbracket \bold bar
-
-\version "2.10.0"
-
\version "2.10.1"
+\header {
+ texidoc = "Midi can create drums."
+}
\score {
\new DrumStaff <<
<?xml version="1.0"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
- <work> <work-title>/home/reinhold/lilypond-dev-files/07_nokey.xml</work-title></work>
- <identification>
- <rights>Unknown</rights>
- <encoding>
- <software>Rosegarden-4</software>
- </encoding>
- </identification>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise version="2.0">
+ <work><work-title>No key or clef given</work-title></work>
+ <identification/>
<part-list>
<score-part id="0">
- <part-name>NoClef Test</part-name>
- <score-instrument id="#1">
- <instrument-name>0</instrument-name>
- </score-instrument>
- <midi-instrument id="#1">
- <midi-channel>1</midi-channel>
- <midi-program>1</midi-program>
- </midi-instrument>
+ <part-name></part-name>
</score-part>
</part-list>
<part id="0">
<measure number="1">
<attributes>
- <divisions>960</divisions>
+ <divisions>1</divisions>
<time>
<beats>4</beats>
<beat-type>4</beat-type>
<step>C</step>
<octave>4</octave>
</pitch>
- <duration>3840</duration>
+ <duration>4</duration>
<voice>1</voice>
<type>whole</type>
</note>
</measure>
-
<measure number="2">
<note>
<pitch>
<step>C</step>
<octave>4</octave>
</pitch>
- <duration>3840</duration>
+ <duration>4</duration>
<voice>1</voice>
<type>whole</type>
</note>
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6b Partwise//EN"
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"
"http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
- <identification>
- <encoding>
- <software>/usr/bin/vi</software>
- <encoding-date>2007-01-22</encoding-date>
- </encoding>
- </identification>
+<score-partwise version="2.0">
+ <work><work-title>No time signature given</work-title></work>
+ <identification/>
<part-list>
<score-part id="P1">
- <part-name>MIDI Track 1</part-name>
+ <part-name></part-name>
</score-part>
</part-list>
<part id="P1">
<measure number="1">
<attributes>
- <divisions>96</divisions>
+ <divisions>1</divisions>
<key><fifths>0</fifths></key>
<staves>2</staves>
<clef number="1"><sign>G</sign><line>2</line></clef>
</attributes>
<note>
<pitch><step>F</step><octave>4</octave></pitch>
- <duration>384</duration>
+ <duration>4</duration>
<voice>1</voice>
<type>whole</type>
<staff>1</staff>
<backup><duration>384</duration></backup>
<note>
<pitch><step>B</step><octave>2</octave></pitch>
- <duration>384</duration>
+ <duration>4</duration>
<voice>2</voice>
<type>whole</type>
<staff>2</staff>
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6b Partwise//EN"
"http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise>
- <identification>
- <encoding>
- <software>/usr/bin/vi</software>
- <encoding-date>2007-02-02</encoding-date>
- </encoding>
- </identification>
+ <work><work-title>A tie</work-title></work>
+ <identification/>
<part-list>
- <score-part id="P1"><part-name>MIDI Track 1</part-name></score-part>
+ <score-part id="P1"><part-name></part-name></score-part>
</part-list>
<part id="P1">
<measure number="1">
<attributes>
- <divisions>96</divisions>
+ <divisions>1</divisions>
<key><fifths>0</fifths></key>
<time><beats>4</beats><beat-type>4</beat-type></time>
<staves>1</staves>
</attributes>
<note>
<pitch><step>F</step><octave>4</octave></pitch>
- <duration>384</duration>
+ <duration>4</duration>
<tie type="start"/>
<voice>1</voice>
<type>whole</type>
<measure number="2">
<note release="-684">
<pitch><step>F</step><octave>4</octave></pitch>
- <duration>384</duration>
+ <duration>4</duration>
<tie type="stop"/>
<voice>1</voice>
<type>whole</type>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"\r
- "http://www.musicxml.org/dtds/partwise.dtd">\r
-<score-partwise>\r
- <movement-title>Articulations Test</movement-title>\r
- <identification>\r
- <creator type="composer">Reinhold Kainhofer</creator>\r
- <rights>Public Domain</rights>\r
- <encoding>\r
- <software>Finale 2007 for Windows</software>\r
- <software>Dolet Light for Finale 2007</software>\r
- <encoding-date>2007-08-31</encoding-date>\r
- </encoding>\r
- </identification>\r
- <part-list>\r
- <score-part id="P1">\r
- <part-name>MusicXML Part</part-name>\r
- <score-instrument id="P1-I1">\r
- <instrument-name>Grand Piano</instrument-name>\r
- </score-instrument>\r
- <midi-instrument id="P1-I1">\r
- <midi-channel>1</midi-channel>\r
- <midi-program>1</midi-program>\r
- </midi-instrument>\r
- </score-part>\r
- </part-list>\r
- <!--=========================================================-->\r
- <part id="P1">\r
- <measure number="1">\r
- <attributes>\r
- <divisions>1</divisions>\r
- <key>\r
- <fifths>0</fifths>\r
- <mode>major</mode>\r
- </key>\r
- <time symbol="common">\r
- <beats>4</beats>\r
- <beat-type>4</beat-type>\r
- </time>\r
- <clef>\r
- <sign>G</sign>\r
- <line>2</line>\r
- </clef>\r
- </attributes>\r
- <sound tempo="120"/>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <accent placement="below"/>\r
- <staccato placement="below"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <staccatissimo placement="below"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <accent placement="below"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <accent placement="below"/>\r
- <staccato placement="below"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="2">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <strong-accent placement="above" type="up"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <strong-accent placement="above" type="up"/>\r
- <staccato placement="above"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <tenuto placement="below"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <detached-legato placement="below"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="3">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <accent placement="below"/>\r
- <tenuto placement="below"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <fermata type="upright"/>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <ornaments>\r
- <trill-mark placement="above"/>\r
- </ornaments>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="4">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <ornaments>\r
- <wavy-line placement="below" relative-x="6" type="start"/>\r
- <wavy-line placement="below" relative-x="16" type="stop"/>\r
- </ornaments>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <ornaments>\r
- <wavy-line placement="above" type="start"/>\r
- <wavy-line placement="above" relative-x="15" type="stop"/>\r
- <inverted-mordent placement="below"/>\r
- </ornaments>\r
- </notations>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="5">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <ornaments>\r
- <mordent placement="below"/>\r
- </ornaments>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <ornaments>\r
- <turn placement="above"/>\r
- </ornaments>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <up-bow placement="above"/>\r
- </technical>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <down-bow placement="above"/>\r
- </technical>\r
- </notations>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="6">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <harmonic placement="below"/>\r
- </technical>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <harmonic placement="below"/>\r
- </technical>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <stopped placement="below"/>\r
- </technical>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <fingering placement="above">1</fingering>\r
- </technical>\r
- </notations>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="7">\r
- <print new-system="yes"/>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <fingering placement="above">2</fingering>\r
- </technical>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <fingering placement="above">3</fingering>\r
- </technical>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <fingering placement="above">4</fingering>\r
- </technical>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <technical>\r
- <fingering placement="above">5</fingering>\r
- </technical>\r
- </notations>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="8">\r
- <direction placement="below">\r
- <direction-type>\r
- <pedal line="no" relative-x="-9" type="start"/>\r
- </direction-type>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <pedal line="no" type="stop"/>\r
- </direction-type>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <arpeggiate/>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <ornaments/>\r
- </notations>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="9">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <ornaments/>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <ornaments/>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <caesura relative-x="21"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <breath-mark placement="above" relative-x="18"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="10">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <words relative-x="-7">(</words>\r
- </direction-type>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <words relative-x="15">)</words>\r
- </direction-type>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="11">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <staccato placement="above"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <accent placement="above"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <accent placement="above"/>\r
- <staccato placement="above"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <accent placement="above"/>\r
- <tenuto placement="above"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="12">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="13">\r
- <print new-system="yes"/>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="14">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="15">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="16">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <articulations>\r
- <accent placement="below"/>\r
- </articulations>\r
- </notations>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="17">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>1</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="18">\r
- <note>\r
- <rest/>\r
- <duration>4</duration>\r
- <voice>1</voice>\r
- </note>\r
- <barline location="right">\r
- <bar-style>light-heavy</bar-style>\r
- </barline>\r
- </measure>\r
- </part>\r
- <!--=========================================================-->\r
-</score-partwise>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"
+ "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise version="2.0">
+ <movement-title>MusicXML notations (attached to note)</movement-title>
+ <identification/>
+ <part-list>
+ <score-part id="P1">
+ <part-name></part-name>
+ </score-part>
+ </part-list>
+ <!--=========================================================-->
+ <part id="P1">
+ <!-- General Notation elements (no spanners, which are tested separately):
+ fermata | arpeggiate | non-arpeggiate | accidental-mark -->
+ <measure number="1">
+ <attributes>
+ <divisions>1</divisions>
+ <key>
+ <fifths>0</fifths>
+ <mode>major</mode>
+ </key>
+ <clef>
+ <sign>G</sign>
+ <line>2</line>
+ </clef>
+ </attributes>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <fermata type="upright"/>
+ </notations>
+ <lyric number="1"><text>ferm.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <fermata>normal</fermata>
+ </notations>
+ <lyric number="1"><text>normal ferm.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <fermata>angled</fermata>
+ </notations>
+ <lyric number="1"><text>angled ferm.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <fermata>square</fermata>
+ </notations>
+ <lyric number="1"><text>square ferm.</text></lyric>
+ </note>
+ </measure>
+ <measure number="2">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <fermata type="inverted"/>
+ </notations>
+ <lyric number="1"><text>inv.ferm.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ <lyric number="1"><text>arp.</text></lyric>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>E</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>G</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><non-arpeggiate type="bottom"/></notations>
+ <lyric number="1"><text>non-arp.</text></lyric>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>E</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>G</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><non-arpeggiate type="top"/></notations>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <accidental-mark placement="above">double-sharp</accidental-mark>
+ </notations>
+ <lyric number="1"><text>acc.mark</text></lyric>
+ </note>
+ <barline location="right">
+ <bar-style>light-light</bar-style>
+ </barline>
+ </measure>
+
+ <!-- Articulations:
+ accent | strong-accent | staccato | tenuto |
+ detached-legato | staccatissimo | spiccato |
+ scoop | plop | doit | falloff | breath-mark |
+ caesura | stress | unstress | other-articulation -->
+ <measure number="3">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><accent/></articulations>
+ </notations>
+ <lyric number="1"><text>acc.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><strong-accent/></articulations>
+ </notations>
+ <lyric number="1"><text>str.-acc.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><staccato/></articulations>
+ </notations>
+ <lyric number="1"><text>stacc.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><tenuto/></articulations>
+ </notations>
+ <lyric number="1"><text>ten.</text></lyric>
+ </note>
+ </measure>
+ <measure number="4">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><detached-legato/></articulations>
+ </notations>
+ <lyric number="1"><text>det.-leg.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><staccatissimo/></articulations>
+ </notations>
+ <lyric number="1"><text>stacc.ss</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><spiccato/></articulations>
+ </notations>
+ <lyric number="1"><text>spicc.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><scoop/></articulations>
+ </notations>
+ <lyric number="1"><text>scoop</text></lyric>
+ </note>
+ </measure>
+ <measure number="5">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><plop/></articulations>
+ </notations>
+ <lyric number="1"><text>plop</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><doit/></articulations>
+ </notations>
+ <lyric number="1"><text>doit</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><falloff/></articulations>
+ </notations>
+ <lyric number="1"><text>falloff</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><breath-mark/></articulations>
+ </notations>
+ <lyric number="1"><text>breath</text></lyric>
+ </note>
+ </measure>
+ <measure number="6">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><caesura/></articulations>
+ </notations>
+ <lyric number="1"><text>caes.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><stress/></articulations>
+ </notations>
+ <lyric number="1"><text>stress</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations><unstress/></articulations>
+ </notations>
+ <lyric number="1"><text>unstr.</text></lyric>
+ </note>
+ <note>
+ <rest/>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ </note>
+ <barline location="right">
+ <bar-style>light-light</bar-style>
+ </barline>
+ </measure>
+
+ <!-- Ornaments:
+ trill-mark | turn | delayed-turn | inverted-turn |
+ shake | wavy-line | mordent | inverted-mordent |
+ schleifer | tremolo | other-ornament),
+ accidental-mark
+
+ Test cases for various tremolo options are in a separate
+ unit test file
+ -->
+ <measure number="7">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments><trill-mark/></ornaments>
+ </notations>
+ <lyric number="1"><text>tr.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments><turn/></ornaments>
+ </notations>
+ <lyric number="1"><text>turn</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments><delayed-turn/></ornaments>
+ </notations>
+ <lyric number="1"><text>del.turn</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments><inverted-turn/></ornaments>
+ </notations>
+ <lyric number="1"><text>inv.turn</text></lyric>
+ </note>
+ </measure>
+ <measure number="8">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments><shake/></ornaments>
+ </notations>
+ <lyric number="1"><text>shake</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments>
+ <wavy-line placement="below" type="start"/>
+ </ornaments>
+ </notations>
+ <lyric number="1"><syllabic>begin</syllabic><text>wavy</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments>
+ <wavy-line placement="below" type="stop"/>
+ <wavy-line placement="below" type="start"/>
+ </ornaments>
+ </notations>
+ <lyric number="1"><syllabic>continue</syllabic><text>wavy</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments>
+ <wavy-line placement="below" relative-x="16" type="stop"/>
+ </ornaments>
+ </notations>
+ <lyric number="1"><syllabic>end</syllabic><text>line</text></lyric>
+ </note>
+ </measure>
+ <measure number="9">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments><mordent/></ornaments>
+ </notations>
+ <lyric number="1"><text>mord.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments><inverted-mordent/></ornaments>
+ </notations>
+ <lyric number="1"><text>inv.mord.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments><schleifer/></ornaments>
+ </notations>
+ <lyric number="1"><text>schl.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments><tremolo/></ornaments>
+ </notations>
+ <lyric number="1"><text>trem.</text></lyric>
+ </note>
+ </measure>
+ <measure number="10">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments>
+ <turn/>
+ <accidental-mark>natural</accidental-mark>
+ </ornaments>
+ </notations>
+ <lyric number="1"><text>turn+acc.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <ornaments>
+ <turn/>
+ <accidental-mark placement="above">sharp</accidental-mark>
+ <accidental-mark placement="above">three-quarters-flat</accidental-mark>
+ </ornaments>
+ </notations>
+ <lyric number="1"><text>turn+acc.(ab.+bel./rel to turn)</text></lyric>
+ </note>
+ <note>
+ <rest/>
+ <duration>2</duration>
+ <voice>1</voice>
+ <type>half</type>
+ </note>
+ <barline location="right">
+ <bar-style>light-light</bar-style>
+ </barline>
+ </measure>
+
+ <!-- Technical:
+ up-bow | down-bow | harmonic | open-string |
+ thumb-position | fingering | pluck | double-tongue |
+ triple-tongue | stopped | snap-pizzicato | fret |
+ string | hammer-on | pull-off | bend | tap | heel |
+ toe | fingernails | other-technical -->
+ <measure number="11">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><up-bow/></technical>
+ </notations>
+ <lyric number="1"><text>up-b.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><down-bow/></technical>
+ </notations>
+ <lyric number="1"><text>down-b.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><harmonic/></technical>
+ </notations>
+ <lyric number="1"><text>harm.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><harmonic><natural/></harmonic></technical>
+ </notations>
+ <lyric number="1"><text>nat.harm.</text></lyric>
+ </note>
+ </measure>
+ <measure number="12">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><harmonic><artificial/></harmonic></technical>
+ </notations>
+ <lyric number="1"><text>art.harm.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><harmonic><natural/><base-pitch/></harmonic></technical>
+ </notations>
+ <lyric number="1"><text>nat.h./base</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><harmonic><natural/><touching-pitch/></harmonic></technical>
+ </notations>
+ <lyric number="1"><text>nat.h./touching</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><harmonic><natural/><sounding-pitch/></harmonic></technical>
+ </notations>
+ <lyric number="1"><text>nat.h./sounding</text></lyric>
+ </note>
+ </measure>
+ <measure number="13">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><open-string/></technical>
+ </notations>
+ <lyric number="1"><text>open-str.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><thumb-position/></technical>
+ </notations>
+ <lyric number="1"><text>thumb-pos.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fingering/></technical>
+ </notations>
+ <lyric number="1"><text>empty fing.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fingering>1</fingering></technical>
+ </notations>
+ <lyric number="1"><text>fing.1</text></lyric>
+ </note>
+ </measure>
+ <measure number="14">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fingering>2</fingering></technical>
+ </notations>
+ <lyric number="1"><text>fing.2</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fingering>3</fingering></technical>
+ </notations>
+ <lyric number="1"><text>fing.3</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fingering>4</fingering></technical>
+ </notations>
+ <lyric number="1"><text>fing.4</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fingering>5</fingering></technical>
+ </notations>
+ <lyric number="1"><text>fing.5</text></lyric>
+ </note>
+ </measure>
+ <measure number="15">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fingering>something</fingering></technical>
+ </notations>
+ <lyric number="1"><text>fing.sth.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fingering>5</fingering><fingering substitution="yes">3</fingering><fingering alternate="yes">2</fingering></technical>
+ </notations>
+ <lyric number="1"><text>mult.fing.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><pluck/></technical>
+ </notations>
+ <lyric number="1"><text>empty pluck</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><pluck>a</pluck></technical>
+ </notations>
+ <lyric number="1"><text>pluck a</text></lyric>
+ </note>
+ </measure>
+ <measure number="16">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><double-tongue/></technical>
+ </notations>
+ <lyric number="1"><text>dbl.tng.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><triple-tongue/></technical>
+ </notations>
+ <lyric number="1"><text>trpl.tng.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><stopped/></technical>
+ </notations>
+ <lyric number="1"><text>stopped</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><snap-pizzicato/></technical>
+ </notations>
+ <lyric number="1"><text>snp.pizz.</text></lyric>
+ </note>
+ </measure>
+ <measure number="17">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fret/></technical>
+ </notations>
+ <lyric number="1"><text>empty fret</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fret>0</fret></technical>
+ </notations>
+ <lyric number="1"><text>fret0</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><string/></technical>
+ </notations>
+ <lyric number="1"><text>empty str.</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical>
+ <string>5</string>
+ </technical>
+ </notations>
+ <lyric number="1"><text>str. 5</text></lyric>
+ </note>
+ </measure>
+ <measure number="18">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical>
+ <hammer-on type="start"/>
+ </technical>
+ </notations>
+ <lyric number="1"><syllabic>begin</syllabic><text>hammer</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical>
+ <hammer-on type="stop"/>
+ </technical>
+ </notations>
+ <lyric number="1"><syllabic>end</syllabic><text>on</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical>
+ <pull-off type="start"/>
+ </technical>
+ </notations>
+ <lyric number="1"><syllabic>begin</syllabic><text>pull</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical>
+ <pull-off type="stop"/>
+ </technical>
+ </notations>
+ <lyric number="1"><syllabic>end</syllabic><text>off</text></lyric>
+ </note>
+ </measure>
+ <measure number="19">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical>
+ <bend><bend-alter>4</bend-alter></bend>
+ </technical>
+ </notations>
+ <lyric number="1"><text>bend</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical>
+ <bend><bend-alter>3</bend-alter><release/><with-bar/></bend>
+ </technical>
+ </notations>
+ <lyric number="1"><text>bend 3 with-bar</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical>
+ <bend><bend-alter>-5</bend-alter><pre-bend/></bend>
+ </technical>
+ </notations>
+ <lyric number="1"><text>pre-bend -(0.)5</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical>
+ <bend><bend-alter>5</bend-alter><release/></bend>
+ </technical>
+ </notations>
+ <lyric number="1"><text>bend release (3.)5</text></lyric>
+ </note>
+ </measure>
+ <measure number="20">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><tap/></technical>
+ </notations>
+ <lyric number="1"><text>tap</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><tap>T</tap></technical>
+ </notations>
+ <lyric number="1"><text>tap T</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><heel/></technical>
+ </notations>
+ <lyric number="1"><text>heel</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><toe substitution="yes"/></technical>
+ </notations>
+ <lyric number="1"><text>toe</text></lyric>
+ </note>
+ </measure>
+ <measure number="21">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <technical><fingernails/></technical>
+ </notations>
+ <lyric number="1"><text>fingern.</text></lyric>
+ </note>
+ <note>
+ <rest/>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ </note>
+ <note>
+ <rest/>
+ <duration>2</duration>
+ <voice>1</voice>
+ <type>half</type>
+ </note>
+ <barline location="right">
+ <bar-style>light-light</bar-style>
+ </barline>
+ </measure>
+
+ <!-- Dynamics, attached to notes by putting them inside <notations> tags -->
+ <measure number="22">
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <dynamics><f/></dynamics>
+ </notations>
+ <lyric number="1"><text>f</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <dynamics><ppp/></dynamics>
+ </notations>
+ <lyric number="1"><text>ppp</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <dynamics><sfp/></dynamics>
+ </notations>
+ <lyric number="1"><text>sfp</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <dynamics><other-dynamics>sfffz</other-dynamics></dynamics>
+ </notations>
+ <lyric number="1"><text>Oth.dyn.</text></lyric>
+ </note>
+ </measure>
+
+ <!-- General tests: multiple notations, directions, etc. -->
+ <measure number="23">
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations>
+ <strong-accent placement="above" type="up"/>
+ <staccato placement="above"/>
+ </articulations>
+ </notations>
+ <lyric number="1"><text>both above</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations>
+ <articulations>
+ <accent placement="below"/>
+ <tenuto placement="below"/>
+ <staccato placement="above"/>
+ </articulations>
+ </notations>
+ <lyric number="1"><text>ab./bel./bel.</text></lyric>
+ </note>
+ <note>
+ <rest/>
+ <duration>2</duration>
+ <voice>1</voice>
+ <type>half</type>
+ </note>
+ <barline location="right">
+ <bar-style>light-heavy</bar-style>
+ </barline>
+ </measure>
+
+ </part>
+</score-partwise>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6b Partwise//EN"
+ "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise>
+ <identification>
+ <encoding>
+ <software>/usr/bin/vi</software>
+ <encoding-date>2007-02-01</encoding-date>
+ </encoding>
+ </identification>
+ <part-list>
+ <score-part id="P1"><part-name></part-name></score-part>
+ </part-list>
+ <part id="P1">
+ <measure number="1">
+ <attributes>
+ <divisions>96</divisions>
+ <key><fifths>0</fifths></key>
+ <time><beats>4</beats><beat-type>4</beat-type></time>
+ <staves>1</staves>
+ <clef number="1"><sign>G</sign><line>2</line></clef>
+ </attributes>
+ <direction placement="above">
+ <direction-type>
+ <words default-x="-1" default-y="15" font-size="medium" font-weight="normal">
+ Normal, Medium
+ </words>
+ </direction-type>
+ <staff>1</staff>
+ </direction>
+ <note>
+ <pitch><step>F</step><octave>4</octave></pitch>
+ <duration>384</duration>
+ <voice>1</voice>
+ <type>eighth</type>
+ <staff>1</staff>
+ </note>
+ <direction placement="below">
+ <direction-type>
+ <words default-x="1" default-y="15" justify="left" font-size="medium" font-weight="bold">
+ Bold, Medium
+ </words>
+ </direction-type>
+ <staff>1</staff>
+ </direction>
+ </measure>
+ <measure number="2">
+ <direction placement="above">
+ <direction-type>
+ <words default-x="1" default-y="15" font-size="large" font-weight="normal">
+ Normal, Large
+ </words>
+ </direction-type>
+ <staff>1</staff>
+ </direction>
+ <note>
+ <pitch><step>G</step><octave>4</octave></pitch>
+ <duration>384</duration>
+ <voice>1</voice>
+ <type>whole</type>
+ <staff>1</staff>
+ </note>
+ <direction placement="below">
+ <direction-type>
+ <words default-x="1" default-y="15" font-size="large" font-weight="bold">
+ Bold, Large
+ </words>
+ </direction-type>
+ <staff>1</staff>
+ </direction>
+ </measure>
+ <measure number="3">
+ <direction placement="above">
+ <direction-type>
+ <words default-x="1" default-y="15" font-size="small" font-weight="normal">
+ Normal, Small
+ </words>
+ </direction-type>
+ <staff>1</staff>
+ </direction>
+ <note>
+ <pitch><step>F</step><octave>4</octave></pitch>
+ <duration>384</duration>
+ <voice>1</voice>
+ <type>whole</type>
+ <staff>1</staff>
+ </note>
+ <direction placement="below">
+ <direction-type>
+ <words default-x="1" default-y="15" font-size="small" font-weight="bold">
+ Bold, Small
+ </words>
+ </direction-type>
+ <staff>1</staff>
+ </direction>
+ <direction placement="below">
+ <direction-type>
+ <words default-x="1" default-y="-15" font-size="small" color="#FF8000">
+ Normal, Small, Colored, Below
+ </words>
+ </direction-type>
+ <staff>1</staff>
+ </direction>
+ </measure>
+ </part>
+</score-partwise>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE score-partwise PUBLIC
- "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
- "http://www.musicxml.org/dtds/partwise.dtd">
-
-<score-partwise>
- <work>
- </work>
-
- <identification>
- <encoding>
- <software>NoteEdit</software>
- </encoding>
- </identification>
-
- <part-list>
- <score-part id="P1">
- <part-name>Staff 1</part-name>
- <score-instrument id="P1-I1">
- <instrument-name>Klavier 1</instrument-name>
- </score-instrument>
- <midi-instrument id="P1-I1">
- <midi-channel>1</midi-channel>
- <midi-program>1</midi-program>
- </midi-instrument>
- </score-part>
- </part-list>
-
- <part id="P1">
- <measure number="1">
- <attributes>
- <divisions>2</divisions>
- <key>
- <fifths>-1</fifths>
- </key>
- <time>
- <beats>4</beats>
- <beat-type>4</beat-type>
- </time>
- <clef>
- <sign>G</sign>
- <line>2</line>
- </clef>
- </attributes>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <staccato/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <strong-accent/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <tenuto/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <staccatissimo/>
- </articulations>
- </notations>
- </note>
- </measure>
- <measure number="2">
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <accent/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <fermata type="upright"/>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>3</duration>
- <voice>1</voice>
- <type>quarter</type>
- <dot/>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>eighth</type>
- <stem>up</stem>
- </note>
- </measure>
- <measure number="3">
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <barline location="right">
- <bar-style>light-heavy</bar-style>
- <repeat direction="backward"/>
- </barline>
- </measure>
- </part>
-</score-partwise>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
+ "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise>
+ <movement-title>Multiple notation and articulation children</movement-title>
+ <identification>
+ <rights>Public Domain</rights>
+ <encoding>
+ <software>Hand-crafted MusicXML</software>
+ </encoding>
+ <miscellaneous>
+ <miscellaneous-field name="comment">
+ It should not make any difference whether two articulations are given
+ inside to different notation elements, inside two different articulations
+ children of the same notation element or inside the same articulations
+ element. Thus, all three notes should have a staccato and an accent.
+ </miscellaneous-field>
+ </miscellaneous>
+ </identification>
+ <part-list>
+ <score-part id="P1">
+ <part-name>MusicXML Part</part-name>
+ </score-part>
+ </part-list>
+ <!--=========================================================-->
+ <part id="P1">
+ <measure number="1">
+ <attributes>
+ <divisions>4</divisions>
+ <clef>
+ <sign>G</sign>
+ <line>2</line>
+ </clef>
+ <key>
+ <fifths>0</fifths>
+ </key>
+ <time>
+ <beats>3</beats>
+ <beat-type>4</beat-type>
+ </time>
+ </attributes>
+ <note>
+ <pitch>
+ <step>A</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>4</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <accidental>sharp</accidental>
+ <stem>down</stem>
+ <notations>
+ <articulations>
+ <staccato placement="above"/>
+ </articulations>
+ </notations>
+ <notations>
+ <articulations>
+ <accent placement="above"/>
+ </articulations>
+ </notations>
+ </note>
+ <note>
+ <pitch>
+ <step>A</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>4</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <accidental>sharp</accidental>
+ <stem>down</stem>
+ <notations>
+ <articulations>
+ <staccato placement="above"/>
+ </articulations>
+ <articulations>
+ <accent placement="above"/>
+ </articulations>
+ </notations>
+ </note>
+ <note>
+ <pitch>
+ <step>A</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>4</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <accidental>sharp</accidental>
+ <stem>down</stem>
+ <notations>
+ <articulations>
+ <staccato placement="above"/>
+ <accent placement="above"/>
+ </articulations>
+ </notations>
+ </note>
+ </measure>
+ </part>
+</score-partwise>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"
+ "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise version="2.0">
+ <movement-title>Arpeggios in MusicXML</movement-title>
+ <identification/>
+ <defaults/>
+ <part-list>
+ <score-part id="P1">
+ <part-name></part-name>
+ </score-part>
+ </part-list>
+ <!--=========================================================-->
+ <part id="P1">
+ <!-- Different Arpeggiate styles: neutral, up, down and non-arpeggiate (bracket) -->
+ <measure number="1">
+ <attributes>
+ <divisions>1</divisions>
+ <key>
+ <fifths>0</fifths>
+ <mode>major</mode>
+ </key>
+ <clef>
+ <sign>G</sign>
+ <line>2</line>
+ </clef>
+ </attributes>
+ <note>
+ <pitch>
+ <step>C</step><octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ <lyric number="1"><text>normal</text></lyric>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>E</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>G</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate direction="up"/></notations>
+ <lyric number="1"><text>up</text></lyric>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>E</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate direction="up"/></notations>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>G</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate direction="up"/></notations>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ <lyric number="1"><text>normal</text></lyric>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>E</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>G</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate direction="down"/></notations>
+ <lyric number="1"><text>down</text></lyric>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>E</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate direction="down"/></notations>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>G</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate direction="down"/></notations>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ <lyric number="1"><text>normal</text></lyric>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>E</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>G</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><non-arpeggiate type="bottom"/></notations>
+ <lyric number="1"><text>non-arp.</text></lyric>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>E</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>G</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><non-arpeggiate type="top"/></notations>
+ </note>
+ <note>
+ <pitch>
+ <step>C</step><octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ <lyric number="1"><text>normal</text></lyric>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>E</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <note>
+ <chord/>
+ <pitch>
+ <step>G</step><octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <notations><arpeggiate/></notations>
+ </note>
+ <barline location="right">
+ <bar-style>light-heavy</bar-style>
+ </barline>
+ </measure>
+ </part>
+</score-partwise>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE score-partwise PUBLIC
- "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
- "http://www.musicxml.org/dtds/partwise.dtd">
-
-<score-partwise>
- <work>
- <work-title>Irgendein Lied</work-title>
- </work>
-
- <identification>
- <creator type="composer">Rainer Zufall</creator>
- <rights>Public Domain, so that the whole world can savely forget about it...</rights>
- <encoding>
- <software>NoteEdit</software>
- </encoding>
- </identification>
-
- <part-list>
- <score-part id="P1">
- <part-name>Damen</part-name>
- <score-instrument id="P1-I1">
- <instrument-name>Klavier 1</instrument-name>
- </score-instrument>
- <midi-instrument id="P1-I1">
- <midi-channel>1</midi-channel>
- <midi-program>1</midi-program>
- </midi-instrument>
- </score-part>
- <score-part id="P2">
- <part-name>Herren</part-name>
- <score-instrument id="P2-I2">
- <instrument-name>Klavier 1</instrument-name>
- </score-instrument>
- <midi-instrument id="P2-I2">
- <midi-channel>2</midi-channel>
- <midi-program>1</midi-program>
- </midi-instrument>
- </score-part>
- </part-list>
-
- <part id="P1">
- <measure number="1">
- <attributes>
- <divisions>2</divisions>
- <key>
- <fifths>-1</fifths>
- </key>
- <time>
- <beats>4</beats>
- <beat-type>4</beat-type>
- </time>
- <clef>
- <sign>G</sign>
- <line>2</line>
- </clef>
- </attributes>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <staccato/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <strong-accent/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <tenuto/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <staccatissimo/>
- </articulations>
- </notations>
- </note>
- </measure>
- <measure number="2">
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <accent/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <fermata type="upright"/>
- </notations>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>3</duration>
- <voice>1</voice>
- <type>quarter</type>
- <dot/>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>eighth</type>
- <stem>up</stem>
- </note>
- </measure>
- <measure number="3">
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>2</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <barline location="right">
- <bar-style>light-heavy</bar-style>
- <repeat direction="backward"/>
- </barline>
- </measure>
- </part>
- <part id="P2">
- <measure number="1">
- <attributes>
- <divisions>2</divisions>
- <key>
- <fifths>-1</fifths>
- </key>
- <time>
- <beats>4</beats>
- <beat-type>4</beat-type>
- </time>
- <clef>
- <sign>F</sign>
- <line>4</line>
- </clef>
- </attributes>
- <note>
- <pitch>
- <step>D</step>
- <octave>3</octave>
- </pitch>
- <duration>8</duration>
- <voice>1</voice>
- <type>whole</type>
- <notations>
- <articulations>
- <staccato/>
- </articulations>
- </notations>
- </note>
- <backup>
- <duration>8</duration>
- </backup>
- </measure>
- <measure number="2">
- <note>
- <pitch>
- <step>D</step>
- <octave>3</octave>
- </pitch>
- <duration>8</duration>
- <voice>1</voice>
- <type>whole</type>
- <notations>
- <articulations>
- <staccato/>
- </articulations>
- </notations>
- </note>
- <backup>
- <duration>8</duration>
- </backup>
- </measure>
- <measure number="3">
- <note>
- <pitch>
- <step>D</step>
- <octave>3</octave>
- </pitch>
- <duration>8</duration>
- <voice>1</voice>
- <type>whole</type>
- <notations>
- <articulations>
- <staccato/>
- </articulations>
- </notations>
- </note>
- <backup>
- <duration>8</duration>
- </backup>
- <barline location="right">
- <bar-style>light-heavy</bar-style>
- <repeat direction="backward"/>
- </barline>
- </measure>
- </part>
-</score-partwise>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE score-partwise PUBLIC
-"-//Recordare//DTD MusicXML 1.0 Partwise//EN"
-"http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
-<work>
-<work-title>JScore Articulations Test</work-title>
-</work>
-<identification>
-<creator type="composer">Reinhold Kainhofer</creator>
-<encoding>
-<software>JMSL's MusicXMLWriter by Nick Didkovsky. Java Music Specification Language by Nick Didkovsky and Phil Burk, (c) 2003 Nick Didkovsky, Phil Burk. Available from: http://www.algomusic.com</software>
-</encoding>
-</identification>
-<part-list>
-<score-part id="P1" >
-<part-name>Voice 1</part-name>
-</score-part>
-</part-list>
-<part id="P1" >
-<measure number="1" >
-<attributes>
-<divisions>960</divisions>
-<key><fifths>0</fifths></key>
-<time><beats>4</beats><beat-type>4</beat-type></time>
-<clef><sign>G</sign><line>2</line></clef>
-</attributes>
-<direction placement="above">
-<direction-type>
-<metronome parentheses="yes" relative-y="18">
-<beat-unit>quarter</beat-unit>
-<per-minute>60</per-minute>
-</metronome>
-</direction-type>
-<offset>72</offset>
-<sound tempo="60" />
-</direction>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<articulations>
-<accent placement="below" />
-</articulations>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<articulations>
-<staccato placement="below" />
-</articulations>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<articulations>
-<tenuto placement="below" />
-</articulations>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<articulations>
-<strong-accent placement="below" />
-</articulations>
-</notations>
-</note>
-</measure>
-<measure number="2" >
-<attributes>
-<divisions>960</divisions>
-<key><fifths>0</fifths></key>
-<time><beats>4</beats><beat-type>4</beat-type></time>
-<clef><sign>G</sign><line>2</line></clef>
-</attributes>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<articulations>
-<accent placement="below" />
-<staccato placement="below" />
-</articulations>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<articulations>
-<accent placement="below" />
-<tenuto placement="below" />
-</articulations>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<articulations>
-<strong-accent placement="below" />
-<staccato placement="below" />
-</articulations>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<fermata type="upright" />
-</notations>
-</note>
-</measure>
-<measure number="3" >
-<attributes>
-<divisions>960</divisions>
-<key><fifths>0</fifths></key>
-<time><beats>4</beats><beat-type>4</beat-type></time>
-<clef><sign>G</sign><line>2</line></clef>
-</attributes>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<technical>
-<harmonic />
-</technical>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<ornaments>
-<trill-mark placement="above" />
-</ornaments>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<ornaments>
-<trill-mark placement="above" />
-</ornaments>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<ornaments>
-<trill-mark placement="above" />
-</ornaments>
-</notations>
-</note>
-</measure>
-<measure number="4" >
-<attributes>
-<divisions>960</divisions>
-<key><fifths>0</fifths></key>
-<time><beats>4</beats><beat-type>4</beat-type></time>
-<clef><sign>G</sign><line>2</line></clef>
-</attributes>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<ornaments>
-<trill-mark placement="above" />
-</ornaments>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<ornaments>
-<mordent placement="above" />
-</ornaments>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-<ornaments>
-<inverted-mordent placement="above" />
-</ornaments>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-</measure>
-</part>
-</score-partwise>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
- "http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
- <movement-title>Articulations Test</movement-title>
- <identification>
- <creator type="composer">Reinhold Kainhofer</creator>
- <rights>Public Domain</rights>
- <encoding>
- <software>Kate</software>
- </encoding>
- </identification>
- <part-list>
- <score-part id="P1">
- <part-name>Test part</part-name>
- </score-part>
- </part-list>
- <!--=========================================================-->
- <part id="P1">
- <measure number="1">
- <attributes>
- <divisions>1</divisions>
- <key>
- <fifths>0</fifths>
- <mode>major</mode>
- </key>
- <time symbol="common">
- <beats>12</beats>
- <beat-type>4</beat-type>
- </time>
- <clef>
- <sign>G</sign>
- <line>2</line>
- </clef>
- </attributes>
- <sound tempo="120"/>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <accent/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <ornaments>
- <turn/>
- <accidental-mark>sharp</accidental-mark>
- <accidental-mark>three-quarters-flat</accidental-mark>
- <accidental-mark>natural</accidental-mark>
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <bend><bend-alter>4</bend-alter></bend>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <breath-mark/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <caesura/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <ornaments>
- <delayed-turn/>
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <detached-legato/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <doit/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <double-tongue/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <down-bow/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <falloff/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <fingering/>
- </technical>
- </notations>
- </note>
- </measure>
- <!--=======================================================-->
- <measure number="2">
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <fingernails/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <fret/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <hammer-on type="start"/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <hammer-on type="stop"/>
- <harmonic/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <heel/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <ornaments>
- <inverted-mordent/>
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <ornaments>
- <!--inverted-turn/-->
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <ornaments>
- <mordent/>
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <open-string/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <plop/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <pluck/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <!--portato/-->
- </technical>
- </notations>
- </note>
- </measure>
- <!--=======================================================-->
- <measure number="3">
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <pull-off type="start"/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <pull-off type="stop"/>
- </technical>
- <ornaments>
- <schleifer/>
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <scoop/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <ornaments>
- <shake/>
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <snap-pizzicato/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <spiccato/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <staccatissimo/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <staccato/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <stopped/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <!--stress/-->
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <string>5</string>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <strong-accent/>
- </articulations>
- </notations>
- </note>
- </measure>
- <!--=======================================================-->
- <measure number="4">
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <tap/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <tenuto/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <thumb-position/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <toe/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <ornaments>
- <turn/>
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <ornaments>
- <tremolo>3</tremolo>
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <ornaments>
- <trill-mark/>
- </ornaments>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <triple-tongue/>
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <!--unstress/-->
- </technical>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <technical>
- <up-bow/>
- </technical>
- </notations>
- </note>
- <note>
- <rest/>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <rest/>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- </measure>
- <!--=======================================================-->
- </part>
- <!--=========================================================-->
-</score-partwise>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
- "http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
- <movement-title>Articulations Test</movement-title>
- <identification>
- <creator type="composer">Reinhold Kainhofer</creator>
- <rights>Public Domain</rights>
- <encoding>
- <software>Kate</software>
- </encoding>
- </identification>
- <part-list>
- <score-part id="P1">
- <part-name>Test part</part-name>
- </score-part>
- </part-list>
- <!--=========================================================-->
- <part id="P1">
- <measure number="1">
- <attributes>
- <divisions>1</divisions>
- <key>
- <fifths>0</fifths>
- <mode>major</mode>
- </key>
- <time symbol="common">
- <beats>12</beats>
- <beat-type>4</beat-type>
- </time>
- <clef>
- <sign>G</sign>
- <line>2</line>
- </clef>
- </attributes>
- <sound tempo="120"/>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <accent/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <accidental-mark/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <bend/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <breath-mark/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <caesura/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <delayed-turn/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <detached-legato/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <doit/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <double-tongue/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <down-bow/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <falloff/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <fingering/>
- </articulations>
- </notations>
- </note>
- </measure>
- <!--=======================================================-->
- <measure number="2">
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <fingernails/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <fret/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <hammer-on/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <harmonic/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <heel/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <inverted-mordent/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <inverted-turn/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <mordent/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <open-string/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <plop/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <pluck/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <portato/>
- </articulations>
- </notations>
- </note>
- </measure>
- <!--=======================================================-->
- <measure number="3">
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <pull-off/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <schleifer/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <scoop/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <shake/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <snap-pizzicato/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <spiccato/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <staccatissimo/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <staccato/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <stopped/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <stress/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <string/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <strong-accent/>
- </articulations>
- </notations>
- </note>
- </measure>
- <!--=======================================================-->
- <measure number="4">
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <tap/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <tenuto/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <thumb-position/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <toe/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <turn/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <tremolo/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <trill-mark/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <triple-tongue/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <unstress/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <up-bow/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- <notations>
- <articulations>
- <wavy-line/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>C</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- </measure>
- <!--=======================================================-->
- </part>
- <!--=========================================================-->
-</score-partwise>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
- "http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
- <movement-title>Multiple notation and articulation children</movement-title>
- <identification>
- <rights>Public Domain</rights>
- <encoding>
- <software>Hand-crafted MusicXML</software>
- </encoding>
- <miscellaneous>
- <miscellaneous-field name="comment">
- It should not make any difference whether two articulations are given
- inside to different notation elements, inside two different articulations
- children of the same notation element or inside the same articulations
- element. Thus, all three notes should have a staccato and an accent.
- </miscellaneous-field>
- </miscellaneous>
- </identification>
- <part-list>
- <score-part id="P1">
- <part-name>MusicXML Part</part-name>
- </score-part>
- </part-list>
- <!--=========================================================-->
- <part id="P1">
- <measure number="1">
- <attributes>
- <divisions>4</divisions>
- <clef>
- <sign>G</sign>
- <line>2</line>
- </clef>
- <key>
- <fifths>0</fifths>
- </key>
- <time>
- <beats>3</beats>
- <beat-type>4</beat-type>
- </time>
- </attributes>
- <note>
- <pitch>
- <step>A</step>
- <octave>4</octave>
- </pitch>
- <duration>4</duration>
- <voice>1</voice>
- <type>quarter</type>
- <accidental>sharp</accidental>
- <stem>down</stem>
- <notations>
- <articulations>
- <staccato placement="above"/>
- </articulations>
- </notations>
- <notations>
- <articulations>
- <accent placement="above"/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>A</step>
- <octave>4</octave>
- </pitch>
- <duration>4</duration>
- <voice>1</voice>
- <type>quarter</type>
- <accidental>sharp</accidental>
- <stem>down</stem>
- <notations>
- <articulations>
- <staccato placement="above"/>
- </articulations>
- <articulations>
- <accent placement="above"/>
- </articulations>
- </notations>
- </note>
- <note>
- <pitch>
- <step>A</step>
- <octave>4</octave>
- </pitch>
- <duration>4</duration>
- <voice>1</voice>
- <type>quarter</type>
- <accidental>sharp</accidental>
- <stem>down</stem>
- <notations>
- <articulations>
- <staccato placement="above"/>
- <accent placement="above"/>
- </articulations>
- </notations>
- </note>
- </measure>
- </part>
-</score-partwise>
+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6b Partwise//EN"
- "http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
- <identification>
- <encoding>
- <software>/usr/bin/vi</software>
- <encoding-date>2007-02-01</encoding-date>
- </encoding>
- </identification>
- <part-list>
- <score-part id="P1"><part-name></part-name></score-part>
- </part-list>
- <part id="P1">
- <measure number="1">
- <attributes>
- <divisions>96</divisions>
- <key><fifths>0</fifths></key>
- <time><beats>4</beats><beat-type>4</beat-type></time>
- <staves>1</staves>
- <clef number="1"><sign>G</sign><line>2</line></clef>
- </attributes>
- <direction placement="above">
- <direction-type>
- <words default-x="-1" default-y="15" font-size="medium" font-weight="normal">
- Normal, Medium
- </words>
- </direction-type>
- <staff>1</staff>
- </direction>
- <note>
- <pitch><step>F</step><octave>4</octave></pitch>
- <duration>384</duration>
- <voice>1</voice>
- <type>eighth</type>
- <staff>1</staff>
- </note>
- <direction placement="below">
- <direction-type>
- <words default-x="1" default-y="15" justify="left" font-size="medium" font-weight="bold">
- Bold, Medium
- </words>
- </direction-type>
- <staff>1</staff>
- </direction>
- </measure>
- <measure number="2">
- <direction placement="above">
- <direction-type>
- <words default-x="1" default-y="15" font-size="large" font-weight="normal">
- Normal, Large
- </words>
- </direction-type>
- <staff>1</staff>
- </direction>
- <note>
- <pitch><step>G</step><octave>4</octave></pitch>
- <duration>384</duration>
- <voice>1</voice>
- <type>whole</type>
- <staff>1</staff>
- </note>
- <direction placement="below">
- <direction-type>
- <words default-x="1" default-y="15" font-size="large" font-weight="bold">
- Bold, Large
- </words>
- </direction-type>
- <staff>1</staff>
- </direction>
- </measure>
- <measure number="3">
- <direction placement="above">
- <direction-type>
- <words default-x="1" default-y="15" font-size="small" font-weight="normal">
- Normal, Small
- </words>
- </direction-type>
- <staff>1</staff>
- </direction>
- <note>
- <pitch><step>F</step><octave>4</octave></pitch>
- <duration>384</duration>
- <voice>1</voice>
- <type>whole</type>
- <staff>1</staff>
- </note>
- <direction placement="below">
- <direction-type>
- <words default-x="1" default-y="15" font-size="small" font-weight="bold">
- Bold, Small
- </words>
- </direction-type>
- <staff>1</staff>
- </direction>
- <direction placement="below">
- <direction-type>
- <words default-x="1" default-y="-15" font-size="small" color="#FF8000">
- Normal, Small, Colored, Below
- </words>
- </direction-type>
- <staff>1</staff>
- </direction>
- </measure>
- </part>
-</score-partwise>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"\r
+ "http://www.musicxml.org/dtds/partwise.dtd">\r
+<score-partwise version="2.0">\r
+ <movement-title>MusicXML directions (attached to staff)</movement-title>\r
+ <identification/>\r
+ <defaults/>\r
+ <part-list>\r
+ <score-part id="P1">\r
+ <part-name print-object="no">MusicXML Part</part-name>\r
+ </score-part>\r
+ </part-list>\r
+ <!--=========================================================-->\r
+ <part id="P1">\r
+ <!-- Direction type can contain the following child types:\r
+ rehearsal+ | segno+ | words+ |\r
+ coda+ | wedge | dynamics+ | dashes | bracket | pedal | \r
+ metronome | octave-shift | harp-pedals | damp | \r
+ damp-all | eyeglasses | scordatura | image |\r
+ accordion-registration | other-direction -->\r
+ <!-- Rehearsal marks -->\r
+ <measure number="1">\r
+ <attributes>\r
+ <divisions>1</divisions>\r
+ <key>\r
+ <fifths>0</fifths>\r
+ <mode>major</mode>\r
+ </key>\r
+ <time symbol="common">\r
+ <beats>4</beats>\r
+ <beat-type>4</beat-type>\r
+ </time>\r
+ <clef>\r
+ <sign>G</sign>\r
+ <line>2</line>\r
+ </clef>\r
+ </attributes>\r
+ <sound tempo="120"/>\r
+ <direction placement="below">\r
+ <direction-type>\r
+ <rehearsal>A</rehearsal>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>reh.A (def=sq.)</text></lyric>\r
+ </note>\r
+ <direction placement="above">\r
+ <direction-type>\r
+ <rehearsal enclosure="none">B</rehearsal>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>reh.B (none)</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <rehearsal enclosure="square">Test</rehearsal>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>reh.Test (sq.)</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <rehearsal enclosure="circle">Crc</rehearsal>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>reh.Crc (crc.)</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <!-- Segno, Coda, Words (extra unit test for formatting!), Eyeglasses -->\r
+ <measure number="2">\r
+ <direction>\r
+ <direction-type>\r
+ <segno/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Segno</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <coda/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Coda</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <words>words</words>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Words</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <eyeglasses/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Eyegl.</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <!-- Dynamics: p | pp | ppp | pppp | ppppp | pppppp |\r
+ f | ff | fff | ffff | fffff | ffffff | mp | mf | sf |\r
+ sfp | sfpp | fp | rf | rfz | sfz | sffz | fz | \r
+ other-dynamics -->\r
+ <measure number="3">\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><p/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>p</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><pp/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>pp</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><ppp/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>ppp</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><pppp/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>pppp</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="4">\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><ppppp/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>ppppp</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><pppppp/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>pppppp</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><f/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>f</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><ff/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>ff</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="5">\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><fff/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>fff</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><ffff/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>ffff</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><fffff/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>fffff</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><ffffff/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>ffffff</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="6">\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><mp/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>mp</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><mf/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>mf</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><sf/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>sf</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><sfp/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>sfp</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="7">\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><sfpp/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>sfpp</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><fp/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>fp</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><rf/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>rf</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><rfz/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>rfz</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="8">\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><sfz/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>sfz</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><sffz/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>sffz</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><fz/></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>fz</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dynamics><other-dynamics>abc-ffz</other-dynamics></dynamics>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>abc-ffz (oth.)</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <!-- Spanners (there is another unit test for testing the various options):\r
+ wedge, dashes, bracket, pedal, octave-shift -->\r
+ <measure number="9">\r
+ <direction>\r
+ <direction-type>\r
+ <wedge type="crescendo"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>begin</syllabic><text>hairpin</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <wedge type="stop"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>end</syllabic><text>cresc</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dashes type="start"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>begin</syllabic><text>dash</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <dashes type="stop"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>end</syllabic><text>es</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="10">\r
+ <direction>\r
+ <direction-type>\r
+ <bracket type="start" line-end="none"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>begin</syllabic><text>bra</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <bracket type="stop" line-end="none"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>end</syllabic><text>cket</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <octave-shift type="up"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>begin</syllabic><text>oct.</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <octave-shift type="stop"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>end</syllabic><text>shift</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="11">\r
+ <direction>\r
+ <direction-type>\r
+ <pedal type="start"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>begin</syllabic><text>pedal</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <pedal type="change"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>continue</syllabic><text>change</text></lyric>\r
+ </note>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <pedal type="stop"/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>end</syllabic><text>mark</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <!-- metronome, harp-pedals, damp, damp-all, scordatura, accordion-registration -->\r
+ <measure number="12">\r
+ <direction>\r
+ <direction-type>\r
+ <metronome><beat-unit>quarter</beat-unit><per-minute>60</per-minute></metronome>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Metr.</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <harp-pedals>\r
+ <pedal-tuning>\r
+ <pedal-step>D</pedal-step>\r
+ <pedal-alter>0</pedal-alter>\r
+ </pedal-tuning>\r
+ <pedal-tuning>\r
+ <pedal-step>C</pedal-step>\r
+ <pedal-alter>-1</pedal-alter>\r
+ </pedal-tuning>\r
+ <pedal-tuning>\r
+ <pedal-step>B</pedal-step>\r
+ <pedal-alter>-1</pedal-alter>\r
+ </pedal-tuning>\r
+ <pedal-tuning>\r
+ <pedal-step>E</pedal-step>\r
+ <pedal-alter>0</pedal-alter>\r
+ </pedal-tuning>\r
+ <pedal-tuning>\r
+ <pedal-step>F</pedal-step>\r
+ <pedal-alter>0</pedal-alter>\r
+ </pedal-tuning>\r
+ <pedal-tuning>\r
+ <pedal-step>G</pedal-step>\r
+ <pedal-alter>1</pedal-alter>\r
+ </pedal-tuning>\r
+ <pedal-tuning>\r
+ <pedal-step>A</pedal-step>\r
+ <pedal-alter>-1</pedal-alter>\r
+ </pedal-tuning>\r
+ </harp-pedals>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Harp ped.</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <damp/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Damp</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <damp-all/>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Damp all</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="13">\r
+ <direction>\r
+ <direction-type>\r
+ <scordatura>\r
+ <accord string="0"><tuning-step>C</tuning-step><tuning-octave>3</tuning-octave></accord>\r
+ <accord string="1"><tuning-step>G</tuning-step><tuning-octave>5</tuning-octave></accord>\r
+ <accord string="2"><tuning-step>E</tuning-step><tuning-octave>5</tuning-octave></accord>\r
+ </scordatura>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Scord.</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>2</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>Accordion reg.</text></lyric>\r
+ </note>\r
+ <note>\r
+ <rest/>\r
+ <duration>2</duration>\r
+ <voice>1</voice>\r
+ <type>half</type>\r
+ </note>\r
+ <barline location="right">\r
+ <bar-style>light-light</bar-style>\r
+ </barline>\r
+ </measure>\r
+ <!-- Other issues: Multiple direction-type elements: "subito p", ppp<fff -->\r
+ <measure number="14">\r
+ <direction placement="below">\r
+ <direction-type>\r
+ <words default-y="-80" font-family="Times New Roman" font-size="10.25" font-style="italic">subito</words>\r
+ </direction-type>\r
+ <direction-type>\r
+ <words default-y="-80" font-family="Times New Roman" font-size="10.25">Â </words>\r
+ </direction-type>\r
+ <direction-type>\r
+ <dynamics default-y="-80">\r
+ <p/>\r
+ </dynamics>\r
+ </direction-type>\r
+ <offset>2</offset>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>subp</text></lyric>\r
+ </note>\r
+ <direction placement="below">\r
+ <direction-type>\r
+ <dynamics><ppp/></dynamics>\r
+ </direction-type>\r
+ <direction-type>\r
+ <wedge type="crescendo"/>\r
+ </direction-type>\r
+ <offset>2</offset>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>begin</syllabic><text>ppp cresc</text></lyric>\r
+ </note>\r
+ <direction placement="below">\r
+ <direction-type>\r
+ <wedge type="stop"/>\r
+ </direction-type>\r
+ <direction-type>\r
+ <dynamics><fff/></dynamics>\r
+ </direction-type>\r
+ <offset>2</offset>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><syllabic>end</syllabic><text>to fff</text></lyric>\r
+ </note>\r
+ <note>\r
+ <rest/>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>subp</text></lyric>\r
+ </note>\r
+ <barline location="right">\r
+ <bar-style>light-heavy</bar-style>\r
+ </barline>\r
+ </measure>\r
+ <!--=======================================================-->\r
+ </part>\r
+ <!--=========================================================-->\r
+</score-partwise>\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"\r
- "http://www.musicxml.org/dtds/partwise.dtd">\r
-<score-partwise>\r
- <movement-title>Finale Dynamics Test</movement-title>\r
- <identification>\r
- <creator type="composer">Reinhold Kainhofer</creator>\r
- <rights>Public Domain</rights>\r
- <encoding>\r
- <software>Finale 2007 for Windows</software>\r
- <software>Dolet Light for Finale 2007</software>\r
- <encoding-date>2007-09-02</encoding-date>\r
- </encoding>\r
- </identification>\r
- <part-list>\r
- <score-part id="P1">\r
- <part-name>MusicXML Part</part-name>\r
- <score-instrument id="P1-I1">\r
- <instrument-name>Grand Piano</instrument-name>\r
- </score-instrument>\r
- <midi-instrument id="P1-I1">\r
- <midi-channel>1</midi-channel>\r
- <midi-program>1</midi-program>\r
- </midi-instrument>\r
- </score-part>\r
- </part-list>\r
- <!--=========================================================-->\r
- <part id="P1">\r
- <measure number="1">\r
- <attributes>\r
- <divisions>8</divisions>\r
- <key>\r
- <fifths>0</fifths>\r
- <mode>major</mode>\r
- </key>\r
- <time symbol="common">\r
- <beats>4</beats>\r
- <beat-type>4</beat-type>\r
- </time>\r
- <clef>\r
- <sign>G</sign>\r
- <line>2</line>\r
- </clef>\r
- </attributes>\r
- <sound tempo="120"/>\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80" relative-x="-3">\r
- <ffff/>\r
- </dynamics>\r
- </direction-type>\r
- <sound dynamics="141"/>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <sound dynamics="127"/>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <dynamics default-y="-80" placement="below">\r
- <fff/>\r
- </dynamics>\r
- </notations>\r
- </note>\r
- <sound dynamics="112"/>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <dynamics default-y="-80" placement="below">\r
- <ff/>\r
- </dynamics>\r
- </notations>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <f/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>2</offset>\r
- <sound dynamics="98"/>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="2">\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <mf/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>1</offset>\r
- <sound dynamics="83"/>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <sound dynamics="69"/>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- <notations>\r
- <dynamics default-y="-80" placement="below">\r
- <mp/>\r
- </dynamics>\r
- </notations>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <p/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>2</offset>\r
- <sound dynamics="54"/>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <pp/>\r
- </dynamics>\r
- </direction-type>\r
- <sound dynamics="40"/>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="3">\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <ppp/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>1</offset>\r
- <sound dynamics="26"/>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <pppp/>\r
- </dynamics>\r
- </direction-type>\r
- <sound dynamics="11"/>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <fp/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>2</offset>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <fz/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>2</offset>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="4">\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <sf/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>1</offset>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <sfz/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>1</offset>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <sffz/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>2</offset>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <direction placement="below">\r
- <direction-type>\r
- <words default-y="-80" font-family="Times New Roman" font-size="10.25" font-style="italic">subito</words>\r
- </direction-type>\r
- <direction-type>\r
- <words default-y="-80" font-family="Times New Roman" font-size="10.25">Â </words>\r
- </direction-type>\r
- <direction-type>\r
- <dynamics default-y="-80">\r
- <p/>\r
- </dynamics>\r
- </direction-type>\r
- <offset>2</offset>\r
- <sound dynamics="54"/>\r
- </direction>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- </measure>\r
- <!--=======================================================-->\r
- <measure number="5">\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <note>\r
- <pitch>\r
- <step>G</step>\r
- <octave>4</octave>\r
- </pitch>\r
- <duration>8</duration>\r
- <voice>1</voice>\r
- <type>quarter</type>\r
- <stem>up</stem>\r
- </note>\r
- <barline location="right">\r
- <bar-style>light-heavy</bar-style>\r
- </barline>\r
- </measure>\r
- </part>\r
- <!--=========================================================-->\r
-</score-partwise>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"\r
+ "http://www.musicxml.org/dtds/partwise.dtd">\r
+<score-partwise version="2.0">\r
+ <movement-title>Accordion registrations</movement-title>\r
+ <identification/>\r
+ <defaults/>\r
+ <part-list>\r
+ <score-part id="P1">\r
+ <part-name></part-name>\r
+ </score-part>\r
+ </part-list>\r
+ <!--=========================================================-->\r
+ <part id="P1">\r
+ <!-- Direction type can contain the following child types:\r
+ rehearsal+ | segno+ | words+ |\r
+ coda+ | wedge | dynamics+ | dashes | bracket | pedal | \r
+ metronome | octave-shift | harp-pedals | damp | \r
+ damp-all | eyeglasses | scordatura | image |\r
+ accordion-registration | other-direction -->\r
+ <!-- Rehearsal marks -->\r
+ <measure number="1">\r
+ <attributes>\r
+ <divisions>1</divisions>\r
+ <key>\r
+ <fifths>0</fifths>\r
+ <mode>major</mode>\r
+ </key>\r
+ <time symbol="common">\r
+ <beats>4</beats>\r
+ <beat-type>4</beat-type>\r
+ </time>\r
+ <clef>\r
+ <sign>G</sign>\r
+ <line>2</line>\r
+ </clef>\r
+ </attributes>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/0/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>1</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/1/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>1</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/1/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>2</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/2/0</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="2">\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>2</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/2/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>3</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/3/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-middle>3</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>0/3/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/0/1</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="3">\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/0/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>1</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/1/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>1</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/1/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>2</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/2/0</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="4">\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>2</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/2/1</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>3</accordion-middle>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/3/0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>3</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>1/3/1</text></lyric>\r
+ </note>\r
+ <!-- Special cases: No accordion-(high|middle|low) given, empty middle, \r
+ middle with invalid value, middle with 0 -->\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>empty</text></lyric>\r
+ </note>\r
+ </measure>\r
+ <measure number="5">\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle/>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>empty M</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>test</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>inval.M</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>0</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>M=0</text></lyric>\r
+ </note>\r
+ <direction>\r
+ <direction-type>\r
+ <accordion-registration>\r
+ <accordion-high/>\r
+ <accordion-middle>5</accordion-middle>\r
+ <accordion-low/>\r
+ </accordion-registration>\r
+ </direction-type>\r
+ </direction>\r
+ <note>\r
+ <pitch><step>C</step><octave>4</octave></pitch>\r
+ <duration>1</duration>\r
+ <voice>1</voice>\r
+ <type>quarter</type>\r
+ <lyric number="1"><text>M=5</text></lyric>\r
+ </note>\r
+ \r
+ <barline location="right">\r
+ <bar-style>light-heavy</bar-style>\r
+ </barline>\r
+ </measure>\r
+ <!--=======================================================-->\r
+ </part>\r
+ <!--=========================================================-->\r
+</score-partwise>\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE score-partwise PUBLIC
- "-//Recordare//DTD MusicXML 1.0 Partwise//EN"
- "http://www.musicxml.org/dtds/partwise.dtd">
-
-<score-partwise>
- <work>
- </work>
-
- <identification>
- <encoding>
- <software>NoteEdit</software>
- </encoding>
- </identification>
-
- <part-list>
- <score-part id="P1">
- <part-name>Staff 1</part-name>
- <score-instrument id="P1-I1">
- <instrument-name>Klavier 1</instrument-name>
- </score-instrument>
- <midi-instrument id="P1-I1">
- <midi-channel>1</midi-channel>
- <midi-program>1</midi-program>
- </midi-instrument>
- </score-part>
- </part-list>
-
- <part id="P1">
- <measure number="1">
- <attributes>
- <divisions>1</divisions>
- <key>
- <fifths>-1</fifths>
- </key>
- <time>
- <beats>4</beats>
- <beat-type>4</beat-type>
- </time>
- <clef>
- <sign>G</sign>
- <line>2</line>
- </clef>
- </attributes>
- <direction placement="above">
- <direction-type>
- <dynamics>
- <mf/>
- </dynamics>
- </direction-type>
- </direction>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <direction placement="above">
- <direction-type>
- <dynamics>
- <ppp/>
- </dynamics>
- </direction-type>
- </direction>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <direction placement="above">
- <direction-type>
- <dynamics>
- <pp/>
- </dynamics>
- </direction-type>
- </direction>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <direction placement="above">
- <direction-type>
- <dynamics>
- <p/>
- </dynamics>
- </direction-type>
- </direction>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- </measure>
- <measure number="2">
- <direction placement="above">
- <direction-type>
- <dynamics>
- <mp/>
- </dynamics>
- </direction-type>
- </direction>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <direction placement="above">
- <direction-type>
- <dynamics>
- <mf/>
- </dynamics>
- </direction-type>
- </direction>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <direction placement="above">
- <direction-type>
- <dynamics>
- <f/>
- </dynamics>
- </direction-type>
- </direction>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <direction placement="above">
- <direction-type>
- <dynamics>
- <ff/>
- </dynamics>
- </direction-type>
- </direction>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- </measure>
- <measure number="3">
- <direction placement="above">
- <direction-type>
- <dynamics>
- <fff/>
- </dynamics>
- </direction-type>
- </direction>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- <note>
- <pitch>
- <step>G</step>
- <octave>4</octave>
- </pitch>
- <duration>1</duration>
- <voice>1</voice>
- <type>quarter</type>
- <stem>up</stem>
- </note>
- </measure>
- </part>
-</score-partwise>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE score-partwise PUBLIC
-"-//Recordare//DTD MusicXML 1.0 Partwise//EN"
-"http://www.musicxml.org/dtds/partwise.dtd">
-<score-partwise>
-<work>
-<work-title>JScore_Dynamics_Test</work-title>
-</work>
-<identification>
-<creator type="composer">Reinhold Kainhofer</creator>
-<encoding>
-<software>JMSL's MusicXMLWriter by Nick Didkovsky. Java Music Specification Language by Nick Didkovsky and Phil Burk, (c) 2003 Nick Didkovsky, Phil Burk. Available from: http://www.algomusic.com</software>
-</encoding>
-</identification>
-<part-list>
-<score-part id="P1" >
-<part-name>Voice 1</part-name>
-</score-part>
-</part-list>
-<part id="P1" >
-<measure number="1" >
-<attributes>
-<divisions>960</divisions>
-<key><fifths>0</fifths></key>
-<time><beats>4</beats><beat-type>4</beat-type></time>
-<clef><sign>G</sign><line>2</line></clef>
-</attributes>
-<direction placement="above">
-<direction-type>
-<metronome parentheses="yes" relative-y="18">
-<beat-unit>quarter</beat-unit>
-<per-minute>60</per-minute>
-</metronome>
-</direction-type>
-<offset>72</offset>
-<sound tempo="60" />
-</direction>
-<direction placement="below" >
-<direction-type>
-<dynamics relative-y="-6" >
-<ppp />
-</dynamics>
-</direction-type>
-<staff>1</staff>
-</direction>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-<direction placement="below" >
-<direction-type>
-<dynamics relative-y="-6" >
-<pp />
-</dynamics>
-</direction-type>
-<staff>1</staff>
-</direction>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-<direction placement="below" >
-<direction-type>
-<dynamics relative-y="-6" >
-<p />
-</dynamics>
-</direction-type>
-<staff>1</staff>
-</direction>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-<direction placement="below" >
-<direction-type>
-<dynamics relative-y="-6" >
-<mp />
-</dynamics>
-</direction-type>
-<staff>1</staff>
-</direction>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-</measure>
-<measure number="2" >
-<attributes>
-<divisions>960</divisions>
-<key><fifths>0</fifths></key>
-<time><beats>4</beats><beat-type>4</beat-type></time>
-<clef><sign>G</sign><line>2</line></clef>
-</attributes>
-<direction placement="below" >
-<direction-type>
-<dynamics relative-y="-6" >
-<mf />
-</dynamics>
-</direction-type>
-<staff>1</staff>
-</direction>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-<direction placement="below" >
-<direction-type>
-<dynamics relative-y="-6" >
-<f />
-</dynamics>
-</direction-type>
-<staff>1</staff>
-</direction>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-<direction placement="below" >
-<direction-type>
-<dynamics relative-y="-6" >
-<ff />
-</dynamics>
-</direction-type>
-<staff>1</staff>
-</direction>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-<direction placement="below" >
-<direction-type>
-<dynamics relative-y="-6" >
-<fff />
-</dynamics>
-</direction-type>
-<staff>1</staff>
-</direction>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-</measure>
-<measure number="3" >
-<attributes>
-<divisions>960</divisions>
-<key><fifths>0</fifths></key>
-<time><beats>4</beats><beat-type>4</beat-type></time>
-<clef><sign>G</sign><line>2</line></clef>
-</attributes>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-<note>
-<pitch>
-<step>G</step>
-<octave>4</octave>
-</pitch>
-<duration>960</duration>
-<voice>1</voice>
-<type>quarter</type>
-<notations>
-</notations>
-</note>
-</measure>
-<measure number="4" >
-<attributes>
-<divisions>960</divisions>
-<key><fifths>0</fifths></key>
-<time><beats>4</beats><beat-type>4</beat-type></time>
-<clef><sign>G</sign><line>2</line></clef>
-</attributes>
-</measure>
-</part>
-</score-partwise>
</part-list>\r
<!--=========================================================-->\r
<part id="P1">\r
+ <!-- Tested spanners: tuplet, slur(solid, dashed), wedge (cresc, dim),\r
+ wavy-line, octave-shift (8va,8vb,15ma,15mb), bracket (solid, \r
+ dashed up/down, dashes, glissando (wavy), slide (solid), \r
+ pedal (down,up,change; line/Ped*) -->\r
<measure number="1">\r
<attributes>\r
<divisions>24</divisions>\r
<stem>down</stem>\r
<notations>\r
<ornaments>\r
- <wavy-line number="1" type="stop"/>\r
+ <wavy-line number="1" type="start"/>\r
</ornaments>\r
</notations>\r
</note>\r
<stem>down</stem>\r
<notations>\r
<ornaments>\r
- <wavy-line default-y="10" number="1" type="start"/>\r
+ <wavy-line default-y="10" number="1" type="stop"/>\r
</ornaments>\r
</notations>\r
</note>\r
<stem>down</stem>\r
<notations>\r
<ornaments>\r
+ <wavy-line number="1" type="start"/>\r
<wavy-line number="1" type="stop"/>\r
</ornaments>\r
</notations>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"
+ "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise version="2.0">
+ <movement-title>Glissando and Slide in MusicXML</movement-title>
+ <identification/>
+ <defaults/>
+ <part-list>
+ <score-part id="P1">
+ <part-name></part-name>
+ </score-part>
+ </part-list>
+ <!--=========================================================-->
+ <part id="P1">
+ <!-- Glissando styles: glissando/slide, solid/dashed/dotted/wavy -->
+ <measure number="1">
+ <attributes>
+ <divisions>1</divisions>
+ <key>
+ <fifths>0</fifths>
+ <mode>major</mode>
+ </key>
+ <clef>
+ <sign>G</sign>
+ <line>2</line>
+ </clef>
+ </attributes>
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando number="1" type="start"/>
+ </notations>
+ <lyric number="1"><text>normal</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando number="1" type="stop"/>
+ </notations>
+ <lyric number="1"><text>glissando</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando line-type="solid" number="1" type="start">text</glissando>
+ </notations>
+ <lyric number="1"><text>solid</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando line-type="solid" number="1" type="stop"/>
+ </notations>
+ <lyric number="1"><text>(+text)</text></lyric>
+ </note>
+ </measure>
+ <measure number="2">
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando line-type="dashed" number="1" type="start"/>
+ </notations>
+ <lyric number="1"><text>dashed</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando line-type="dashed" number="1" type="stop"/>
+ </notations>
+ </note>
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando line-type="dotted" number="1" type="start"/>
+ </notations>
+ <lyric number="1"><text>dotted</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando line-type="dotted" number="1" type="stop"/>
+ </notations>
+ </note>
+ </measure>
+ <measure number="3">
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando line-type="wavy" number="1" type="start"/>
+ </notations>
+ <lyric number="1"><text>wavy</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <glissando line-type="wavy" number="1" type="stop"/>
+ </notations>
+ </note>
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide number="1" type="start"/>
+ </notations>
+ <lyric number="1"><text>normal</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide number="1" type="stop"/>
+ </notations>
+ <lyric number="1"><text>slide</text></lyric>
+ </note>
+ </measure>
+ <measure number="4">
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide line-type="solid" number="1" type="start">text</slide>
+ </notations>
+ <lyric number="1"><text>solid</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide line-type="solid" number="1" type="stop"/>
+ </notations>
+ <lyric number="1"><text>(+text)</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide line-type="dashed" number="1" type="start"/>
+ </notations>
+ <lyric number="1"><text>dashed</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide line-type="solid" number="1" type="stop"/>
+ </notations>
+ </note>
+ </measure>
+ <measure number="5">
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide line-type="dotted" number="1" type="start"/>
+ </notations>
+ <lyric number="1"><text>dotted</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide line-type="dotted" number="1" type="stop"/>
+ </notations>
+ </note>
+ <note>
+ <pitch>
+ <step>G</step>
+ <octave>4</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide line-type="wavy" number="1" type="start"/>
+ </notations>
+ <lyric number="1"><text>wavy</text></lyric>
+ </note>
+ <note>
+ <pitch>
+ <step>F</step>
+ <octave>5</octave>
+ </pitch>
+ <duration>1</duration>
+ <voice>1</voice>
+ <type>quarter</type>
+ <stem>down</stem>
+ <notations>
+ <slide line-type="wavy" number="1" type="stop"/>
+ </notations>
+ </note>
+
+ <barline location="right">
+ <bar-style>light-heavy</bar-style>
+ </barline>
+ </measure>
+ </part>
+</score-partwise>
<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 1.0 Partwise//EN"\r
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN"\r
"http://www.musicxml.org/dtds/partwise.dtd">\r
-<score-partwise>\r
- <movement-title>Finale "Quoted" test</movement-title>\r
+<score-partwise version="2.0">\r
+ <movement-title>"Quotes" in header fields</movement-title>\r
<identification>\r
- <creator type="composer">Reinhold "Tester" Kainhofer</creator>\r
+ <creator type="composer">Some "Tester" Name</creator>\r
<rights>Free for anyone ("Public Domain")</rights>\r
<encoding>\r
- <software>Finale 2007 for Windows</software>\r
- <software>Dolet Light for Finale 2007</software>\r
- <encoding-date>2007-09-01</encoding-date>\r
+ <software>"Hand-crafted" MusicXML file</software>\r
+ <encoding-date>2008-02-06</encoding-date>\r
</encoding>\r
</identification>\r
<part-list>\r
<score-part id="P1">\r
- <part-name>MusicXML Part</part-name>\r
- <score-instrument id="P1-I1">\r
- <instrument-name>Grand Piano</instrument-name>\r
- </score-instrument>\r
- <midi-instrument id="P1-I1">\r
- <midi-channel>1</midi-channel>\r
- <midi-program>1</midi-program>\r
- </midi-instrument>\r
+ <part-name>Staff "Test"</part-name>\r
</score-part>\r
</part-list>\r
<!--=========================================================-->\r
<part id="P1">\r
<measure number="1">\r
- <attributes>\r
- <divisions>1</divisions>\r
- <key>\r
- <fifths>0</fifths>\r
- <mode>major</mode>\r
- </key>\r
- <time symbol="common">\r
- <beats>4</beats>\r
- <beat-type>4</beat-type>\r
- </time>\r
- <clef>\r
- <sign>G</sign>\r
- <line>2</line>\r
- </clef>\r
- </attributes>\r
- <sound tempo="120"/>\r
<note>\r
<rest/>\r
<duration>4</duration>\r
<voice>1</voice>\r
+ <type>whole</type>\r
</note>\r
<barline location="right">\r
<bar-style>light-heavy</bar-style>\r
-\version "2.10.0"
+\version "2.11.38"
\header{
texidoc=" By default, text is set with empty horizontal dimensions.
}
\relative c''{
- %% \emptyText
+ %% \textLengthOff
%% short for \override TextScript #'no-spacing-rods = ##t
c2_"very wide and long text" c | \break
%% short for \override TextScript #'no-spacing-rods = ##f
- \fatText
+ \textLengthOn
c_"very wide and long text" c
}
texidoc = "With @code{\\cueDuring} and @code{\\quoteDuring},
fragments of previously entered music may be
quoted. @code{quotedEventTypes} will determines what things are
-quoted. In this example, a 16th rests is not quoted, since
+quoted. In this example, a 16th rest is not quoted, since
@code{rest-event} is not in @code{quotedEventTypes}."
}
texidoc = "With @code{\\quote}, fragments of previously entered
music may be quoted. @code{quotedEventTypes} will determines what
-things are quoted. In this example, a 16th rests is not quoted, since
+things are quoted. In this example, a 16th rest is not quoted, since
@code{rest-event} is not in @code{quotedEventTypes}."
}
\header {
- texidoc = "Rests under beams moved by whole staff spaces."
+ texidoc = "Rests under beams are moved by whole staff spaces."
}
\layout {
\version "2.10.0"
\header
{
- texidoc ="Slurs may be placed over rest. The slur will avoid colliding with
-the rest.
+ texidoc ="Slurs may be placed over rests. The slur will avoid
+colliding with the rests.
"
}
(c) 2002--2007 Juergen Reuter <reuter@ipd.uka.de>
*/
+#include "international.hh"
+
#include "ligature-engraver.hh"
#include "note-column.hh"
#include "tuplet-bracket.hh"
#include "translator.icc"
-/*
- * This engraver marks ligatures of any kind by just printing a
- * horizontal square bracket on top of each ligature. See class
- * Ligature_engraver for more information on the interaction between
- * this class and its superclass.
- */
-class Ligature_bracket_engraver : public Ligature_engraver
+class Ligature_bracket_engraver : public Engraver
{
protected:
- virtual Spanner *create_ligature_spanner ();
- virtual void typeset_ligature (Spanner *ligature,
- vector<Grob_info> primitives);
+ virtual void process_music ();
+ virtual void stop_translation_timestep ();
DECLARE_ACKNOWLEDGER (rest);
DECLARE_ACKNOWLEDGER (note_column);
DECLARE_TRANSLATOR_LISTENER (ligature);
public:
TRANSLATOR_DECLARATIONS (Ligature_bracket_engraver);
+
+private:
+ Drul_array<Stream_event *> events_drul_;
+ Spanner *finished_ligature_;
+ Spanner *ligature_;
+ Stream_event *previous_start_event_;
};
IMPLEMENT_TRANSLATOR_LISTENER (Ligature_bracket_engraver, ligature);
void
Ligature_bracket_engraver::listen_ligature (Stream_event *ev)
{
- Ligature_engraver::listen_ligature (ev);
+ Direction d = to_dir (ev->get_property ("span-direction"));
+ ASSIGN_EVENT_ONCE (events_drul_[d], ev);
}
Ligature_bracket_engraver::Ligature_bracket_engraver ()
{
-}
-
-Spanner *
-Ligature_bracket_engraver::create_ligature_spanner ()
-{
- return make_spanner ("LigatureBracket", SCM_EOL);
+ ligature_ = 0;
+ finished_ligature_ = 0;
+ events_drul_[LEFT] = events_drul_[RIGHT] = 0;
+ previous_start_event_ = 0;
}
void
-Ligature_bracket_engraver::typeset_ligature (Spanner *, vector<Grob_info>)
+Ligature_bracket_engraver::process_music()
{
- // no real ligature to typeset; the LigatureBracket just does it
+ if (events_drul_[STOP])
+ {
+ if (!ligature_)
+ {
+ events_drul_[STOP]->origin ()->warning (_ ("cannot find start of ligature"));
+ return;
+ }
+
+ finished_ligature_ = ligature_;
+ ligature_ = 0;
+ previous_start_event_ = 0;
+ }
+
+ if (events_drul_[START])
+ {
+ if (ligature_)
+ {
+ events_drul_[START]->origin ()->warning (_ ("already have a ligature"));
+ return;
+ }
+
+ previous_start_event_ = events_drul_[START];
+ ligature_ = make_spanner ("LigatureBracket", events_drul_[START]->self_scm ());
+ }
}
void
Ligature_bracket_engraver::acknowledge_note_column (Grob_info info)
{
- if (current_ligature ())
+ if (ligature_)
{
- Tuplet_bracket::add_column (current_ligature (),
- dynamic_cast<Item *> (info.grob ()));
-
- // avoid "junking empty ligature" message by acknowledging dummy
- // note head
- Ligature_engraver::acknowledge_note_head (Grob_info ());
+ Tuplet_bracket::add_column (ligature_,
+ info.item ());
+ add_bound_item (ligature_, info.item());
}
}
void
Ligature_bracket_engraver::acknowledge_rest (Grob_info info)
{
- if (current_ligature ())
- Ligature_engraver::acknowledge_rest (info);
+ acknowledge_note_column(info);
+}
+
+
+void
+Ligature_bracket_engraver::stop_translation_timestep ()
+{
+ events_drul_[LEFT] =
+ events_drul_[RIGHT] = 0;
+ finished_ligature_ = 0;
}
ADD_ACKNOWLEDGER (Ligature_bracket_engraver, rest);
ADD_TRANSLATOR (Ligature_bracket_engraver,
/* doc */ "Handles Ligature_events by engraving Ligature brackets.",
- /* create */ "TupletBracket",
+ /* create */ "LigatureBracket",
/* read */ "",
/* write */ "");
break;
}
- message ("Drawing systems...");
+ message (_ ("Drawing systems..."));
break_into_pieces (0, end, best_division);
SCM lines = systems ();
return make_pages (best.systems_per_page_, lines);
verticallySpacedContexts = #'(Staff)
- hairpinToBarline = ##t
+ \override Voice #'hairpinToBarline = ##t
timing = ##t
}
% property-init.ly
-\version "2.10.0"
+\version "2.11.38"
stemUp = \override Stem #'direction = #UP
stemDown = \override Stem #'direction = #DOWN
slurUp = \override Slur #'direction = #UP
slurDown = \override Slur #'direction = #DOWN
-slurNeutral = \revert Slur #'direction
+slurNeutral = \revert Slur #'direction
%% There's also dash, but setting dash period/length should be fixed.
slurDashed = {
phrasingSlurUp = \override PhrasingSlur #'direction = #UP
phrasingSlurDown = \override PhrasingSlur #'direction = #DOWN
-phrasingSlurNeutral = \revert PhrasingSlur #'direction
+phrasingSlurNeutral = \revert PhrasingSlur #'direction
shiftOn = \override NoteColumn #'horizontal-shift = #1
shiftOnn = \override NoteColumn #'horizontal-shift = #2
shiftOnnn = \override NoteColumn #'horizontal-shift = #3
-shiftOff = \revert NoteColumn #'horizontal-shift
+shiftOff = \revert NoteColumn #'horizontal-shift
tieUp = \override Tie #'direction = #UP
tieDown = \override Tie #'direction = #DOWN
-tieNeutral = \revert Tie #'direction
+tieNeutral = \revert Tie #'direction
tieDashed = {
\override Tie #'dash-period = #0.75
\revert Tie #'dash-fraction
}
-setEasyHeads = \sequential {
+easyHeadsOn = {
\override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
\override NoteHead #'font-size = #-7
\override NoteHead #'font-family = #'sans
\override NoteHead #'font-series = #'bold
}
+easyHeadsOff = {
+ \revert NoteHead #'stencil
+ \revert NoteHead #'font-size
+ \revert NoteHead #'font-family
+ \revert NoteHead #'font-series
+}
+
aikenHeads = \set shapeNoteStyles = ##(do re mi fa #f la ti)
sacredHarpHeads =
autoBeamOff = \set autoBeaming = ##f
autoBeamOn = \set autoBeaming = ##t
-fatText = { \override TextScript #'extra-spacing-width = #'(0 . 0)
- \override TextScript #'infinite-spacing-height = ##t }
+textLengthOn = {
+ \override TextScript #'extra-spacing-width = #'(0 . 0)
+ \override TextScript #'infinite-spacing-height = ##t
+}
-emptyText = { \override TextScript #'extra-spacing-width = #'(+inf.0 . -inf.0)
- \override TextScript #'infinite-spacing-height = ##f }
+textLengthOff = {
+ \override TextScript #'extra-spacing-width = #'(+inf.0 . -inf.0)
+ \override TextScript #'infinite-spacing-height = ##f
+}
showStaffSwitch = \set followVoice = ##t
hideStaffSwitch = \set followVoice = ##f
LILYPOND_JOBS=$(if $(CPU_COUNT),-djob-count=$(CPU_COUNT),)
LILYPOND_BOOK_LILYPOND_FLAGS=-dbackend=eps --formats=ps,png,pdf $(LILYPOND_JOBS) -dinclude-eps-fonts -dgs-load-fonts --header=texidoc -I $(top-src-dir)/input/manual -dcheck-internal-types -ddump-signatures -danti-alias-factor=$(ANTI_ALIAS_FACTOR)
LILYPOND_BOOK_VERBOSE = --verbose
-LILYPOND_BOOK_FLAGS = --process="$(LILYPOND_BINARY) $(LILYPOND_BOOK_LILYPOND_FLAGS)" $(LILYPOND_BOOK_VERBOSE)
+LILYPOND_BOOK_INFO_IMAGES_DIR = $(if $(INFO_IMAGES_DIR),--info-images-dir=$(INFO_IMAGES_DIR),)
+LILYPOND_BOOK_FLAGS = --process="$(LILYPOND_BINARY) $(LILYPOND_BOOK_LILYPOND_FLAGS)" $(LILYPOND_BOOK_VERBOSE) $(LILYPOND_BOOK_INFO_IMAGES_DIR)
TEXINPUTS=$(top-src-dir)/tex/::
export TEXINPUTS
+# mf/GNUmakefile
+
depth = ..
-STEPMAKE_TEMPLATES=metafont install install-out
-LOCALSTEPMAKE_TEMPLATES=lilypond
+STEPMAKE_TEMPLATES = metafont \
+ install \
+ install-out
+LOCALSTEPMAKE_TEMPLATES = lilypond
include $(depth)/make/stepmake.make
EXTRA_DIST_FILES += README mf2pt1.mp
# We don't use $(MF_FILES), because there's more .mf cruft here
-FETA_MF_FILES = $(call src-wildcard,feta[0-9]*.mf)\
- $(call src-wildcard,feta-braces-[a-z].mf)\
- $(call src-wildcard,feta-alphabet*[0-9].mf)\
- $(call src-wildcard,parmesan[0-9]*.mf)
+FETA_MF_FILES = $(call src-wildcard,feta[0-9]*.mf) \
+ $(call src-wildcard,feta-braces-[a-z].mf) \
+ $(call src-wildcard,feta-alphabet*[0-9].mf) \
+ $(call src-wildcard,parmesan[0-9]*.mf)
STAFF_SIZES = 11 13 14 16 18 20 23 26
BRACES = a b c d e f g h i
-OTF_FILES = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.otf)\
- $(outdir)/aybabtu.otf
-PE_SCRIPTS = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.pe)\
- $(STAFF_SIZES:%=$(outdir)/emmentaler-%.dep)
-OTF_TABLES = $(STAFF_SIZES:%=$(outdir)/feta%.otf-table)\
- $(BRACES:%=$(outdir)/feta-braces-%.otf-table)
+OTF_FILES = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.otf) \
+ $(outdir)/aybabtu.otf
+PE_SCRIPTS = $(STAFF_SIZES:%=$(outdir)/emmentaler-%.pe) \
+ $(STAFF_SIZES:%=$(outdir)/emmentaler-%.dep)
+OTF_TABLES = $(STAFF_SIZES:%=$(outdir)/feta%.otf-table) \
+ $(BRACES:%=$(outdir)/feta-braces-%.otf-table)
FETA_FONTS = $(FETA_MF_FILES:.mf=)
SVG_FILES = $(OTF_FILES:%.otf=%.svg)
-FC_FIND=$(shell $(FCMATCH) --verbose 'Century Schoolbook L:style=$(1)' | grep 'file:' | sed 's/.*"\([^"]*\)".*/\1/g')
+FC_FIND = $(shell $(FCMATCH) --verbose 'Century Schoolbook L:style=$(1)' \
+ | grep 'file:' \
+ | sed 's/.*"\([^"]*\)".*/\1/g')
-NCSB_OTFS=$(addprefix $(outdir)/,CenturySchL-Ital.otf CenturySchL-BoldItal.otf CenturySchL-Roma.otf CenturySchL-Bold.otf)
-NCSB_INSTALL_DIR=$(local_lilypond_datadir)/fonts/otf
+NCSB_OTFS = $(addprefix $(outdir)/,CenturySchL-Ital.otf \
+ CenturySchL-BoldItal.otf \
+ CenturySchL-Roma.otf \
+ CenturySchL-Bold.otf)
+NCSB_INSTALL_DIR = $(local_lilypond_datadir)/fonts/otf
LOG_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.log)
LISP_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.lisp)
# 2. are not included with teTeX
#
-
-$(outdir)/emmentaler-%.otf $(outdir)/emmentaler-%.svg: $(outdir)/emmentaler-%.pe $(outdir)/feta%.pfb $(outdir)/feta-alphabet%.pfb $(outdir)/parmesan%.pfb $(outdir)/feta%.otf-table $(outdir)/feta%.otf-gtable
+$(outdir)/emmentaler-%.otf \
+$(outdir)/emmentaler-%.svg: $(outdir)/emmentaler-%.pe \
+ $(outdir)/feta%.pfb \
+ $(outdir)/feta-alphabet%.pfb \
+ $(outdir)/parmesan%.pfb \
+ $(outdir)/feta%.otf-table \
+ $(outdir)/feta%.otf-gtable
cd $(outdir) && $(FONTFORGE) -script $(notdir $(basename ,$@).pe)
-$(outdir)/aybabtu.otf $(outdir)/aybabtu.svg: $(outdir)/aybabtu.pe $(foreach s,$(BRACES),$(outdir)/feta-braces-$(s).pfb) $(outdir)/aybabtu.otf-table $(outdir)/aybabtu.otf-gtable
+$(outdir)/aybabtu.otf \
+$(outdir)/aybabtu.svg: $(outdir)/aybabtu.pe \
+ $(foreach s,$(BRACES),$(outdir)/feta-braces-$(s).pfb) \
+ $(outdir)/aybabtu.otf-table $(outdir)/aybabtu.otf-gtable
cd $(outdir) && $(FONTFORGE) -script aybabtu.pe
$(outdir)/%.pfb: $(outdir)/%.log
$(outdir)/%.otf-table: $(outdir)/%.lisp
- cat $< \
- $(if $(findstring brace,$<),,$(subst feta,parmesan,$<)) \
- $(if $(findstring brace,$<),,$(subst feta,feta-alphabet,$<)) > $@
-
-
-## ugh -- we want this to prevent failing -j2 compiles.
-$(outdir)/feta26.otf-table: $(outdir)/feta26.lisp $(outdir)/parmesan26.lisp $(outdir)/feta-alphabet26.lisp
-$(outdir)/feta23.otf-table: $(outdir)/feta23.lisp $(outdir)/parmesan23.lisp $(outdir)/feta-alphabet23.lisp
-$(outdir)/feta20.otf-table: $(outdir)/feta20.lisp $(outdir)/parmesan20.lisp $(outdir)/feta-alphabet20.lisp
-$(outdir)/feta18.otf-table: $(outdir)/feta18.lisp $(outdir)/parmesan18.lisp $(outdir)/feta-alphabet18.lisp
-$(outdir)/feta16.otf-table: $(outdir)/feta16.lisp $(outdir)/parmesan16.lisp $(outdir)/feta-alphabet16.lisp
-$(outdir)/feta14.otf-table: $(outdir)/feta14.lisp $(outdir)/parmesan14.lisp $(outdir)/feta-alphabet14.lisp
-$(outdir)/feta13.otf-table: $(outdir)/feta13.lisp $(outdir)/parmesan13.lisp $(outdir)/feta-alphabet13.lisp
-$(outdir)/feta11.otf-table: $(outdir)/feta11.lisp $(outdir)/parmesan11.lisp $(outdir)/feta-alphabet11.lisp
-
-
-
-$(outdir)/aybabtu.otf: $(outdir)/aybabtu.subfonts $(outdir)/aybabtu.fontname $(outdir)/aybabtu.otf-table $(outdir)/aybabtu.otf-gtable $(outdir)/aybabtu.pe
-
-$(outdir)/aybabtu.otf $(outdir)/aybabtu.svg: $(BRACES:%=$(outdir)/feta-braces-%.pfb)
+ cat $< $(if $(findstring brace,$<),,$(subst feta,parmesan,$<)) \
+ $(if $(findstring brace,$<),,$(subst feta,feta-alphabet,$<)) > $@
+
+
+## ugh -- we want this to prevent failing -j2 compiles.
+$(outdir)/feta26.otf-table: $(outdir)/feta26.lisp \
+ $(outdir)/parmesan26.lisp \
+ $(outdir)/feta-alphabet26.lisp
+$(outdir)/feta23.otf-table: $(outdir)/feta23.lisp \
+ $(outdir)/parmesan23.lisp \
+ $(outdir)/feta-alphabet23.lisp
+$(outdir)/feta20.otf-table: $(outdir)/feta20.lisp \
+ $(outdir)/parmesan20.lisp \
+ $(outdir)/feta-alphabet20.lisp
+$(outdir)/feta18.otf-table: $(outdir)/feta18.lisp \
+ $(outdir)/parmesan18.lisp \
+ $(outdir)/feta-alphabet18.lisp
+$(outdir)/feta16.otf-table: $(outdir)/feta16.lisp \
+ $(outdir)/parmesan16.lisp \
+ $(outdir)/feta-alphabet16.lisp
+$(outdir)/feta14.otf-table: $(outdir)/feta14.lisp \
+ $(outdir)/parmesan14.lisp \
+ $(outdir)/feta-alphabet14.lisp
+$(outdir)/feta13.otf-table: $(outdir)/feta13.lisp \
+ $(outdir)/parmesan13.lisp \
+ $(outdir)/feta-alphabet13.lisp
+$(outdir)/feta11.otf-table: $(outdir)/feta11.lisp \
+ $(outdir)/parmesan11.lisp \
+ $(outdir)/feta-alphabet11.lisp
+
+$(outdir)/aybabtu.otf: $(outdir)/aybabtu.subfonts \
+ $(outdir)/aybabtu.fontname \
+ $(outdir)/aybabtu.otf-table \
+ $(outdir)/aybabtu.otf-gtable \
+ $(outdir)/aybabtu.pe
+
+$(outdir)/aybabtu.otf \
+$(outdir)/aybabtu.svg: $(BRACES:%=$(outdir)/feta-braces-%.pfb)
$(outdir)/aybabtu.fontname:
echo -n 'aybabtu' > $@
$(outdir)/aybabtu.subfonts:
echo $(subst .mf,,$(call src-wildcard,feta-braces-[a-z].mf)) > $@
-$(PE_SCRIPTS): $(buildscript-dir)/gen-emmentaler-scripts.py
+$(PE_SCRIPTS): $(top-build-dir)/buildscripts/$(outdir)/gen-emmentaler-scripts
$(PYTHON) $< --dir=$(outdir)
ALL_FONTS = $(FETA_FONTS)
# Make tfm files first, log files last,
# so that normally log files aren't made twice
-ALL_GEN_FILES=$(LOG_FILES) $(ENC_FILES) $(LISP_FILES) $(OTF_TABLES) $(NCSB_OTFS) $(PFB_FILES) $(OTF_FILES) $(SVG_FILES)
+ALL_GEN_FILES = $(LOG_FILES) \
+ $(ENC_FILES) \
+ $(LISP_FILES) \
+ $(OTF_TABLES) \
+ $(NCSB_OTFS) \
+ $(PFB_FILES) \
+ $(OTF_FILES) \
+ $(SVG_FILES)
-#PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)"
+# PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)"
-INSTALLATION_DIR=$(local_lilypond_datadir)/fonts/source
-INSTALLATION_FILES=$(MF_FILES)
+INSTALLATION_DIR = $(local_lilypond_datadir)/fonts/source
+INSTALLATION_FILES = $(MF_FILES)
-INSTALLATION_OUT_SUFFIXES=1 2 3 4 5 6
+INSTALLATION_OUT_SUFFIXES = 1 2 3
-INSTALLATION_OUT_DIR2=$(local_lilypond_datadir)/fonts/otf
-INSTALLATION_OUT_FILES2=$(OTF_FILES) $(NCSB_OTFS)
+INSTALLATION_OUT_DIR1 = $(local_lilypond_datadir)/fonts/otf
+INSTALLATION_OUT_FILES1 = $(OTF_FILES) \
+ $(NCSB_OTFS)
-INSTALLATION_OUT_DIR5=$(local_lilypond_datadir)/fonts/type1
-INSTALLATION_OUT_FILES5=$(PFB_FILES)
+INSTALLATION_OUT_DIR2 = $(local_lilypond_datadir)/fonts/svg
+INSTALLATION_OUT_FILES2 = $(SVG_FILES)
-export MFINPUTS:=.:$(MFINPUTS)
+INSTALLATION_OUT_DIR3 = $(local_lilypond_datadir)/fonts/type1
+INSTALLATION_OUT_FILES3 = $(PFB_FILES)
+export MFINPUTS := .:$(MFINPUTS)
-default: $(ALL_GEN_FILES) $(outdir)/emmentaler-20.otf tree-regen $(outdir)/fonts.conf
+default: $(ALL_GEN_FILES) \
+ $(outdir)/emmentaler-20.otf \
+ tree-regen \
+ $(outdir)/fonts.conf
.PHONY: tree-regen
##
## todo: this also depends on .tfm, FIXME.
-$(outdir)/%.lisp $(outdir)/%.otf-gtable $(outdir)/%.enc $(outdir)/%.dep: $(outdir)/%.log
- $(PYTHON) $(buildscript-dir)/mf-to-table.py --global-lisp=$(outdir)/$(<F:.log=.otf-gtable) --lisp=$(outdir)/$(<F:.log=.lisp) --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --enc $(outdir)/$(<F:.log=.enc) $<
+$(outdir)/%.lisp \
+$(outdir)/%.otf-gtable \
+$(outdir)/%.enc \
+$(outdir)/%.dep: $(outdir)/%.log
+ $(PYTHON) $(buildscript-dir)/mf-to-table.py \
+ --global-lisp=$(outdir)/$(<F:.log=.otf-gtable) \
+ --lisp=$(outdir)/$(<F:.log=.lisp) \
+ --outdir=$(outdir) \
+ --dep $(outdir)/$(<F:.log=.dep) \
+ --enc $(outdir)/$(<F:.log=.enc) \
+ $<
local-clean:
rm -f mfplain.mem mfplain.log
rm -f *.tfm *.log
-## fixme: why is this necessary?
-$(outdir)/%.enc.in: %.enc
- cp $< $@
-
-
$(outdir)/fonts.conf:
echo '<fontconfig><dir>'$(shell cd $(outdir); pwd)'</dir></fontconfig>' > $@
-$(NCSB_OTFS): $(NCSB_SOURCE_FILES) $(buildscript-dir)/pfx2ttf.fontforge
+$(NCSB_OTFS): $(NCSB_SOURCE_FILES) \
+ $(buildscript-dir)/pfx2ttf.fontforge
$(foreach i, $(basename $(NCSB_SOURCE_FILES)), \
$(FONTFORGE) -script $(buildscript-dir)/pfx2ttf.fontforge \
$(i).pfb $(i).afm $(outdir)/ && ) true
+# eof
# Translation of LilyPond.
-# Copyright (C) 2007 Han-Wen Nienhuys, Jan Nieuwenhuizen
+# Copyright (C) 2008 Han-Wen Nienhuys, Jan Nieuwenhuizen
# This file is distributed under the same license as lilypond package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
-"Project-Id-Version: lilypond 2.11.34\n"
+"Project-Id-Version: lilypond 2.11.38\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2007-10-04 17:07+0200\n"
+"POT-Creation-Date: 2008-01-30 10:02+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "%s has been replaced by %s"
msgstr ""
+#: convertrules.py:96
+msgid "new \\header format"
+msgstr ""
+
+#: convertrules.py:130
+msgid "\\translator syntax"
+msgstr ""
+
+#: convertrules.py:381
+msgid "new \\notenames format"
+msgstr ""
+
+#: convertrules.py:401 convertrules.py:428
+msgid "new tremolo format"
+msgstr ""
+
+#: convertrules.py:541
+msgid "new \\textscript markup text"
+msgstr ""
+
+#: convertrules.py:1161
+msgid "cluster syntax"
+msgstr ""
+
#: convertrules.py:2408
msgid "LilyPond source must be UTF-8"
msgstr ""
msgid "Or save as UTF-8 in your editor"
msgstr ""
+#: convertrules.py:2482
+msgid "auto beam settings"
+msgstr ""
+
+#: convertrules.py:2974
+msgid "edge-text settings for TextSpanner."
+msgstr ""
+
+#: convertrules.py:2975
+#, python-format
+msgid ""
+"Use\n"
+"\n"
+"%s"
+msgstr ""
+
+#: convertrules.py:3021
+msgid "all settings related to dashed lines.\n"
+msgstr ""
+
+#: convertrules.py:3022
+msgid "Use \\override ... #'style = #'line for solid lines and\n"
+msgstr ""
+
+#: convertrules.py:3023
+msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
+msgstr ""
+
#: fontextract.py:26
#, python-format
msgid "Scanning %s"
msgstr ""
#: abc2ly.py:1354 convert-ly.py:103 etf2ly.py:1192 lilypond-book.py:161
-#: midi2ly.py:900 musicxml2ly.py:975
+#: midi2ly.py:900 musicxml2ly.py:1682
msgid "Report bugs via"
msgstr ""
"file."
msgstr ""
-#: etf2ly.py:1185 midi2ly.py:875 musicxml2ly.py:968 main.cc:154 main.cc:159
+#: etf2ly.py:1185 midi2ly.py:875 musicxml2ly.py:1675 main.cc:154 main.cc:159
msgid "FILE"
msgstr ""
"must use this with dvips -h INPUT.psfonts"
msgstr ""
-#: lilypond-book.py:153 midi2ly.py:885 musicxml2ly.py:959 main.cc:162
+#: lilypond-book.py:153 midi2ly.py:885 musicxml2ly.py:1645 main.cc:162
msgid "be verbose"
msgstr ""
-#: lilypond-book.py:765
+#: lilypond-book.py:768
#, python-format
msgid "file not found: %s"
msgstr ""
-#: lilypond-book.py:996
+#: lilypond-book.py:1002
#, python-format
msgid "deprecated ly-option used: %s=%s"
msgstr ""
-#: lilypond-book.py:999
+#: lilypond-book.py:1005
#, python-format
msgid "compatibility mode translation: %s=%s"
msgstr ""
-#: lilypond-book.py:1003
+#: lilypond-book.py:1009
#, python-format
msgid "deprecated ly-option used: %s"
msgstr ""
-#: lilypond-book.py:1006
+#: lilypond-book.py:1012
#, python-format
msgid "compatibility mode translation: %s"
msgstr ""
-#: lilypond-book.py:1025
+#: lilypond-book.py:1031
#, python-format
msgid "ignoring unknown ly option: %s"
msgstr ""
-#: lilypond-book.py:1379
+#: lilypond-book.py:1401
#, python-format
msgid "Opening filter `%s'"
msgstr ""
-#: lilypond-book.py:1396
+#: lilypond-book.py:1418
#, python-format
msgid "`%s' failed (%d)"
msgstr ""
-#: lilypond-book.py:1397
+#: lilypond-book.py:1419
msgid "The error log is as follows:"
msgstr ""
-#: lilypond-book.py:1469
+#: lilypond-book.py:1491
msgid "cannot find \\begin{document} in LaTeX document"
msgstr ""
-#: lilypond-book.py:1580
+#: lilypond-book.py:1602
msgid "Writing snippets..."
msgstr ""
-#: lilypond-book.py:1585
+#: lilypond-book.py:1607
msgid "Processing..."
msgstr ""
-#: lilypond-book.py:1589
+#: lilypond-book.py:1611
msgid "All snippets are up to date..."
msgstr ""
-#: lilypond-book.py:1599
+#: lilypond-book.py:1621
#, python-format
msgid "cannot determine format for: %s"
msgstr ""
-#: lilypond-book.py:1610
+#: lilypond-book.py:1632
#, python-format
msgid "%s is up to date."
msgstr ""
-#: lilypond-book.py:1616
+#: lilypond-book.py:1638
#, python-format
msgid "Writing `%s'..."
msgstr ""
-#: lilypond-book.py:1671
+#: lilypond-book.py:1693
msgid "Output would overwrite input file; use --output."
msgstr ""
-#: lilypond-book.py:1675
+#: lilypond-book.py:1697
#, python-format
msgid "Reading %s..."
msgstr ""
-#: lilypond-book.py:1694
+#: lilypond-book.py:1716
msgid "Dissecting..."
msgstr ""
-#: lilypond-book.py:1710
+#: lilypond-book.py:1732
#, python-format
msgid "Compiling %s..."
msgstr ""
-#: lilypond-book.py:1719
+#: lilypond-book.py:1741
#, python-format
msgid "Processing include: %s"
msgstr ""
-#: lilypond-book.py:1733
+#: lilypond-book.py:1755
#, python-format
msgid "Removing `%s'"
msgstr ""
-#: lilypond-book.py:1766
+#: lilypond-book.py:1788
msgid "option --psfonts not used"
msgstr ""
-#: lilypond-book.py:1767
+#: lilypond-book.py:1789
msgid "processing with dvips will have no fonts"
msgstr ""
-#: lilypond-book.py:1770
+#: lilypond-book.py:1792
msgid "DVIPS usage:"
msgstr ""
-#: lilypond-book.py:1826
+#: lilypond-book.py:1848
#, python-format
msgid "Writing fonts to %s..."
msgstr ""
msgid "%s output to `%s'..."
msgstr ""
-#: midi2ly.py:860 musicxml2ly.py:955
+#: midi2ly.py:860 musicxml2ly.py:1641
#, python-format
msgid "Convert %s to LilyPond input."
msgstr ""
msgid "no files specified on command line."
msgstr ""
-#: musicxml2ly.py:943
-msgid "musicxml2ly FILE.xml"
+#: musicxml2ly.py:1628
+msgid "musicxml2ly [options] FILE.xml"
msgstr ""
-#: musicxml2ly.py:946
+#: musicxml2ly.py:1631
#, python-format
msgid ""
"This program is free software. It is covered by the GNU General Public\n"
"information."
msgstr ""
-#: musicxml2ly.py:965
+#: musicxml2ly.py:1651
msgid "Use lxml.etree; uses less memory and cpu time."
msgstr ""
-#: musicxml2ly.py:973
+#: musicxml2ly.py:1657
+msgid "Input file is a zip-compressed MusicXML file."
+msgstr ""
+
+#: musicxml2ly.py:1662
+msgid "Convert pitches in relative mode."
+msgstr ""
+
+#: musicxml2ly.py:1666
+msgid "Use a different language file, e.g. 'deutsch' for deutsch.ly."
+msgstr ""
+
+#: musicxml2ly.py:1672
+msgid "Do not convert directions (^, _ or -) for articulations."
+msgstr ""
+
+#: musicxml2ly.py:1680
msgid "set output filename to FILE"
msgstr ""
msgid "invalid argument `%s' to option `%s'"
msgstr ""
-#: warn.cc:68 grob.cc:565 input.cc:82
+#: warn.cc:68 grob.cc:566 input.cc:82
#, c-format
msgid "programming error: %s"
msgstr ""
msgid "removing this vertical group"
msgstr ""
-#: axis-group-interface.cc:531
+#: axis-group-interface.cc:524
msgid "an outside-staff object should have a direction, defaulting to up"
msgstr ""
msgid "beam was started here"
msgstr ""
-#: beam-quanting.cc:309
+#: beam-quanting.cc:307
msgid "no feasible beam position"
msgstr ""
msgid "removing beam with no stems"
msgstr ""
-#: beam.cc:1039
+#: beam.cc:1069
msgid "no viable initial configuration found: may not find good beam slope"
msgstr ""
msgid "unknown cluster style `%s'"
msgstr ""
-#: cluster.cc:135
+#: cluster.cc:147
msgid "junking empty cluster"
msgstr ""
msgid "dot `%s' not found"
msgstr ""
-#: dynamic-engraver.cc:193
+#: dynamic-engraver.cc:192
msgid "cannot find start of (de)crescendo"
msgstr ""
-#: dynamic-engraver.cc:202
+#: dynamic-engraver.cc:201
msgid "already have a decrescendo"
msgstr ""
-#: dynamic-engraver.cc:204
+#: dynamic-engraver.cc:203
msgid "already have a crescendo"
msgstr ""
-#: dynamic-engraver.cc:207
+#: dynamic-engraver.cc:206
msgid "cresc starts here"
msgstr ""
-#: dynamic-engraver.cc:336
+#: dynamic-engraver.cc:335
msgid "unterminated (de)crescendo"
msgstr ""
msgid "Rebuilding FontConfig cache %s, this may take a while..."
msgstr ""
-#: font-config.cc:55
+#: font-config.cc:57
#, c-format
msgid "failed adding font directory: %s"
msgstr ""
-#: font-config.cc:57
+#: font-config.cc:59
#, c-format
msgid "adding font directory: %s"
msgstr ""
msgstr ""
#. FIXME: constant error message.
-#: mark-engraver.cc:154
+#: mark-engraver.cc:129
msgid "rehearsalMark must have integer value"
msgstr ""
-#: mark-engraver.cc:160
+#: mark-engraver.cc:135
msgid "mark label must be a markup object"
msgstr ""
msgstr ""
#. find out the ideal number of pages
-#: optimal-page-breaking.cc:44
+#: optimal-page-breaking.cc:56
msgid "Finding the ideal number of pages..."
msgstr ""
-#: optimal-page-breaking.cc:59
+#: optimal-page-breaking.cc:71
msgid "Fitting music on 1 page..."
msgstr ""
-#: optimal-page-breaking.cc:61
+#: optimal-page-breaking.cc:73
+#, c-format
+msgid "Fitting music on %d pages..."
+msgstr ""
+
+#: optimal-page-breaking.cc:75
#, c-format
msgid "Fitting music on %d or %d pages..."
msgstr ""
+#: optimal-page-breaking.cc:152 page-turn-page-breaking.cc:226
+#: paper-score.cc:146
+msgid "Drawing systems..."
+msgstr ""
+
#: page-turn-page-breaking.cc:146
#, c-format
msgid "page-turn-page-breaking: breaking from %d to %d"
msgid "Calculating page and line breaks (%d possible page breaks)..."
msgstr ""
-#: page-turn-page-breaking.cc:226 paper-score.cc:146
-msgid "Drawing systems..."
-msgstr ""
-
#: page-turn-page-breaking.cc:275
#, c-format
msgid "break starting at page %d"
msgid "MIDI output to `%s'..."
msgstr ""
-#: phrasing-slur-engraver.cc:131
+#: phrasing-slur-engraver.cc:139
msgid "unterminated phrasing slur"
msgstr ""
msgid "cannot end slur"
msgstr ""
-#: slur.cc:359
+#: slur.cc:353
#, c-format
msgid "Ignoring grob for slur: %s. avoid-slur not set?"
msgstr ""
msgid "have to be in Chord mode for chords"
msgstr ""
-#: lexer.ll:177
+#: lexer.ll:179
msgid "stray UTF-8 BOM encountered"
msgstr ""
-#: lexer.ll:181
+#: lexer.ll:183
msgid "Skipping UTF-8 BOM"
msgstr ""
-#: lexer.ll:236
+#: lexer.ll:238
#, c-format
msgid "Renaming input to: `%s'"
msgstr ""
-#: lexer.ll:253
+#: lexer.ll:255
msgid "quoted string expected after \\version"
msgstr ""
-#: lexer.ll:257
+#: lexer.ll:259
msgid "quoted string expected after \\sourcefilename"
msgstr ""
-#: lexer.ll:261
+#: lexer.ll:263
msgid "integer expected after \\sourcefileline"
msgstr ""
-#: lexer.ll:274
+#: lexer.ll:276
msgid "EOF found inside a comment"
msgstr ""
-#: lexer.ll:289
+#: lexer.ll:291
msgid "\\maininput not allowed outside init files"
msgstr ""
-#: lexer.ll:313
+#: lexer.ll:315
#, c-format
msgid "wrong or undefined identifier: `%s'"
msgstr ""
#. backup rule
-#: lexer.ll:322
+#: lexer.ll:324
msgid "end quote missing"
msgstr ""
-#: lexer.ll:467
+#: lexer.ll:469
msgid "Brace found at end of lyric. Did you forget a space?"
msgstr ""
-#: lexer.ll:580
+#: lexer.ll:582
msgid "Brace found at end of markup. Did you forget a space?"
msgstr ""
-#: lexer.ll:684
+#: lexer.ll:686
#, c-format
msgid "invalid character: `%c'"
msgstr ""
-#: lexer.ll:799
+#: lexer.ll:801 lexer.ll:802
#, c-format
msgid "unknown escaped string: `\\%s'"
msgstr ""
-#: lexer.ll:905
+#: lexer.ll:907 lexer.ll:908
#, c-format
msgid "file too old: %s (oldest supported: %s)"
msgstr ""
-#: lexer.ll:906
+#: lexer.ll:908 lexer.ll:909
msgid "consider updating the input with the convert-ly script"
msgstr ""
-#: lexer.ll:912
+#: lexer.ll:914 lexer.ll:915
#, c-format
msgid "program too old: %s (file requires: %s)"
msgstr ""
msgid "translator listens to nonexisting event class ~A"
msgstr ""
-#: define-markup-commands.scm:280
+#: define-markup-commands.scm:296
msgid "no systems found in \\score markup, does it have a \\layout block?"
msgstr ""
-#: define-markup-commands.scm:1294
+#: define-markup-commands.scm:1310
#, scheme-format
msgid "not a valid duration string: ~a"
msgstr ""
msgid "old relative compatibility not used"
msgstr ""
-#: lily.scm:185
+#: lily.scm:177
#, scheme-format
msgid "cannot find: ~A"
msgstr ""
-#: lily.scm:250
+#: lily.scm:242
#, scheme-format
msgid "wrong type for argument ~a. Expecting ~a, found ~s"
msgstr ""
msgid "expecting 2 elements for chord tremolo, found ~a"
msgstr ""
-#: music-functions.scm:571
+#: music-functions.scm:564
#, scheme-format
msgid "music expected: ~S"
msgstr ""
#. FIXME: uncomprehensable message
-#: music-functions.scm:621
+#: music-functions.scm:614
#, scheme-format
msgid "Bar check failed. Expect to be at ~a, instead at ~a"
msgstr ""
-#: music-functions.scm:771
+#: music-functions.scm:764
#, scheme-format
msgid "cannot find quoted music: `~S'"
msgstr ""
-#: music-functions.scm:968
+#: music-functions.scm:961
#, scheme-format
msgid "unknown accidental style: ~S"
msgstr ""
msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
msgstr ""
-#: parser-clef.scm:127
+#: parser-clef.scm:129
#, scheme-format
msgid "unknown clef type `~a'"
msgstr ""
-#: parser-clef.scm:128
+#: parser-clef.scm:130
#, scheme-format
msgid "supported clefs: ~a"
msgstr ""
pass
conversions = []
-error_file = sys.stderr
+stderr_write = lilylib.stderr_write
+
+def warning (str):
+ stderr_write (_ ("warning: %s") % str)
def conv(str):
if re.search ('\\\\multi', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\multi")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\multi")
+ stderr_write ('\n')
return str
-conversions.append (((0,1,9), conv, '\\header { key = concat + with + operator }'))
+conversions.append (((0,1,9), conv, _ ('\\header { key = concat + with + operator }')))
def conv (str):
if re.search ('\\\\octave', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\octave")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\octave")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
# raise FatalConversionError ()
return str
conversions.append ((
- ((0,1,19), conv, 'deprecated \\octave; cannot convert automatically')))
+ ((0,1,19), conv, _ ('deprecated %s') % '\\octave')))
return str
conversions.append ((
- ((0,1,20), conv, 'deprecated \\textstyle, new \\key syntax')))
+ ((0,1,20), conv, _ ('deprecated \\textstyle, new \\key syntax'))))
return str
conversions.append ((
- ((1,0,0), conv, '0.1.21 -> 1.0.0 ')))
+ ((1,0,0), conv, _ ("bump version for release"))))
def conv(str):
if re.search ('\\\\header', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "new \\header format")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("new \\header format"))
+ stderr_write ('\n')
return str
-conversions.append (((1,0,2), conv, '\\header { key = concat + with + operator }'))
+conversions.append (((1,0,2), conv, _ ('\\header { key = concat + with + operator }')))
def conv(str):
def conv(str):
if re.search ('[a-zA-Z]+ = *\\translator',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\translator syntax")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("\\translator syntax"))
+ stderr_write ('\n')
# raise FatalConversionError ()
return str
def conv(str):
if re.search ('\\\\repeat',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\repeat")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\repeat")
+ stderr_write ('\n')
# raise FatalConversionError ()
return str
conversions.append (((1,0,18), conv,
- '\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative'))
+ _ ('\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative')))
def conv(str):
return str
conversions.append (((1,1,52), conv,
- 'deprecate \\grouping'))
+ _ ('deprecate %s') % '\\grouping'))
def conv(str):
if re.search ('\\\\repetitions',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\repetitions")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\repetitions")
+ stderr_write ('\n')
# raise FatalConversionError ()
return str
conversions.append (((1,3,23), conv,
- '\\\\repetitions feature dropped'))
+ _ ('deprecate %s ') % '\\repetitions'))
str = re.sub ("\\\\musicalpitch *{([0-9 -]+)}",
"\\\\musicalpitch #'(\\1)", str)
if re.search ('\\\\notenames',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "new \\notenames format")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("new \\notenames format"))
+ stderr_write ('\n')
return str
conversions.append (((1,3,38), conv, '\musicalpitch { a b c } -> #\'(a b c)'))
def conv (str):
if re.search ('\\[:',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "new tremolo format")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("new tremolo format"))
+ stderr_write ('\n')
return str
conversions.append (((1,3,41), conv,
return str
conversions.append (((1,3,42), conv,
- 'Staff_margin_engraver deprecated, use Instrument_name_engraver'))
+ _ ('Staff_margin_engraver deprecated, use Instrument_name_engraver')))
def conv (str):
def conv (str):
if re.search ('\\\\keysignature', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "new tremolo format")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % '\\keysignature')
+ stderr_write ('\n')
return str
return str
conversions.append (((1,3,93), conv,
- 'property definiton case (eg. onevoice -> oneVoice)'))
+ _ ('change property definiton case (eg. onevoice -> oneVoice)')))
def conv (str):
str = re.sub ('ChordNames*', 'ChordNames', str)
if re.search ('\\\\textscript "[^"]* *"[^"]*"', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "new \\textscript markup text")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("new \\textscript markup text"))
+ stderr_write ('\n')
str = re.sub ('\\textscript +("[^"]*")', '\\textscript #\\1', str)
str = re.sub ('\n([^ \t\n]+)[ \t]*= *', regularize_assignment, str)
return str
-conversions.append (((1,3,117), conv, 'identifier names: $!foo_bar_123 -> xfooBarABC'))
+conversions.append (((1,3,117), conv, _ ('identifier names: %s') % '$!foo_bar_123 -> xfooBarABC'))
str = re.sub ('point-and-click +#t', 'point-and-click line-column-location', str)
return str
-conversions.append (((1,3,138), conv, 'point-and-click argument changed to procedure.'))
+conversions.append (((1,3,138), conv, _ ('point-and-click argument changed to procedure.')))
def conv (str):
str = re.sub ("([^ \t;#]);", "\\1", str)
return str
-conversions.append (((1,3,146), conv, 'semicolons removed'))
+conversions.append (((1,3,146), conv, _('semicolons removed')))
def conv (str):
return str
# 40 ?
-conversions.append (((1,5,40), conv, 'breakAlignOrder property names'))
+conversions.append (((1,5,40), conv, _ ('%s property names') % 'breakAlignOrder'))
str = re.sub ('textNonEmpty *= *##f', "TextScript \\set #'no-spacing-rods = ##t", str)
return str
-conversions.append (((1,5,58), conv, 'deprecate textNonEmpty'))
+conversions.append (((1,5,58), conv, _ ('deprecate %s') % 'textNonEmpty'))
def conv (str):
if re.search (r'\addlyrics',str) \
and re.search ('automaticMelismata', str) == None:
- error_file.write ('\n')
- error_file.write (NOT_SMART % "automaticMelismata; turned on by default since 1.5.67.")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "automaticMelismata; turned on by default since 1.5.67.")
+ stderr_write ('\n')
raise FatalConversionError ()
return str
conversions.append (((1,5,67), conv,
- 'automaticMelismata turned on by default'))
+ _ ('automaticMelismata turned on by default')))
def conv (str):
def conv(str):
if re.search( r'\\GraceContext', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "GraceContext")
- error_file.write (FROM_TO \
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "GraceContext")
+ stderr_write (FROM_TO \
% ("GraceContext", "#(add-to-grace-init .. )"))
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
str = re.sub ('HaraKiriStaffContext', 'RemoveEmptyStaffContext', str)
return str
-conversions.append (((1,7,19), conv,"remove GraceContext"))
+conversions.append (((1,7,19), conv, _ ("remove %s") % "GraceContext"))
def conv(str):
if re.search( r'-(start|stop)Cluster', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "Cluster syntax")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("cluster syntax"))
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
return str
-conversions.append (((1,7,24), conv,"cluster syntax"))
+conversions.append (((1,7,24), conv, _ ("cluster syntax")))
def conv(str):
str = re.sub (r"\\property *Staff\.(Sustain|Sostenuto|UnaCorda)Pedal *\\revert *#'pedal-type", '', str)
return str
-conversions.append (((1,7,28), conv,"new Pedal style syntax"))
+conversions.append (((1,7,28), conv, _ ("new Pedal style syntax")))
return str
-conversions.append (((1,9,0), conv, """New relative mode,
-Postfix articulations, new text markup syntax, new chord syntax."""))
+conversions.append (((1,9,0), conv, _ ("""New relative mode,
+Postfix articulations, new text markup syntax, new chord syntax.""")))
def conv (str):
if re.search ("font-style",str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "font-style")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "font-style")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
str = re.sub (r'@\\markup', r'-\\markup', str)
return str
-conversions.append (((1,9,1), conv, """Remove - before articulation"""))
+conversions.append (((1,9,1), conv, _ ("""Remove - before articulation""")))
def conv (str):
str = re.sub ('ly:set-context-property',
'acciaccatura', str)
if re.search ("context-spec-music", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "context-spec-music")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "context-spec-music")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
return str
conversions.append (((1,9,3), conv,
- """\\acciaccatura misspelling, fingerHorizontalDirection -> fingeringOrientations"""))
+ (_ ("%s misspelling") % "\\acciaccatura") + \
+ ", fingerHorizontalDirection -> fingeringOrientations"))
def conv (str):
if re.search ('\\figures', str):
- error_file.write ("Warning: attempting automatic \\figures conversion. Check results!");
+ warning (_ ("attempting automatic \\figures conversion. Check results!"));
def figures_replace (m):
return str
-conversions.append (((1,9,4), conv, 'Swap < > and << >>'))
+conversions.append (((1,9,4), conv, _ ('Swap < > and << >>')))
def conv (str):
def conv (str):
if re.search ("ly:get-font", str) :
- error_file.write ('\n')
- error_file.write (NOT_SMART % "(ly:-get-font")
- error_file.write ('\n')
- error_file.write (FROM_TO \
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "(ly:-get-font")
+ stderr_write ('\n')
+ stderr_write (FROM_TO \
% ("(ly:paper-get-font (ly:grob-get-paper foo) .. )",
"(ly:paper-get-font (ly:grob-get-paper foo) .. )"))
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
if re.search ("\\pitch *#", str) :
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\pitch")
- error_file.write ('\n')
- error_file.write ("Use Scheme code to construct arbitrary note events.")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\pitch")
+ stderr_write ('\n')
+ stderr_write (_ ("Use Scheme code to construct arbitrary note events."))
+ stderr_write ('\n')
raise FatalConversionError ()
return str
-conversions.append (((1,9,6), conv, 'ly:get-font deprecated.'))
+conversions.append (((1,9,6), conv, _ ('deprecate %s') % 'ly:get-font'))
def conv (str):
def sub_alteration (m):
m= re.search ("\\\\outputproperty #([^#]+)[\t\n ]*#'([^ ]+)", str)
if m:
- error_file.write (\
+ stderr_write (_ (\
r"""\outputproperty found,
Please hand-edit, using
\applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY VALUE>)
-as a substitution text.""" % (m.group (1), m.group (2)) )
+as a substitution text.""") % (m.group (1), m.group (2)) )
raise FatalConversionError ()
if re.search ("ly:(make-pitch|pitch-alteration)", str) \
or re.search ("keySignature", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "pitches")
- error_file.write ('\n')
- error_file.write (
- """The alteration field of Scheme pitches was multiplied by 2
-to support quarter tone accidentals. You must update the following constructs by manually:
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "pitches")
+ stderr_write ('\n')
+ stderr_write (
+ _ ("""The alteration field of Scheme pitches was multiplied by 2
+to support quarter tone accidentals. You must update the following constructs manually:
* calls of ly:make-pitch and ly:pitch-alteration
* keySignature settings made with \property
-""")
+"""))
raise FatalConversionError ()
return str
conversions.append (((1,9,7), conv,
- '''use symbolic constants for alterations,
-remove \\outputproperty, move ly:verbose into ly:get-option'''))
+ _ ('''use symbolic constants for alterations,
+remove \\outputproperty, move ly:verbose into ly:get-option''')))
def conv (str):
if re.search ("dash-length",str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "dash-length")
- error_file.write ('\n')
- error_file.write (FROM_TO % ("dash-length", "dash-fraction"))
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "dash-length")
+ stderr_write ('\n')
+ stderr_write (FROM_TO % ("dash-length", "dash-fraction"))
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
return str
str = re.sub (r"\\property ([a-zA-Z]+)\s*\.\s*automaticMelismata\s*=\s*##([ft])", func, str)
return str
-conversions.append (((2,1,4), conv, """removal of automaticMelismata; use melismaBusyProperties instead."""))
+conversions.append (((2,1,4), conv, _ ("""removal of automaticMelismata; use melismaBusyProperties instead.""")))
def conv (str):
if re.search (r'\\partcombine', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\partcombine")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\partcombine")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
# this rule doesn't really work,
return str
-conversions.append (((2,1,17), conv, """\\partcombine syntax change to \\newpartcombine"""))
+conversions.append (((2,1,17), conv, _ ("\\partcombine syntax change to \\newpartcombine")))
def conv (str):
def conv (str):
if re.search ('include "drumpitch', str):
- error_file.write ("Drums found. Enclose drum notes in \\drummode")
+ stderr_write (_ ("Drums found. Enclose drum notes in \\drummode"))
str = re.sub (r'\\include "drumpitch-init.ly"','', str)
if re.search ('drums->paper', str):
- error_file.write ("\nDrum notation found. Check file manually!")
+ stderr_write (_ ("\n%s found. Check file manually!\n") % _("Drum notation"))
str = re.sub (r"""\\apply\s+#\(drums->paper\s+'([a-z]+)\)""",
r"""\property DrumStaff.drumStyleTable = #\1-style""",
str)
if re.search ('Thread', str):
- error_file.write ("\nThread found. Check file manually!\n");
+ stderr_write (_ ("\n%s found. Check file manually!\n") % "Thread");
str = re.sub (r"""(\\once\s*)?\\property\s+Thread\s*\.\s*NoteHead\s*"""
+ r"""\\(set|override)\s*#'style\s*=\s*#'harmonic"""
str = re.sub (r"""Thread""", """Voice""", str)
if re.search ('\bLyrics\b', str):
- error_file.write ("\nLyrics found. Check file manually!\n");
+ stderr_write (_ ("\n%s found. Check file manually!\n") % "Lyrics");
str = re.sub (r"""LyricsVoice""", r"""L@ricsVoice""", str)
str = re.sub (r"""\bLyrics\b""", r"""LyricsVoice""", str)
return str
-conversions.append (((2,1,19), conv, """Drum notation changes, Removing \\chordmodifiers, \\notenames.
-Harmonic notes. Thread context removed. Lyrics context removed."""))
+conversions.append (((2,1,19), conv, _ ("""Drum notation changes, Removing \\chordmodifiers, \\notenames.
+Harmonic notes. Thread context removed. Lyrics context removed.""")))
def conv (str):
str = re.sub (r'nonevent-skip', 'skip-music', str)
brew-new-markup-molecule -> Text_item::print
LyricsVoice -> Lyrics
tupletInvisible -> TupletBracket \set #'transparent
-Grob::preset_extent removed.
-""" ))
+%s.
+""" % (_ ("remove %s") % "Grob::preset_extent")))
def conv (str):
str = re.sub ('Molecule', 'Stencil', str)
return str
-conversions.append (((2,1,22), conv, """new syntax for property settings:
+conversions.append (((2,1,22), conv, """%s
\\set A.B = #C , \\unset A.B
\\override A.B #C = #D, \\revert A.B #C
-"""))
+""" % _ ("new syntax for property settings:")))
def conv (str):
def subst_in_trans (match):
return str
-conversions.append (((2,1,23), conv, """Property setting syntax in \\translator{ }"""))
+conversions.append (((2,1,23), conv, _ ("Property setting syntax in \\translator{ }")))
+
def conv (str):
str = re.sub (r'music-list\?', 'ly:music-list?', str)
str = re.sub (r'\|\s*~', '~ |', str)
str = re.sub (r'ly:get-broken-into', 'ly:spanner-broken-into', str)
str = re.sub (r'Melisma_engraver', 'Melisma_translator', str)
if re.search ("ly:get-paper-variable", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "ly:paper-get-variable")
- error_file.write ('\n')
- error_file.write ('use (ly:paper-lookup (ly:grob-paper ))')
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "ly:paper-get-variable")
+ stderr_write ('\n')
+ stderr_write (_ ('use %s') % '(ly:paper-lookup (ly:grob-paper ))')
+ stderr_write ('\n')
raise FatalConversionError ()
str = re.sub (r'\\defaultAccidentals', "#(set-accidental-style 'default)", str)
return str
-conversions.append (((2,1,25), conv, """Scheme grob function renaming"""))
+conversions.append (((2,1,25), conv, _ ("Scheme grob function renaming")))
def conv (str):
return str
-conversions.append (((2,1,26), conv, """More Scheme function renaming"""))
+conversions.append (((2,1,26), conv, _ ("More Scheme function renaming")))
def conv (str):
def subst (m):
- g = string.atoi (m.group (2))
+ g = int (m.group (2))
o = g / 12
g -= o * 12
if g < 0:
return str
conversions.append (((2, 2, 0), conv,
- '''clean up version. '''))
+ _ ("bump version for release")))
def conv (str):
return re.sub (r'\\apply\b', r'\\applymusic', str)
def conv (str):
if re.search ('textheight', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "textheight")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
- error_file.write (
-"""Page layout has been changed, using paper size and margins.
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "textheight")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
+ stderr_write (
+_ ("""Page layout has been changed, using paper size and margins.
textheight is no longer used.
-""")
+"""))
str = re.sub (r'\\OrchestralScoreContext', '\\Score', str)
def func(m):
if m.group(1) not in ['RemoveEmptyStaff',
return str
conversions.append (((2, 3, 4), conv,
- '''remove \\notes'''))
+ _ ('remove %s') % '\\notes'))
str = re.sub (r'\\addlyrics', r'\\oldaddlyrics', str)
str = re.sub (r'\\newlyrics', r'\\addlyrics', str)
if re.search (r"\\override\s*TextSpanner", str):
- error_file.write ("\nWarning: TextSpanner has been split into DynamicTextSpanner and TextSpanner\n")
+ stderr_write ("\nWarning: TextSpanner has been split into DynamicTextSpanner and TextSpanner\n")
return str
conversions.append (((2, 3, 10), conv,
return str
conversions.append (((2, 3, 16), conv,
- '''\\foo -> \\foomode (for chords, notes, etc.)
-fold \\new FooContext \\foomode into \\foo.'''))
+ _ ('''\\foo -> \\foomode (for chords, notes, etc.)
+fold \\new FooContext \\foomode into \\foo.''')))
def conv (str):
str = re.sub (r'(slur|stem|phrasingSlur|tie|dynamic|dots|tuplet|arpeggio|)Both', r'\1Neutral', str)
return str
conversions.append (((2, 3, 17), conv,
- '''\\foo -> \\foomode (for chords, notes, etc.)
-fold \\new FooContext \\foomode into \\foo.'''))
+ '''slurBoth -> slurNeutral, stemBoth -> stemNeutral, etc.
+\\applymusic #(remove-tag 'foo) -> \\removeWithTag 'foo'''))
def conv (str):
str = re.sub (r'\\paper', r'\\layout', str)
str = re.sub (r'\\bookpaper', r'\\paper', str)
if re.search ('paper-set-staff-size', str):
- error_file.write ('''\nWarning: staff size should be changed at top-level
+ warning (_ ('''staff size should be changed at top-level
with
#(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)
-''')
+'''))
str = re.sub (r'#\(paper-set-staff-size', '%Use set-global-staff-size at toplevel\n% #(layout-set-staff-size', str)
conversions.append (((2, 3, 22),
conv,
- '''paper -> layout
- bookpaper -> paper''' ))
+ '''paper -> layout, bookpaper -> paper''' ))
def conv (str):
conversions.append (((2, 3, 24),
conv,
- '''regularize other identifiers.'''))
+ _ ('''regularize other identifiers''')))
def conv (str):
str = re.sub ('petrucci_c1', 'petrucci-c1', str)
conversions.append (((2, 4, 0),
conv,
- ''))
+ _ ("bump version for release")))
def conv (str):
str = re.sub (r'\\quote\s+"?([a-zA-Z0-9]+)"?\s+([0-9.*/]+)',
r'\\quoteDuring #"\1" { \skip \2 }',
- str
- )
+ str)
return str
conversions.append (((2, 5, 0),
conv,
- ''))
+ '\\quote -> \\quoteDuring'))
def conv (str):
if encoding == 'latin1':
return match.group (2)
- error_file.write ('\n')
- error_file.write (NOT_SMART % ("\\encoding: %s" % encoding))
- error_file.write ('\n')
- error_file.write (_ ("LilyPond source must be UTF-8"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % ("\\encoding: %s" % encoding))
+ stderr_write ('\n')
+ stderr_write (_ ("LilyPond source must be UTF-8"))
+ stderr_write ('\n')
if encoding == 'TeX':
- error_file.write (_ ("Try the texstrings backend"))
- error_file.write ('\n')
+ stderr_write (_ ("Try the texstrings backend"))
+ stderr_write ('\n')
else:
- error_file.write ( _("Do something like: %s") % \
+ stderr_write ( _("Do something like: %s") % \
("recode %s..utf-8 FILE" % encoding))
- error_file.write ('\n')
- error_file.write (_ ("Or save as UTF-8 in your editor"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (_ ("Or save as UTF-8 in your editor"))
+ stderr_write ('\n')
raise FatalConversionError ()
return match.group (0)
conversions.append (((2, 5, 13),
conv,
- '\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click'))
+ _ ('\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click')))
def conv (str):
if re.search ("ly:stencil-set-extent!", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "ly:stencil-set-extent!")
- error_file.write ('\n')
- error_file.write ('use (set! VAR (ly:make-stencil (ly:stencil-expr VAR) X-EXT Y-EXT))\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "ly:stencil-set-extent!")
+ stderr_write ('\n')
+ stderr_write ('use (set! VAR (ly:make-stencil (ly:stencil-expr VAR) X-EXT Y-EXT))\n')
raise FatalConversionError ()
if re.search ("ly:stencil-align-to!", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "ly:stencil-align-to!")
- error_file.write ('\n')
- error_file.write ('use (set! VAR (ly:stencil-aligned-to VAR AXIS DIR))\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "ly:stencil-align-to!")
+ stderr_write ('\n')
+ stderr_write ('use (set! VAR (ly:stencil-aligned-to VAR AXIS DIR))\n')
raise FatalConversionError ()
return str
conversions.append (((2, 5, 17),
conv,
- 'ly:stencil-set-extent! removed'))
+ _ ('remove %s') % 'ly:stencil-set-extent!'))
def conv (str):
str = re.sub (r"ly:warn\b", 'ly:warning', str)
def conv (str):
if re.search ("(override-|revert-)auto-beam-setting", str)\
or re.search ("autoBeamSettings", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "auto beam settings")
- error_file.write ('\n')
- error_file.write ('''
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("auto beam settings"))
+ stderr_write ('\n')
+ stderr_write (_ ('''
Auto beam settings must now specify each interesting moment in a measure
explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.
-''')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+'''))
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
return str
conversions.append (((2, 5, 21),
conv,
- 'warn about auto beam settings'))
+ _ ('warn about auto beam settings')))
def conv (str):
str = re.sub (r"unfoldrepeats", 'unfoldRepeats', str)
return str
conversions.append (((2, 5, 25), conv,
-
- 'unfoldrepeats -> unfoldRepeats,'
- + 'compressmusic -> compressMusic'))
+ 'unfoldrepeats -> unfoldRepeats, compressmusic -> compressMusic'))
def conv (str):
return str
conversions.append (((2, 6, 0), conv,
-
- 'dummy rule for 2.6'))
+ _ ("bump version for release")))
return str
conversions.append (((2, 7, 4), conv,
- '''keyAccidentalOrder->keyAlterationOrder'''))
+ '''keyAccidentalOrder -> keyAlterationOrder'''))
return str
conversions.append (((2, 7, 6), conv,
- '''Performer_group_performer -> Performer_group, Engraver_group_engraver -> Engraver_group
+ '''Performer_group_performer -> Performer_group, Engraver_group_engraver -> Engraver_group,
inside-slur -> avoid-slur'''))
subber, str)
if re.search ('bar-size-procedure', str):
- error_file.write (NOT_SMART % "bar-size-procedure")
+ stderr_write (NOT_SMART % "bar-size-procedure")
if re.search ('space-function', str):
- error_file.write (NOT_SMART % "space-function")
+ stderr_write (NOT_SMART % "space-function")
if re.search ('verticalAlignmentChildCallback', str):
- error_file.write ('verticalAlignmentChildCallback has been deprecated')
+ stderr_write (_ ('verticalAlignmentChildCallback has been deprecated'))
return str
conversions.append (((2, 7, 13), conv,
- '''layout engine refactoring. [FIXME] '''))
+ '''layout engine refactoring [FIXME]'''))
return str
conversions.append (((2, 7, 14), conv,
- '''Remove callbacks property, deprecate XY-extent-callback. '''))
+ _ ('Remove callbacks property, deprecate XY-extent-callback.')))
def conv (str):
if re.search ('[XY]-offset-callbacks', str):
- error_file.write (NOT_SMART % "[XY]-offset-callbacks")
+ stderr_write (NOT_SMART % "[XY]-offset-callbacks")
if re.search ('position-callbacks', str):
- error_file.write (NOT_SMART % "position-callbacks")
+ stderr_write (NOT_SMART % "position-callbacks")
return str
conversions.append (((2, 7, 15), conv,
- '''Use grob closures iso. XY-offset-callbacks.'''))
+ _ ('Use grob closures iso. XY-offset-callbacks.')))
def conv (str):
return str
conversions.append (((2, 7, 24), conv,
- """deprecate number-visibility"""))
+ _ ('deprecate %s') % 'number-visibility'))
def conv (str):
str = re.sub (r"ly:spanner-get-bound", "ly:spanner-bound", str)
return str
conversions.append (((2, 7, 32), conv,
- """foobar -> foo-bar for \paper, \layout"""))
+ _ ("foobar -> foo-bar for \paper, \layout")))
def conv (str):
str = re.sub ('debug-beam-quanting', 'debug-beam-scoring', str)
r"""\\override \g<context>TupletNumber #'text = #tuplet-number::calc-fraction-text""", str)
if re.search ('tupletNumberFormatFunction', str):
- error_file.write ("\n")
- error_file.write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
- error_file.write ("\n")
+ stderr_write ("\n")
+ stderr_write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
+ stderr_write ("\n")
return str
str = re.sub (r'\\midi\s*{\s*\\tempo ([0-9]+)\s*([.]*)\s*=\s*([0-9]+)\s*}', sub_tempo, str)
return str
-conversions.append (((2, 9, 16), conv, """deprecate \\tempo in \\midi"""))
+conversions.append (((2, 9, 16), conv, _ ("deprecate \\tempo in \\midi")))
def conv (str):
str = re.sub ('printfirst-page-number', 'print-first-page-number', str)
def conv (str):
return str
-conversions.append (((2, 10, 0), conv, """bump version for release"""))
+conversions.append (((2, 10, 0), conv, _ ("bump version for release")))
def conv (str):
return str
-conversions.append (((2, 11, 5), conv, """deprecate cautionary-style. Use AccidentalCautionary properties"""))
+conversions.append (((2, 11, 5), conv, _ ("deprecate cautionary-style. Use AccidentalCautionary properties")))
'standard-alteration-glyph-name-alist')
return str
-conversions.append (((2, 11, 6), conv, """Rename accidental glyphs, use glyph-name-alist."""))
+conversions.append (((2, 11, 6), conv, _ ("Rename accidental glyphs, use glyph-name-alist.")))
def conv (str):
r"\override Beam #'breakable", str)
str = re.sub (r'addquote' , 'addQuote', str)
if re.search ("Span_dynamic_performer", str):
- error_file.write ("Span_dynamic_performer has been merged into Dynamic_performer")
+ stderr_write ("Span_dynamic_performer has been merged into Dynamic_performer")
return str
conversions.append (((2, 11, 10), conv, """allowBeamBreak -> Beam #'breakable = ##t
addquote -> addQuote
-
"""))
def conv (str):
str)
if re.search ('edge-text', str):
- error_file.write (NOT_SMART % "edge-text settings for TextSpanner.")
- error_file.write ("Use\n\n"
+ stderr_write (NOT_SMART % _ ("edge-text settings for TextSpanner."))
+ stderr_write (_ ("Use\n\n%s") %
"\t\\override TextSpanner #'bound-details #'right #'text = <right-text>\n"
"\t\\override TextSpanner #'bound-details #'left #'text = <left-text>\n")
r"scripts.caesura.curved", str)
if re.search ('dash-fraction', str):
- error_file.write (NOT_SMART % "all settings related to dashed lines.\n")
- error_file.write ("Use \\override ... #'style = #'line for solid lines and\n")
- error_file.write ("\t\\override ... #'style = #'dashed-line for dashed lines.")
+ stderr_write (NOT_SMART % _ ("all settings related to dashed lines.\n"))
+ stderr_write (_ ("Use \\override ... #'style = #'line for solid lines and\n"))
+ stderr_write (_ ("\t\\override ... #'style = #'dashed-line for dashed lines."))
return str
-conversions.append (((2, 11, 35), conv, """scripts.caesura -> scripts.caesura.curved. Use #'style not #'dash-fraction to select solid/dashed lines."""))
+conversions.append (((2, 11, 35), conv, """scripts.caesura -> scripts.caesura.curved.
+""" + _ ("Use #'style not #'dash-fraction to select solid/dashed lines.")))
+
+def conv (str):
+ str = re.sub (r"setEasyHeads", r"easyHeadsOn", str)
+ str = re.sub (r"fatText", r"textLengthOn", str)
+ str = re.sub (r"emptyText", r"textLengthOff", str)
+ return str
+
+conversions.append (((2, 11, 38), conv, """\\setEasyHeads -> \\easyHeadsOn, \\fatText -> \\textLengthOn,
+\\emptyText -> \\textLengthOff"""))
sys.path.insert (0, os.path.join (datadir, 'python'))
-
+# Python 2.5 only accepts strings with proper Python internal encoding
+# (i.e. ASCII or Unicode) when writing to stdout/stderr, so we must
+# use ugettext iso gettext, and encode the string when writing to
+# stdout/stderr
localedir = '@localedir@'
try:
import gettext
- gettext.bindtextdomain ('lilypond', localedir)
- gettext.textdomain ('lilypond')
- _ = gettext.gettext
+ t = gettext.translation ('lilypond', localedir)
+ _ = t.ugettext
except:
def _ (s):
return s
underscore = _
-progress = sys.stderr.write
+
+# Urg, Python 2.4 does not define stderr/stdout encoding
+# Maybe guess encoding from LANG/LC_ALL/LC_CTYPE?
+
+def encoded_write(f, s):
+ f.write (s.encode (f.encoding or 'utf_8'))
+
+def stderr_write (s):
+ encoded_write (sys.stderr, s)
+
+progress = stderr_write
# Modified version of the commands.mkarg(x), which always uses
# double quotes (since Windows can't handle the single quotes:
value = None
at = len( self.elements ) - 1
while (at >= 0 and
- not isinstance (self.elements[at], EventChord) and
+ not isinstance (self.elements[at], ChordEvent) and
not isinstance (self.elements[at], BarLine)):
at -= 1
- if (at >= 0 and isinstance (self.elements[at], EventChord)):
+ if (at >= 0 and isinstance (self.elements[at], ChordEvent)):
value = self.elements[at]
return value
self.music = SequentialMusic ()
self.music.elements = music
else:
- sys.stderr.write ("WARNING: Unable to set the music %s for the repeat %s" % (music, self))
+ sys.stderr.write (_ ("WARNING: Unable to set the music %s for the repeat %s" % (music, self)))
def add_ending (self, music):
self.endings.append (music)
def print_ly (self, printer):
if self.music:
self.music.print_ly (printer)
else:
- sys.stderr.write ("WARNING: Encountered repeat without body\n")
+ sys.stderr.write (_ ("WARNING: Encountered repeat without body\n"))
printer.dump ('{}')
if self.endings:
printer.dump ('\\alternative {')
printer.newline ()
-class EventChord (NestedMusic):
+class ChordEvent (NestedMusic):
def __init__ (self):
NestedMusic.__init__ (self)
self.grace_elements = None
printer ('\\grace')
# don't print newlines after the { and } braces
self.grace_elements.print_ly (printer, False)
+ # Print all overrides and other settings needed by the
+ # articulations/ornaments before the note
+ for e in other_events:
+ e.print_before_note (printer)
if rest_events:
rest_events[0].print_ly (printer)
for e in other_events:
e.print_ly (printer)
+ for e in other_events:
+ e.print_after_note (printer)
+
self.print_comment (printer)
class Partial (Music):
return " | "
class Event(Music):
+ def __init__ (self):
+ # strings to print before the note to which an event is attached.
+ # Ignored for notes etc.
+ self.before_note = None
+ self.after_note = None
+ # print something before the note to which an event is attached, e.g. overrides
+ def print_before_note (self, printer):
+ if self.before_note:
+ printer.dump (self.before_note)
+ # print something after the note to which an event is attached, e.g. resetting
+ def print_after_note (self, printer):
+ if self.after_note:
+ printer.dump (self.after_note)
pass
class SpanEvent (Event):
self.span_type = type
class SlurEvent (SpanEvent):
+ def print_before_note (self, printer):
+ command = {'dotted': '\\slurDotted',
+ 'dashed' : '\\slurDashed'}.get (self.line_type, '')
+ if command and self.span_direction == -1:
+ printer.dump (command)
+ def print_after_note (self, printer):
+ # reset non-solid slur types!
+ command = {'dotted': '\\slurSolid',
+ 'dashed' : '\\slurSolid'}.get (self.line_type, '')
+ if command and self.span_direction == -1:
+ printer.dump (command)
def ly_expression (self):
- before = ''
- after = ''
- # TODO: setting dashed/dotted line style does not work, because that
- # command needs to be written before the note, not when the
- # event is observed after the note!
- #before = {'dotted': '\\slurDotted',
- # 'dashed' : '\\slurDashed'}.get (self.line_type, '')
- #if before:
- #after = '\\slurSolid'
-
- return {-1: before + '(' + after,
- 1:')'}.get (self.span_direction, '')
+ return {-1: '(', 1:')'}.get (self.span_direction, '')
class BeamEvent (SpanEvent):
def ly_expression (self):
- return {-1: '[',
- 1:']'}.get (self.span_direction, '')
+ return {-1: '[', 1:']'}.get (self.span_direction, '')
class PedalEvent (SpanEvent):
def ly_expression (self):
return {-1: '\\sustainDown',
+ 0:'\\sustainUp\\sustainDown',
1:'\\sustainUp'}.get (self.span_direction, '')
+class TextSpannerEvent (SpanEvent):
+ def ly_expression (self):
+ return {-1: '\\startTextSpan',
+ 1:'\\stopTextSpan'}.get (self.span_direction, '')
+
+class BracketSpannerEvent (SpanEvent):
+ def ly_expression (self):
+ return {-1: '\\startGroup',
+ 1:'\\stopGroup'}.get (self.span_direction, '')
+
+
# type==-1 means octave up, type==-2 means octave down
class OctaveShiftEvent (SpanEvent):
def wait_for_note (self):
- return False;
+ return False
def set_span_type (self, type):
self.span_type = {'up': 1, 'down': -1}.get (type, 0)
def ly_octave_shift_indicator (self):
1:'\\stopTrillSpan'}.get (self.span_direction, '')
class GlissandoEvent (SpanEvent):
+ def print_before_note (self, printer):
+ if self.span_direction == -1:
+ style= {
+ "dashed" : "dashed-line",
+ "dotted" : "dotted-line",
+ "wavy" : "zigzag"
+ }. get (self.line_type, None)
+ if style:
+ printer.dump ("\once \override Glissando #'style = #'%s" % style)
def ly_expression (self):
- style = ''
- # TODO: wavy-line glissandos don't work, becasue the style has to be
- # set before the note, at the \glissando it's already too late!
- #if self.line_type == 'wavy':
- #style = "\once\override Glissando #'style = #'zigzag"
- # In lilypond, glissando is NOT a spanner, unlike MusicXML.
- return {-1: style + '\\glissando',
+ return {-1: '\\glissando',
1:''}.get (self.span_direction, '')
class ArpeggioEvent(Event):
def __init__ (self):
Event.__init__ (self)
self.direction = 0
+ self.non_arpeggiate = False
def wait_for_note (self):
- return True;
+ return True
+ def print_before_note (self, printer):
+ if self.non_arpeggiate:
+ printer.dump ("\\arpeggioBracket")
+ else:
+ dir = { -1: "\\arpeggioDown", 1: "\\arpeggioUp" }.get (self.direction, '')
+ if dir:
+ printer.dump (dir)
+ def print_after_note (self, printer):
+ if self.non_arpeggiate or self.direction:
+ printer.dump ("\\arpeggioNeutral")
def ly_expression (self):
- # TODO: Use self.direction for up/down arpeggios
return ('\\arpeggio')
class DynamicsEvent (Event):
def __init__ (self):
+ Event.__init__ (self)
self.type = None
- self.available_commands = [ "ppppp", "pppp", "ppp", "pp", "p",
- "mp", "mf",
- "f", "ff", "fff", "ffff",
- "fp", "sf", "sff", "sp", "spp", "sfz", "rfz" ];
def wait_for_note (self):
- return True;
+ return True
def ly_expression (self):
- if self.type == None:
- return;
- elif self.type in self.available_commands:
+ if self.type:
return '\%s' % self.type
else:
- return '-\markup{ \dynamic %s }' % self.type
-
- def print_ly (self, printer):
- if self.type == None:
return
- elif self.type in self.available_commands:
+
+ def print_ly (self, printer):
+ if self.type:
printer.dump ("\\%s" % self.type)
+
+class MarkEvent (Event):
+ def __init__ (self, text="\\default"):
+ Event.__init__ (self)
+ self.mark = text
+ def wait_for_note (self):
+ return False
+ def ly_contents (self):
+ if self.mark:
+ return '%s' % self.mark
else:
- printer.dump ("-\\markup{ \\dynamic %s }" % self.type)
+ return "\"ERROR\""
+ def ly_expression (self):
+ return '\\mark %s' % self.ly_contents ()
+
+class MusicGlyphMarkEvent (MarkEvent):
+ def ly_contents (self):
+ if self.mark:
+ return '\\markup { \\musicglyph #"scripts.%s" }' % self.mark
+ else:
+ return ''
class TextEvent (Event):
def __init__ (self):
+ Event.__init__ (self)
self.Text = None
self.force_direction = None
self.markup = ''
class ArticulationEvent (Event):
def __init__ (self):
+ Event.__init__ (self)
self.type = None
self.force_direction = None
def wait_for_note (self):
- return True;
+ return True
def direction_mod (self):
return { 1: '^', -1: '_', 0: '-' }.get (self.force_direction, '')
'elements
(list (make-music (quote BarCheck))
(make-music
- 'EventChord
+ 'ChordEvent
'elements
(list (make-music
'MultiMeasureRestEvent
def test_printer ():
def make_note ():
- evc = EventChord()
+ evc = ChordEvent()
n = NoteEvent()
evc.append (n)
return n
def test_expr ():
m = SequentialMusic()
l = 2
- evc = EventChord()
+ evc = ChordEvent()
n = NoteEvent()
n.duration.duration_log = l
n.pitch.step = 1
evc.insert_around (None, n, 0)
m.insert_around (None, evc, 0)
- evc = EventChord()
+ evc = ChordEvent()
n = NoteEvent()
n.duration.duration_log = l
n.pitch.step = 3
evc.insert_around (None, n, 0)
m.insert_around (None, evc, 0)
- evc = EventChord()
+ evc = ChordEvent()
n = NoteEvent()
n.duration.duration_log = l
n.pitch.step = 2
evc.type = 'treble'
m.insert_around (None, evc, 0)
- evc = EventChord()
+ evc = ChordEvent()
tonic = Pitch ()
tonic.step = 2
tonic.alteration = -2
alter = int (ch.get_text ().strip ())
return alter
+class Unpitched (Music_xml_node):
+ def get_step (self):
+ ch = self.get_unique_typed_child (get_class (u'display-step'))
+ step = ch.get_text ().strip ()
+ return step
+
+ def get_octave (self):
+ ch = self.get_unique_typed_child (get_class (u'display-octave'))
+
+ if ch:
+ octave = ch.get_text ().strip ()
+ return int (octave)
+ else:
+ return None
+
class Measure_element (Music_xml_node):
def get_voice_id (self):
voice_id = self.get_maybe_exist_named_child ('voice')
else:
return (4, 4)
except KeyError:
- sys.stderr.write ('error: requested time signature, but time sig unknown\n')
+ sys.stderr.write (_ ("error: requested time signature, but time sig is unknown\n"))
return (4, 4)
# returns clef information in the form ("cleftype", position, octave-shift)
'whole': 0,
'breve': -1,
'long': -2}.get (log, 0)
+ elif self.get_maybe_exist_named_child (u'grace'):
+ # FIXME: is it ok to default to eight note for grace notes?
+ return 3
else:
- self.message ("Encountered note at %s without %s duration (no <type> element):" % (self.start, self.duration) )
+ self.message (_ ("Encountered note at %s with %s duration (no <type> element):") % (self.start, self.duration) )
return 0
def get_factor (self):
if instrument_name:
return instrument_name
else:
- sys.stderr.write ("Opps, couldn't find instrument for ID=%s\n" % id)
+ sys.stderr.write (_ ("Unable to find find instrument for ID=%s\n") % id)
return "Grand Piano"
class Part_group (Music_xml_node):
class Tuplet (Music_xml_spanner):
pass
+class Bracket (Music_xml_spanner):
+ pass
+
+class Dashes (Music_xml_spanner):
+ pass
+
class Slur (Music_xml_spanner):
def get_type (self):
return self.type
class Glissando (Music_xml_spanner):
pass
+class Slide (Music_xml_spanner):
+ pass
+
class Octave_shift (Music_xml_spanner):
# default is 8 for the octave-shift!
def get_size (self):
'bar-style': BarStyle,
'beam' : Beam,
'bend' : Bend,
+ 'bracket' : Bracket,
'chord': Chord,
+ 'dashes' : Dashes,
'dot': Dot,
'direction': Direction,
'direction-type': DirType,
'pitch': Pitch,
'rest': Rest,
'score-part': Score_part,
+ 'slide': Slide,
'slur': Slur,
'staff': Staff,
'syllabic': Syllabic,
'time-modification': Time_modification,
'tuplet': Tuplet,
'type': Type,
+ 'unpitched': Unpitched,
'wavy-line': Wavy_line,
'wedge': Wedge,
'words': Words,
(gridInterval ,ly:moment? "Interval for which to generate
-@ref{GridPoint}s.")
+@code{GridPoint}s.")
(hairpinToBarline ,boolean? "If set, end a hairpin at the barline
(Ambitus
. (
- (axes . (0 1))
+ (axes . (,X ,Y))
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
(space-alist . (
staff-bar
time-signature
custos)))
- (axes . (0))
+ (axes . (,X))
(meta . ((class . Item)
(interfaces . (break-alignment-interface
axis-group-interface))))))
(BreakAlignGroup
. (
- (axes . (0))
+ (axes . (,X))
(X-extent . ,ly:axis-group-interface::width)
(break-align-anchor . ,ly:break-aligned-interface::calc-average-anchor)
(break-visibility . ,ly:break-aligned-interface::calc-break-visibility)
;; todo: add X self alignment?
(baseline-skip . 2)
(side-axis . ,Y)
+ (avoid-slur . outside )
(font-series . bold)
(meta . ((class . Item)
(interfaces . (text-script-interface
(DotColumn
. (
- (axes . (0))
+ (axes . (,X))
(direction . ,RIGHT)
(positioning-done . ,ly:dot-column::calc-positioning-done)
(X-extent . ,ly:axis-group-interface::width)
text-interface))))))
(DynamicLineSpanner
. (
- (axes . (1))
+ (axes . (,Y))
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(staff-padding . 0.1)
(padding . 0.6)
(NonMusicalPaperColumn
. (
(allow-loose-spacing . #t)
- (axes . (0))
+ (axes . (,X))
(before-line-breaking . ,ly:paper-column::before-line-breaking)
(X-extent . ,ly:axis-group-interface::width)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
(NoteCollision
. (
- (axes . (0 1))
+ (axes . (,X ,Y))
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
(positioning-done . ,ly:note-collision-interface::calc-positioning-done)
(NoteColumn
. (
- (axes . (0 1))
+ (axes . (,X ,Y))
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
(PaperColumn
. (
- (axes . (0))
+ (axes . (,X))
(allow-loose-spacing . #t)
(before-line-breaking . ,ly:paper-column::before-line-breaking)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
(SostenutoPedalLineSpanner
. (
- (axes . (1))
+ (axes . (,Y))
(Y-extent . ,ly:axis-group-interface::height)
(X-extent . ,ly:axis-group-interface::width)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(SustainPedalLineSpanner
. (
- (axes . (1))
+ (axes . (,Y))
(Y-extent . ,ly:axis-group-interface::height)
(X-extent . ,ly:axis-group-interface::width)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(System
. (
- (axes . (0 1))
+ (axes . (,X ,Y))
(X-extent . ,ly:axis-group-interface::width)
(Y-extent . ,ly:axis-group-interface::height)
(vertical-skylines . ,ly:axis-group-interface::calc-skylines)
(UnaCordaPedalLineSpanner
. (
- (axes . (1))
+ (axes . (,Y))
(Y-extent . ,ly:axis-group-interface::height)
(X-extent . ,ly:axis-group-interface::width)
(Y-offset . ,ly:side-position-interface::y-aligned-side)
(VerticalAlignment
. (
- (axes . (1))
+ (axes . (,Y))
(positioning-done . ,ly:align-interface::calc-positioning-done)
(after-line-breaking . ,ly:align-interface::stretch-after-break)
(Y-extent . ,ly:axis-group-interface::height)
axis-group-interface))))))
(VerticalAxisGroup
. (
- (axes . (1))
+ (axes . (,Y))
(Y-offset . ,ly:hara-kiri-group-spanner::force-hara-kiri-callback)
(Y-extent . ,ly:hara-kiri-group-spanner::y-extent)
(X-extent . ,ly:axis-group-interface::width)
(VoltaBracketSpanner
. (
- (axes . (1))
+ (axes . (,Y))
(side-axis . ,Y)
(direction . ,UP)
(padding . 1)
(set! (ly:music-property m 'elements) (list m1 m2))
(set! (ly:music-property m 'split-list)
- (determine-split-list (reverse! (cdr (assoc "one" evs1)) '())
- (reverse! (cdr (assoc "two" evs2)) '())))
+ (if (and (assoc "one" evs1) (assoc "two" evs2))
+ (determine-split-list (reverse! (cdr (assoc "one" evs1)) '())
+ (reverse! (cdr (assoc "two" evs2)) '()))
+ '() ))
m))
(define-public (determine-split-list evl1 evl2)
program_version = '@TOPLEVEL_VERSION@'
def warning (s):
- sys.stderr.write (program_name + ": " + _ ("warning: %s") % s + '\n')
+ ly.stderr_write (program_name + ": " + _ ("warning: %s") % s + '\n')
def error (s):
- sys.stderr.write (program_name + ": " + _ ("error: %s") % s + '\n')
+ ly.stderr_write (program_name + ": " + _ ("error: %s") % s + '\n')
def identify (port=sys.stderr):
- port.write ('%s (GNU LilyPond) %s\n' % (program_name, program_version))
+ ly.encoded_write (port, '%s (GNU LilyPond) %s\n' % (program_name, program_version))
def warranty ():
identify ()
- sys.stdout.write ('''
+ ly.encoded_write (sys.stdout, '''
Copyright (c) %s by
Han-Wen Nienhuys
pass
def do_one_file (infile_name):
- sys.stderr.write (_ ("Processing `%s\'... ") % infile_name)
+ ly.stderr_write (_ ("Processing `%s\'... ") % infile_name)
sys.stderr.write ('\n')
from_version = None
sys.exit (i)
def identify ():
- sys.stdout.write ('%s (GNU LilyPond) %s\n' % (program_name, program_version))
+ ly.encoded_write (sys.stdout, '%s (GNU LilyPond) %s\n' % (program_name, program_version))
-def progress (s):
- sys.stderr.write (s)
+progress = ly.progress
def warning (s):
- sys.stderr.write (program_name + ": " + _ ("warning: %s") % s + '\n')
+ ly.stderr_write (program_name + ": " + _ ("warning: %s") % s + '\n')
def error (s):
- sys.stderr.write (program_name + ": " + _ ("error: %s") % s + '\n')
+ ly.stderr_write (program_name + ": " + _ ("error: %s") % s + '\n')
def ps_page_count (ps_name):
header = open (ps_name).read (1024)
def warranty ():
identify ()
- sys.stdout.write ('''
+ ly.encoded_write (sys.stdout, '''
%s
%s
action='append', dest='include_path',
default=[os.path.abspath (os.getcwd ())])
+ p.add_option ('--info-images-dir', help=_ ("format Texinfo output so that Info will "
+ "look for images of music in DIR"),
+ metavar=_ ("DIR"),
+ action='store', dest='info_images_dir',
+ default='')
+
p.add_option ('--left-padding',
- metavar=_("PAD"),
+ metavar=_ ("PAD"),
dest="padding_mm",
- help="Pad left side of music to align music inspite of uneven bar numbers. (in mm)",
+ help=_ ("pad left side of music to align music inspite of uneven bar numbers (in mm)"),
type="float",
default=3.0)
p.add_option ('--pdf',
action="store_true",
dest="create_pdf",
- help=_ ("Create PDF files for use with PDFTeX"),
+ help=_ ("create PDF files for use with PDFTeX"),
default=False)
p.add_option ('', '--psfonts', action="store_true", dest="psfonts",
help=_ ('''extract all PostScript fonts into INPUT.psfonts for LaTeX
p.add_option ('-w', '--warranty',
help=_ ("show warranty and copyright"),
action='store_true')
- p.add_option_group ('bugs',
+ p.add_option_group (_ ('Bugs'),
description=(_ ("Report bugs via")
+ ''' http://post.gmane.org/post.php'''
'''?group=gmane.comp.gnu.lilypond.bugs\n'''))
OUTPUTIMAGE: r'''@noindent
@ifinfo
-@image{%(base)s,,,%(alt)s,%(ext)s}
+@image{%(info_image_path)s,,,%(alt)s,%(ext)s}
@end ifinfo
@html
<p>
# Specifying no extension is most robust.
ext = ''
alt = self.option_dict[ALT]
+ info_image_path = os.path.join (global_options.info_images_dir, base)
str += output[TEXINFO][OUTPUTIMAGE] % vars ()
base = self.basename ()
exit_status = status >> 8
error (_ ("`%s' failed (%d)") % (cmd, exit_status))
error (_ ("The error log is as follows:"))
- sys.stderr.write (error)
- sys.stderr.write (stderr.read ())
+ ly.stderr_write (error)
+ ly.stderr_write (stderr.read ())
exit (status)
if global_options.verbose:
(define (strip-framework-path var)
(define pat "lilypond/usr")
- (let*
- ((val (getenv var))
- (paths (string-split val #\:))
- (without (remove (lambda (s) (string-contains s pat))
- paths)))
-
- (if (not (= (length without)
- (length paths)))
- (setenv var (string-join without ":")))))
+ (if (getenv var)
+ (let*
+ ((val (getenv var))
+ (paths (string-split val #\:))
+ (without (remove (lambda (s) (string-contains s pat))
+ paths)))
+
+ (if (not (= (length without)
+ (length paths)))
+ (setenv var (string-join without ":"))))))
(define (main args)
(let ((files (parse-options args)))
import midi
import lilylib as ly
+global _;_=ly._
################################################################
## CONSTANTS
################################################################
-localedir = '@localedir@'
-try:
- import gettext
- gettext.bindtextdomain ('lilypond', localedir)
- gettext.textdomain ('lilypond')
- _ = gettext.gettext
-except:
- def _ (s):
- return s
program_name = sys.argv[0]
program_version = '@TOPLEVEL_VERSION@'
def warranty ():
identify ()
- sys.stdout.write ('''
+ ly.encoded_write (sys.stdout, '''
Copyright (c) %s by
Han-Wen Nienhuys
def progress (s):
- errorport.write (s + '\n')
+ ly.encoded_write (errorport, s + '\n')
def warning (s):
progress (_ ("warning: ") + s)
def error (s):
progress (_ ("error: ") + s)
- raise _ ("Exiting ... ")
+ raise _ ("Exiting... ")
def system (cmd, ignore_error = 0):
return ly.system (cmd, ignore_error=ignore_error)
e = ''
return p + e
-\f
class Duration:
p.add_option ('-x', '--text-lyrics', help=_ ("treat every text as a lyric"),
action='store_true')
- p.add_option_group (_ ("Examples"),
+# urg, Python 2.5 optparse is broken, it doesn't accept Unicode strings
+ p.add_option_group (_ ("Examples").encode (sys.stdout.encoding),
description = r'''
midi2ly --key=-2:1 --duration-quant=32 \
--allow-tuplet=4*2/3 --allow-tuplet=2*4/3 foo.midi
''')
- p.add_option_group ('bugs',
+ p.add_option_group (_ ('Bugs').encode (sys.stdout.encoding),
description=(_ ('Report bugs via')
+ ''' http://post.gmane.org/post.php'''
'''?group=gmane.comp.gnu.lilypond.bugs\n'''))
if not args or args[0] == '-':
opt_parser.print_help ()
- sys.stderr.write ('\n%s: %s %s\n' % (program_name, _ ("error: "),
- _ ("no files specified on command line.")))
+ ly.stderr_write ('\n%s: %s %s\n' % (program_name, _ ("error: "),
+ _ ("no files specified on command line.")))
sys.exit (2)
if options.duration_quant:
options = None
def progress (str):
- sys.stderr.write (str + '\n')
+ ly.stderr_write (str + '\n')
sys.stderr.flush ()
def error_message (str):
- sys.stderr.write (str + '\n')
+ ly.stderr_write (str + '\n')
sys.stderr.flush ()
needed_additional_definitions = []
)
)
)
-)
-"""
+)"""
}
def round_to_two_digits (val):
def add_end (self, g):
self.end[getattr (g, 'number', "1")] = g
def print_ly (self, printer):
- error_message ("Unprocessed PartGroupInfo %s encountered" % self)
+ error_message (_ ("Unprocessed PartGroupInfo %s encountered") % self)
def ly_expression (self):
- error_message ("Unprocessed PartGroupInfo %s encountered" % self)
+ error_message (_ ("Unprocessed PartGroupInfo %s encountered") % self)
return ''
-
def staff_attributes_to_string_tunings (mxl_attr):
details = mxl_attr.get_maybe_exist_named_child ('staff-details')
if not details:
step = i.get_named_child (u'tuning-step')
step = step.get_text ().strip ()
- p.step = (ord (step) - ord ('A') + 7 - 2) % 7
+ p.step = musicxml_step_to_lily (step)
octave = i.get_named_child (u'tuning-octave')
octave = octave.get_text ().strip ()
d.duration_log = {1: 0, 2: 1, 4:2, 8:3, 16:4, 32:5, 64:6, 128:7, 256:8, 512:9}.get (rational_len.denominator (), -1)
d.factor = Rational (rational_len.numerator ())
if d.duration_log < 0:
- error_message ("Encountered rational duration with denominator %s, "
- "unable to convert to lilypond duration" %
+ error_message (_ ("Encountered rational duration with denominator %s, "
+ "unable to convert to lilypond duration") %
rational_len.denominator ())
# TODO: Test the above error message
return None
start_pitch.step = n
start_pitch.alteration = a
except KeyError:
- error_message ('unknown mode %s' % mode)
+ error_message (_ ("unknown mode %s, expecting 'major' or 'minor'") % mode)
fifth = musicexp.Pitch()
fifth.step = 4
self.direction = 0
self.event = None
def print_ly (self, printer):
- sys.stderr.write ("Encountered unprocessed marker %s\n" % self)
+ ly.stderr_write (_ ("Encountered unprocessed marker %s\n") % self)
pass
def ly_expression (self):
return ""
return retval.values ()
spanner_event_dict = {
- 'slur' : musicexp.SlurEvent,
'beam' : musicexp.BeamEvent,
+ 'dashes' : musicexp.TextSpannerEvent,
+ 'bracket' : musicexp.BracketSpannerEvent,
'glissando' : musicexp.GlissandoEvent,
+ 'octave-shift' : musicexp.OctaveShiftEvent,
'pedal' : musicexp.PedalEvent,
+ 'slide' : musicexp.GlissandoEvent,
+ 'slur' : musicexp.SlurEvent,
'wavy-line' : musicexp.TrillSpanEvent,
- 'octave-shift' : musicexp.OctaveShiftEvent,
'wedge' : musicexp.HairpinEvent
}
spanner_type_dict = {
'decreschendo': -1,
'diminuendo': -1,
'continue': 0,
+ 'change': 0,
'up': -1,
'down': -1,
'stop': 1,
if func:
ev = func()
else:
- error_message ('unknown span event %s' % mxl_event)
+ error_message (_ ('unknown span event %s') % mxl_event)
type = mxl_event.get_type ()
if span_direction != None:
ev.span_direction = span_direction
else:
- error_message ('unknown span type %s for %s' % (type, name))
+ error_message (_ ('unknown span type %s for %s') % (type, name))
ev.set_span_type (type)
ev.line_type = getattr (mxl_event, 'line-type', 'solid')
return ev
def musicxml_direction_to_indicator (direction):
- return { "above": 1, "upright": 1, "up":1, "below": -1, "downright": -1, "down": -1 }.get (direction, 0)
+ return { "above": 1, "upright": 1, "up": 1, "below": -1, "downright": -1, "down": -1, "inverted": -1 }.get (direction, 0)
def musicxml_fermata_to_lily_event (mxl_event):
ev = musicexp.ArticulationEvent ()
- ev.type = "fermata"
+ txt = mxl_event.get_text ()
+ # The contents of the element defined the shape, possible are normal, angled and square
+ ev.type = { "angled": "shortfermata", "square": "longfermata" }.get (txt, "fermata")
if hasattr (mxl_event, 'type'):
dir = musicxml_direction_to_indicator (mxl_event.type)
if dir and options.convert_directions:
ev.force_direction = dir
return ev
-
def musicxml_arpeggiate_to_lily_event (mxl_event):
ev = musicexp.ArpeggioEvent ()
ev.direction = musicxml_direction_to_indicator (getattr (mxl_event, 'direction', None))
return ev
+def musicxml_nonarpeggiate_to_lily_event (mxl_event):
+ ev = musicexp.ArpeggioEvent ()
+ ev.non_arpeggiate = True
+ ev.direction = musicxml_direction_to_indicator (getattr (mxl_event, 'direction', None))
+ return ev
def musicxml_tremolo_to_lily_event (mxl_event):
ev = musicexp.TremoloEvent ()
- ev.bars = mxl_event.get_text ()
+ txt = mxl_event.get_text ()
+ if txt:
+ ev.bars = txt
+ else:
+ ev.bars = "3"
+ return ev
+
+def musicxml_falloff_to_lily_event (mxl_event):
+ ev = musicexp.BendEvent ()
+ ev.alter = -4
+ return ev
+
+def musicxml_doit_to_lily_event (mxl_event):
+ ev = musicexp.BendEvent ()
+ ev.alter = 4
return ev
def musicxml_bend_to_lily_event (mxl_event):
ev.alter = mxl_event.bend_alter ()
return ev
+def musicxml_caesura_to_lily_event (mxl_event):
+ ev = musicexp.MarkupEvent ()
+ # FIXME: default to straight or curved caesura?
+ ev.contents = "\\musicglyph #\"scripts.caesura.straight\""
+ ev.force_direction = 1
+ return ev
def musicxml_fingering_event (mxl_event):
ev = musicexp.ShortArticulationEvent ()
"accidental-mark": musicxml_accidental_mark,
"bend": musicxml_bend_to_lily_event,
"breath-mark": (musicexp.NoDirectionArticulationEvent, "breathe"),
- #"caesura": "caesura",
+ "caesura": musicxml_caesura_to_lily_event,
#"delayed-turn": "?",
"detached-legato": (musicexp.ShortArticulationEvent, "_"), # or "portato"
- #"doit": "",
+ "doit": musicxml_doit_to_lily_event,
#"double-tongue": "",
"down-bow": "downbow",
- #"falloff": "",
+ "falloff": musicxml_falloff_to_lily_event,
"fingering": musicxml_fingering_event,
#"fingernails": "",
#"fret": "",
"strong-accent": (musicexp.ShortArticulationEvent, "^"), # or "marcato"
#"tap": "",
"tenuto": (musicexp.ShortArticulationEvent, "-"), # or "tenuto"
- #"thumb-position": "",
+ "thumb-position": "thumb",
#"toe": "",
"turn": "turn",
"tremolo": musicxml_tremolo_to_lily_event,
return ev
+
def musicxml_dynamics_to_lily_event (dynentry):
- dynamics_available = ( "p", "pp", "ppp", "pppp", "ppppp", "pppppp",
- "f", "ff", "fff", "ffff", "fffff", "ffffff",
- "mp", "mf", "sf", "sfp", "sfpp", "fp",
- "rf", "rfz", "sfz", "sffz", "fz" )
- if not dynentry.get_name() in dynamics_available:
+ dynamics_available = (
+ "ppppp", "pppp", "ppp", "pp", "p", "mp", "mf",
+ "f", "ff", "fff", "ffff", "fp", "sf", "sff", "sp", "spp", "sfz", "rfz" )
+ dynamicsname = dynentry.get_name ()
+ if dynamicsname == "other-dynamics":
+ dynamicsname = dynentry.get_text ()
+ if not dynamicsname or dynamicsname=="#text":
return
+
+ if not dynamicsname in dynamics_available:
+ # Get rid of - in tag names (illegal in ly tags!)
+ dynamicstext = dynamicsname
+ dynamicsname = string.replace (dynamicsname, "-", "")
+ additional_definitions[dynamicsname] = dynamicsname + \
+ " = #(make-dynamic-script \"" + dynamicstext + "\")"
+ needed_additional_definitions.append (dynamicsname)
event = musicexp.DynamicsEvent ()
- event.type = dynentry.get_name ()
+ event.type = dynamicsname
return event
# Convert single-color two-byte strings to numbers 0.0 - 1.0
return event
-direction_spanners = [ 'octave-shift', 'pedal', 'wedge' ]
+# convert accordion-registration to lilypond.
+# Since lilypond does not have any built-in commands, we need to create
+# the markup commands manually and define our own variables.
+# Idea was taken from: http://lsr.dsi.unimi.it/LSR/Item?id=194
+def musicxml_accordion_to_markup (mxl_event):
+ commandname = "accReg"
+ command = ""
+
+ high = mxl_event.get_maybe_exist_named_child ('accordion-high')
+ if high:
+ commandname += "H"
+ command += """\\combine
+ \\raise #2.5 \\musicglyph #\"accordion.accDot\"
+ """
+ middle = mxl_event.get_maybe_exist_named_child ('accordion-middle')
+ if middle:
+ # By default, use one dot (when no or invalid content is given). The
+ # MusicXML spec is quiet about this case...
+ txt = 1
+ try:
+ txt = string.atoi (middle.get_text ())
+ except ValueError:
+ pass
+ if txt == 3:
+ commandname += "MMM"
+ command += """\\combine
+ \\raise #1.5 \\musicglyph #\"accordion.accDot\"
+ \\combine
+ \\raise #1.5 \\translate #(cons 1 0) \\musicglyph #\"accordion.accDot\"
+ \\combine
+ \\raise #1.5 \\translate #(cons -1 0) \\musicglyph #\"accordion.accDot\"
+ """
+ elif txt == 2:
+ commandname += "MM"
+ command += """\\combine
+ \\raise #1.5 \\translate #(cons 0.5 0) \\musicglyph #\"accordion.accDot\"
+ \\combine
+ \\raise #1.5 \\translate #(cons -0.5 0) \\musicglyph #\"accordion.accDot\"
+ """
+ elif not txt <= 0:
+ commandname += "M"
+ command += """\\combine
+ \\raise #1.5 \\musicglyph #\"accordion.accDot\"
+ """
+ low = mxl_event.get_maybe_exist_named_child ('accordion-low')
+ if low:
+ commandname += "L"
+ command += """\\combine
+ \\raise #0.5 \musicglyph #\"accordion.accDot\"
+ """
+
+ command += "\musicglyph #\"accordion.accDiscant\""
+ command = "\\markup { \\normalsize %s }" % command
+ # Define the newly built command \accReg[H][MMM][L]
+ additional_definitions[commandname] = "%s = %s" % (commandname, command)
+ needed_additional_definitions.append (commandname)
+ return "\\%s" % commandname
+
+def musicxml_accordion_to_ly (mxl_event):
+ txt = musicxml_accordion_to_markup (mxl_event)
+ if txt:
+ ev = musicexp.MarkEvent (txt)
+ return ev
+ return
+
+
+def musicxml_rehearsal_to_ly_mark (mxl_event):
+ text = mxl_event.get_text ()
+ if not text:
+ return
+ # default is boxed rehearsal marks!
+ encl = "box"
+ if hasattr (mxl_event, 'enclosure'):
+ encl = {"none": None, "square": "box", "circle": "circle" }.get (mxl_event.enclosure, None)
+ if encl:
+ text = "\\%s { %s }" % (encl, text)
+ ev = musicexp.MarkEvent ("\\markup { %s }" % text)
+ return ev
+
+# translate directions into Events, possible values:
+# -) string (MarkEvent with that command)
+# -) function (function(mxl_event) needs to return a full Event-derived object
+# -) (class, name) (like string, only that a different class than MarkEvent is used)
+directions_dict = {
+ 'accordion-registration' : musicxml_accordion_to_ly,
+ 'coda' : (musicexp.MusicGlyphMarkEvent, "coda"),
+# 'damp' : ???
+# 'damp-all' : ???
+# 'eyeglasses': ??????
+# 'harp-pedals' :
+# 'image' :
+# 'metronome' :
+ 'rehearsal' : musicxml_rehearsal_to_ly_mark,
+# 'scordatura' :
+ 'segno' : (musicexp.MusicGlyphMarkEvent, "segno"),
+ 'words' : musicxml_words_to_lily_event,
+}
+directions_spanners = [ 'octave-shift', 'pedal', 'wedge', 'dashes', 'bracket' ]
def musicxml_direction_to_lily (n):
# TODO: Handle the <staff> element!
res = []
+ # placement applies to all children!
+ dir = None
+ if hasattr (n, 'placement') and options.convert_directions:
+ dir = musicxml_direction_to_indicator (n.placement)
dirtype_children = []
+ # TODO: The direction-type is used for grouping (e.g. dynamics with text),
+ # so we can't simply flatten them out!
for dt in n.get_typed_children (musicxml.DirType):
dirtype_children += dt.get_all_children ()
for entry in dirtype_children:
+ # backets, dashes, octave shifts. pedal marks, hairpins etc. are spanners:
+ if entry.get_name() in directions_spanners:
+ event = musicxml_spanner_to_lily_event (entry)
+ if event:
+ res.append (event)
+ continue
+
+ # now treat all the "simple" ones, that can be translated using the dict
+ ev = None
+ tmp_tp = directions_dict.get (entry.get_name (), None)
+ if isinstance (tmp_tp, str): # string means MarkEvent
+ ev = musicexp.MarkEvent (tmp_tp)
+ elif isinstance (tmp_tp, tuple): # tuple means (EventClass, "text")
+ ev = tmp_tp[0] (tmp_tp[1])
+ elif tmp_tp:
+ ev = tmp_tp (entry)
+ if ev:
+ # TODO: set the correct direction! Unfortunately, \mark in ly does
+ # not seem to support directions!
+ res.append (ev)
+ continue
if entry.get_name () == "dynamics":
for dynentry in entry.get_all_children ():
if ev:
res.append (ev)
- if entry.get_name () == "words":
- ev = musicxml_words_to_lily_event (entry)
- if ev:
- res.append (ev)
-
- # octave shifts. pedal marks, hairpins etc. are spanners:
- if entry.get_name() in direction_spanners:
- event = musicxml_spanner_to_lily_event (entry)
- if event:
- res.append (event)
-
-
return res
def musicxml_frame_to_lily_event (frame):
def musicxml_note_to_lily_main_event (n):
pitch = None
duration = None
-
- mxl_pitch = n.get_maybe_exist_typed_child (musicxml.Pitch)
event = None
+
+ mxl_pitch = n.get_maybe_exist_typed_child (musicxml.Pitch)
if mxl_pitch:
pitch = musicxml_pitch_to_lily (mxl_pitch)
- event = musicexp.NoteEvent()
+ event = musicexp.NoteEvent ()
event.pitch = pitch
acc = n.get_maybe_exist_named_child ('accidental')
if acc:
# let's not force accs everywhere.
event.cautionary = acc.editorial
+
+ elif n.get_maybe_exist_typed_child (musicxml.Unpitched):
+ # Unpitched elements have display-step and can also have
+ # display-octave.
+ unpitched = n.get_maybe_exist_typed_child (musicxml.Unpitched)
+ event = musicexp.NoteEvent ()
+ event.pitch = musicxml_unpitched_to_lily (unpitched)
elif n.get_maybe_exist_typed_child (musicxml.Rest):
# rests can have display-octave and display-step, which are
# treated like an ordinary note pitch
rest = n.get_maybe_exist_typed_child (musicxml.Rest)
- event = musicexp.RestEvent()
+ event = musicexp.RestEvent ()
pitch = musicxml_restdisplay_to_lily (rest)
event.pitch = pitch
+
elif n.instrument_name:
event = musicexp.NoteEvent ()
drum_type = instrument_drumtype_dict.get (n.instrument_name)
else:
n.message ("drum %s type unknown, please add to instrument_drumtype_dict" % n.instrument_name)
event.drum_type = 'acousticsnare'
-
- if not event:
+
+ else:
n.message ("cannot find suitable event")
- event.duration = musicxml_duration_to_lily (n)
+ if event:
+ event.duration = musicxml_duration_to_lily (n)
+
return event
self.set_duration (duration)
# Insert all pending dynamics right after the note/rest:
- if isinstance (music, musicexp.EventChord) and self.pending_dynamics:
+ if isinstance (music, musicexp.ChordEvent) and self.pending_dynamics:
for d in self.pending_dynamics:
music.append (d)
self.pending_dynamics = []
diff = moment - current_end
if diff < Rational (0):
- error_message ('Negative skip %s' % diff)
+ error_message (_ ('Negative skip %s') % diff)
diff = Rational (0)
if diff > Rational (0) and not (self.ignore_skips and moment == 0):
skip.duration.factor = duration_factor
skip.duration.dots = duration_dots
- evc = musicexp.EventChord ()
+ evc = musicexp.ChordEvent ()
evc.elements.append (skip)
self.add_music (evc, diff)
value = None
- # if the position matches, find the last EventChord, do not cross a bar line!
+ # if the position matches, find the last ChordEvent, do not cross a bar line!
at = len( self.elements ) - 1
while (at >= 0 and
- not isinstance (self.elements[at], musicexp.EventChord) and
+ not isinstance (self.elements[at], musicexp.ChordEvent) and
not isinstance (self.elements[at], musicexp.BarLine)):
at -= 1
if (self.elements
and at >= 0
- and isinstance (self.elements[at], musicexp.EventChord)
+ and isinstance (self.elements[at], musicexp.ChordEvent)
and self.begin_moment == starting_at):
value = self.elements[at]
else:
def correct_negative_skip (self, goto):
self.end_moment = goto
self.begin_moment = goto
- evc = musicexp.EventChord ()
+ evc = musicexp.ChordEvent ()
self.elements.append (evc)
self.lyrics_dict = {}
self.lyrics_order = []
+def musicxml_step_to_lily (step):
+ if step:
+ return (ord (step) - ord ('A') + 7 - 2) % 7
+ else:
+ return None
+
def musicxml_voice_to_lily_voice (voice):
tuplet_events = []
modes_found = {}
continue
if not n.__class__.__name__ == 'Note':
- error_message ('not a Note or Attributes? %s' % n)
+ error_message (_ ('unexpected %s; expected %s or %s or %s') % (n, 'Note', 'Attributes', 'Barline'))
continue
rest = n.get_maybe_exist_typed_child (musicxml.Rest)
first_pitch = main_event.pitch
ignore_lyrics = inside_slur or is_tied or is_chord
- if hasattr (main_event, 'drum_type') and main_event.drum_type:
+ if main_event and hasattr (main_event, 'drum_type') and main_event.drum_type:
modes_found['drummode'] = True
-
ev_chord = voice_builder.last_event_chord (n._when)
if not ev_chord:
- ev_chord = musicexp.EventChord()
+ ev_chord = musicexp.ChordEvent()
voice_builder.add_music (ev_chord, n._duration)
grace = n.get_maybe_exist_typed_child (musicxml.Grace)
if n.get_maybe_exist_typed_child (musicxml.Chord) and ev_chord.grace_elements:
grace_chord = ev_chord.grace_elements.get_last_event_chord ()
if not grace_chord:
- grace_chord = musicexp.EventChord ()
+ grace_chord = musicexp.ChordEvent ()
ev_chord.append_grace (grace_chord)
if hasattr (grace, 'slash'):
# TODO: use grace_type = "appoggiatura" for slurred grace notes
if grace.slash == "yes":
ev_chord.grace_type = "acciaccatura"
- elif grace.slash == "no":
- ev_chord.grace_type = "grace"
# now that we have inserted the chord into the grace music, insert
# everything into that chord instead of the ev_chord
ev_chord = grace_chord
if s.get_type () in ('start','stop')]
if slurs:
if len (slurs) > 1:
- error_message ('more than 1 slur?')
+ error_message (_ ('cannot have two simultaneous slurs'))
# record the slur status for the next note in the loop
if not grace:
if slurs[0].get_type () == 'start':
if ev:
ev_chord.append (ev)
+ arpeggiate = notations.get_named_children ('non-arpeggiate')
+ for a in arpeggiate:
+ ev = musicxml_nonarpeggiate_to_lily_event (a)
+ if ev:
+ ev_chord.append (ev)
+
glissandos = notations.get_named_children ('glissando')
+ glissandos += notations.get_named_children ('slide')
for a in glissandos:
ev = musicxml_spanner_to_lily_event (a)
if ev:
# shake | wavy-line | mordent | inverted-mordent |
# schleifer | tremolo | other-ornament, accidental-mark
ornaments = notations.get_named_children ('ornaments')
- for a in ornaments:
- for ch in a.get_named_children ('tremolo'):
- ev = musicxml_tremolo_to_lily_event (ch)
- if ev:
- ev_chord.append (ev)
-
ornaments += notations.get_named_children ('articulations')
ornaments += notations.get_named_children ('technical')
tuplet_events.append ((ev_chord, tuplet_event, frac))
## force trailing mm rests to be written out.
- voice_builder.add_music (musicexp.EventChord (), Rational (0))
+ voice_builder.add_music (musicexp.ChordEvent (), Rational (0))
ly_voice = group_tuplets (voice_builder.elements, tuplet_events)
ly_voice = group_repeats (ly_voice)
if len (modes_found) > 1:
- error_message ('Too many modes found %s' % modes_found.keys ())
+ error_message (_ ('cannot simultaneously have more than one mode: %s') % modes_found.keys ())
if options.relative:
v = musicexp.RelativeMusic ()
return return_value
-
def musicxml_id_to_lily (id):
digits = ['Zero', 'One', 'Two', 'Three', 'Four', 'Five',
'Six', 'Seven', 'Eight', 'Nine', 'Ten']
id = re.sub ('[^a-zA-Z]', 'X', id)
return id
-
def musicxml_pitch_to_lily (mxl_pitch):
- p = musicexp.Pitch()
+ p = musicexp.Pitch ()
p.alteration = mxl_pitch.get_alteration ()
- p.step = (ord (mxl_pitch.get_step ()) - ord ('A') + 7 - 2) % 7
+ p.step = musicxml_step_to_lily (mxl_pitch.get_step ())
p.octave = mxl_pitch.get_octave () - 4
return p
+def musicxml_unpitched_to_lily (mxl_unpitched):
+ p = None
+ step = mxl_unpitched.get_step ()
+ if step:
+ p = musicexp.Pitch ()
+ p.step = musicxml_step_to_lily (step)
+ octave = mxl_unpitched.get_octave ()
+ if octave and p:
+ p.octave = octave - 4
+ return p
+
def musicxml_restdisplay_to_lily (mxl_rest):
p = None
step = mxl_rest.get_step ()
if step:
- p = musicexp.Pitch()
- p.step = (ord (step) - ord ('A') + 7 - 2) % 7
+ p = musicexp.Pitch ()
+ p.step = musicxml_step_to_lily (step)
octave = mxl_rest.get_octave ()
if octave and p:
p.octave = octave - 4
part_ly_voices = {}
for n, v in name_voice.items ():
- progress ("Converting to LilyPond expressions...")
+ progress (_ ("Converting to LilyPond expressions..."))
# musicxml_voice_to_lily_voice returns (lily_voice, {nr->lyrics, nr->lyrics})
part_ly_voices[n] = musicxml_voice_to_lily_voice (v)
def option_parser ():
- p = ly.get_option_parser(usage=_ ("musicxml2ly [options] FILE.xml"),
- version=('''%prog (LilyPond) @TOPLEVEL_VERSION@\n\n'''
+ p = ly.get_option_parser (usage = _ ("musicxml2ly [options] FILE.xml"),
+ version = ('''%prog (LilyPond) @TOPLEVEL_VERSION@\n\n'''
+
_ ("""This program is free software. It is covered by the GNU General Public
License and you are welcome to change it and/or distribute copies of it
under certain conditions. Invoke as `%s --warranty' for more
information.""") % 'lilypond'
+ """
-Copyright (c) 2005--2007 by
+Copyright (c) 2005--2008 by
Han-Wen Nienhuys <hanwen@xs4all.nl>,
Jan Nieuwenhuizen <janneke@gnu.org> and
Reinhold Kainhofer <reinhold@kainhofer.com>
"""),
- description=_ ("Convert %s to LilyPond input.") % 'MusicXML' + "\n")
+ description = _ ("Convert %s to LilyPond input.") % 'MusicXML' + "\n")
p.add_option ('-v', '--verbose',
- action="store_true",
- dest='verbose',
- help=_ ("be verbose"))
+ action = "store_true",
+ dest = 'verbose',
+ help = _ ("be verbose"))
p.add_option ('', '--lxml',
- action="store_true",
- default=False,
- dest="use_lxml",
- help=_ ("Use lxml.etree; uses less memory and cpu time."))
+ action = "store_true",
+ default = False,
+ dest = "use_lxml",
+ help = _ ("Use lxml.etree; uses less memory and cpu time."))
p.add_option ('-z', '--compressed',
action = "store_true",
p.add_option ('-r', '--relative',
action = "store_true",
+ default = True,
dest = "relative",
- help = _ ("Convert pitches in relative mode."))
+ help = _ ("Convert pitches in relative mode. (Default)"))
+
+ p.add_option ('-a', '--absolute',
+ action = "store_false",
+ dest = "relative",
+ help = _ ("Convert pitches in absolute mode."))
p.add_option ('-l', '--language',
+ metavar = _ ("LANG"),
action = "store",
- help = _ ("Use a different language file, e.g. 'deutsch' for deutsch.ly."))
+ help = _ ("Use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly."))
- p.add_option ('--no-articulation-directions', '--nd',
+ p.add_option ('--nd', '--no-articulation-directions',
action = "store_false",
default = True,
dest = "convert_directions",
- help = _ ("Do not convert directions (^, _ or -) for articulations."))
+ help = _ ("Do not convert directions (^, _ or -) for articulations, dynamics, etc."))
p.add_option ('-o', '--output',
- metavar=_ ("FILE"),
- action="store",
- default=None,
- type='string',
- dest='output_name',
- help=_ ("set output filename to FILE"))
- p.add_option_group ('bugs',
- description=(_ ("Report bugs via")
+ metavar = _ ("FILE"),
+ action = "store",
+ default = None,
+ type = 'string',
+ dest = 'output_name',
+ help = _ ("set output filename to FILE"))
+ p.add_option_group ( _ ('Bugs'),
+ description = ( _ ("Report bugs via")
+ ''' http://post.gmane.org/post.php'''
'''?group=gmane.comp.gnu.lilypond.bugs\n'''))
return p
part_id = part_definition.id
nv_dict = voices.get (part_id)
if not nv_dict:
- error_message ('unknown part in part-list: %s' % part_id)
+ error_message (_ ('unknown part in part-list: %s') % part_id)
continue
staves = reduce (lambda x,y: x+ y,
printer.newline ()
for a in set(needed_additional_definitions):
printer.print_verbatim (additional_definitions.get (a, ''))
+ printer.newline ()
printer.newline ()
# Read in the tree from the given I/O object (either file or string) and
def read_musicxml (filename, compressed, use_lxml):
raw_string = None
if compressed:
- progress ("Input file %s is compressed, extracting raw MusicXML data" % filename)
+ progress (_ ("Input file %s is compressed, extracting raw MusicXML data") % filename)
z = zipfile.ZipFile (filename, "r")
container_xml = z.read ("META-INF/container.xml")
if not container_xml:
def convert (filename, options):
- progress ("Reading MusicXML from %s ..." % filename)
+ progress (_ ("Reading MusicXML from %s ...") % filename)
tree = read_musicxml (filename, options.compressed, options.use_lxml)
parts = tree.get_typed_children (musicxml.Part)
driver_ly_name = options.output_name + '.ly'
printer = musicexp.Output_printer()
- progress ("Output to `%s'" % defs_ly_name)
+ progress (_ ("Output to `%s'") % defs_ly_name)
printer.set_file (codecs.open (defs_ly_name, 'wb', encoding='utf-8'))
print_ly_preamble (printer, filename)
printer.close ()
- progress ("Output to `%s'" % driver_ly_name)
+ progress (_ ("Output to `%s'") % driver_ly_name)
printer = musicexp.Output_printer()
printer.set_file (codecs.open (driver_ly_name, 'wb', encoding='utf-8'))
print_ly_preamble (printer, filename)
if filename and os.path.exists (filename):
voices = convert (filename, options)
else:
- progress ("Unable to find input file %s" % args[0])
+ progress (_ ("Unable to find input file %s") % args[0])
if __name__ == '__main__':
main()
# ugh . mf2pt1 is extremely broken, it pollutes CWD iso. creating a
# temp dir.
$(outdir)/%.pfb: %.mf $(outdir)/mf2pt1.mem
- TMP=`mktemp -d $(outdir)/pfbtemp.XXXXXXXXX` ; \
- ( cd $$TMP ; \
- ln -s ../mf2pt1.mem . ; \
- MFINPUTS=../..:../:: $(PERL) ../../$(buildscript-dir)/mf2pt1.pl $(MF2PT1_OPTIONS) $< ) ; \
- mv $$TMP/*pfb $(outdir) ; \
- rm -rf $$TMP
+ TMP=`mktemp -d $(outdir)/pfbtemp.XXXXXXXXX` \
+ && ( cd $$TMP \
+ && ln -s ../mf2pt1.mem . \
+ && MFINPUTS=$(top-src-dir)/mf:..:: $(PERL) $(top-src-dir)/buildscripts/mf2pt1.pl $(MF2PT1_OPTIONS) $< ) \
+ && mv $$TMP/*pfb $(outdir); \
+ rm -rf $$TMP
-$(outdir)/mf2pt1.mem:
- cd $(outdir) && mpost -progname=mpost -ini ../mf2pt1 \\dump
+$(outdir)/mf2pt1.mem: mf2pt1.mp
+ cd $(outdir) && mpost -progname=mpost -ini $(top-src-dir)/mf/mf2pt1.mp \\dump
$(outdir)/%.info: $(outdir)/%.texi
# makeinfo MUST have PNGs in cwd for info images to work
- cd $(outdir) && $(MAKEINFO) -I$(srcdir) --output=$(@F) $(<F)
+ $(MAKEINFO) -I$(outdir) --output=$@ $<
$(outdir)/%-big-page.html: $(outdir)/%.texi
$(MAKEINFO) -I $(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
$(outdir)/%.ps.gz.omf: %.texi
$(call GENERATE_OMF,ps.gz)
-# Generic rule not possible?
-$(outdir)/%/%.html: $(outdir)/%.texi
- $(MAKEINFO) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
+$(outdir)/%/index.html: $(outdir)/%.texi
+ mkdir -p $(dir $@)
+ $(MAKEINFO) -I $(outdir) --output=$(dir $@) --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
$(outdir)/%.pdf: $(outdir)/%.texi
cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) --batch $(TEXINFO_PAPERSIZE_OPTION) $(<F)
# info stuff
INFO_INSTALL_FILES = $(wildcard $(addsuffix *, $(INFO_FILES)))
INFO_INSTALL_COMMAND =$(if $(INFO_INSTALL_FILES),\
- $(INSTALLPY) -d $(DESTDIR)$(package_infodir) ; \
- $(MAKE) INSTALLATION_OUT_DIR=$(package_infodir) \
+ $(INSTALLPY) -d $(DESTDIR)$(infodir) ; \
+ $(MAKE) INSTALLATION_OUT_DIR=$(infodir) \
depth=$(depth) INSTALLATION_OUT_FILES="$(INFO_INSTALL_FILES)" \
-f $(stepdir)/install-out.sub.make,true)
. to=0.1.74.jcn2\n\
dist roll tarball: $(depth)/$(outdir)/$(distname).tar.gz\n\
distclean also remove configure output\n\
- doc update all documentation\n\
+ doc update all documentation (without images)\n\
cvs-clean also remove out directories and generated files\n\
+ info update info docs (without images)\n\
+ info out=www update info docs with images\n\
maintainerclean also remove distributed generated files\n\
po make new translation Portable Object database\n\
po-replace do po-update and replace catalogs with msgmerged versions\n\