]> git.donarmstrong.com Git - lilypond.git/commitdiff
Imported Upstream version 2.19.53
authorDr. Tobias Quathamer <toddy@debian.org>
Mon, 26 Dec 2016 09:46:45 +0000 (10:46 +0100)
committerDr. Tobias Quathamer <toddy@debian.org>
Mon, 26 Dec 2016 09:46:45 +0000 (10:46 +0100)
25 files changed:
.gitfilelist
Documentation/changes.tely
Documentation/contributor/website-work.itexi
Documentation/fr/notation/spacing.itely
Documentation/fr/usage/running.itely
Documentation/fr/web/community.itexi
Documentation/it/web/community.itexi
Documentation/it/web/news-headlines.itexi
Documentation/notation/staff.itely
Documentation/web/community.itexi
Documentation/web/news-front.itexi
Documentation/web/news-headlines.itexi
Documentation/web/news.itexi
NEWS.txt
VERSION
input/regression/repeat-unfold-partial.ly [new file with mode: 0644]
ly/Welcome-to-LilyPond-MacOS.ly
ly/Welcome_to_LilyPond.ly
ly/articulate.ly
ly/music-functions-init.ly
out/ChangeLog
out/RELEASE-COMMIT
po/lilypond.pot
scm/music-functions.scm
scripts/musicxml2ly.py [changed mode: 0644->0755]

index c3e71e9eae3ec9602f4060cbf8755e756bf6d085..a22eb21ebd968bafa7ba76e89397572e3bf70714 100644 (file)
@@ -3520,6 +3520,7 @@ input/regression/repeat-tremolo-dots.ly
 input/regression/repeat-tremolo-one-note-articulation.ly
 input/regression/repeat-tremolo-three-notes.ly
 input/regression/repeat-unfold-all.ly
+input/regression/repeat-unfold-partial.ly
 input/regression/repeat-unfold-tremolo.ly
 input/regression/repeat-unfold.ly
 input/regression/repeat-volta-segno.ly
index 2407b3d018f3c664b9e6c387b04647684db2cea4..958ecb109e095c7fa9605da34647ca2ac0fbfb6c 100644 (file)
@@ -61,6 +61,14 @@ which scares away people.
 
 @end ignore
 
+@item
+The music function @code{\\unfoldRepeats} can now take an
+optional argument-list specifying which type(s) of repeated music
+should be unfolded.  Possible entries are @code{percent}, @code{tremolo},
+@code{volta}.
+If the optional argument-list is unspecified, @code{repeated-music} will be
+used, unfolding all.
+
 @item
 A new @code{output-attributes} grob property is now used for svg output
 instead of the @code{id} grob property.  It allows multiple attributes
index 588d705f1b4facfbd11797a6122b95aae935d2b4..be4cd26f21dcba4a1f045b2bd774ee8065f55ee5 100644 (file)
 @section Introduction to website work
 
 The website is @emph{not} written directly in HTML;
