]> git.donarmstrong.com Git - lilypond.git/commitdiff
Imported Upstream version 2.19.50
authorDr. Tobias Quathamer <toddy@debian.org>
Wed, 16 Nov 2016 08:37:54 +0000 (09:37 +0100)
committerDr. Tobias Quathamer <toddy@debian.org>
Wed, 16 Nov 2016 08:37:54 +0000 (09:37 +0100)
42 files changed:
.gitfilelist
AUTHORS.txt
Documentation/de/web.texi
Documentation/de/web/introduction.itexi
Documentation/fr/notation/input.itely
Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc
Documentation/included/authors.itexi
Documentation/it/essay.tely [new file with mode: 0644]
Documentation/it/essay/engraving.itely [new file with mode: 0644]
Documentation/it/essay/literature.itely [new file with mode: 0644]
Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly
Documentation/web/news-front.itexi
Documentation/web/news-headlines.itexi
Documentation/web/news.itexi
VERSION
configure
configure.ac
input/regression/metronome-mark-formatter.ly
lily/include/font-metric.hh
lily/parser.yy
lily/pfb-scheme.cc
lily/pfb.cc
ly/Welcome-to-LilyPond-MacOS.ly
ly/Welcome_to_LilyPond.ly
ly/articulate.ly
ly/event-listener.ly
ly/music-functions-init.ly
mf/00-lilypond-fonts.conf.in
out/ChangeLog
out/RELEASE-COMMIT
po/lilypond.pot
scm/chord-name.scm
scm/define-markup-commands.scm
scm/define-music-display-methods.scm
scm/documentation-lib.scm
scm/flag-styles.scm
scm/modal-transforms.scm
scm/music-functions.scm
scm/output-lib.scm
scm/scheme-engravers.scm
scm/stencil.scm
scripts/build/xelatex-with-options.sh [new file with mode: 0755]

index 74878617158e623052e7272f613a70cdeb4368be..8fd803b17c7c0a0d662e664350c7ee45c195ec05 100644 (file)
@@ -1126,6 +1126,9 @@ Documentation/included/simple.ly
 Documentation/included/special-characters.ly
 Documentation/it/GNUmakefile
 Documentation/it/changes.tely
+Documentation/it/essay.tely
+Documentation/it/essay/engraving.itely
+Documentation/it/essay/literature.itely
 Documentation/it/included/generating-output.itexi
 Documentation/it/included/helpus.itexi
 Documentation/it/learning.tely
@@ -4970,6 +4973,7 @@ scripts/build/text2html.py
 scripts/build/website-known-missing-files.txt
 scripts/build/website_post.py
 scripts/build/www_post.py
+scripts/build/xelatex-with-options.sh
 scripts/build/xetex-with-options.sh
 scripts/build/yyout2grammar.py
 scripts/convert-ly.py
index 94fe93689c23ec10de56c3dcda88f0fcf435286e..fb8dbfd3e13b1b95a51098bd9ef2b91bbbd1bbe4 100644 (file)
@@ -34,6 +34,8 @@ Current Development Team
 
    • Francisco Vila: Translation Meister
 
+   • Valentin Villenave: Core developer
+
    • Janek Warchoł: <janek.lilypond@gmail.com>, Core developer
 
 Previous Development Team
@@ -75,17 +77,16 @@ Previous Development Team
 
    • Nicolas Sceaux: Core developer, Schemer extraordinaire
 
-   • Valentin Villenave: LSR editor and Bug squad member
-
 Current Contributors
 --------------------
 
 Programming
 ...........
 
-Federico Bruni, Dan Eble, Marc Hohl, Masamichi Hosoda, James Lowe,
-Thomas Morley, Paul Morris, David Nalesnik, Keith OHara, Benkő Pál,
-Julien Rioux, Devon Schudy, Heikki Tauriainen
+Guido Aulisi, Federico Bruni, Nathan Chou, Dan Eble, John Gourlay, Marc
+Hohl, Masamichi Hosoda, Mark Knoop, Tobias Kretschmar, James Lowe,
+Thomas Morley, Paul Morris, David Nalesnik, Keith OHara, Benkő Pál, Knut
+Petersen, Julien Rioux, Devon Schudy, Heikki Tauriainen
 
 Font
 ....
@@ -96,8 +97,8 @@ Documentation
 .............
 
 Frédéric Bron, Federico Bruni, Colin Campbell, Urs Liska, James Lowe,
-Thomas Morley, Jean-Charles Malahieude, Pierre Perol-Schneider, Martin
-Tarenskeen
+Thomas Morley, Jean-Charles Malahieude, Patrick Schmidt, Pierre
+Perol-Schneider, Greg Swinford, Martin Tarenskeen
 
 Bug squad
 .........
@@ -117,7 +118,8 @@ Translation
 ...........
 
 Federico Bruni, Luca Rossetto Casel, Felipe Castro, Pavel Fric, Walter
-Garcia-Fontes, Jean-Charles Malahieude, Till Paala, Yoshiki Sawada
+Garcia-Fontes, Tommaso Gordini, Erika Griechisch, Denes Harmath,
+Jean-Charles Malahieude, Till Paala, Yoshiki Sawada, Paco Tomillo
 
 Past Contributors
 -----------------
index 262afd875317362af992279deb51ba4488bbc655..7da5c2256eb83146e69e13e5e5d6711ef6600484 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish: 5b6ddab894b3065c35c72ef8048b8c6edbe684ac
+    Translation of GIT committish: 901f7ff2acbb996f1e726607f3f8e921c5e1ddd3
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -135,13 +135,66 @@ Lesen Sie mehr in der @ref{Einleitung}!
 @divEnd
 
 
