From 74daefdc62920b729061cb8711b63890de1f0c17 Mon Sep 17 00:00:00 2001 From: "Dr. Tobias Quathamer" Date: Mon, 26 Dec 2016 10:46:45 +0100 Subject: [PATCH] Imported Upstream version 2.19.53 --- .gitfilelist | 1 + Documentation/changes.tely | 8 ++ Documentation/contributor/website-work.itexi | 21 ++- Documentation/fr/notation/spacing.itely | 35 ++++- Documentation/fr/usage/running.itely | 12 +- Documentation/fr/web/community.itexi | 77 +---------- Documentation/it/web/community.itexi | 79 ++--------- Documentation/it/web/news-headlines.itexi | 16 +-- Documentation/notation/staff.itely | 4 +- Documentation/web/community.itexi | 7 +- Documentation/web/news-front.itexi | 4 +- Documentation/web/news-headlines.itexi | 6 +- Documentation/web/news.itexi | 12 ++ NEWS.txt | 6 + VERSION | 4 +- input/regression/repeat-unfold-partial.ly | 39 ++++++ ly/Welcome-to-LilyPond-MacOS.ly | 2 +- ly/Welcome_to_LilyPond.ly | 2 +- ly/articulate.ly | 6 +- ly/music-functions-init.ly | 13 +- out/ChangeLog | 2 +- out/RELEASE-COMMIT | 42 ++---- po/lilypond.pot | 132 +++++++++---------- scm/music-functions.scm | 45 +++++-- scripts/musicxml2ly.py | 8 ++ 25 files changed, 295 insertions(+), 288 deletions(-) create mode 100644 input/regression/repeat-unfold-partial.ly mode change 100644 => 100755 scripts/musicxml2ly.py diff --git a/.gitfilelist b/.gitfilelist index c3e71e9eae..a22eb21ebd 100644 --- a/.gitfilelist +++ b/.gitfilelist @@ -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 diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 2407b3d018..958ecb109e 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -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 diff --git a/Documentation/contributor/website-work.itexi b/Documentation/contributor/website-work.itexi index 588d705f1b..be4cd26f21 100644 --- a/Documentation/contributor/website-work.itexi +++ b/Documentation/contributor/website-work.itexi @@ -14,8 +14,25 @@ @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 diff --git a/Documentation/fr/notation/spacing.itely b/Documentation/fr/notation/spacing.itely index 8c0e61fd50..210be80f32 100644 --- a/Documentation/fr/notation/spacing.itely +++ b/Documentation/fr/notation/spacing.itely @@ -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. diff --git a/Documentation/fr/usage/running.itely b/Documentation/fr/usage/running.itely index 6d1d3365f3..e040ca627c 100644 --- a/Documentation/fr/usage/running.itely +++ b/Documentation/fr/usage/running.itely @@ -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 diff --git a/Documentation/fr/web/community.itexi b/Documentation/fr/web/community.itexi index c3871201ff..6030f8f882 100644 --- a/Documentation/fr/web/community.itexi +++ b/Documentation/fr/web/community.itexi @@ -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 diff --git a/Documentation/it/web/community.itexi b/Documentation/it/web/community.itexi index e6a915b358..3bb0d36a8e 100644 --- a/Documentation/it/web/community.itexi +++ b/Documentation/it/web/community.itexi @@ -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 diff --git a/Documentation/it/web/news-headlines.itexi b/Documentation/it/web/news-headlines.itexi index c41665a518..abae0fc58f 100644 --- a/Documentation/it/web/news-headlines.itexi +++ b/Documentation/it/web/news-headlines.itexi @@ -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}} @@ -31,16 +31,16 @@ @ifset web_version @c anchor links, link to individual news items by their 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 diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index a114434664..d097535643 100644 --- a/Documentation/notation/staff.itely +++ b/Documentation/notation/staff.itely @@ -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 { diff --git a/Documentation/web/community.itexi b/Documentation/web/community.itexi index 9198ef8495..03a8ecaab4 100644 --- a/Documentation/web/community.itexi +++ b/Documentation/web/community.itexi @@ -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} diff --git a/Documentation/web/news-front.itexi b/Documentation/web/news-front.itexi index daa179dc33..98676759f2 100644 --- a/Documentation/web/news-front.itexi +++ b/Documentation/web/news-front.itexi @@ -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 diff --git a/Documentation/web/news-headlines.itexi b/Documentation/web/news-headlines.itexi index 22149e7207..688b933ebf 100644 --- a/Documentation/web/news-headlines.itexi +++ b/Documentation/web/news-headlines.itexi @@ -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 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}} diff --git a/Documentation/web/news.itexi b/Documentation/web/news.itexi index 81b61be2b5..b8b5961b1d 100644 --- a/Documentation/web/news.itexi +++ b/Documentation/web/news.itexi @@ -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} diff --git a/NEWS.txt b/NEWS.txt index 8cfbabb20e..fba3cfd23c 100644 --- 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 f30c36be30..2a9106cf14 100644 --- 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 index 0000000000..e32702c2fb --- /dev/null +++ b/input/regression/repeat-unfold-partial.ly @@ -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 diff --git a/ly/Welcome-to-LilyPond-MacOS.ly b/ly/Welcome-to-LilyPond-MacOS.ly index f18b73e77f..7264501467 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.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" diff --git a/ly/Welcome_to_LilyPond.ly b/ly/Welcome_to_LilyPond.ly index cfca7fe331..40f2a9fbd9 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.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" diff --git a/ly/articulate.ly b/ly/articulate.ly index 0f198ffbed..1dc0e5566b 100644 --- a/ly/articulate.ly +++ b/ly/articulate.ly @@ -131,7 +131,9 @@ % 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" @@ -538,7 +540,7 @@ (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, diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index d96e655370..1f94319bce 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -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?) diff --git a/out/ChangeLog b/out/ChangeLog index c836d2687d..c5332ba82f 100644 --- a/out/ChangeLog +++ b/out/ChangeLog @@ -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 diff --git a/out/RELEASE-COMMIT b/out/RELEASE-COMMIT index 120b3abc58..a2f85f58c2 100644 --- a/out/RELEASE-COMMIT +++ b/out/RELEASE-COMMIT @@ -1,32 +1,16 @@ -commit 1f42b413de732a86da5ecda7f809e24c74dbdb4a +commit ad399901bf44ddb175fe15f85566b237ad0aa3a5 Author: Phil Holmes -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 diff --git a/po/lilypond.pot b/po/lilypond.pot index 70330c6b40..b67b6d5714 100644 --- a/po/lilypond.pot +++ b/po/lilypond.pot @@ -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 \n" "Language-Team: LANGUAGE \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 '' 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 "" diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 3e9818d009..b1dc2f9c61 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -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. diff --git a/scripts/musicxml2ly.py b/scripts/musicxml2ly.py old mode 100644 new mode 100755 index 766214bd76..4d6b149ef1 --- a/scripts/musicxml2ly.py +++ b/scripts/musicxml2ly.py @@ -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 ') -- 2.39.2