-instead, the source is Texinfo, which is then generated into HTML,
-PDF, and Info formats.  The sources are
+instead it is autogenerated along with the documentation through a
+sophisticated setup, using Texinfo source files.  Texinfo is the
+standard for documentation of GNU software and allows generating
+output in HTML, PDF, and Info formats, which drastically reduces
+maintenance effort and ensures that the website content is
+consistent with the rest of the documentation.  This makes the
+environment for improving the website rather different from common
+web development.
+
+If you have not contributed to LilyPond before, a good starting
+point might be incremental changes to the CSS file, to be found at
+@uref{http://lilypond.org/css/lilypond-website.css} or in the
+LilyPond source code at @file{./Documentation/css/lilypond-website.css}.
+
+Large scale structural changes tend to require familiarity with
+the project in general, a track record in working on LilyPond
+documentation as well as a prospect of long-term commitment.
+
+The Texinfo source file for generating HTML are to be found in
 
 @example
 Documentation/web.texi
index 8c0e61fd50710c520852965ea8cb6d159196cf12..210be80f323fde8b61c225942081be6865885d1d 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-   Translation of GIT committish: 137af1bb9546d8845cbd7f9ecc0936fb4a0914e3
+   Translation of GIT committish: 6b8cabe379e8b4b945797a4e55759c56117223d4
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
@@ -971,8 +971,9 @@ Les valeurs par défaut sont définies dans le fichier
 
 L'algorithme de calcul des sauts de page à utiliser.  Vous avez le choix
 entre @code{ly:minimal-breaking}, @code{ly:page-turn-breaking},
-@code{ly:one-line-breaking}, @code{ly:one-line-auto-height-breaking} et
-@code{ly:optimal-breaking} (activé par défaut).
+@code{ly:one-page-breaking}, @code{ly:one-line-breaking},
+@code{ly:one-line-auto-height-breaking}, et @code{ly:optimal-breaking}
+(activé par défaut).
 
 @item page-breaking-system-system-spacing
 @funindex page-breaking-system-system-spacing
@@ -1053,6 +1054,8 @@ Manuel de notation :
 @ref{Minimisation des sauts de page},
 @ref{Optimisation des sauts de page},
 @ref{Optimisation des tournes},
+@ref{Présentation en ligne continue},
+@ref{Présentation en page continue},
 @ref{Présentation en rouleau},
 @ref{Sauts de page}.
 
@@ -1688,6 +1691,7 @@ page, ainsi que les moyens de les modifier.
 * Saut de page manuel::
 * Optimisation des sauts de page::
 * Minimisation des sauts de page::
+* Présentation en page continue::
 * Présentation en ligne continue::
 * Présentation en rouleau::
 * Optimisation des tournes::
@@ -1846,6 +1850,29 @@ Morceaux choisis :
 @rlsrnamed{Spacing,Espacements}.
 
 
+@node Présentation en page continue
+@unnumberedsubsubsec Présentation en page continue
+@translationof One-page page breaking
+
+@funindex ly:one-page-breaking
+
+La fonction @code{ly:one-page-breaking} constitue un algorithme de
+calcul des sauts de page particulier en ceci que la hauteur de page sera
+automatiquement ajustée à la longueur de la partition, de telle sorte
+que toute la musique tienne sur une seule page.  La variable
+@code{paper-height} du bloc @code{\paper} est ignorée, mais les autres
+réglages restent disponibles.  En particulier, l'espacement entre le
+dernier système (ou un @emph{markup} de premier niveau) et le pied de
+page est réglable à l'aide de la variable @code{last-bottom-spacing}
+du bloc @code{\paper}.  La largeur de page n'est, par défaut, pas
+modifiée ; ceci peut s'ajuster à l'aide de la variable
+@code{paper-width} du bloc @code{\paper}.
+
+@knownissues
+@code{ly:one-page-breaking} est à ce jour incompatible avec
+l'utilisation de @code{\bookpart}.
+
+
 @node Présentation en ligne continue
 @unnumberedsubsubsec Présentation en ligne continue
 @translationof One-line page breaking
@@ -1853,7 +1880,7 @@ Morceaux choisis :
 @funindex ly:one-line-breaking
 
 La fonction @code{ly:one-line-breaking} constitue un algorithme de
-calcul des sauts de pages particulier en ceci que chaque partition fait
+calcul des sauts de page particulier en ceci que chaque partition fait
 l'objet d'une page unique, d'une seule ligne.  Cette fonctionnalité
 s'affranchit de l'impression des titres et marges ; seule la partition
 est affichée.
index 6d1d3365f3db519a1ce9ffeb134788abe91ccdb2..e040ca627c37b3a9b05613f71aa2ecbcb03aa0b0 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-   Translation of GIT committish: 2034ca4fcbed9253b5a85e9360e47d3fe3ff1d09
+   Translation of GIT committish: 6b8cabe379e8b4b945797a4e55759c56117223d4
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
@@ -626,6 +626,11 @@ est utilisée pour les tests de régression.
 @tab Décale le bord gauche du typon EPS d'une valeur donnée en
 millimètres.
 
+@item @code{font-export-dir}
+@tab @code{#f [répertoire]}
+@tab Répertoire dans lequel exporter les fontes en tant que fichiers
+PostScript.
+
 @item @code{gs-load-fonts}
 @tab @code{#f}
 @tab Charge les fontes grâce à Ghostscript.
@@ -635,6 +640,11 @@ millimètres.
 @tab Limite les fontes chargées par Ghostscript aux seules fontes
 LilyPond.
 
+@item @code{gs-never-embed-fonts}
+@tab @code{#f}
+@tab Intime à Ghostscript d'embarquer les fontes uniquement au format
+TrueType, sans exception.
+
 @item @code{gui}
 @tab @code{#f}
 @tab Travaille silencieusement, et redirige tout le verbiage dans un
index c3871201ff935bf1f80f46e341a6262893b16f56..6030f8f882d7abf90260801daf07ac88e82be5ff 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage : fr -*-
 @c This file is part of web.texi
 @ignore
-   Translation of GIT committish: 0628cc44250b21d422b21890a7f266cd4b5ca584
+   Translation of GIT committish: 6b8cabe379e8b4b945797a4e55759c56117223d4
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
@@ -643,11 +643,9 @@ statistiques s'arrêtent à la version @versionDevel{}.
 
 Développeurs intéressés :
 @table @asis
-@item @email{dak@@gnu.org, David Kastrup (le contacter en anglais)}
-Vos contributions me permettront de continuer mon activité à temps plein
-sur LilyPond.  Je me concentre sur la modélisation des interfaces entre
-l'utilisateur et le programme -- cohérence, implémentation,
-simplification, documentation et débogage.
+@item @email{lilypond-devel@@gnu.org, Liste des développeurs de LilyPond}
+Dans la mesure où aucun développeur ne s'est actuellement déclaré,
+veuillez vous adresser directement à la liste de diffusion des développeurs.
 
 @c Format
 @c @item @email{name@@adress.domain, Name}
@@ -959,7 +957,7 @@ qui y participent déjà d'y être encore plus impliqués.  LilyPond
 participe à ce programme sous l'égide du
 @uref{http://www.gnu.org/, projet GNU}.
 
-Nous avons eu des participants aux sessions de 2012 et 2015, et
+Nous avons eu des participants aux sessions de 2012, 2015 et 2016, et
 encourageons les étudiants à candidater pour les sessions à venir.
 
 Si vous avez des questions à ce sujet ou avez envie d'y participer,
@@ -973,7 +971,7 @@ contactez-nous sur la liste des développeurs (voir @ref{Contact}).
 
 Voici une liste de projets que nous avons proposés aux étudiants du GSoC
 et à quiconque aurait envie d'améliorer LilyPond.@*
-Dernière mise à jour : février 2016.
+Dernière mise à jour : novembre 2016.
 
 La disponibilité de tuteurs diffère selon les projets et les années.
 Contactez-nous sur la liste des développeurs -- voir @ref{Contact} -- et
@@ -1012,34 +1010,6 @@ s'acquérir aisément.
 @divEnd
 
 
-@divClass{column-center-middle-color3}
-@subheading ScholarLY
-
-ScholarLY est une bibliothèque hébergée sur
-@uref{https://openlilylib.org, openLilyLib} et qui fournit des
-fonctionnalités permettant, grâce à des annotations, de gérer
-directement dans le contexte de la partition le flux de travail d'une
-« édition savante ».  Il est à ce jour possible de saisir différents
-types d'annotations, produire des messages cliquables en console et
-exporter du texte dans des fichiers @LaTeX{}.
-
-Un certain nombre de demandes d'extension permettraient de transformer
-cette bibliothèque en un outil encore plus puissant et complet, par
-exemple par l'insertion d'exemples musicaux, la production de notes de
-bas de page ou l'application de styles particuliers -- mise en pointillé
-d'une liaison, mise entre parenthèses d'un altération, etc. -- ou la
-création de rapports avec des liens inter-documents.  Pour une
-description complète des suggestions autour de ce projet, visitez
-@uref{https://github.com/openlilylib/scholarly/wiki/GSoC, ce Wiki}.
-
-@strong{Difficulté :} moyenne
-@strong{Préalables :} Scheme, peut-être @LaTeX{}, (Python optionnel)
-@strong{Connaissances appréciées :} Expérience ou intérêt dans l'édition
-critique et les flux collaboratifs.
-@strong{Mentor :} Urs Liska
-@divEnd
-
-
 @divClass{column-center-middle-color3}
 @subheading Ajout de variantes pour certains glyphes
 @c VO Adding variants of font glyphs
@@ -1104,41 +1074,6 @@ le temps de calcul nécessaire à la génération des ligatures.
 @divEnd
 
 
-@divClass{column-center-middle-color3}
-@subheading Permettre aux bandeaux ou extensions de naviguer entre les voix
-@c VO Allow spanners to cross voices
-
-Jusqu'à présent, les différents bandeaux ou extenseurs, qu'il s'agisse de
-liaison de tenue ou non, de nuances, de prolongateurs de texte, de
-trilles, etc. doivent se terminer dans le contexte même où ils ont été
-entamés.  Ceci néanmoins ne reflète pas la réalité de la notation dans
-la plupart des situations polyphoniques.  La seule échappatoire, pour
-l'instant, consiste à recourir à des voix masquées.
-
-De nouveaux moyens de faire face à cette situation pourraient être
-envisagés, comme
-
-@divClass{keep-bullets}
-@itemize
-
-@item la spécification du « contexte cible » où la terminaison de
-l'extension est attendue,
-
-@item l'affectation d'un ID à l'objet où intervient la terminaison.
-
-@end itemize
-@divEnd
-
-Cette fonctionnalité permettrait de résoudre nombre de problèmes
-courants en matière de partition pianistique ou lors de combinaisons de
-parties.
-
-@strong{Difficulté :} moyenne (?)
-@strong{Préalables :} C++, Scheme
-@strong{Mentor potentiel :} Urs Liska
-@divEnd
-
-
 @divClass{column-center-middle-color3}
 @subheading Aide à l'amélioration du comportement lors de la compilation
 @c VO Help improve compilation behavior
index e6a915b358848a54026dbbf05de0416a6eb4e1ca..3bb0d36a8e03fba68cdc55d5abdd1605d92f6dc7 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
 @ignore
-    Translation of GIT committish: 136e94ea422fc94ef2587c588d516a03e01275e1
+    Translation of GIT committish: 6b8cabe379e8b4b945797a4e55759c56117223d4
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -598,11 +598,10 @@ Un buon modo per sapere quali sono gli sviluppatori più attivi e preparati
 
 Sviluppatori interessati:
 @table @asis
-@item @email{dak@@gnu.org, David Kastrup}
-Le donazioni mi permettono di continuare il mio lavoro a tempo
-pieno su LilyPond.  Mi occupo in particolare di progettazione, coerenza,
-implementazione, semplificazione, documentazione e debug dell'interfaccia
-utente e programmatore.
+@item @email{lilypond-devel@@gnu.org, mailing list degli sviluppatori di LilyPond}
+In questo momento nessuno programmatore si è proposto per fornire miglioramenti
+di LilyPond a pagamento, ma è comunque possibile provare a chiedere nella
+mailing list degli sviluppatori.
 
 @c Format
 @c @item @email{name@@adress.domain, Name}
@@ -891,8 +890,8 @@ vantaggio.  Attrae nuovi collaboratori e stimola gli studenti che già
 partecipano allo sviluppo di LilyPond ad impegnarsi di più in esso.  LilyPond
 partecipa a GSoC sotto l'egida del @uref{http://www.gnu.org/, progetto GNU}.
 
-Abbiamo avuto partecipanti al GSoC nel 2012 e nel 2015 e invitiamo gli studenti
-a fare domanda per le prossime estati.
+Abbiamo avuto partecipanti al GSoC nel 2012, 2015 e 2016 e invitiamo gli
+studenti a fare domanda per le prossime estati.
 
 Se hai dubbi o desideri presentare domanda, invia un'email alla nostra
 mailing list degli sviluppatori (vedi @ref{Contact}).
@@ -903,7 +902,7 @@ mailing list degli sviluppatori (vedi @ref{Contact}).
 @subheading Elenco di idee di progetti
 
 Ecco un elenco di progetti suggeriti per il GSoC o per chiunque sia interessato
-a aiutare a migliorare LilyPond. (Ultimo aggiornamento: Febbraio 2016)
+a aiutare a migliorare LilyPond. (Ultimo aggiornamento: Novembre 2016)
 
 La disponibilità di mentori varia da progetto a progetto e di anno in anno.
 Invia un'email alla nostra mailing list degli sviluppatori (vedi @ref{Contact})
@@ -940,34 +939,6 @@ facilmente imparato
 
 @divEnd
 
-@divClass{column-center-middle-color3}
-@subheading ScholarLY
-
-ScholarLY è una libreria di
-@uref{https://openlilylib.org, openLilyLib} che fornisce delle funzionalità
-per aggiungere annotazioni alle partiture, rendendo possibile la gestione
-dei flussi di lavoro accademici nel contesto del documento della partitura.
-Finora è possibile inserire delle annotazioni di diverso tipo, produrre
-messaggi cliccabili nell'output della console e esportare su file di testo
-o LaTeX.
-
-Ci sono numerose richieste di nuove funzionalità per trasformare questa
-libreria in uno strumento ancora più potente e completo.  Alcuni esempi:
-inserimento di esempi musicali, creazione di note a piè di pagina, applicazione
-automatica di stili all'elemento annotato (per esempio, usare il trattino per
-la legatura di portamento, mettere un'alterazione tra parentesi), creazione
-di resoconti con voci punta-e-clicca.  Una descrizione completa di questo
-progetto si trova in
-@uref{https://github.com/openlilylib/scholarly/wiki/GSoC, questa pagina Wiki}.
-
-@strong{Difficoltà:} media
-@strong{Requisiti:} Scheme, possibilmente LaTeX, (opzionalmente Python)
-@strong{Consigliato:} Esperienza o interesse nelle edizioni accademiche e
-nei progetti collaborativi.
-@strong{Mentore:} Urs Liska
-
-@divEnd
-
 @divClass{column-center-middle-color3}
 @subheading Aggiungere varianti dei glifi dei tipi di carattere
 
@@ -1030,40 +1001,6 @@ disposizione delle travature.
 @divEnd
 
 
-@divClass{column-center-middle-color3}
-@subheading Permettere agli estensori di attraversare le voci
-
-Attualmente gli estensori di ogni tipo (legature di valore e di portamento,
-dinamiche, estensori del testo, trilli, etc.) devono essere terminati nel
-contesto in cui sono iniziati.  Tuttavia, questo limite non riflette la
-realtà della notazione nella maggior parte delle impostazioni polifoniche.
-Attualmente sono necessari degli scomodi espedienti che fanno uso di voci
-nascoste per ottenere degli estensori che attraversino le voci.
-
-Dovrebbero essere esplorati nuovi modi di affrontare questo problema, per
-esempio
-
-@divClass{keep-bullets}
-@itemize
-
-@item specificando un @qq{contesto obiettivo} dove è prevista la terminazione
-dell'estensore
-
-@item specificando esplicitamente l'oggetto su cui terminare l'estensore
-tramite un ID
-
-@end itemize
-@divEnd
-
-Questa funzionalità risolverebbe molti problemi che si riscontrano comunemente
-nella musica per pianoforte e nelle parti combinate.
-
-@strong{Difficoltà:} media (?)
-@strong{Requisiti:} C++, Scheme
-@strong{Mentore potenziale:} Urs Liska
-@divEnd
-
-
 @divClass{column-center-middle-color3}
 @subheading Migliorare il comportamento durante la compilazione
 
index c41665a518a053f2412f9393cf3b9f6e667327e7..abae0fc58f7e3424889962f181db5468ffd8b800 100644 (file)
@@ -2,7 +2,7 @@
 @c This file is used in the web.texi file.
 
 @ignore
-    Translation of GIT committish: 36e230cf09bf2755528d2252ee256f88f330e66d
+    Translation of GIT committish: 2c6f3ccb58859c257744730e8cf91c62a2005632
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -19,7 +19,7 @@
 @ifclear web_version
   @c no anchor links, just link to News page
 
-@ref{News, Rilasciato LilyPond 2.19.48 - @emph{13 Settembre 2016}}
+@ref{News, Rilasciato LilyPond 2.19.52 - @emph{4 Dicembre 2016}}
 
 @ref{News, Due progetti LilyPond nel Google Summer of Code 2016 - @emph{23 Aprile 2016}}
 
 @ifset web_version
   @c anchor links, link to individual news items by their <a> tag
 
-@uref{news.it.html#LilyPond-2_002e19_002e48-released-September-13_002c-2016,
-  Rilasciato LilyPond 2.19.48 - @emph{13 Settembre 2016}}
+@uref{news.html#LilyPond-2_002e19_002e51-released-December-4_002c-2016,
+  Rilasciato LilyPond 2.19.52 - @emph{4 Dicembre 2016}}
 
-@uref{news.it.html#Two-LilyPond-projects-in-Google-Summer-of-Code-2016-April-23_002c-2016,
-  Two LilyPond projects in Google Summer of Code 2016 - @emph{23 Aprile 2016}}
+@uref{news.html#Two-LilyPond-projects-in-Google-Summer-of-Code-2016-April-23_002c-2016,
+  Due progetti LilyPond nel Google Summer of Code 2016 - @emph{23 Aprile 2016}}
 
-@uref{news.it.html#LilyPond-2_002e18_002e2-released_0021-March-23_002c-2014,
+@uref{news.html#LilyPond-2_002e18_002e2-released_0021-March-23_002c-2014,
   Rilasciato LilyPond 2.18.2 - @emph{23 Marzo 2014}}
 
-@uref{news.it.html#LilyPond-2_002e18_002e0-released_0021-December-29_002c-2013,
+@uref{news.html#LilyPond-2_002e18_002e0-released_0021-December-29_002c-2013,
   Rilasciato LilyPond 2.18.0 - @emph{29 Dicembre 2013}}
 
 @end ifset
index a1144346644864b8298f30a4fe6e9df2423c9078..d097535643b0bb9a4f6e6841755b11c07b65fa5c 100644 (file)
@@ -1078,9 +1078,9 @@ oboeNotes = \relative {
 }
 @end lilypond
 
-If an @code{\unfoldRepeat} command in a music expression is required to
+If an @code{\unfoldRepeats} command in a music expression is required to
 be printed when using @code{\quoteDuring}, then it too must also contain
-its own @code{\unfoldRepeat} command;
+its own @code{\unfoldRepeats} command;
 
 @lilypond[verbatim,quote]
 fluteNotes = \relative {
index 9198ef8495f57fb1e5a0c0e53da085690f9179bd..03a8ecaab4b55195e599dee6a555e1a57767a41a 100644 (file)
@@ -597,10 +597,9 @@ active and experienced developers are.  Statistics up to version
 
 Interested developers:
 @table @asis
-@item @email{dak@@gnu.org, David Kastrup}
-Donations are required to let me continue my current fulltime work on
-LilyPond.  I focus on user and programmer interface design, coherence,
-implementation, simplification, documentation, and debugging.
+@item @email{lilypond-devel@@gnu.org, LilyPond developer list}
+Since no developer currently is listed for commercial development,
+your best bet is asking on the developer list.
 
 @c Format
 @c @item @email{name@@adress.domain, Name}
index daa179dc339eb655a291d065741175fcd7240ca0..98676759f282af51ca91845164640edc4ce33984 100644 (file)
@@ -9,10 +9,10 @@
 @c used for news about the upcoming release; see CG on Release Work
 
 @newsItem
-@subheading LilyPond 2.19.52 released  @emph{December 4, 2016}
+@subheading LilyPond 2.19.53 released  @emph{December 17, 2016}
 
 We are happy to announce the release of LilyPond
-2.19.52.  This release includes a number of enhancements, and contains some
+2.19.53.  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 22149e72078ba22160c9be578bd76f982c8ef6ad..688b933ebfc9b99488a7f410fcfc5a7bafb01dcb 100644 (file)
@@ -11,7 +11,7 @@
 @ifclear web_version
   @c no anchor links, just link to News page
 
-@ref{News, LilyPond 2.19.52 released - @emph{December 4, 2016}}
+@ref{News, LilyPond 2.19.53 released - @emph{December 17, 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_002e51-released-December-4_002c-2016,
-  LilyPond 2.19.52 released - @emph{December 40, 2016}}
+@uref{news.html#LilyPond-2_002e19_002e53-released-December-17_002c-2016,
+  LilyPond 2.19.53 released - @emph{December 17, 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 81b61be2b5f762541e4b95773b69315fb251f819..b8b5961b1d7fff92e7bf2013f758f75b3f4af8e1 100644 (file)
@@ -26,6 +26,18 @@ NOTE:
   * don't duplicate entries from news-front.itexi
 @end ignore
 
+@newsItem
+@subheading LilyPond 2.19.52 released  @emph{December 4, 2016}
+
+We are happy to announce the release of LilyPond
+2.19.52.  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.51 released  @emph{November 20, 2016}
 
index 8cfbabb20ea026e58a4b266b3a5a63029f379b67..fba3cfd23c062203f4aee6f3a0a7108504e08157 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -1,6 +1,12 @@
 New features in 2.20 since 2.18
 *******************************
 
+   • The music function ‘\\unfoldRepeats’ can now take an optional
+     argument-list specifying which type(s) of repeated music should be
+     unfolded.  Possible entries are ‘percent’, ‘tremolo’, ‘volta’.  If
+     the optional argument-list is unspecified, ‘repeated-music’ will be
+     used, unfolding all.
+
    • A new ‘output-attributes’ grob property is now used for svg output
      instead of the ‘id’ grob property.  It allows multiple attributes
      to be defined as an association list.  For example, ‘#'((id . 123)
diff --git a/VERSION b/VERSION
index f30c36be30e877dd95a0d405e0a049d5bd590679..2a9106cf14027018b3f61b37e3d5b75bf02d7b6b 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=19
-PATCH_LEVEL=52
+PATCH_LEVEL=53
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.18.2
-VERSION_DEVEL=2.19.52
+VERSION_DEVEL=2.19.53
diff --git a/input/regression/repeat-unfold-partial.ly b/input/regression/repeat-unfold-partial.ly
new file mode 100644 (file)
index 0000000..e32702c
--- /dev/null
@@ -0,0 +1,39 @@
+\version "2.19.52"
+
+\header {
+  texidoc = "The music function @code{\\unfoldRepeats} can take an
+optional argument-list specifying which type(s) of repeated music has
+to be unfolded."
+}
+
+m =
+  \repeat volta 2 {
+      \repeat percent 2 { c'1 }
+      \repeat tremolo 4 { c'16 d' }
+      f'2
+  }
+  \alternative {
+      { d'1 }
+      { e'1 }
+  }
+
+\markup "not expanding"
+\m
+
+\markup "expanding all"
+\unfoldRepeats \m
+
+\markup "expanding percent-repeated-music"
+\unfoldRepeats percent \m
+
+\markup "expanding tremolo-repeated-music"
+\unfoldRepeats tremolo \m
+
+\markup "expanding volta-repeated-music"
+\unfoldRepeats volta \m
+
+\markup \column {
+  "combinations are possible:"
+  "expanding percent-repeated-music and tremolo-repeated-music"
+}
+\unfoldRepeats percent,tremolo \m
index f18b73e77fdb15071ba7f92b3ba9319547af282f..726450146798509817ed96246ff76c959ee75aca 100644 (file)
@@ -23,7 +23,7 @@ That's it.  For more information, visit http://lilypond.org .
 
 %}
 
-\version "2.19.52"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.53"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index cfca7fe331f6815c60504c022ba30f958651d62d..40f2a9fbd961a362e1c13ba42cd23ade5c642c24 100644 (file)
@@ -32,7 +32,7 @@ Good luck with LilyPond!  Happy engraving.
 
 %}
 
-\version "2.19.52"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.53"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index 0f198ffbedcbdb3b6e1c7c51240f5cc718f7f787..1dc0e5566b1868a8153501e4be362487e40641fe 100644 (file)
 %    how to do lookahead in scheme.
 %  * Also ignore explicit line breaks.
 %  * Add Mordents (reported by Patrick Karl)
-%
+%  * Thomas Morley: extend unfold-repeats to reflect the possibility to
+%    customize its effect to user-settable repeat-types. Here the most general
+%    setting is hard-coded, resulting in unchanged behaviour.
 
 \version "2.19.22"
 
         (make-music 'BarCheck))))
      (else
       m)))
-   (unfold-repeats music)))
+   (unfold-repeats '() music)))
 
 % If there's an articulation, use it.
 % If in a slur, use (1 . 1) instead (unless the note is marked staccato,
index d96e655370612f6e107ac3259df3a4c066071fd1..1f94319bce743ca1e6994eebdff7daa672db0e12 100644 (file)
@@ -1976,11 +1976,16 @@ unsets already in @var{music} cause a warning.  Non-property-related music is ig
         (else (make-sequential-music lst))))))
 
 unfoldRepeats =
-#(define-music-function (music) (ly:music?)
-   (_i "Force any @code{\\repeat volta}, @code{\\repeat tremolo} or
+#(define-music-function (types music)
+   ((symbol-list-or-symbol? '()) ly:music?)
+   (_i "Force @code{\\repeat volta}, @code{\\repeat tremolo} or
 @code{\\repeat percent} commands in @var{music} to be interpreted
-as @code{\\repeat unfold}.")
-   (unfold-repeats music))
+as @code{\\repeat unfold}, if specified in the optional symbol-list @var{types}.
+The default for @var{types} is an empty list, which will force any of those
+commands in @var{music} to be interpreted as @code{\\repeat unfold}.  Possible
+entries are @code{volta}, @code{tremolo} or @code{percent}.  Multiple entries
+are possible.")
+   (unfold-repeats types music))
 
 void =
 #(define-void-function (arg) (scheme?)
index c836d2687d6cc26fbe44d4b4d0f07f81c9d64a75..c5332ba82f024e5a5ded3213a700e3ffe2961b2e 100644 (file)
@@ -1 +1 @@
-See http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=log;h=refs/tags/release/2.19.52-1
+See http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=log;h=refs/tags/release/2.19.53-1
index 120b3abc58953cf41f15e0ec0dfaae8d094baa41..a2f85f58c2210ff7e811e181a15c2bb7499c8a25 100644 (file)
@@ -1,32 +1,16 @@
-commit 1f42b413de732a86da5ecda7f809e24c74dbdb4a
+commit ad399901bf44ddb175fe15f85566b237ad0aa3a5
 Author: Phil Holmes <mail@philholmes.net>
-Date:   Sat Dec 3 12:30:56 2016 +0000
+Date:   Sat Dec 17 17:13:03 2016 +0000
 
-    Release: bump Welcome versions.
+    Add version to regtest to allow GUB to build
 
-diff --git a/ly/Welcome-to-LilyPond-MacOS.ly b/ly/Welcome-to-LilyPond-MacOS.ly
-index ea56eb9..f18b73e 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.51"  % necessary for upgrading to future LilyPond versions.
-+\version "2.19.52"  % 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 8bdd018..cfca7fe 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.51"  % necessary for upgrading to future LilyPond versions.
-+\version "2.19.52"  % necessary for upgrading to future LilyPond versions.
- \header{
-   title = "A scale in LilyPond"
+diff --git a/input/regression/repeat-unfold-partial.ly b/input/regression/repeat-unfold-partial.ly
+index 8023932..e32702c 100644
+--- a/input/regression/repeat-unfold-partial.ly
++++ b/input/regression/repeat-unfold-partial.ly
+@@ -1,3 +1,5 @@
++\version "2.19.52"
++
+ \header {
+   texidoc = "The music function @code{\\unfoldRepeats} can take an
+ optional argument-list specifying which type(s) of repeated music has
index 70330c6b40da6f1918a952c62f5f35759c17eddf..b67b6d57147b99ae7040ae154ea70944c68f80f6 100644 (file)
@@ -6,10 +6,10 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.19.52\n"
+"Project-Id-Version: lilypond 2.19.53\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu."
 "lilypond.bugs\n"
-"POT-Creation-Date: 2016-12-03 12:27+0000\n"
+"POT-Creation-Date: 2016-12-17 13:40+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"
@@ -938,12 +938,12 @@ msgid ""
 msgstr ""
 
 #: abc2ly.py:1398 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
-#: midi2ly.py:1103 musicxml2ly.py:2766 main.cc:184
+#: midi2ly.py:1103 musicxml2ly.py:2774 main.cc:184
 msgid "show version number and exit"
 msgstr ""
 
 #: abc2ly.py:1401 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
-#: midi2ly.py:1070 musicxml2ly.py:2747 main.cc:163
+#: midi2ly.py:1070 musicxml2ly.py:2755 main.cc:163
 msgid "show this help and exit"
 msgstr ""
 
@@ -968,7 +968,7 @@ msgstr ""
 #. or if there is a LilyPond users list or forum in your language
 #. "Report bugs in English via %s or in YOUR_LANG via URI"
 #: abc2ly.py:1416 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
-#: midi2ly.py:1115 musicxml2ly.py:2909 main.cc:318
+#: midi2ly.py:1115 musicxml2ly.py:2917 main.cc:318
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr ""
@@ -1012,14 +1012,14 @@ msgstr ""
 msgid "edit in place"
 msgstr ""
 
-#: convert-ly.py:109 lilypond-book.py:179 musicxml2ly.py:2803
+#: convert-ly.py:109 lilypond-book.py:179 musicxml2ly.py:2811
 msgid ""
 "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS "
 "(default), DEBUG)"
 msgstr ""
 
 #: convert-ly.py:111 lilypond-book.py:163 lilypond-book.py:181
-#: musicxml2ly.py:2805 main.cc:177
+#: musicxml2ly.py:2813 main.cc:177
 msgid "LOGLEVEL"
 msgstr ""
 
@@ -1109,7 +1109,7 @@ msgid ""
 "file.\n"
 msgstr ""
 
-#: etf2ly.py:1210 midi2ly.py:1075 midi2ly.py:1080 musicxml2ly.py:2859
+#: etf2ly.py:1210 midi2ly.py:1075 midi2ly.py:1080 musicxml2ly.py:2867
 #: main.cc:169 main.cc:181
 msgid "FILE"
 msgstr ""
@@ -1216,7 +1216,7 @@ msgstr ""
 msgid "write snippet output files with the same base name as their source file"
 msgstr ""
 
-#: lilypond-book.py:223 midi2ly.py:1098 musicxml2ly.py:2772
+#: lilypond-book.py:223 midi2ly.py:1098 musicxml2ly.py:2780
 msgid "be verbose"
 msgstr ""
 
@@ -1460,52 +1460,52 @@ msgstr ""
 msgid "Negative skip %s (from position %s to %s)"
 msgstr ""
 
-#: musicxml2ly.py:2237
+#: musicxml2ly.py:2245
 #, python-format
 msgid "Negative skip found: from %s to %s, difference is %s"
 msgstr ""
 
-#: musicxml2ly.py:2338
+#: musicxml2ly.py:2346
 #, python-format
 msgid "unexpected %s; expected %s or %s or %s"
 msgstr ""
 
-#: musicxml2ly.py:2467
+#: musicxml2ly.py:2475
 msgid "Encountered closing slur, but no slur is open"
 msgstr ""
 
-#: musicxml2ly.py:2470
+#: musicxml2ly.py:2478
 msgid "Cannot have two simultaneous (closing) slurs"
 msgstr ""
 
-#: musicxml2ly.py:2479
+#: musicxml2ly.py:2487
 msgid "Cannot have a slur inside another slur"
 msgstr ""
 
-#: musicxml2ly.py:2482
+#: musicxml2ly.py:2490
 msgid "Cannot have two simultaneous slurs"
 msgstr ""
 
-#: musicxml2ly.py:2608
+#: musicxml2ly.py:2616
 #, python-format
 msgid "cannot simultaneously have more than one mode: %s"
 msgstr ""
 
-#: musicxml2ly.py:2727
+#: musicxml2ly.py:2735
 msgid "Converting to LilyPond expressions..."
 msgstr ""
 
-#: musicxml2ly.py:2739
+#: musicxml2ly.py:2747
 msgid "musicxml2ly [OPTION]... FILE.xml"
 msgstr ""
 
-#: musicxml2ly.py:2741
+#: musicxml2ly.py:2749
 msgid ""
 "Convert MusicXML from FILE.xml to LilyPond input.\n"
 "If the given filename is -, musicxml2ly reads from the command line.\n"
 msgstr ""
 
-#: musicxml2ly.py:2751
+#: musicxml2ly.py:2759
 #, python-format
 msgid ""
 "Copyright (c) 2005--2016 by\n"
@@ -1520,150 +1520,150 @@ msgid ""
 "information."
 msgstr ""
 
-#: musicxml2ly.py:2778
+#: musicxml2ly.py:2786
 msgid "use lxml.etree; uses less memory and cpu time"
 msgstr ""
 
-#: musicxml2ly.py:2784
+#: musicxml2ly.py:2792
 msgid "input file is a zip-compressed MusicXML file"
 msgstr ""
 
-#: musicxml2ly.py:2790
+#: musicxml2ly.py:2798
 msgid "convert pitches in relative mode (default)"
 msgstr ""
 
-#: musicxml2ly.py:2795
+#: musicxml2ly.py:2803
 msgid "convert pitches in absolute mode"
 msgstr ""
 
-#: musicxml2ly.py:2798
+#: musicxml2ly.py:2806
 msgid "LANG"
 msgstr ""
 
-#: musicxml2ly.py:2800
+#: musicxml2ly.py:2808
 msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
 msgstr ""
 
-#: musicxml2ly.py:2814
+#: musicxml2ly.py:2822
 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
 msgstr ""
 
-#: musicxml2ly.py:2820
+#: musicxml2ly.py:2828
 msgid "do not convert exact vertical positions of rests"
 msgstr ""
 
-#: musicxml2ly.py:2826
+#: musicxml2ly.py:2834
 msgid "ignore system breaks"
 msgstr ""
 
-#: musicxml2ly.py:2832
+#: musicxml2ly.py:2840
 msgid "ignore page breaks"
 msgstr ""
 
-#: musicxml2ly.py:2838
+#: musicxml2ly.py:2846
 msgid "ignore page margins"
 msgstr ""
 
-#: musicxml2ly.py:2844
+#: musicxml2ly.py:2852
 msgid ""
 "do not convert the exact page layout and breaks (shortcut for \"--nsb --npb "
 "--npm\" options)"
 msgstr ""
 
-#: musicxml2ly.py:2850
+#: musicxml2ly.py:2858
 msgid ""
 "ignore stem directions from MusicXML, use lilypond's automatic stemming "
 "instead"
 msgstr ""
 
-#: musicxml2ly.py:2856
+#: musicxml2ly.py:2864
 msgid ""
 "do not convert beaming information, use lilypond's automatic beaming instead"
 msgstr ""
 
-#: musicxml2ly.py:2864
+#: musicxml2ly.py:2872
 msgid "set output filename to FILE, stdout if -"
 msgstr ""
 
-#: musicxml2ly.py:2870
+#: musicxml2ly.py:2878
 msgid "activate midi-block in .ly file"
 msgstr ""
 
-#: musicxml2ly.py:2874
+#: musicxml2ly.py:2882
 msgid "TOPITCH"
 msgstr ""
 
-#: musicxml2ly.py:2877
+#: musicxml2ly.py:2885
 msgid "set pitch to transpose by the interval between pitch 'c' and TOPITCH"
 msgstr ""
 
-#: musicxml2ly.py:2881
+#: musicxml2ly.py:2889
 msgid "BEATS/BEATTYPE"
 msgstr ""
 
-#: musicxml2ly.py:2884
+#: musicxml2ly.py:2892
 msgid ""
 "change the length|duration of notes as a function of a given time signature "
 "to make the score look faster or slower, (eg. '4/4' or '2/2')"
 msgstr ""
 
-#: musicxml2ly.py:2888
+#: musicxml2ly.py:2896
 msgid "TABCLEFNAME"
 msgstr ""
 
-#: musicxml2ly.py:2891
+#: musicxml2ly.py:2899
 msgid "switch between two versions of tab clefs (\"tab\" and \"moderntab\")"
 msgstr ""
 
-#: musicxml2ly.py:2895
+#: musicxml2ly.py:2903
 msgid "t[rue]/f[alse]"
 msgstr ""
 
-#: musicxml2ly.py:2898
+#: musicxml2ly.py:2906
 msgid ""
 "deactivate string number stencil with --string-numbers f[alse]. Default is "
 "t[rue]"
 msgstr ""
 
-#: musicxml2ly.py:2905
+#: musicxml2ly.py:2913
 msgid ""
 "converts '<frame>' events to a separate FretBoards voice instead of markups"
 msgstr ""
 
-#: musicxml2ly.py:2979
+#: musicxml2ly.py:2987
 #, python-format
 msgid "unknown part in part-list: %s"
 msgstr ""
 
-#: musicxml2ly.py:3069
+#: musicxml2ly.py:3077
 msgid "Input is compressed, extracting raw MusicXML data from stdin"
 msgstr ""
 
-#: musicxml2ly.py:3082
+#: musicxml2ly.py:3090
 #, python-format
 msgid "Input file %s is compressed, extracting raw MusicXML data"
 msgstr ""
 
-#: musicxml2ly.py:3112
+#: musicxml2ly.py:3120
 msgid "Reading MusicXML from Standard input ..."
 msgstr ""
 
-#: musicxml2ly.py:3114
+#: musicxml2ly.py:3122
 #, python-format
 msgid "Reading MusicXML from %s ..."
 msgstr ""
 
-#: musicxml2ly.py:3146
+#: musicxml2ly.py:3154
 #, python-format
 msgid "Output to `%s'"
 msgstr ""
 
-#: musicxml2ly.py:3172
+#: musicxml2ly.py:3180
 #, python-format
 msgid "Converting to current version (%s) notations ..."
 msgstr ""
 
-#: musicxml2ly.py:3246
+#: musicxml2ly.py:3254
 #, python-format
 msgid "Unable to find input file %s"
 msgstr ""
@@ -3966,63 +3966,63 @@ msgstr ""
 msgid "More alternatives than repeats.  Junking excess alternatives"
 msgstr ""
 
-#: music-functions.scm:489
+#: music-functions.scm:506
 #, scheme-format
 msgid "bad grob property path ~a"
 msgstr ""
 
-#: music-functions.scm:513
+#: music-functions.scm:530
 #, scheme-format
 msgid "bad context property ~a"
 msgstr ""
 
-#: music-functions.scm:536
+#: music-functions.scm:553
 #, scheme-format
 msgid "bad music property ~a"
 msgstr ""
 
-#: music-functions.scm:844
+#: music-functions.scm:861
 msgid "Bad chord repetition"
 msgstr ""
 
-#: music-functions.scm:949
+#: music-functions.scm:966
 #, scheme-format
 msgid "music expected: ~S"
 msgstr ""
 
-#: music-functions.scm:1299
+#: music-functions.scm:1316
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr ""
 
-#: music-functions.scm:1436
+#: music-functions.scm:1453
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr ""
 
-#: music-functions.scm:1499
+#: music-functions.scm:1516
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr ""
 
-#: music-functions.scm:1500
+#: music-functions.scm:1517
 msgid "Defaulting to 'any-octave."
 msgstr ""
 
-#: music-functions.scm:1874
+#: music-functions.scm:1891
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr ""
 
-#: music-functions.scm:2099
+#: music-functions.scm:2116
 msgid "Missing duration"
 msgstr ""
 
-#: music-functions.scm:2620
+#: music-functions.scm:2637
 #, scheme-format
 msgid "not a symbol list: ~a"
 msgstr ""
 
-#: music-functions.scm:2623
+#: music-functions.scm:2640
 #, scheme-format
 msgid "conflicting tag group ~a"
 msgstr ""
index 3e9818d0093b48c1d0072dbfe3d7fa2d97efcf18..b1dc2f9c61391f32931e66b039561220af3e493c 100644 (file)
@@ -390,19 +390,36 @@ beats to be distinguished."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; repeats.
 
-(define-public (unfold-repeats music)
-  "Replace all repeats with unfolded repeats."
-  (let ((es (ly:music-property music 'elements))
-        (e (ly:music-property music 'element)))
-    (if (music-is-of-type? music 'repeated-music)
-        (set! music (make-music 'UnfoldedRepeatedMusic music)))
-    (if (pair? es)
-        (set! (ly:music-property music 'elements)
-              (map unfold-repeats es)))
-    (if (ly:music? e)
-        (set! (ly:music-property music 'element)
-              (unfold-repeats e)))
-    music))
+(define-public (unfold-repeats types music)
+  "Replace repeats of the types given by @var{types} with unfolded repeats.
+If @var{types} is an empty list, @code{repeated-music} is taken, unfolding all."
+  (let* ((types-list
+           (if (or (null? types) (not (list? types)))
+               (list types)
+               types))
+         (repeat-types-alist
+           '((volta . volta-repeated-music)
+             (percent . percent-repeated-music)
+             (tremolo . tremolo-repeated-music)
+             (() . repeated-music)))
+         (repeat-types-hash (alist->hash-table repeat-types-alist)))
+  (for-each
+    (lambda (type)
+      (let ((repeat-type (hashq-ref repeat-types-hash type)))
+        (if repeat-type
+            (let ((es (ly:music-property music 'elements))
+                  (e (ly:music-property music 'element)))
+              (if (music-is-of-type? music repeat-type)
+                  (set! music (make-music 'UnfoldedRepeatedMusic music)))
+              (if (pair? es)
+                  (set! (ly:music-property music 'elements)
+                        (map (lambda (x) (unfold-repeats types x)) es)))
+              (if (ly:music? e)
+                  (set! (ly:music-property music 'element)
+                        (unfold-repeats types e))))
+            (ly:warning "unknown repeat-type ~a, ignoring." type))))
+    types-list)
+  music))
 
 (define-public (unfold-repeats-fully music)
   "Unfolds repeats and expands the resulting @code{unfolded-repeated-music}."
@@ -411,7 +428,7 @@ beats to be distinguished."
      (and (music-is-of-type? m 'unfolded-repeated-music)
           (make-sequential-music
            (ly:music-deep-copy (make-unfolded-set m)))))
-   (unfold-repeats music)))
+   (unfold-repeats '() music)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; property setting music objs.
old mode 100644 (file)
new mode 100755 (executable)
index 766214b..4d6b149
@@ -2127,6 +2127,9 @@ def extract_lyrics(voice, lyric_key, lyrics_dict):
     def is_rest(elem):
         return elem.get_typed_children(musicxml.Rest)
 
+    def is_chord(elem):
+        return elem.get_typed_children(musicxml.Chord)
+
     def is_note_and_not_rest(elem):
         return is_note(elem) and not is_rest(elem)
 
@@ -2153,6 +2156,11 @@ def extract_lyrics(voice, lyric_key, lyrics_dict):
              not note_has_lyric_belonging_to_lyric_part:
             result.append('\skip1 ')
         # Note does not have any lyric attached to it.
+        elif is_chord(elem):
+            # note without lyrics part of a chord. MusicXML format is
+            # unclear if a chord element could contain a lyric, lets
+            # asume that we do not want to put a skip here.
+            continue
         elif is_note_and_not_rest(elem):
             result.append('\skip1 ')