-@divId{news}
+@divId{homepage-main}
+
+@divClass{column-center-top}
+
+@subheading Schöner Notensatz
+
+@c This example image is the image from the website version of the essay
+@c manual, downloaded to the pictures directory for use on the home page.
+@c Large version is generated manually from ly file in pictures directory.
+@divId{homepage-example-image-wrapper}
+@imageClickable{bwv861-lilypond,png,,bwv861-lilypond-large,png,center}
+@divEnd
+
+@ifclear web_version
+  @c no anchor links, just text
+
+LilyPond ist ein sehr mächtiges und flexibles Werkzeug, das Notensatz
+unterschiedlichster Art handhaben kann: zum Beispiel klassische Musik
+(wie in diesem Beispiel von J. S. Bach), komplexe Notation, Alte Musik,
+moderne Musik, Tabulatur, Vokalmusik, Popmusik, Unterrichtsmaterialien,
+große Orchesterpartituren, individuelle Lösungen und sogar
+Schenker-Graphen.
+
+@end ifclear
+@ifset web_version
+  @c anchor links, link to individual examples by their <a> tag
+  @c Translators should use the localized anchor name
+  @c (e.g. examples.html#Musica-Antica)
+  @c to be found in out-www/web/examples.LL.html
+
+LilyPond ist ein sehr mächtiges und flexibles Werkzeug, das Notensatz
+unterschiedlichster Art handhaben kann: zum Beispiel
+@uref{examples.html#Klassische-Musik, klassische Musik}
+(wie in diesem Beispiel von J. S. Bach),
+@uref{examples.html#Komplexe-Notation, komplexe Notation},
+@uref{examples.html#Alte-Musik, Alte Musik},
+@uref{examples.html#Moderne-Musik, moderne Musik},
+@uref{examples.html#Tabulatur, Tabulatur},
+@uref{examples.html#Vokalmusik, Vokalmusik},
+@uref{examples.html#Popmusik, Popmusik},
+@uref{examples.html#Anwendung-in-der-Musikerziehung, Unterrichtsmaterialien},
+@uref{examples.html#Grosse-Projekte, große Orchesterpartituren},
+@uref{examples.html#Individuelle-Ausgabe, individuelle Lösungen},
+und sogar
+@uref{examples.html#Schenker-Graphen, Schenker-Graphen}.
+
+@end ifset
+
+Sehen Sie sich unsere @ref{Beispiele} an und lassen sich inspirieren!
+
+@divEnd
+
+@divClass{column-center-middle-color2}
+@subheading Neuigkeiten
 
 @c TODO: generate this automatically, including RSS feed.
-@include web/news-front.itexi
+@include web/news-headlines.itexi
+
+@ref{News, Weitere Neuigkeiten...}
 
-@divClass{float-right}
-(@ref{Ältere Neuigkeiten})
 @divEnd
 
 @divEnd
@@ -152,7 +205,7 @@ Lesen Sie mehr in der @ref{Einleitung}!
 @end ifclear
 @ifset web_version
   @c make the side bar:
-@divId{homePageSideBar}
+@divId{homepage-sidebar}
 @subheading Stabile Version
 
 @c TODO: javascript to detect OS and suggest download?
index fd1c88ed28579265a6b87060613d29856236826a..ba755cd1d413a89402ac5f089f7e12dc52b62efb 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish:  5b6ddab894b3065c35c72ef8048b8c6edbe684ac
+    Translation of GIT committish: 901f7ff2acbb996f1e726607f3f8e921c5e1ddd3
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -308,8 +308,9 @@ LilyPond auszuprobieren, lesen Sie zuerst über unsere
 
 @subheading Beautiful examples
 
-LilyPond ist ist ein sehr mächtiges und flexibles Werkzeug, dass Notensatz
-der unterschiedlichsten Art handhaben kann.  Sehen Sie sich unsere Beispiele an und lassen Sie sich inspirieren!
+LilyPond ist ein sehr mächtiges und flexibles Werkzeug, das Notensatz
+unterschiedlichster Art handhaben kann.  Sehen Sie sich unsere
+Beispiele an und lassen Sie sich inspirieren!
 
 @divEnd
 
@@ -382,7 +383,7 @@ die man für das fünflinige Notensystem notiert hat.
 @divEnd
 
 @divClass{column-center-middle-color2}
-@subheading Schenker Graphen
+@subheading Schenker-Graphen
 
 Das Standardnotenbild kann sehr stark verändert werden.  Hier eine eindrucksvolle Schenker-Analyse, von Kris Schaffer mit LilyPond erstellt
 für einen Artikel im @uref{http://www.linuxjournal.com/article/8364 , Linux Journal}.
@@ -438,7 +439,7 @@ angepasst werden, um fast jeder Situation gerecht zu werden.
 @divEnd
 
 @divClass{column-center-middle-color2}
-@subsubheading Große Projekte
+@subheading Große Projekte
 
 LilyPond eignet sich großartig für große Projekte wie Opern oder Werke für großes Symphonieorchester.  Zusätzlich ermöglicht die
 texbasierte Eingabe größere Barrierefreiheit -- das folgende
index 2db032abc0e7cb05f4d05a5a5e671ffb220cd4a6..50d2d72ccc11078d7e1bbfbaa77578137a23e67b 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-   Translation of GIT committish: 3f80e0ae5eb8cea0a7a6a72fac289ea5d71d63c8
+   Translation of GIT committish: 181db07b2627d98fb77564c45fad23a96e7ee54c
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
index 8ccbfaf6b9b4c5b04649d7a25f005e4617bba77f..5c25c140847a76bc8633aadd98060aae8321e040 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 958e95822083954cad00e0a598eb9f12ceba67b9
+%% Translation of GIT committish: e99c4c0a94c76341135e7bf5cd1a8c21b892ddf0
   texidocfr = "
 Cet exemple, grâce à un peu de code Scheme, donne la priorité aux
 enharmoniques afin de limiter le nombre d'altérations supplémentaires.
index fd79a8aed50c712c72f8067b9145f31dbb685e96..360646c471060d79e7b01e4e03c91aaa750a3f04 100644 (file)
@@ -87,6 +87,9 @@ Core developer
 @item Francisco Vila:
 Translation Meister
 
+@item Valentin Villenave:
+Core developer
+
 @item Janek Warchoł:
 @email{janek.lilypond@@gmail.com},
 Core developer
@@ -157,9 +160,6 @@ Bug meister
 @item Nicolas Sceaux:
 Core developer, Schemer extraordinaire
 
-@item Valentin Villenave:
-LSR editor and Bug squad member
-
 @end itemize
 @end macro
 
@@ -170,16 +170,22 @@ LSR editor and Bug squad member
 
 @c use commas not colons
 
+Guido Aulisi,
 Federico Bruni,
+Nathan Chou,
 Dan Eble,
+John Gourlay,
 Marc Hohl,
 Masamichi Hosoda,
+Mark Knoop,
+Tobias Kretschmar,
 James Lowe,
 Thomas Morley,
 Paul Morris,
 David Nalesnik,
 Keith OHara,
 Benkő Pál,
+Knut Petersen,
 Julien Rioux,
 Devon Schudy,
 Heikki Tauriainen
@@ -215,7 +221,9 @@ Urs Liska,
 James Lowe,
 Thomas Morley,
 Jean-Charles Malahieude,
+Patrick Schmidt,
 Pierre Perol-Schneider,
+Greg Swinford,
 Martin Tarenskeen
 
 @c no comma for last entry
@@ -275,9 +283,13 @@ Luca Rossetto Casel,
 Felipe Castro,
 Pavel Fric,
 Walter Garcia-Fontes,
+Tommaso Gordini,
+Erika Griechisch,
+Denes Harmath,
 Jean-Charles Malahieude,
 Till Paala,
-Yoshiki Sawada
+Yoshiki Sawada,
+Paco Tomillo
 
 @c no comma for last entry
 
diff --git a/Documentation/it/essay.tely b/Documentation/it/essay.tely
new file mode 100644 (file)
index 0000000..9e0ac44
--- /dev/null
@@ -0,0 +1,78 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+@ignore
+    Translation of GIT committish: 47db9a3883d726ca53e2133a3b2298f78dd6a32e
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c Translators: Tommaso Gordini
+@c Translation checkers: Federico Bruni
+
+@setfilename lilypond-essay.info
+@settitle Saggio sull'incisione musicale automatizzata
+@documentencoding UTF-8
+@documentlanguage it
+@afourpaper
+
+@macro manualIntro
+Questo saggio tratta le funzioni di incisione musicale automatizzata nella
+versione di LilyPond @version{}.
+@end macro
+
+@c `Essay' was born 2002-06-03 with this commit:
+@c tremolo segfault
+@c author: Han-Wen Nienhuys
+@c commit: 29262ca70c3d5209126150752fd3d804bef8e9a3
+@c   file: Documentation/user/introduction.itely
+
+@macro copyrightDeclare
+Copyright @copyright{} 2002--2015 degli autori.
+@end macro
+
+@set FDL
+@include macros.itexi
+
+@c don't remove this comment.
+@ignore
+@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen
+@omfdescription Essay on automated music engraving
+@omftype essay
+@omfcategory Applications|Publishing
+@omflanguage English
+@end ignore
+
+
+@lilyTitlePage{Saggio sull'incisione musicale automatizzata}
+
+
+@ifnottex
+
+@menu
+* Incisione musicale::
+* Bibliografia::
+* GNU Free Documentation License:: Licenza di questo documento.
+* Indice di LilyPond::
+@end menu
+
+@docMain
+@end ifnottex
+
+
+@contents
+
+@allowcodebreaks false
+
+@include essay/engraving.itely
+@include essay/literature.itely
+
+@include fdl.itexi
+
+@node Indice di LilyPond
+@appendix Indice di LilyPond
+@translationof LilyPond index
+
+@printindex cp
+
+@bye
diff --git a/Documentation/it/essay/engraving.itely b/Documentation/it/essay/engraving.itely
new file mode 100644 (file)
index 0000000..2868dbc
--- /dev/null
@@ -0,0 +1,1797 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+
+@ignore
+    Translation of GIT committish: c72179ccf41124936a43bb7279d92c6cb6266b7b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c \version "2.19.24"
+
+@c Translators: Tommaso Gordini
+@c Translation checkers: Federico Bruni
+
+@node Incisione musicale
+@chapter Incisione musicale
+@translationof Music engraving
+
+In questo saggio spieghiamo le ragioni per cui LilyPond è stato creato e
+come fa a produrre spartiti così belli.
+
+@c TODO:
+@c remove 3mm eps bounding box left padding for Sarabande (This will
+@c     require adding a new snippet option to lilypond-book.py
+@c check formatting of HTML output
+
+@menu
+* Storia di LilyPond::
+* Incisione in dettaglio::
+* Incisione automatizzata::
+* Costruzione del software::
+* Mettere LilyPond al lavoro::
+* Esempi di incisione (BWV 861)::
+@end menu
+
+@node Storia di LilyPond
+@section Storia di LilyPond
+@translationof The LilyPond story
+
+Molto tempo prima che LilyPond venisse adoperato per incidere gradevoli
+spartiti da leggere nelle esecuzioni, prima che ci si potessero creare
+dispense per i corsi universitari o perfino semplici melodie, prima ancora che
+esistessero una comunità di utenti sparsa in tutto il mondo o addirittura
+un saggio sull'incisione musicale, LilyPond ha preso vita con una domanda:
+
+@quotation
+Perché la maggior parte degli spartiti generati da un software non riesce a
+raggiungere la bellezza e l'equilibrio di uno spartito inciso a mano?
+@end quotation
+
+@noindent
+Possiamo trovare alcune risposte esaminando i due spartiti
+@ifnottex
+qui sotto.
+@end ifnottex
+@iftex
+nelle pagine seguenti.
+@end iftex
+Il primo è un bellissimo spartito inciso a mano nel 1950; il secondo è
+un'edizione moderna realizzata al computer.
+
+@ifnottex
+@quotation
+@noindent
+Bärenreiter BA 320, @copyright{}1950:
+
+@sourceimage{baer-suite1-fullpage,,,png}
+@end quotation
+
+@quotation
+@noindent
+Henle no. 666, @copyright{}2000:
+
+@sourceimage{henle-suite1-fullpage,,,png}
+@end quotation
+@end ifnottex
+
+Le note, prese dalla prima Suite di Bach per violoncello solo,
+sono identiche, ma il loro aspetto sulla pagina è diverso, specialmente
+se le stampate e le guardate da lontano.
+@ifnottex
+(La versione in PDF di questo manuale contiene immagini ad alta
+risoluzione adatte alla stampa.)
+@end ifnottex
+Provate a leggerle o a suonarle da entrambe le edizioni e vi accorgerete che quella
+incisa a mano è più piacevole da usare.  Possiede linee fluide e un
+certo movimento, e trasmette la sensazione di essere una musica viva e dotata
+di respiro, mentre la versione più recente appare fredda e meccanica.
+
+È difficile accorgersi immediatamente di che cosa rende il secondo
+spartito diverso dal primo.  Tutto sembra pulito e ordinato, forse anche
+@qq{migliore} perché più computerizzato e uniforme.  In verità, la cosa
+ci ha lasciati perplessi per un bel po'.  Volevamo migliorare la
+notazione prodotta al computer, ma prima di tutto dovevamo capire
+che cosa c'era di sbagliato.
+
+La risposta sta nell'uniformità perfetta, quasi matematica,
+dell'edizione moderna.  Trovate le stanghette di battuta a metà di
+ciascun rigo: nello spartito inciso a mano la loro posizione varia
+naturalmente, mentre in quello più nuovo sono incolonnate quasi
+perfettamente.  Lo mostriamo in questi schemi di impaginazione
+semplificati, ricavati dall'incisione tradizionale (a sinistra) e
+dall'edizione recente (a destra):
+
+@quotation
+@iftex
+@sourceimage{pdf/page-layout-comparison,,,}
+@end iftex
+@ifnottex
+@sourceimage{page-layout-comparison,,,png}
+@end ifnottex
+@end quotation
+@noindent
+
+Nella seconda sono incolonnate anche le singole teste delle note,
+il che annulla il contorno della melodia, facendolo
+scomparire in una rigida griglia di simboli musicali.
+
+Ci sono anche altre differenze: nell'edizione incisa a mano le linee
+verticali sono tutte più spesse, le legature si trovano più vicine alle
+teste delle note e si osserva una maggiore varietà nella pendenza delle travature.
+Anche se dettagli come questi possono sembrare pignoli, il risultato è
+una pagina di musica più facile da leggere.  Nello spartito generato dal
+software, invece, i righi sono quasi identici, e se il musicista
+distoglie lo sguardo dalla pagina per un istante, si perderà.
+
+LilyPond è stato progettato per risolvere i problemi che abbiamo
+riscontrato nei programmi in circolazione e per creare musica bella da
+vedere che imiti i migliori spartiti incisi a mano.
+
+@iftex
+@page
+@noindent
+Bärenreiter BA 320, @copyright{}1950:
+
+@sourceimage{baer-suite1-fullpage-hires,16cm,,}
+@page
+@noindent
+Henle no. 666, @copyright{}2000:
+@sp 3
+@sourceimage{henle-suite1-fullpage-hires,16cm,,}
+@page
+@end iftex
+
+@node Incisione in dettaglio
+@section Incisione in dettaglio
+@translationof Engraving details
+
+@cindex incisione
+@cindex tipografia, musica
+@cindex tipografia musicale
+@cindex incisione di lastre
+@cindex incisione musicale
+
+L'arte della tipografia musicale è chiamata
+@emph{incisione (su lastra)}, un termine che deriva dalla pratica
+della stampa musicale a mano.@footnote{I primi stampatori europei
+esplorarono diversi procedimenti, tra cui blocchi di legno intagliati
+a mano, caratteri mobili e sottili lastre metalliche incise.
+La tipocomposizione presentava il vantaggio di poter essere corretta
+più facilmente e di semplificare l'inserimento di testo e parole, ma solo
+l'incisione permetteva di impaginare la musica senza
+ostacoli e di inserire notazioni impreviste.  Alla fine, gli spartiti
+incisi a mano divennero lo standard per tutta la musica stampata,
+con l'eccezione di alcuni inni e canzonieri per i quali la
+tipocomposizione era giustificata per il fatto di essere più semplice ed economica,
+anche nel XX secolo.}  Solo pochi decenni fa, gli spartiti erano
+realizzati incidendo e punzonando la musica in modo speculare su una
+lastra di zinco o peltro.  La lastra, poi, veniva inchiostrata e le
+depressioni prodotte da incisioni e punzonature trattenevano
+l'inchiostro.  Imprimendo la carta sulla lastra, si produceva l'immagine
+della pagina.  Punzonature e incisioni erano realizzate completamente
+a mano e correggere un errore era piuttosto laborioso, perciò
+l'incisione doveva essere praticamente perfetta al primo colpo.  Saper
+incidere le lastre era una competenza che richiedeva un alto grado di
+specializzazione; un artigiano doveva sostenere quasi cinque anni di
+formazione prima di acquisire il titolo di maestro incisore, e per
+diventare veramente abile servivano altri cinque anni di esperienza.
+
+@quotation
+@iftex
+@sourceimage{hader-slaan,,7cm,}
+@end iftex
+@ifnottex
+@sourceimage{hader-slaan,,,jpg}
+@end ifnottex
+@end quotation
+
+LilyPond si ispira alle incisioni manuali tradizionali pubblicate
+per tutta la prima metà del XX secolo dalle principali case editrici
+musicali europee, tra cui Bärenreiter, Duhem, Durand, Hofmeister, Peters
+e Schott.  Quei nomi e quel periodo storico sono talvolta considerati il
+culmine della pratica dell'incisione musicale artigianale.
+Avendo studiato queste edizioni, abbiamo imparato molto su come stanno
+le cose in uno spartito ben inciso e ne abbiamo individuato gli elementi
+da imitare con LilyPond.
+
+@c Oggi tutta la musica di nuova pubblicazione è prodotta con il
+@c computer, il che presenta vantaggi piuttosto ovvi: le stampe sono
+@c più economiche da realizzare, il lavoro editoriale può essere
+@c recapitato per email e si possono archiviare i dati originali con
+@c facilità.  Sfortunatamente, gli spartiti realizzati in questo modo
+@c raramente eguagliano la qualità di quelli incisi a mano:
+@c appaiono blandi, meccanici, il che li rende sgradevoli da usare.
+
+@menu
+* Font musicali::
+* Spaziatura ottica::
+* Tagli addizionali::
+* Dimensionamento ottico::
+* Perché lavorare così duramente?::
+@end menu
+
+@node Font musicali
+@unnumberedsubsec Font musicali
+@translationof Music fonts
+
+Le immagini qui sotto mostrano alcune differenze tra un'incisione
+tradizionale e un tipico spartito prodotto dal computer.  L'immagine a
+sinistra riproduce un bemolle preso da un'edizione
+Bärenreiter incisa a mano; quella a destra raffigura lo stesso
+segno ma preso da un'edizione della stessa musica pubblicata nel 2000.
+Nonostante che le due immagini siano stampate con la stessa tonalità
+d'inchiostro, la versione Bärenreiter sembra più scura: le linee del
+rigo sono più grosse e il bemolle appare audacemente arrotondato,
+quasi voluttuoso.  Nell'immagine a destra, invece, le linee sono più
+sottili e il segno è piuttosto diritto e con spigoli vivi.
+
+@multitable @columnfractions .25 .25 .25 .25
+@item @tab
+@ifnotinfo
+@iftex
+@sourceimage{baer-flat-gray,,4cm,}
+@end iftex
+@ifnottex
+@sourceimage{baer-flat-gray,,,png}
+@end ifnottex
+
+@tab
+@iftex
+@sourceimage{henle-flat-gray,,4cm,}
+@end iftex
+@ifnottex
+@sourceimage{henle-flat-gray,,,png}
+@end ifnottex
+
+@end ifnotinfo
+@ifinfo
+@sourceimage{henle-flat-bw,,,png}
+@sourceimage{baer-flat-bw,,,png}
+@sourceimage{lily-flat-bw,,,png}
+@end ifinfo
+
+
+@item @tab
+Bärenreiter (1950)
+@tab
+Henle (2000)
+
+@end multitable
+
+@cindex simboli musicali
+@cindex caratteri musicali
+@cindex nerezza
+@cindex bilanciamento
+
+Quando abbiamo deciso di scrivere un programma per creare la tipografia
+musicale, non esistevano caratteri liberamente disponibili che
+corrispondessero all'eleganza delle nostre edizioni preferite.  Per nulla
+scoraggiati, imperterriti abbiamo creato una collezione di simboli musicali basandoci
+sulle belle stampe degli spartiti incisi a mano.  L'esperienza, poi, ha
+contribuito a sviluppare un certo gusto tipografico e ci ha permesso di
+apprezzare anche i sottili dettagli del design.  Senza quest'esperienza, non
+avremmo potuto renderci conto di quanto brutti fossero i caratteri che
+avevamo ammirato all'inizio.
+
+Di seguito ne esemplifichiamo due: la serie
+superiore è nel font predefinito del programma Sibelius
+(l'@emph{Opus}); la serie inferiore, in quello di LilyPond.
+
+@quotation
+@iftex
+@sourceimage{pdf/OpusAndFeta,,,}
+@end iftex
+@ifnottex
+@sourceimage{OpusAndFeta,,,png}
+@end ifnottex
+@end quotation
+
+I simboli di LilyPond sono più grossi e il loro peso è più coerente, il
+che li rende più facili da leggere.  I tratti terminali sottili, come
+quelli alle due estremità della pausa di un quarto, non dovrebbero
+finire con punte taglienti, ma piuttosto con forme arrotondate,
+perché gli spigoli vivi delle matrici dei punzoni sono fragili e a forza
+di battere sul metallo si usurano rapidamente.  Considerati insieme, nerezza
+del carattere, spessore delle linee, delle travature e delle legature
+devono essere ben amalgamati insieme per restituire un'impressione generale
+forte ma equilibrata.
+
+Inoltre, notate che la testa della nostra semiminima non è ellittica, ma
+leggermente sagomata a diamante.  Il gambo verticale del segno di
+bemolle è lievemente rastremato, allargandosi verso l'alto.  I segni di
+diesis e bequadro si distinguono meglio da lontano perché le loro linee
+angolate presentano una pendenza diversa e i tratti verticali sono più
+grossi.
+
+@node Spaziatura ottica
+@unnumberedsubsec Spaziatura ottica
+@translationof Optical spacing
+
+Nella spaziatura della musica, la distribuzione dello spazio dovrebbe
+rispecchiare le durate fra le note.  Tuttavia, come abbiamo visto prima nella
+suite di Bach, molti spartiti moderni aderiscono alle durate con
+precisione matematica, con scarsi risultati.  Nel prossimo
+esempio, lo stesso motivo viene stampato due volte: la prima, usando
+l'esatta spaziatura matematica; la seconda, con le correzioni.  Quale
+preferite?
+
+@cindex spaziatura ottica
+
+@lilypond
+\paper {
+  ragged-right = ##t
+  indent = #0.0
+}
+
+music = {
+   c'4 e''4 e'4 b'4
+   \stemDown
+   b'8[ e'' a' e'']
+   \stemNeutral
+   e'8[ e'8 e'8 e'8]
+}
+\score
+{
+  \music
+  \layout {
+    \context {
+      \Staff
+      \override NoteSpacing.stem-spacing-correction = #0.0
+      \override NoteSpacing.same-direction-correction = #0.0
+      \override StaffSpacing.stem-spacing-correction = #0.0
+    }
+  }
+}
+@end lilypond
+
+@lilypond
+\paper {
+  ragged-right = ##t
+  indent = #0.0
+}
+
+music = {
+   c'4 e''4 e'4 b'4 |
+   \stemDown
+   b'8[ e'' a' e'']
+   \stemNeutral
+   e'8[ e'8 e'8 e'8]
+}
+
+\score
+{
+  \music
+  \layout {
+    \context {
+      \Staff
+      \override NoteSpacing.stem-spacing-correction = #0.6
+    }
+  }
+}
+@end lilypond
+
+@cindex ritmi regolari
+@cindex spaziatura regolare
+@cindex spaziatura, regolare
+
+Ciascuna misura contiene unicamente note da suonare in un ritmo
+costante, e gli spazi interposti dovrebbero riflettere questa situazione.
+Purtroppo, però, l'occhio ci inganna un po': non solo esso rileva la distanza
+tra le teste delle note, ma tiene conto anche di quella tra
+gambi consecutivi. Di conseguenza, le note di una combinazione
+gambo in su/@/gambo in giù dovrebbero essere più distanti tra loro e
+quelle di una combinazione gambo in giù/@/gambo in su più vicine, il
+tutto a seconda di come si combinano le posizioni verticali delle note.
+Le due misure inferiori sono stampate con questa correzione; quelle
+superiori, tuttavia, contengono ammassi di note
+gambo in giù/@/gambo in su.  Un maestro incisore avrebbe aggiustato la
+spaziatura come richiesto per compiacere l'occhio.
+
+Gli algoritmi di spaziatura di LilyPond prendono in considerazione anche
+le stanghette.  Perciò, l'ultimo gambo in su nell'esempio
+correttamente spaziato è stato allontanato ulteriormente dalla
+stanghetta finale per evitare troppe linee verticali vicine nella parte finale della
+misura.  Un gambo in giù, invece, non avrebbe richiesto quest'accortezza.
+
+@node Tagli addizionali
+@unnumberedsubsec Tagli addizionali
+@translationof Ledger lines
+
+@cindex tagli addizionali
+@cindex collisioni
+
+I tagli addizionali presentano una sfida tipografica: rendono più
+difficile inserire il corretto spazio tra simboli musicali vicini e
+debbono essere abbastanza nitidi da permettere di identificare l'altezza
+della nota a colpo d'occhio.  Nell'esempio qui sotto, vediamo come i tagli
+addizionali dovrebbero essere più spessi di una normale linea del rigo e che un
+incisore esperto li accorcerà per permettere di avvicinare le
+alterazioni alla testa della nota.  Nell'incisione con LilyPond abbiamo
+incluso anche questa funzionalità.
+
+@multitable @columnfractions .25 .25 .25 .25
+@item @tab
+
+@iftex
+@sourceimage{baer-ledger,3cm,,}
+@end iftex
+@ifnottex
+@sourceimage{baer-ledger,,,png}
+@end ifnottex
+
+@tab
+
+@iftex
+@sourceimage{lily-ledger,3cm,,}
+@end iftex
+@ifnottex
+@sourceimage{lily-ledger,,,png}
+@end ifnottex
+
+@end multitable
+
+
+@node Dimensionamento ottico
+@unnumberedsubsec Dimensionamento ottico
+@translationof Optical sizing
+
+Potrebbe essere necessario stampare la musica in una varietà di
+formati diversi.  All'inizio, questo si poteva ottenere creando punzoni
+in ciascuno dei corpi richiesti, il che significa che ogni
+punzone era disegnato per dare il meglio di sé in quel particolare
+corpo.  Con l'avvento dei font digitali, invece, una singola struttura
+può essere rimpicciolita o ingrandita in scala a piacimento, il che è
+molto comodo, ma nei corpi più piccoli i caratteri appariranno molto
+‘leggeri’.
+
+In LilyPond, abbiamo creato font in una serie di pesi corrispondenti a
+una gamma di corpi per la musica.  La prossima è un'incisione di
+LilyPond in corpo 26:
+
+@quotation
+@iftex
+@sourceimage{pdf/size26,,23mm,}
+@end iftex
+@ifnottex
+@sourceimage{size26,,,png}
+@end ifnottex
+@end quotation
+
+@noindent
+e questa è la stessa incisione in corpo 11, poi ingrandita del 236% per
+riportarla alle stesse dimensioni dell'esempio precedente:
+
+@quotation
+@iftex
+@sourceimage{pdf/size11,,23mm,}
+@end iftex
+@ifnottex
+@sourceimage{size11,,,png}
+@end ifnottex
+@end quotation
+
+@noindent
+Nei corpi piccoli, LilyPond usa linee proporzionalmente più grosse in
+modo che la musica sia ancora ben leggibile.
+
+Ciò permette anche che righi in corpi diversi coesistano pacificamente
+se usati insieme sulla stessa pagina:
+
+@c E. Grieg, Sonata per violino Op. 45
+@lilypond[indent=1.5\cm]
+global = {
+  \time 6/8
+  \key c \minor
+}
+
+\score {
+  <<
+    \new Staff \with {
+      \magnifyStaff #2/3
+    }
+    \relative {
+      \global
+      \set Staff.instrumentName = #"Violino"
+      c'8.(\f^> b16 c d) ees8.(^> d16 c b)
+      g8.(^> b16 c ees) g8-.^> r r
+      R2.
+    }
+    \new PianoStaff <<
+      \set PianoStaff.instrumentName = #"Piano"
+      \new Staff \relative {
+        \global
+        s2.
+        s4. s8 r8 r16 <c' f aes c>
+        <c f aes c>4.^> <c ees g>8 r r
+      }
+      \new Staff \relative {
+        \global
+        \clef "bass"
+        <<
+        {
+          \once \override DynamicText.X-offset = #-3
+          <ees g c>2.~->^\f
+          <ees g c>4.~ <ees g c>8
+        } \\ {
+          <c g c,>2.~
+          <c g c,>4.~ <c g c,>8
+        }
+        >>
+        r8 r16 <f, c' aes'>16
+        <f c' aes'>4.-> <c' g'>8 r r
+      }
+    >>
+  >>
+}
+@end lilypond
+
+
+@node Perché lavorare così duramente?
+@unnumberedsubsec Perché lavorare così duramente?
+@translationof Why work so hard?
+
+Di solito, i musicisti sono presi più dall'eseguire la musica
+che dall'esaminarla così come appare sulla pagina, perciò i dettagli
+tipografici troppo cavillosi rischiano di passare per accademia.  Ma non è
+così.  Gli spartiti sono materiale da utilizzare praticamente: ogni cosa
+viene fatta per aiutare il musicista a migliorare il proprio rendimento, e
+tutto ciò che si rivela poco chiaro o poco piacevole da leggere diventa
+un ostacolo.
+
+La musica incisa nel modo tradizionale impiega simboli neri su un rigo
+‘pesante’ per creare un aspetto forte, ben bilanciato, chiaramente
+distinguibile quando è molto distante da chi deve leggerla: se messa su
+un leggio, per esempio.  Un'attenta distribuzione degli
+spazi bianchi permette di disporre le note in modo molto serrato
+senza però affollare i simboli sul rigo.  Il risultato riduce al minimo il
+numero delle voltate, con grande vantaggio per l'esecutore.
+
+Questa è una caratteristica tipica della tipografia.  L'aspetto della pagina
+dovrebbe essere bello, e non di per sé, ma soprattutto perché aiuta il
+lettore nel proprio compito.  Per la musica stampata ciò è doppiamente
+importante, perché i musicisti reggono un carico di  attenzione
+limitato: meno ne debbono impiegare per leggere la musica, più ne possono
+concentrare nell'eseguirla. In altre parole: migliore è la tipografia,
+migliori saranno le esecuzioni.
+
+Questi esempi dimostrano che la tipografia musicale è un'arte raffinata e
+complessa, la cui messa in pratica richiede notevoli competenze di solito
+non possedute dai musicisti.  LilyPond costituisce il nostro sforzo per
+importare l'eccellenza grafica della musica incisa a mano nell'era
+informatica e renderla disponibile a qualunque musicista.  Abbiamo
+sintonizzato i nostri algoritmi, i disegni dei font e le
+impostazioni del programma per produrre stampe corrispondenti alla
+qualità delle vecchie edizioni che amiamo osservare e suonare.
+
+@node Incisione automatizzata
+@section Incisione automatizzata
+@translationof Automated engraving
+
+@cindex incisione, automatizzata
+@cindex incisione automatizzata
+
+Qui descriviamo ciò che serve per creare un software in grado di
+simulare l'aspetto degli spartiti incisi: un metodo di descrizione della
+buona formattazione al computer e numerosi confronti dettagliati con
+incisioni effettivamente esistenti.
+
+@menu
+* Concorsi di bellezza::
+* Miglioramento per analisi comparativa::
+* Mettere le cose a posto::
+@end menu
+
+@node Concorsi di bellezza
+@unnumberedsubsec Concorsi di bellezza
+@translationof Beauty contests
+
+In che modo noi decidiamo veramente sulla formattazione?  In
+altre parole: quale delle tre configurazioni seguenti dovremmo
+scegliere per avere la legatura migliore?
+
+@lilypond
+\relative {
+  \clef bass
+  \once \override Slur.positions = #'(1.5 . 1)
+  e8[( f] g[ a b d,)] r4
+  \once \override Slur.positions = #'(2 . 3)
+  e8[( f] g[ a b d,)] r4
+  e8[( f] g[ a b d,)] r4
+}
+@end lilypond
+
+Esistono pochi libri sull'arte di incidere la musica, i quali, purtroppo,
+si limitano a fornire alcune semplici regole generali e qualche esempio.
+Da esse si può imparare qualcosa, ma sempre troppo poco per mettere a
+punto un algoritmo implementabile senza troppa fatica in un computer:
+seguendole, le eccezioni da codificare a mano sarebbero ancora troppe.
+Analizzare tutti questi casi è un lavoro enorme, e spesso nemmeno tutti
+vengono contemplati:
+
+@quotation
+@iftex
+@sourceimage{ross-beam-scan,7cm,,}
+@end iftex
+@ifnottex
+@sourceimage{ross-beam-scan,,,.jpg}
+@end ifnottex
+@end quotation
+
+(Fonte: Ted Ross, @emph{The Art of Music Engraving})
+
+Anziché cercare di scrivere regole di formattazione dettagliate
+per ogni situazione possibile, dobbiamo solo descrivere gli
+obiettivi in modo sufficientemente completo da permettere a LilyPond di
+giudicare da solo l'attrattiva delle diverse possibilità.  Poi, per ogni
+configurazione calcoliamo un punteggio di  bruttezza e scegliamo quella
+meno brutta.
+
+Per esempio, qui sotto mostriamo tre possibilità per una legatura,
+a ciascuna delle quali LilyPond ha assegnato un punteggio in @q{punti di
+bruttezza}.  Il primo esempio ottiene 15,39 punti perché la legatura
+attraversa una delle teste delle note:
+
+@lilypond
+\relative {
+  \clef bass
+  \once \override Slur.positions = #'(1.5 . 1)
+  e8[(_"15.39" f] g[ a b d,)] r4
+}
+@end lilypond
+
+Il secondo è più bello, ma la legatura non comincia o finisce sulle
+teste delle note. Ottiene 1,71 punti a sinistra e 9,37 punti a destra,
+più altri 2 punti a causa del fatto che la legatura ascende mentre la
+melodia discende, per un totale di 13,08 punti di bruttezza:
+
+@lilypond
+\relative {
+  \clef bass
+  \once \override Slur.positions = #'(2 . 3)
+  e8[(_"13.08" f] g[ a b d,)] r4
+}
+@end lilypond
+
+La legatura finale ottiene 10,04 punti per il vuoto a destra e 2 punti
+per la pendenza verso l'alto, ma è la più attraente delle tre
+configurazioni, e così LilyPond sceglie questa:
+
+@lilypond
+\relative {
+  \clef bass
+  e8[(_"12.04" f] g[ a b d,)] r4
+}
+@end lilypond
+
+Questa tecnica è del tutto generale e viene adoperata per prendere
+decisioni ottimali in merito alla configurazione dei gambi delle note,
+delle legature di valore e dei punti negli accordi, nelle interruzioni
+di rigo e di pagina.  Si può giudicare la bontà di queste decisioni
+confrontandole con incisioni effettivamente esistenti.
+
+@node Miglioramento per analisi comparativa
+@unnumberedsubsec Miglioramento per analisi comparativa
+@translationof Improvement by benchmarking
+
+Gli spartiti generati da LilyPond sono migliorati gradualmente nel tempo e
+continuano a migliorare grazie al confronto con quelli incisi a mano.
+
+Per esempio, qui sotto si vede una riga di un brano di riferimento preso
+da un'edizione incisa (Bärenreiter BA320):
+
+@iftex
+@sourceimage{baer-sarabande-hires,16cm,,}
+@end iftex
+@ifnottex
+@sourceimage{baer-sarabande,,,png}
+@end ifnottex
+
+@noindent
+e qui la stessa citazione realizzata con una vecchissima versione di LilyPond
+(versione 1.4, maggio 2001):
+
+@iftex
+@sourceimage{pdf/lily14-sarabande,16cm,,}
+@end iftex
+@ifnottex
+@sourceimage{lily14-sarabande,,,png}
+@end ifnottex
+
+@noindent La musica prodotta da LilyPond 1.4 è senza dubbio leggibile, ma un
+confronto serrato con lo spartito precedente ha mostrato numerosi
+errori nei dettagli di formattazione:
+
+@iftex
+@sourceimage{lily14-sarabande-annotated-hires,16cm,,}
+@end iftex
+@ifnottex
+@sourceimage{lily14-sarabande-annotated,,,png}
+@end ifnottex
+
+@itemize @bullet
+@item c'è troppo spazio prima dell'indicazione di tempo
+@item i gambi delle note con travature sono troppo lunghi
+@item la seconda e la quarta misura sono troppo strette
+@item la legatura ha un aspetto imbarazzante
+@item le indicazioni di trillo sono troppo grandi
+@item i gambi sono troppo sottili
+@end itemize
+
+@noindent
+(Mancavano anche due teste di note, alcune indicazioni editoriali e
+c'era un'altezza errata!)
+
+Aggiustando le regole di formattazione e il disegno del font, lo
+spartito è notevolmente migliorato.  Confrontate lo stesso spartito di
+riferimento e quello prodotto con la versione corrente di LilyPond
+(@version{}):
+
+@iftex
+@sourceimage{baer-sarabande-hires,16cm,,}
+@end iftex
+@ifnottex
+@sourceimage{baer-sarabande,,,png}
+@end ifnottex
+
+@lilypond[staffsize=17.5,line-width=15.9\cm]
+\relative c {
+  \clef "bass"
+  \key d \minor
+  \time 3/4
+  \mergeDifferentlyDottedOn
+  <<
+    { \slurDashed d8.-\flageolet( e16) e4.-\trill( d16 e) }
+     \\
+    { d4_2 a2 }
+  >>
+  \slurDashed
+  <f' a, d,>4. e8( d c)
+  \slurSolid
+  bes8 g' f e16( f g_1 a_2 bes_3 d,_2)
+  \slurDashed
+  cis4.-\trill b8_3( a g)
+  <<
+    { \slurDashed d'8.( e16) e4.-\trill( d16 e) }
+     \\
+    { <f, a>4 a2 }
+  >>
+}
+@end lilypond
+
+@noindent
+Non è certo un clone dell'edizione di riferimento, ma è comunque molto
+più vicino a una qualità editoriale rispetto alla versione precedente.
+
+@node Mettere le cose a posto
+@unnumberedsubsec Mettere le cose a posto
+@translationof Getting things right
+
+Siamo in grado di misurare l'abilità di LilyPond nel prendere decisioni
+sull'incisione della musica anche confrontando il suo prodotto con
+quello di un software commerciale.  In questo caso abbiamo
+scelto Finale 2008, uno dei programmi di notazione musicale
+a pagamento più diffusi, in particolare nel Nord America.  Sibelius è il
+suo più acerrimo rivale e sembra andare particolarmente bene nel mercato
+europeo.
+
+Per il nostro confronto, abbiamo selezionato la Fuga in sol minore dal
+Libro I del @emph{Clavicembalo ben temperato} BWV 861 di Bach, il cui
+soggetto d'apertura è
+
+@lilypond
+\relative {
+  \key g \minor
+  \clef "treble_8"
+  r8 d' ees g, fis4 g
+  r8 a16 bes c8 bes16 a bes8
+}
+@end lilypond
+
+@noindent
+Abbiamo inciso le ultime sette misure del brano (n. 28--34) con Finale e
+con LilyPond.  In questo punto della composizione, il soggetto ritorna
+in uno stretto a tre parti e conduce alla sezione finale.  Abbiamo
+resistito alla tentazione di apportare qualunque modifica al prodotto
+predefinito di Finale, perché stiamo cercando di mostrare che cosa
+ciascun software riesce a fare da solo, senza interventi umani.  Le
+uniche modifiche di rilievo introdotte sono state aggiustare le
+dimensioni della pagina per adattarla a quelle di questo saggio e
+forzare la musica in due soli sistemi per rendere più agevole il
+confronto. Per impostazione predefinita, invece, Finale avrebbe inciso
+due sistemi di tre misure ciascuno e un terzo sistema contenente la sola
+misura finale larga tutta la riga.
+
+Molte delle differenze tra le due versioni si concentrano nelle misure
+28--29, come mostriamo qui di seguito (Finale sta sopra):
+
+@iftex
+@sourceimage{pdf/bwv861mm28-29,14cm,,}
+@end iftex
+@ifnottex
+@sourceimage{bwv861mm28-29,,,png}
+@end ifnottex
+
+@lilypond[staffsize=19.5,line-width=14\cm]
+global = { \key g \minor }
+
+partI = \relative {
+  \voiceOne
+  fis'8 d' ees g, fis4 g
+  r8 a16 bes c8 bes16 a d8 r r4
+}
+
+partII = \relative {
+  \voiceTwo
+  d'4 r4 r8 d'16 c bes8 c16 d
+  ees8 d c ees a, r r4
+}
+
+partIII = \relative {
+  \voiceOne
+  r2 r8 d' ees g, fis4 g r8 a16 bes c8 bes16 a
+}
+
+partIV = \relative {
+  \voiceTwo
+  d4 r r2
+  r8 d ees g, fis4 a
+}
+
+\score {
+  <<
+    % \set Score.barNumberVisibility = #all-bar-numbers-visible
+    % required in 2.13
+    \set Score.currentBarNumber = #28
+    \bar ""
+    \new PianoStaff <<
+      \new Staff = "RH" <<
+        \global
+        \new Voice = "voiceI" { \partI }
+        \new Voice = "voiceII" { \partII }
+      >>
+      \new Staff = "LH"
+      <<
+        \clef "bass"
+        \global
+        \new Voice = "voiceIII" { \partIII }
+        \new Voice = "voiceIV" { \partIV }
+      >>
+    >>
+  >>
+  \layout {
+    \context {
+      \Staff
+      \remove "Time_signature_engraver"
+    }
+    \context {
+      \PianoStaff
+      \override StaffGrouper.staff-staff-spacing.padding = #1
+    }
+  }
+}
+@end lilypond
+
+Tra le carenze nell'output non modificato di Finale segnaliamo quanto segue.
+@itemize @bullet
+@item La maggior parte delle travature è troppo lontana dal rigo.  Una
+travatura che punta verso il centro del rigo dovrebbe essere lunga circa
+un'ottava, ma gli incisori la abbreviano quando nella musica a più voci
+punta in senso contrario.  Il sistema di travature di
+Finale può essere facilmente migliorato con il suo plug-in Patterson
+Beam, ma qui abbiamo scelto di omettere questa funzionalità.
+@item Finale non regola le posizioni delle teste delle note quando queste
+vengono a trovarsi troppo vicine, il che rende la musica estremamente
+difficile da leggere se voce superiore e inferiore invertono
+temporaneamente la posizione:
+
+@lilypond
+collide = \once \override NoteColumn.force-hshift = #0
+
+\score {
+  <<
+    \new Voice = "sample" \relative c''{
+      \key g \minor
+      <<
+        { \voiceOne g4 \collide g4 }
+        \new Voice { \voiceTwo bes \collide bes }
+      >>
+    }
+    \new Lyrics \lyricsto "sample" { "good " " bad" }
+  >>
+}
+@end lilypond
+
+@item Finale ha messo tutte le pause alla stessa altezza sul rigo.
+L'utente è libero di regolarle secondo la propria necessità, ma in
+nessun modo il programma tenta di prendere in considerazione il contenuto
+dell'altra voce.  Il caso ha voluto che in quest'esempio non si verificassero
+vere e proprie collisioni tra note e pause, ma la cosa ha a che fare
+più con la posizione delle note che con quella delle pause.  In altre
+parole, Bach merita più considerazione per evitare una collisione
+completa di quanta non gliene riservi Finale.
+@end itemize
+
+Con il confronto appena operato non intendiamo affatto suggerire che
+Finale non possa essere adoperato per produrre spartiti di qualità
+editoriale.  Tutto il contrario: nelle mani di un utente esperto può farlo e
+in effetti lo fa, ma richiede abilità e tempo.  Una delle differenze
+fondamentali tra LilyPond e i programmi di notazione musicale
+commerciali è che il primo spera di ridurre gli interventi umani al
+minimo, mentre gli altri puntano a fornire un'interfaccia attraente in
+cui operare questo tipo di modifiche.
+
+Particolarmente eclatante è l'omissione da parte di Finale di un un bemolle
+a misura 33:
+
+@quotation
+@iftex
+@sourceimage{pdf/bwv861mm33-34-annotate,7.93cm,,}
+@end iftex
+@ifnottex
+@sourceimage{bwv861mm33-34-annotate,,,png}
+@end ifnottex
+@end quotation
+
+@noindent
+Il bemolle è richiesto per annullare il bequadro presente poco prima
+nella stessa misura, ma Finale l'ha tralasciato perché appartenente a
+un'altra voce. Così, oltre ad attivare il plug-in per le travature e a
+controllare la spaziatura delle teste delle note e delle pause, l'utente
+deve controllare anche gli accidenti nelle voci che si incrociano per
+scongiurare che errori di questo tipo facciano interrompere una prova.
+
+Se vi interessa esaminare questi esempi più nel dettaglio, alla fine del
+saggio potete trovare l'estratto completo di sette misure insieme ad
+altre quattro incisioni pubblicate.  Un attento esame dei
+frammenti rivela che tra le incisioni manuali esiste una certo
+intervallo di variazione tollerabile, ma anche che LilyPond regge il
+confronto abbastanza bene.  L'output di LilyPond non è ancora privo
+di difetti, per esempio appare un po' troppo aggressivo
+nell'accorciare i gambi, il che permette ancora un certo margine di
+manovra per sviluppi e messe a punto successive.
+
+Naturalmente, la tipografia si basa sul giudizio di una forma da parte
+dell'uomo, il che rende le persone ancora insostituibili.  Tuttavia si
+può automatizzare gran parte del lavoro noioso, e se LilyPond
+riesce a risolvere correttamente la maggior parte delle situazioni
+frequenti, il miglioramento rispetto al software in circolazione sarà
+enorme.  Via via che gli anni passano, il programma può essere
+perfezionato per eseguire automaticamente un numero sempre più elevato
+di operazioni, così da rendere le sovrascritture manuali sempre meno
+indispensabili.  Dove queste si rivelassero indispensabili, la struttura di
+LilyPond è stata progettata avendo in mente la flessibilità.
+
+@node Costruzione del software
+@section Costruzione del software
+@translationof Building software
+
+Questa sezione descrive alcune decisioni di programmazione prese
+durante la progettazione di LilyPond.
+
+@menu
+* Rappresentazione della musica::
+* Quali simboli incidere?::
+* Architettura flessibile::
+@end menu
+
+
+@node Rappresentazione della musica
+@unnumberedsubsec Rappresentazione della musica
+@translationof Music representation
+
+@cindex sintassi
+@cindex strutture ricorsive
+
+Idealmente, il formato di input per qualsiasi sistema di formattazione ad
+alto livello consiste in una descrizione astratta del contenuto da formattare,
+che nel nostro caso è la musica stessa.  La questione solleva un problema
+formidabile: in che modo possiamo definire che cos'è davvero la musica?
+Anziché tentare di trovare una risposta, abbiamo rovesciato la domanda.
+Scriviamo un programma in grado di produrre spartiti e rendiamone il
+formato il più snello possibile: quando non potremo ridurlo
+ulteriormente, ci ritroveremo per definizione
+con il contenuto in sé.  Il nostro programma, dunque, serve a definire
+la forma di un contenuto musicale.
+
+Anche la sintassi è un aspetto dell'interfaccia utente di LilyPond, quindi è semplice
+da scrivere:
+
+@example
+@{
+  c'4 d'8
+@}
+@end example
+
+@noindent
+crea un do centrale da un quarto (C1) e un re da un'ottavo
+immediatamente sopra il do centrale (D1).
+
+@lilypond[quote]
+{
+  c'4 d'8
+}
+@end lilypond
+
+A scala microscopica, una sintassi simile si adopera facilmente.  A una
+scala più larga, però, anche la sintassi ha bisogno di una struttura.  In
+quale altro modo, altrimenti, sarebbe possibile scrivere brani complessi come
+sinfonie e opere liriche?  La struttura è formata dal concetto di
+espressioni musicali: combinando minuscoli frammenti di musica in
+frammenti più consistenti, possiamo esprimere musica più complessa.  Per
+esempio
+
+@lilypond[quote,verbatim,fragment]
+f'4
+@end lilypond
+
+@noindent
+Possiamo costruire note simultanee racchiudendole tra
+@code{<<} e @code{>>}:
+
+@example
+<<c4 d4 e4>>
+@end example
+
+@lilypond[quote,fragment,relative=1]
+\new Voice { <<c4 d4 e>> }
+@end lilypond
+
+@noindent
+Possiamo mettere in sequenza queste due espressioni racchiudendole tra
+parentesi graffe @code{@{@tie{}@dots{}@tie{}@}}:
+
+@example
+@{ f4 <<c4 d4 e4>> @}
+@end example
+
+@lilypond[quote,relative=1,fragment]
+{ f4 <<c d e4>> }
+@end lilypond
+
+@noindent
+Anche quella qui sopra è un'espressione, perciò può essere ulteriormente
+combinata con un'altra espressione simultanea (una minima, in questo
+caso):
+@code{<<}, @code{\\}, e @code{>>}:
+
+@example
+<< g2 \\ @{ f4 <<c4 d4 e4>> @} >>
+@end example
+
+@lilypond[quote,fragment,relative=2]
+\new Voice { << g2 \\ { f4 <<c d e>> } >> }
+@end lilypond
+
+Strutture ricorsive come quelle appena esaminate possono essere
+specificate in modo pulito e formale in una grammatica indipendente dal
+contesto, la quale genera anche il codice di analisi.  In altre parole, la
+sintassi di LilyPond è definita in modo chiaro e privo di ambiguità
+
+Interfacce utente e sintassi sono gli elementi immediatamente visibili
+agli utenti e quelli con cui essi hanno più a che fare.  Un po' sono una
+questione di gusto, un po' l'argomento di molte discussioni: non troppo
+produttive, però, nonostante qualche pregio ce l'abbiano.  Nel quadro più
+ampio di LilyPond, la sintassi di input non è molto importante:
+inventare una sintassi pulita è facile; molto più difficile, invece, è
+scrivere un codice di formattazione decente.  Contiamo le righe di
+codice destinate ai due componenti e troveremo la conferma di quanto abbiamo
+appena affermato: analisi e rappresentazione occupano meno del 10% del
+codice sorgente.
+
+Nel progettare le strutture usate in LilyPond, abbiamo preso decisioni
+diverse da quelle che appaiono in altri programmi.  Considerate la
+natura gerarchica della notazione musicale:
+
+@lilypond[quote,fragment]
+<<
+  \new Staff \relative {
+    \key g \major
+    \time 3/4
+    d''4 g,8 a b c d4 g, g
+  }
+  \new Staff \relative {
+    \clef "bass"
+    \key g \major
+    <g b d>2 a4 b2.
+  }
+>>
+@end lilypond
+
+In questo caso, abbiamo altezze raggruppate in accordi che appartengono
+alle misure, le quali appartengono ai righi.  La cosa assomiglia a
+una struttura ordinata di scatole annidate:
+
+@quotation
+@iftex
+@sourceimage{pdf/nestedboxes,,4cm,}
+@end iftex
+@ifnottex
+@sourceimage{nestedboxes,,,png}
+@end ifnottex
+@end quotation
+
+Purtroppo, la struttura è ordinata perché si basa su alcuni presupposti
+troppo restrittivi, il che diventa evidente considerando un esempio
+musicale più complesso:
+
+@lilypond[quote]
+\layout {
+  \context {
+    \Score
+    \remove "Timing_translator"
+    \remove "Default_bar_line_engraver"
+  }
+  \context {
+    \Staff
+    \consists "Timing_translator"
+    \consists "Default_bar_line_engraver"
+  }
+}
+
+\new PianoStaff <<
+  \new Staff = "RH" <<
+    \new Voice = "I" \relative {
+      \time 3/4
+      \voiceOne
+      \tuplet 7/6 { g''8 g g g g g g }
+      \oneVoice
+      r4 <b,, fis' g bes> r4\fermata
+    }
+    \new Voice = "II" \relative {
+      \voiceTwo
+      c'4
+      \tuplet 5/4 {
+        <c ees>8 f g
+        \change Staff = "LH" \oneVoice
+        \stemUp g,( c}
+      r4
+      \override Stem.cross-staff = ##t
+      \override Stem.length = #12
+      <fis, b>) r\fermata
+    }
+  >>
+  \new Staff = "LH" <<
+    \new Voice = "III" \relative {
+      \time 2/4
+      \clef "bass"
+      g4 \stopStaff s
+      \startStaff s2*2
+    }
+  >>
+>>
+@end lilypond
+
+In quest'esempio, i righi si interrompono arbitrariamente, le voci
+saltano dall'uno all'altro e su ciascun pentagramma c'è un'indicazione
+di tempo diversa.  Molti programmi avrebbero del filo da torcere per
+riprodurlo, proprio perché costruiti con una struttura a scatole
+annidate.  Con LilyPond, d'altronde, abbiamo cercato di mantenere
+formato di input e struttura il più possibile flessibili.
+
+@node Quali simboli incidere?
+@unnumberedsubsec Quali simboli incidere?
+@translationof What symbols to engrave?
+
+@cindex incisione
+@cindex tipografia
+@cindex incisore
+@cindex plug-in
+
+Il processo di formattazione decide dove mettere i simboli, tuttavia
+ciò può essere fatto solo dopo aver deciso @emph{quali} simboli vanno
+stampati: in altre parole, dopo aver deciso quale notazione adoperare.
+
+La comune notazione musicale è un sistema di registrazione della musica
+evolutosi nel corso degli ultimi mille anni.  La forma normalmente
+adoperata oggi risale agli inizi del Rinascimento, e anche se nei
+princìpi di base è rimasta praticamente immutata (cioè testa delle note su
+un pentagramma di cinque linee), continua a modificarsi nei dettagli per
+permettere di esprimere le innovazioni introdotte dalla notazione
+contemporanea. Dunque, la comune notazione musicale comprende circa
+cinque secoli di musica, con applicazioni che spaziano dalle melodie
+monofoniche ai mostruosi contrappunti di una grande orchestra.
+
+In che modo possiamo noi imbrigliare un simile mostro a sette teste e
+costringerlo entro i limiti di un programma per computer?  La nostra
+soluzione è stata quella di spezzare il problema della notazione (al
+contrario dell'incisione, che riguarda la tipografia) in ‘bocconi’
+digeribili e programmabili: ciascun tipo di simbolo è gestito da un modulo
+a sé, un cosiddetto plug-in, completamente modulare e
+indipendente, così da poter essere sviluppato e migliorato
+separatamente.  Tali plug-in sono chiamati @emph{incisori} per analogia con
+l'artigiano che traduce le idee musicali in simboli grafici.
+
+Nell'esempio seguente, cominciamo con il plug-in per le teste delle
+note, il @code{Note_heads_engraver}.
+
+@lilypond[quote,ragged-right]
+\include "engraver-example.ily"
+
+\score {
+  \topVoice
+  \layout {
+    \context {
+      \Voice
+      \remove "Stem_engraver"
+      \remove "Phrasing_slur_engraver"
+      \remove "Slur_engraver"
+      \remove "Script_engraver"
+      \remove "New_fingering_engraver"
+      \remove "Beam_engraver"
+      \remove "Auto_beam_engraver"
+    }
+    \context {
+      \Staff
+      \remove "Accidental_engraver"
+      \remove "Key_engraver"
+      \remove "Clef_engraver"
+      \remove "Bar_engraver"
+      \remove "Time_signature_engraver"
+      \remove "Staff_symbol_engraver"
+      \consists "Pitch_squash_engraver"
+    }
+  }
+}
+@end lilypond
+
+@noindent
+Poi il @code{Staff_symbol_engraver} aggiunge il rigo,
+
+@lilypond[quote,ragged-right]
+\include "engraver-example.ily"
+
+\score {
+  \topVoice
+  \layout {
+    \context {
+      \Voice
+      \remove "Stem_engraver"
+      \remove "Phrasing_slur_engraver"
+      \remove "Slur_engraver"
+      \remove "Script_engraver"
+      \remove "New_fingering_engraver"
+      \remove "Beam_engraver"
+      \remove "Auto_beam_engraver"
+    }
+    \context {
+      \Staff
+      \remove "Accidental_engraver"
+      \remove "Key_engraver"
+      \remove "Clef_engraver"
+      \remove "Bar_engraver"
+      \consists "Pitch_squash_engraver"
+      \remove "Time_signature_engraver"
+    }
+  }
+}
+@end lilypond
+
+@noindent
+il @code{Clef_engraver} definisce un punto di riferimento per il rigo,
+
+@lilypond[quote,ragged-right]
+\include "engraver-example.ily"
+
+\score {
+  \topVoice
+  \layout {
+    \context {
+      \Voice
+      \remove "Stem_engraver"
+      \remove "Phrasing_slur_engraver"
+      \remove "Slur_engraver"
+      \remove "Script_engraver"
+      \remove "New_fingering_engraver"
+      \remove "Beam_engraver"
+      \remove "Auto_beam_engraver"
+    }
+    \context {
+      \Staff
+      \remove "Accidental_engraver"
+      \remove "Key_engraver"
+      \remove "Bar_engraver"
+      \remove "Time_signature_engraver"
+    }
+  }
+}
+@end lilypond
+
+@noindent
+e lo @code{Stem_engraver} aggiunge i gambi.
+
+@lilypond[quote,ragged-right]
+\include "engraver-example.ily"
+
+\score {
+  \topVoice
+  \layout {
+    \context {
+      \Voice
+      \remove "Phrasing_slur_engraver"
+      \remove "Slur_engraver"
+      \remove "Script_engraver"
+      \remove "New_fingering_engraver"
+      \remove "Beam_engraver"
+      \remove "Auto_beam_engraver"
+    }
+    \context {
+      \Staff
+      \remove "Accidental_engraver"
+      \remove "Key_engraver"
+      \remove "Bar_engraver"
+      \remove "Time_signature_engraver"
+    }
+  }
+}
+@end lilypond
+
+@noindent
+Ogni volta che il programma incontra una testa di nota (o più d'una, se
+si tratta di un accordo) leggendo il file sorgente, avvisa lo
+@code{Stem_engraver}, il quale crea un gambo e glielo
+unisce. Aggiungendo gli incisori per travature, legature, accenti,
+accidenti, stanghette di battuta, indicazioni di tempo e armature di
+chiave, otteniamo la notazione completa.
+
+@lilypond[quote,ragged-right]
+\include "engraver-example.ily"
+\score { \topVoice }
+@end lilypond
+
+@cindex polifonia
+@cindex incisione di voci multiple
+@cindex contesti
+
+Questo sistema funziona bene per la musica monofonica, ma che succede
+con la polifonia?  Nella notazione polifonica, voci diverse possono
+condividere lo stesso rigo:
+
+@lilypond[quote,ragged-right]
+\include "engraver-example.ily"
+\new Staff << \topVoice \\ \botVoice >>
+@end lilypond
+
+Nell'esempio qui sopra, armatura di chiave e rigo sono condivisi, ma gambi,
+legature, travature, eccetera, appartengono in modo esclusivo a ciascuna
+voce, perciò gli incisori devono essere raggruppati.  Quelli per teste
+delle note, gambi, legature, eccetera, vanno in un gruppo chiamato
+@q{contesto Voice}, mentre quelli per chiave, accidenti, misure,
+eccetera, in un gruppo chiamato @q{contesto Staff}.  Nel caso della
+polifonia, un singolo contesto Staff contiene più di un contesto Voice.
+Analogamente, contesti Staff multipli possono essere messi in un singolo
+contesto Score.  Il contesto Score rappresenta il contesto notazionale di
+livello massimo.
+
+@lilypond[quote,ragged-right]
+\include "engraver-example.ily"
+\score {
+   <<
+      \new Staff << \topVoice \\ \botVoice >>
+      \new Staff << \pah \\ \hoom >>
+   >>
+}
+@end lilypond
+
+@seealso
+Internals Reference:
+@rinternalsnamed{Contexts, Contesti}.
+
+@node Architettura flessibile
+@unnumberedsubsec Architettura flessibile
+@translationof Flexible architecture
+
+Quando abbiamo cominciato, abbiamo scritto LilyPond
+interamente nel linguaggio di programmazione C++, scolpendo nella pietra
+le sue funzionalità.  Per una serie di ragioni, però, la cosa si è
+rivelata insoddisfacente.
+
+@itemize
+
+@item Quando LilyPond commette degli errori, gli utenti devono
+sovrascrivere le decisioni di formattazione, il che significa, in altre
+parole, che devono poter accedere al motore di formattazione.  Quindi, regole
+e impostazioni non possono essere stabilite da noi durante la
+composizione, ma devono essere accessibili agli utenti durante
+l'esecuzione del programma.
+
+@item La bontà di un'incisione viene giudicata dagli occhi, e in ultima
+analisi è questione di gusto.  Per quanto esperti noi siamo, gli utenti
+possono essere in disaccordo con le nostre decisioni personali, perciò devono
+poter accedere anche alle definizioni dello stile tipografico.
+
+@item Infine, gli algoritmi di formattazione vengono rifiniti
+incessantemente da noi, il che ci richiede di dover contare su un approccio
+alle regole flessibile, e il modo con cui C++ impone di raggrupparle
+non può essere applicato facilmente alla formattazione della notazione
+musicale.
+
+@end itemize
+
+@cindex linguaggio di programmazione Scheme
+
+Abbiamo affrontato questi problemi integrando in LilyPond un interprete del
+linguaggio di programmazione Scheme e riscrivendoci parti del programma.
+Ora l'architettura di formattazione è costruita intorno
+alla nozione di oggetti grafici, descritti dalle variabili e dalle
+funzioni di Scheme, e comprende regole di formattazione, stile
+tipografico e decisioni di formattazione individuali.  L'utente può
+accedere direttamente alla maggior parte di questi controlli.
+
+Le variabili di Scheme controllano le decisioni in merito all'aspetto della
+pagina.  Per esempio, molti oggetti grafici possidono una variabile di
+direzione che codifica la scelta tra su e giù (o tra destra e sinistra).
+Qui sotto vedete due accordi con accenti e arpeggi.  Nel primo, tutti gli
+oggetti grafici hanno direzione giù (o sinistra), nel secondo, hanno
+direzione su (destra).
+
+@lilypond[quote,ragged-right]
+\score {
+  \relative {
+    \stemDown <e' g b>4_>-\arpeggio
+    \override Arpeggio.direction = #RIGHT
+    \stemUp <e g b>4^>-\arpeggio
+  }
+  \layout {
+    \context {
+      \Score
+      \override SpacingSpanner.spacing-increment = #3
+      \hide TimeSignature
+    }
+  }
+}
+@end lilypond
+
+@cindex formattare uno spartito
+@cindex formattazione di uno spartito
+@cindex regole di formattazione
+
+@noindent
+Il processo di formattazione di uno spartito consiste nel leggere e
+scrivere le variabili degli oggetti grafici, alcune delle quali hanno un
+valore predefinito.  Per esempio, lo spessore di molte linee -- una
+caratteristica dello stile tipografico -- è una di queste.  Siete liberi
+di modificare questo valore, donando al vostro spartito un'impressione
+tipografica diversa.
+
+@lilypond[quote,ragged-right]
+fragment = {
+   \clef bass f8 as8
+   c'4-~ c'16 as g f e16 g bes c' des'4
+}
+<<
+   \new Staff \fragment
+   \new Staff \with {
+      \override Beam.beam-thickness = #0.3
+      \override Stem.thickness = #0.5
+      \override Bar.thickness = #3.6
+      \override Tie.thickness = #2.2
+      \override StaffSymbol.thickness = #3.0
+      \override Tie.extra-offset = #'(0 .  0.3)
+      }
+      \fragment
+>>
+@end lilypond
+
+Anche le regole di formattazione sono variabili preimpostate: ogni
+oggetto possiede variabili contenenti procedure.  Sono queste ultime a
+eseguire la formattazione vera e propria, e sostituendone di diverse,
+possiamo modificare l'aspetto degli oggetti.  Nell'esempio seguente, la
+regola che governa quali oggetti sono adoperati per produrre il
+simbolo della testa di nota è cambiata nel corso del frammento.
+
+@lilypond[quote,ragged-right]
+#(set-global-staff-size 30)
+
+#(define (mc-squared grob orig current)
+  (let* ((interfaces (ly:grob-interfaces grob))
+         (pos (ly:grob-property grob 'staff-position)))
+    (if (memq 'note-head-interface interfaces)
+        (begin
+          (ly:grob-set-property! grob 'stencil
+            (grob-interpret-markup grob
+              (make-lower-markup 0.5
+                (case pos
+                  ((-5) "m")
+                  ((-3) "c ")
+                  ((-2) (make-smaller-markup (make-bold-markup "2")))
+                  (else "bla")))))))))
+
+\new Voice \relative {
+  \stemUp
+  \set autoBeaming = ##f
+  \time 2/4
+  <d' f g>4
+  \once \override NoteHead.stencil = #note-head::brew-ez-stencil
+  \once \override NoteHead.font-size = #-7
+  \once \override NoteHead.font-family = #'sans
+  \once \override NoteHead.font-series = #'bold
+  <d f g>4
+  \once \override NoteHead.style = #'cross
+  <d f g>4
+  \applyOutput Voice #mc-squared
+  <d f g>4
+  <<
+    { d8[ es-( fis^^ g] fis2-) }
+    \repeat unfold 5 { \applyOutput Voice #mc-squared s8 }
+  >>
+}
+@end lilypond
+
+@node Mettere LilyPond al lavoro
+@section Mettere LilyPond al lavoro
+@translationof Putting LilyPond to work
+
+@cindex esempi semplici
+@cindex esempi, semplice
+
+Abbiamo scritto LilyPond per sperimentare come sia possibile condensare
+l'arte dell'incisione musicale in un programma per computer.  Grazie a
+tutto questo duro lavoro, ora il programma può essere adoperato per
+eseguire compiti utili.  La sua applicazione più semplice è la stampa
+delle note.
+
+@lilypond[quote,relative=1]
+{
+  \time 2/4
+  c4 c g'4 g a4 a g2
+}
+@end lilypond
+
+@noindent
+Aggiungendo i nomi degli accordi e le parole, otteniamo una notazione
+da canzoniere.
+
+@lilypond[quote,ragged-right]
+<<
+   \chords { c2 c f2 c }
+   \new Staff
+   \relative {
+     \time 2/4
+     c'4 c g' g a a g2
+   }
+   \addlyrics { twin -- kle twin -- kle lit -- tle star }
+>>
+@end lilypond
+
+Possiamo stampare anche notazione polifonica e musica per pianoforte.
+L'esempio seguente combina alcune costruzioni più esotiche.
+
+@lilypond[quote,line-width=15.9\cm]
+\header {
+  title = "Screech and boink"
+  subtitle = "Random complex notation"
+  composer = "Han-Wen Nienhuys"
+}
+
+\score {
+  \context PianoStaff <<
+    \new Staff = "up" {
+      \time 4/8
+      \key c \minor
+      << {
+        \revert Stem.direction
+        \change Staff = down
+        \set subdivideBeams = ##t
+        g16.[
+          \change Staff = up
+          c'''32
+          \change Staff = down
+          g32
+          \change Staff = up
+          c'''32
+          \change Staff = down
+          g16]
+        \change Staff = up
+        \stemUp
+        \set followVoice = ##t
+        c'''32([ b''16 a''16 gis''16 g''32)]
+      } \\ {
+        s4 \tuplet 3/2 { d'16[ f' g'] } as'32[ b''32 e'' d'']
+      } \\ {
+        s4 \autoBeamOff d''8.. f''32
+      } \\ {
+        s4 es''4
+      } >>
+    }
+
+    \new Staff = "down" {
+      \clef bass
+      \key c \minor
+      \set subdivideBeams = ##f
+      \override Stem.french-beaming = ##t
+      \override Beam.beam-thickness = #0.3
+      \override Stem.thickness = #4.0
+      g'16[ b16 fis16 g16]
+      << \makeClusters {
+        as16 <as b>
+        <g b>
+        <g cis>
+      } \\ {
+        \override Staff.Arpeggio.arpeggio-direction =#down
+        <cis, e, gis, b, cis>4\arpeggio
+      }
+    >> }
+  >>
+  \midi {
+    \tempo 8 = 60
+  }
+  \layout {
+    \context {
+      \Staff
+      \consists "Horizontal_bracket_engraver"
+    }
+  }
+}
+@end lilypond
+
+Tutti i frammenti mostrati sopra sono stati scritti a mano, ma ciò non è
+indispensabile.  Dato che il motore di formattazione è in gran parte
+automatico, può servire per generare output per altri
+programmi che gestiscono musica.  Per esempio, può essere adoperato
+anche per convertire database di frammenti musicali in immagini da
+utilizzare in siti Web e presentazioni multimediali.
+
+Anche questo documento ne mostra un'applicazione: il formato
+di input è testuale, perciò può essere facilmente integrato in altri
+formati basati sul testo come @LaTeX{}, HTML o, nel caso di questo
+manuale, Texinfo.  Mediante il programma @command{lilypond-book},
+compreso in LilyPond, nei file di output PDF o HTML risultanti i
+frammenti di input possono essere sostituiti dalle corrispondenti
+immagini a contenuto musicale.  Un altro esempio è l'estensione di
+terze parti OOoLilyPond per OpenOffice.org o LibreOffice, che rende
+estremamente semplice includere frammenti musicali nei documenti.
+
+Per ulteriori esempi di LilyPond all'opera, per la documentazione
+completa e per il programma in sé, visitate il nostro sito Internet
+ufficiale: www.lilypond.org.
+
+@page
+@node Esempi di incisione (BWV 861)
+@section Esempi di incisione (BWV 861)
+@translationof Engraved examples (BWV 861)
+
+Questa sezione contiene quattro incisioni di riferimento e due versioni
+generate al computer delle ultime sette misure della Fuga in Sol minore
+dal @emph{Clavicembalo ben temperato}, Libro I, BWV 861, di J.S. Bach.
+
+@noindent
+Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1,
+1989):
+
+@iftex
+@sourceimage{bwv861-baer,16cm,,}
+@end iftex
+@ifnottex
+@sourceimage{bwv861-baer-small,,,png}
+@end ifnottex
+
+@noindent
+Bärenreiter BA5070 (Neue Ausgabe Sämtlicher Werke, Serie V, Band 6.1,
+1989), fonte musicale alternativa.  Differenze testuali a parte, questo
+esempio mostra leggere variazioni d'incisione anche nella stessa
+edizione della medesima casa editrice:
+
+@iftex
+@sourceimage{bwv861-baer-alt,16cm,,}
+@end iftex
+@ifnottex
+@sourceimage{bwv861-baer-alt-small,,,png}
+@end ifnottex
+
+@noindent
+Breitkopf & Härtel, edited by Ferruccio Busoni (Wiesbaden, 1894),
+disponibile anche nella Petrucci Music Library (IMSLP #22081).  Le
+indicazioni editoriali (diteggiature, articolazioni, eccetera) qui sono
+state rimosse per permettere un confronto più agevole con le altre edizioni:
+
+@iftex
+@sourceimage{bwv861-breitkopf,16cm,,}
+@end iftex
+@ifnottex
+@sourceimage{bwv861-breitkopf-small,,,png}
+@end ifnottex
+
+@noindent
+Bach-Gesellschaft edition (Leipzig, 1866), disponibile nella Petrucci
+Music Library (IMSPL #02221):
+
+@iftex
+@sourceimage{bwv861-gessellschaft,16cm,,}
+@end iftex
+@ifnottex
+@sourceimage{bwv861-gessellschaft-small,,,png}
+@end ifnottex
+
+@noindent
+Finale 2008:
+
+@iftex
+@sourceimage{pdf/bwv861-finale2008a,,,}
+@end iftex
+@ifnottex
+@sourceimage{bwv861-finale2008a,,,png}
+@end ifnottex
+
+@sp 4
+@noindent
+LilyPond, versione @version{}:
+
+@lilypond[staffsize=14.3,line-width=15.9\cm]
+global = {\key g \minor}
+
+partI = \relative {
+  \voiceOne
+  fis'8 d' ees g, fis4 g
+  r8 a16 bes c8 bes16 a d8 r r4
+  r2 r8 d16 ees f8 ees16 d
+  ees4 ~ 16 d c bes a4 r8 ees'16 d
+  c8 d16 ees d8 e16 fis g8 fis16 g a4 ~
+  8 d, g f ees d c bes
+  a2 g\fermata \bar "|."
+}
+
+partII = \relative {
+  \voiceTwo
+  d'4 r4 r8 d'16 c bes8 c16 d
+  ees8 d c ees a, r r4
+  r8 fis16 g a8 g16 fis g2 ~
+  2 r8 d' ees g,
+  fis4 g r8 a16 bes c8 bes16 a
+  bes4. <g b>8 <a c> r <d, g> r
+  <ees g>4 <d fis> d2
+}
+partIII = \relative {
+  \voiceOne
+  r2 r8 d' ees g, fis4 g r8 a16 bes c8 bes16 a
+  bes2 ~ 8 b16 a g8 a16 b
+  c4 r r2
+  R1
+  r8 d ees g, fis4 g
+  r8 a16 bes c8 bes16 a b2
+}
+partIV = \relative {
+  \voiceTwo
+  d4 r r2
+  r8 d ees g, fis4 a
+  d,8 d'16 c bes8 c16 d ees2 ~
+  8 ees16 d c8 d16 ees fis,8 a16 g fis8 g16 a
+  d,8 d'16 c bes8 c16 d ees8 c a fis'
+  g f ees d c bes a g
+  c a d d, g2\fermata
+}
+
+\score {
+  <<
+    % \set Score.barNumberVisibility = #all-bar-numbers-visible
+    % required in 2.13
+    \set Score.currentBarNumber = #28
+    \bar ""
+    \new PianoStaff <<
+      \new Staff = "RH" <<
+        \global
+        \new Voice = "voiceI" { \partI }
+        \new Voice = "voiceII" { \partII }
+      >>
+
+      \new Staff = "LH" <<
+        \clef "bass"
+        \global
+        \new Voice = "voiceIII" { \partIII }
+        \new Voice = "voiceIV" { \partIV }
+      >>
+    >>
+  >>
+  \layout {
+    \context {
+      \Staff
+      \remove "Time_signature_engraver"
+    }
+    \context {
+      \PianoStaff
+      \override StaffGrouper.staff-staff-spacing.padding = #1
+    }
+  }
+}
+@end lilypond
diff --git a/Documentation/it/essay/literature.itely b/Documentation/it/essay/literature.itely
new file mode 100644 (file)
index 0000000..47f39ed
--- /dev/null
@@ -0,0 +1,112 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+
+@ignore
+    Translation of GIT committish: c72179ccf41124936a43bb7279d92c6cb6266b7b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c \version "2.16.0"
+
+@c Translators: Tommaso Gordini
+@c Translation checkers: Federico Bruni
+
+@node Bibliografia
+@chapter Bibliografia
+@translationof Literature list
+
+Di seguito elenchiamo i riferimenti usati per LilyPond.
+
+@menu
+* Bibliografia breve::
+* Bibliografia lunga::
+@end menu
+
+@node Bibliografia breve
+@section Bibliografia breve
+@translationof Short literature list
+
+Se avete bisogno di saperne di più sulla notazione musicale, qui ci sono
+alcuni titoli interessanti da leggere.
+
+@table @cite
+@item Ignatzek 1995
+Klaus Ignatzek, Die Jazzmethode für Klavier. Schott's Söhne
+1995. Mainz, Germany ISBN 3-7957-5140-3.
+
+Guida introduttiva alla pratica del jazz sul pianoforte.  Uno dei
+primi capitoli contiene una panoramica sugli accordi adoperati
+comunemente nel jazz.
+
+@item Gerou 1996
+Tom Gerou and Linda Lusk, Essential Dictionary of Music
+Notation. Alfred Publishing, Van Nuys CA ISBN 0-88284-768-6.
+
+Un elenco conciso e in ordine alfabetico delle questioni riguardanti la
+tipografia e la notazione musicale, comprendente la maggior parte dei
+casi più comuni.
+
+@item Gould 2011
+Elaine Gould, Behind Bars: the Definitive Guide to Music Notation.
+Faber Music Ltd. ISBN 0-571-51456-1.
+
+Hals über Kopf: Das Handbuch des Notensatzes.
+Edition Peters. ISBN 1843670488.
+
+Una guida completa a regole e convenzioni della notazione musicale.
+Copre tutti gli argomenti dalle nozioni fontamentali alle tecniche più
+complesse e fornisce una preparazione completa sui princìpi della notazione.
+
+@item Read 1968
+Gardner Read, Music Notation: A Manual of Modern Practice.
+Taplinger Publishing, New York (2nd edition).
+
+Un'opera fondamentale sulla notazione musicale.
+
+@item Ross 1987
+Ted Ross, Teach yourself the art of music engraving and processing.
+Hansen House, Miami, Florida 1987.
+
+Questo libro parla di incisione musicale, cioè di tipocomposizione
+professionale.  Contiene indicazioni sulla punzonatura, sull'uso degli
+strumenti di scrittura e sulle convenzioni notazionali.  Interessanti
+anche le sezioni storiche e sulle tecniche di riproduzione.
+
+@item Schirmer 2001
+The G.Schirmer/AMP Manual of Style and Usage. G.Schirmer/AMP, NY, 2001.
+(Si può ordinare questo libro anche a noleggio.)
+
+Questo manuale si concentra in particolare sulla preparazione della
+stampa per le edizioni Schirmer.  Discute molti dettagli di solito non
+presenti negli altri libri sulla notazione musicale.  Dà anche una buona
+idea di ciò che serve per conferire alle stampe una qualità editoriale.
+
+@item Stone 1980
+
+Kurt Stone, Music Notation in the Twentieth Century.
+Norton, New York 1980.
+
+Questo libro descrive la notazione musicale per la musica seria
+contemporanea, ma comincia con una panoramica completa delle pratiche
+notazionali tradizionali esistenti.
+
+@end table
+
+
+@node Bibliografia lunga
+@section Bibliografia lunga
+@translationof Long literature list
+
+@subheading University of Colorado Engraving music bibliography
+
+@include colorado.itexi
+
+@subheading Computer notation bibliography
+
+@include computer-notation.itexi
+
+@subheading Engraving bibliography
+
+@include engravingbib.itexi
index 51ebe920786cf5486cf2f9cfc63548067bbd223a..df6ce9d6c098260ec418a76c1ce22337da923153 100644 (file)
@@ -62,7 +62,7 @@ In this manner, the most natural enharmonic notes are chosen.
      (if (pair? es)
          (ly:music-set-property!
           music 'elements
-          (map (lambda (x) (naturalize x)) es)))
+          (map naturalize es)))
      (if (ly:music? e)
          (ly:music-set-property!
           music 'element
index 645364afe8790cffc79bb441fac5dc25d63d45b6..ab79612188cebb7bdbba4dc336d9c67f2cfdf0b2 100644 (file)
@@ -9,10 +9,10 @@
 @c used for news about the upcoming release; see CG on Release Work
 
 @newsItem
-@subheading LilyPond 2.19.49 released  @emph{October 16, 2016}
+@subheading LilyPond 2.19.50 released  @emph{November 6, 2016}
 
 We are happy to announce the release of LilyPond
-2.19.49.  This release includes a number of enhancements, and contains some
+2.19.50.  This release includes a number of enhancements, and contains some
 work in progress.  You will have access to the very latest features, but
 some may be incomplete, and you may encounter bugs and crashes.  If you
 require a stable version of LilyPond, we recommend using the 2.18
index 469eda1c347e4c829983d64fcaa47976463d3dd4..b844a98718a2820b8b610a800950f902ff8fabba 100644 (file)
@@ -11,7 +11,7 @@
 @ifclear web_version
   @c no anchor links, just link to News page
 
-@ref{News, LilyPond 2.19.49 released - @emph{October 16, 2016}}
+@ref{News, LilyPond 2.19.50 released - @emph{November 6, 2016}}
 
 @ref{News, Two LilyPond projects in Google Summer of Code 2016 - @emph{April 23, 2016}}
 
@@ -23,8 +23,8 @@
 @ifset web_version
   @c anchor links, link to individual news items by their <a> tag
 
-@uref{news.html#LilyPond-2_002e19_002e49-released-October-16_002c-2016,
-  LilyPond 2.19.49 released - @emph{October 16, 2016}}
+@uref{news.html#LilyPond-2_002e19_002e50-released-November-6_002c-2016,
+  LilyPond 2.19.50 released - @emph{November 6, 2016}}
 
 @uref{news.html#Two-LilyPond-projects-in-Google-Summer-of-Code-2016-April-23_002c-2016,
   Two LilyPond projects in Google Summer of Code 2016 - @emph{April 23, 2016}}
index 655c04f9ca7bd71d7de0d7e12b3b7c2335e2e657..eef54f95e170638a32c18a0aa9698ebbe7994c4a 100644 (file)
@@ -26,6 +26,18 @@ NOTE:
   * don't duplicate entries from news-front.itexi
 @end ignore
 
+@newsItem
+@subheading LilyPond 2.19.49 released  @emph{October 16, 2016}
+
+We are happy to announce the release of LilyPond
+2.19.49.  This release includes a number of enhancements, and contains some
+work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you
+require a stable version of LilyPond, we recommend using the 2.18
+version.
+
+@newsEnd
+
 @newsItem
 @subheading LilyPond 2.19.48 released  @emph{September 13, 2016}
 
diff --git a/VERSION b/VERSION
index ae4cbbca6468f19b2a05ee3bdcdd1a0ecb1a94d5..7792680d5768eb8af8e681372e3da6219fec7ed7 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=19
-PATCH_LEVEL=49
+PATCH_LEVEL=50
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.18.2
-VERSION_DEVEL=2.19.49
+VERSION_DEVEL=2.19.50
index 69f5d898303c17e2f5d891fae2782a1be1868b67..fe4de2b53c8053504bc134b8689eb2932b2925c1 100755 (executable)
--- a/configure
+++ b/configure
@@ -14008,6 +14008,7 @@ $as_echo "$ver" >&6; }
     if test "$PDFTEX" = "xetex"; then
         # For avoiding PDF destination name replacement.
         PDFTEX=$ugh_ugh_autoconf250_builddir/scripts/build/out$CONFIGSUFFIX/xetex-with-options
+        PDFLATEX=$ugh_ugh_autoconf250_builddir/scripts/build/out$CONFIGSUFFIX/xelatex-with-options
     fi
 else
 
index 0a753325d1eec6384b6c0972ae2d8330543bfdb6..d341125c21136c8a202bb43fcd6bd39270c084d6 100644 (file)
@@ -243,6 +243,7 @@ if test "$PDFLATEX" = "xelatex"; then
     if test "$PDFTEX" = "xetex"; then
         # For avoiding PDF destination name replacement.
         PDFTEX=$ugh_ugh_autoconf250_builddir/scripts/build/out$CONFIGSUFFIX/xetex-with-options
+        PDFLATEX=$ugh_ugh_autoconf250_builddir/scripts/build/out$CONFIGSUFFIX/xelatex-with-options
     fi
 else
     STEPMAKE_PROGS(PDFTEX, pdfetex pdftex etex, $DOCUMENTATION_REQUIRED)
index a288c91ced20fd8d3a77f69a72fd14bd0824acab..841f6c40bbc4994cb1a4c42774f4d26b1a69712e 100644 (file)
@@ -108,6 +108,7 @@ mus =
     \context {
       \Score
       \override MetronomeMark.style = #'mensural
+      \override MetronomeMark.flag-style = #'mensural
     }
   }
 }
index e385a1e7af7ad603a9bb043b0c7fa4dcb6b9a995..7a388f86f35c1031f59c023805802b5c973c9cfc 100644 (file)
@@ -72,6 +72,6 @@ protected:
 };
 
 
-char *pfb2pfa (Byte const *pfb, int length);
+vector<char> pfb2pfa (const vector<char> &pfb);
 
 #endif /* FONT_METRIC_HH */
index 83e95491c292f82fb79d4a3439c0947806d86bc5..065713de1a8f56ee7e6b115e31b2e51e1018cd98 100644 (file)
@@ -1614,7 +1614,7 @@ basic_music:
        }
        | LYRICSTO symbol '=' simple_string lyric_mode_music
        {
-               $$ = MAKE_SYNTAX (lyric_combine, @$, $3, $2, $4);
+               $$ = MAKE_SYNTAX (lyric_combine, @$, $4, $2, $5);
        }
        ;
 
index e718a13bf079f36c89708aebf65ddbcf1aa98611..37e44da8b05ed7fd1eff145b6c138b40c03c77ea 100644 (file)
@@ -25,16 +25,14 @@ LY_DEFINE (ly_type1_2_pfa, "ly:type1->pfa",
   if ((Byte) type1_string[0] == 0x80)
     {
       /* The file is in PFB format. Convert it to PFA format. */
-      char *pfa = pfb2pfa ((Byte *) &type1_string[0],
-                           (int) type1_string.size ());
-      pfa_scm = scm_from_latin1_string (pfa);
-      free (pfa);
+      vector<char> pfa = pfb2pfa (type1_string);
+      pfa_scm = scm_from_latin1_stringn (&pfa[0], pfa.size ());
     }
   else
     {
       /* The file is in PFA format. Pass it through. */
-      type1_string.push_back(0);
-      pfa_scm = scm_from_latin1_string (&type1_string[0]);
+      pfa_scm = scm_from_latin1_stringn (&type1_string[0],
+                                         type1_string.size ());
     }
 
   debug_output ("]", false);
index c971024548087c547c826da0d323dfa5a37c972c..101f4f0fc68a7c947470b226b0fcb903b6395046 100644 (file)
 #include <cstdlib>
 #include <cstdio>
 #include <cstring>
+#include <iomanip>
+#include <sstream>
 using namespace std;
 
+#include "international.hh"
 #include "program-option.hh"
 #include "source-file.hh"
 #include "memory-stream.hh"
@@ -29,55 +32,61 @@ using namespace std;
 #include "main.hh"
 #include "warn.hh"
 
-char *
-pfb2pfa (Byte const *pfb, int length)
+vector<char>
+pfb2pfa (const vector<char> &pfb)
 {
-  char *out = (char *) malloc (sizeof (char));
-  long olen = 0;
+  vector<char> out;
 
-  Byte const *p = pfb;
-  while (p < pfb + length)
+  vector<char>::const_iterator p = pfb.begin ();
+  while (p < pfb.end ())
     {
-      if (*p++ != 128)
-        break;
+      if (static_cast<Byte>(*p++) != 128)
+        {
+          error (_ ("Segment header of the Type 1 (PFB) font is broken."));
+          break;
+        }
 
-      Byte type = *p++;
+      Byte type = static_cast<Byte>(*p++);
       if (type == 3)
         break;
 
-      unsigned seglen
-        = p[0] | (p[1] << 8)
-          | (p[2] << 16) | (p[3] << 24);
+      size_t seglen = static_cast<Byte>(*p++);
+      seglen |= (static_cast<Byte>(*p++) << 8);
+      seglen |= (static_cast<Byte>(*p++) << 16);
+      seglen |= (static_cast<Byte>(*p++) << 24);
+      if ((p + seglen) > pfb.end ())
+        {
+          error (_ ("Segment length of the Type 1 (PFB) font is too long."));
+          break;
+        }
 
-      p += 4;
       if (type == 1)
         {
-          out = (char *)realloc (out, olen + seglen + 1);
-          char *outp = out + olen;
-          memcpy (outp, p, seglen);
-          olen += seglen;
+          copy (p, p + seglen, back_inserter (out));
           p += seglen;
         }
       else if (type == 2)
         {
-          unsigned outlength = (seglen * 2) + (seglen / 32) + 2;
+          stringstream ss;
 
-          out = (char *)realloc (out, olen + outlength + 1);
+          ss << hex << setfill ('0');
 
-          char *outp = out + olen;
-          for (int i = seglen; i--;)
+          for (size_t i = seglen; i > 0; --i)
             {
-              sprintf (outp, "%02x", *p++);
-              outp += 2;
+              ss << setw (2) << static_cast<int>(static_cast<Byte>(*p++));
               if (! (i % 32))
-                *outp++ = '\n';
+                ss << '\n';
             }
 
-          olen = outp - out;
+          string str = ss.str ();
+          copy (str.begin (), str.end (), back_inserter (out));
+        }
+      else
+        {
+          error (_ ("Segment type of the Type 1 (PFB) font is unknown."));
+          break;
         }
     }
-  out[olen] = 0;
 
   return out;
 }
-
index 2b11d39d38b937a0c954a281db4e147d3083111a..6bdccfbebdbff62edd7baaf1fff89d0dc1c01235 100644 (file)
@@ -23,7 +23,7 @@ That's it.  For more information, visit http://lilypond.org .
 
 %}
 
-\version "2.19.49"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.50"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index 176075cd5c4423f8239b9ae99d00c249a533e6ed..922e6384241a2055f7d4b3b9abac36e642570098 100644 (file)
@@ -32,7 +32,7 @@ Good luck with LilyPond!  Happy engraving.
 
 %}
 
-\version "2.19.49"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.50"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index 0414bd926b89418e9a5d966de31fe81e2ef24b54..0f198ffbedcbdb3b6e1c7c51240f5cc718f7f787 100644 (file)
    (map (lambda (y) (ac:setduration y hemisemidur))
     (ly:music-property music 'elements))
    (set! uppernote (ly:music-deep-copy music))
-   (map (lambda (y) (ac:up y))
+   (map ac:up
     (filter
      (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name)))
      (ly:music-property uppernote 'elements)))
           (ly:music-property abovenote 'elements))
          (map (lambda (y) (ac:setduration y gracedur))
           (ly:music-property abovenoteTwo 'elements))
-         (map (lambda (y) (ac:up y))
+         (map ac:up
           (filter
            (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name)))
            (ly:music-property abovenote 'elements)))
-         (map (lambda (y) (ac:up y))
+         (map ac:up
           (filter
            (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name)))
            (ly:music-property abovenoteTwo 'elements)))
           (ly:music-property gracenote 'elements))
          (map (lambda (y) (ac:setduration y gracedur))
                (ly:music-property belownote 'elements))
-         (map (lambda (y) (ac:down y))
+         (map ac:down
           (filter
            (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name)))
            (ly:music-property belownote 'elements)))
                  (below (ly:music-deep-copy music))
                  (newmusic (make-sequential-music (list above music below music))))
            (begin
-            (map (lambda (y) (ac:down y))
+            (map ac:down
              (filter
               (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name)))
               (ly:music-property below 'elements)))
-            (map (lambda (y) (ac:up y))
+            (map ac:up
              (filter
               (lambda (z) (eq? 'NoteEvent (ly:music-property z 'name)))
               (ly:music-property above 'elements)))
index a2a39bc47ef742e8142bd86c2db447308ecee1d9..4627aaa23c2760d87e096a2227aa85426f741f9d 100644 (file)
@@ -40,7 +40,7 @@
    "Constructs a filename in the form
 @file{@var{original_filename}-@var{staff_instrument_name}.notes} if the
 staff has an instrument name.  If the staff has no instrument
-name, it uses "unnamed-staff" for that part of the filename."
+name, it uses \"unnamed-staff\" for that part of the filename."
    (let* ((inst-name (ly:context-property context 'instrumentName)))
      (string-concatenate (list
                           (substring (object->string (command-line))
index 76c2ec64b882f079ec9fbf441076cfc30a305631..d96e655370612f6e107ac3259df3a4c066071fd1 100644 (file)
@@ -1651,9 +1651,7 @@ appropriate tweak applied.")
        (define (offset-control-points offsets)
          (if (null? offsets)
              coords
-             (map
-               (lambda (x y) (coord-translate x y))
-               coords offsets)))
+             (map coord-translate coords offsets)))
 
        (define (helper sibs offs)
          (if (pair? offs)
index 899db67172e216fbc91da71cb6aa52dcd15a8f34..dc2c464f44a749907ef9a6a86dfa710ff595dfc4 100644 (file)
   <alias binding="strong">
     <family>LilyPond Serif</family>
     <prefer>
+      <!-- Main serif font:
+          Latin glyphs only. -->
       <family>TeX Gyre Schola</family>
+      <!-- Ghostscript (URW) font:
+          gs 9.20+ includes Greek and Cyrillic glyphs. -->
+      <family>C059</family>                   <!-- gs 9.20 -->
+      <family>Century SchoolBook URW</family> <!-- gs 9.16 -->
+      <family>Century Schoolbook L</family>   <!-- gs 9.15, 9.18, 9.19 -->
+      <!-- Substitute font:
+           Most Unicode glyphs except CJK are included. -->
       <family>DejaVu Serif</family>
     </prefer>
     <default>
+      <!-- Fontconfig default serif font alias:
+           For CJK glyphs etc. -->
       <family>serif</family>
     </default>
   </alias>
   <alias binding="strong">
     <family>LilyPond Sans Serif</family>
     <prefer>
+      <!-- Main sans-serif font:
+          Latin glyphs only. -->
       <family>TeX Gyre Heros</family>
+      <!-- Ghostscript (URW) font:
+          gs 9.16+ includes Greek and Cyrillic glyphs. -->
+      <family>Nimbus Sans</family>    <!-- gs 9.20, 9.16 -->
+      <family>Nimbus Sans L</family>  <!-- gs 9.15, 9.18, 9.19 -->
+      <!-- Substitute font:
+           Most Unicode glyphs except CJK are included. -->
       <family>DejaVu Sans</family>
     </prefer>
     <default>
+      <!-- Fontconfig default san-serif font alias:
+           For CJK glyphs etc. -->
       <family>sans-serif</family>
     </default>
   </alias>
   <alias binding="strong">
     <family>LilyPond Monospace</family>
     <prefer>
+      <!-- Main monospace font:
+          Latin glyphs only. -->
       <family>TeX Gyre Cursor</family>
+      <!-- Ghostscript (URW) font:
+          gs 9.16+ includes Greek and Cyrillic glyphs. -->
+      <family>Nimbus Mono PS</family>   <!-- gs 9.20 -->
+      <family>Nimbus Mono</family>      <!-- gs 9.16, 9.18, 9.19 -->
+      <family>Nimbus Mono L</family>    <!-- gs 9.15 -->
+      <!-- Substitute font:
+           Most Unicode glyphs except CJK are included. -->
       <family>DejaVu Sans Mono</family>
     </prefer>
     <default>
+      <!-- Fontconfig default monospace font alias:
+           For CJK glyphs etc. -->
       <family>monospace</family>
     </default>
   </alias>
index a9afe7b51f4bebc3561a3204d03f3f84eda2450d..90d52b6e3090bcb7a19e3b0033fd2273168a650c 100644 (file)
@@ -1 +1 @@
-See http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=log;h=refs/tags/release/2.19.49-1
+See http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=log;h=refs/tags/release/2.19.50-1
index 2a30437392a493b699e940b9b5c899617a73af4e..a3beb30df183814b0df8b9a06884891bb6d9286a 100644 (file)
@@ -1,32 +1,32 @@
-commit d9b80e6ee9187ab71ffc2778c9b18c435f3ef73f
+commit fe9cdeeaadee74b79eb4fb2f7a0d4f4322b35bca
 Author: Phil Holmes <mail@philholmes.net>
-Date:   Sun Oct 16 12:16:18 2016 +0100
+Date:   Sun Nov 6 11:30:50 2016 +0000
 
     Release: bump Welcome versions.
 
 diff --git a/ly/Welcome-to-LilyPond-MacOS.ly b/ly/Welcome-to-LilyPond-MacOS.ly
-index 6424d75..2b11d39 100644
+index 2b11d39..6bdccfb 100644
 --- a/ly/Welcome-to-LilyPond-MacOS.ly
 +++ b/ly/Welcome-to-LilyPond-MacOS.ly
 @@ -23,7 +23,7 @@ That's it.  For more information, visit http://lilypond.org .
  
  %}
  
--\version "2.19.48"  % necessary for upgrading to future LilyPond versions.
-+\version "2.19.49"  % necessary for upgrading to future LilyPond versions.
+-\version "2.19.49"  % necessary for upgrading to future LilyPond versions.
++\version "2.19.50"  % necessary for upgrading to future LilyPond versions.
  
  \header{
    title = "A scale in LilyPond"
 diff --git a/ly/Welcome_to_LilyPond.ly b/ly/Welcome_to_LilyPond.ly
-index 77503b4..176075c 100644
+index 176075c..922e638 100644
 --- a/ly/Welcome_to_LilyPond.ly
 +++ b/ly/Welcome_to_LilyPond.ly
 @@ -32,7 +32,7 @@ Good luck with LilyPond!  Happy engraving.
  
  %}
  
--\version "2.19.48"  % necessary for upgrading to future LilyPond versions.
-+\version "2.19.49"  % necessary for upgrading to future LilyPond versions.
+-\version "2.19.49"  % necessary for upgrading to future LilyPond versions.
++\version "2.19.50"  % necessary for upgrading to future LilyPond versions.
  
  \header{
    title = "A scale in LilyPond"
index 33764d1f88d9ba0365249bdd1f4c729973ed70db..544e07ecbd3d0fae19cbea753bcfc7553df5b0b4 100644 (file)
@@ -6,10 +6,10 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.19.49\n"
+"Project-Id-Version: lilypond 2.19.50\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu."
 "lilypond.bugs\n"
-"POT-Creation-Date: 2016-10-16 11:55+0100\n"
+"POT-Creation-Date: 2016-11-06 11:23+0000\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"
@@ -2629,12 +2629,12 @@ msgid "NoteEvent without pitch"
 msgstr ""
 
 #: open-type-font-scheme.cc:149 open-type-font-scheme.cc:195
-#: open-type-font-scheme.cc:241 pfb-scheme.cc:62 ttf.cc:512 ttf.cc:561
+#: open-type-font-scheme.cc:241 pfb-scheme.cc:60 ttf.cc:512 ttf.cc:561
 msgid "font index must be non-negative, using index 0"
 msgstr ""
 
 #: open-type-font-scheme.cc:163 open-type-font-scheme.cc:209
-#: open-type-font-scheme.cc:289 pfb-scheme.cc:77 ttf.cc:480 ttf.cc:528
+#: open-type-font-scheme.cc:289 pfb-scheme.cc:75 ttf.cc:480 ttf.cc:528
 #, c-format
 msgid "font index %d too large for font `%s', using index 0"
 msgstr ""
@@ -2923,6 +2923,18 @@ msgstr ""
 msgid "MIDI output to `%s'..."
 msgstr ""
 
+#: pfb.cc:45
+msgid "Segment header of the Type 1 (PFB) font is broken."
+msgstr ""
+
+#: pfb.cc:59
+msgid "Segment length of the Type 1 (PFB) font is too long."
+msgstr ""
+
+#: pfb.cc:86
+msgid "Segment type of the Type 1 (PFB) font is unknown."
+msgstr ""
+
 #: piano-pedal-engraver.cc:276
 #, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
@@ -3597,12 +3609,12 @@ msgstr ""
 msgid "defaulting to ~S pt"
 msgstr ""
 
-#: define-markup-commands.scm:3857
+#: define-markup-commands.scm:3858
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr ""
 
-#: define-markup-commands.scm:4070
+#: define-markup-commands.scm:4071
 #, scheme-format
 msgid "not a valid duration string: ~a - ignoring"
 msgstr ""
@@ -3651,27 +3663,27 @@ msgstr ""
 msgid "unknown Grob interface: ~S"
 msgstr ""
 
-#: documentation-lib.scm:62
+#: documentation-lib.scm:61
 #, scheme-format
 msgid "Processing ~S..."
 msgstr ""
 
-#: documentation-lib.scm:178
+#: documentation-lib.scm:177
 #, scheme-format
 msgid "Writing ~S..."
 msgstr ""
 
-#: documentation-lib.scm:190
+#: documentation-lib.scm:189
 #, scheme-format
 msgid "cannot find description for property `~S' (~S)"
 msgstr ""
 
-#: documentation-lib.scm:211
+#: documentation-lib.scm:210
 #, scheme-format
 msgid "cannot find description for property ~S (~S)"
 msgstr ""
 
-#: flag-styles.scm:155
+#: flag-styles.scm:154
 #, scheme-format
 msgid "flag stroke `~a' or `~a' not found"
 msgstr ""
@@ -3914,7 +3926,7 @@ msgstr ""
 msgid "negative replication count; ignoring"
 msgstr ""
 
-#: modal-transforms.scm:289
+#: modal-transforms.scm:287
 msgid "Dangling tie in \\retrograde"
 msgstr ""
 
@@ -3983,12 +3995,12 @@ msgstr ""
 msgid "Missing duration"
 msgstr ""
 
-#: music-functions.scm:2635
+#: music-functions.scm:2620
 #, scheme-format
 msgid "not a symbol list: ~a"
 msgstr ""
 
-#: music-functions.scm:2638
+#: music-functions.scm:2623
 #, scheme-format
 msgid "conflicting tag group ~a"
 msgstr ""
index 52ae72b2cb6298cfc445529d7fa1770d5e95c631..29ec16fc805d24ccc0cb8b57245f9d5df19eb7c5 100644 (file)
@@ -169,4 +169,4 @@ FOOBAR-MARKUP) if OMIT-ROOT is given and non-false.
 
   (let* ((elts (filter is-event-chord? (ly:music-property seq 'elements)))
          (alist (map chord-to-exception-entry elts)))
-    (filter (lambda (x) (cdr x)) alist)))
+    (filter cdr alist)))
index a6c84b8f6ee3b96c0c1398781ff0e5ecd2aedb5f..07f1538aa275dad7e07737548e2a0feb425f1b52 100644 (file)
@@ -383,7 +383,7 @@ Its appearance may be customized by overrides for @code{thickness},
     ;; The final stencil: lined-up bows
     (apply ly:stencil-add
       (map
-        (lambda (stil pt) (ly:stencil-translate stil pt))
+        ly:stencil-translate
         (circular-list init-bow-up init-bow-down)
         list-of-starts))))
 
@@ -3701,17 +3701,18 @@ mensural-flags.  Both are supplied for convenience.
            (raw-length (if stem-up upflag-length downflag-length))
            (angle (if stem-up upflag-angle downflag-angle))
            (flag-length (+ (* raw-length factor) half-stem-thickness))
-           (flag-end (if (= angle 0)
-                         (cons flag-length (* half-stem-thickness dir))
-                         (polar->rectangular flag-length angle)))
+           (flag-end (polar->rectangular flag-length angle))
            (thickness (* flag-thickness factor))
            (thickness-offset (cons 0 (* -1 thickness dir)))
            (spacing (* -1 flag-spacing factor dir))
            (start (cons (- half-stem-thickness) (* half-stem-thickness dir)))
-           (points (list start
-                         flag-end
-                         (offset-add flag-end thickness-offset)
-                         (offset-add start thickness-offset)))
+           (raw-points
+             (list
+               '(0 . 0)
+               flag-end
+               (offset-add flag-end thickness-offset)
+               thickness-offset))
+           (points (map (lambda (coord) (offset-add coord start)) raw-points))
            (stencil (ly:round-filled-polygon points half-stem-thickness))
            ;; Log for 1/8 is 3, so we need to subtract 3
            (flag-stencil (buildflags stencil (- log 3) stencil spacing)))
@@ -4745,10 +4746,10 @@ Overriding @code{baseline-skip} to increase rows vertical distance.
     #'(0 1 0 -1)
     {
       \\underline { center-aligned right-aligned center-aligned left-aligned }
-      one \number 1 thousandth \number 0.001
-      eleven \number 11 hundredth \number 0.01
-      twenty \number 20 tenth \number 0.1
-      thousand \number 1000 one \number 1.0
+      one \\number 1 thousandth \\number 0.001
+      eleven \\number 11 hundredth \\number 0.01
+      twenty \\number 20 tenth \\number 0.1
+      thousand \\number 1000 one \\number 1.0
     }
 }
 @end lilypond
index 42637cd16c0c5548b44395186893e0d96cdedd05..a5ccd9284928289f37284e44b63b870280973c39 100644 (file)
@@ -628,7 +628,7 @@ Otherwise, return #f."
                       (format #f "~s" string)
                       string))
                 (markup->lily-string text)))
-          (map-in-order (lambda (m) (music->lily-string m))
+          (map-in-order music->lily-string
                         (ly:music-property lyric 'articulations))))
 
 (define-display-method BreathingEvent (event)
index d5f451732615b469e518faf6659ba833ed9744f1..685dc500d32354a34db708a03761af48b8c022b8 100644 (file)
@@ -51,8 +51,7 @@
     "\n\n"
     (if (pair? (node-children node))
         (texi-menu
-         (map (lambda (x) (menu-entry x))
-              (node-children node)))
+         (map menu-entry (node-children node)))
         ""))
    port)
   (for-each (lambda (x) (dump-node x port (+ 1 level)))
index 2b52f44cb23516eb2ce7924dda97ac37b376231c..a2ddf3a9dd0bd8d728b2352c5ea7d03dbcc2b324 100644 (file)
@@ -81,19 +81,18 @@ All lengths are scaled according to the font size of the note."
            (raw-length (if stem-up upflag-length downflag-length))
            (angle (if stem-up upflag-angle downflag-angle))
            (flag-length (+ (* raw-length factor) half-stem-thickness))
-           ;; For flat flags the points to create the stencil using
-           ;; ly:round-filled-polygon need to be different concerning flag-end
-           (flag-end (if (= angle 0)
-                         (cons flag-length (* half-stem-thickness dir))
-                         (polar->rectangular flag-length angle)))
+           (flag-end (polar->rectangular flag-length angle))
            (thickness (* flag-thickness factor))
            (thickness-offset (cons 0 (* -1 thickness dir)))
            (spacing (* -1 flag-spacing factor dir ))
            (start (cons (- half-stem-thickness) (* half-stem-thickness dir)))
-           (points (list start
-                         flag-end
-                         (offset-add flag-end thickness-offset)
-                         (offset-add start thickness-offset)))
+           (raw-points
+             (list
+               '(0 . 0)
+               flag-end
+               (offset-add flag-end thickness-offset)
+               thickness-offset))
+           (points (map (lambda (coord) (offset-add coord start)) raw-points))
            (stencil (ly:round-filled-polygon points half-stem-thickness))
            ;; Log for 1/8 is 3, so we need to subtract 3
            (flag-stencil (buildflag stencil (- log 3) stencil spacing))
index f9e26ed360235d316a5a467fab1c9d19483d3f3f..70c813e8e68d6721d53eb2ab7f125f9a22405c86 100644 (file)
@@ -142,9 +142,7 @@ Typically used to construct a scale for input to
       (list pitch))
 
      ((pair? elements)
-      (append-map
-       (lambda (x) (make-scale x))
-       elements))
+      (append-map make-scale elements))
 
      ((ly:music? element)
       (make-scale element)))))
index e7728ec8893fa6e128b71d9be9d9b2be01b3f990..3e9818d0093b48c1d0072dbfe3d7fa2d97efcf18 100644 (file)
@@ -2313,9 +2313,7 @@ list or if there is a type-mismatch, @var{arg} will be returned."
               (number-pair? offsets)))
      (coord-translate arg offsets))
     ((and (number-pair-list? arg) (number-pair-list? offsets))
-     (map
-       (lambda (x y) (coord-translate x y))
-       arg offsets))
+     (map coord-translate arg offsets))
     (else arg)))
 
 (define-public (grob-transformer property func)
@@ -2323,7 +2321,7 @@ list or if there is a type-mismatch, @var{arg} will be returned."
 pure or unpure values.  @var{func} is called with the respective grob
 as first argument and the default value (after resolving all callbacks)
 as the second."
-  (define (worker self container-part grob . rest)
+  (define (worker self caller grob . rest)
     (let* ((immutable (ly:grob-basic-properties grob))
            ;; We need to search the basic-properties alist for our
            ;; property to obtain values to offset.  Our search is
@@ -2336,29 +2334,16 @@ as the second."
            (target (find-value-to-offset property self immutable))
            ;; if target is a procedure, we need to apply it to our
            ;; grob to calculate values to offset.
-           (vals (cond ((procedure? target) (target grob))
-                       ;; Argument lists for a pure procedure pulled
-                       ;; from an unpure-pure-container may be
-                       ;; different from a normal procedure, so we
-                       ;; need a different code path and calling
-                       ;; convention for procedures pulled from an
-                       ;; container as opposed to from the property
-                       ((ly:unpure-pure-container? target)
-                        (let ((part (container-part target)))
-                          (if (procedure? part)
-                              (apply part grob rest)
-                              part)))
-                       (else target))))
+           (vals (apply caller target grob rest)))
       (func grob vals)))
   ;; return the container named `self'.  The container self-reference
   ;; seems like chasing its own tail but gets dissolved by
   ;; define/lambda separating binding and referencing of "self".
   (define self (ly:make-unpure-pure-container
                 (lambda (grob)
-                  (worker self ly:unpure-pure-container-unpure-part grob))
+                  (worker self ly:unpure-call grob))
                 (lambda (grob . rest)
-                  (apply worker self ly:unpure-pure-container-pure-part
-                         grob rest))))
+                  (apply worker self ly:pure-call grob rest))))
   self)
 
 (define-public (offsetter property offsets)
index 733531c3c77259a80baaa48efd8d46074fe05c80..46d085ef8f62212a0b022916ec12019f3a48095e 100644 (file)
@@ -1512,7 +1512,8 @@ parent or the parent has no setting."
 the extents of @code{BreakAlignment} grobs associated with the left and
 right bounds of a @code{MeasureCounter} spanner.  Broken measures are
 numbered in parentheses."
-  (let* ((num (markup (number->string (ly:grob-property grob 'count-from))))
+  (let* ((num (make-simple-markup
+               (number->string (ly:grob-property grob 'count-from))))
          (orig (ly:grob-original grob))
          (siblings (ly:spanner-broken-into orig)) ; have we been split?
          (num
index 3311ebb7a323144fdc915b7bafc3751acc857468..1dd534344e4c910938d009dbd1b2f11d18a3e437 100644 (file)
@@ -36,22 +36,22 @@ receive a count with @code{\\startMeasureCount} and
 
     (make-engraver
      (listeners
-       ((measure-counter-event engraver event)
-        (cond
-          ((and (= START (ly:event-property event 'span-direction))
-                go?)
-           (set! stop? #t)
-           (ly:input-warning
-             (ly:event-property event 'origin)
-             "count not ended before another begun"))
-          ((= START (ly:event-property event 'span-direction))
-           (set! go? #t)
-           ;; initialize one less so first measure receives a count spanner
-           (set! last-measure-seen
-                 (1- (ly:context-property context 'currentBarNumber))))
-          ((= STOP (ly:event-property event 'span-direction))
-           (set! stop? #t)
-           (set! go? #f)))))
+      ((measure-counter-event engraver event)
+       (cond
+        ((and (= START (ly:event-property event 'span-direction))
+              go?)
+         (set! stop? #t)
+         (ly:input-warning
+          (ly:event-property event 'origin)
+          "count not ended before another begun"))
+        ((= START (ly:event-property event 'span-direction))
+         (set! go? #t)
+         ;; initialize one less so first measure receives a count spanner
+         (set! last-measure-seen
+               (1- (ly:context-property context 'currentBarNumber))))
+        ((= STOP (ly:event-property event 'span-direction))
+         (set! stop? #t)
+         (set! go? #f)))))
 
      ((process-music trans)
       (let ((col (ly:context-property context 'currentCommandColumn))
@@ -85,7 +85,7 @@ receive a count with @code{\\startMeasureCount} and
                     (set! (ly:grob-property c 'count-from) (+ counter elapsed))
                     (set! count-spanner c)
                     (set! elapsed (1+ elapsed))))))
-                    (set! last-measure-seen current-bar)))
+        (set! last-measure-seen current-bar)))
 
      ((finalize trans)
       (if go?
index 17f5f9084f69c9364e39d703de9dc17b182d848e..433bf634d8c21961814c74961612d8088e6a2ccb 100644 (file)
@@ -1130,7 +1130,7 @@ grestore
          ((eq? head 'rotate-stencil) (interpret (caddr expr)))
          ((eq? head 'translate-stencil) (interpret (caddr expr)))
          ((eq? head 'combine-stencil)
-          (for-each (lambda (e) (interpret e))  (cdr expr)))
+          (for-each interpret  (cdr expr)))
          (else
           (collect (fold-false-pairs (strip-floats expr))))
 
diff --git a/scripts/build/xelatex-with-options.sh b/scripts/build/xelatex-with-options.sh
new file mode 100755 (executable)
index 0000000..2d17381
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# By the default settings,
+# XeTeX (xdvipdfmx) replaces link destination names with integers.
+# In this case, the replaced destination names of
+# remote PDF cannot be known. In order to avoid replacement,
+# we can use commandline option `-C 0x0010' for xdvipdfmx.
+
+exec xelatex --output-driver='xdvipdfmx -C 0x0010' "$@"