From: Dr. Tobias Quathamer Date: Fri, 9 Sep 2016 12:15:55 +0000 (+0200) Subject: Imported Upstream version 2.19.47 X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=commitdiff_plain;h=9391b173e05e0752aadd10fad93f01edad33516c;p=lilypond.git Imported Upstream version 2.19.47 --- diff --git a/.gitfilelist b/.gitfilelist index ea8f1441ba..633ca3ccc0 100644 --- a/.gitfilelist +++ b/.gitfilelist @@ -14,6 +14,9 @@ Documentation/ca/learning/templates.itely Documentation/ca/learning/tutorial.itely Documentation/ca/learning/tweaks.itely Documentation/ca/macros.itexi +Documentation/ca/notation.tely +Documentation/ca/notation/notation.itely +Documentation/ca/notation/pitches.itely Documentation/ca/search-box.ihtml Documentation/ca/translations.itexi Documentation/ca/usage.tely @@ -1425,6 +1428,7 @@ Documentation/misc/THANKS-2.6 Documentation/misc/THANKS-2.8 Documentation/misc/announce-v2.0.html Documentation/misc/announce-v2.10.html +Documentation/misc/announce-v2.12.ca.html Documentation/misc/announce-v2.12.de.html Documentation/misc/announce-v2.12.es.html Documentation/misc/announce-v2.12.fr.html @@ -1433,6 +1437,7 @@ Documentation/misc/announce-v2.2.html Documentation/misc/announce-v2.4.html Documentation/misc/announce-v2.6.html Documentation/misc/announce-v2.8.html +Documentation/misc/browser-language.ca.html Documentation/misc/browser-language.de.html Documentation/misc/browser-language.es.html Documentation/misc/browser-language.fr.html @@ -3050,12 +3055,23 @@ input/regression/midi-tuplets.ly input/regression/midi-unisons.ly input/regression/midi-volume-equaliser.ly input/regression/midi/GNUmakefile -input/regression/midi/crescendo-abutting.ly +input/regression/midi/crescendo-gap-compatible-target.ly +input/regression/midi/crescendo-return-crescendo.ly +input/regression/midi/crescendo-return-louder-target.ly +input/regression/midi/crescendo-return-softer-target.ly +input/regression/midi/crescendo-return-unspecified-target.ly +input/regression/midi/crescendo-single-compatible-target.ly +input/regression/midi/crescendo-single-unspecified-target.ly +input/regression/midi/decrescendo-multiple-compatible-target.ly +input/regression/midi/decrescendo-single-contrary-target.ly input/regression/midi/dynamic-initial.ly +input/regression/midi/dynamic-voices-sequential.ly +input/regression/midi/dynamic-voices-simultaneous.ly input/regression/midi/key-initial.ly input/regression/midi/key-option-all-staves.ly input/regression/midi/key-option.ly input/regression/midi/lyrics-addlyrics.ly +input/regression/midi/midi-overlapping-notes.ly input/regression/midi/partcombine.ly input/regression/midi/quantize-duration-2.ly input/regression/midi/quantize-duration.ly @@ -3512,6 +3528,7 @@ input/regression/rest-polyphonic-2.ly input/regression/rest-polyphonic.ly input/regression/rest-positioning.ly input/regression/rest.ly +input/regression/retrograde.ly input/regression/revert-once.ly input/regression/rhythmic-sequence.ly input/regression/rhythmic-staff.ly @@ -4112,6 +4129,7 @@ lily/include/main.hh lily/include/measure-grouping-spanner.hh lily/include/melody-spanner.hh lily/include/mensural-ligature.hh +lily/include/midi-cc-announcer.hh lily/include/midi-chunk.hh lily/include/midi-item.hh lily/include/midi-stream.hh @@ -4288,8 +4306,9 @@ lily/melody-spanner.cc lily/mensural-ligature-engraver.cc lily/mensural-ligature.cc lily/metronome-engraver.cc +lily/midi-cc-announcer.cc +lily/midi-cc-performer.cc lily/midi-chunk.cc -lily/midi-control-function-performer.cc lily/midi-item.cc lily/midi-stream.cc lily/midi-walker.cc diff --git a/AUTHORS.txt b/AUTHORS.txt index 55af69db64..94fe93689c 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,11 +1,6 @@ AUTHORS - who did what for GNU LilyPond *************************************** -Table of Contents -***************** - -AUTHORS - who did what for GNU LilyPond - This file lists authors of LilyPond, and what they wrote. This list is alphabetically ordered by surname. This file lists people that have @@ -14,75 +9,73 @@ contributed over 100 lines of code or the equivalent. Current Development Team ------------------------ - * Trevor Daniels: , Assistant documentation + • Trevor Daniels: , Assistant documentation editor - * Colin Hall: Bug meister + • Colin Hall: Bug meister - * Phil Holmes: `http://www.philholmes.net' + • Phil Holmes: Build unentangler, Bug squad member - * David Kastrup: , hard core developer, user and + • David Kastrup: , hard core developer, user and programming interfaces, bug squashing and swamp drainage. - * Werner Lemberg, , Fonts, bug squasher + • Werner Lemberg, , Fonts, bug squasher - * Han-Wen Nienhuys: , - `http://www.xs4all.nl/~hanwen/', Main author + • Han-Wen Nienhuys: , + , Main author - * Jan Nieuwenhuizen: , `http://JoyofSource.com', - `http://AvatarAcademy.nl', Main author + • Jan Nieuwenhuizen: , , + , Main author - * Mark Polesky: Documentation, Code cleanup + • Mark Polesky: Documentation, Code cleanup - * Carl Sorensen: , Core developer + • Carl Sorensen: , Core developer - * Francisco Vila: Translation Meister - - * Janek Warchoł: , Core developer + • Francisco Vila: Translation Meister + • Janek Warchoł: , Core developer Previous Development Team ------------------------- - * Mats Bengtsson: , - `https://www.kth.se/profile/matben/', Support guru + • Mats Bengtsson: , + , Support guru - * Bertrand Bordage: , Core developer, + • Bertrand Bordage: , Core developer, font designer - * Ian Hulin: Core developer + • Ian Hulin: Core developer - * Reinhold Kainhofer: , - `http://reinhold.kainhofer.com', Core developer, Music2xml wrangler + • Reinhold Kainhofer: , + , Core developer, Music2xml wrangler - * Pedro Kroeger: Build meister + • Pedro Kroeger: Build meister - * Jonathan Kulp: Assistant documentation editor + • Jonathan Kulp: Assistant documentation editor - * Joe Neeman: Core developer + • Joe Neeman: Core developer - * John Mandereau: , Translation meister + • John Mandereau: , Translation meister - * Patrick McCarty: SVG guru, bug squad member, bug squasher, text + • Patrick McCarty: SVG guru, bug squad member, bug squasher, text handling - * Graham Percival: `http://percival-music.ca', Bug meister, Grand + • Graham Percival: , Bug meister, Grand Documentation Project leader - * Neil Puttock: Core developer + • Neil Puttock: Core developer - * Jürgen Reuter: , `http://www.juergen-reuter.de', + • Jürgen Reuter: , , Ancient notation - * Mike Solomon: , Core developer, Frog meister - - * Erik Sandberg: Bug meister + • Mike Solomon: , Core developer, Frog meister - * Nicolas Sceaux: Core developer, Schemer extraordinaire + • Erik Sandberg: Bug meister - * Valentin Villenave: LSR editor and Bug squad member + • Nicolas Sceaux: Core developer, Schemer extraordinaire + • Valentin Villenave: LSR editor and Bug squad member Current Contributors -------------------- @@ -133,24 +126,23 @@ Programming ........... Erlend Aasland, Maximilian Albert, Aleksandr Andreev, Guido Amoruso, -Sven Axelsson, Kristof Bastiaensen, Pál Benkő, Frédéric Bron, -Juliusz Chroboczek, Peter Chubb, Angelo Contardi, Vicente Solsona Della, -Hajo Dezelski, Michael Welsh Duggan, David Feuer, Bertalan Fodor, -Richard Gay, Mathieu Giraud, Lisa Opus Goldstein, Torsten Hämmerle, -Yuval Harel, Andrew Hawryluk, Christian Hitz, Karin Hoethker, Rutger -Hofmann, Marc Hohl, Bernard Hurley, Yoshinobu Ishizaki, Chris Jackson, -Felix Janda, David Jedlinsky, Heikki Junes, Michael Käppler, Thomas -Klausner, Marek Klein, Michael Krause, Jean-Baptiste Lamy, Jonatan -Liljedahl, Peter Lutek, Andrew Main, Kieren MacMillan, Hendrik Maryns, -Thomas Morgan, David Nalesnik, Matthias Neeracher, Keith OHara, Justin -Ohmie, Tatsuya Ono, Benkő Pál, Benjamin Peterson, Guy -Gascoigne-Piggford, Anders Pilegaard, Henning Hraban Ramm, Nathan Reed, -Julien Rioux, Johannes Rohrer, Stan Sanderson, Andreas Scherer, -Johannes Schindelin, Patrick Schmidt, Boris Shingarov, Kim Shrier, -Edward Sanford Sutton, Adam Spiers, David Svoboda, Heikki Taurainen, -Piers Titus van der Torren, Owen Tuz, Sebastiano Vigna, Jan-Peter Voigt, -Arno Waschk, John Williams, Andrew Wilson, Milan Zamazal, Rune Zedeler, -Rodolfo Zitellini +Sven Axelsson, Kristof Bastiaensen, Pál Benkő, Frédéric Bron, Juliusz +Chroboczek, Peter Chubb, Angelo Contardi, Vicente Solsona Della, Hajo +Dezelski, Michael Welsh Duggan, David Feuer, Bertalan Fodor, Richard +Gay, Mathieu Giraud, Lisa Opus Goldstein, Torsten Hämmerle, Yuval Harel, +Andrew Hawryluk, Christian Hitz, Karin Hoethker, Rutger Hofmann, Marc +Hohl, Bernard Hurley, Yoshinobu Ishizaki, Chris Jackson, Felix Janda, +David Jedlinsky, Heikki Junes, Michael Käppler, Thomas Klausner, Marek +Klein, Michael Krause, Jean-Baptiste Lamy, Jonatan Liljedahl, Peter +Lutek, Andrew Main, Kieren MacMillan, Hendrik Maryns, Thomas Morgan, +David Nalesnik, Matthias Neeracher, Keith OHara, Justin Ohmie, Tatsuya +Ono, Benkő Pál, Benjamin Peterson, Guy Gascoigne-Piggford, Anders +Pilegaard, Henning Hraban Ramm, Nathan Reed, Julien Rioux, Johannes +Rohrer, Stan Sanderson, Andreas Scherer, Johannes Schindelin, Patrick +Schmidt, Boris Shingarov, Kim Shrier, Edward Sanford Sutton, Adam +Spiers, David Svoboda, Heikki Taurainen, Piers Titus van der Torren, +Owen Tuz, Sebastiano Vigna, Jan-Peter Voigt, Arno Waschk, John Williams, +Andrew Wilson, Milan Zamazal, Rune Zedeler, Rodolfo Zitellini Font .... @@ -186,6 +178,6 @@ Heikki Junes, Nicolas Klutchnikoff, Jean-Charles Malahieude, Adrian Mariano, Christian Mondrup, Tineke de Munnik, Steven Michael Murphy, Till Paala, François Pinard, Gauvain Pocentek, Till Rettig, Ludovic Sardain, Yoshiki Sawada, Thomas Scharkowski, Clytie Siddall, August S. -Sigov, Roland Stigge, Risto Vääräniemi, Andrea Valle, Ralf -Wildenhues, Olcay Yıldırım +Sigov, Roland Stigge, Risto Vääräniemi, Andrea Valle, Ralf Wildenhues, +Olcay Yıldırım diff --git a/Documentation/ca/learning.tely b/Documentation/ca/learning.tely index 4ee987f7ef..d787c4ce8f 100644 --- a/Documentation/ca/learning.tely +++ b/Documentation/ca/learning.tely @@ -33,7 +33,7 @@ Copyright @copyright{} 1999--2015 pels autors. @omfdescription Learning Manual of the LilyPond music engraving system @omftype program usage @omfcategory Applications|Publishing -@omflanguage Spanish +@omflanguage Catalan @end ignore @c Translators: Walter Garcia-Fontes diff --git a/Documentation/ca/learning/common-notation.itely b/Documentation/ca/learning/common-notation.itely index 286ceba6f2..877efd1ba8 100644 --- a/Documentation/ca/learning/common-notation.itely +++ b/Documentation/ca/learning/common-notation.itely @@ -102,8 +102,7 @@ g1 | e1 | c2. c'4 | g4 c g e | c4 r r2 | @seealso Referència de la notació: -@ruser{Bar and bar number checks}. - +@rusernamed{Bar and bar number checks, Comprovacions de compàs i de número de compàs}. @node Alteracions accidentals i armadures @subsection Alteracions accidentals i armadures @@ -153,7 +152,7 @@ bemol} es fa afegint @code{isis} o @code{eses}. Aquesta sintaxi deriva de les convencions de nomenclatura de les notes en les llengües nòrdiques i germàniques com l'alemany i l'holandès. Per utilitzar altres noms per a les @notation{alteracions -accidentals}, vegeu @ruser{Note names in other languages}. +accidentals}, vegeu @ruser{Noms de les notes en altres llengües}. @lilypond[verbatim,quote] \relative { cis''4 ees fisis, aeses } @@ -263,16 +262,16 @@ Posar totes les alteracions de forma explícita pot requerir una mica més de treball d'escriure, però l'avantatge és que la @notation{transposició} és més fàcil, i les alteracions es poden imprimir seguint diverses convencions diferents. Consulteu -@ruser{Automatic accidentals} per veure exemples de +@ruser{Alteracions accidentals automàtiques} per veure exemples de com es poden imprimir alteracions d'acord amb regles diferents. @seealso Referència de la notació: -@ruser{Note names in other languages}, -@rusernamed{Accidentals,Alteracions accidentals}, -@ruser{Automatic accidentals}, -@ruser{Key signature}. +@ruser{Noms de les notes en altres llengües}, +@ruser{Alteracions accidentals}, +@ruser{Alteracions accidentals automàtiques}, +@ruser{Armadura de la tonalitat}. @node Lligadures d'unió i d'expressió @subsection Lligadures d'unió i d'expressió @@ -478,8 +477,8 @@ la instrucció @code{\!}: @seealso Referència de la notació: -@ruser{Articulations and ornamentations}, -@ruser{Fingering instructions}, +@rusernamed{Articulations and ornamentations,Articulacions i ornamentacions}, +@rusernamed{Fingering instructions,Instruccions de digitació}, @rusernamed{Dynamics,Matisos dinàmics}. @node Addició de text @@ -511,7 +510,7 @@ a'2_\markup { @seealso Referència de la notació: -@ruser{Writing text}. +@rusernamed{Writing text,Escriptura de text}. @node Barres automàtiques i manuals @@ -566,8 +565,8 @@ cop. @seealso Referència de la notació: -@ruser{Automatic beams}, -@ruser{Manual beams}. +@rusernamed{Automatic beams,Barrat automàtic}, +@rusernamed{Manual beams,Barrat manual}. @node Instruccions rítmiques avançades @subsection Instruccions rítmiques avançades @@ -667,7 +666,7 @@ expressió musical amb la paraula clau @code{\appoggiatura} o Referència de la notació: @rusernamed{Grace notes,Notes d'adorn}, @rusernamed{Tuplets,Grups especials}, -@ruser{Upbeats}. +@rusernamed{Upbeats,Anacrusis}. @node Diverses notes a la vegada @section Diverses notes a la vegada @@ -948,8 +947,8 @@ també controla l'abast de les línies divisòries. @seealso Referència de la notació: -@ruser{Keyboard and other multi-staff instruments}, -@ruser{Displaying staves}. +@rusernamed{Keyboard and other multi-staff instruments,Teclat i altres instruments de pentagrama múltiple}, +@rusernamed{Displaying staves,Visualització dels pentagrames}. @node Combinar notes per formar acords @subsection Combinar notes per formar acords @@ -994,7 +993,7 @@ per fora dels angles. @seealso Referència de la notació: -@ruser{Chorded notes}. +@rusernamed{Chorded notes,Notes en acord}. @node Polifonia a un sol pentagrama @@ -1024,7 +1023,7 @@ Manual d'aprenentatge: @ref{Les veus contenen música}. Referència de la notació: -@ruser{Simultaneous notes}. +@rusernamed{Simultaneous notes,Notes simultànies}. @node Cançons @@ -1276,7 +1275,7 @@ del @notation{Barber de Sevilla} de Rossini, on la síl·laba @seealso Referència de la notació: -@ruser{Vocal music}. +@rusernamed{Vocal music,Música vocal}. @node Lletra en diversos pentagrames @@ -1321,7 +1320,7 @@ variables}. @seealso Referència de la notació: -@ruser{Vocal music}. +@rusernamed{Vocal music,Música vocal}. @node Retocs finals @@ -1470,7 +1469,7 @@ es troba fora de l'expressió musical principal: el bloc Quan es processa el fitxer, el títol i l'autor s'imprimeixen a sobre de la música. Podeu obtenir més informació sobre els títols -a @ruser{Creating titles headers and footers}. +a @rusernamed{Creating titles headers and footers,Creació de capçaleres de títol i peus de pàgina}. @node Noms de nota absoluts @subsection Noms de nota absoluts @@ -1581,17 +1580,17 @@ relativa: Després d'acabar el tutorial, potser hauríeu de provar a escriure una o dues peces. Comenceu amb una de les plantilles que -apareixen a @rlearningnamed{Templates,Plantilles} i afegiu algunes +apareixen a @ref{Plantilles} i afegiu algunes notes. Si necessiteu un tipus de notació que no ha estat tractat en aquest tutorial, doneu una ullada a la Referència de Notació, -començant per @ruser{Musical notation}. Si voleu escriure música +començant per @ruser{Notació musical}. Si voleu escriure música per a un conjunt instrumental que no estigui cobert per cap plantilla, consulteu @ref{Extensió de les plantilles}. Un cop que heu escrit algunes peces curtes, llegiu la resta del Manual d'aprenentatge (capítols 3 al 5). Per suposat no passa res per llegir-lo ara mateix! La resta del Manual d'Aprenentatge, -però, dona per suposat que teniu familiaritat amb l'entrada del +però, dóna per suposat que teniu familiaritat amb l'entrada del LilyPond. Podeu saltar-vos aquests capítols ara i tornar a ells quan hagueu adquirit més experiència. diff --git a/Documentation/ca/learning/fundamental.itely b/Documentation/ca/learning/fundamental.itely index 53bc51d22d..738b362888 100644 --- a/Documentation/ca/learning/fundamental.itely +++ b/Documentation/ca/learning/fundamental.itely @@ -38,7 +38,7 @@ tota aquesta flexibilitat pot fer que les coses es tornin confuses per als nous usuaris. Aquesta secció us explicarà part d'aquesta estructura, però pot obviar certs detalls per simplificar. Per veure una descripció més completa del format d'entrada, consulteu -@ruser{File structure}. +@rusernamed{File structure,Estructura dels fitxers}. @menu @@ -190,8 +190,8 @@ Dues instruccions més que no hem vist són @code{\layout @{ @}} i @code{\midi @{ @}}. Si apareixen tal i com es mostren aquí, fan que el LilyPond produeixi una sortida impresa i una sortida MIDI, respectivament. Es descriuen amb tot detall al manual de -Referència de la notació, a @ruser{Score layout} i a -@ruser{Creating MIDI files}. +Referència de la notació, a @rusernamed{Score layout,Disposició de la partitura} +i a @ruser{Creating MIDI output,Creació de sortida MIDI}. @cindex partitures, diverses @cindex book, bloc implícit @@ -227,7 +227,8 @@ bloc @code{\score} (que per això està dins d'un bloc @code{\book}, ja sigui explícit o implícitament) afecta als blocs @code{\score} que estan dins d'aquest @code{\book}. -Per veure més detalls, consulteu @ruser{Multiple scores in a book}. +Per veure més detalls, consulteu +@rusernamed{Multiple scores in a book,Partitures múltiples en un llibre}. @cindex variables @@ -256,7 +257,7 @@ caràcters alfabètics i sigui diferent a qualsevol dels noms d'instrucció del LilyPond. Per veure més detalls, consulteu @ref{Estalvi de tecleig mitjançant variables i funcions}. Les limitacions exactes que afecten els noms de variable es detallen a -@ruser{File structure}. +@rusernamed{File structure,Estructura dels fitxers}. @seealso @@ -417,7 +418,7 @@ la mateixa posició horitzontal). @seealso Referència de la notació: -@ruser{Estructura d'una partitura}. +@rusernamed{Structure of a score,Estructura d'una partitura}. @node Niuat d'expressions musicals @@ -488,8 +489,7 @@ pentagrama nou s'ha de col·locar per sobre del pentagrama anomenat Els fragments d'ossia s'escriuen sovint sense clau i sense indicació de compàs, i generalment amb una lletra més petita. Per fer això caldrien més ordres que encara no s'han vist. Vegeu -@rlearningnamed{Size of objects,Mida dels objectes} i -@ruser{Ossia staves}. +@ref{Mida dels objectes} i @rusernamed{Ossia staves,Pentagrames d'Ossia}. @node Quant a la impossibilitat de niuar claudàtors i lligadures @subsection Quant a la impossibilitat de niuar claudàtors i lligadures @@ -788,10 +788,8 @@ aspes, i la veu quatre (que no es fa servir aquí) a aspes color magenta. @code{\voiceNeutralStyle} (que tampoc no es fa servir aquí) retorna tot a l'estil predeterminat. Veurem més endavant com l'usuari pot crear instruccions com aquestes. Vegeu -@rlearningnamed{Visibility and color of objects,Visibilitat i -color dels objectes} i -@rlearningnamed{Using variables for layout adjustments,Ús de -variables per als ajustos de disposició}. +@ref{Visibilitat i color dels objectes} i +@ref{Ús de variables per als ajustaments de disposició}. @cindex polifonia i mode relatiu @cindex relatiu, mode, polifonia i @@ -965,15 +963,14 @@ d'ajustar la col·locació horitzontal de les notes. Encara no estem preparats per veure com es corregeix això, per la qual cosa deixarem el problema per a una secció posterior (vegeu la propietat @code{force-hshift} a -@rlearningnamed{Fixing overlapping notation,Arreglar notació amb -superposicions}). +@ref{Ajustament de la notació amb superposicions}). @warning{No es poden crear lletres ni objectes d'extensió (com ara lligadures, reguladors, etc.) @q{entre} veus diferents.} @seealso Referència de la notació: -@ruser{Multiple voices}. +@ruser{Multiple voices,Veus mútiples}. @node Veus explícites @@ -1204,7 +1201,7 @@ quatre es desplacen cap a l'esquerra. @code{\shiftOnn} i @code{\shiftOnnn} defineixen nivells addicionals de desplaçament que es poden especificar temporalment per resoldre col·lisions en situacions complexes (vegeu -@rlearningnamed{Real music example,Exemples reals de música}). +@ref{Exemple real de música}). Una columna de notes pot contenir sols una nota (o acord) d'una veu amb les pliques cap amunt i una nota (o acord) d'una veu amb @@ -1216,10 +1213,10 @@ massa columnes de notes}. @seealso Manual d'aprenentatge: -@rlearningnamed{Moving objects,Moure objectes}. +@ref{Moviment d'objectes}. Referència de la notació: -@ruser{Multiple voices}. +@rusernamed{Multiple voices,Veus múltiples}. @node Veus i música vocal @@ -1389,7 +1386,7 @@ VerseFour = @seealso Referència de la notació: -@ruser{Vocal music}. +@rusernamed{Vocal music,Música vocal}. @node Contextos i gravadors @@ -1607,7 +1604,7 @@ secció sobre la lletra, a @ref{Veus i música vocal}. @seealso Referència de la notació: -@ruser{Creating contexts}. +@rusernamed{Creating and referencing contexts,Creació i referència de contextos}. @node Explicació dels gravadors @@ -2026,10 +2023,10 @@ enunciats dins d'un bloc @code{\with}, i mitjançant instruccions @seealso Referència de la notació: -@ruser{Changing context default settings}. +@rusernamed{Changing context default settings,Canvi de la configuració dels contextos predeterminats}. @c FIXME @c uncomment when backslash-node-name issue is resolved -pm -@ruser{The set command} +@rusernamed{The set command,L'ordre set} Referència de funcionament intern: @rinternals{Contexts}, @@ -2197,8 +2194,8 @@ particular incloent-hi la instrucció @code{\set} dins d'un bloc @seealso Referència de la notació: -@ruser{Modifying context plug-ins}, -@ruser{Changing context default settings}. +@rusernamed{Modifying context plug-ins,Modificactió dels connectors de context}, +@rusernamed{Changing context default settings,Canvi de la configuració dels contextos predeterminats}. @knownissues Els gravadors @code{Stem_engraver} i @code{Beam_engraver} @@ -2215,7 +2212,7 @@ Heu llegit el tutorial i ara sabeu escriure música. Però, com podeu posar els pentagrames que voleu? Les plantilles estan molt bé, però què passa si voleu alguna cosa que està en cap plantilla? Bé, podeu trobar muntanyes de plantilles (vegeu -@rlearningnamed{Templates,Plantilles}) +@ref{Plantilles}) que us poden servir com a punt de partida. Però i si voleu quelcom que no està contemplat aquí? Continueu llegint. @@ -2416,7 +2413,7 @@ musicaVioloncel = \relative { @seealso Les plantilles d'inici es poden trobar a l'apèndix @q{Plantilles}, vegeu -@rlearningnamed{Single staff templates,Plantilles de pentagrama únic}. +@ref{Plantilles de pentagrama únic}. @node Partitura vocal a quatre veus SATB @subsection Partitura vocal a quatre veus SATB @@ -2529,8 +2526,7 @@ lower = \relative { Cap de les plantilles proporciona aquesta disposició amb exactitud. La més semblant és -@rlearningnamed{SATB vocal score and automatic piano reduction, -Partitura vocal SATB i reducció per a piano automàtica}, +@ref{Partitura vocal SATB i reducció per a piano automàtica}, però necessitem canviar la disposició i afegir un acompanyament de piano que no estigui derivat automàticament de les parts vocals. Les variables que contenen la música i la lletra de les parts @@ -2949,7 +2945,8 @@ l'@q{objecte gràfic} @code{VerticalAxisGroup} (els objectes gràfics reben en general el nom de @q{grob}s a la documentació del LilyPond); no us preocupeu de moment dels detalls, ja que això s'explica més tard de forma exhaustiva. Els més curiosos podeu -donar una ullada a @ruser{Overview of modifying properties}. +donar una ullada a +@rusernamed{Overview of modifying properties,Panorama de la modificació de propietats}. En aquest cas volem modificar solament la sub-propietat @code{stretchability}. Un altre cop, els curiosos trobareu els valors predeterminats per a la propietat staff-staff-spacing al @@ -3184,7 +3181,7 @@ La utilització d'identificadors també és una bona forma de reduir el treball si la sintaxis d'entrada del LilyPonod canvia (vegeu @rprogram{Actualització de fitxers amb convert-ly}). Si teniu una sola definició (com ara @code{\dolce}) per a tots els fitxers (vegeu -@rlearningnamed{Style sheets,Fulls d'estil}), i després la sintaxis es +@ref{Fulls d'estil}), i després la sintaxis es modifica, sols haurà d'actualitzar la seva definició @code{\dolce} única, enlloc de haver de fer canvis a cadascú dels fitxers @file{.ly}. diff --git a/Documentation/ca/learning/tutorial.itely b/Documentation/ca/learning/tutorial.itely index 32e37b6b89..bfa1adeef0 100644 --- a/Documentation/ca/learning/tutorial.itely +++ b/Documentation/ca/learning/tutorial.itely @@ -16,7 +16,7 @@ @chapter Tutorial @translationof Tutorial -Aquest capítol ofereix una introducció bàsica al treball amb el Lilypond. +Aquest capítol ofereix una introducció bàsica al treball amb el LilyPond. @menu * Compilació d'un fitxer:: @@ -78,7 +78,7 @@ El resultat té aquest aspecte: @end lilypond @warning{la música i la lletra escrita al codi d'entrada del -Lilypond ha d'anar sempre entre @w{@strong{@{ claudàtors @}}}. +LilyPond ha d'anar sempre entre @w{@strong{@{ claudàtors @}}}. Els claudàtors haurien també d'estar rodejats per espais a no ser que es trobin al principi o al final d'una línia, per evitar ambigüitats. És possible que s'ometen en alguns exemples del @@ -87,7 +87,7 @@ Per veure més informació sobre la presentació dels exemples del manual, consulteu @ref{Com llegir els manuals}.} -A més, l'entrada del Lilypond és @strong{sensible a les majúscules}. +A més, l'entrada del LilyPond és @strong{sensible a les majúscules}. @w{@samp{ @{ c d e @}}} és una entrada vàlida; @w{@samp{@{ C D E @}}} produeix un missatge d'error. @@ -510,11 +510,11 @@ a l'hora: @seealso Referència de la notació: -@rusernamed{Writing pitches,Escriptura de les notes}, +@ruser{Escriptura de les notes}, @rusernamed{Writing rhythms,Escriptura dels ritmes}, @rusernamed{Writing rests,Escriptura de silencis}, @rusernamed{Time signature,Indicació de compàs}, -@rusernamed{Clef,Clau}. +@ruser{Clau}. @node Treball sobre els fitxers d'entrada @subsection Treball sobre els fitxers d'entrada @@ -687,8 +687,7 @@ La solució de problemes al LilyPond pot ser un desafiament per a les persones acostumades als interfícies gràfics, perquè és possible crear fitxers d'entrada invàlids. Quan passa això, la millor manera d'identificar i resoldre el problema és aplicar un -enfocament lògic. A @rprogramnamed{Troubleshooting, -Solució de problemes} es donen +enfocament lògic. A @rprogram{Solució de problemes} es donen algunes guies per ajudar-vos a aprendre a fer-lo. @node Alguns errors comuns @@ -842,8 +841,7 @@ del manual d'Aprenentatge. @item @strong{Abans d'afrontar un projecte gran}: llegiu la secció -@rprogramnamed{Suggestions for writing files,Suggeriments per -escriure fitxers d'entrada del LilyPond} del manual d'utilització -del programa. +@rprogram{Suggeriments per escriure fitxers d'entrada} +del manual d'utilització del programa. @end itemize diff --git a/Documentation/ca/learning/tweaks.itely b/Documentation/ca/learning/tweaks.itely index 90fe3e351e..450f030b70 100644 --- a/Documentation/ca/learning/tweaks.itely +++ b/Documentation/ca/learning/tweaks.itely @@ -78,7 +78,7 @@ són fonamentals per comprendre i construir els ajustaments. @cindex objecte de disposició L'ajustament consisteix en modificar el funcionament i estructure -interna del programa Lilypond, per la qual cosa en primer lloc +interna del programa LilyPond, per la qual cosa en primer lloc introduirem alguns termes que es fan servir per descriure aquestes operacions i estructures internes. @@ -269,7 +269,7 @@ bàsiques com ara números, cadenes de caràcters i llistes, es processen al @q{mode de l'Scheme}, que s'invoca mitjançant del prefix @samp{#} escrit abans del valor. Tot i que els valors poden tenir a vegades una representació vàlida al mode de música -del Lilypond, aquest manual utilitza sempre @samp{#} per a +del LilyPond, aquest manual utilitza sempre @samp{#} per a l'escriptura, per coherència. Per obtenir més informació sobre el mode de l'Scheme, consulteu @rextendnamed{LilyPond Scheme-Syntax,Sintaxi de l'Scheme del LilyPond}. @@ -737,9 +737,9 @@ estàndard. Navegueu per ells buscant una propietat que pogués controlar el gruix de les lligadures, i trobarà @example -@code{thickness} (number) - @code{1.2} - Line thickness, generally measured in @code{line-thickness} +thickness (number) + 1.2 + Line thickness, generally measured in line-thickness @end example Això promet ser una bona opció per canviar el gruix. Ens diu que @@ -2180,7 +2180,7 @@ l'ordre @code{\set fingeringOrientations}. El format d'aquesta ordre és: @example -@code{\set fingeringOrientations = #'([up] [left/right] [down])} +\set fingeringOrientations = #'([up] [left/right] [down]) @end example @noindent @@ -2882,7 +2882,7 @@ del @code{VerticalAxisGroup}. Per veure més detalls, consulteu @menu * Moviment d'objectes:: * Ajustament de la notació amb superposicions:: -* Exemples reals de música:: +* Exemple real de música:: @end menu @node Moviment d'objectes @@ -3574,8 +3574,8 @@ Presentem a continuació el resultat final: @end lilypond -@node Exemples reals de música -@subsection Exemples reals de música +@node Exemple real de música +@subsection Exemple real de música @translationof Real music example Finalitzarem aquesta secció sobre els ajustaments mostrant els @@ -4282,11 +4282,11 @@ alternativa, utilitzar les ordres @code{\override} y @code{\revert}? @example -@code{\override Lyrics.LyricText.font-shape = #'italic} -@code{\override Lyrics.LyricText.font-series = #'bold} +\override Lyrics.LyricText.font-shape = #'italic +\override Lyrics.LyricText.font-series = #'bold -@code{\revert Lyrics.LyricText.font-shape} -@code{\revert Lyrics.LyricText.font-series} +\revert Lyrics.LyricText.font-shape +\revert Lyrics.LyricText.font-series @end example Aquestes ordres també serien extremadament tedioses d'escriure si @@ -4665,7 +4665,7 @@ fitxers de música amb un @code{\include "../global.ily"}, que conté @translationof Other sources of information La documentació del manual de Referència de Funcionament Intern -conté muntanyes d'informació sobre el Lilypond, però es pot +conté muntanyes d'informació sobre el LilyPond, però es pot obtenir més informació encara llegint els fitxers interns del LilyPond. Per donar-los una ullada, en primer lloc heu de buscar la carpeta corresponent al seu sistema. La ubicació d'aquesta @@ -4713,7 +4713,7 @@ compilat a partir de la font Dirigiu-vos a @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, on @var{PREFIX} s'ha establert pel vostre administrador de paquets o guió @code{configure}, i @var{X.Y.Z} es el número de la versió del -Lilypond. +LilyPond. @smallspace diff --git a/Documentation/ca/notation.tely b/Documentation/ca/notation.tely new file mode 100644 index 0000000000..90f9207a45 --- /dev/null +++ b/Documentation/ca/notation.tely @@ -0,0 +1,121 @@ +\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- +@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 + +@setfilename lilypond.info +@settitle Referència de la notació del GNU LilyPond +@documentencoding UTF-8 +@documentlanguage ca +@afourpaper + +@macro manualIntro +Aquest manual ofereix una referència per a tota la notació musical que +es pot produir amb el LilyPond versió @version{}. S'entén que el +lector està familiaritzat amb el material que hi ha a +@rlearningnamed{Top, Manual d'aprenentatge}. +@end macro + +@c `Notation Reference' was born 1998-08-14 with this commit: +@c release: 1.0.2 +@c author: Han-Wen Nienhuys +@c commit: a3a44f9f3c581b6824b3a65f9039656693e09bbf +@c file: Documentation/tex/refman.yo + +@macro copyrightDeclare +Copyright @copyright{} 1999--2015 pels autors. +@end macro + + +@set FDL +@include macros.itexi + +@c don't remove this comment. +@ignore +@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival +@omfdescription Notation Reference of the LilyPond music engraving system +@omftype user manual +@omfcategory Applications|Publishing +@omflanguage Catalan +@end ignore + +@c Translators: Walter Garcia-Fontes + +@lilyTitlePage{Referència de la notació} + + +@ifnottex + +@menu +* Notació musical:: Notació que es fa servir a gairebé tots els projectes. +* Specialist notation:: Notació que sols s'usa per a fins específics. +* General input and output:: Informació general sobre l'entrada i la sortida del LilyPond. +* Spacing issues:: Presentació del resultat en paper. +* Changing defaults:: Ajust fi del resultat + +Annexos + +* Notation manual tables:: Taules i quadres +* Cheat sheet:: Resum de la sintaxi del LilyPond +* GNU Free Documentation License:: Llicència d'aquest document +* Índex d'ordres del LilyPond:: +* Índex del LilyPond:: +@end menu + +@docMain +@end ifnottex + +@contents + +@allowcodebreaks false + +@include notation/notation.itely +@include notation/specialist.itely + +@include notation/input.itely +@include notation/spacing.itely + +@include notation/changing-defaults.itely + + +@include notation/notation-appendices.itely +@include notation/cheatsheet.itely + + +@include fdl.itexi + + +@node Índex d'ordres del LilyPond +@appendix Índex d'ordres del LilyPond +@translationof LilyPond command index + +Aquest índex fa una relació de totes les ordres i paraules clau +del LilyPond, amb enllaços a aquelles seccions del manual que +descriuen o s'ocupen del seu ús. Cadascú d'aquests enllaços +consta de dues parts. La primera part apunta a la situació exacta +del manual en el qual apareix l'ordre o paraula clau; la segona +part apunta al començament de la secció corresponent del manual en +la qual apareix l'ordre o paraula clau. + +@printindex ky + +@node Índex del LilyPond +@appendix Índex del LilyPond +@translationof LilyPond index + +A més de totes les ordres i paraules clau del LilyPond, aquest +índex és una llista de termes musicals i les paraules que tenen +relació amb cada u d'ells, amb enllaços a aquelles seccions del +manual que descriuen o s'ocupen d'aquest terme. Cada un dels +enllaços consta de dues parts. La primera part apunta a la +situació exacta del manual en el qual apareix el terme; la segona +part apunta al començament de la secció corresponent del manual en +la qual es discuteix aquest terme. + +@printindex cp + +@bye diff --git a/Documentation/ca/notation/notation.itely b/Documentation/ca/notation/notation.itely new file mode 100644 index 0000000000..43693424d4 --- /dev/null +++ b/Documentation/ca/notation/notation.itely @@ -0,0 +1,37 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- +@ignore + Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a + + 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" + +@node Notació musical +@chapter Notació musical +@translationof Musical notation + +Aquest capítol explica com crear notació musical. + +@menu +* Altures:: Escriptura i presentació de les duracions de les notes. +* Rhythms:: Escriptura i presentació de les duracions de les notes. +* Expressive marks:: Addició d'expressió a les notes. +* Repeats:: Repeticions de música. +* Simultaneous notes:: Més d'una nota a l'hora. +* Staff notation:: Imprimir pentagrames. +* Editorial annotations:: Notació especial per augmentar la llegibilitat. +* Text:: Addicció de text a les partitures. +@end menu + +@include notation/pitches.itely +@include notation/rhythms.itely +@include notation/expressive.itely +@include notation/repeats.itely +@include notation/simultaneous.itely +@include notation/staff.itely +@include notation/editorial.itely +@include notation/text.itely + diff --git a/Documentation/ca/notation/pitches.itely b/Documentation/ca/notation/pitches.itely new file mode 100644 index 0000000000..ab0d8ade0a --- /dev/null +++ b/Documentation/ca/notation/pitches.itely @@ -0,0 +1,3300 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*- +@ignore + Translation of GIT committish: e45059ae37b240ce52639ad5c49110b510a89481 + + 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.22" + + +@node Altures +@section Altures +@translationof Pitches + +@lilypondfile[quote]{pitches-headword.ly} + +A aquesta secció es discuteix com especificar l'altura de les +notes. Aquest procés es composa de tres fases: entrada, +modificació i sortida. + +@menu +* Escriptura de notes:: +* Modificació de diverses notes a l'hora:: +* Impressió de les altures:: +* Cap de les notes:: +@end menu + + +@node Escriptura de notes +@subsection Escriptura de notes +@translationof Writing pitches + +A aquesta secció es descriu la manera d'introduir l'altura de les +notes. Hi ha dues formes diferents de col·locar les notes a la +seva octava corresponent: el mode absolut i el relatiu. A gairebé +totes les ocasions, serà més pràctic el mode relatiu. + +@menu +* Escriptura d'octava absoluta:: +* Escriptura d'octava relativa:: +* Alteracions accidentals:: +* Noms de les notes en altres llengües:: +@end menu + + +@node Escriptura d'octava absoluta +@unnumberedsubsubsec Escriptura d'octava absoluta +@translationof Absolute octave entry + +@cindex noms de les notes +@cindex altures +@cindex absoluta +@cindex absoluta, especificació, de l'octava +@cindex octava, especificació absoluta +@cindex absoluta, introducció, de l'octava +@cindex octava, introducció absoluta + +El nom d'una nota s'especifica usant les lletres minúscules de +l'@code{a} a la @code{g}. Les notes els noms dels quals van des +de la @code{c} fins la @code{b} s'imprimeixen a l'octava inferior +al Do central. + +@c don't use c' here. +@lilypond[verbatim,quote] +{ + \clef bass + c4 d e f + g4 a b c + d4 e f g +} +@end lilypond + +@cindex octava, marca de canvi de + +@funindex ' +@funindex , + +Es poden especificar d'altres octaves mitjançant una cometa simple +quote@tie{}(@code{'}) o una coma@tie{}(@code{,}) . +Cada@tie{}@code{'} eleva l'altura en una octava; +cada@tie{}@code{,} baixa l'altura una octava. + +@lilypond[verbatim,quote] +{ + \clef treble + c'4 e' g' c'' + c'4 g b c' + \clef bass + c,4 e, g, c + c,4 g,, b,, c, +} +@end lilypond + +@funindex \fixed +Les marques d'octava comunes es poden escriure una sola vegada +sobre una nota de referència si es fa servir @code{\fixed} abans +de la música. A les notes dins de @code{\fixed} sols els calen +les marques d'apòstrof @code{'} o de coma @tie{}@code{,} quan +estan per sobre o per sota de l'octava de la nota de referència. + +@lilypond[verbatim,quote] +{ + \fixed c' { + \clef treble + c4 e g c' + c4 g, b, c + } + \clef bass + \fixed c, { + c4 e g c' + c4 g, b, c + } +} +@end lilypond + +L'altura de les notes de l'expressió musical que segueix a +@code{\fixed} no resulta afectada per un @code{\relative} que +l'envolta, que s'estudia a continuació. + +@seealso +Glossari musical: +@rglos{Pitch names}. + +Fragments de codi: +@rlsrnamed{Pitches,Altures}. + + +@node Escriptura d'octava relativa +@unnumberedsubsubsec Escriptura d'octava relativa +@translationof Relative octave entry + +@cindex relatiu +@cindex relatives, especificació d'octaves +@cindex octava, introducció relativa +@cindex relativa, especificació de l'octava +@cindex octava, especificació relativa + +@funindex \relative + +L'entrada d'octava absoluta requereix que s'especifiqui l'octava +per a totes i cadascuna de les notes. En contrast amb això, el +mode d'entrada d'octava relativa especifica cada octava en relació +amb la nota anterior: si es canvia l'octava d'una nota això +afectarà a totes les notes següents. + +El mode relatiu de notes s'ha d'introduir de forma explícita usant +l'ordre @code{\relative}: + +@example +\relative @var{altura_inicial} @var{expressió_musical} +@end example + +En el mode relatiu, se suposa que cada nota es troba el més a prop +possible de la nota anterior. Això significa que l'octava d'una +nota que està dins de @code{@var{expresión_musical}} es calcula +com segueix: + +@itemize +@item +Si no s'usa cap marca de canvi d'octava en una nota, la seva +octava es calcula de forma que l'interval que formi amb la nota +anterior sigui menor d'una quinta. Aquest interval es determina +sense considerar les alteracions. + +@item +Es pot afegir una marca de canvi d'octava@tie{}@code{'} +o@tie{}@code{,} per elevar o baixar l'altura, respectivament, en +una octava més en relació con l'altura calculada sense aquesta +marca. + +@item +Es poden usar diverses marques de canvi d'octava. Per exemple, +@code{''}@tie{}i @code{,,}@tie{} alteren l'altura en dues octaves. + +@item +L'altura de la primera nota és relativa a +@code{@var{altura_inicial}}. @code{@var{altura_inicial}} +s'especifica en mode d'octava absoluta. Quines opcions tenen +sentit? + +@table @asis +@item @code{c} (Do), en qualsevol octava +La identificació del Do central amb @code{c'} és quelcom força +bàsica, per la qual cosa sol ser fàcil trobar octaves de +@code{c}. Si la nostra música comença amb @code{gis} (un Sol +sostingut) per sobre de @code{c'''}, hauríem d'escriure quelcom +com @code{\relative @{ gis''' @dots{} @}} + +@item una nota que està una o dues octaves de la primera nota +Escriure @code{\relative @{ gis''' @dots{} @}} fa que sigui fàcil +determinar l'altura absoluta de la primera nota de dins. + +@item cap altura d'inici explícita +La forma @code{\relative @{ gis''' @dots{} @}} serveix com una +versió més compacta de l'opció anterior: la primera nota de dins +s'escriu ella mateixa en altura absoluta (això resulta ser +equivalent a escollir @code{f} (Fa) como l'altura de referència). +@end table + +La documentació sol utilitzar aquesta última opció. +@end itemize + +Aquí podem ver el mode relatiu en acció: + +@lilypond[verbatim,quote] +\relative { + \clef bass + c d e f + g a b c + d e f g +} +@end lilypond + +Les marques de canvi d'octava s'utilitzen per a intervals majors +de la quarta: + +@lilypond[verbatim,quote] +\relative { + c'' g c f, + c' a, e'' c +} +@end lilypond + +Una sèrie de notes sense cap marca d'octava pot, malgrat tot, +abastar intervals molt grans: + +@lilypond[verbatim,quote] +\relative { + c f b e + a d g c +} +@end lilypond + +Quan hi ha uns blocs @code{\relative} niuats dins d'altres, el bloc +@code{\relative} més intern comença amb la seva pròpia nota de +referència independentment del @code{\relative} exterior. + +@lilypond[verbatim,quote] +\relative { + c' d e f + \relative { + c'' d e f + } +} +@end lilypond + +@code{\relative} no té efecte sobre els blocs +@code{\chordmode}. + +@lilypond[verbatim,quote] +\new Staff { + \relative c''' { + \chordmode { c1 } + } + \chordmode { c1 } +} +@end lilypond + +@code{\relative} no es permet dins des bloques +@code{\chordmode}. + +La música que està dins d'un bloc @code{\transpose} és absoluta, a +no ser que s'inclogui una ordre @code{\relative}. + +@lilypond[verbatim,quote] +\relative { + d' e + \transpose f g { + d e + \relative { + d' e + } + } +} +@end lilypond + +@cindex acords i introduccions relativa de l'octava +@cindex relativa, introducció de l'octava, i acords + +Si l'element anterior és un acord, la primera nota de l'acord +s'utilitza per determinar la primera nota del següent acord. Dins +dels acords, la següent nota sempre està en relació a l'anterior. + +@lilypond[verbatim,quote] +\relative { + c' + + + +} +@end lilypond + +Com es va explicar més a dalt, l'octava de les notes es calcula +solament a partir dels seus noms, sense tenir en compte cap +alteració. Per tant, un Mi doble sostingut després d'un Si +s'escriurà més greu. En altres paraules, es considera a la quarta +doble augmentada un interval menor que la quinta doble disminuïda, +independentment del número de semitons de cada un d'ells. + +@lilypond[verbatim,quote] +\relative { + c''2 fis + c2 ges + b2 eisis + b2 feses +} +@end lilypond + + +@seealso +Glossari musical: +@rglos{fifth}, +@rglos{interval}, +@rglos{Pitch names}. + +Referència de la notació: +@ref{Comprovació d'octava}. + +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament intern: +@rinternals{RelativeOctaveMusic}. + +@cindex relatiu, mode, transposició i +@cindex transposició i mode relatiu + +@funindex \transpose +@funindex \chordmode +@funindex \relative + + +@node Alteracions accidentals +@unnumberedsubsubsec Alteracions accidentals +@translationof Accidentals + +@cindex accidental +@cindex key signature +@cindex clef + +@c duplicated in Key signature and Accidentals +@warning{Les alteracions accidentals i les armadures són una +freqüent causa de confusió per als nous usuaris. Al LilyPond, els +noms de les notes específiques les altures; l'armadura i la clau +determinen de quin forma es presenten aquestes altures. Una nota +sense alteració com@tie{}@code{c} significa @q{Do natural}, i sí que +l'afecten l'armadura ni la clau. Per veure més informació, consulteu +@rlearning{Alteracions accidentals i armadures}.} + +@cindex notes, noms holandesos de +@cindex notes, noms predeterminats +@cindex predeterminats, noms de nota +@cindex sostingut +@cindex bemoll +@cindex doble sostingut +@cindex sostingut, doble +@cindex doble bemoll +@cindex bemoll, doble +@cindex becaire +@cindex natural, nota + +S'escriu una nota @notation{sostinguda} afegint @code{is} al +nom de la nota, i un @notation{bemoll} afegint @code{es}. +Com és d'esperar, un @notation{doble sostingut} i un +@notation{doble bemoll} s'obté afegint @code{isis} o +@code{eses}. Aquesta sintaxi deriva dels noms de les notes en +holandès. Per utilitzar altres noms per a les alteracions, +consulteu @ref{Noms de les notes en altres llengües}. + +@lilypond[verbatim,quote,fragment] +\relative c'' { ais1 aes aisis aeses } +@end lilypond + +Una nota natural s'introdueix com el nom de la nota, sense més; no +cal cap sufix. S'imprimeix un símbol de becaire si cal per +cancel·lar l'efecte d'una alteració o armadura anterior. + +@lilypond[verbatim,quote,fragment] +\relative c'' { a4 aes a2 } +@end lilypond + +@cindex quarts de to +@cindex semi-bemolls +@cindex semi-sostinguts + +Es poden escriure mig bemolls i els mig sostinguts; a continuació +presentem una sèrie de DOs cada com més aguts: + +@lilypond[verbatim,quote,fragment] +\relative c'' { ceseh1 ces ceh c cih cis cisih } +@end lilypond + +@cindex alteració recordatòria +@cindex alteració de precaució +@cindex alteració con parèntesi +@cindex recordatòria, alteració +@cindex precaució, alteració de +@cindex parèntesi, alteració amb + +@funindex ? +@funindex ! + +Normalment les alteracions accidentals s'imprimeixen +automàticament, però també pot imprimir-les manualment. Una +alteració recordatòria es pot forçar afegint un signe de +admiració@tie{}@code{!} després de l'altura de la nota. Es pot +obtenir una alteració de precaució (o sigui, una alteració entre +parèntesi) afegint el signe de interrogació@tie{}@code{?} després +del nom de la nota. + +@lilypond[verbatim,quote,fragment] +\relative c'' { cis cis cis! cis? c c c! c? } +@end lilypond + +@cindex alteració en nota lligada +@cindex lligadura, alteracions i + +Les alteracions sobre notes unides per lligadura sols +s'imprimeixen al començament d'un sistema: + +@lilypond[verbatim,quote,fragment,ragged-right] +\relative c'' { + cis1~ 1~ + \break + cis +} +@end lilypond + + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle,ragged-right] +{hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{preventing-extra-naturals-from-being-automatically-added.ly} + +@seealso +Glossari musical: +@rglos{sharp}, +@rglos{flat}, +@rglos{double sharp}, +@rglos{double flat}, +@rglos{Pitch names}, +@rglos{quarter tone}. + +Manual d'aprenentatge: +@rlearning{Alteracions accidentals i armadures}. + +Referència de la notació: +@ref{Alteracions accidentals automàtiques}, +@rusernamed{Annotational accidentals (musica ficta), Alteracions de anotació (musica ficta)}, +@ref{Noms de les notes en altres llengües}. + +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament intern: +@rinternals{Accidental_engraver}, +@rinternals{Accidental}, +@rinternals{AccidentalCautionary}, +@rinternals{accidental-interface}. + +@cindex alteració de quarts de to +@cindex quarts de to, alteracions + +@knownissues +No hi ha estàndards reconeguts àmpliament per denotar els bemolls +de tres quarts, de manera que els símbols del LilyPond no +s'ajusten a cap estàndard. + +@node Noms de les notes en altres llengües +@unnumberedsubsubsec Noms de les notes en altes llengües +@translationof Note names in other languages + +@cindex notes, noms de, en altres llengües +@cindex altures, noms de, altres llengües +@cindex llengua, noms de nota en altres +@cindex llengua, altures en altres + +Hi ha conjunts predefinits de noms de notes i les seves +alteracions per a algunes llengües a part de l'anglès. La +selecció de la llengua dels noms de les notes se sol fer al +principi del fitxer: l'exemple següent està escrit utilitzant els +noms italians de les notes: + +@lilypond[quote,verbatim] +\language "italiano" + +\relative { + do' re mi sib +} +@end lilypond + +Les llengües disponibles i els noms de les notes que defineixen +són els següents: + +@quotation +@multitable {@code{nederlands}} {do re/re mi fa sol la sib si} +@headitem Llengua + @tab Nom de les notes +@item @code{nederlands} + @tab c d e f g a bes b +@item @code{catalan} + @tab do re mi fa sol la sib si +@item @code{deutsch} + @tab c d e f g a b h +@item @code{english} + @tab c d e f g a bf b +@item @code{espanol} o @code{español} + @tab do re mi fa sol la sib si +@item @code{français} + @tab do ré/re mi fa sol la sib si +@item @code{italiano} + @tab do re mi fa sol la sib si +@item @code{norsk} + @tab c d e f g a b h +@item @code{portugues} + @tab do re mi fa sol la sib si +@item @code{suomi} + @tab c d e f g a b h +@item @code{svenska} + @tab c d e f g a b h +@item @code{vlaams} + @tab do re mi fa sol la sib si +@end multitable +@end quotation + +A més dels noms de les notes, els sufixos de les alteracions +poden també variar depenent de la llengua: + +@quotation +@multitable {@code{nederlands}} {-@code{s}/-@code{-sharp}} {-@code{ess}/-@code{es}} {-@code{ss}/-@code{x}/-@code{-sharpsharp}} {-@code{essess}/-@code{eses}} +@headitem Llengua + @tab sostingut @tab bemoll @tab doble sostingut @tab doble bemoll +@item @code{nederlands} + @tab -@code{is} @tab -@code{es} @tab -@code{isis} @tab -@code{eses} +@item @code{catalan} + @tab -@code{d}/-@code{s} @tab -@code{b} @tab -@code{dd}/-@code{ss} @tab -@code{bb} +@item @code{deutsch} + @tab -@code{is} @tab -@code{es} @tab -@code{isis} @tab -@code{eses} +@item @code{english} + @tab -@code{s}/-@code{-sharp} @tab -@code{f}/-@code{-flat} @tab -@code{ss}/-@code{x}/-@code{-sharpsharp} + @tab -@code{ff}/-@code{-flatflat} +@item @code{espanol} or @code{español} + @tab -@code{s} @tab -@code{b} @tab -@code{ss}/-@code{x} @tab -@code{bb} +@item @code{français} + @tab -@code{d} @tab -@code{b} @tab -@code{dd}/-@code{x} @tab -@code{bb} +@item @code{italiano} + @tab -@code{d} @tab -@code{b} @tab -@code{dd} @tab -@code{bb} +@item @code{norsk} + @tab -@code{iss}/-@code{is} @tab -@code{ess}/-@code{es} @tab -@code{ississ}/-@code{isis} + @tab -@code{essess}/-@code{eses} +@item @code{portugues} + @tab -@code{s} @tab -@code{b} @tab -@code{ss} @tab -@code{bb} +@item @code{suomi} + @tab -@code{is} @tab -@code{es} @tab -@code{isis} @tab -@code{eses} +@item @code{svenska} + @tab -@code{iss} @tab -@code{ess} @tab -@code{ississ} @tab -@code{essess} +@item @code{vlaams} + @tab -@code{k} @tab -@code{b} @tab -@code{kk} @tab -@code{bb} +@end multitable +@end quotation + +A l'holandès, @code{aes} es contrau com @code{as}, però les dues +formes s'accepten al LilyPond. De forma semblant, s'accepten tant +@code{es} com @code{ees}. Això s'aplica també a +@code{aeses}@tie{}/@tie{}@code{ases} i a +@code{eeses}@tie{}/@tie{}@code{eses}. A vegades es defineixen +sols aquest noms abreujats als fitxers de llengua corresponents. + +@lilypond[verbatim,quote,fragment] +\relative c'' { a2 as e es a ases e eses } +@end lilypond + +@cindex microtons +@cindex semi-sostingut +@cindex semi-bemoll +@cindex sesqui-sostingut +@cindex sesqui-bemoll + +Algunes músiques utilitzen microtons les alteracions dels quals +són fraccions d'un sostingut o bemoll @q{normals}. La taula +següent relaciona els noms de les notes per a les alteracions d'un +quart de to en diferents llengües; aquí, els prefixos +@notation{semi-} i @notation{sesqui-} respectivament signifiquen +@q{mig} i @q{u i mig}. Les llengües que no apareixen a aquesta +taula no aporten encaran noms especials per a les notes. + +@quotation +@multitable {@code{nederlands}} {@b{semi-sostingut}} {@b{semi-bemoll}} {@b{sesqui-sostingut}} {@b{sesqui-bemoll}} +@headitem Llengua + @tab semi-sostingut @tab semi-bemoll @tab sesqui-sostingut @tab sesqui-bemoll + +@item @code{nederlands} + @tab -ih @tab -eh @tab -isih @tab -eseh +@item @code{deutsch} + @tab -ih @tab -eh @tab -isih @tab -eseh +@item @code{english} + @tab -qs @tab -qf @tab -tqs @tab -tqf +@item @code{espanol} o @code{español} + @tab -cs @tab -cb @tab -tcs @tab -tcb +@item @code{français} + @tab -sd @tab -sb @tab -dsd @tab -bsb +@item @code{italiano} + @tab -sd @tab -sb @tab -dsd @tab -bsb +@item @code{portugues} + @tab -sqt @tab -bqt @tab -stqt @tab -btqt +@end multitable +@end quotation + +Gairebé totes les llengües presentades aquí estan associades +comunament amb la música clàssica occidental, també coneguda com +@notation{Període de la pràctica comuna}. Malgrat això, també +estan contemplades les altures i els sistemes d'afinació +alternatius: vegeu +@rusernamed{Common notation for non-Western music,Notació comuna per a músiques no occidentals}. + +@seealso +Glossari musical: +@rglos{Pitch names}, +@rglos{Common Practice Period}. + +Referència de la notació: +@rusernamed{Common notation for non-Western music,Notació comuna per a músiques no occidentals}. + +Fitxers instal·lats: +@file{scm/define-note-names.scm}. + +Fragments de codi: +@rlsr{Pitches}. + + +@node Modificació de diverses notes a l'hora +@subsection Modificació de diverses notes a l'hora +@translationof Changing multiple pitches + +Aquesta secció tracta de la manera de modificar les altures. + +@menu +* Comprovació d'octava:: +* Transposició:: +* Inversió:: +* Retrogradació:: +* Transformacions modals:: +@end menu + + +@node Comprovació d'octava +@unnumberedsubsubsec Comprovació d'octava +@translationof Octave checks + +@cindex octava, comprovació de +@cindex octava, correcció de +@cindex control, altures de + +@funindex = +@funindex \octaveCheck +@funindex controlpitch + +Al mode relatiu és fàcil oblidar una marca de canvi d'octava. Les +comprovacions d'octava fan més fàcil trobar aquests errors, +mitjançant la presentació d'un advertiment i corregint l'octava si +la nota es troba a una octava diferent de l'esperat. + +Per comprovar l'octava d'una nota, especifiqueu l'octava absoluta +després del símbol@tie{}@code{=}. Aquest exemple genera un +missatge d'advertiment (i corregeix l'altura) perquè la segona +nota és l'octava absoluta @code{d''} en lloc de @code{d'} com +indica la correcció d'octava. + +@lilypond[verbatim,quote] +\relative { + c''2 d='4 d + e2 f +} +@end lilypond + +L'octava de les notes es pot comprovar també amb l'ordre +@code{\octaveCheck@tie{}@var{altura_de_control}}. +@code{@var{altura_de_control}} s'especifica en mode absolut. Això +comprova que l'interval entre la nota anterior i la +@code{@var{altura_de_control}} es troba dins d'una quarta (és a +dir, el càlcul normal per al mode relatiu). Si aquesta +comprovació fracassa, s'imprimeix un missatge d'advertiment. Tot +i que la nota prèvia no es modifica, les notes posteriors estan en +relació al valor corregit. + +@lilypond[verbatim,quote] +\relative { + c''2 d + \octaveCheck c' + e2 f +} +@end lilypond + +Compareu els dos compassos següents. La primera i tercera +comprovacions de @code{\octaveCheck} fracassen, però la segona és correcta. + +@lilypond[verbatim,quote] +\relative { + c''4 f g f + + c4 + \octaveCheck c' + f + \octaveCheck c' + g + \octaveCheck c' + f +} +@end lilypond + +@seealso +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament interno: +@rinternals{RelativeOctaveCheck}. + + +@node Transposició +@unnumberedsubsubsec Transposició +@translationof Transpose + +@cindex transport +@cindex transposició +@cindex transposició d'altures +@cindex transposició de notes +@cindex altures, transport de +@cindex notes, transport de + +@funindex \transpose + +Una expressió musical es pot transportar mitjançant +@code{\transpose}. La sintaxi és +@example +\transpose @var{nota_origen} @var{nota_destí} @var{expressió_musical} +@end example + +Això significa que la @code{@var{expressió_musical}} es transporta +l'interval que hi ha entre les notes @code{@var{nota_origen}} i +@code{@var{nota_destí}}: qualsevol nota amb l'altura de +@code{@var{nota_origen}} es canvia per @code{@var{nota_destí}} i +qualsevol altra nota es transporta el mateix interval. Les dues +notes s'introdueixen en mode absolut. + +@warning{La música que està dins d'un bloc +@code{@bs{}transpose} és absoluta, a no ser que s'inclogui una introducció +@code{@bs{}relative} dins del bloc.} + +Per exemple, agafem una peça escrita en la tonalitat de Re major. +Es pot transposar cap amunt a Mi major; observeu que també +l'armadura de la tonalitat es transporta automàticament. + +@lilypond[verbatim,quote] +\transpose d e { + \relative { + \key d \major + d'4 fis a d + } +} +@end lilypond + +Si una particel·la escrita en Do (@notation{afinació de concert} +normal) es pot tocar amb un clarinet en La (per al qual un La +s'escriu com un Do, i que sona una tercera menor per sota del que +està escrit), la particel·la corresponent es produeix mitjançant: + +@lilypond[verbatim,quote] +\transpose a c' { + \relative { + \key c \major + c'4 d e g + } +} +@end lilypond + +@noindent +Observeu que especifiquem @code{\key c \major} de forma explícita. +Si no especifiquem cap tonalitat, les notes es transporten però no +s'imprimeix l'armadura. + +@code{\transpose} distingeix entre notes enarmòniques: tant +@code{\transpose c cis} com @code{\transpose c des} transporten +un semitó cap amunt. La primera versió imprimeix sostinguts i les +notes no es mouen del seu lloc a l'escala, en canvi la segona +imprimeix bemolls de la nota següent. + +@lilypond[verbatim,quote] +music = \relative { c' d e f } +\new Staff { + \transpose c cis { \music } + \transpose c des { \music } +} +@end lilypond + +@cindex transpositors, instruments +@cindex instruments transpositors + +@code{\transpose} també es pot usar per introduir notes escrites +per a un instrument transpositor. Els exemples interiors mostren +com escriure altures en Do (o en @notation{afinació de concert}) i +gravar-les per a un instrument transpositor, però també és +possible el cas contrari si, per exemple, tenim un conjunt de +parts instrumentals i voleu fer un guió en Do per al director. Per +exemple, en introduir música per a trompeta en Si bemoll que +comença per un Mi a la partitura (Re de concert), es pot escriure: + +@example +musicaEnSiBemol = @{ e4 @dots{} @} +\transpose c bes, \musicaEnSiBemol +@end example + +@noindent +Per imprimir aquesta música en Fa (per exemple, en arreglar-la per +a trompa) podeu envolta la música existent amb un altre +@code{\transpose}: + +@example +musicaEnSiBemol = @{ e4 @dots{} @} +\transpose f c' @{ \transpose c bes, \musicaEnSiBemol @} +@end example + +@noindent +Per veure més informació sobre instruments transpositors, consulteu +@ref{Transposició dels instruments}. + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{transposing-pitches-with-minimum-accidentals-smart-transpose.ly} + +@seealso +Referència de la notació: +@ref{Transposició dels instruments}, +@ref{Inversió}, +@ref{Transformacions modals}, +@ref{Escriptura d'octava relativa}, +@ref{Retrogradació}. + +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament intern: +@rinternals{TransposedMusic}. + +@funindex \transpose +@funindex \chordmode +@funindex \relative + +@knownissues +La conversió relativa no afecta a les seccions +@code{\transpose}, @code{\chordmode} ni @code{\relative} dins del +seu argument. Per usar el mode relatiu dins de música +transportada, es pot col·locar un altre @code{\relative} dins de +@code{\transpose}. + +No s'imprimeixen alteracions accidentals triples quan s'usa +@code{\transpose}. En lloc d'això, s'usarà una nota +@q{equivalent enarmònicament} (p.ex., Re bemoll en lloc de Mi +triple bemoll). + + +@node Inversió +@unnumberedsubsubsec Inversió +@translationof Inversion + +@cindex inversió +@cindex operació de inversió +@funindex \inversion + +Una expressió musical es pot invertir i transportar en una sola +operació amb: + +@example +\inversion @var{nota_pivot} @var{nota_destí} @var{expressió_musical} +@end example + +La @code{@var{expressió_musical}} s'inverteix interval a interval +al voltant de @code{@var{nota_pivot}}, i després es transport de +manera que @code{@var{nota_pivot}} es fa correspondre amb +@code{@var{nota_destí}}. + +@lilypond[verbatim,quote] +music = \relative { c' d e f } +\new Staff { + \music + \inversion d' d' \music + \inversion d' ees' \music +} +@end lilypond + +@warning{Els motius a invertir haurien de venir expressats en mode +absolut o convertir-se prèviament a la forma absoluta +envoltant-los en un bloc @code{\relative}.} + +@seealso +Referència de la notació: +@ref{Transformacions modals}, +@ref{Retrogradació}, +@ref{Transposició}. + + +@node Retrogradació +@unnumberedsubsubsec Retrogradació +@translationof Retrograde + +@cindex retrogradació, transformació de +@cindex transformació de retrogradació +@cindex operació de retrogradació +@funindex \retrograde + +Es pot revertir una expressió musical per produir la seva retrogradació: + +@lilypond[verbatim,quote] +music = \relative { c'8. ees16( fis8. a16 b8.) gis16 f8. d16 } + +\new Staff { + \music + \retrograde \music +} +@end lilypond + +@knownissues +Les lligadures d'unió manuals dins de @code{\retrograde} es +trencaran i generaran advertiments. Es poden generar algunes +lligadures automàticament activant +@rusernamed{Autommatic note splitting,Divisió automàtica de les notes}. + +@seealso +Referència de la notació: +@ref{Inversió}, +@ref{Transformacions modals}, +@ref{Transposició}. + + +@node Transformacions modals +@unnumberedsubsubsec Transformacions modals +@translationof Modal transformations + +@cindex transformacions modals +@cindex modals, transformacions +@cindex operacions modals + +En una composició musical que està basada en una escala amb +freqüència es transformen els motius de diverses formes. Un motiu +es pot @notation{transportar} perquè comenci en diferents llocs de +l'escala o pot @notation{invertir-se} al voltant d'una nota pivot +de l'escala. També es pot revertir per produir una +@notation{retrogradació}, vegeu @ref{Retrogradació}. + +@warning{Qualsevol nota que no entri a la escala donada, es +deixarà sense transformar.} + +@subsubsubheading Transposició modal + +@cindex transport +@cindex transport modal +@cindex modal, transposició +@cindex transposició modal +@cindex operació de transposició +@funindex \modalTranspose + +Es pot transportar un motiu dins d'una escala donada amb: + +@example +\modalTranspose @var{nota_origen} @var{nota_destí} @var{escala} @var{motiu} +@end example + +Les notes del @var{motiu} es desplacen dins de la @var{escala} el +nombre de graus de l'escala donats per l'interval entre +@var{nota_destí} y @var{nota_origen}: + +@lilypond[verbatim,quote] +diatonicScale = \relative { c' d e f g a b } +motif = \relative { c'8 d e f g a b c } + +\new Staff { + \motif + \modalTranspose c f \diatonicScale \motif + \modalTranspose c b, \diatonicScale \motif +} +@end lilypond + +Es poden especificar escales ascendents de qualsevol longitud i +amb qualssevol intervals: + +@lilypond[verbatim,quote] +pentatonicScale = \relative { ges aes bes des ees } +motif = \relative { ees'8 des ges,4 } + +\new Staff { + \motif + \modalTranspose ges ees' \pentatonicScale \motif +} +@end lilypond + +Quan es fa servir amb una escola cromàtica, @code{\modalTranspose} +té un efecte semblant a @code{\transpose}, però amb la +possibilitat d'especificar els noms de les notes que es vulguin usar: + +@lilypond[verbatim,quote] +chromaticScale = \relative { c' cis d dis e f fis g gis a ais b } +motif = \relative { c'8 d e f g a b c } + +\new Staff { + \motif + \transpose c f \motif + \modalTranspose c f \chromaticScale \motif +} +@end lilypond + +@subsubsubheading Inversió modal + +@cindex modal, inversió +@cindex inversió modal +@cindex operació d'inversió nmodal +@funindex \modalInversion + +Es pot invertir un motiu dins d'una escala donada al voltant d'una +nota pivot donada i transportada al mateix temps en una única +operaćió, amb: + +@example +\modalInversion @var{nota-pivote} @var{nota-destino} @var{escala} @var{motivo} +@end example + +Les notes del @var{motiu} col·loquen al mateix nombre de graus de +distància de l'escala a partir de la @var{nota_pivot} dins de +l'@var{escala}, però en la direcció oposada, i el resultat es +desplaça després dins de l'@var{escala} el nombre de grados de +l'escala donats per l'interval entre la @var{nota_destí} i la +@var{nota_pivot}. + +Així doncs, per invertir senzillament al voltant d'una nota de +l'escala, utilitzeu el mateix valor per a @var{nota_pivot} i +@var{nota_destí}: + +@lilypond[verbatim,quote] +octatonicScale = \relative { ees' f fis gis a b c d } +motif = \relative { c'8. ees16 fis8. a16 b8. gis16 f8. d16 } + +\new Staff { + \motif + \modalInversion fis' fis' \octatonicScale \motif +} +@end lilypond + +Per invertir al voltant d'una nota pivot entre dues notes de +l'escala, invertiu al voltant d'una de les notes i després +transporteu en un grau de l'escala. les dues notes especificades +es poden interpretar com que fan una forquilla entre elles a la +nota pivot: + +@lilypond[verbatim,quote] +scale = \relative { c' g' } +motive = \relative { c' c g' c, } + +\new Staff { + \motive + \modalInversion c' g' \scale \motive +} +@end lilypond + +L'operació combinada d'inversió i retrogradació produeix la +inversió retrògrada: + +@lilypond[verbatim,quote] +octatonicScale = \relative { ees' f fis gis a b c d } +motif = \relative { c'8. ees16 fis8. a16 b8. gis16 f8. d16 } + +\new Staff { + \motif + \retrograde \modalInversion c' c' \octatonicScale \motif +} +@end lilypond + +@seealso +Referència de la notació: +@ref{Inversió}, +@ref{Retrogradació}, +@ref{Transposició}. + + +@node Impressió de les altures +@subsection Impressió de les altures +@translationof Displaying pitches + +Aquesta secció tracta de com alterar la presentació de l'altura de +les notes. + +@menu +* Clau:: +* Armadura de la tonalitat:: +* Claudàtors d'octava:: +* Transposició dels instruments:: +* Alteracions accidentals automàtiques:: +* Tessitura:: +@end menu + +@node Clau +@unnumberedsubsubsec Clau +@translationof Clef + +@cindex Sol, clau de +@cindex Do, clau de +@cindex Fa, clau de +@cindex violí, clau de +@cindex alto, clau de +@cindex tenor, clau de +@cindex baix, clau de +@cindex francesa, clau +@cindex soprano, clau de +@cindex mezzosoprano, clau de +@cindex baríton, clau de +@cindex contrabaix, clau de +@cindex clau +@cindex antigues, claus +@cindex clau antiga +@cindex clau de Sol +@cindex clau de Do +@cindex clau de Fa +@cindex clau de violí +@cindex clau de alto +@cindex clau de tenor +@cindex clau de baix +@cindex clau francesa +@cindex clau de soprano +@cindex clau de mezzosoprano +@cindex clau de baríton +@cindex clau de contrabaix + +@funindex \clef + +Sense cap ordre explícita, la clau predeterminada al LilyPond és +la clau @qq{treble} (o clau de @emph{Sol}). + +@lilypond[verbatim,quote,fragment,ragged-right] +c'2 c' +@end lilypond + +Tanmateix, es pot canviar la clau usant l'ordre +@code{\clef} i el nom de la clau corresponent. Als exemples +següents es mostra la posició del @emph{Do central} en diferents claus. + +@lilypond[verbatim,quote,fragment] +\clef treble +c'2 c' +\clef alto +c'2 c' +\clef tenor +c'2 c' +\clef bass +c'2 c' +@end lilypond + +Per veure el repertori complet dels possibles noms per a les +claus, consulteu @rusernamed{Clef styles,Estils de clau}. + +Les claus especials, com les utilitzades a la música +@emph{antiga}, es descriuen a +@rusernamed{Mensural clefs,Claus de la música mensural} i a +@rusernamed{Gregorian clefs,Claus del cant gregorià}. La música +que requereix claus de tabulatura s'estudia a +@rusernamed{Default tablatures,Tabulatures predeterminades} i a +@rusernamed{Costum tablatures,Tabulatures personalizadas}. + +@cindex Claus de guia +@cindex Claus amb notes guia + +Per fer servir claus a les notes guia, vegeu les ordres +@code{\cueClef} i @code{\cueDuringWithClef} a +@rusernamed{Formatting cue notes,Formatació de les notes guia} + +@cindex transpositores, claus +@cindex clau transpositora +@cindex octava, transposició +@cindex transposició, de octava, opcional +@cindex octava, transposició, opcional +@cindex coral, clau de tenor +@cindex tenor, clau de, coral + +En afegir @code{_8} o @code{^8} al nom de la clau, la clau es +transposa una octava cap avall o cap amunt, respectivament, i +@code{_15} i @code{^15} la transposa dos octaves. Si cal +es poden usar altres nombres enters. L'argument +@var{nome_de_clau} s'ha de envoltar entre cometes si conté +caràcters no alfabètics: + +@lilypond[verbatim,quote,fragment] +\clef treble +c'2 c' +\clef "treble_8" +c'2 c' +\clef "bass^15" +c'2 c' +\clef "alto_2" +c'2 c' +\clef "G_8" +c'2 c' +\clef "F^5" +c'2 c' +@end lilypond + +Es pot obtenir una indicació d'octava opcional envoltant +l'argument numèric entre parèntesi o claudàtors rectes: + +@lilypond[verbatim,quote,fragment] +\clef "treble_(8)" +c'2 c' +\clef "bass^[15]" +c'2 c' +@end lilypond + +Les altures s'imprimeixen com si l'argument numèric no tingués els +parèntesis o claudàtors. + +De forma predeterminada, un canvi de clau que es produeix en un +salt de línia provoca que el símbo de clau nou s'imprimeixi al +final de la línia anterior, com una clau @emph{de cortesia}, així +com al principi del següent. Aquesta clau @emph{de cortesia} es +pot suprimir. + +@lilypond[verbatim,quote,fragment] +\clef treble { c'2 c' } \break +\clef bass { c'2 c' } \break +\clef alto + \set Staff.explicitClefVisibility = #end-of-line-invisible + { c'2 c' } \break + \unset Staff.explicitClefVisibility +\clef bass { c'2 c' } \break +@end lilypond + +De forma predeterminada, una clau que s'ha imprès prèviament no es +torna a imprimir si es fa servir un altre cop la mateixa ordre +@code{\clef}, i s'ignora. La instrucció @code{\set +Staff.forceClef = ##t} modifica aquest comportament. + +@lilypond[verbatim,quote,fragment] + \clef treble + c'1 + \clef treble + c'1 + \set Staff.forceClef = ##t + c'1 + \clef treble + c'1 +@end lilypond + +Quan hi ha un canvi de clau manual, el glif de la clau modificada +és més petit del normal. Es pot sobreescriure aquest comportament. + +@lilypond[verbatim,quote,fragment] + \clef "treble" + c'1 + \clef "bass" + c'1 + \clef "treble" + c'1 + \override Staff.Clef.full-size-change = ##t + \clef "bass" + c'1 + \clef "treble" + c'1 + \revert Staff.Clef.full-size-change + \clef "bass" + c'1 + \clef "treble" + c'1 +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{tweaking-clef-properties.ly} + +@seealso +Referencia de la notación: +@rusernamed{Mensural clefs,Claus de la música mensural}, +@rusernamed{Gregorian clefs,Claus del cant gregorià}, +@rusernamed{Default tablatures,Tabulatures predeterminades} +@rusernamed{Costum tablatures,Tabulatures personalizadas}. +@rusernamed{Formatting cue notes,Formatació de les notes guia}. + +Fitxers instal·lats: +@file{scm/parser-clef.scm}. + +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament intern: +@rinternals{Clef_engraver}, +@rinternals{Clef}, +@rinternals{ClefModifier}, +@rinternals{clef-interface}. + +@knownissues +Els números d'octava adjunts a les claus es tracten com grobs +diferents. Així doncs, qualsevol @code{\override} +(sobreescriptura) efectuada a l'objecte @var{Clef} s'haurà +d'aplicar també al grob @var{ClefModifier} com un @code{\override} +diferent. + +@lilypond[fragment,quote,verbatim] +\new Staff \with { + \override Clef.color = #blue + \override ClefModifier.color = #red +} + +\clef "treble_8" c'4 +@end lilypond + + +@node Armadura de la tonalitat +@unnumberedsubsubsec Armadura de la tonalitat +@translationof Key signature + +@cindex Armadura de la tonalitat + +@funindex \key + +@c duplicated in Key signature and Accidentals +@warning{Les alteracions accidentals i les armadures són una causa +freqüent de confusió per al nous usuaris. Al LilyPond, el noms de +les notes són el codi d'entrada en brut; l'armadura i la clau +determinen de quina forma es presenta aquest codi en brut. Una +nota sense alteració com@tie{}@code{c} significa @q{Do natural}, +sense que l'afectin l'armadura o la clau. Per veure més +informació, consulteu @rlearning{Altures y armadures}.} + +L'armadura indica la tonalitat en la qual es toca una peça. Està +denotada per un conjunt d'alteracions (bemolls o sostinguts) al +començament del pentagrama. L'establiment o modificació de +l'armadura es fa amb l'ordre @code{\key}: + +@example +\key @var{nota} @var{modo} +@end example + +@funindex \major +@funindex \minor +@funindex \ionian +@funindex \locrian +@funindex \aeolian +@funindex \mixolydian +@funindex \lydian +@funindex \phrygian +@funindex \dorian + +@cindex modes eclesiásticos +@cindex modes +@cindex major, mode +@cindex menor, mode +@cindex eoni, mode +@cindex locri, mode +@cindex eoli, mode +@cindex mixolidi, mode +@cindex lidi, mode +@cindex frigi, mode +@cindex dòric, mode + +@noindent +Aquí, @code{@var{mode}} ha de ser @code{\major} o @code{\minor} +per obtenir la tonalitat @code{@var{nota}} major o noms estàndard +de mode (també coneguts com @notation{modes eclesiàstics}): +@code{\ionian} (jònic), @code{\dorian} (dòric), +@code{\phrygian} (frigi), @code{\lydian} (lidi), +@code{\mixolydian} (mixolidi), @code{\aeolian} (eoli) i +@code{\locrian} (locri). + +@lilypond[verbatim,quote,fragment] +\relative { + \key g \major + fis''1 + f + fis +} +@end lilypond + +Es poden definir modes addicionals, escrivint una llista amb +l'alteració que porta cada nota de l'escala quan el mode comença +amb Do. + +@lilypond[verbatim,quote] +freygish = #`((0 . ,NATURAL) (1 . ,FLAT) (2 . ,NATURAL) + (3 . ,NATURAL) (4 . ,NATURAL) (5 . ,FLAT) (6 . ,FLAT)) + +\relative { + \key c \freygish c'4 des e f + \bar "||" \key d \freygish d es fis g +} +@end lilypond + +Les alteracions de l'armadura de la tonalitat es poden imprimir en +una octava diferent que en les seves posicions tradicionals, o en +més d'una octava, usat les propietats @code{flat-positions} i +@code{sharp-positions} de @code{KeySignature}. Les entrades en +aquestes propietats especifiquen el rang de posicions de +pentagrama en el qual s'imprimiran les alteracions, les +alteracions es col·loquen dins de l'octava que acaba en aquesta +posició del pentagrama. + +@lilypond[verbatim, quote,fragment] +\override Staff.KeySignature.flat-positions = #'((-5 . 5)) +\override Staff.KeyCancellation.flat-positions = #'((-5 . 5)) +\clef bass \key es \major es g bes d' +\clef treble \bar "||" \key es \major es' g' bes' d'' + +\override Staff.KeySignature.sharp-positions = #'(2) +\bar "||" \key b \major b' fis' b'2 +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{non-traditional-key-signatures.ly} + + +@seealso +Glossari musical: +@rglos{church mode}, +@rglos{scordatura}. + +Manual de aprenentatge: +@rlearning{Altures i armadures}. + +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament interno: +@rinternals{KeyChangeEvent}, +@rinternals{Key_engraver}, +@rinternals{Key_performer}, +@rinternals{KeyCancellation}, +@rinternals{KeySignature}, +@rinternals{key-signature-interface}. + + +@node Claudàtors d'octava +@unnumberedsubsubsec Claudàtors d'octava +@translationof Ottava brackets + +@cindex ottava +@cindex 15ma +@cindex 8va +@cindex octava + +@funindex set-octavation +@funindex \ottava + +Els @notation{claudàtors d'Ottava} introdueixen un transport +addicional d'una octava per al pentagrama. + +@lilypond[verbatim,quote] +\relative a' { + a2 b + \ottava #-2 + a2 b + \ottava #-1 + a2 b + \ottava #0 + a2 b + \ottava #1 + a2 b + \ottava #2 + a2 b +} +@end lilypond + +@snippets + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{ottava-text.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{adding-an-ottava-marking-to-a-single-voice.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{modifying-the-ottava-spanner-slope.ly} + +@seealso +Glossari musical: +@rglos{octavation}. + +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament interno: +@rinternals{Ottava_spanner_engraver}, +@rinternals{OttavaBracket}, +@rinternals{ottava-bracket-interface}. + + +@node Transposició dels instruments +@unnumberedsubsubsec Transposició dels instruments +@translationof Instrument transpositions + +@cindex transposició de MIDI +@cindex transposició instrumental +@cindex transpositor, instrument +@cindex MIDI +@cindex MIDI, transposició + +@funindex \transposition + +En gravar partitures on participen instruments transpositors, +certes partes es poden gravar en un to diferent del +@notation{to de concert}. En aquests casos s'ha d'especificar la +tonalitat del @notation{instrumento transpositor}; si no es fa +així, la sortida MIDI i les notes guia a altres parts produiran +altures incorrectes. Per veure més informació sobre parts citades +com a guia, consulteu @rusernamed{Quoting other voices,Cites d'altres veus}. + +@example +\transposition @var{pitch} +@end example + +El to usat per a @code{\transposition} s'ha de correspondre amb el +so real que s'escolta quan l'instrument transpositor interpreta un +Do central @code{c'} escrit al pentagrama. Aquesta nota s'escriu +en altura absoluta, per tant un instrument que produeix un so real +un to més agut que la música impresa (un instrument en Re) ha d'usar +@code{\transposition d'}. L'ordre @code{\transposition} s'ha +d'usar @emph{solament} si les notes @emph{no} s'escriuran en +afinació de concert. + +A continuació es poden veure algunes notes per a violí i per a +clarinet en Si bemoll, on les parts s'han introduït usant les +notes i l'armadura tal i com apareixen a la partitura del +director. El que toquen els dos instruments està sonant a l'uníson. + +@lilypond[verbatim,quote] +\new GrandStaff << + \new Staff = "violin" { + \relative c'' { + \set Staff.instrumentName = #"Vln" + \set Staff.midiInstrument = #"violin" + % no estrictament necessari, però un bon recordatori + \transposition c' + + \key c \major + g4( c8) r c r c4 + } + } + \new Staff = "clarinet" { + \relative c'' { + \set Staff.instrumentName = \markup { Cl (B\flat) } + \set Staff.midiInstrument = #"clarinet" + \transposition bes + + \key d \major + a4( d8) r d r d4 + } + } +>> +@end lilypond + +L'ordre @code{\transposition} es pot canviar durant la peça. Per +exemple, un clarinetista pot canviar del clarinet en La al +clarinet en Si bemoll. + +@lilypond[verbatim,quote] +flute = \relative c'' { + \key f \major + \cueDuring #"clarinet" #DOWN { + R1 _\markup\tiny "clarinet" + c4 f e d + R1 _\markup\tiny "clarinet" + } +} +clarinet = \relative c'' { + \key aes \major + \transposition a + aes4 bes c des + R1^\markup { muta in B\flat } + \key g \major + \transposition bes + d2 g, +} +\addQuote "clarinet" \clarinet +<< + \new Staff \with { instrumentName = #"Flute" } + \flute + \new Staff \with { instrumentName = #"Cl (A)" } + \clarinet +>> +@end lilypond + +@seealso +Glossari musical: +@rglos{concert pitch}, +@rglos{transposing instrument}. + +Referència de la notació: +@rusernamed{Quoting other voices,Cites d'altres veus}, +@ref{Transposició}. + +Fragments de codi: +@rlsr{Pitches}. + + +@node Alteracions accidentals automàtiques +@unnumberedsubsubsec Alteracions accidentals automàtiques +@translationof Automatic accidentals + +@cindex automàtiques, alteracions +@cindex alteracions automàtiques +@cindex alteracions accidentals +@cindex alteracions, estil de las +@cindex predeterminat, estil de las alteracions +@cindex alteracions, estilo predeterminat de les + +@funindex \accidentalStyle +@funindex voice +@funindex default + +Hi ha moltes convencions diferents sobre la forma de gravar +les alteracions. El LilyPond proporciona una funció per +especificar quin estil d'alteracions usar. Aquesta funció +s'invoca de la manera següent: + +@example +\new Staff << + \accidentalStyle voice + @{ @dots{} @} +>> +@end example + +L'estil d'alteracions s'aplica al @code{Staff} en curs de forma +predeterminada (amb l'excepció dels estils @code{piano} i +@code{piano-cautionary}, que s'expliquen més +endavant). Opcionalment, la funció pot agafar un segon argument +que determina en quin àmbit s'ha de canviar l'estil. Per exemple, +per usar el mateix estil en tots els pentagrames del +@code{StaffGroup} en curs, useu + +@example +\accidentalStyle StaffGroup.voice +@end example + +Estan contemplats els següents estils d'alteració. Per donar una +mostra de cada u dels estils, utilitzem l'exemple següent: + +@lilypond[verbatim,quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle default + \musicA + } + \context Staff = "down" { + \accidentalStyle default + \musicB + } + >> +} +@end lilypond + +Observeu que les últimes línies d'aquest exemple es poden +substituir per les següents, sempre i quan vulguem usar el mateix +estil als dos pentagrames. + +@example +\new PianoStaff @{ + << + \context Staff = "up" @{ + %%% canvieu la línia següent com desitgeu: + \accidentalStyle Score.default + \musicA + @} + \context Staff = "down" @{ + \musicB + @} + >> +@} +@end example + +@c don't use verbatim in this table. +@table @code +@item default (predeterminado) + +@cindex alteracions, estil predeterminat + +@funindex default + +Es el comportament de gravat predeterminat per a composició. +Correspon a la pràctica comuna del segle XVIII: les alteracions +accidentals es recorden fins al final del compàs en el qual +apareixen i sols en la mateixa octava. Així, a l'exemple següent, +no s'imprimeixen becaires abans del Si natural al segon compàs ni +a l'últim Do: + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle default + \musicA + } + \context Staff = "down" { + \accidentalStyle default + \musicB + } + >> +} +@end lilypond + +@item voice (veu) + +@cindex alteració, estil de veu de +@cindex veu, estil d'alteracions +@cindex alteracions estil modern +@cindex modern, estil de alteracions +@cindex alteracions, estil, modern-precaució +@cindex modern-precaució, estil d'alteracions + +@funindex voice + +El comportament normal és recordar les alteracions accidentals al +nivell de @code{Staff}. En aquest estil, tanmateix, es graven les +alteracions individualment per a cada veu. A part d'això la regla +és semblant a @code{default}. + +Com a resultat, les alteracions d'una veu no es cancel·len a les +altres veus, el que amb freqüència porta a un resultat no +desitjat: a l'exemple següent és difícil determinar si el segon La +s'ha de tocar natural o sostingut. Per tant, l'opció @code{voice} +s'ha d'usar sols si les veus es llegiran individualment per músics +diferents. Si el pentagrama s'utilitzarà per part d'un sols músic +(per exemple un director, o a una partitura de piano), aleshores +s'han d'usar en el seu lloc els estils @code{modern} o +@code{modern-cautionary}. + + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle voice + \musicA + } + \context Staff = "down" { + \accidentalStyle voice + \musicB + } + >> +} +@end lilypond + +@item modern + +@cindex alteracions, estil modern +@cindex modern, alteracions d'estil + +@funindex modern + +Aquesta regla correspon a la pràctica comuna del segle XX. Omet +alguns becaires addicionals, que tradicionalment s'imprimien +precedint a un sostingut que segueix a un doble sostingut, o a un +bemoll que segueix a un doble bemoll. La regla @code{modern} +imprimeix les mateix alteracions que l'estil @code{default}, amb +dos addicions que serveixen per evitar la ambigüitat: després +d'alteracions temporals s'imprimeixen indicacions de cancel·lació +també al compàs següent (per a notes a la mateixa octava) i, al +mateix compàs, per a notes a octaves diferents. D'aquí els +becaires abans del Si natural i del Do al segon compàs del +pentagrama superior: + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle modern + \musicA + } + \context Staff = "down" { + \accidentalStyle modern + \musicB + } + >> +} +@end lilypond + +@item modern-cautionary (modern de precaució) + +@cindex alteracions, estil modern de precaució +@cindex modern, alteracions d'estil +@cindex modern de precaució, alteracions d'estil + +@funindex modern-cautionary + +Aquesta regla és semblant a @code{modern}, però les alteracions +@q{afegides} se imprimeixen como alteracions de precaució (entre +parèntesis). També es poden imprimir en una mida diferent +sobreescrivint la propietat @code{font-size} de l'objecte +@code{AccidentalCautionary}. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle modern-cautionary + \musicA + } + \context Staff = "down" { + \accidentalStyle modern-cautionary + \musicB + } + >> +} +@end lilypond + +@item modern-voice (modern, per a veus) + +@cindex alteracions, en diverses veus +@cindex alteracions modernes +@cindex modern, alteracions d'estil +@cindex veus, alteracions en diverses +@cindex alteració, estil modern de + +@funindex modern-voice + +Aquesta regla s'usa perquè puguin llegir les alteracions a +diverses veus, tant els músics que toquen una veu com els musics +que toquen totes les veus. S'imprimeixen les alteracions per a +cada veu, però @emph{es cancel·len} entre veus dins del mateix +@code{Staff}. Per tant, el La a l'últim compàs es cancel·la +perquè la cancel·lació anterior estava a una veu diferent, i el Re +al pentagrama inferior es cancel·la a causa de l'alteració a una +altra veu al compàs previ: + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle modern-voice + \musicA + } + \context Staff = "down" { + \accidentalStyle modern-voice + \musicB + } + >> +} +@end lilypond + +@item modern-voice-cautionary (modern, veu, de precaució) + +@cindex alteració, estil de veu de precaució modern +@cindex alteració de veu de precaució modern, estil de +@cindex alteració, modern de precaució, veu, estil de +@funindex modern-voice-cautionary + +Aquesta regla és la mateixa que @code{modern-voice}, però amb les +alteracions afegides (les que l'estilo @code{voice} no imprimeix) +composades com de precaució. Fins i tot malgrat que totes les +alteracions impreses per l'estil @code{default} @emph{són} +impreses amb aquesta regla, algunes d'elles es graven com de +precaució. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle modern-voice-cautionary + \musicA + } + \context Staff = "down" { + \accidentalStyle modern-voice-cautionary + \musicB + } + >> +} +@end lilypond + +@item piano + +@cindex piano, alteracions de +@cindex alteracions de piano +@cindex piano, estil de alteracions de + +@funindex piano + +Aquesta regla reflexa la pràctica del segle XX per a la notació de +piano. El seu comportament és molt semblan a l'estil +@code{modern}, però aquí les alteracions també es cancel·len entre +diferents pentagrames del mateix grup @code{GrandStaff} o @code{PianoStaff}, +d'aquí totes les cancel·lacions de les últimes notes. + +Aquest estil d'alteració s'aplica de manera predeterminada al grup +@code{GrandStaff} o @code{PianoStaff} en curs. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle piano + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + +@item piano-cautionary (piano, de precaución) + +@cindex alteracions, piano de precaució, estilo de +@cindex alteracions, piano de precaució +@cindex precaució, estilo de alteracions, piano +@cindex precaució, alteracions de piano de +@cindex piano de precaució, estilo de alteracions +@cindex piano de precaució, alteracions + +@funindex piano-cautionary + +Igual que @code{\accidentalStyle piano} però amb les alteracions +afegides composades com de precaució. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle piano-cautionary + \musicA + } + \context Staff = "down" { + \musicB + } + >> +} +@end lilypond + +@item neo-modern + +@cindex neo-modern, estilo de alteracions +@cindex alteracions, estilo de, neo-modern + +@funindex neo-modern + +Aquesta regla reprodueix una pràctica comuna a la música +contemporània: les alteracions accidentals s'imprimeixen com a +@code{modern}, però es tornen a imprimir si apareix la mateixa +nota una altra vegada al mateix compàs (excepte si la nota es +repeteix immediatament). + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle neo-modern + \musicA + } + \context Staff = "down" { + \accidentalStyle neo-modern + \musicB + } + >> +} +@end lilypond + +@item neo-modern-cautionary + +@cindex neo-modern de precaució, estilo de alteracions +@cindex alteracions, estilo, neo-moderno de precaució + +@funindex neo-modern-cautionary + +Aquesta regla és sembla a @code{neo-modern}, però les alteracions +@q{addicionals} s'imprimeixen com alteracions de precaució (amb +parèntesis). També es poden imprimir a una mida diferent +sobreescrivint la propietat @code{font-size} de l'objecte +@code{AccidentalCautionary}. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle neo-modern-cautionary + \musicA + } + \context Staff = "down" { + \accidentalStyle neo-modern-cautionary + \musicB + } + >> +} +@end lilypond + +@item neo-modern-voice + +@cindex neo-modern-voice, estil d'alteració +@cindex alteracions, estil, neo-modern de veu + +@funindex neo-modern-voice + +Aquesta regla s'usa per alteracions accidentals sobre diverses +veus que s'han de llegir per part de músics que toquen una veu, +així com per músics que toquen totes les veus. Les alteracions +s'imprimeixen per a cada veu com amb @code{neo-modern}, però es +cancel·len per a altres veus que estan al mateix pentagrama +@code{Staff}. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle neo-modern-voice + \musicA + } + \context Staff = "down" { + \accidentalStyle neo-modern-voice + \musicB + } + >> +} +@end lilypond + +@item neo-modern-voice-cautionary + +@cindex neo-modern-voice-cautionary, estil de alteracions +@cindex alteracions, estil, neo-modern-voice-cautionary + +@funindex neo-modern-voice-cautionary + +Aquesta regla és semblant a @code{neo-modern-voice}, però les +alteracions addicionals s'imprimeixen com alteracions de +precaució. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle neo-modern-voice-cautionary + \musicA + } + \context Staff = "down" { + \accidentalStyle neo-modern-voice-cautionary + \musicB + } + >> +} +@end lilypond + +@item dodecaphonic + +@cindex dodecafònic, estil de alteracions +@cindex alteracions, estil, dodecafònic + +@funindex dodecaphonic + +Aquesta regla reflexa una pràctica introduïda pels compositors de +principis del segle XX, en un intent d'abolir la jerarquia +entre notes naturals i alterades. Amb aquest estil, @emph{todas} +les notes porten alteració, fins i tot becaires. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle dodecaphonic + \musicA + } + \context Staff = "down" { + \accidentalStyle dodecaphonic + \musicB + } + >> +} +@end lilypond + +@item dodecaphonic-no-repeat + +@cindex estil accidental dodecafònic +@cindex estil dodecafònic, neo-modern + +@funindex dodecaphonic-no-repeat + +Com amb l'estil d'alteracions dodecafònic @emph{totes} les notes +porten una alteració de forma predeterminada, però les alteracions +se suprimeixen quan hi ha notes repetides immediatament al mateix pentagrama. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle dodecaphonic-no-repeat + \musicA + } + \context Staff = "down" { + \accidentalStyle dodecaphonic-no-repeat + \musicB + } + >> +} +@end lilypond + + +@item dodecaphonic-first + +@cindex estil accidental dodecafònic +@cindex estil dodecafònic, neo-modern + +@funindex dodecaphonic-first + +Semblant a l'estil d'alteracions dodecafònic, @emph{totes} les +notes porten una alteració, però sols la primera vegada que es +troben al compàs. Les alteracions es recorden sols per a l'octava +actual però a través de les veus. + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle dodecaphonic-first + \musicA + } + \context Staff = "down" { + \accidentalStyle dodecaphonic-first + \musicB + } + >> +} +@end lilypond + + +@item teaching (ensenyament) + +@cindex teaching (enseñanza), estilo de alteraciones +@cindex alteracions, estil teaching (ensenyament) + +@funindex teaching + +Aquesta regla està pensada per a estudiants, i fa més senzill +crear automàticament fulls d'escales amb alteracions de +precaució. Les alteracions s'imprimeixen com a l'estil +@code{modern}, però s'afegeixen alteracions de precaució per a +totes les notes sostingudes o bemolls especificats per l'armadura, +excepte si la nota es repeteix immediatament. + +@lilypond[quote,staffsize=18] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \key fis \minor + \accidentalStyle teaching + \musicA + } + \context Staff = "down" { + \key fis \minor + \accidentalStyle teaching + \musicB + } + >> +} +@end lilypond + +@item no-reset (sense restabliment) + +@cindex alteracions sense restabliment, estil de +@cindex sense restabliment, estil d'alteracions + +@funindex no-reset + +És el mateix que @code{default} però amb alteracions que duren +@q{per sempre} i no sols dins del mateix compàs: + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle no-reset + \musicA + } + \context Staff = "down" { + \accidentalStyle no-reset + \musicB + } + >> +} +@end lilypond + +@item forget (oblit) + +@cindex oblit, estil de alteracions +@cindex alteració, estil de, oblit + +@funindex forget + +És l'oposat a @code{sense restabliment}: Les alteracions no es +recorden en absolut: d'aquí que totes les alteracions es gravin en +relació a l'armadura de la tonalitat, sense que es vegin afectades +pel que hi ha abans. + + +@lilypond[quote] +musicA = { + << + \relative { + cis''8 fis, bes4 8 f bis4 | + cis2. 4 | + } + \\ + \relative { + ais'2 cis, | + fis8 b a4 cis2 | + } + >> +} + +musicB = { + \clef bass + \new Voice { + \voiceTwo \relative { + 8[ + \change Staff = up + cis' cis + \change Staff = down + ] + \showStaffSwitch + \change Staff = up + dis'4 | + \change Staff = down + 4 gis 2 | + } + } +} + +\new PianoStaff { + << + \context Staff = "up" { + \accidentalStyle forget + \musicA + } + \context Staff = "down" { + \accidentalStyle forget + \musicB + } + >> +} +@end lilypond +@end table + +@seealso +Fragments de codi: +@rlsr{Pitches}. + +Referècia de funcionament interno: +@rinternals{Accidental}, +@rinternals{Accidental_engraver}, +@rinternals{GrandStaff}, +@rinternals{PianoStaff}, +@rinternals{Staff}, +@rinternals{AccidentalSuggestion}, +@rinternals{AccidentalPlacement}, +@rinternals{accidental-suggestion-interface}. + +@cindex alteracions i notes simultànies +@cindex simultànies, notes i alteracions +@cindex alteracions en acordes +@cindex acordes, alteracions dins de + +@knownissues +Les notes simultànies no es tenen en compte per a la determinació +automàtica de les alteracions accidentals; sols es consideren les +notes anteriors i l'armadura de la tonalitat. Pot ser necessari +forçar les alteracions accidentals amb with@tie{}@code{!} +o@tie{}@code{?} quan la mateixa nota, amb al mateix nom, aparegui +simultàniament amb diferents alteracions, com a @samp{}. + +La cancel·lació de precaució d'alteracions es fa mirant el compàs +previ. Malgrat això, al bloc @code{\alternative} que segueix a +una secció de repetició de primera i segona vegada @code{\repeat +volta N}, s'esperaria que la cancel·lació es calculés utilitzant +el compàs previ @emph{que s'ha tocat}, no el compàs previ +@emph{que s'ha imprès}. A l'exemple següent al Do natural de la +casella de segona vegada no li cal becaire: + +@lilypond[quote] +{ + \accidentalStyle modern + \time 2/4 + \repeat volta 2 { + c'2 + } + \alternative { + cis' + c' + } +} +@end lilypond + +Es pot usar la següent solució del problema: definir una funció +que canviï localment l'estil d'alteracions a @code{forget}: + +@lilypond[verbatim,quote] +forget = #(define-music-function (music) (ly:music?) #{ + \accidentalStyle forget + #music + \accidentalStyle modern +#}) +{ + \accidentalStyle modern + \time 2/4 + \repeat volta 2 { + c'2 + } + \alternative { + cis' + \forget c' + } +} +@end lilypond + +@node Tessitura +@unnumberedsubsubsec Tessitura +@translationof Ambitus + +@cindex ambitus +@cindex rang de altures +@cindex tessitura + +El terme @emph{ambitus} o àmbit denota el rang de notes que abasta +una veu donada a una part musical. També pot denotar el marge de +notes que és capaç de tocar un determinat instrument musical. Els +àmbits s'imprimeixen a les parts vocals de tal manera que els +intèrprets puguin determinar amb facilitat si compleixen amb les +seves pròpies possibilitats. + +Els àmbits es presenten al començament de la peça junt a la clau +inicial. El rang s'especifica gràficament mitjançant dos caps de +nota que representen a les notes inferior i superior. Sols +s'imprimeixen alteracions si no formen part de l'armadura de la +tonalitat. + +@lilypond[verbatim,quote] +\layout { + \context { + \Voice + \consists "Ambitus_engraver" + } +} + +\relative { + aes' c e2 + cis,1 +} +@end lilypond + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{adding-ambitus-per-voice.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{ambitus-with-multiple-voices.ly} + +@lilypondfile[verbatim,quote,texidoc,doctitle] +{changing-the-ambitus-gap.ly} + +@seealso +Glossri musical: +@rglos{ambitus}. + +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament interno: +@rinternals{Ambitus_engraver}, +@rinternals{Voice}, +@rinternals{Staff}, +@rinternals{Ambitus}, +@rinternals{AmbitusAccidental}, +@rinternals{AmbitusLine}, +@rinternals{AmbitusNoteHead}, +@rinternals{ambitus-interface}. + +@knownissues +No s'efectua un tractament de les possibles col·lisions en cas de +diverses indicacions d'àmbit simultànies a veus diferents. + +@node Cap de les notes +@subsection Cap de les notes +@translationof Note heads + +Aquesta secció proposa formes d'alterar els caps de les figures. + +@menu +* Caps de nota especials:: +* Caps de notes de Notació Fàcil:: +* Caps de notes amb formes diverses:: +* Improvisació:: +@end menu + +@node Caps de nota especials +@unnumberedsubsubsec Caps de nota especials +@translationof Special note heads + +@cindex figura, cap de la +@cindex nota, cap especial de +@cindex nota, cap de, en aspes +@cindex nota, cap de, en rombe +@cindex nota, cap de, en parlato +@cindex nota, cap de, harmònics +@cindex nota, cap de, guitarra +@cindex especials, caps de figura +@cindex aspes, caps de nota +@cindex rombe, caps de nota +@cindex parlato, caps de nota +@cindex harmònics, caps de nota +@cindex guitarra, caps de nota +@cindex nota, cap de, estils +@cindex estils de cap de nota + +@funindex cross + +Es pot modificar l'aparença del cap de les notes: + +@lilypond[verbatim,quote] +\relative c'' { + c4 b + \override NoteHead.style = #'cross + c4 b + \revert NoteHead.style + a b + \override NoteHead.style = #'harmonic + a b + \revert NoteHead.style + c4 d e f +} +@end lilypond + +Per veure totes els estils de caps de les notes, consulteu +@rusernamed{Note head styles,Estils de caps de nota}. + +L'estil @code{cross} (aspes) es fa servir per representar una +àmplia varietat d'intencions musicals. Les següent ordres +genèriques predefinides modifiquen la forma del cap de les figures +tant al context del pentagrama normal com al de tabulatura, i es +poden fer servir per representar qualsevol significat musical: + +@lilypond[verbatim,quote] +\relative { + c''4 b + \xNotesOn + a b c4 b + \xNotesOff + c4 d +} +@end lilypond + +La forma de funció musical d'aquesta ordre predefinida es pot usar +dins i fora dels acords per generar caps de nota en aspa, tant al +context de pentagrama normal com al de tabulatura: + +@lilypond[verbatim,quote] +\relative { + c''4 b + \xNote { e f } + c b < g \xNote c f > b +} +@end lilypond + +Como sinònims de @code{\xNote}, @code{\xNotesOn} i +@code{\xNotesOff}, se poden usar @code{\deadNote}, +@code{\deadNotesOn} i @code{\deadNotesOff}. El terme +@notation{dead note} (nota morta) s'utilitza habitualment per part +dels guitarristes. + +També hi ha una abreviatura semblant per a les formes en rombe: + +@lilypond[verbatim,quote] +\relative c'' { + 2 4 f\harmonic +} +@end lilypond + +@predefined +@code{\harmonic}, +@code{\xNotesOn}, +@code{\xNotesOff}, +@code{\xNote}. +@endpredefined + +@seealso +Fragments de codi: +@rlsr{Pitches}. + +Referència de la notació: +@rusernamed{Note head styles,Estils de caps de nota}, +@rusernamed{Chorded notes,Notes en acord}, +@rusernamed{Indicating harmonics and dampened notes,Indicació d'harmònics y notes tapades}. + +Referència de funcionament interno: +@rinternals{note-event}, +@rinternals{Note_heads_engraver}, +@rinternals{Ledger_line_engraver}, +@rinternals{NoteHead}, +@rinternals{LedgerLineSpanner}, +@rinternals{note-head-interface}, +@rinternals{ledger-line-spanner-interface}. + + +@node Caps de notes de Notació Fàcil +@unnumberedsubsubsec Caps de notes de Notació Fàcil +@translationof Easy notation note heads + +@cindex Hal Leonard +@cindex principiants, música per a +@cindex fàcil, notació, caps de nota de +@cindex música para principiants +@cindex notes, caps de, estudio +@cindex notes, caps de, notació simplificada +@cindex notes, caps de, para practicar +@cindex simplificada, notació + +@funindex \easyHeadsOn +@funindex \easyHeadsOff + +Les notes amb cap de @q{notació facilitada} tenen el nom de la +nota (en angles) dins del cap. S'usen a la música per a +principiants. Perquè que les lletres siguin llegibles, s'han +d'imprimir en una mida gran de tipus de lletra. Per imprimir amb +un tipus de lletra més gran, vegeu +@rusernamed{Setting the staff size,Establiment de la mida del pentagrama}. + +@lilypond[verbatim,quote] +#(set-global-staff-size 26) +\relative c' { + \easyHeadsOn + c2 e4 f + g1 + \easyHeadsOff + c,1 +} +@end lilypond + +@predefined +@code{\easyHeadsOn}, +@code{\easyHeadsOff}. +@endpredefined + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{numbers-as-easy-note-heads.ly} + +@seealso +Referència de la notació: +@rusernamed{Setting the staff size,Establiment de la mida del pentagrama}. + +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament interno: +@rinternals{note-event}, +@rinternals{Note_heads_engraver}, +@rinternals{NoteHead}, +@rinternals{note-head-interface}. + + +@node Caps de notes amb formes diverses +@unnumberedsubsubsec Caps de notes amb formes diverses +@translationof Shape note heads + +@cindex notes, caps de, con formes +@cindex formes, notes con + +@cindex Aiken, caps de nota amb forma +@cindex arpa sacra, caps de nota amb forma +@cindex Southern Harmony, caps de nota amb forma +@cindex Funk, caps de nota amb forma +@cindex Harmonica Sacra, caps de nota amb forma +@cindex Christian Harmony, caps de nota amb forma +@cindex Walker, caps de nota amb forma + +@cindex notes, caps de, Aiken +@cindex notes, caps de, arpa sacra +@cindex notes, caps de, Southern Harmony +@cindex notes, caps de, Funk +@cindex notes, caps de, Harmonica Sacra +@cindex notes, caps de, Christian Harmony +@cindex notes, caps de, Walker + +@funindex \aikenHeads +@funindex \sacredHarpHeads +@funindex \southernHarmonyHeads +@funindex \funkHeads +@funindex \walkerHeads + +A la notació de caps amb forma, la forma del cap correspon a la +funció harmònica d'una nota dins de l'escala. Aquesta notació es +va fer popular als llibres americans de cançons durant el segle +XIX. Els caps de nota amb formes es poden produir amb els estils +@q{Arpa Sacra}, @q{Southern Harmony}, Funk (Harmonica Sacra), +Walker i Aiken @q{(Christian Harmony)}: + +@lilypond[verbatim,quote] +\relative c'' { + \aikenHeads + c, d e f g2 a b1 c \break + \sacredHarpHeads + c,4 d e f g2 a b1 c \break + \southernHarmonyHeads + c,4 d e f g2 a b1 c \break + \funkHeads + c,4 d e f g2 a b1 c \break + \walkerHeads + c,4 d e f g2 a b1 c \break +} +@end lilypond + +@funindex \key +@funindex \aikenHeadsMinor +@funindex \sacredHarpHeadsMinor +@funindex \southernHarmonyHeadsMinor +@funindex \funkHeadsMinor +@funindex \walkerHeadsMinor + +Les formes es determinen en funció del grau de l'escala, on la +tònica està determinada per l'ordre @code{\key}. Quan s'escriu en +un to menor, la nota de l'escala es pot determinar a partir del +relatiu major: + +@lilypond[verbatim,quote] +\relative c'' { + \key a \minor + \aikenHeads + a b c d e2 f g1 a \break + \aikenHeadsMinor + a,4 b c d e2 f g1 a \break + \sacredHarpHeadsMinor + a,2 b c d \break + \southernHarmonyHeadsMinor + a2 b c d \break + \funkHeadsMinor + a2 b c d \break + \walkerHeadsMinor + a2 b c d \break +} +@end lilypond + +@predefined +@code{\aikenHeads}, +@code{\aikenHeadsMinor}, +@code{\funkHeads}, +@code{\funkHeadsMinor}, +@code{\sacredHarpHeads}, +@code{\sacredHarpHeadsMinor}, +@code{\southernHarmonyHeads}, +@code{\southernHarmonyHeadsMinor}, +@code{\walkerHeads}, +@code{\walkerHeadsMinor}. +@endpredefined + +@snippets +@lilypondfile[verbatim,quote,texidoc,doctitle] +{applying-note-head-styles-depending-on-the-step-of-the-scale.ly} + +Per veure tots els estils de formes de cap de nota, consulteu +@rusernamed{Note head styles,Estils de caps de nota}, + +@seealso +Fragments de codi: +@rlsr{Pitches}. + +Referència de la notació: +@rusernamed{Note head styles,Estils de caps de nota}, + +Referencia de funcionament interno: +@rinternals{note-event}, +@rinternals{Note_heads_engraver}, +@rinternals{NoteHead}, +@rinternals{note-head-interface}. + + +@node Improvisació +@unnumberedsubsubsec Improvisació +@translationof Improvisation + +@cindex improvisació +@cindex barrades, capss de nota +@cindex notes, caps de, improvisació +@cindex notes, caps de, barrades + +@funindex \improvisationOn +@funindex \improvisationOff + +La improvisació es denota a vegades mitjançant caps de nota en +forma de barra inclinada, on l'executant pot escollir qualsevol +nota però amb el ritme especificat. Aquests cap de nota es creen +així: + +@lilypond[verbatim,quote] +\new Voice \with { + \consists "Pitch_squash_engraver" +} \relative { + e''8 e g a a16( bes) a8 g + \improvisationOn + e8 ~ + 2 ~ 8 f4 f8 ~ + 2 + \improvisationOff + a16( bes) a8 g e +} +@end lilypond + +@predefined +@code{\improvisationOn}, +@code{\improvisationOff}. +@endpredefined + +@seealso +Fragments de codi: +@rlsr{Pitches}. + +Referència de funcionament interno: +@rinternals{Pitch_squash_engraver}, +@rinternals{Voice}, +@rinternals{RhythmicStaff}. diff --git a/Documentation/ca/translations.itexi b/Documentation/ca/translations.itexi index e84c9e619b..29701cb600 100644 --- a/Documentation/ca/translations.itexi +++ b/Documentation/ca/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Actualitzat el Sat Jul 2 15:06:05 UTC 2016 +@emph{Actualitzat el Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -57,7 +57,7 @@ parcialment @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Walter Garcia-Fontes @tab @tab @@ -219,6 +219,126 @@ parcialment @end multitable +@multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 + +@headitem +Referència de la notació del GNU LilyPond +@tab Traductors +@tab Revisors +@tab Traduït +@tab Actualitzat +@tab Més inf. +@item +Títols de secció +@* +326 +@tab Walter Garcia-Fontes +@tab +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab pre-GDP +@item +LilyPond --- \TITLE\ +@* +1138 +@tab Walter Garcia-Fontes +@tab +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab pre-GDP +@item +1 Notació musical +@* +91 +@tab Walter Garcia-Fontes +@tab +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab pre-GDP +@item +1.1 Altures +@* +5224 +@tab Walter Garcia-Fontes +@tab +@tab +@ifhtml + +@html +si +@end html +@end ifhtml +@ifnothtml +si +@end ifnothtml +@tab +@ifhtml + +@html +parcialment +@end html +@end ifhtml +@ifnothtml +parcialment +@end ifnothtml +@tab pre-GDP +@end multitable + + @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @headitem @@ -258,7 +378,7 @@ parcialment @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Walter Garcia-Fontes @tab @tab @@ -356,7 +476,7 @@ si @ifhtml @html -parcialment +parcialment @end html @end ifhtml @ifnothtml @@ -395,17 +515,17 @@ si @ifhtml @html -si +N/D @end html @end ifhtml @ifnothtml -si +N/D @end ifnothtml @tab pre-GDP @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Walter Garcia-Fontes @tab @tab diff --git a/Documentation/ca/usage/running.itely b/Documentation/ca/usage/running.itely index 7d4f3b9abe..bcf55d0963 100644 --- a/Documentation/ca/usage/running.itely +++ b/Documentation/ca/usage/running.itely @@ -435,7 +435,7 @@ cada pàgina de sortida. Es recomana instal·lar el tipus de lletra Century Schoolbook, que està inclòs a la instal·lació del LilyPond, per a un renderitzat òptim. Sota l'UNIX, bastarà amb que copieu aquests fitxers de tipus de lletra del directori del -Lilypond (normalment @file{/usr/share/lilypond/VERSION/fonts/otf/}) +LilyPond (normalment @file{/usr/share/lilypond/VERSION/fonts/otf/}) al directori @file{~/.fonts/}. La sortida @code{SVG} hauria de ser compatible amb qualsevol editor o client de SVG. També hi ha una opció @code{svg-woff} (vegeu més avall) per usar els fitxers diff --git a/Documentation/ca/usage/suggestions.itely b/Documentation/ca/usage/suggestions.itely index 0e4dc47cd5..0d77beeaf8 100644 --- a/Documentation/ca/usage/suggestions.itely +++ b/Documentation/ca/usage/suggestions.itely @@ -74,7 +74,7 @@ versió del LilyPond fèieu servir. @item @strong{Incloeu comprovacions}: @rusernamed{Bar and bar number checks,Comprovació de compàs i de número de compàs}, -@rusernamed{Octave checks,Comprovació d'octava}. +@ruser{Comprovació d'octava}. Si incloeu comprovacions de tant en tant, en cas que cometeu un error podreu localitzar-lo molt més ràpidament. Amb quina freqüència és @q{de tant en tant}? Depèn de la complexitat de la diff --git a/Documentation/ca/web.texi b/Documentation/ca/web.texi index e87dc7fb07..e271246048 100644 --- a/Documentation/ca/web.texi +++ b/Documentation/ca/web.texi @@ -56,16 +56,16 @@ Free Documentation License''. @c expected to be found in lilypond/ subdirectory. @dircategory GNU LilyPond: el gravador de música @direntry -* Manual d'aprenentatge del Lilypond:(lilypond-learning). Comenceu per aquí. +* Manual d'aprenentatge del LilyPond:(lilypond-learning). Comenceu per aquí. * Glosari musical: (music-glossary). Per a usuaris de parla no anglesa -* LilyPond: (lilypond-notation). Referència de la notació amb el Lilypond. +* LilyPond: (lilypond-notation). Referència de la notació amb el LilyPond. * Fragments de codi del LilyPond: (lilypond-snippets). Consells, trucs i exemples curts. * Referència de funcionament intern: (lilypond-internals). Definicions pera a la construcció de trucs. * Utilització del prrograma: (lilypond-usage). Instal·lació i execució de les aplicacions * Pàgina web: (lilypond-web). Vista prèvia de la nova pàgina. -* lilypond: (lilypond-usage)Executar el Lilypond. Invocar el programa LilyPond. +* lilypond: (lilypond-usage)Executar el LilyPond. Invocar el programa LilyPond. * abc2ly: (lilypond-usage)Invocació d'abc2ly. Importació d'ABC. -* convert-ly: (lilypond-usage)Actualització de fitxers mitjançant convert-ly. Versions antigues del Lilypond. +* convert-ly: (lilypond-usage)Actualització de fitxers mitjançant convert-ly. Versions antigues del LilyPond. * etf2ly: (lilypond-usage)Invocar etf2ly. Importació del Finale. * lilypond-book: (lilypond-usage)LilyPond-book. Intergrar text i música. * midi2ly: (lilypond-usage)Invocar midi2ly. Importació de MIDI. @@ -119,14 +119,14 @@ Per al LilyPond versió @version{} @divId{quickSummary} @subheading ¿Què és el LilyPond? -El Lilypond és un programa de gravat musical +El LilyPond és un programa de gravat musical (tipografia musical o edició de partitures), consagrat a la producció de partitures de la qualitat més alta possible. Introdueix l'estètica de la música gravada de la forma tradicional a les partitures impreses mijtançant l'ordinador. -Lilypond és programari lliure i forma part del -@uref{http://gnu.org,Projecte GNU}. +LilyPond és programari lliure i forma part del +@uref{http://www.gnu.org/home.ca.html,Projecte GNU}. @divClass{align-right} diff --git a/Documentation/ca/web/community.itexi b/Documentation/ca/web/community.itexi index 8264c97144..c8eba165de 100644 --- a/Documentation/ca/web/community.itexi +++ b/Documentation/ca/web/community.itexi @@ -201,7 +201,7 @@ fòrum d'holandès} @divClass{column-right-top} @subheading Esteu sempre informat -@subsubheading LilyPond Report (l'Informe Lilypond) +@subsubheading LilyPond Report (l'Informe LilyPond) La manera més fàcil d'estar en contacte és llegir el butlletí de la nostra comunitat, l'Informe LilyPond: diff --git a/Documentation/ca/web/introduction.itexi b/Documentation/ca/web/introduction.itexi index 6348f98989..cd7236fc4f 100644 --- a/Documentation/ca/web/introduction.itexi +++ b/Documentation/ca/web/introduction.itexi @@ -33,7 +33,7 @@ les millors tradicions del gravat musical clàssic. @divClass{link-headings} @divClass{column-left-top} -@subheading Què fa el Lilypond +@subheading Què fa el LilyPond @itemize @@ -86,14 +86,14 @@ les millors tradicions del gravat musical clàssic. @c menu. -JM @divClass{hide} @menu -* Possibilitats:: Què pot fer el Lilypond? +* Possibilitats:: Què pot fer el LilyPond? * Exemples:: Vull veure alguna música! * Llibertat:: La llibertat i la GPL. * Rerefons:: Estètica computacional. * Produccions:: Ús del LilyPond a la vida real. -* Ressenyes:: Què diu la gent sobre el Lilypond? +* Ressenyes:: Què diu la gent sobre el LilyPond? * Entrada de text:: Escriviu música com si fos @emph{text}?! -* Entorns millorats:: Altres formes de treballar amb el Lilypond. +* Entorns millorats:: Altres formes de treballar amb el LilyPond. @end menu @divEnd @@ -116,7 +116,7 @@ empleat milers d'hores a desenvolupar un programa de gravat musical que produeix com a resultat música impresa de forma bella. Tots els ajustos d'estil del LilyPond, el disseny dels tipus de lletra i els algoritmes s'han inspirat en la millor -música gravada a mà. La sortida del Lilypond té el mateix aspecte +música gravada a mà. La sortida del LilyPond té el mateix aspecte robust, equilibrat i elegant que les partitures clàssiques millor gravades. Tot això s'explica amb detall a la nostra @ressaynamed{Essay,Monografia}. @@ -163,7 +163,7 @@ amb alguna dificultat manual que no poden teclejar o usar un ratolí d'ordinador, poden usar programari de reconeixement de veu per editar els fitxers del LilyPond. Fins i tot les persones totalment cegues poden usar lectors de pantalla per escriure els fitxers del -Lilypond (una tasca impossible als programes d'edició de +LilyPond (una tasca impossible als programes d'edició de partitures basats en gràfics). @subsubheading Disseny ampliable @@ -207,7 +207,7 @@ que els problemes es resolen amb rapidesa. @subsubheading Editors millorats Diversos desenvolupadors que són a l'hora usuaris actius del -Lilypond han escrit eines orientades específicament a fer més +LilyPond han escrit eines orientades específicament a fer més fàcil i efectiu el procés d'editar fitxers del LilyPond. Per veure alguns exemples, consulteu @ref{Entorns millorats}. @@ -378,7 +378,7 @@ provar el LilyPond, llegiu primer el que tenim a dir-vos sobre la @divClass{column-center-top} @subheading Software lliure -@uref{http://www.gnu.org/, GNU} El LilyPond està escrit i +@uref{http://www.gnu.org/home.ca.html, GNU} El LilyPond està escrit i mantingut per una comunitat d'entusiastes. Està publicat sota la @ref{GPL, Llicència General Pública de GNU} i la @ref{FDL, Llicència de Documentació Lliure de GNU}, donant a tothom la @@ -639,7 +639,7 @@ Montpellier}, a França. El @uref{http://www.mutopiaproject.org/index.html, Projecte Mutopia} inclou més de 1500 partitures de música clàssica per a la seva descàrrega lliure, i és el principal aparador de partitures del -Lilypond. +LilyPond. @c don't make this "Mutopia" a link, since that looks silly. @item @@ -802,7 +802,7 @@ partitures produïdes pel LilyPond son excepcionalment boniques Juliol/agost de 2004 Dave Phillips va escriure un article introductori per a Linux -Journal At the Sounding edge: Lilypond, +Journal At the Sounding edge: LilyPond, @uref{http://www.linuxjournal.com/article/7657, primera} i @uref{http://www.linuxjournal.com/article/7719, segona} part. @@ -820,7 +820,7 @@ Febrer de 2004 El cantant de jazz Gail Selkirk escriu sobre @uref{http://www.songbirdofswing.com/editorial_page/lilypond/, -Submergir-se a l'estany dels nenúfars (Lily Pond)}. +Submergir-se a l'estany dels nenúfars (LilyPond)}. @qq{@dots{} pot fer fulls guia d'acords o parts orquestrals completes, i el resultat pot ser increïble.} @uref{http://www.computermusic.co.uk/, Computer Music Special}, número @@ -950,7 +950,7 @@ bellesa. Això és massa modèstia! (@dots{}) a mesura que el LilyPond millora contínuament i observo com es fan les coses amb el Scheme, tinc cada cop menys frustracions. De totes maneres el que vull dir és: gràcies per -donar-nos el Lilypond, és realment bo.} +donar-nos el LilyPond, és realment bo.} @divEnd @@ -1132,7 +1132,7 @@ directa d'una partitura gràfica. Per veure més informació, consulteu @divClass{column-center-bottom} @subheading I ara què? -Ja està preparat per @ref{Descàrrega, Descarregar el LilyPond}. +Ja teniu la preparació per @ref{Descàrrega, Descarregar el LilyPond}. Encara no esteu convençut? Llegiu quelcom sobre els entorns d'edició a @ref{Entorns millorats}. @@ -1419,9 +1419,9 @@ teclat numèric que produeix notes del LilyPond. @divClass{column-center-bottom} @subheading I ara què? -Ja esteu preparat per a @ref{Descàrrega, Descarregar el LilyPond}. +Ja teniu la preparació per @ref{Descàrrega, Descarregar el LilyPond}. -Encara no esteu convençut? Molts compositors, músics i directors +Encara no us convenç? Molts compositors, músics i directors d'orquestra han après a escriure música en el nostre format d'entrada. Els usuaris amb experiència fins i tot que poden introduir una partitura completa al LilyPond més ràpid que amb un diff --git a/Documentation/ca/web/manuals.itexi b/Documentation/ca/web/manuals.itexi index 43b19032d6..32ef0021b7 100644 --- a/Documentation/ca/web/manuals.itexi +++ b/Documentation/ca/web/manuals.itexi @@ -20,7 +20,7 @@ @divClass{heading-center} @ifclear web_version -@heading Manuals de LilyPond @version +@heading Manuals del LilyPond @version @end ifclear @ifset web_version @heading Manuals del LilyPond @versionStable @@ -133,7 +133,7 @@ Versions estables anteriors i versió actual com un fitxer comprimit. estat del procés de traducció per a lectors no anglòfons. @item -@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository (el magatzem de fragments de codi del Lilypond)}: +@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository (el magatzem de fragments de codi del LilyPond)}: exemples, consells, i trucs creats pels usuaris. @item @@ -291,7 +291,7 @@ Aquest llibre explica totes les instruccions del LilyPond que produeixen notació musical. @warning{La Referència de la Notació suposa que el lector coneix -el material bàsica que apareix al Manual d'Aprenentatge i té +el material bàsic que apareix al Manual d'Aprenentatge i té familiaritat amb els termes musicals anglesos que es presenten al Glossari Musical.} @@ -340,7 +340,7 @@ seva lectura abans d'afrontar projectes grans. @divClass{column-left-top} @subheading Fragments -Aquest manual presenta un conjunt seleccionat de fragmentes de +Aquest manual presenta un conjunt seleccionat de fragments de codi del LilyPond extrets del @uref{http://lsr@/.dsi@/.unimi@/.it,Repositori de fragments de codi del LilyPond} (LSR). Tots els fragments es troben al domini diff --git a/Documentation/ca/web/news-front.itexi b/Documentation/ca/web/news-front.itexi index 8fe5d07c28..0a0869026c 100644 --- a/Documentation/ca/web/news-front.itexi +++ b/Documentation/ca/web/news-front.itexi @@ -30,7 +30,7 @@ l'ús de la versió 2.18. @newsEnd @newsItem -@subsubheading Lilypond 2.18.2 llençat el @emph{23 de març de 2014}! +@subsubheading LilyPond 2.18.2 llençat el @emph{23 de març de 2014}! Estem orgullosos d'anunciar el llançament del GNU LilyPond 2.18.2. El LilyPond és un programa de gravat musical dedicat a la @@ -73,7 +73,7 @@ aportant una contribució a la campanya Indiegogo [5]! @newsItem -@subsubheading Lilypond 2.18.0 llençat el @emph{29 de Desembre de 2013}! +@subsubheading LilyPond 2.18.0 llençat el @emph{29 de Desembre de 2013}! Estem orgullosos d'anunciar el llançament del GNU LilyPond 2.18.0. El LilyPond és un programa de gravat musical dedicat a la @@ -216,7 +216,7 @@ aquesta versió. @newsEnd @newsItem -@subsubheading Lilypond 2.16.0 llençat el @emph{24 d'agost de 2012}! +@subsubheading LilyPond 2.16.0 llençat el @emph{24 d'agost de 2012}! Estem orgullosos d'anunciar el llançament del GNU LilyPond 2.16.1. El LilyPond és un programa de gravat musical, dedicat a diff --git a/Documentation/changes.tely b/Documentation/changes.tely index fb1a77f633..c9315d59da 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -61,6 +61,25 @@ which scares away people. @end ignore +@item +Slurs and phrasing slurs may now be started from individual notes +in a chord. Several simultanous slurs per @code{Voice} need to be +distinguished by @code{spanner-id} setting. + +@item +The music and grob property @code{spanner-id} for distinguishing +simultaneous slurs and phrasing slurs has been changed from a +string to a @q{key}, a non-negative integer or symbol. + +@item +There is a new command @code{\=} for specifying the +@code{spanner-id} for simultaneous slurs and phrasing slurs. +@lilypond[verbatim,quote] +\fixed c' { + 2 +} +@end lilypond + @item Blocks introduced with @code{\header} can be stored in variables and used as arguments to music and scheme functions and as the diff --git a/Documentation/contributor/doc-translation-list.itexi b/Documentation/contributor/doc-translation-list.itexi index ff5ba338c4..1f23d90fae 100644 --- a/Documentation/contributor/doc-translation-list.itexi +++ b/Documentation/contributor/doc-translation-list.itexi @@ -28,11 +28,11 @@ procedures}. 629 web.texi 5815 web/introduction.itexi 1158 web/download.itexi -1139 macros.itexi +1138 macros.itexi 9 po/lilypond-doc.pot (translate to po/@var{MY_LANGUAGE}.po) 0 search-box.ihtml --- lilypond-texi2html.init (section TRANSLATIONS) -8750 total +8749 total -2- Tutorial 1314 web/manuals.itexi @@ -58,8 +58,8 @@ procedures}. -5- Notation reference 326 notation.tely 91 notation/notation.itely -- Musical notation -5169 notation/pitches.itely -6795 notation/rhythms.itely +5224 notation/pitches.itely +6822 notation/rhythms.itely 1798 notation/expressive.itely 1288 notation/repeats.itely 2919 notation/simultaneous.itely @@ -67,22 +67,22 @@ procedures}. 1477 notation/editorial.itely 2754 notation/text.itely 81 notation/specialist.itely -- Specialist notation -4975 notation/vocal.itely -1931 notation/chords.itely +4977 notation/vocal.itely +1979 notation/chords.itely 702 notation/piano.itely 799 notation/percussion.itely 826 notation/guitar.itely 66 notation/strings.itely 242 notation/bagpipes.itely 5516 notation/ancient.itely -12704 notation/input.itely -- Input syntax +12824 notation/input.itely -- Input syntax 2164 notation/non-music.itely -- Non-musical notation 10911 notation/spacing.itely -- Spacing issues -15598 notation/changing-defaults.itely -- Changing defaults +15597 notation/changing-defaults.itely -- Changing defaults 5187 notation/programming-interface.itely -- Interfaces for programmers -3077 notation/notation-appendices.itely -- Notation manual tables +3079 notation/notation-appendices.itely -- Notation manual tables 252 notation/cheatsheet.itely -- Cheat sheet -90202 total +90455 total -6- Rest of Application Usage 4211 usage/lilypond-book.itely -- LilyPond-book diff --git a/Documentation/contributor/doc-work.itexi b/Documentation/contributor/doc-work.itexi index b9f1c7a77e..701e2dcff9 100644 --- a/Documentation/contributor/doc-work.itexi +++ b/Documentation/contributor/doc-work.itexi @@ -942,7 +942,8 @@ by doubling them: (define (foo x) "The @@code@{@bs{}@bs{}foo@} command..." ...) -@end example} +@end example +} @itemize @item diff --git a/Documentation/contributor/programming-work.itexi b/Documentation/contributor/programming-work.itexi index 66a792066c..8dc8d2755b 100644 --- a/Documentation/contributor/programming-work.itexi +++ b/Documentation/contributor/programming-work.itexi @@ -364,43 +364,38 @@ If you like using font-lock, you can also add this to your c++-font-lock-keywords-3 '(("\\b\\(a-zA-Z_?+_\\)\\b" 1 font-lock-variable-name-face) ("\\b\\(A-Z?+a-z_?+\\)\\b" 1 font-lock-type-face)) )) -@end example - +@end example -@subheading Indenting with vim -Although emacs indentation is the GNU standard, acceptable -indentation can usually be accomplished with vim. Some hints for -vim are as follows: +@subsubheading Indenting with vim -A workable .vimrc: +Although emacs indentation is the GNU standard, correct +indentation for C++ files can be achieved by using the settings +recommended in the +@url{https://gcc.gnu.org/wiki/FormattingCodeForGCC, GNU GCC Wiki}. +Save the following in @file{~/.vim/after/ftplugin/cpp.vim}: @example -set cindent -set smartindent -set autoindent -set expandtab -set softtabstop=2 -set shiftwidth=2 -filetype plugin indent on -set incsearch -set ignorecase smartcase -set hlsearch -set confirm -set statusline=%F%m%r%h%w\ %@{&ff@}\ %Y\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ %04l,%04v\ %p%%\ [LEN=%L] -set laststatus=2 -set number -" Remove trailing whitespace on write +setlocal cindent +setlocal cinoptions=>4,n-2,@{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1 +setlocal shiftwidth=2 +setlocal softtabstop=2 +setlocal textwidth=79 +setlocal fo-=ro fo+=cql +" use spaces instead of tabs +setlocal expandtab +" remove trailing whitespace on write autocmd BufWritePre * :%s/\s\+$//e @end example -With this @file{.vimrc}, files can be reindented automatically by +With these settings, files can be reindented automatically by highlighting the lines to be indented in visual mode (use V to -enter visual mode) and pressing @code{=}. +enter visual mode) and pressing @code{=}, or a single line +correctly indented in normal mode by pressing @code{==}. -A @file{scheme.vim} file will help improve the indentation. This -one was suggested by Patrick McCarty. It should be saved in -@file{~/.vim/after/syntax/scheme.vim}. +A @file{scheme.vim} file will help improve the indentation of +Scheme code. This one was suggested by Patrick McCarty. It +should be saved in @file{~/.vim/after/syntax/scheme.vim}. @example " Additional Guile-specific 'forms' @@ -417,24 +412,45 @@ syn keyword schemeSyntax define-safe-public define-music-function syn keyword schemeSyntax def-grace-function " All of the above should influence indenting too -set lw+=define-public,define*-public -set lw+=define*,lambda*,let-keywords* -set lw+=defmacro,defmacro*,define-macro -set lw+=defmacro-public,defmacro*-public -set lw+=use-modules,define-module -set lw+=define-method,define-class -set lw+=define-markup-command,define-markup-list-command -set lw+=define-safe-public,define-music-function -set lw+=def-grace-function +setlocal lw+=define-public,define*-public +setlocal lw+=define*,lambda*,let-keywords* +setlocal lw+=defmacro,defmacro*,define-macro +setlocal lw+=defmacro-public,defmacro*-public +setlocal lw+=use-modules,define-module +setlocal lw+=define-method,define-class +setlocal lw+=define-markup-command,define-markup-list-command +setlocal lw+=define-safe-public,define-music-function +setlocal lw+=def-grace-function " These forms should not influence indenting -set lw-=if -set lw-=set! +setlocal lw-=if +setlocal lw-=set! " Try to highlight all ly: procedures syn match schemeFunc "ly:[^) ]\+" @end example +For documentation work on texinfo files, identify the file +extensions used as texinfo files in your @file{.vim/filetype.vim}: + +@example +if exists("did_load_filetypes") + finish +endif +augroup filetypedetect + au! BufRead,BufNewFile *.itely setfiletype texinfo + au! BufRead,BufNewFile *.itexi setfiletype texinfo + au! BufRead,BufNewFile *.tely setfiletype texinfo +augroup END +@end example + +and add these settings in @file{.vim/after/ftplugin/texinfo.vim}: + +@example +setlocal expandtab +setlocal shiftwidth=2 +setlocal textwidth=66 +@end example @node Naming conventions @subsection Naming Conventions @@ -1222,7 +1238,7 @@ achieve this by configuring with The executable code of LilyPond must be rebuilt from scratch: @example -make -C lily clean && make -C lily +make clean && make @end example @item Create a graphviz-compatible @file{.ly} file @@ -1269,7 +1285,7 @@ than normal. The original configuration can be restored by rerunning rebuild LilyPond with @example -make -C lily clean && make -C lily +make clean && make @end example @@ -1721,8 +1737,8 @@ code would declare acknowledgers for a @code{NoteHead} grob (via the @code{side-position-interface}: @example -@code{DECLARE_ACKNOWLEDGER (note_head)} -@code{DECLARE_ACKNOWLEDGER (side_position)} +DECLARE_ACKNOWLEDGER (note_head) +DECLARE_ACKNOWLEDGER (side_position) @end example The @code{DECLARE_END_ACKNOWLEDGER ()} macro sets up a spanner-specific diff --git a/Documentation/contributor/release-work.itexi b/Documentation/contributor/release-work.itexi index a2e3cb15d5..517b5e3c14 100644 --- a/Documentation/contributor/release-work.itexi +++ b/Documentation/contributor/release-work.itexi @@ -615,8 +615,8 @@ replace @code{2.15.33-1} with the latest build): @uref{http://lilypond.org/downloads/binaries/test-output/lilypond-2.15.33-1.test-output.tar.bz2} @end smallexample -Copy the tarball into @file{gub/regtests/}, and tell the build -system that you have done this: +Copy the tarball into @file{regtests/}, and tell the build system that +you have done this: @example touch regtests/ignore diff --git a/Documentation/contributor/source-code.itexi b/Documentation/contributor/source-code.itexi index 8e07f9fb06..bfebb9a0c8 100644 --- a/Documentation/contributor/source-code.itexi +++ b/Documentation/contributor/source-code.itexi @@ -464,7 +464,7 @@ prepare your upload: @example git fetch git rebase origin/staging dev/cg~0 -gitk HEAD +gitk HEAD @end example @warning{Do not skip the @command{gitk} step; a quick 5-second diff --git a/Documentation/cs/learning/fundamental.itely b/Documentation/cs/learning/fundamental.itely index 4efdc777bc..e112ed471e 100644 --- a/Documentation/cs/learning/fundamental.itely +++ b/Documentation/cs/learning/fundamental.itely @@ -112,7 +112,7 @@ ale tento příklad slouží jako jednoduchý výchozí bod. @cindex score Až dosud jeÅ¡tě žádný z příkladů příkaz @code{\score@{@}} -nepoužil, neboÅ¥ Lilypond takové dodatečné příkazy automaticky +nepoužil, neboÅ¥ LilyPond takové dodatečné příkazy automaticky vkládá v případě potřeby, když má vstupní soubor jednoduchou stavbu. @@ -226,7 +226,7 @@ začátku tohoto oddílu. Pracuje to právě tak dobře. Dvěma dosud neviděnými příkazy jsou @code{\layout @{ @}} a @code{\midi @{@}}. Když se objeví v nějakém -souboru, vede to k tomu, že Lilypond vytvoří tisknutelný soubor PDF +souboru, vede to k tomu, že LilyPond vytvoří tisknutelný soubor PDF popřípadě soubor MIDI. Přesněji jsou popsány v uživatelské příručce - notace -- @ruser{Rozvržení notového zápisu} a @ruser{Vytváření souborů MIDI}. diff --git a/Documentation/cs/learning/tutorial.itely b/Documentation/cs/learning/tutorial.itely index b0de130457..a11e6b6da5 100644 --- a/Documentation/cs/learning/tutorial.itely +++ b/Documentation/cs/learning/tutorial.itely @@ -56,7 +56,7 @@ aby byl vytvořen výstupní soubor. @cindex Malá písmena @qq{Sestavení} je pojem, který se používá pro -přeměnu vstupního souboru pro Lilypond programem LilyPond do +přeměnu vstupního souboru pro LilyPond programem LilyPond do notového výstupu. Výstupními soubory jsou v první řadě soubory PDF (pro prohlížení a tisku), MIDI (pro přehrávání) a PNG (pro používání na internetových stránkách). Vstupními soubory diff --git a/Documentation/cs/learning/tweaks.itely b/Documentation/cs/learning/tweaks.itely index a351690d71..3d30991a8c 100644 --- a/Documentation/cs/learning/tweaks.itely +++ b/Documentation/cs/learning/tweaks.itely @@ -634,9 +634,9 @@ enthält, mit der die Dicke von Legatobögen kontrolliert werden kann. Sie sollten folgendes finden: @example -@code{thickness} (number) - @code{1.2} - Line thickness, generally measured in @code{line-thickness} +thickness (number) + 1.2 + Line thickness, generally measured in line-thickness @end example Das sieht ganz danach aus, als ob damit die Dicke geändert @@ -2055,7 +2055,7 @@ einzelne Noten in einem Akkord ist mit dem lautet: @example -@code{\set fingeringOrientations = #'([up] [left/right] [down])} +\set fingeringOrientations = #'([up] [left/right] [down]) @end example @noindent @@ -3931,11 +3931,11 @@ Alternative versuchen wir, einen Befehl mit @code{\override} und @code{\revert} zu konstruieren. @example -@code{\override Lyrics.LyricText.font-shape = #'italic} -@code{\override Lyrics.LyricText.font-series = #'bold} +\override Lyrics.LyricText.font-shape = #'italic +\override Lyrics.LyricText.font-series = #'bold -@code{\revert Lyrics.LyricText.font-shape} -@code{\revert Lyrics.LyricText.font-series} +\revert Lyrics.LyricText.font-shape +\revert Lyrics.LyricText.font-series @end example Das wäre natürlich noch viel mühsamer, wenn viele Wörter eine diff --git a/Documentation/cs/translations.itexi b/Documentation/cs/translations.itexi index 048eff0bfa..8c12e25c61 100644 --- a/Documentation/cs/translations.itexi +++ b/Documentation/cs/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Naposledy obnoveno Sat Jul 2 15:06:05 UTC 2016 +@emph{Naposledy obnoveno Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -57,7 +57,7 @@ ano @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Pavel Fric @tab @tab @@ -258,7 +258,7 @@ ano @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Pavel Fric @tab @tab diff --git a/Documentation/cs/usage/running.itely b/Documentation/cs/usage/running.itely index a11801f05f..5d7aee756c 100644 --- a/Documentation/cs/usage/running.itely +++ b/Documentation/cs/usage/running.itely @@ -16,7 +16,7 @@ @chapter SpouÅ¡tíme @command{lilypond} @translationof Running lilypond -Dieses Kapitel behandelt die technischen Details, wie Lilypond ausgeführt werden kann. +Dieses Kapitel behandelt die technischen Details, wie LilyPond ausgeführt werden kann. @menu @@ -87,7 +87,7 @@ Standarderweiterung für LilyPond-Dateien benutzt. Um Daten von @code{stdin} einzulesen, benutzen Sie einfach einen Bindestrich (@code{-}) als @var{Dateiname}. -Wenn Lilypond die Datei @file{Dateiname.ly} verarbeitet, werden daraus +Wenn LilyPond die Datei @file{Dateiname.ly} verarbeitet, werden daraus die Dateien @file{Dateiname.ps} und @file{Dateiname.pdf} erzeugt. Es können an @code{lilypond} auch mehrere @file{.ly} Dateien übergeben werden, die dann einzeln und voneinander unabhängig abgearbeitet @@ -99,7 +99,7 @@ Falls @file{Dateiname.ly} mehr als eine @code{\book}-Umgebung enthält, werden die weiteren Stücke in durchnummerierte Dateien der Form @file{Dateiname-1.pdf} ausgegeben. Zusätzlich wird der Wert der Variable @code{output-suffix} zwischen den ursprünglichen Dateinamen -und der Zahl eingefügt. Eine Lilypond-Datei @file{Dateiname.ly} mit dem Inhalt +und der Zahl eingefügt. Eine LilyPond-Datei @file{Dateiname.ly} mit dem Inhalt @example #(define output-suffix "Geige") @@ -437,7 +437,7 @@ Dateien müssen in das Jail-Verzeichnis kopiert werden (mit denselben Pfaden wie im tatsächlichen Wurzel-Dateisystem). Die gesamte LilyPond-Installation (typischerweise @file{/usr/share/lilypond}) sollte kopiert werden. -Falls Probleme auftreten, ist es am einfachsten, Lilypond mittels +Falls Probleme auftreten, ist es am einfachsten, LilyPond mittels @command{strace} zu starten, wodurch Sie relativ leicht feststellen können, welche Dateien im Jail noch fehlen. @@ -478,7 +478,7 @@ Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht @command{lilypond} erkennt und benützt die folgenden proměnné prostředí: @table @code @item LILYPOND_DATADIR -Diese Variable gibt das Verzeichnis an, wo Lilypond seine eigenen Dateien, +Diese Variable gibt das Verzeichnis an, wo LilyPond seine eigenen Dateien, Meldungen und Übersetzungen finden kann. Dieses Verzeichnis sollte Unterverzeichnisse @file{ly/}, @file{ps/}, @file{tex/}, etc. beinhalten. @@ -693,7 +693,7 @@ test.ly:2:19: Fehler: keine gültige Dauer: 5 Diese Stellen sind LilyPonds Vermutung, wo die Warnung oder der Fehler aufgetreten ist, allerdings treten Warnungen und Fehler ja gerade in -unerwarteten Fällen auf. Manchmal kann Lilypond auch eine fehlerhafte +unerwarteten Fällen auf. Manchmal kann LilyPond auch eine fehlerhafte Stelle zwar noch problemlos verarbeiten, ein paar Zeilen später wirkt sich der Fehler aber dann doch noch aus. In solchen Fällen, wo Sie in der angegebenen Zeile keinen Fehler erkennen, sollten Sie auch die Zeilen diff --git a/Documentation/cs/web/community.itexi b/Documentation/cs/web/community.itexi index 062f780c48..cdf319690a 100644 --- a/Documentation/cs/web/community.itexi +++ b/Documentation/cs/web/community.itexi @@ -200,7 +200,7 @@ naÅ¡eho společenství: LilyPond Reportu (v angličtině). @example @uref{http://web.archive.org/web/20110325004849/http://news.lilynet.net} -@end example +@end example @subsubheading PoÅ¡tovní seznam pro nové verze: @code{info-lilypond@@gnu.org} diff --git a/Documentation/cs/web/introduction.itexi b/Documentation/cs/web/introduction.itexi index 7aedbb9b1a..0415c206a4 100644 --- a/Documentation/cs/web/introduction.itexi +++ b/Documentation/cs/web/introduction.itexi @@ -48,7 +48,7 @@ celém souhrnu zkuÅ¡eností a zvyklostech klasické notové sazby. @divEnd @divClass{column-right-top} -@subheading Nasazení Lilypondu +@subheading Nasazení LilyPondu @itemize @@ -124,7 +124,7 @@ Více k tomu v naÅ¡em @ref{Článek,,článku}. Travte méně času tím, že budete dodatečně měnit notovou sazbu: LilyPond upravuje noty správně hned od začátku. -Rozdělení místa vypočítá sám a rovněž spočítá +Rozdělení místa vypočítá sám a rovněž spočítá zalomení řádků a stran, aby vytvořil hustý a pravidelný obraz not. Střety mezi textem písně, notami a akordy jsou vyřeÅ¡eny a vÅ¡echny obloučky jsou automaticky @@ -584,7 +584,7 @@ přímé stažení tak i k dostání na papíře. @uref{http://shadylane.fr/, The Shady Lane Publishing}, @qq{Mikrovydavatelství not}, které si dalo za cíl -podporu nové ekonomie hudby, které stojí hudebníkům a +podporu nové ekonomie hudby, které stojí hudebníkům a milovníkům hudby blíže. @end itemize @@ -661,7 +661,7 @@ Prosinec 2005 Schenker Graphs with GNU LilyPond}. Jedná se o do hloubky jdoucí, ale velmi účelný článek s vyrytými ostrými obrázky LilyPondu. Autor Kris Shaffer poznamenává: -»GNU Lilypond vytváří krásnou grafiku, která se ve vztahu k obchodním nabídkám +»GNU LilyPond vytváří krásnou grafiku, která se ve vztahu k obchodním nabídkám jeví jako druhá volba.« @item @@ -750,7 +750,7 @@ překvapit.} @qq{I když jej [LilyPond] jeÅ¡tě tak dobře neznám, udělal na mě již teď neobyčejný dojem. Použil jsem tento program pro zápis not jednoho moteta od Josquina Despreze - v menzurálním notovém zápisu. Je mimo veÅ¡kerou pochybnost, že LilyPond v + v menzurálním notovém zápisu. Je mimo veÅ¡kerou pochybnost, že LilyPond v rychlosti, v jednoduchosti používání a notové sazbě snadno předčí jiné notační programy.} @divEnd @@ -795,7 +795,7 @@ překvapit.} @subsubheading Chris Snyder, @uref{https://twitter.com/adoromusic, Adoro Music Publishing} @qq{Způsob, jakým jsou noty v LilyPondu zadávány, mi dovoluje -myslet hudebně -- byly doby, kdy jsem se LilyPondu marně +myslet hudebně -- byly doby, kdy jsem se LilyPondu marně pokouÅ¡el vysvětlit, jak se má v notách něco vysázet, jen abych zjistil, že, i kdybych to dokázal udělat přesně tak, jak to chtěl skladatel, noty by přesto byly pro čtení velmi @@ -843,7 +843,7 @@ tím více jej mám rád!} první list s notami, který jsem uviděl, vypadal tak dobře. Popis lže, když jde o krásu LilyPondu -- je v tomto příliÅ¡ skromný! [...] protože LilyPond se pořád zlepÅ¡uje, - a jak se důkladně zabývám tím, jak se věci ve + a jak se důkladně zabývám tím, jak se věci ve Scheme dělají, mám mnohem méně pocitů marnosti. Na každý pád bych chtěl říci: Děkuji vám za to, že LilyPond nabízíte, je skutečně báječný!} @@ -921,7 +921,7 @@ zpětným (obráceným) lomítkem. Předznamenání jsou přidávána pomocí různých koncovek: @code{-is} za notou sází křížek, @code{-es} zato béčko (-- toto jsou české koncovky, -koncovky v jiných jazycích jsou možné také). LilyPond sám rozhodne o tom, kde +koncovky v jiných jazycích jsou možné také). LilyPond sám rozhodne o tom, kde předznamenání umístí. @imageFloat{text-input-2-annotate,png,center} diff --git a/Documentation/cyrillic.itexi b/Documentation/cyrillic.itexi index 4e7569cf40..e38eb99c69 100644 --- a/Documentation/cyrillic.itexi +++ b/Documentation/cyrillic.itexi @@ -387,7 +387,7 @@ \DeclareUnicodeCharacter{2116}{\textnumero} -% Add all Cyrillic character names to \commondummies. +% Add all Cyrillic character names to \definedummies. \gdef\cyrdummies{% \definedummyword\textnumero @@ -570,8 +570,8 @@ \definedummyword\cyrudoubleacute } -\toks0 = \expandafter{\commondummies\cyrdummies} -\xdef\commondummies{\the\toks0} +\toks0 = \expandafter{\definedummies\cyrdummies} +\xdef\definedummies{\the\toks0} % Add all Cyrillic character names to \indexnofonts. diff --git a/Documentation/de/extending/programming-interface.itely b/Documentation/de/extending/programming-interface.itely index c5d0381bf2..ba9c3c348d 100644 --- a/Documentation/de/extending/programming-interface.itely +++ b/Documentation/de/extending/programming-interface.itely @@ -41,7 +41,7 @@ es eine grundlegende Einleitung in LilyPonds Codeabschnitte in LilyPond sehen etwa so aus: @example - #@{ @var{Lilypond code} #@} + #@{ @var{LilyPond code} #@} @end example Sie können überall eingesetzt werden, wo man Scheme-Code schreiben diff --git a/Documentation/de/extending/scheme-tutorial.itely b/Documentation/de/extending/scheme-tutorial.itely index 6213ffdd29..4349d03460 100644 --- a/Documentation/de/extending/scheme-tutorial.itely +++ b/Documentation/de/extending/scheme-tutorial.itely @@ -821,7 +821,7 @@ traLaLa = @{ c'4 d'4 @} wird intern in die Scheme-Definition @example -(define traLaLa @var{Scheme-Wert von `@code{... }'}) +(define traLaLa @var{Scheme-Wert von `... '}) @end example @noindent diff --git a/Documentation/de/learning/tweaks.itely b/Documentation/de/learning/tweaks.itely index 57f5afc41c..bfc04a3253 100644 --- a/Documentation/de/learning/tweaks.itely +++ b/Documentation/de/learning/tweaks.itely @@ -776,9 +776,9 @@ enthält, mit der die Dicke von Legatobögen kontrolliert werden kann. Sie sollten folgendes finden: @example -@code{thickness} (number) - @code{1.2} - Line thickness, generally measured in @code{line-thickness} +thickness (number) + 1.2 + Line thickness, generally measured in line-thickness @end example Das sieht ganz danach aus, als ob damit die Dicke geändert @@ -2259,7 +2259,7 @@ einzelne Noten in einem Akkord ist mit dem lautet: @example -@code{\set fingeringOrientations = #'([up] [left/right] [down])} +\set fingeringOrientations = #'([up] [left/right] [down]) @end example @noindent @@ -4426,11 +4426,11 @@ Alternative versuchen wir, einen Befehl mit @code{\override} und @code{\revert} zu konstruieren. @example -@code{\override Lyrics.LyricText.font-shape = #'italic} -@code{\override Lyrics.LyricText.font-series = #'bold} +\override Lyrics.LyricText.font-shape = #'italic +\override Lyrics.LyricText.font-series = #'bold -@code{\revert Lyrics.LyricText.font-shape} -@code{\revert Lyrics.LyricText.font-series} +\revert Lyrics.LyricText.font-shape +\revert Lyrics.LyricText.font-series @end example Das wäre natürlich noch viel mühsamer, wenn viele Wörter eine diff --git a/Documentation/de/notation/changing-defaults.itely b/Documentation/de/notation/changing-defaults.itely index 205626f318..70950526ff 100644 --- a/Documentation/de/notation/changing-defaults.itely +++ b/Documentation/de/notation/changing-defaults.itely @@ -1279,7 +1279,7 @@ der neue Kontext unter den existierenden Kontexten angelegt. Um ihn aber sollte er folgenderweise erstellt werden: @example -@code{\new Staff \with @{ alignAboveContext = #"Hauptstimme" @} } +\new Staff \with @{ alignAboveContext = #"Hauptstimme" @} @end example Eine ähnliche Situation entsteht, wenn man einen zeitweiligen Gesangstext @@ -2097,7 +2097,7 @@ aktuellen Kontextes. Das kann mit dem @code{\tweak}-Befehl erreicht werden, mit dem man Optimierungen vornehmen kann: @example -\tweak @var{Layout-Objekt} #'@code{grob-eigenschaft} #@code{Wert} +\tweak @var{Layout-Objekt} #'grob-eigenschaft #Wert @end example Die Angabe von @var{Layout-Objekt} ist optional. diff --git a/Documentation/de/notation/input.itely b/Documentation/de/notation/input.itely index e4ed6b1483..7721d3019a 100644 --- a/Documentation/de/notation/input.itely +++ b/Documentation/de/notation/input.itely @@ -1105,9 +1105,9 @@ innerhalb der @code{\paper}-Umgebung hinzuzufügen. Hierzu wird folgende Syntax eingesetzt: @example -@code{Variable} = @code{\markup} @{ +Variable = \markup @{ ... - @code{\on-the-fly} #@var{Prozedur} @var{Beschriftung} + \on-the-fly #@var{Prozedur} @var{Beschriftung} ... @} @end example @@ -1172,9 +1172,9 @@ Verschiedene @code{\on-the-fly}-Bedingungen können mit dem Operator @qq{UND} verknüpft werden, beispielsweise bestimmt @example - @code{\on-the-fly #first-page} - @code{\on-the-fly #last-page} - @code{@{ \markup ... \fromproperty #'header: ... @}} + \on-the-fly #first-page + \on-the-fly #last-page + @{ \markup ... \fromproperty #'header: ... @} @end example @noindent diff --git a/Documentation/de/notation/pitches.itely b/Documentation/de/notation/pitches.itely index 50784f29ac..b4fce56e2d 100644 --- a/Documentation/de/notation/pitches.itely +++ b/Documentation/de/notation/pitches.itely @@ -1253,7 +1253,7 @@ Bs) am Beginn jedes Notensystems. Die Tonart kann geändert werden: @example -@code{\key} @var{Tonhöhe} @var{Modus} +\key @var{Tonhöhe} @var{Modus} @end example @funindex \minor diff --git a/Documentation/de/notation/rhythms.itely b/Documentation/de/notation/rhythms.itely index 53ad92a27e..0e63af4282 100644 --- a/Documentation/de/notation/rhythms.itely +++ b/Documentation/de/notation/rhythms.itely @@ -1752,7 +1752,7 @@ Taktarten aus mehreren Teilen werden mit der Funktion @code{\compoundMeter} erstellt. Die Syntax ist folgende: @example -\compoundMeter #'@code{(Liste aus Listen)} +\compoundMeter #'(Liste aus Listen) @end example Die einfachste Konstruktion ist eine einzige Liste, wobei die letzte diff --git a/Documentation/de/texidocs/snap-pizzicato-bartok-pizzicato.texidoc b/Documentation/de/texidocs/snap-pizzicato-bartok-pizzicato.texidoc index c57267d2cd..8ceb822786 100644 --- a/Documentation/de/texidocs/snap-pizzicato-bartok-pizzicato.texidoc +++ b/Documentation/de/texidocs/snap-pizzicato-bartok-pizzicato.texidoc @@ -6,6 +6,6 @@ Spieler die Saite auf das Griffbrett aufschlagen lässt, sodass zusätzlich zum angeschlagenen Ton ein scharfes, knallendes Geräusch ertönt} (Wikipedia). Es wird dargestellt als kleiner Kreis mit einer vertikalen Linie, die vom Kreiszentrum aus nach oben weist und ein Stück außerhalb des -Kreises endet. Lilypond hat keinen eigenen Glyphen für dieses Symbol; es +Kreises endet. LilyPond hat keinen eigenen Glyphen für dieses Symbol; es ist aber einfach, direkt eine Definition in die Eingabedatei einzufügen. " diff --git a/Documentation/de/translations.itexi b/Documentation/de/translations.itexi index 34f04da14e..11ef2431e6 100644 --- a/Documentation/de/translations.itexi +++ b/Documentation/de/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Zuletzt aktualisiert am Sat Jul 2 15:06:05 UTC 2016 +@emph{Zuletzt aktualisiert am Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -57,7 +57,7 @@ teilweise @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Till Paala @tab @tab @@ -177,7 +177,7 @@ teilweise @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Till Paala @tab @tab @@ -299,7 +299,7 @@ ja @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Till Paala @* Michael Gerdau @@ -516,7 +516,7 @@ teilweise @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Till Paala @tab @tab @@ -570,7 +570,7 @@ ja @item 1.1 Tonhöhen @* -5169 +5224 @tab Till Paala @tab @tab @@ -587,7 +587,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -597,7 +597,7 @@ teilweise @item 1.2 Rhythmus @* -6795 +6822 @tab Till Paala @tab @tab @@ -614,7 +614,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -695,7 +695,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -813,7 +813,7 @@ ja @item 2.1 Notation von Gesang @* -4975 +4977 @tab Till Paala @tab @tab @@ -867,7 +867,7 @@ teilweise @item 2.3 Bundlose Saiteninstrumente @* -303 +279 @tab Till Paala @tab @tab @@ -884,7 +884,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -894,7 +894,7 @@ teilweise @item 2.4 Saiteninstrumente mit Bünden @* -2820 +2821 @tab Till Paala @tab @tab @@ -938,7 +938,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -975,7 +975,7 @@ teilweise @item 2.7 Notation von Akkorden @* -1931 +1979 @tab Till Paala @tab @tab @@ -992,7 +992,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -1046,7 +1046,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -1083,7 +1083,7 @@ teilweise @item 3 Allgemeine Eingabe und Ausgabe @* -12704 +12824 @tab Till Paala @tab @tab @@ -1100,7 +1100,7 @@ teilweise (94 %) @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -1127,7 +1127,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -1137,7 +1137,7 @@ teilweise @item 5 Standardeinstellungen verändern @* -15598 +15597 @tab Till Paala @tab @tab @@ -1164,7 +1164,7 @@ teilweise @item A Notationsübersicht @* -3077 +3079 @tab Till Paala @tab @tab @@ -1181,7 +1181,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -1257,7 +1257,7 @@ teilweise @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Till Paala @tab @tab @@ -1413,7 +1413,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml @@ -1464,7 +1464,7 @@ ja @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Till Paala @* Michael Gerdau @@ -1512,7 +1512,7 @@ ja @ifhtml @html -teilweise +teilweise @end html @end ifhtml @ifnothtml diff --git a/Documentation/de/usage/lilypond-book.itely b/Documentation/de/usage/lilypond-book.itely index 964bfb70dc..5c40607888 100644 --- a/Documentation/de/usage/lilypond-book.itely +++ b/Documentation/de/usage/lilypond-book.itely @@ -1017,7 +1017,7 @@ version, the format @code{texi-html} must be used instead. @item -F @var{Filter} @itemx --filter=@var{Filter} Leitet die Musikfragmente durch das Programm @var{filter} anstatt sie -mit Lilypond zu einer Grafik zu verarbeiten. @option{--filter} und +mit LilyPond zu einer Grafik zu verarbeiten. @option{--filter} und @option{--process} kann nicht gleichzeitig benutzt werden. Beispielaufruf: @example diff --git a/Documentation/de/usage/running.itely b/Documentation/de/usage/running.itely index ff5bdb67be..fb0030b709 100644 --- a/Documentation/de/usage/running.itely +++ b/Documentation/de/usage/running.itely @@ -17,7 +17,7 @@ @chapter @command{lilypond} starten @translationof Running lilypond -Dieses Kapitel behandelt die technischen Details, wie Lilypond ausgeführt werden kann. +Dieses Kapitel behandelt die technischen Details, wie LilyPond ausgeführt werden kann. @menu @@ -89,7 +89,7 @@ Standarderweiterung für LilyPond-Dateien benutzt. Um Daten von @code{stdin} einzulesen, benutzen Sie einfach einen Bindestrich (@code{-}) als @var{Dateiname}. -Wenn Lilypond die Datei @file{Dateiname.ly} verarbeitet, werden daraus +Wenn LilyPond die Datei @file{Dateiname.ly} verarbeitet, werden daraus die Dateien @file{Dateiname.ps} und @file{Dateiname.pdf} erzeugt. Es können an @code{lilypond} auch mehrere @file{.ly} Dateien übergeben werden, die dann einzeln und voneinander unabhängig abgearbeitet @@ -101,7 +101,7 @@ Falls @file{Dateiname.ly} mehr als eine @code{\book}-Umgebung enthält, werden die weiteren Stücke in durchnummerierte Dateien der Form @file{Dateiname-1.pdf} ausgegeben. Zusätzlich wird der Wert der Variable @code{output-suffix} zwischen den ursprünglichen Dateinamen -und der Zahl eingefügt. Eine Lilypond-Datei @file{Dateiname.ly} mit dem Inhalt +und der Zahl eingefügt. Eine LilyPond-Datei @file{Dateiname.ly} mit dem Inhalt @example #(define output-suffix "Geige") @@ -295,7 +295,7 @@ Dateien müssen in das Jail-Verzeichnis kopiert werden (mit denselben Pfaden wie im tatsächlichen Wurzel-Dateisystem). Die gesamte LilyPond-Installation (typischerweise @file{/usr/share/lilypond}) sollte kopiert werden. -Falls Probleme auftreten, ist es am einfachsten, Lilypond mittels +Falls Probleme auftreten, ist es am einfachsten, LilyPond mittels @command{strace} zu starten, wodurch Sie relativ leicht feststellen können, welche Dateien im Jail noch fehlen. @@ -727,7 +727,7 @@ Log-Daten in die Dateien @code{Datei1.log}, @code{Datei2.log} ... schreiben. @item @code{strict-infinity-checking} @tab @code{#f} -@tab Erzwinge einen Programmabsturz wenn @code{Inf} und @code{NaN} +@tab Erzwinge einen Programmabsturz wenn @code{Inf} und @code{NaN} Fließkommaausnahmen gefunden werden. @item @code{strip-output-dir} @@ -772,7 +772,7 @@ wird in die Dateien @code{FILE.stacks} und @code{FILE.graph} ausgegeben. @command{lilypond} erkennt und benützt die folgenden Umgebungsvariablen: @table @code @item LILYPOND_DATADIR -Diese Variable gibt das Verzeichnis an, wo Lilypond seine eigenen Dateien, +Diese Variable gibt das Verzeichnis an, wo LilyPond seine eigenen Dateien, Meldungen und Übersetzungen finden kann. Dieses Verzeichnis sollte Unterverzeichnisse @file{ly/}, @file{ps/}, @file{tex/}, etc. beinhalten. @@ -990,7 +990,7 @@ test.ly:2:19: Fehler: keine gültige Dauer: 5 Diese Stellen sind LilyPonds Vermutung, wo die Warnung oder der Fehler aufgetreten ist, allerdings treten Warnungen und Fehler ja gerade in -unerwarteten Fällen auf. Manchmal kann Lilypond auch eine fehlerhafte +unerwarteten Fällen auf. Manchmal kann LilyPond auch eine fehlerhafte Stelle zwar noch problemlos verarbeiten, ein paar Zeilen später wirkt sich der Fehler aber dann doch noch aus. In solchen Fällen, wo Sie in der angegebenen Zeile keinen Fehler erkennen, sollten Sie auch die Zeilen diff --git a/Documentation/de/web/introduction.itexi b/Documentation/de/web/introduction.itexi index d037998180..fd1c88ed28 100644 --- a/Documentation/de/web/introduction.itexi +++ b/Documentation/de/web/introduction.itexi @@ -56,7 +56,7 @@ der Musik konzentrieren. @divEnd @divClass{column-right-top} -@subheading Lilypond im Einsatz +@subheading LilyPond im Einsatz @itemize @item @@ -395,7 +395,7 @@ Die Farben wurden zur Verdeutlichung hinzugefügt. @subheading Individuelle Ausgabe Ein kurzer Auszug aus Stockhausen's Klavierstück II zeigt die -Fähigkeiten von Lilypond eine individuelle Ausgabe zu erzeugen. +Fähigkeiten von LilyPond eine individuelle Ausgabe zu erzeugen. @exampleImage{Stockhausen_Klavierstueck2} @divEnd @@ -613,7 +613,7 @@ haben, LilyPond auszuprobieren, lesen zuerst über unsere @unnumberedsec Produktionen @translationof Productions -@divClass{column-left-top} +@divClass{column-center-top} @subheading Produktionen die LilyPond verwenden @@ -878,7 +878,7 @@ Artikel unter dem Titel Schenker Graphs with GNU LilyPond}. Es handelt sich um einen tiefgehenden, aber sehr praktischen Artikel mit gestochen scharfen LilyPond-Graphiken. Der Autor Kris Shaffer merkt an: -»GNU Lilypond erstellt schöne Graphik, die kommerzielle Alternativen +»GNU LilyPond erstellt schöne Graphik, die kommerzielle Alternativen als zweite Wahl erscheinen lassen.« @item diff --git a/Documentation/es/learning/tweaks.itely b/Documentation/es/learning/tweaks.itely index 451fb6b598..97465bf0ff 100644 --- a/Documentation/es/learning/tweaks.itely +++ b/Documentation/es/learning/tweaks.itely @@ -750,9 +750,9 @@ estándar. Navegue por ellos buscando una propiedad que pudiera controlar el grosor de las ligaduras, y encontrará @example -@code{thickness} (number) - @code{1.2} - Line thickness, generally measured in @code{line-thickness} +thickness (number) + 1.2 + Line thickness, generally measured in line-thickness @end example Esto promete ser una buena opción para cambiar el grosor. Nos @@ -2209,7 +2209,7 @@ digitaciones mediante la utilización de la instrucción @code{\set fingeringOrientations}. El formato de esta instrucción es: @example -@code{\set fingeringOrientations = #'([up] [left/right] [down])} +\set fingeringOrientations = #'([up] [left/right] [down]) @end example @noindent @@ -4336,11 +4336,11 @@ variables simples. ¿Podríamos, como alternativa, utilizar las instrucciones @code{\override} y @code{\revert}? @example -@code{\override Lyrics.LyricText.font-shape = #'italic} -@code{\override Lyrics.LyricText.font-series = #'bold} +\override Lyrics.LyricText.font-shape = #'italic +\override Lyrics.LyricText.font-series = #'bold -@code{\revert Lyrics.LyricText.font-shape} -@code{\revert Lyrics.LyricText.font-series} +\revert Lyrics.LyricText.font-shape +\revert Lyrics.LyricText.font-series @end example Estas instrucciones también serían extremadamente tediosas de diff --git a/Documentation/es/notation/changing-defaults.itely b/Documentation/es/notation/changing-defaults.itely index a90010a8bb..62aaf8785f 100644 --- a/Documentation/es/notation/changing-defaults.itely +++ b/Documentation/es/notation/changing-defaults.itely @@ -1489,7 +1489,7 @@ del contexto que tenga el nombre @qq{principal}, debería definirse de esta forma: @example -@code{\new Staff \with @{ alignAboveContext = #"principal" @} } +\new Staff \with @{ alignAboveContext = #"principal" @} @end example Se presenta una situación similar cuando se posiciona un contexto @@ -2878,7 +2878,7 @@ predefinidas para especificar la dirección. Todas ellas son de la forma: @example -@code{\xxxUp}, @code{\xxxDown} o @code{\xxxNeutral} +\xxxUp, \xxxDown o \xxxNeutral @end example @noindent @@ -4512,7 +4512,7 @@ instrucción @code{\shape} permite evitar las colisiones. La sintaxis de @code{\shape} es: @example -[-]@code{\shape} @var{desplazamientos} @var{elemento} +[-]\shape @var{desplazamientos} @var{elemento} @end example Esta instrucción recoloca los puntos de control de @var{elemento} @@ -4728,7 +4728,7 @@ objeto de extensión. La sintaxis de @code{\alterBroken} es @example -[-]@code{\alterBroken} @var{propiedad} @var{valores} @var{elemento} +[-]\alterBroken @var{propiedad} @var{valores} @var{elemento} @end example El argumento @var{valores} es una lista de valores, uno por cada @@ -4975,7 +4975,7 @@ debe devolver @code{#t}. @item @code{@var{@dots{}música@dots{}}} @tab código de entrada normal de LilyPond, que utiliza @code{$} (en los -lugares en que sólo se permiten construcciones de Lilypond) o +lugares en que sólo se permiten construcciones de LilyPond) o @code{#} (para usarlo como un valor de Scheme o un argumento de función musical o música dentro de listas de música) para referenciar argumentos (p.ej. @samp{#arg1}). diff --git a/Documentation/es/notation/fretted-strings.itely b/Documentation/es/notation/fretted-strings.itely index 62f92f0fbc..facc1aaedd 100644 --- a/Documentation/es/notation/fretted-strings.itely +++ b/Documentation/es/notation/fretted-strings.itely @@ -1904,7 +1904,7 @@ music = \relative { Otra téctnica de ejecución (utilizada especialmente en la guitarra eléctrica) se llama @notation{tapado de palma}. La cuerda es parcialmente tapada por la palma de la mano que pulsa (de ahí el -nombre). Lilypond contempla la notación de las notas de estilo de +nombre). LilyPond contempla la notación de las notas de estilo de tapado de palma mediante el cambio de la forma de la cabeza de nota a un triángulo. diff --git a/Documentation/es/notation/input.itely b/Documentation/es/notation/input.itely index 8aa61e3041..88e9d7600f 100644 --- a/Documentation/es/notation/input.itely +++ b/Documentation/es/notation/input.itely @@ -247,7 +247,7 @@ archivo como un solo bloque @code{\book}, véase @ref{Estructura del archivo}. Al producir varios archivos a partir de un solo archivo fuente, -Lilypond se asegura de que ninguno de los archivos de salida de +LilyPond se asegura de que ninguno de los archivos de salida de ningún bloque @code{\book} sobreescribe el archivo de salida producido por un @code{\book} anterior del mismo archivo de entrada. @@ -293,11 +293,11 @@ en el archivo fuente @file{eightminiatures.ly}, produce @funindex \bookOutputSuffix @funindex \bookOutputName -Lilypond le ofrece unos mecanismos que le permiten controlar los +LilyPond le ofrece unos mecanismos que le permiten controlar los nombres de archivo que se utilizan por parte de los diversos motores finales al producir los archivos de salida. -En la sección anterior vimos cómo Lilypond evita las +En la sección anterior vimos cómo LilyPond evita las coincidencias de nombres al producir varias salidas a partir de un único archivo fuente de entrada. También podemos especificar nuestros propios sufijos para cada bloque @code{\book}, de manera @@ -1211,9 +1211,9 @@ encabezamiento y pie de página definido dentro del bloque @code{\paper}, usando la sintaxis siguiente: @example -@code{variable} = @code{\markup} @{ +variable = \markup @{ @dots{} - @code{\on-the-fly} \@var{procedimiento} @var{marcado} + \on-the-fly \@var{procedimiento} @var{marcado} @dots{} @} @end example @@ -1280,8 +1280,8 @@ Se pueden combinar varias condiciones de @code{\on-the-fly} con un operador @q{and}, por ejemplo: @example - @code{\on-the-fly \first-page} - @code{\on-the-fly \last-page} + \on-the-fly \first-page + \on-the-fly \last-page @code{@{ \markup @dots{} \fromproperty #'header: @dots{} @}} @end example @@ -1310,9 +1310,9 @@ establece la propiedad @code{title} del bloque @code{header} como título. @example - @code{\header@{} - @code{title = "Sinfonía núm. 1"} - @code{@}} + \header@{ + title = "Sinfonía núm. 1" + @} @end example Si quiere fijar el título de la salida impresa con un texto pero @@ -1321,10 +1321,10 @@ diferente, puede usar @code{pdftitle} como se muestra a continuación. @example - @code{\header@{} - @code{title = "Sinfonía núm. 1"} - @code{pdftitle = "Sinfonía núm. 1 de Beethoven"} - @code{@}} + \header@{ + title = "Sinfonía núm. 1" + pdftitle = "Sinfonía núm. 1 de Beethoven" + @} @end example Todas las variables @code{title}, @code{subject}, @@ -3905,7 +3905,7 @@ lilypond archivo.ly >resultado.txt @end example @funindex \void -Observe que Lilypond no se limita a mostrar la expresión musical, +Observe que LilyPond no se limita a mostrar la expresión musical, sino que también la interpreta (porque @code{\displayLilyMusic} la devuelve además de mostrarla). Simplemente inserte @code{\displayLilyMusic} dentro de diff --git a/Documentation/es/notation/rhythms.itely b/Documentation/es/notation/rhythms.itely index 0851e27f25..4bcf40ae9a 100644 --- a/Documentation/es/notation/rhythms.itely +++ b/Documentation/es/notation/rhythms.itely @@ -1782,7 +1782,7 @@ y @code{Default_bar_line_engraver} al contexto de @code{Staff}. Se crean usando la función @code{\compoundMeter}. La sintaxis es: @example -\compoundMeter #'@code{(lista de listas)} +\compoundMeter #'(lista de listas) @end example La construcción más simple es una lista única, en la que el diff --git a/Documentation/es/translations.itexi b/Documentation/es/translations.itexi index 10b5f40158..399643d980 100644 --- a/Documentation/es/translations.itexi +++ b/Documentation/es/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Actualizado en Sat Jul 2 15:06:05 UTC 2016 +@emph{Actualizado en Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -30,7 +30,7 @@ Registro de cambios de LilyPond @item Títulos de sección @* -2393 +2449 @tab Francisco Vila @tab @tab @@ -57,7 +57,7 @@ sí @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Francisco Vila @tab @tab @@ -123,7 +123,7 @@ sí @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Francisco Vila @tab @tab @@ -243,7 +243,7 @@ sí @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Francisco Vila @tab @tab @@ -363,7 +363,7 @@ sí @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Francisco Vila @tab @tab @@ -564,7 +564,7 @@ sí @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Francisco Vila @tab @tab @@ -618,7 +618,7 @@ sí @item 1.1 Alturas @* -5169 +5224 @tab Francisco Vila @tab @tab @@ -635,17 +635,17 @@ sí @ifhtml @html -sí +parcialmente @end html @end ifhtml @ifnothtml -sí +parcialmente @end ifnothtml @tab pre-GDP @item 1.2 Duraciones @* -6795 +6822 @tab Francisco Vila @tab @tab @@ -662,11 +662,11 @@ sí @ifhtml @html -sí +parcialmente @end html @end ifhtml @ifnothtml -sí +parcialmente @end ifnothtml @tab pre-GDP @item @@ -743,11 +743,11 @@ sí @ifhtml @html -sí +parcialmente @end html @end ifhtml @ifnothtml -sí +parcialmente @end ifnothtml @tab post-GDP @item @@ -861,7 +861,7 @@ sí @item 2.1 Música vocal @* -4975 +4977 @tab Francisco Vila @tab @tab @@ -915,7 +915,7 @@ sí @item 2.3 Instrumentos de cuerda sin trastes @* -303 +279 @tab Francisco Vila @tab @tab @@ -932,17 +932,17 @@ sí @ifhtml @html -sí +parcialmente @end html @end ifhtml @ifnothtml -sí +parcialmente @end ifnothtml @tab pre-GDP @item 2.4 Instrumentos de cuerda con trastes @* -2820 +2821 @tab Francisco Vila @tab @tab @@ -1023,7 +1023,7 @@ sí @item 2.7 Notación de acordes @* -1931 +1979 @tab Francisco Vila @tab @tab @@ -1040,11 +1040,11 @@ sí @ifhtml @html -sí +parcialmente @end html @end ifhtml @ifnothtml -sí +parcialmente @end ifnothtml @tab pre-GDP @item @@ -1131,7 +1131,7 @@ sí @item 3 Entrada y salida generales @* -12704 +12824 @tab Francisco Vila @tab @tab @@ -1148,11 +1148,11 @@ sí @ifhtml @html -sí +parcialmente @end html @end ifhtml @ifnothtml -sí +parcialmente @end ifnothtml @tab pre-GDP @item @@ -1185,7 +1185,7 @@ sí @item 5 Cambiar los valores por omisión @* -15598 +15597 @tab Francisco Vila @tab @tab @@ -1212,7 +1212,7 @@ sí @item A Tablas del manual sobre notación @* -3077 +3079 @tab Francisco Vila @tab @tab @@ -1305,7 +1305,7 @@ sí @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Francisco Vila @tab @tab @@ -1506,7 +1506,7 @@ sí @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Francisco Vila @tab @tab diff --git a/Documentation/es/usage/suggestions.itely b/Documentation/es/usage/suggestions.itely index 89cc34cb28..3024ff3453 100644 --- a/Documentation/es/usage/suggestions.itely +++ b/Documentation/es/usage/suggestions.itely @@ -338,7 +338,7 @@ define las relaciones de dependencia entre los archivos y qué instrucciones necesitamos dar al sistema operativo para producir un archivo a partir de otro. Por ejemplo, el archivo de make detallaría cómo obtener @file{balada.pdf} y @file{balada.midi} a -partir de @file{balada.ly} mediante la ejecución de Lilypond. +partir de @file{balada.ly} mediante la ejecución de LilyPond. Existen ocasiones en las que es buena idea crear un @code{Makefile} para nuestro proyecto, bien sea por nuestra propia diff --git a/Documentation/es/web/introduction.itexi b/Documentation/es/web/introduction.itexi index 8a3d11f105..c75e85971e 100644 --- a/Documentation/es/web/introduction.itexi +++ b/Documentation/es/web/introduction.itexi @@ -967,7 +967,7 @@ Febrero de 2004 El cantante de jazz Gail Selkirk escribe sobre @uref{http://www.songbirdofswing.com/editorial_page/lilypond/, -Sumergirse en el estanque de los nenúfares (Lily Pond)}. +Sumergirse en el estanque de los nenúfares (LilyPond)}. @qq{@dots{} puede hacer hojas guía de acordes o partes orquestales completas, y el resultado puede ser increíble.} @uref{http://www.computermusic.co.uk/, Computer Music Special}, diff --git a/Documentation/es/web/news-front.itexi b/Documentation/es/web/news-front.itexi index ae822ccffb..6db036faff 100644 --- a/Documentation/es/web/news-front.itexi +++ b/Documentation/es/web/news-front.itexi @@ -70,7 +70,7 @@ codificados directamente dentro de la partitura de LilyPond. @newsItem -@subheading Lanzado Lilypond 2.18.0 @emph{29 de diciembre de 2013} +@subheading Lanzado LilyPond 2.18.0 @emph{29 de diciembre de 2013} Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond 2.18.0. LilyPond es un programa de tipografía musical para editar @@ -212,7 +212,7 @@ actualicen a esta versión. @newsEnd @newsItem -@subheading ¡Lanzado Lilypond 2.16.0! @emph{24 de agosto de 2012} +@subheading ¡Lanzado LilyPond 2.16.0! @emph{24 de agosto de 2012} Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond 2.16.0. LilyPond es un programa de tipografía musical para editar partituras, diff --git a/Documentation/es/web/news.itexi b/Documentation/es/web/news.itexi index 60497e625b..61d5b8d891 100644 --- a/Documentation/es/web/news.itexi +++ b/Documentation/es/web/news.itexi @@ -1055,7 +1055,7 @@ lugar. @newsEnd @newsItem -@subheading ¡Lanzado Lilypond 2.16.0! @emph{24 de agosto de 2012} +@subheading ¡Lanzado LilyPond 2.16.0! @emph{24 de agosto de 2012} Nos llena de orgullo anunciar el lanzamiento de GNU LilyPond 2.16.0. LilyPond es un programa de tipografía musical para editar partituras, @@ -4387,7 +4387,7 @@ in-depth but hands-on feature article with crisp LilyPond graphics. @* Author Kris Shaffer remarks -“GNU Lilypond generates beautiful graphics that make commercial +“GNU LilyPond generates beautiful graphics that make commercial alternatives seem second-rate.” This article is now available @uref{http://www.linuxjournal.com/article/8583,on-line}. @newsEnd @@ -4995,10 +4995,10 @@ file and download @ref{Descargas antiguas}! @newsItem @subheading February 26, 2005 -The @uref{http://lsr.di.unimi.it/,Lilypond Snippet -Repository (LSR)} is a searchable database of Lilypond code +The @uref{http://lsr.di.unimi.it/,LilyPond Snippet +Repository (LSR)} is a searchable database of LilyPond code snippets. You can add snippets too, so join the LSR project, and -contribute creative ideas for using Lilypond. +contribute creative ideas for using LilyPond. @newsEnd @@ -5219,7 +5219,7 @@ the @uref{http://git.savannah.gnu.org/cgit/lilypond.git/plain/ChangeLog?id=abfdd @newsItem @subheading October 29, 2004 -2.3.25 is the final release candidate for Lilypond 2.4. +2.3.25 is the final release candidate for LilyPond 2.4. Werner has been overhauling the TeX macros and lilypond-book. In addition, this release contains an important fix for raggedbottom page-layout. diff --git a/Documentation/extending/scheme-tutorial.itely b/Documentation/extending/scheme-tutorial.itely index fd0beaa9e1..5984c4f038 100644 --- a/Documentation/extending/scheme-tutorial.itely +++ b/Documentation/extending/scheme-tutorial.itely @@ -777,17 +777,28 @@ twentyFour = #(* 2 twelve) @end example @noindent -which would result in the number 24 being stored in the -LilyPond (and Scheme) variable @code{twentyFour}. - -The usual way to refer to LilyPond variables is to call them using a -backslash, i.e., @code{\twentyFour} (see @ref{LilyPond Scheme syntax}). -Since this creates a copy of the value for most of LilyPond's internal -types, in particular music expressions, music functions don't usually -create copies of material they change. For this reason, music -expressions given with @code{#} should usually not contain material that -is not either created from scratch or explicitly copied rather than -directly referenced. +which would result in the number @emph{24} being stored in the LilyPond +(and Scheme) variable @code{twentyFour}. + +Scheme allows modifying complex expressions in-place and LilyPond makes +use of this @q{in-place modification} when using music functions. But +when music expressions are stored in variables rather than entered +directly the usual expectation, when passing them to music functions, +would be that the original value is unmodified. So when referencing a +music variable with leading backslash (such as @code{\twentyFour}), +LilyPond creates a copy of that variable's music value for use in the +surrounding music expression rather than using the variable's value +directly. + +Therefore, Scheme music expressions written with the @code{#} syntax +should be used for material that is created @q{from scratch} (or that is +explicitly copied) rather than being used, instead, to directly +reference material. + +@seealso +Extending: +@ref{LilyPond Scheme syntax}. + @node Input variables and Scheme @subsection Input variables and Scheme diff --git a/Documentation/fr/essay/literature.itely b/Documentation/fr/essay/literature.itely index 226120d936..2b2fa98a3b 100644 --- a/Documentation/fr/essay/literature.itely +++ b/Documentation/fr/essay/literature.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 30e2aa8813df8903dc553ae80c82b8461ffbb381 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -18,7 +18,7 @@ @chapter Références bibliographiques @translationof Literature list -Voici des listes de références utilisées dans Lilypond. +Voici des listes de références utilisées dans LilyPond. @menu * Bibliographie succincte:: diff --git a/Documentation/fr/extending/programming-interface.itely b/Documentation/fr/extending/programming-interface.itely index 938212ab92..0aa792c663 100644 --- a/Documentation/fr/extending/programming-interface.itely +++ b/Documentation/fr/extending/programming-interface.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 12a06e5c29a2f58081068ac7663f0d6a6d4bdf95 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -360,7 +360,7 @@ fonction = @noindent de manière similaire aux @ref{Définition de fonctions Scheme, fonctions Scheme}. La plupart du temps, le @var{corps} sera constitué d'un -@ref{Blocs de code LilyPond, bloc de code Lilypond}. +@ref{Blocs de code LilyPond, bloc de code LilyPond}. Les différents types des prédicat sont recensés à l'annexe @ruser{Types de prédicats prédéfinis}. diff --git a/Documentation/fr/learning/templates.itely b/Documentation/fr/learning/templates.itely index 34fa67f93b..6b5ece6bac 100644 --- a/Documentation/fr/learning/templates.itely +++ b/Documentation/fr/learning/templates.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 88a5dbc589b0d0434f8e640467b5ab57d14dc461 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -17,7 +17,7 @@ @translationof Templates Cette annexe du manuel d'initiation propose des patrons de partition -Lilypond, prets à l'emploi. Il vous suffira d'y ajouter quelques notes, +LilyPond, prets à l'emploi. Il vous suffira d'y ajouter quelques notes, de lancer LilyPond, et d'aprécier le résultat. @menu diff --git a/Documentation/fr/learning/tutorial.itely b/Documentation/fr/learning/tutorial.itely index 25bcb5ccc3..b7b9eda347 100644 --- a/Documentation/fr/learning/tutorial.itely +++ b/Documentation/fr/learning/tutorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -592,7 +592,7 @@ opérations de mise à jour automatisée au fil de l'évolution de la syntaxe de LilyPond. Ensuite, cela met en évidence le minimum requis pour pouvoir compiler votre fichier. -Si vous ne le mentionnez pas, Lilypond vous rappellera à l'ordre durant +Si vous ne le mentionnez pas, LilyPond vous rappellera à l'ordre durant la compilation. @item diff --git a/Documentation/fr/learning/tweaks.itely b/Documentation/fr/learning/tweaks.itely index 247928ae7f..6bc8d45b76 100644 --- a/Documentation/fr/learning/tweaks.itely +++ b/Documentation/fr/learning/tweaks.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -270,7 +270,7 @@ mise en forme et l'utilisation de ces commandes, nous nous limiterons à n'employer que quelques propriétés et valeurs simples, facilement compréhensibles. -Lilypond reconnaît comme expression primaire les éléments musicaux tels +LilyPond reconnaît comme expression primaire les éléments musicaux tels que les notes, durées et annotations (les @emph{markups}). D'autres expressions de base comme les nombres, chaînes de caractères et listes sont gérées en « mode Scheme », mode appelé en faisant précéder une @@ -735,9 +735,9 @@ liste des réglages standard ; vous y trouverez la propriété susceptible de contrôler l'épaisseur des traits de liaison. @example -@code{thickness} (nombre) - @code{1.2} - Épaisseur de ligne, généralement mesurée en @code{line-thickness} +thickness (nombre) + 1.2 + Épaisseur de ligne, généralement mesurée en line-thickness @end example Voilà qui semble approprié pour changer l'épaisseur (@emph{thickness} en @@ -2159,7 +2159,7 @@ chacune des notes d'un accord grâce à la commande @code{\set fingeringOrientations}. La syntaxe de cette commande est : @example -@code{\set fingeringOrientations = #'([up] [left/right] [down])} +\set fingeringOrientations = #'([up] [left/right] [down]) @end example @noindent @@ -4265,11 +4265,11 @@ enchâssées dans un @code{\markup} -- ce qui les rend pénibles à saisir @code{\revert} ? @example -@code{\override Lyrics.LyricText.font-shape = #'italic} -@code{\override Lyrics.LyricText.font-series = #'bold} +\override Lyrics.LyricText.font-shape = #'italic +\override Lyrics.LyricText.font-series = #'bold -@code{\revert Lyrics.LyricText.font-shape} -@code{\revert Lyrics.LyricText.font-series} +\revert Lyrics.LyricText.font-shape +\revert Lyrics.LyricText.font-series @end example Là encore, ce serait extrêmement pénible à saisir, surtout s'il y avait diff --git a/Documentation/fr/notation/ancient.itely b/Documentation/fr/notation/ancient.itely index 613c91b881..2e27808c6a 100644 --- a/Documentation/fr/notation/ancient.itely +++ b/Documentation/fr/notation/ancient.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/notation/changing-defaults.itely b/Documentation/fr/notation/changing-defaults.itely index 4140c38822..977c7a4ca2 100644 --- a/Documentation/fr/notation/changing-defaults.itely +++ b/Documentation/fr/notation/changing-defaults.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -1487,7 +1487,7 @@ autres contextes existants. Le repositionner au-dessus du contexte « principal » demande de le définir ainsi : @example -@code{\new Staff \with @{ alignAboveContext = #"principal" @} } +\new Staff \with @{ alignAboveContext = #"principal" @} @end example Il en va de même pour les contextes temporaires de paroles au sein d'un @@ -2399,7 +2399,7 @@ les objets du contexte. C'est là le rôle de l'instruction @code{\tweak}, dont la syntaxe est : @example -\tweak [@var{objet-de-rendu}.]@code{objet-propriété} @code{valeur} +\tweak [@var{objet-de-rendu}.]objet-propriété valeur @end example Mention de l'@var{objet-de-rendu} est optionnel. @@ -2961,7 +2961,7 @@ comportement en matière d'orientation ou positionnement ; elles sont de la forme @example -@code{\xxxUp}, @code{\xxxDown} et @code{\xxxNeutral} +\xxxUp, \xxxDown et \xxxNeutral @end example @noindent @@ -4560,7 +4560,7 @@ l'aide de @code{\shape} permet d'éviter les collisions. L'instruction @code{\shape} obéit à la syntaxe @example -[-]@code{\shape} @var{déplacements} @var{élément} +[-]\shape @var{déplacements} @var{élément} @end example Ceci aura pour effet de repositionner les points de contrôle de @@ -4771,7 +4771,7 @@ s'appliquera à la propriété du bandeau. La commande @code{\alterBroken} répond à la syntaxe : @example -[-]@code{\alterBroken} @var{propriété} @var{valeurs} @var{élément} +[-]\alterBroken @var{propriété} @var{valeurs} @var{élément} @end example L'argument @var{valeurs} est constitué d'une liste de valeurs, une pour diff --git a/Documentation/fr/notation/chords.itely b/Documentation/fr/notation/chords.itely index dc1d009e77..89b7015f1d 100644 --- a/Documentation/fr/notation/chords.itely +++ b/Documentation/fr/notation/chords.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 8cce5dd067a8a2bab508f5abebc3955db8837bbf + Translation of GIT committish: db92af51a444062c8edaef3afa36f57375b8feeb When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -861,8 +861,8 @@ Morceaux choisis : le mode de chiffrage. De plus amples informations quant aux différents modes sont regroupées à la rubrique @ref{Modes de saisie}. -En mode de saisie, un chiffrage est délimité par @code{<} et -@code{>}. La durée est indiquée après le @code{>} : +En mode de saisie, un chiffrage est délimité par @code{<} et @code{>}. +La durée est indiquée après le @code{>} : @lilypond[verbatim,quote,ragged-right] \new FiguredBass { @@ -872,12 +872,16 @@ En mode de saisie, un chiffrage est délimité par @code{<} et } @end lilypond -Une altération -- y compris un bécarre -- peut s'attacher à un -chiffre : +Une altération -- y compris un bécarre -- permet de modifier l'un des +degrés, en adjoignant un @code{+} (dièse), un @code{-} (bémol) ou un +@code{!} (bécarre) au chiffre considéré. Une altération double +s'obtient en doublant le modificateur. Le chiffre est souvent omis +lorsque la tierce est modifiée, ce qui s'obtient en utilisant un +@code{_} en lieu et place du chiffre. @lilypond[verbatim,quote,ragged-right] \figures { - <7! 6+ 4-> <5++> <3--> + <7! 6+ 4-> <5++> <3--> < _+ > < 7 _!> } @end lilypond @@ -898,7 +902,7 @@ une @qq{petite sixte} : } @end lilypond -Vous pouvez insérer un espace ou ajouter des crochets : +Vous pouvez insérer des crochets : @lilypond[verbatim,quote,ragged-right] \figures { diff --git a/Documentation/fr/notation/contemporary.itely b/Documentation/fr/notation/contemporary.itely index 88ecaeccad..2d44ed45d6 100644 --- a/Documentation/fr/notation/contemporary.itely +++ b/Documentation/fr/notation/contemporary.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: ece268fa66e2576c01f33a4a6e1806f44c9f8fa8 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/notation/editorial.itely b/Documentation/fr/notation/editorial.itely index e2af4e0c08..b403636bb1 100644 --- a/Documentation/fr/notation/editorial.itely +++ b/Documentation/fr/notation/editorial.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/notation/expressive.itely b/Documentation/fr/notation/expressive.itely index c951f3499b..bb1ce12cfa 100644 --- a/Documentation/fr/notation/expressive.itely +++ b/Documentation/fr/notation/expressive.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/notation/fretted-strings.itely b/Documentation/fr/notation/fretted-strings.itely index 00255631d3..1fe8301c91 100644 --- a/Documentation/fr/notation/fretted-strings.itely +++ b/Documentation/fr/notation/fretted-strings.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -579,7 +579,7 @@ donnée est calculée automatiquement. Pour ce faire, l'accordage doit LilyPond possède des accordages prédéfinis pour le banjo, la mandoline, la guitare et la guitare basse ainsi que le ukulele et les cordes -d'orchestre. Lilypond calcule automatiquement la transposition +d'orchestre. LilyPond calcule automatiquement la transposition correspondant à ces accordages. L'exemple ci-dessous est pour guitare basse, il sonnera donc une octave en dessous de ce qui est écrit. @@ -688,7 +688,7 @@ de type @emph{pitch}. Les objets @emph{pitch} sont créés par la fonction La fonction @code{\stringTuning} permet de créer de tels objets à partir de la saisie d'un accord. -Lilypond calcule automatiquement le nombre de cordes à représenter dans +LilyPond calcule automatiquement le nombre de cordes à représenter dans la tablature (@code{TabStaff}) ainsi que dans le @code{FretBoard} en comptant le nombre d'éléments définis dans le @code{stringTunings}. diff --git a/Documentation/fr/notation/input.itely b/Documentation/fr/notation/input.itely index 040e7eb79b..38a58ffdf3 100644 --- a/Documentation/fr/notation/input.itely +++ b/Documentation/fr/notation/input.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 4c31c117565b1c7dd78e606fceb7cba354f2859a + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -561,7 +561,7 @@ d'informations. @menu * Création de titres et entête ou pied de page:: * Titrages personnalisés:: -* Création de métadonnées PDF:: +* Création des métadonnées des fichiers de sortie:: * Notes de bas de page:: * Référencement des numéros de page:: * Table des matières:: @@ -1176,9 +1176,9 @@ au texte des entête et pied de page définis dans le bloc @code{\paper}. En voici la syntaxe : @example -@code{variable} = @code{\markup} @{ +variable = \markup @{ @dots{} - @code{\on-the-fly} \@var{procédure} @var{markup} + \on-the-fly \@var{procédure} @var{markup} @dots{} @} @end example @@ -1242,8 +1242,8 @@ Plusieurs conditions @code{\on-the-fly} mentionnées l'une à la suite de l'autre se cumulent. Ainsi, par exemple, @example - @code{\on-the-fly \first-page} - @code{\on-the-fly \last-page} + \on-the-fly \first-page + \on-the-fly \last-page @code{@{ \markup @dots{} \fromproperty #'header: @dots{} @}} @end example @@ -1258,33 +1258,45 @@ fichiers d'initialisation : @file{../ly/titling-init.ly}. -@node Création de métadonnées PDF -@subsection Création de métadonnées PDF -@translationof Creating PDF metadata +@node Création des métadonnées des fichiers de sortie +@subsection Création des métadonnées des fichiers de sortie +@translationof Creating output file metadata @cindex PDF metadata +@cindex MIDI metadata @cindex métadonnées PDF +@cindex métadonnées MIDI En plus de s'imprimer sur la partition, les variables du bloc -@code{\header} permettent de générer les métadonnées PDF (informations -par les lecteurs de PDF en tant que @code{propriétés} du fichier PDF). +@code{\header} permettent de générer les métadonnées des fichiers de +sortie. Dans le cas d'un fichier PDF, ces métadonnées pourront être +affichées par le lecteur en tant que propriétés du document. Quel que +soit le type de fichier de sortie, seules seront analysées les variables +déterminées dans le @code{\header} du bloc définissant le fichier à +générer, ainsi que celles des blocs hiérarchiquement supérieurs. Pour les +fichiers PDF, seules les définitions du @code{\header} en dehors ou au +niveau d'un bloc @code{\book} affecteront les métadonnées des documents +PDF ; pour les fichiers MIDI seront utilisées les définitions jusqu'au +niveau @code{\score}. + Par exemple, affecter « Symphony I » à la propriété @code{title} dans le -bloc @code{\header} donnera aussi ce titre au document PDF. +bloc @code{\header} donnera aussi ce titre au document PDF et à la +séquence MIDI. @example - @code{\header@{} - @code{title = "Symphony I"} - @code{@}} +\header@{ + title = "Symphony I" +@} @end example Lorsque le titre imprimé diffère de celui affiché en tant que propriété du PDF, devra être renseignée la propriété @code{pdftitle}. @example - @code{\header@{} - @code{title = "Symphony I"} - @code{pdftitle = "Symphony I by Beethoven"} - @code{@}} +\header@{ + title = "Symphony I" + pdftitle = "Symphony I by Beethoven" +@} @end example Les variables @code{title}, @code{subject}, @code{keywords}, @@ -1300,6 +1312,10 @@ courantes -- @code{ModDate} peut être écrasé par la variable de @code{\header} @code{moddate} (ou @code{pdfmoddate}) pour un horodatage PDF valide. +La variable @code{title} détermine aussi le nom de la séquence MIDI. +L'utilisation de la variable @code{midititle} permet d'attribuer à la +séquence MIDI un nom différent de celui attribué au fichier imprimable. + @node Notes de bas de page @subsection Notes de bas de page diff --git a/Documentation/fr/notation/notation-appendices.itely b/Documentation/fr/notation/notation-appendices.itely index db37650e2d..c0b513a25a 100644 --- a/Documentation/fr/notation/notation-appendices.itely +++ b/Documentation/fr/notation/notation-appendices.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 9d1f4d4d16abf95cccf6bea9cf98c312e55a3ebf + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/notation/percussion.itely b/Documentation/fr/notation/percussion.itely index 86feeb596d..9ba0160954 100644 --- a/Documentation/fr/notation/percussion.itely +++ b/Documentation/fr/notation/percussion.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 53cff5245f682708a6c77d580f418ece2923c2e4 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/notation/pitches.itely b/Documentation/fr/notation/pitches.itely index 29f3b2ce4e..ed8e133c81 100644 --- a/Documentation/fr/notation/pitches.itely +++ b/Documentation/fr/notation/pitches.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -520,7 +520,7 @@ sont les suivants : et les suffixes d'altération correspondants : @quotation -@multitable {@code{nederlands}} {-@code{s}/-@code{-sharp}} {-@code{ess}/-@code{es}} {-@code{ss}/-@code{x}/-@code{-sharpsharp}} {-@code{essess}/-@code{eses}} +@multitable {@code{nederlands}} {-@code{s}/-@code{-sharp}} {-@code{f}/-@code{flat}} {-@code{ss}/-@code{x}/-@code{-sharpsharp}} {-@code{essess}/-@code{eses}} @headitem Langue @tab dièse @tab bémol @tab double dièse @tab double bémol @item @code{nederlands} @@ -1201,6 +1201,14 @@ la commande @code{\set Staff.forceClef = ##t}. c'1 @end lilypond +@noindent +Pour être plus précis, la commande @code{\clef} n'a pas pour fonction +d'imprimer une clef ; elle détermine ou modifie une propriété attachée +au graveur de clefs (le @code{Clef_engraver}), qui décide de son propre +chef quand doit être affichée une clef dans la portée en cours. La +propriété @code{forceClef} ne vient que forcer la décision de réimprimer +une fois la clef en un point donné. + Le symbole imprimé lors d'un changement de clef est plus petit que la clef initiale. La taille peut toutefois être ajustée. diff --git a/Documentation/fr/notation/rhythms.itely b/Documentation/fr/notation/rhythms.itely index 0703dcc4f0..92f80d150a 100644 --- a/Documentation/fr/notation/rhythms.itely +++ b/Documentation/fr/notation/rhythms.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -1765,7 +1765,7 @@ Une métrique composite se crée à l'aide de la fonction @code{\compoundMeter}, en suivant la syntaxe : @example -\compoundMeter #'@code{(liste de listes)} +\compoundMeter #'(liste de listes) @end example La construction la plus simple est constituée d'une seule liste, dans @@ -2824,7 +2824,7 @@ vous invitons dans ce cadre particulier à plutôt utiliser @code{\divisioMinima}, comme indiqué au paragraphe @ref{Divisions} du chapitre consacré au grégorien. -Lilypond prend en charge la notation kiévienne, qui dispose d'une +LilyPond prend en charge la notation kiévienne, qui dispose d'une barre de mesure spécifique : @lilypond[quote,fragment,verbatim] @@ -3504,11 +3504,21 @@ s'y rattachent. \relative { c''1 \afterGrace d1 { c16[ d] } c1 } @end lilypond -Les petites notes se placent alors aux trois quarts de la durée de la -note réelle. Cette fraction peut être changée en définissant -@code{afterGraceFraction}. Dans l'exemple suivant, vous pouvez observer -la différence entre le comportement par défaut, à 15/16 et enfin à la -moitié de la durée de base. +Les petites notes se placent alors @strong{après} la note réelle. Leur +positionnement est déterminé par une fraction de la durée de la note +principale. Cette fraction, fixée par défaut à + +@example +afterGraceFraction = 3/4 +@end example + +@noindent +peut être changée en début de fichier. Elle peut aussi se définir à la +suite de la commande @code{afterGraceFraction}. + +Dans l'exemple suivant, vous pouvez observer la différence entre le +comportement par défaut, à @code{15/16} et enfin à la moitié de la durée +de base. @lilypond[quote,verbatim] << @@ -3516,19 +3526,17 @@ moitié de la durée de base. c''1 \afterGrace d1 { c16[ d] } c1 } \new Staff \relative { - #(define afterGraceFraction (cons 15 16)) - c''1 \afterGrace d1 { c16[ d] } c1 + c''1 \afterGrace 15/16 d1 { c16[ d] } c1 } \new Staff \relative { - #(define afterGraceFraction (cons 1 2)) - c''1 \afterGrace d1 { c16[ d] } c1 + c''1 \afterGrace 1/2 d1 { c16[ d] } c1 } >> @end lilypond -Des silences invisibles permettent d'ajuster l'espace entre les petites -notes et la note réelle. Nous pourrions positionner ces petites notes à -sept huitièmes de la durée de la note de base : +Les effets d'une commande @code{\afterGrace} peuvent aussi s'obtenir à +l'aide de silences invisibles. Nous pourrions positionner ces petites +notes à sept huitièmes de la durée de la note de base : @lilypond[quote,verbatim] \new Voice \relative { @@ -3787,9 +3795,9 @@ La barre de mesure suivante tombera donc à 9/8 et non à 5/8. @end lilypond @noindent -Comme le montre cet exemple, @code{ly:make-moment n d} construit une -durée de n/d fois une ronde. Par conséquent, @code{ly:make-moment 1 8} -correspond à une croche, et @code{ly:make-moment 7 16} à la durée de +Comme le montre cet exemple, @code{ly:make-moment n/d} construit une +durée de n/d fois une ronde. Par conséquent, @code{ly:make-moment 1/8} +correspond à une croche, et @code{ly:make-moment 7/16} à la durée de sept doubles croches. @seealso diff --git a/Documentation/fr/notation/simultaneous.itely b/Documentation/fr/notation/simultaneous.itely index 73f2742e74..bd89ab955c 100644 --- a/Documentation/fr/notation/simultaneous.itely +++ b/Documentation/fr/notation/simultaneous.itely @@ -1,6 +1,6 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -344,8 +344,8 @@ appliquer. Ceci ne manque pas de faire apparaître un message warning: This voice needs a \voiceXx or \shiftXx setting @emph{en français :} -Avertissement : Cette voix requiert un @code{voiceXx} ou un réglage -@code{\shiftXx} +Avertissement : Cette voix requiert un voiceXx ou un réglage +\shiftXx @end example lors de la compilation. Le déclenchement de cet avertissement peut être diff --git a/Documentation/fr/notation/spacing.itely b/Documentation/fr/notation/spacing.itely index f677b5c2d0..339c9d448e 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: 2034ca4fcbed9253b5a85e9360e47d3fe3ff1d09 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/notation/staff.itely b/Documentation/fr/notation/staff.itely index c23ac659e6..072d696a33 100644 --- a/Documentation/fr/notation/staff.itely +++ b/Documentation/fr/notation/staff.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: a1267e20afa61258ce3031f07d916e0e66ac6582 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/notation/unfretted-strings.itely b/Documentation/fr/notation/unfretted-strings.itely index cc428db791..b9a33224f1 100644 --- a/Documentation/fr/notation/unfretted-strings.itely +++ b/Documentation/fr/notation/unfretted-strings.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: caa4700b4acbc870158d70ee257efaa723c550f0 + Translation of GIT committish: 97f856e8c577fdf301ac2a15b336eae8729e53f7 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -210,11 +210,6 @@ d'ajouter un point aux notes pointées affublées d'un @code{\harmonic}. 2. 4 @end lilypond -@warning{La commande @code{@bs{}harmonic} @strong{doit} être placée -dans une construction de type accord même s'il n'y a qu'une seule note. -On utiliserait plutôt la commande @code{@bs{}harmonicsOn} en pareil -cas.} - @seealso Glossaire musicologique : @rglos{harmonics}. diff --git a/Documentation/fr/notation/vocal.itely b/Documentation/fr/notation/vocal.itely index a06b34051f..3a88b52bcf 100644 --- a/Documentation/fr/notation/vocal.itely +++ b/Documentation/fr/notation/vocal.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: caa4700b4acbc870158d70ee257efaa723c550f0 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -421,7 +421,7 @@ voir @ref{Positionnement vertical des paroles}. @funindex \addlyrics La commande @code{\addlyrics} n'est en fait qu'une manière plus aisée -d'écrire de la musique vocale dans une structure Lilypond plus complexe. +d'écrire de la musique vocale dans une structure LilyPond plus complexe. @example @{ MUSIQUE @} @@ -2379,6 +2379,7 @@ passage polyphonique temporaire, est expliquée à la section @code{\oneVoice}, @code{\voiceOne}, @code{\voiceTwo}. +@endpredefined @seealso Manuel d'initiation : @@ -2475,7 +2476,10 @@ du chœur. @end lilypond @predefined -@code{\dynamicUp}, @code{\dynamicDown}, @code{\dynamicNeutral}. +@code{\dynamicUp}, +@code{\dynamicDown}, +@code{\dynamicNeutral}. +@endpredefined @seealso Manuel de notation : diff --git a/Documentation/fr/texidocs/engravers-one-by-one.texidoc b/Documentation/fr/texidocs/engravers-one-by-one.texidoc index 2e5ae63fbc..c972ed91d3 100644 --- a/Documentation/fr/texidocs/engravers-one-by-one.texidoc +++ b/Documentation/fr/texidocs/engravers-one-by-one.texidoc @@ -1,4 +1,4 @@ -%% Translation of GIT committish: 8eae9a75fb3ec1d0b6633103c8a652608c8fa630 +%% Translation of GIT committish: db92af51a444062c8edaef3afa36f57375b8feeb texidocfr = " Pour appréhender la notation, nous l'avons disséquée en éléments simples : chaque type de symbole est géré par un module différent. diff --git a/Documentation/fr/translations.itexi b/Documentation/fr/translations.itexi index 4a9e124e35..f7fddd4746 100644 --- a/Documentation/fr/translations.itexi +++ b/Documentation/fr/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Dernière mise à jour Sat Jul 2 15:06:05 UTC 2016 +@emph{Dernière mise à jour Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -57,7 +57,7 @@ oui @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Jean-Charles Malahieude @tab @tab @@ -183,7 +183,7 @@ oui @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Jean-Charles Malahieude @tab @tab @@ -307,7 +307,7 @@ oui @item LilyPond --- \TITLE\ @* -1139 +1138 @tab John Mandereau @* Jean-Charles Malahieude @@ -536,7 +536,7 @@ oui @item LilyPond --- \TITLE\ @* -1139 +1138 @tab John Mandereau @* Jean-Charles Malahieude @@ -594,7 +594,7 @@ oui @item 1.1 Hauteurs @* -5169 +5224 @tab Frédéric Chiasson @* Jean-Charles Malahieude @@ -625,7 +625,7 @@ oui @item 1.2 Rythme @* -6795 +6822 @tab Frédéric Chiasson @* Jean-Charles Malahieude @@ -867,7 +867,7 @@ oui @item 2.1 Musique vocale @* -4975 +4977 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -927,7 +927,7 @@ oui @item 2.3 Cordes non frettées @* -303 +279 @tab Valentin Villenave @* Matthieu Jacquot @@ -958,7 +958,7 @@ oui @item 2.4 Instruments à cordes frettées @* -2820 +2821 @tab Matthieu Jacquot @tab Jean-Charles Malahieude @tab @@ -1045,7 +1045,7 @@ oui @item 2.7 Notation des accords @* -1931 +1979 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -1159,7 +1159,7 @@ oui @item 3 Généralités en matière d'entrée et sortie @* -12704 +12824 @tab Jean-Charles Malahieude @* Valentin Villenave @@ -1217,7 +1217,7 @@ oui @item 5 Modification des réglages prédéfinis @* -15598 +15597 @tab Valentin Villenave @* Jean-Charles Malahieude @@ -1246,7 +1246,7 @@ oui @item A Tables du manuel de notation @* -3077 +3079 @tab Frédéric Chiasson @* Jean-Charles Malahieude @@ -1343,7 +1343,7 @@ oui @item LilyPond --- \TITLE\ @* -1139 +1138 @tab John Mandereau @* Jean-Charles Malahieude @@ -1552,7 +1552,7 @@ oui @item LilyPond --- \TITLE\ @* -1139 +1138 @tab John Mandereau @tab @tab diff --git a/Documentation/fr/usage/suggestions.itely b/Documentation/fr/usage/suggestions.itely index 885929d4c7..75f0ee33b5 100644 --- a/Documentation/fr/usage/suggestions.itely +++ b/Documentation/fr/usage/suggestions.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @ignore - Translation of GIT committish: 88a5dbc589b0d0434f8e640467b5ab57d14dc461 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/web/community.itexi b/Documentation/fr/web/community.itexi index 98c8ee1ac9..4ad3c3db92 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: ef9512388b15e1e5e2b3592299ffe489ac43abb4 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' diff --git a/Documentation/fr/web/introduction.itexi b/Documentation/fr/web/introduction.itexi index 8ebffbf836..ceedcaeded 100644 --- a/Documentation/fr/web/introduction.itexi +++ b/Documentation/fr/web/introduction.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: 934175b31d43c95e341b098f12c2e833522a5d45 + Translation of GIT committish: 8c1840ca28a05b3dad8d595e04d03779ba0a286a When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' @@ -1040,10 +1040,10 @@ retouches, que les musiciens ont utilisé.} @qq{Merci et encore merci à l'équipe des développeurs pour leur admirable travail. Je n'ai jamais rien vu qui approche le résultat que -j'obtiens avec Lilypond — je suis absolument convaincu que mes besoins +j'obtiens avec LilyPond — je suis absolument convaincu que mes besoins en terme d'édition musicale seront largement satisfaits par cette superbe application. [@dots{}] une partition de base générée par -Lilypond [@dots{}] a meilleure mine que la plupart des publications +LilyPond [@dots{}] a meilleure mine que la plupart des publications ❝professionnelles❞ auxquelles je l'ai comparée, aussi bien de chez Warner Bros., que même les plus récentes productions des ❝bonnes vieilles maisons❞ [@dots{}]} @@ -1055,7 +1055,7 @@ vieilles maisons❞ [@dots{}]} @divClass{testimonial-item} @subsubheading Chris Cannam, programmeur en chef du projet @uref{http://www.rosegardenmusic.com/, RoseGarden} -@qq{Lilypond est clairement le ténor brillantissime [de la gravure +@qq{LilyPond est clairement le ténor brillantissime [de la gravure musicale de qualité].} @divEnd diff --git a/Documentation/hu/translations.itexi b/Documentation/hu/translations.itexi index f7b908dac8..3a564997d0 100644 --- a/Documentation/hu/translations.itexi +++ b/Documentation/hu/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sat Jul 2 15:06:05 UTC 2016 +@emph{Last updated Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -59,7 +59,7 @@ yes @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Hegyi Tamás @* Harmath Dénes @@ -185,7 +185,7 @@ partially @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Harmath Dénes @tab @tab @@ -312,7 +312,7 @@ no @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -388,7 +388,7 @@ partially @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Harmath Dénes @tab @tab @@ -535,7 +535,7 @@ partially @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Harmath Dénes @tab @tab diff --git a/Documentation/hu/web/community.itexi b/Documentation/hu/web/community.itexi index 73efbec681..5b897bfd44 100644 --- a/Documentation/hu/web/community.itexi +++ b/Documentation/hu/web/community.itexi @@ -848,7 +848,7 @@ PDF 1095k}) @item Erik Sandberg: @emph{A bemeneti nyelv és a formázó szétválasztása a -GNU Lilypondban}. Diplomaterv, Uppsalai Egyetem, Információtechnológiai +GNU LilyPondban}. Diplomaterv, Uppsalai Egyetem, Információtechnológiai Tanszék, 2006. március (@uref{http://lilypond.org/website/pdf/thesis-erik-sandberg.pdf, PDF 750k}) @@ -898,7 +898,7 @@ A Linux Journal közzétesz egy cikket @uref{http://www.linuxjournal.com/article/8364, Schenker-diagramok készítése GNU LilyPonddal} címen. Ez egy gyakorlatias cikk igen szép LilyPond grafikákkal. -A szerző, Kris Shaffer megjegyzi: @qq{A GNU Lilypond gyönyörű kottaképe után a +A szerző, Kris Shaffer megjegyzi: @qq{A GNU LilyPond gyönyörű kottaképe után a kereskedelmi alternatívák másodosztályúnak tűnnek.} A cikk elérhető @uref{http://www.linuxjournal.com/article/8583, online}. diff --git a/Documentation/hu/web/introduction.itexi b/Documentation/hu/web/introduction.itexi index b75a4c9f11..c25ceaf6fa 100644 --- a/Documentation/hu/web/introduction.itexi +++ b/Documentation/hu/web/introduction.itexi @@ -180,7 +180,7 @@ feladatra alkalmas. Gyönyörködj az alábbi példákban, és meríts ihletet b @ignore Here is a passage from Franz Liszt's solo piano transcription of the Overture to Wagner's @emph{Tannhäuser}. The spacing -in this example was all performed by Lilypond's formatting +in this example was all performed by LilyPond's formatting algorithms, without tweaks of any kind. It handles cross-staff beaming gracefully and puts the system brace perfectly around all three staves. @@ -820,7 +820,7 @@ mutatja a kottát és a LilyPond forrást. @ignore Import: LilyPond, MIDI -Export: Lilypond, MIDI, ABC, CSound Score File, PDF +Export: LilyPond, MIDI, ABC, CSound Score File, PDF @end ignore @divEnd diff --git a/Documentation/included/compile.itexi b/Documentation/included/compile.itexi index 76bd48cd2f..b198e40c6e 100644 --- a/Documentation/included/compile.itexi +++ b/Documentation/included/compile.itexi @@ -1461,10 +1461,10 @@ installation directory structure. It can be useful to have both the stable and the development versions -of Lilypond available at once. One way to do this on GNU/Linux is to +of LilyPond available at once. One way to do this on GNU/Linux is to install the stable version using the precompiled binary, and run the development version from the source tree. After running @command{make -all} from the top directory of the Lilypond source files, there will +all} from the top directory of the LilyPond source files, there will be a binary called @code{lilypond} in the @code{out} directory: @example diff --git a/Documentation/it/learning/fundamental.itely b/Documentation/it/learning/fundamental.itely index dd89ae5049..fafe6ac59c 100644 --- a/Documentation/it/learning/fundamental.itely +++ b/Documentation/it/learning/fundamental.itely @@ -1623,7 +1623,7 @@ partire dal nome, o viceversa. @smallspace -Vedremo in seguito come cambiare l'output di Lilypond +Vedremo in seguito come cambiare l'output di LilyPond modificando il comportamento degli incisori. diff --git a/Documentation/it/learning/tweaks.itely b/Documentation/it/learning/tweaks.itely index 9c940c9483..75f481421c 100644 --- a/Documentation/it/learning/tweaks.itely +++ b/Documentation/it/learning/tweaks.itely @@ -707,9 +707,9 @@ standard. Scorrile cercando la proprietà che potrebbe controllare lo spessore delle legature di portamento; dovresti trovare @example -@code{thickness} (number) - @code{1.2} - Line thickness, generally measured in @code{line-thickness} +thickness (number) + 1.2 + Line thickness, generally measured in line-thickness @end example Sembra che sia quel che stiamo cercando. Ci dice che il valore @@ -2110,7 +2110,7 @@ diteggiatura delle singole note di un accordo usando il comando @code{\set fingeringOrientations}. Il formato di questo comando è: @example -@code{\set fingeringOrientations = #'([up] [left/right] [down])} +\set fingeringOrientations = #'([up] [left/right] [down]) @end example @noindent @@ -4169,11 +4169,11 @@ le parole stesse non si possono usare variabili semplici. Come alternativa possiamo usare i comandi @code{\override} e @code{\revert}? @example -@code{\override Lyrics.LyricText.font-shape = #'italic} -@code{\override Lyrics.LyricText.font-series = #'bold} +\override Lyrics.LyricText.font-shape = #'italic +\override Lyrics.LyricText.font-series = #'bold -@code{\revert Lyrics.LyricText.font-shape} -@code{\revert Lyrics.LyricText.font-series} +\revert Lyrics.LyricText.font-shape +\revert Lyrics.LyricText.font-series @end example Anche questi sarebbero molto noiosi da inserire se ci fossero diff --git a/Documentation/it/notation/changing-defaults.itely b/Documentation/it/notation/changing-defaults.itely index 127a381a09..1cd155d37a 100644 --- a/Documentation/it/notation/changing-defaults.itely +++ b/Documentation/it/notation/changing-defaults.itely @@ -1432,7 +1432,7 @@ sotto tutti i contesti esistenti. Per riposizionarlo sopra il contesto chiamato @qq{principale}, dovrebbe essere definito in questo modo: @example -@code{\new Staff \with @{ alignAboveContext = #"principale" @} } +\new Staff \with @{ alignAboveContext = #"principale" @} @end example Una situazione simile si pone quando si posiziona un contesto temporaneo @@ -2555,7 +2555,7 @@ Altrimenti, in molti casi esistono comandi predefiniti per specificare la direzione. Questo hanno la forma @example -@code{\xxxUp}, @code{\xxxDown} o @code{\xxxNeutral} +\xxxUp, \xxxDown o \xxxNeutral @end example @noindent @@ -4081,7 +4081,7 @@ evitare le collisioni. La sintassi di @code{\shape} è @example -[-]@code{\shape} @var{spostamenti} @var{elemento} +[-]\shape @var{spostamenti} @var{elemento} @end example Questo comando riposiziona i punti di controllo di @var{elemento} di quanto @@ -4284,7 +4284,7 @@ proprietà di un estensore. La sintassi di @code{\alterBroken} è: @example -[-]@code{\alterBroken} @var{proprietà} @var{valori} @var{elemento} +[-]\alterBroken @var{proprietà} @var{valori} @var{elemento} @end example L'argomento @var{valori} è una lista di valori, uno per ogni pezzo @@ -4515,7 +4515,7 @@ deve ritornare @code{#t}. @item @code{@var{@dots{}musica@dots{}}} @tab il normale input LilyPond, usando @code{$} (nei punti in cui sono -consentiti solo i costrutti Lilypond) o @code{#} (per usarlo come un valore +consentiti solo i costrutti LilyPond) o @code{#} (per usarlo come un valore Scheme o come argomento di una funzione musicale o come musica all'interno di liste di musica) per riferirsi agli argomenti (es: @samp{#arg1}). @end multitable diff --git a/Documentation/it/notation/input.itely b/Documentation/it/notation/input.itely index abda7a777d..e4664f0ac4 100644 --- a/Documentation/it/notation/input.itely +++ b/Documentation/it/notation/input.itely @@ -237,7 +237,7 @@ Se non è specificato alcun blocco @code{\book} nel file di input, LilyPond tratterà implicitamente l'intero file come un singolo blocco @code{\book}, come è spiegato in @ref{File structure}. -Nel generare molteplici file da un singolo file sorgente, Lilypond +Nel generare molteplici file da un singolo file sorgente, LilyPond controlla che nessuno dei file di output di alcun blocco @code{\book} sovrascriva il file di output prodotto da un blocco @code{\book} precedente dello stesso file di input. @@ -283,10 +283,10 @@ genererà @funindex \bookOutputSuffix @funindex \bookOutputName -Lilypond permette di decidere quali nomi di file debbano essere +LilyPond permette di decidere quali nomi di file debbano essere usati dai vari backend quando questi generano i file di output. -Nella sezione precedente abbiamo visto come Lilypond prevenga i +Nella sezione precedente abbiamo visto come LilyPond prevenga i conflitti di nome quando genera molti file di output da un singolo file sorgente. È possibile anche specificare un proprio suffisso per ogni blocco @code{\book}. Quindi si possono, per esempio, @@ -1150,9 +1150,9 @@ blocco @code{\paper}, solo se certe condizioni sono soddisfatte, tramite la seguente sintassi: @example -@code{variabile} = @code{\markup} @{ +variabile = \markup @{ @dots{} - @code{\on-the-fly} \@var{procedura} @var{testo} + \on-the-fly \@var{procedura} @var{testo} @dots{} @} @end example @@ -1216,8 +1216,8 @@ si utilizzasse l'operatore logico @q{AND} e il testo apparirà solo se tutte le condizioni sono vere. Per esempio, queste due condizioni @example - @code{\on-the-fly \first-page} - @code{\on-the-fly \last-page} + \on-the-fly \first-page + \on-the-fly \last-page @code{@{ \markup @dots{} \fromproperty #'header: @dots{} @}} @end example @@ -1244,9 +1244,9 @@ la proprietà @code{title} del blocco @code{header} @q{Sinfonia I} si assegnerà questo titolo anche al documento PDF. @example - @code{\header@{} - @code{title = "Sinfonia I"} - @code{@}} + \header@{ + title = "Sinfonia I" + @} @end example Se si desidera impostare il titolo dell'output su un valore e la proprietà @@ -1254,10 +1254,10 @@ titolo del PDF su un valore diverso, si può usare @code{pdftitle}, nel modo seguente: @example - @code{\header@{} - @code{title = "Sinfonia I"} - @code{pdftitle = "Sinfonia I di Beethoven"} - @code{@}} + \header@{ + title = "Sinfonia I" + pdftitle = "Sinfonia I di Beethoven" + @} @end example Le variabili @code{title}, @code{subject}, @code{keywords}, @@ -3697,7 +3697,7 @@ lilypond file.ly >display.txt @funindex \void @c tradotto un po' liberamente, dato che il paragrafo in inglese è poco chiaro: @c https://lists.gnu.org/archive/html/lilypond-user/2015-12/msg00141.html -Nota bene che Lilypond non soltanto mostra in console l'espressione musicale, ma +Nota bene che LilyPond non soltanto mostra in console l'espressione musicale, ma la interpreta anche (infatti l'espressione musicale di @code{\displayLilyMusic} appare nell'output oltre a essere mostrata in console). Basta inserire @code{\displayLilyMusic} in file esistenti, senza doverne modificare le diff --git a/Documentation/it/notation/pitches.itely b/Documentation/it/notation/pitches.itely index 53ef1ad1f4..7c2d839a45 100644 --- a/Documentation/it/notation/pitches.itely +++ b/Documentation/it/notation/pitches.itely @@ -477,7 +477,7 @@ non si riferisce ad alcuno standard. @cindex lingua, nomi delle note in un'altra @cindex lingua, nomi delle altezze in un'altra -Lilypond comprende insiemi predefiniti di nomi di note e alterazioni in +LilyPond comprende insiemi predefiniti di nomi di note e alterazioni in altre lingue. La scelta della lingua si fa solitamente all'inizio del file; l'esempio seguente è scritto in notazione italiana: diff --git a/Documentation/it/notation/rhythms.itely b/Documentation/it/notation/rhythms.itely index 77cc962d50..3cff8040ae 100644 --- a/Documentation/it/notation/rhythms.itely +++ b/Documentation/it/notation/rhythms.itely @@ -1730,7 +1730,7 @@ Si può dare a ogni rigo la sua indicazione di tempo indipendente spostando Si creano con la funzione @code{\compoundMeter}. La sintassi è: @example -\compoundMeter #'@code{(lista di liste)} +\compoundMeter #'(lista di liste) @end example La struttura più semplice è una singola lista, dove l'@emph{ultimo} numero @@ -2780,7 +2780,7 @@ Tuttavia,dato che questi segni di spunta sono tipicamente usati nella notazione gregoriana, è preferibile usare @code{\divisioMinima}, come è descritto nella sezione @ref{Divisiones} della parte dedicata al canto gregoriano. -Lilypond supporta la notazione gregoriana russa e fornisce una stanghetta speciale per +LilyPond supporta la notazione gregoriana russa e fornisce una stanghetta speciale per questo tipo di notazione: @lilypond[quote,fragment,verbatim] f'1 \bar "k" diff --git a/Documentation/it/translations.itexi b/Documentation/it/translations.itexi index 6d03c64e40..c60a1452bd 100644 --- a/Documentation/it/translations.itexi +++ b/Documentation/it/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Ultimo aggiornamento Sat Jul 2 15:06:05 UTC 2016 +@emph{Ultimo aggiornamento Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -30,7 +30,7 @@ Cambiamenti in LilyPond @item Section titles @* -2393 +2449 @tab Federico Bruni @tab @tab @@ -57,7 +57,7 @@ sì @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Federico Bruni @tab @tab @@ -123,7 +123,7 @@ sì @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -324,7 +324,7 @@ sì @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Federico Bruni @tab @tab @@ -378,7 +378,7 @@ sì @item 1.1 Altezze @* -5169 +5224 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -395,17 +395,17 @@ sì @ifhtml @html -sì +parzialmente @end html @end ifhtml @ifnothtml -sì +parzialmente @end ifnothtml @tab pre-GDP @item 1.2 Ritmi @* -6795 +6822 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -422,11 +422,11 @@ sì @ifhtml @html -sì +parzialmente @end html @end ifhtml @ifnothtml -sì +parzialmente @end ifnothtml @tab pre-GDP @item @@ -503,11 +503,11 @@ sì @ifhtml @html -sì +parzialmente @end html @end ifhtml @ifnothtml -sì +parzialmente @end ifnothtml @tab pre-GDP @item @@ -621,7 +621,7 @@ sì @item 2.1 Musica vocale @* -4975 +4977 @tab Federico Bruni @tab @tab @@ -675,7 +675,7 @@ sì @item 3 Input e output @* -12704 +12824 @tab Federico Bruni @tab @tab @@ -692,11 +692,11 @@ sì @ifhtml @html -sì +parzialmente @end html @end ifhtml @ifnothtml -sì +parzialmente @end ifnothtml @tab pre-GDP @item @@ -729,7 +729,7 @@ sì @item 5 Modifica delle impostazioni predefinite @* -15598 +15597 @tab Federico Bruni @tab @tab @@ -756,7 +756,7 @@ sì @item A Tabelle del manuale della notazione @* -3077 +3079 @tab Federico Bruni @tab @tab @@ -849,7 +849,7 @@ sì @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Federico Bruni @tab Luca Rossetto Casel @tab @@ -1050,7 +1050,7 @@ sì @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Federico Bruni @tab Luca Rossetto Casel @tab diff --git a/Documentation/it/usage/external.itely b/Documentation/it/usage/external.itely index ac306ccb6c..1535ff8933 100644 --- a/Documentation/it/usage/external.itely +++ b/Documentation/it/usage/external.itely @@ -741,7 +741,7 @@ dal metodo automatizzato di @command{lilypond-book}. @cindex LuaTex @cindex lyluatex -Per integrare l'output di Lilypond in un documento, oltre a +Per integrare l'output di LilyPond in un documento, oltre a @code{lilypond-book}, esiste un programma alternativo che può essere usato con LuaTex: @uref{https://github.com/jperon/lyluatex/blob/master/README.en.md,lyluatex}. @@ -829,7 +829,7 @@ usare anche la funzione di ritaglio dei sistemi; si veda Alcuni utenti hanno creato file che possono essere inclusi in LilyPond tramite @code{\include} per produrre certi effetti. Quelli elencati -in questo capitolo fanno parte di Lilypond. Maggiori informazioni +in questo capitolo fanno parte di LilyPond. Maggiori informazioni in @ruser{Lavorare coi file di input}. @menu @@ -845,7 +845,7 @@ in @ruser{Lavorare coi file di input}. @cindex Articulate, progetto Il progetto @uref{http://www.nicta.com.au/articulate,Articulate} è un -tentativo di migliorare l'output MIDI di Lilypond. Aggiusta la durata +tentativo di migliorare l'output MIDI di LilyPond. Aggiusta la durata delle note (che non si trovano in una legatura di portamento) in base ai segni di articolazione attaccati ad esse. Per esempio, @q{staccato} dimezza il valore della nota, @q{tenuto} assegna alla nota la sua diff --git a/Documentation/it/usage/lilypond-book.itely b/Documentation/it/usage/lilypond-book.itely index 420777e3cd..848be1e563 100644 --- a/Documentation/it/usage/lilypond-book.itely +++ b/Documentation/it/usage/lilypond-book.itely @@ -142,8 +142,8 @@ tutorial. @subheading Output -I documenti per \verb+lilypond-book+ possono combinare liberamente musica e testo. -Ad esempio, +I documenti per @command{lilypond-book} possono combinare liberamente musica +e testo. Ad esempio, @lilypond \relative { @@ -1228,7 +1228,7 @@ esempio,

-Ancora un po' di Lilypond, questa volta con delle opzioni: +Ancora un po' di LilyPond, questa volta con delle opzioni: a4 b c d diff --git a/Documentation/it/web/introduction.itexi b/Documentation/it/web/introduction.itexi index e04da75106..f61466cbf1 100644 --- a/Documentation/it/web/introduction.itexi +++ b/Documentation/it/web/introduction.itexi @@ -270,7 +270,7 @@ che usano LilyPond. LilyPond gira su tutte le piattaforme più note: GNU/Linux, MacOS X, e Windows. LilyPond include un'ampia documentazione e centinaia di file di esempio. C'è un'attiva comunità di utenti che risponde alle -domande nella mailing list internazionale dedicata agli utenti Lilypond, +domande nella mailing list internazionale dedicata agli utenti LilyPond, offrendo gentilmente il proprio aiuto. I tempi di risposta sono solitamente molto brevi e spesso vengono suggerite brillanti soluzioni dei problemi segnalati. Grazie alla stretta interazione col team di sviluppo, tali @@ -308,7 +308,7 @@ già deciso di provare LilyPond, per prima cosa informati sul nostro @subheading Begli esempi -Lilypond è uno strumento potente e flessibile per scrivere ogni tipo +LilyPond è uno strumento potente e flessibile per scrivere ogni tipo di musica. Dai un'occhiata alla galleria di esempi e lasciati ispirare! @divEnd @@ -318,7 +318,7 @@ di musica. Dai un'occhiata alla galleria di esempi e lasciati ispirare! @subheading Musica Classica Questo brano per organo di J.S. Bach rappresenta un tipico esempio di -progetto Lilypond. +progetto LilyPond. @exampleImage{bach-bwv610} @divEnd @@ -337,7 +337,7 @@ mediante tratti spezzati. @divClass{column-center-middle-color2} @subheading Musica Antica -Lilypond supporta anche vari tipi di notazione antica, come +LilyPond supporta anche vari tipi di notazione antica, come questo passaggio di canto gregoriano. @exampleImage{ancient-headword} @@ -346,7 +346,7 @@ questo passaggio di canto gregoriano. @divClass{column-center-middle-color2} @subheading Musica Moderna -I compositori contemporanei ritengono che Lilypond sia molto adatto a +I compositori contemporanei ritengono che LilyPond sia molto adatto a visualizzare notazioni non convenzionali. Ecco un estratto dal @emph{Čáry} di Trevor Bača, per flauto basso non accompagnato. @@ -374,7 +374,7 @@ completa, riduzione per canto e pianoforte, e parte per violino. @divClass{column-center-middle-color2} @subheading Intavolatura -Lilypond supporta la notazione per intavolatura, che può essere personalizzata +LilyPond supporta la notazione per intavolatura, che può essere personalizzata per adattarsi a ogni strumento che ne fa uso. Il rigo dell'intavolatura viene generato automaticamente dalle note inserite per il pentagramma. @@ -397,7 +397,7 @@ I colori sono stati aggiunti per migliorare la visibilità. @subheading Output personalizzato Un breve estratto del Klavierstück II di Stockhausen per dimostrare la -capacità di Lilypond di fornire output personalizzato. +capacità di LilyPond di fornire output personalizzato. @exampleImage{Stockhausen_Klavierstueck2} @divEnd @@ -406,11 +406,11 @@ capacità di Lilypond di fornire output personalizzato. @divClass{column-center-middle-color2} @subheading Musica Vocale -Lilypond è eccellente per la musica vocale di tutti i generi, dagli inni +LilyPond è eccellente per la musica vocale di tutti i generi, dagli inni sacri all'opera. Ecco un mottetto medievale con requisiti leggermente insoliti. Il tenor è scritto in un metro diverso dagli altri, ma deve essere allineato come se fosse nello stesso tempo. -Lilypond gestisce questo aspetto in modo molto elegante. Si notino anche gli +LilyPond gestisce questo aspetto in modo molto elegante. Si notino anche gli incipit con chiave in stile Vaticana, i gambi barrati a indicare note plicate, e le parentesi quadre sulle sezioni legate. @@ -420,7 +420,7 @@ e le parentesi quadre sulle sezioni legate. @divClass{column-center-middle-color2} @subheading Applicazioni didattiche -Lilypond è molto indicato anche per applicazioni didattiche. +LilyPond è molto indicato anche per applicazioni didattiche. Ecco un esempio di un semplice esercizio di contrappunto. @exampleImage{theory} @@ -440,7 +440,7 @@ personalizzati per adattarsi a quasi ogni situazione. @divClass{column-center-middle-color2} @subheading Grandi Progetti -Lilypond è ottimo anche per progetti ad ampio respiro come opere o lavori per +LilyPond è ottimo anche per progetti ad ampio respiro come opere o lavori per un'orchestra sinfonica al completo. Inoltre l'input testuale permette una maggiore accessibilità -- questo esempio è stato realizzato da Hu Haipeng, un compositore cieco. @@ -612,7 +612,7 @@ che per le partiture pubblicate. @divClass{column-left-top} @subheading Concerti -Lilypond è stato usato per esecuzioni in tutto il mondo. +LilyPond è stato usato per esecuzioni in tutto il mondo. In evidenza: @divClass{keep-bullets} @@ -852,7 +852,7 @@ Dicembre 2005 intitolato @uref{http://www.linuxjournal.com/article/8364, Crea dei fantastici grafici Schenker con GNU LilyPond}. È un articolo approfondito e pratico con attraenti grafici di LilyPond. L'autore -Kris Shaffer commenta @qq{GNU Lilypond genera una grafica splendida +Kris Shaffer commenta @qq{GNU LilyPond genera una grafica splendida che fa sembrare le alternative commerciali di second'ordine.} @item @@ -951,7 +951,7 @@ quanto riguarda la velocità, la facilità d'uso e la resa grafica!} @qq{[@dots{}dopo la prima prova d'orchestra] ho ricevuto molti complimenti per la qualità degli spartiti. Ancora più -importante: sebbene Lilypond fornisca molti trucchi per migliorare +importante: sebbene LilyPond fornisca molti trucchi per migliorare l'aspetto degli spartiti, quello che l'orchestra ha ricevuto da me è l'output grezzo e privo di ritocchi.} @divEnd @@ -962,9 +962,9 @@ l'output grezzo e privo di ritocchi.} @qq{grazie e complimenti al team di sviluppo per il suo incredibile lavoro. Non ho mai visto niente che possa avvicinarsi all'output di -Lilypond -- sono assolutamente sicuro che le mie necessità nel campo +LilyPond -- sono assolutamente sicuro che le mie necessità nel campo dell'editoria musicale saranno soddisfatte oltre ogni aspettativa usando -questo fantastico programma. [@dots{}] l'output predefinito di Lilypond [@dots{}] ha +questo fantastico programma. [@dots{}] l'output predefinito di LilyPond [@dots{}] ha un aspetto migliore delle recenti pubblicazioni @q{professionali} con cui l'ho confrontato (ovvero quasi qualsiasi spartito della Warner Bros, e anche molti dei più recenti delle @q{vecchie case editrici}). [@dots{}]} @@ -976,7 +976,7 @@ dei più recenti delle @q{vecchie case editrici}). [@dots{}]} @divClass{testimonial-item} @subsubheading Chris Cannam, principale programmatore di @uref{http://www.rosegardenmusic.com/, RoseGarden} -@qq{Lilypond è ovviamente il super gorilla [della +@qq{LilyPond è ovviamente il super gorilla [della grande tipografia musicale].} @divEnd @@ -1006,7 +1006,7 @@ farlo. Sono sicuro che nessun prodotto commerciale può avvicinarsi a questo.} @divClass{testimonial-item} @subsubheading David Bobroff, trombone basso, Iceland Symphony Orchestra -@qq{Credo che Lilypond sia un grande programma [@dots{}] Più imparo LilyPond +@qq{Credo che LilyPond sia un grande programma [@dots{}] Più imparo LilyPond e più mi piace!} @divEnd @@ -1321,7 +1321,7 @@ Emacs è un editor di testo che ha la capacità di comprendere molti diversi linguaggi informatici. Emacs è un editor molto estendibile e può essere usato come ambiente di sviluppo integrato (IDE). C'è una @q{modalità lilypond} che fornisce le definizioni del -linguaggio per poter lavorare con i file sorgente di Lilypond. +linguaggio per poter lavorare con i file sorgente di LilyPond. Uno sviluppatore ha scritto @uref{https://github.com/nsceaux/lyqi,lyqi}, una modalità primaria di Emacs. diff --git a/Documentation/ja/learning/tweaks.itely b/Documentation/ja/learning/tweaks.itely index 303625837f..f3ecdf55d1 100644 --- a/Documentation/ja/learning/tweaks.itely +++ b/Documentation/ja/learning/tweaks.itely @@ -652,9 +652,9 @@ Slur へのリンクを選択すると、Slur のプロパティがリスト ア させていくと、以下が見つかります: @example -@code{thickness} (number) - @code{1.2} - Line thickness, generally measured in @code{line-thickness} +thickness (number) + 1.2 + Line thickness, generally measured in line-thickness @end example これが太さを変更するプロパティのようです。@c @@ -2078,7 +2078,7 @@ a4 g c a | このコマンドのフォーマットは以下のようなものです: @example -@code{\set fingeringOrientations = #'([up] [left/right] [down])} +\set fingeringOrientations = #'([up] [left/right] [down]) @end example @noindent @@ -3988,11 +3988,11 @@ lhMusic = \relative { 使うことはできないでしょうか? @example -@code{\override Lyrics.LyricText.font-shape = #'italic} -@code{\override Lyrics.LyricText.font-series = #'bold} +\override Lyrics.LyricText.font-shape = #'italic +\override Lyrics.LyricText.font-series = #'bold -@code{\revert Lyrics.LyricText.font-shape} -@code{\revert Lyrics.LyricText.font-series} +\revert Lyrics.LyricText.font-shape +\revert Lyrics.LyricText.font-series @end example これらも、強調する必要のある単語がたくさんある場合、入力するのが@c diff --git a/Documentation/ja/notation/changing-defaults.itely b/Documentation/ja/notation/changing-defaults.itely index b9aa8ebc54..537877abae 100644 --- a/Documentation/ja/notation/changing-defaults.itely +++ b/Documentation/ja/notation/changing-defaults.itely @@ -1361,7 +1361,7 @@ squashedPosition = #0 @qq{main} というコンテキストの上に配置し直すには以下のようにします: @example -@code{\new Staff \with @{ alignAboveContext = #"main" @} } +\new Staff \with @{ alignAboveContext = #"main" @} @end example @code{ChoirStaff} のような複数の譜のレイアウトで一時的な歌詞を配置する場合 @@ -4300,7 +4300,7 @@ Web でベジエ曲線が描かれる様子を示すアニメーションを@c @code{\shape} の構文は以下の通りです: @example -[-]@code{\shape} @var{displacements} @var{item} +[-]\shape @var{displacements} @var{item} @end example これは @var{item} の制御ポイントを @var{displacements} だけ移動させます。@c diff --git a/Documentation/ja/notation/input.itely b/Documentation/ja/notation/input.itely index c7429f51f8..42f6efcab1 100644 --- a/Documentation/ja/notation/input.itely +++ b/Documentation/ja/notation/input.itely @@ -1090,9 +1090,9 @@ scoreTitleMarkup = \markup @{ \column @{ 以下の構文を用います: @example -@code{variable} = @code{\markup} @{ +variable = \markup @{ ... - @code{\on-the-fly} #@var{procedure} @var{markup} + \on-the-fly #@var{procedure} @var{markup} ... @} @end example @@ -1155,9 +1155,9 @@ scoreTitleMarkup = \markup @{ \column @{ できます。例えば、 @example - @code{\on-the-fly #first-page} - @code{\on-the-fly #last-page} - @code{@{ \markup ... \fromproperty #'header: ... @}} + \on-the-fly #first-page + \on-the-fly #last-page + @{ \markup ... \fromproperty #'header: ... @} @end example これは、出力が単一のページかどうかを判断します。 @@ -2188,7 +2188,7 @@ LilyPond は UTF-8 エンコーディング LilyPond は多言語テキストを、Pango ライブラリを用いて、@c レイアウトして描画します。 -Lilypond は入力のエンコーディング変換をまったく行いません。@c +LilyPond は入力のエンコーディング変換をまったく行いません。@c これは非 ASCII 文字を含むすべてのテキスト -- タイトル、歌詞テキストあるいは演奏指示 -- を UTF-8 でエンコードして入力する必要があるということを意味します。@c diff --git a/Documentation/ja/notation/rhythms.itely b/Documentation/ja/notation/rhythms.itely index 2f91192bb6..4193aa328b 100644 --- a/Documentation/ja/notation/rhythms.itely +++ b/Documentation/ja/notation/rhythms.itely @@ -1712,7 +1712,7 @@ cis4 d cis! d 構文は以下の通りです: @example -\compoundMeter #'@code{(list of lists)} +\compoundMeter #'(list of lists) @end example 最も簡単な構成は単一のリストであり、@c @@ -3212,7 +3212,7 @@ c1 | c | c | c @emph{acciaccatura} のようにスラッシュ付きの符幹を持つが@c スラーは付かない装飾小音符を譜刻することもできます。 -Lilypond はさらに 2 つ特殊なタイプの装飾小音符をサポートします: +LilyPond はさらに 2 つ特殊なタイプの装飾小音符をサポートします: @emph{acciaccatura} (長さを持たない装飾小音符で、@c スラッシュ付きの符幹を持つスラーでつなげられる小さな音符) と @emph{appoggiatura} (一定の比率で主音符から演奏時間をとり、@c diff --git a/Documentation/ja/notation/spacing.itely b/Documentation/ja/notation/spacing.itely index a7bcbafe56..dad396f717 100644 --- a/Documentation/ja/notation/spacing.itely +++ b/Documentation/ja/notation/spacing.itely @@ -3128,7 +3128,7 @@ Essay on automated music engraving: @subsection プロポーショナル ノーテーション @translationof Proportional notation -Lilypond はプロポーショナル ノーテーションをサポートします。@c +LilyPond はプロポーショナル ノーテーションをサポートします。@c この記譜法では、各音符は演奏時間に相当する水平方向のスペースをとります。@c このタイプの水平スペースは、方眼紙上の水平方向スペースと同等です。@c 20 世紀後半、21 世紀前半の楽譜の中には、@c diff --git a/Documentation/ja/translations.itexi b/Documentation/ja/translations.itexi index 16a47dbd1c..dc089be323 100644 --- a/Documentation/ja/translations.itexi +++ b/Documentation/ja/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{最終更新日 Sat Jul 2 15:06:05 UTC 2016 +@emph{最終更新日 Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -59,7 +59,7 @@ Yoshiki Sawada @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Masamichi Hosoda @* Yoshiki Sawada @@ -266,7 +266,7 @@ partially @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Yoshiki Sawada @tab @tab @@ -320,7 +320,7 @@ LilyPond --- \TITLE\ @item 1.1 ピッチ @* -5169 +5224 @tab Yoshiki Sawada @tab @tab @@ -337,7 +337,7 @@ LilyPond --- \TITLE\ @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -347,7 +347,7 @@ partially @item 1.2 リズム @* -6795 +6822 @tab Yoshiki Sawada @tab @tab @@ -364,7 +364,7 @@ partially @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -445,7 +445,7 @@ partially @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -565,7 +565,7 @@ partially @item 2.1 声楽 @* -4975 +4977 @tab Yoshiki Sawada @tab @tab @@ -619,7 +619,7 @@ partially @item 2.3 フレットの無い弦楽器 @* -303 +279 @tab Yoshiki Sawada @tab @tab @@ -636,7 +636,7 @@ partially @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -646,7 +646,7 @@ partially @item 2.4 フレットのある弦楽器 @* -2820 +2821 @tab Yoshiki Sawada @tab @tab @@ -690,7 +690,7 @@ partially @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -727,7 +727,7 @@ partially @item 2.7 和音記譜法 @* -1931 +1979 @tab Yoshiki Sawada @tab @tab @@ -744,7 +744,7 @@ partially @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -808,24 +808,24 @@ partially @item 3 入出力全般 @* -12704 +12824 @tab Yoshiki Sawada @tab @tab @ifhtml @html -一部 (94 %) +一部 (95 %) @end html @end ifhtml @ifnothtml -一部 (94 %) +一部 (95 %) @end ifnothtml @tab @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -852,7 +852,7 @@ partially @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -862,7 +862,7 @@ partially @item 5 デフォルトを変更する @* -15598 +15597 @tab Yoshiki Sawada @tab @tab @@ -879,7 +879,7 @@ partially @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -957,7 +957,7 @@ Yoshiki Sawada @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Masamichi Hosoda @* Yoshiki Sawada @@ -1113,7 +1113,7 @@ partially @ifhtml @html -partially +partially @end html @end ifhtml @ifnothtml @@ -1166,7 +1166,7 @@ Yoshinobu Ishizaki @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Masamichi Hosoda @* Yoshiki Sawada diff --git a/Documentation/ja/usage/running.itely b/Documentation/ja/usage/running.itely index 980d2a5cf0..c0bfd3f1ef 100644 --- a/Documentation/ja/usage/running.itely +++ b/Documentation/ja/usage/running.itely @@ -184,7 +184,7 @@ forfiles /s /p "C:\Documents\My Scores" /M *.ly /c "cmd /c lilypond @@file" @node LilyPond の基本的なコマンド ライン オプション -@unnumberedsubsec Lilypond の基本的なコマンド ライン オプション +@unnumberedsubsec LilyPond の基本的なコマンド ライン オプション @translationof Basic command line options for LilyPond @cindex Invoking @command{lilypond} (@command{lilypond} を呼び出す) diff --git a/Documentation/ja/web/introduction.itexi b/Documentation/ja/web/introduction.itexi index 7fa0d615ae..ba880085f0 100644 --- a/Documentation/ja/web/introduction.itexi +++ b/Documentation/ja/web/introduction.itexi @@ -298,7 +298,7 @@ LilyPond を使ったオンラインツールがいくつかあります。 LilyPond は一般的なプラットフォーム全て (GNU/Linux, MacOS, そして Windows) で動きます。@c LilyPond には広範囲のドキュメントと数百の実例ファイルが付属します。@c -Lilypond ユーザー メーリング リストで質問に答えてくれる@c +LilyPond ユーザー メーリング リストで質問に答えてくれる@c 活発なユーザ コミュニティがあります。@c 開発チームは問題が早期に解決されるよう活動しています。@c 通常はすぐに回答がありますし、しばしば報告された問題に対する@c @@ -452,7 +452,7 @@ LilyPond は聖歌からオペラまですべての種類の声楽に対して 少し変わった要求をする中世のモテットを示します。@c テナー ボイスの拍子は他と異なりますが、@c 同じ拍子であるかのように揃っています。@c -Lilypond はこれをすっきりと処理します +LilyPond はこれをすっきりと処理します ヴァチカン様式の音部記号、ゆらぎのある音符を表すスラッシュ付きの@c 符幹、ある特定の音符グループ上の連結線ににも注目してください。 @@ -1022,7 +1022,7 @@ LilyPond が、スピード、使い易さ、見栄えにおいて、 @qq{[..最初のオーケストラリハーサルの後で] 私は楽譜の出来について@c たくさんの賛辞をいただきました。@c 重要なのは、@c -Lilypondには楽譜の見栄えをより良くするための数多くの方法があるのですが、@c +LilyPondには楽譜の見栄えをより良くするための数多くの方法があるのですが、@c 私がオーケストラに渡したのは@c 基本的に生の、そのままの出力結果だったということです。} @divEnd @@ -1032,10 +1032,10 @@ Lilypondには楽譜の見栄えをより良くするための数多くの方法 @subsubheading Kieren MacMillan, 作曲家 (カナダ トロント) @qq{この素晴らしい仕事をした開発チームに感謝と賛辞の意を。@c -Lilypondで得られる結果に近い物は他ではありません +LilyPondで得られる結果に近い物は他ではありません -- この偉大なアプリケーションは、私の楽譜出版の必要性に対して、@c 期待以上の結果を間違いなくもたらしてくれます。@c -[..] 基本的に、いじっていない Lilypond の出力は [..] +[..] 基本的に、いじっていない LilyPond の出力は [..] 私が比較した最近の @q{プロ} の出版物 (Warner Bros. の楽譜、それから @q{老舗} の最近の楽譜の大多数) よりも良いです。[..]} diff --git a/Documentation/learning/tweaks.itely b/Documentation/learning/tweaks.itely index 001f4136a3..b014ee5b47 100644 --- a/Documentation/learning/tweaks.itely +++ b/Documentation/learning/tweaks.itely @@ -692,9 +692,9 @@ through them looking for a property that might control the heaviness of slurs, and you should find @example -@code{thickness} (number) - @code{1.2} - Line thickness, generally measured in @code{line-thickness} +thickness (number) + 1.2 + Line thickness, generally measured in line-thickness @end example This looks a good bet to change the heaviness. It tells us that @@ -2054,7 +2054,7 @@ individual notes in a chord is possible by using the command is: @example -@code{\set fingeringOrientations = #'([up] [left/right] [down])} +\set fingeringOrientations = #'([up] [left/right] [down]) @end example @noindent @@ -4066,11 +4066,11 @@ themselves prevents their use in simple variables. As an alternative can we use @code{\override} and @code{\revert} commands? @example -@code{\override Lyrics.LyricText.font-shape = #'italic} -@code{\override Lyrics.LyricText.font-series = #'bold} +\override Lyrics.LyricText.font-shape = #'italic +\override Lyrics.LyricText.font-series = #'bold -@code{\revert Lyrics.LyricText.font-shape} -@code{\revert Lyrics.LyricText.font-series} +\revert Lyrics.LyricText.font-shape +\revert Lyrics.LyricText.font-series @end example These would also be extremely tedious to enter if there were many diff --git a/Documentation/lilypond-texi2html.init b/Documentation/lilypond-texi2html.init index 9cb5772de4..b6970ac606 100644 --- a/Documentation/lilypond-texi2html.init +++ b/Documentation/lilypond-texi2html.init @@ -94,8 +94,8 @@ use Encode qw(decode); my $LY_LANGUAGES = {}; $LY_LANGUAGES->{'ca'} = { - 'Back to Documentation Index' => '', - '

Gràcies a ${webdev_link} per allotjar ${lily_site}.' => '', + 'Back to Documentation Index' => 'Torna a l\'índex de la documentació', + '

Thanks to ${webdev_link} for hosting ${lily_site}.' => '

Agraïm a ${webdev_link} l\'allotjament de ${lily_site}.', }; $LY_LANGUAGES->{'cs'} = { @@ -147,6 +147,141 @@ $LY_LANGUAGES->{'zh'} = { # FIXME: request the translations below then send them to texi2html/texinfo devs +$LANGUAGES->{'ca'} = { + ' The buttons in the navigation panels have the following meaning:' => ' Els botons als panells de navegació tenen els significats següents:', + ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => ' on l\'@strong{exemple} suposa que la posició actual és a la @strong{ Subsubsecció U-Dos-Tres } d\'un document a l\'estructura següent:', + ' Up ' => ' Amunt ', + '(outside of any element)' => '(fora de qualsevol element)', + '(outside of any node)' => '(fora de qualsevol node)', + '@b{{quotation_arg}:} ' => '@b{{quotation_arg}:} ', + '@cite{{book}}' => '@cite{{book}}', + '@{No value for `{value}\'@}' => '@{Cap valor per a `{value}\'@}', + 'About' => 'Quant a', + 'About (help)' => 'Quant a (ajuda)', + 'About This Document' => 'Quant a aquest document', + 'April' => 'Abril', + 'August' => 'Agost', + 'Back' => 'Enrere', + 'Back section in previous file' => 'Secció enrere al fitxer previ', + 'Beginning of this chapter or previous chapter' => 'Inici d\'aquest capítol o capítul previ', + 'Button' => 'Botó', + 'Contents' => 'Continguts', + 'Cover (top) of document' => 'Portada (part superior) del document', + 'Current' => 'Actual', + 'Current Position' => 'Posició actual', + 'Current section' => 'Secció actual', + 'December' => 'Desembre', + 'FastBack' => 'Enrere ràpid', + 'FastForward' => 'Endavant ràpid', + 'February' => 'Febrer', + 'First' => 'Primera', + 'First section in reading order' => 'Primera secció en ordre de lectura', + 'Following' => 'Següent', + 'Following node' => 'Node següent', + 'Footnotes' => 'Notes a peu de pàgina', + 'Forward' => 'Endavant', + 'Forward section in next file' => 'Secció següent al fitxer següent', + 'From 1.2.3 go to' => 'De 1.2.3 ves a', + 'Go to' => 'Ves a', + 'Index' => 'Índex', + 'Index Entry' => 'Entrada de l\'índex', + 'January' => 'Gener', + 'July' => 'Juliol', + 'Jump to' => 'Salta a', + 'June' => 'June', + 'Last' => 'Última', + 'Last section in reading order' => 'Última secció en ordre de lectura', + 'March' => 'Març', + 'May' => 'Maig', + 'Menu:' => 'Menú', + 'Name' => 'Nom', + 'Next' => 'Següent', + 'Next chapter' => 'Capítol segúent', + 'Next file' => 'Fitxer següent', + 'Next node' => 'Node següent', + 'Next section in reading order' => 'Secció següent en ordre de lectura', + 'Next section on same level' => 'Secció següent al mateix nivell', + 'NextFile' => 'Fitxer següent', + 'Node following in node reading order' => 'Node següent en ordre de lectura', + 'Node up' => 'Node amunt', + 'NodeNext' => 'Node següent', + 'NodePrev' => 'Node anterior', + 'NodeUp' => 'Node superior', + 'November' => 'Novembre', + 'October' => 'Octubre', + 'Overview' => 'Panoràmica', + 'Prev' => 'Previ', + 'PrevFile' => 'Fitxer previ', + 'Previous' => 'Anterior', + 'Previous file' => 'Fitxer anterior', + 'Previous node' => 'Node anterior', + 'Previous section in reading order' => 'Secció anterior en ordre de lectura', + 'Previous section on same level' => 'Secció prèvia al mateix nivell', + 'Section' => 'Secció', + 'Section One' => 'Secció u', + 'See ' => 'Vegeu', + 'See @cite{{book}}' => 'Vegeu @cite{{book}}', + 'See section `@asis{}`{section_name}\'@asis{}\' in @cite{{book}}' => 'Vegeu la secció `@asis{}`{section_name}\'@asis{}\' a @cite{{book}}', + 'See section `{section}\' in @cite{{book}}' => 'Vegeu la secció `{section}\' a @cite{{book}}', + 'See section {reference_name}' => 'Vegeu la secció {reference_name}', + 'See {node_file_href}' => 'Vegeu {node_file_href}', + 'See {node_file_href} @cite{{book}}' => 'Vegeu {node_file_href} @cite{{book}}', + 'See {node_file_href} section `{section}\' in @cite{{book}}' => 'Vegeu {node_file_href} a la secció `{section}\' a @cite{{book}}', + 'See {reference_name}' => 'Vegeu {reference_name}', + 'See {ref}' => 'Vegeu {ref}', + 'See {title_ref}' => 'Vegeu {title_ref}', + 'September' => 'Setembre', + 'Short Table of Contents' => 'Índex brevu', + 'Short table of contents' => 'Índex breu', + 'Subsection One-Four' => 'Subsecció U-Quatre', + 'Subsection One-One' => 'Subsecció U-U', + 'Subsection One-Three' => 'Subsecció U-Tres', + 'Subsection One-Two' => 'Subsecció U-Dos', + 'Subsubsection One-Two-Four' => 'Subsubseció U-Dos-Quatre', + 'Subsubsection One-Two-One' => 'Subsubsecció U-Dos-U', + 'Subsubsection One-Two-Three' => 'Subsubsecció U-Dos-Tres', + 'Subsubsection One-Two-Two' => 'Subsubsecció U-Dos-Dos', + 'T2H_today' => '%s, %d %d', + 'Table of Contents' => 'Índex', + 'Table of contents' => 'Índex', + 'The node you are looking for is at {href}.' => 'El node que esteu buscant és {href}', + 'This' => 'Aquest', + 'This document was generated on @i{{date}} using @uref{{program_homepage}, @i{{program}}}.' => 'Aquest document s\'ha generat el @i{{date}} amb @uref{{program_homepage}, @i{{program}}}.', + 'This document was generated using @uref{{program_homepage}, @emph{{program}}}.' => 'Aquest document sha generat amb @uref{{program_homepage}, @emph{{program}}}.', + 'Top' => 'Inici', + 'Untitled Document' => 'Document sense títol', + 'Up' => 'Amunt', + 'Up node' => 'Node superior', + 'Up section' => 'Secció supeior', + 'current' => 'actual', + 'on @emph{{date}}' => 'el @emph{{date}}', + 'section `@asis{}`{section_name}\'@asis{}\' in @cite{{book}}' => 'secció `@asis{}`{section_name}\'@asis{}\' a @cite{{book}}', + 'section `{section}\' in @cite{{book}}' => 'secció `{section}\' a @cite{{book}}', + 'see ' => 'vegeu ', + 'see @cite{{book}}' => 'vegeu @cite{{book}}', + 'see section `@asis{}`{section_name}\'@asis{}\' in @cite{{book}}' => 'vegeu la secció `@asis{}`{section_name}\'@asis{}\' a @cite{{book}}', + 'see section `{section}\' in @cite{{book}}' => 'vegeu la secció `{section}\' a @cite{{book}}', + 'see section {reference_name}' => 'vegeu la secció {reference_name}', + 'see {node_file_href}' => 'vegeu {node_file_href}', + 'see {node_file_href} @cite{{book}}' => 'vegeu {node_file_href} @cite{{book}}', + 'see {node_file_href} section `{section}\' in @cite{{book}}' => 'vegeu {node_file_href} a la secció `{section}\' a @cite{{book}}', + 'see {reference_name}' => 'vegeu {reference_name}', + 'see {ref}' => 'vegeu {ref}', + 'see {title_ref}' => 'vegeu {title_ref}', + '{acronym_like} ({explanation})' => '{acronym_like} ({explanation})', + '{name} of {class}' => '{name} de {class}', + '{name} on {class}' => '{name} a {class}', + '{node_file_href}' => '{node_file_href}', + '{node_file_href} @cite{{book}}' => '{node_file_href} @cite{{book}}', + '{node_file_href} section `{section}\' in @cite{{book}}' => '{node_file_href} a la secció `{section}\' a @cite{{book}}', + '{reference_name}' => '{reference_name}', + '{ref}' => '{ref}', + '{style} {number}' => '{style} {number}', + '{style}: {caption_first_line}' => '{style}: {caption_first_line}', + '{style}: {shortcaption_first_line}' => '{style}: {shortcaption_first_line}', + '{title_ref}' => '{title_ref}' + }; + $LANGUAGES->{'it'} = { ' The buttons in the navigation panels have the following meaning:' => ' I bottoni nei pannelli di navigazione hanno il seguente significato:', ' where the @strong{ Example } assumes that the current position is at @strong{ Subsubsection One-Two-Three } of a document of the following structure:' => ' dove @strong{ Esempio } assume che l\'attuale posizione è alla @strong{ Sottosottosezione Uno-Due-Tre } di un documento che ha la seguente struttura:', diff --git a/Documentation/ly-examples/orchestra.ly b/Documentation/ly-examples/orchestra.ly index 7654521ebb..20dad7f93f 100644 --- a/Documentation/ly-examples/orchestra.ly +++ b/Documentation/ly-examples/orchestra.ly @@ -1,4 +1,4 @@ -\version "2.19.21" +\version "2.19.46" \header { tagline = ##f @@ -85,7 +85,6 @@ offCr = { \context { \type "Engraver_group" \name "MarkLine" - \consists "Output_property_engraver" \consists "Axis_group_engraver" \consists "Mark_engraver" \consists "Metronome_mark_engraver" diff --git a/Documentation/macros.itexi b/Documentation/macros.itexi index 6e567a56d5..cc09619dcc 100644 --- a/Documentation/macros.itexi +++ b/Documentation/macros.itexi @@ -186,16 +186,20 @@ For LilyPond version @version{} @c it doesn't matter, but a future implementation will probably @c add some code which needs this restriction. +@c @raggedright can be enabled as soon as texinfo 5.x or larger +@c is in use for Gub and LilyDev 3. + @macro predefined @noindent @subsubheading Predefined commands +@c @raggedright @end macro @c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245) @c the next macro must not be empty. @macro endpredefined -@c +@c @end raggedright @end macro diff --git a/Documentation/misc/announce-v2.12.ca.html b/Documentation/misc/announce-v2.12.ca.html new file mode 100644 index 0000000000..df4fbba3d7 --- /dev/null +++ b/Documentation/misc/announce-v2.12.ca.html @@ -0,0 +1,122 @@ + + +Está disponible LilyPond 2.12 “Rune” + +

Ya está disponible LilyPond versión 2.12: la edición del duodécimo aniversario

+ +Diciembre de 2008. + +

Nos llena de orgullo anunciar el lanzamiento de GNU/LilyPond 2.12 +“Rune”. +

+ +

Nuestra alegría está teñida de tristeza, pues el que fue durante +mucho tiempo colaborador del proyecto LilyPond y amigo, Rune Zedeler, +falleció el pasado 2 de julio de 2008. Esta edición está dedicada a su +memoria. +

+ +

Rune era programador y músico, e hizo valiosos aportes a +LilyPond. Había estado implicado en el proyecto durante los últimos +seis años, y nuestra comunidad le echará de menos con gran añoranza. +

+ +

Principales novedades

+ +
+
+ +

¡Feliz tipografía musical!

+ +

LilyPond le llega por cortesía de...

+ +

Equipo de desarrollo

+ +

Han-Wen Nienhuys – Desarrollos esenciales
+Jan Nieuwenhuizen – Desarrollos esenciales
+Joe Neeman – Desarrollos esenciales
+Graham Percival – Editor de la documentación y Maestro desinsectador
+Valentin Villenave – Editor del repositorio LSR y Maestro desinsectador
+Mats Bengtsson РGur̼ de apoyo
+John Mandereau – Maestro de la infraestructura de traducción

+ +

Colaboradores

+ +

Rune Zedeler, +Maximilian Albert, +Milan Zamazal, +Reinhold Kainhofer (desarrollo de musicxml2ly), +Erlend Aasland, +Stan Sanderson (revisor de las regresiones), +Neil Puttock.

+ +

Proyecto Magno de Documentación

+ +

Trevor Daniels – Editor adjunto de la documentación
+Andrew Hawryluk, Carl Sorensen, Eyolf Østrem, Francisco Vila, +Jay Hamilton, Jonathan Kulp, Joseph Harfouch, Patrick McCarty, +Ralph Palmer, Till Rettig – trabajos en la Referencia de la Notación
+Kurt Kroon – Actualizaciones del glosario, trabajos en la Referencia de la Notación
+Alard de Boer – Formato
+Michael Rasmussen – Formato
+Trevor Bača – Encabezamientos evocadores
+Reinhold Kainhofer РAsistencia t̩cnica
+Neil Puttock – Editor de fragmentos de código, asistencia técnica.

+ +

Traductores

+ +

Clytie Siddall, Damien Heurtebise, Francisco Vila, Heikki Junes, +Jean-Charles Malahieude, John Mandereau, Nicolas Klutchnikoff, Till +Rettig, Valentin Villenave.

+ +

Patrocinadores

+ +

Mike Amundsen, Trevor Bača.

+ +

Cazadores de fallos; sugerencias

+ +

Adam James Wilson, Alard de Boer, Alex Rolex, Andy Haupt, Arvid +Grøtting, Bertalan Fodor, Benjamin Drung, Cameron Horsburgh, Carl +Sorensen, Christian Hitz, Christian Herzberg, David Bobroff, David +Griffel, Daniel Hulme, Daniel Johnson, Dominic Neumann, Eduardo +Vieira, Frédéric Chiasson, Georg Dummer, Georg Romstorfer, Gilles +Thibault, Hernán J. González, Hu Haipeng, Jay Anderson, James +Kilfinger, Jean-Marie Mouchel, Jean-Yves Baudais, Jesús Guillermo +Andrade, Jonathan Henkelman, Kazuhiro Suzuki, Kevin Dalley, Laura +Conrad, Luc Wehli, Maarten Hijzelendoorn, Marc Lanoiselée, Mark +Polesky, Matthijs Frankeno, Martijn Vromans, Marnen Laibow-Koser, +Maximilian Albert, Mirosław Doroszewski, Mike Coleman, Neil Puttock, +Nicolas Mayencourt, Nicolas Sceaux, Orm Finnendahl, Peter Budny, +Phillip Kirlin, Pierre-Emmanuel Brame, Ralph Palmer, Renaud Flavigny, +Rick Hansen, Risto Vääräniemi, Robin Bannister, Roland Goretzki, Rune +Zedeler, Ruud van Silfhout, Sean Reed, Steven Weber, Tomas Sauer, +Thomas Scharkowski, Trevor Bača, Vivian Barty-Taylor, Werner Lemberg, +Wilbert Berendsen, William Oram, Yota Moteuchi, Zack Charter, and +Zoltan Selyem.

diff --git a/Documentation/misc/browser-language.ca.html b/Documentation/misc/browser-language.ca.html new file mode 100644 index 0000000000..84f8bda839 --- /dev/null +++ b/Documentation/misc/browser-language.ca.html @@ -0,0 +1,72 @@ + + +

Ús de la selecció automàtica de la llengua

+ +

+ Per obtenir la selecció automàtica de la llengua, heu d'indicar-li + al navegador quin és la vostra llengua preferida. La forma de fer-lo + depèn del navegador que esteu fent servir. +

+ + + +
+ +
Mozilla Firefox versió 0.9 i posteriors
+
+ GNU/Linux +
+      Edita -> Preferències -> Avançat -> General -> Llengües
+    
+
+
+ Microsoft Windows +
+      Eines -> Opcions -> General -> Llengües
+    
+ A versions anteriores heu d'anar a about:config i canviar el + el valor de intl.accept_languages. +
+ +
Mozilla / Netscape 4.x i posteriors
+
+
+      Edita -> Preferències -> Navegador -> Llengües
+    
+ Nota: amb el Netscape 4.x heu d'assegurar-vos de seleccionar + la llengua a partir de les alternatives possibles. Algunes persones + han comunicat problemes perquè van entrar la llengua a mà. +
+ +
Microsoft Internet Explorer
+
+ Microsoft Windows +
+      Eines (o Vista o Extres) -> Opcions d'Internet -> (General) Llengües
+    
+
+
+ MacOS +
+      Edita -> Preferències -> Navegador Web -> Llengua/Fonts
+    
+
+
+ +
+Aquesta pàgina està agafada de +Debian, y como tal, está sujeta a + +Copyright © 1997-2005 +SPI; Consulteu els termes de la llicència. +
+Debian és una marca registrada de Software in the Public Interest, Inc. diff --git a/Documentation/nl/learning/tweaks.itely b/Documentation/nl/learning/tweaks.itely index 51bac2fbc2..541e2962b5 100644 --- a/Documentation/nl/learning/tweaks.itely +++ b/Documentation/nl/learning/tweaks.itely @@ -601,9 +601,9 @@ through them looking for a property that might control the heaviness of slurs, and you should find @example -@code{thickness} (number) - @code{1.2} - Line thickness, generally measured in @code{line-thickness} +thickness (number) + 1.2 + Line thickness, generally measured in line-thickness @end example This looks a good bet to change the heaviness. It tells us that @@ -1955,7 +1955,7 @@ individual notes in a chord is possible by using the command is: @example -@code{\set fingeringOrientations = #'([up] [left/right] [down])} +\set fingeringOrientations = #'([up] [left/right] [down]) @end example @noindent @@ -3769,11 +3769,11 @@ themselves prevents their use in simple variables. As an alternative can we use @code{\override} and @code{\revert} commands? @example -@code{\override Lyrics.LyricText.font-shape = #'italic} -@code{\override Lyrics.LyricText.font-series = #'bold} +\override Lyrics.LyricText.font-shape = #'italic +\override Lyrics.LyricText.font-series = #'bold -@code{\revert Lyrics.LyricText.font-shape} -@code{\revert Lyrics.LyricText.font-series} +\revert Lyrics.LyricText.font-shape +\revert Lyrics.LyricText.font-series @end example These would also be extremely tedious to enter if there were many diff --git a/Documentation/nl/translations.itexi b/Documentation/nl/translations.itexi index 0cfb744377..524b717627 100644 --- a/Documentation/nl/translations.itexi +++ b/Documentation/nl/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Meest recente update Sat Jul 2 15:06:05 UTC 2016 +@emph{Meest recente update Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -57,7 +57,7 @@ gedeeltelijk @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Jan Nieuwenhuizen @tab @tab @@ -182,7 +182,7 @@ gedeeltelijk (95 %) @ifhtml @html -gedeeltelijk +gedeeltelijk @end html @end ifhtml @ifnothtml @@ -258,7 +258,7 @@ gedeeltelijk @item LilyPond -- \TITLE\ @* -1139 +1138 @tab Jan Nieuwenhuizen @tab Tineke de Munnik @tab diff --git a/Documentation/nl/web/introduction.itexi b/Documentation/nl/web/introduction.itexi index d45ea1361b..9ba487b72f 100644 --- a/Documentation/nl/web/introduction.itexi +++ b/Documentation/nl/web/introduction.itexi @@ -15,7 +15,7 @@ @node Inleiding @unnumbered Inleiding @translationof Introduction - + @divClass{column-center-top} @subheading Ons Doel @imageFloat{flat-design,png,right} @@ -211,9 +211,9 @@ actieve gebruikersgroep die antwoorden geeft op de lilypond-user mailinglijst, terwijl het ontwikkelingsteam ervoor zorgt dat problemen snel worden opgelost. - + @subsubheading Verbeterde editors - + Verscheidene ontwikkelaars, zelf actieve gebruikers van LilyPond, hebben ook gereedschappen geschreven die speciaal bedoeld zijn om het invoeren van LilyPond-bestanden sneller @@ -228,7 +228,7 @@ vinden in @ref{Eenvoudiger bewerken}. Nog steeds niet overtuigd? Bekijk dan maar eens enkele specifieke @ref{Voorbeelden}. Heb je al besloten LilyPond -te gaan proberen, lees dan eerst over onze +te gaan proberen, lees dan eerst over onze @ref{Tekstinvoer}. @divEnd @@ -710,7 +710,7 @@ Association}'s jaarblad, legt de Franse componist en LilyPond-bijdrager Valentin Villenave uit waarom Vrije licenties, en in het bijzonder LilyPond-gegraveerde partituren, van instrumenteel belang zijn in het voor iedereen toegankelijk maken van genoteerde muziek. - + @item februari 2008 @@ -832,7 +832,7 @@ hun gegraveerde versie niet half zo gelikt is als de mijne!} @qq{Hoewel ik [LilyPond] nog niet zo goed ken, ben ik @strong{erg} onder de indruk. Ik heb het programma gebruikt om een motet van Josquin Desprez in te voeren in mensurale -notatie. Lilypond overtreft zonder twijfel en met gemak +notatie. LilyPond overtreft zonder twijfel en met gemak alle andere muzieknotatieprogramma's voor wat betreft snelheid, gebruiksgemak en schoonheid!} @divEnd @@ -843,7 +843,7 @@ snelheid, gebruiksgemak en schoonheid!} @qq{[..na de eerste orkestrepetitie] kreeg ik heel veel complimenten over de kwaliteit van de partituren. En wat -nog veel mooier is: terwijl Lilypond allerlei manieren +nog veel mooier is: terwijl LilyPond allerlei manieren biedt om te zorgen dat de partituren er nog mooier uitzien, kreeg het orkest van mij slechts de ruwe, ongewijzigde LilyPond-output.} @@ -853,10 +853,10 @@ LilyPond-output.} @subsubheading Kieren MacMillan, componist (Toronto, Canada) @qq{Dank en lof voor het ontwikkelteam voor hun fantastische werk. Ik heb nog nooit iets gezien wat maar in de buurt -komt van de output die ik bereik met Lilypond -- Ik ben er +komt van de output die ik bereik met LilyPond -- Ik ben er zeker van dat dit fantastische programma aan al mijn muziekpublicatie-wensen kan voldoen en deze zelfs zal -overtreffen. [..] hoofdzakelijk pure Lilypond output [..] +overtreffen. [..] hoofdzakelijk pure LilyPond output [..] ziet er beter uit dan de meeste recente @q{professionele} uitgaven waarmee ik het heb vergeleken (q.v., zo ongeveer elke Warner Bros. partituur, en zelfs een groot deel van de @@ -902,7 +902,7 @@ enigszins in de buurt kan komen.} @divClass{testimonial-item} @subsubheading David Bobroff, bastrombonist, Iceland Symphony Orchestra -@qq{Ik vind Lilypond fantastisch [..] Hoe beter ik het +@qq{Ik vind LilyPond fantastisch [..] Hoe beter ik het programma leer kennen, hoe mooier ik het vind!} @divEnd @@ -1128,7 +1128,7 @@ zie @ref{Eenvoudiger bewerken}. @subheading En nu? Je bent nu zover om @ref{Download, LilyPond te downloaden}. -Nog steeds niet overtuigd? +Nog steeds niet overtuigd? Lees over @ref{Eenvoudiger bewerken}. @divEnd @@ -1360,7 +1360,7 @@ constraint-gebaseerde programmeertaal. LilyKDE3 voor KDE 3.5 en lilypond-KDE4 voor KDE 4.1. @item -@uref{https://sourceforge.net/projects/noteedit.berlios/,NoteEdit}, dat +@uref{https://sourceforge.net/projects/noteedit.berlios/,NoteEdit}, dat @uref{http://www.musicxml.com/xml.html,MusicXML} importeerde, is geforkt in @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd} @@ -1393,7 +1393,7 @@ beschreven in @ref{Achtergrond}. @subheading Legalese -@divClass{legal} +@divClass{legal} All logos and product images are copyright and trademark acknowledged. diff --git a/Documentation/notation/ancient.itely b/Documentation/notation/ancient.itely index 714584210a..7e44224426 100644 --- a/Documentation/notation/ancient.itely +++ b/Documentation/notation/ancient.itely @@ -682,7 +682,7 @@ mensural notation or coloratio sections in white mensural notation. Because note head style does not influence flag count, in this style a semiminima should be notated as @code{a8*2}, not @code{a4}, otherwise it will look like a minima. -The multiplier can be different if coloratio is used e.g. to notate +The multiplier can be different if coloratio is used, e.g., to notate triplets. Use @code{semipetrucci} style to draw half-colored @@ -1471,7 +1471,7 @@ with any of the following commands: @funindex \linea @code{\linea}. -@item Ligatures, properly speaking (i.e. notes joined together), are +@item Ligatures, properly speaking (i.e., notes joined together), are produced by placing one of the joining commands @code{\pes} or @code{\flexa}, for upwards and downwards movement, respectively, @emph{between} the notes to be joined. @@ -1525,7 +1525,7 @@ Liquescent neumes Another main category of notes in Gregorian chant is the so-called liquescent neumes. They are used under certain circumstances at -the end of a syllable which ends in a @q{liquescent} letter, i.e. +the end of a syllable which ends in a @q{liquescent} letter, i.e., the sounding consonants that can hold a tone (the nasals, l, r, v, j, and their diphthong equivalents). Thus, the liquescent neumes are never used alone (although some of them can be produced), and @@ -1554,7 +1554,7 @@ with the corresponding modifier, @code{\quilisma}, Virtually, within the ligature delimiters @code{\[} and @code{\]}, any number of heads may be accumulated to form a single ligature, and head prefixes like @code{\pes}, @code{\flexa}, @code{\virga}, -@code{\inclinatum}, etc. may be mixed in as desired. The use of +@code{\inclinatum}, etc., may be mixed in as desired. The use of the set of rules that underlies the construction of the ligatures in the above table is accordingly extrapolated. This way, infinitely many different ligatures can be created. @@ -2637,7 +2637,7 @@ typical scenarios are outlined, with suggestions of solutions. These involve: @itemize -@item how to make incipits (i.e. prefatory material to indicate +@item how to make incipits (i.e., prefatory material to indicate what the original has looked like) to modern transcriptions of mensural music; @item how to achieve the @emph{Mensurstriche} layout frequently @@ -2697,7 +2697,7 @@ produced. If no instrument name is required then use @emph{Mensurstriche} (@q{mensuration lines}) is the accepted term for bar lines that are drawn between the staves of a system but not through the staves themselves. It is a common way to preserve -the rhythmic appearance of the original, i.e. not having to break +the rhythmic appearance of the original, i.e., not having to break syncopated notes at bar lines, while still providing the orientation aids that bar lines give. @@ -2835,7 +2835,7 @@ verba = \lyricmode { @end lilypond Another common situation is transcription of neumatic or -melismatic chants, i.e. chants with a varying number of notes +melismatic chants, i.e., chants with a varying number of notes to each syllable. In this case, one would want to set the syllable groups clearly apart, usually also the subdivisions of a longer melisma. One way to achieve this is to use a fixed diff --git a/Documentation/notation/changing-defaults.itely b/Documentation/notation/changing-defaults.itely index 7cca8e59af..c8f9ebc510 100644 --- a/Documentation/notation/changing-defaults.itely +++ b/Documentation/notation/changing-defaults.itely @@ -522,8 +522,8 @@ Notation Reference: Contexts are usually terminated at the first musical moment in which they have nothing to do. So @code{Voice} contexts die as -soon as they contain no events; @code{Staff} contexts die as soon -as all the @code{Voice} contexts within them contain no events; etc. +soon as they contain no events, @code{Staff} contexts die as soon +as all the @code{Voice} contexts within them contain no events, etc. This can cause difficulties if earlier contexts which have died have to be referenced, for example, when changing staves with @code{\change} commands, associating lyrics with a voice with @@ -1434,7 +1434,7 @@ existing contexts. To reposition it above the context called @qq{main}, it should be defined like this: @example -@code{\new Staff \with @{ alignAboveContext = #"main" @} } +\new Staff \with @{ alignAboveContext = #"main" @} @end example A similar situation arises when positioning a temporary lyrics @@ -1952,7 +1952,7 @@ the @code{#}@tie{}character. Contexts properties are usually named in @code{studlyCaps}. They mostly control the translation from -music to notation, e.g. @code{localAlterations} (for determining +music to notation, e.g., @code{localAlterations} (for determining whether to print accidentals), or @code{measurePosition} (for determining when to print a bar line). Context properties can change value over time while interpreting a piece of music; @@ -2436,7 +2436,7 @@ a context will still show the values of their respective parent's context. The lifetime and value of a context property is dynamic and only -available when music is being interpreted (i.e. @q{iterated}). At the +available when music is being interpreted (i.e., @q{iterated}). At the time of the context's creation, properties are initialized from its corresponding definitions (along with any other modifications) of that context. Any subsequent changes are achieved with any @@ -2467,7 +2467,7 @@ own grob definition. Grob definitions are accessed with a different set of commands and are manipulated using @code{\override} and @code{\revert} and have a name -starting with a capital letter (e.g. @samp{NoteHead}); whereas normal +starting with a capital letter (e.g., @samp{NoteHead}); whereas normal context properties are manipulated using @code{\set} and @code{\unset} and are named starting with a lowercase letter. @@ -2715,7 +2715,7 @@ be desirable to force a particular direction or placement. @node Articulation direction indicators @unnumberedsubsubsec Articulation direction indicators -By default some directions are always up or always down (e.g. +By default some directions are always up or always down (e.g., dynamics or fermata), while other things can alternate between up or down based on the stem direction (like slurs or accents). @@ -2732,9 +2732,9 @@ but a direction indicator is @strong{always} required before @item @code{\tweak} commands @item @code{\markup} commands @item @code{\tag} commands -@item string markups, e.g. -"string" -@item fingering instructions, e.g. @w{@code{-1}} -@item articulation shortcuts, e.g. @w{@code{-.}}, @w{@code{->}}, @w{@code{--}} +@item string markups, e.g., -"string" +@item fingering instructions, e.g., @w{@code{-1}} +@item articulation shortcuts, e.g., @w{@code{-.}}, @w{@code{->}}, @w{@code{--}} @end itemize Direction indicators affect only the next note: @@ -2764,7 +2764,7 @@ Alternatively, in many cases predefined commands exist to specify the direction. These are of the form @example -@code{\xxxUp}, @code{\xxxDown} or @code{\xxxNeutral} +\xxxUp, \xxxDown or \xxxNeutral @end example @noindent @@ -3505,7 +3505,7 @@ to print them and @code{all-invisible} to suppress them. The @code{break-visibility} property controls the visibility of key signatures and changes of clef only at the start of lines, -i.e. after a break. It has no effect on the visibility of the +i.e., after a break. It has no effect on the visibility of the key signature or clef following an explicit key change or an explicit clef change within or at the end of a line. In the following example the key signature following the explicit change @@ -4146,7 +4146,7 @@ The VerticalAlignment and VerticalAxisGroup grobs work together. VerticalAxisGroup groups together different grobs like Staff, Lyrics, etc. VerticalAlignment then vertically aligns the different grobs grouped together by VerticalAxisGroup. There is usually only one -VerticalAlignment per score but every Staff, Lyrics, etc. has its own +VerticalAlignment per score but every Staff, Lyrics, etc., has its own VerticalAxisGroup. @@ -4281,7 +4281,7 @@ the collisions to be avoided. The syntax of @code{\shape} is @example -[-]@code{\shape} @var{displacements} @var{item} +[-]\shape @var{displacements} @var{item} @end example This will reposition the control-points of @var{item} by the amounts @@ -4483,7 +4483,7 @@ or a @code{\tweak} of a spanner property. The syntax for @code{\alterBroken} is @example -[-]@code{\alterBroken} @var{property} @var{values} @var{item} +[-]\alterBroken @var{property} @var{values} @var{item} @end example The argument @var{values} is a list of values, one for each @@ -4546,7 +4546,7 @@ layout. Settings chosen for @code{\alterBroken} may be unsuitable for a spanner that is no longer broken or is split into more segments than before. Explicit use of @code{\break} can guard against this situation. - + The @code{\alterBroken} command is ineffective for spanner properties accessed before line-breaking such as @code{direction}. @@ -4567,7 +4567,7 @@ Extending LilyPond: Unpure-pure containers are useful for overriding @emph{Y-axis} spacing calculations - specifically @code{Y-offset} and @code{Y-extent} - with a -Scheme function instead of a literal (i.e. a number or pair). +Scheme function instead of a literal (i.e., a number or pair). For certain grobs, the @code{Y-extent} is based on the @code{stencil} property, overriding the stencil property of one of these will @@ -4712,7 +4712,7 @@ must return @code{#t}. @item @code{@var{@dots{}music@dots{}}} @tab normal LilyPond input, using @code{$} (in places where only -Lilypond constructs are allowed) or @code{#} (to use it as a Scheme +LilyPond constructs are allowed) or @code{#} (to use it as a Scheme value or music function argument or music inside of music lists) to reference arguments (eg. @samp{#arg1}). @@ -4743,7 +4743,7 @@ are also allowed. Notation Reference: @ref{Predefined type predicates}. -Extending Lilypond: +Extending LilyPond: @rextend{Music functions}. Installed Files: diff --git a/Documentation/notation/chords.itely b/Documentation/notation/chords.itely index 7e2e1e3544..acc8f14f9d 100644 --- a/Documentation/notation/chords.itely +++ b/Documentation/notation/chords.itely @@ -848,11 +848,16 @@ In figure mode, a group of bass figures is delimited by @end lilypond -Accidentals (including naturals) can be added to figures: +Accidentals (including naturals) may be used for modifying scale steps. +These are entered by appending @code{+} (for sharps), @code{-} (for flats) +or @code{!} (for naturals) after the number. For double accidentals the +modifier is applied twice. For the modification of the third step the +number is often omitted, which can be achieved by using @code{_} instead +of a number. @lilypond[verbatim,quote,ragged-right] \figures { - <7! 6+ 4-> <5++> <3--> + <7! 6+ 4-> <5++> <3--> < _+ > < 7 _!> } @end lilypond @@ -873,11 +878,11 @@ sixth steps) can be created: } @end lilypond -Vertical spaces and brackets can be included in figures: +Brackets can be included in figures: @lilypond[verbatim,quote,ragged-right] \figures { - <[12 _!] 8 [6 4]> + <[12] 8 [6 4]> } @end lilypond diff --git a/Documentation/notation/contemporary.itely b/Documentation/notation/contemporary.itely index 665a847d7f..8a0466903b 100644 --- a/Documentation/notation/contemporary.itely +++ b/Documentation/notation/contemporary.itely @@ -142,7 +142,7 @@ addressed in @ref{Grouping staves}. @unnumberedsubsubsec Extended polymetric notation @ignore - Extended examples e.g. different instruments + Extended examples e.g., different instruments or ensembles with independent tempi @end ignore diff --git a/Documentation/notation/editorial.itely b/Documentation/notation/editorial.itely index e329810ae5..b1fbb8b1c9 100644 --- a/Documentation/notation/editorial.itely +++ b/Documentation/notation/editorial.itely @@ -270,7 +270,7 @@ The following shorthand commands are also available: Font size changes are achieved by scaling the design size that is closest to the desired size. The standard font size (for @w{@code{font-size = 0}}) depends on the standard staff height. -For a 20pt staff, a 11pt font is selected. +For a 20pt staff, an 11pt font is selected. @predefined @@ -350,7 +350,7 @@ Markup texts or strings may be used for finger changes. @funindex \thumb -A thumb-script can be added (e.g. cello music) to indicate +A thumb-script can be added (e.g., cello music) to indicate that a note should be played with the thumb. @lilypond[verbatim,quote] diff --git a/Documentation/notation/expressive.itely b/Documentation/notation/expressive.itely index defe8ad946..3c249389c2 100644 --- a/Documentation/notation/expressive.itely +++ b/Documentation/notation/expressive.itely @@ -304,7 +304,7 @@ or @notation{decrescendo} mark, it will end at the centre of the note that has the next @code{\<} or @code{\>} assigned to it. The next hairpin will then start at the right edge of the same note instead of the usual left edge had it been terminated with @code{\!} -before. +before. A hairpin ending on a downbeat will stop at the preceding bar line. @lilypond[verbatim,quote] \relative { @@ -446,6 +446,8 @@ items such as text scripts, text spanners, and piano pedal marks. @snippets +@cindex hairpins at bar lines + @lilypondfile[verbatim,quote,texidoc,doctitle] {setting-hairpin-behavior-at-bar-lines.ly} @@ -683,7 +685,8 @@ occurences of outer slurs actually indicate phrasing, and phrasing slurs may overlap a regular slur, see @ref{Phrasing slurs}. When multiple regular slurs are needed in a single @code{Voice}, matching slur starts and ends need to be labelled by preceding -them with @code{\=} followed by an identifying number or string. +them with @code{\=} followed by an identifying key (a symbol or +non-negative integer). @lilypond[verbatim,quote] \fixed c' { @@ -1224,7 +1227,7 @@ information, see @ref{Ties}. @code{\arpeggioArrowDown}, @code{\arpeggioNormal}, @code{\arpeggioBracket}, -@code{\arpeggioParenthesis} +@code{\arpeggioParenthesis}, @code{\arpeggioParenthesisDashed}. @endpredefined diff --git a/Documentation/notation/fretted-strings.itely b/Documentation/notation/fretted-strings.itely index a69f678735..5a7676d646 100644 --- a/Documentation/notation/fretted-strings.itely +++ b/Documentation/notation/fretted-strings.itely @@ -194,7 +194,7 @@ calligraphic tablature clef is added automatically. @end lilypond Default tablatures do not contain any symbols for tone duration nor any -other musical symbols such as e.g. expressive marks. +other musical symbols such as expressive marks, for example. @lilypond[quote,ragged-right,verbatim] symbols = { @@ -668,7 +668,7 @@ one for each string, ordered by string number from 1 to N, where string 1 is at the top of the tablature staff and string N is at the bottom. This ordinarily results in ordering from highest pitch to lowest pitch, but some instruments -(e.g. ukulele) do not have strings ordered by pitch. +(e.g., ukulele) do not have strings ordered by pitch. A string pitch in a string tuning list is a LilyPond pitch object. Pitch objects are created with the Scheme function @@ -1825,7 +1825,7 @@ music = \relative { Another playing technique (especially used on electric guitars) is called @notation{palm mute}. The string is hereby partly muted by the -palm of the striking hand (hence the name). Lilypond supports +palm of the striking hand (hence the name). LilyPond supports the notation of palm mute-style notes by changing the note head to a triangle shape. @@ -2019,7 +2019,7 @@ LilyPond supports tablature for lute. To get additional bass strings use @code{additionalBassStrings}, where the pitches of those strings are set. They will be printed below lowest line as: -a, /a, //a, ///a, 4, 5 etc. +a, /a, //a, ///a, 4, 5, etc. @code{fret-letter-tablature-format} for @code{tablatureFormat} should be used, probably @code{fretLabels} for further customizing. diff --git a/Documentation/notation/input.itely b/Documentation/notation/input.itely index ce33708eac..f131cd6012 100644 --- a/Documentation/notation/input.itely +++ b/Documentation/notation/input.itely @@ -228,7 +228,7 @@ input file, LilyPond will implicitly treat the whole file as a single \book block, see @ref{File structure}. -When producing multiple files from a single source file, Lilypond +When producing multiple files from a single source file, LilyPond ensures that none of the output files from any @code{\book} block overwrites the output file produced by a preceding @code{\book} from the same input file. @@ -273,10 +273,10 @@ will produce @funindex \bookOutputSuffix @funindex \bookOutputName -Lilypond provides facilities to allow you to control what file names +LilyPond provides facilities to allow you to control what file names are used by the various back-ends when producing output files. -In the previous section, we saw how Lilypond prevents name-clashes when +In the previous section, we saw how LilyPond prevents name-clashes when producing several outputs from a single source file. You also have the ability to specify your own suffixes for each @code{\book} block, so for example you can produce files called @@ -365,9 +365,9 @@ A direct scheme expression, such as @code{#(ly:set-option 'point-and-click #f)}. @item -A @code{\header} block. This sets the global (i.e. the top of +A @code{\header} block. This sets the global (i.e., the top of file) header block. This is the block containing the default -settings of titling fields like composer, title, etc. for all +settings of titling fields like composer, title, etc., for all books within the file (see @ref{Titles explained}). @item @@ -496,11 +496,11 @@ circumstances to avoid errors: @item Around every opening and closing curly bracket. -@item After every command or variable, i.e. every item that +@item After every command or variable, i.e., every item that begins with a @code{\} sign. @item After every item that is to be interpreted as a Scheme -expression, i.e. every item that begins with a @code{#}@tie{}sign. +expression, i.e., every item that begins with a @code{#}@tie{}sign. @item To separate all elements of a Scheme expression. @@ -531,7 +531,7 @@ some pieces include a lot more information. @menu * Creating titles headers and footers:: * Custom titles headers and footers:: -* Creating PDF metadata:: +* Creating output file metadata:: * Creating footnotes:: * Reference to page numbers:: * Table of contents:: @@ -1119,16 +1119,16 @@ markup conditionally to header and footer text defined within the @code{\paper} block, using the following syntax: @example -@code{variable} = @code{\markup} @{ +variable = \markup @{ @dots{} - @code{\on-the-fly} \@var{procedure} @var{markup} + \on-the-fly \@var{procedure} @var{markup} @dots{} @} @end example The @var{procedure} is called each time the @code{\markup} command in which it appears is evaluated. The @var{procedure} should test -for a particular condition and interpret (i.e. print) the +for a particular condition and interpret (i.e., print) the @var{markup} argument if and only if the condition is true. A number of ready-made procedures for testing various conditions are @@ -1185,8 +1185,8 @@ Several @code{\on-the-fly} conditions can be combined with an @q{and} operation, for example, @example - @code{\on-the-fly \first-page} - @code{\on-the-fly \last-page} + \on-the-fly \first-page + \on-the-fly \last-page @code{@{ \markup @dots{} \fromproperty #'header: @dots{} @}} @end example @@ -1200,21 +1200,30 @@ Notation Reference: Installed Files: @file{../ly/titling-init.ly}. -@node Creating PDF metadata -@subsection Creating PDF metadata +@node Creating output file metadata +@subsection Creating output file metadata @cindex PDF metadata +@cindex MIDI metadata In addition to being shown in the printed output, @code{\header} variables -are also used to set PDF metadata (the information displayed by PDF readers -as the @code{properties} of the PDF file). For example, setting the -@code{title} property of the @code{header} block @q{Symphony I} will also give -this title to the PDF document. - -@example - @code{\header@{} - @code{title = "Symphony I"} - @code{@}} +are also used to set metadata for output files. For example, with PDF +files, this metadata could be displayed by PDF readers as the +@code{properties} of the PDF file. For each type of output file, only the +@code{\header} definitions of blocks that define separate files of that +type, and blocks higher in the block hierarchy, will be consulted. +Therefore, for PDF files, only the @code{\book} level and the top level +@code{\header} definitions affect the document-wide PDF metadata, whereas +for MIDI files, all headers above or at the @code{\score} level are used. + +For example, setting the @code{title} property of the @code{header} block +to @q{Symphony I} will also give this title to the PDF document, and use +it as the sequence name of the MIDI file. + +@example +\header@{ + title = "Symphony I" +@} @end example If you want to set the title of the printed output to one value, but have the @@ -1222,10 +1231,10 @@ title property of the PDF to have a different value, you can use @code{pdftitle}, as below. @example - @code{\header@{} - @code{title = "Symphony I"} - @code{pdftitle = "Symphony I by Beethoven"} - @code{@}} +\header@{ + title = "Symphony I" + pdftitle = "Symphony I by Beethoven" +@} @end example The variables @code{title}, @code{subject}, @code{keywords}, @@ -1239,6 +1248,10 @@ both set to the current date and time. @code{ModDate} can be overridden by setting the header variable @code{moddate} (or @code{pdfmoddate}) to a valid PDF date string. +The @code{title} variable sets also the sequence name for MIDI. The +@code{midititle} variable can be used to set the sequence name +independently of the value used for typeset output. + @node Creating footnotes @subsection Creating footnotes @@ -1325,7 +1338,7 @@ left/bottom edge and zero implies the mark is centered on the edge. @item Context is the context in which the grob being footnoted is created. It -may be omitted if the grob is in a bottom context, e.g. a +may be omitted if the grob is in a bottom context, e.g., a @code{Voice} context. @item GrobName @@ -2206,7 +2219,7 @@ followed by a music expression. If @emph{and only if} the symbols are valid LilyPond identifiers (alphabetic characters only, no numbers, underscores, or dashes) which cannot be confused with notes, the @code{#'} may be omitted and, as a shorthand, a list of symbols -can use the dot separator: i.e. @code{\tag #'(violinI violinII)} can +can use the dot separator: i.e., @code{\tag #'(violinI violinII)} can be written @code{\tag violinI.violinII}. The same applies to @code{\keepWithTag} and @code{\removeWithTag}. @@ -2251,7 +2264,7 @@ music = \relative { } @end lilypond -Tagged filtering can be applied to articulations, texts, etc. by +Tagged filtering can be applied to articulations, texts, etc., by prepending @example @@ -2728,7 +2741,7 @@ in your source file. This will render only the last 5 measures (assuming 4/4 time signature) of every @code{\score} in the input file. For longer pieces, rendering only a small part is often an order of magnitude quicker than rendering it completely. When working on the -beginning of a score you have already typeset (e.g. to add a new part), +beginning of a score you have already typeset (e.g., to add a new part), the @code{showFirstLength} property may be useful as well. Skipping parts of a score can be controlled in a more fine-grained @@ -2882,7 +2895,7 @@ following (without taking dots into account). For example; @noindent The c will take the value of a crotchet. -@item Ornaments (i.e. mordents, trills and turns et al.) +@item Ornaments (i.e., mordents, trills and turns et al.) @item Rallentando, accelerando, ritardando and a tempo @item Slurs, including phrasing slurs @item Tenuto @@ -2907,8 +2920,8 @@ and portato @item Glissandi @item Falls and doits @item Microtonal chords -@item Rhythms entered as annotations, e.g. swing -@item Tempo changes without @code{\tempo} (e.g. entered as annotations) +@item Rhythms entered as annotations, e.g., swing +@item Tempo changes without @code{\tempo} (e.g., entered as annotations) @item Tremolos that @emph{are} entered with a @q{@code{:}[@var{number}]} value @end itemize @@ -2930,8 +2943,8 @@ To create a MIDI output file from a LilyPond input file, insert a @} @end example -@warning{ A @code{@bs{}score} block that, as well as the music, contains -only a @code{@bs{}midi} block (i.e. @emph{without} the @code{@bs{}layout} +@warning{A @code{@bs{}score} block that, as well as the music, contains +only a @code{@bs{}midi} block (i.e., @emph{without} the @code{@bs{}layout} block), will only produce MIDI output files. No notation will be printed.} @@ -2952,7 +2965,8 @@ either the @code{\book}, @code{\bookpart} or @code{\score} blocks. See @seealso Notation Reference: -@ref{File structure}. +@ref{File structure}, +@ref{Creating output file metadata}. Installed Files: @file{scm/midi.scm}. @@ -3615,7 +3629,7 @@ lilypond file.ly >display.txt @end example @funindex \void -Note that Lilypond does not just display the music expression, but +Note that LilyPond does not just display the music expression, but also interprets it (since @code{\displayLilyMusic} returns it in addition to displaying it). Just insert @code{\displayLilyMusic} into the existing music in order to get information about it. diff --git a/Documentation/notation/notation-appendices.itely b/Documentation/notation/notation-appendices.itely index 3d8bf79f43..388c8bc388 100644 --- a/Documentation/notation/notation-appendices.itely +++ b/Documentation/notation/notation-appendices.itely @@ -859,12 +859,12 @@ darkcyan darkmagenta darkyellow X color names come several variants: Any name that is spelled as a single word with capitalization -(e.g. @q{LightSlateBlue}) can also be spelled as space separated -words without capitalization (e.g. @q{light slate blue}). +(e.g., @q{LightSlateBlue}) can also be spelled as space separated +words without capitalization (e.g., @q{light slate blue}). -The word @q{grey} can always be spelled @q{gray} (e.g. @q{DarkSlateGray}). +The word @q{grey} can always be spelled @q{gray} (e.g., @q{DarkSlateGray}). -Some names can take a numerical suffix (e.g. @q{LightSalmon4}). +Some names can take a numerical suffix (e.g., @q{LightSalmon4}). @subsubheading Color Names without a numerical suffix: @@ -2366,7 +2366,7 @@ An association list or @strong{alist} for short is a Scheme pair which associates a value with a key: @w{@code{(key . value)}}. For example, in @file{scm/lily.scm}, the alist @w{@qq{type-p-name-alist}} associates certain type predicates -(e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so +(e.g., @code{ly:music?}) with names (e.g., @qq{music}) so that type-check failures can be reported with a console message that includes the name of the expected type predicate. @@ -2392,7 +2392,7 @@ performed. In Scheme, a @strong{closure} is created when a function, usually a lambda expression, is passed as a variable. The closure contains the function's code plus references to the lexical bindings of the -function's free variables (i.e. those variables used in the +function's free variables (i.e., those variables used in the expression but defined outside it). When this function is applied to different arguments later, the free variable bindings that were captured in the closure are used to obtain the values of the free diff --git a/Documentation/notation/percussion.itely b/Documentation/notation/percussion.itely index be6bc04c35..b17dd888ee 100644 --- a/Documentation/notation/percussion.itely +++ b/Documentation/notation/percussion.itely @@ -168,7 +168,7 @@ Snippets: @node Pitched percussion @unnumberedsubsubsec Pitched percussion -Certain pitched percussion instruments (e.g. xylophone, +Certain pitched percussion instruments (e.g., xylophone, vibraphone, and timpani) are written using normal staves. This is covered in other sections of the manual. diff --git a/Documentation/notation/pitches.itely b/Documentation/notation/pitches.itely index 3aa7738e2b..bfed32447e 100644 --- a/Documentation/notation/pitches.itely +++ b/Documentation/notation/pitches.itely @@ -456,7 +456,7 @@ Internals Reference: @knownissues There are no generally accepted standards for denoting -quarter-tone accidentals, so LilyPond's symbol does not conform to +quarter-tone accidentals, so LilyPond's symbols do not conform to any standard. @@ -518,7 +518,7 @@ In addition to note names, accidental suffixes may also vary depending on the language: @quotation -@multitable {@code{nederlands}} {-@code{s}/-@code{-sharp}} {-@code{ess}/-@code{es}} {-@code{ss}/-@code{x}/-@code{-sharpsharp}} {-@code{essess}/-@code{eses}} +@multitable {@code{nederlands}} {-@code{s}/-@code{-sharp}} {-@code{f}/-@code{-flat}} {-@code{ss}/-@code{x}/-@code{-sharpsharp}} {-@code{ff}/-@code{-flatflat}} @headitem Language @tab sharp @tab flat @tab double sharp @tab double flat @item @code{nederlands} @@ -841,7 +841,7 @@ relative mode within transposed music, an additional @code{\relative} must be placed inside @code{\transpose}. Triple accidentals will not be printed if using @code{\transpose}. An -@q{enharmonically equivalent} pitch will be used instead (e.g. d-flat +@q{enharmonically equivalent} pitch will be used instead (e.g., d-flat rather than e-triple-flat). @@ -903,9 +903,14 @@ music = \relative { c'8. ees16( fis8. a16 b8.) gis16 f8. d16 } @end lilypond @knownissues -Manual ties inside @code{\retrograde} will be broken and -generate warnings. Some ties can be generated automatically -by enabling @ref{Automatic note splitting}. +@code{\retrograde} is a rather simple tool. Since many events are +@q{mirrored} rather than exchanged, tweaks and directional +modifiers for opening spanners need to be added at the matching +closing spanners: @code{^(} needs to be ended by @code{^)}, every +@code{\<} or @code{\cresc} needs to be ended by @code{\!} or +@code{\endcr}, every @code{\>} or @code{\decr} needs to be ended +by @code{\enddecr}. Property-changing commands/overrides with a +lasting effect will likely cause surprises. @seealso Notation Reference: @@ -1214,6 +1219,13 @@ will be ignored. The command c'1 @end lilypond +@noindent +To be more precise, it is not the @code{\clef} command itself that +prints a clef. Instead, it sets or changes a property of the +@code{Clef_engraver}, which then decides by its own whether to +display a clef or not in the current staff. The @code{forceClef} +property overrides this decision locally to re-print a clef once. + When there is a manual clef change, the glyph of the changed clef will be smaller than normal. This behaviour can be overridden. diff --git a/Documentation/notation/rhythms.itely b/Documentation/notation/rhythms.itely index 05d71edc49..2df6cbaee7 100644 --- a/Documentation/notation/rhythms.itely +++ b/Documentation/notation/rhythms.itely @@ -186,7 +186,7 @@ Internals Reference: @c Deliberately duplicated in Durations and Rests. -gp There is no fundamental limit to rest durations (both in terms of longest and shortest), but the number of glyphs is limited: -rests from 128th to maxima (8 x whole) may be printed. +rests from 128th to maxima (8× whole) may be printed. @node Tuplets @@ -713,7 +713,7 @@ Internals Reference: @c Deliberately duplicated in Durations and Rests. -gp There is no fundamental limit to rest durations (both in terms of longest and shortest), but the number of glyphs is limited: there -are rests from 128th to maxima (8 x whole). +are rests from 128th to maxima (8× whole). @node Invisible rests @@ -981,7 +981,7 @@ Internals Reference: @cindex multi-measure rests and fingerings @knownissues -Fingerings over multi-measure rests (e.g. @code{R1*10-4}) may result +Fingerings over multi-measure rests (e.g., @code{R1*10-4}) may result in the fingering numeral colliding with the bar counter numeral. @@ -1489,7 +1489,7 @@ Internal Reference: @funindex \cadenzaOff In metered music bar lines are inserted and bar numbers are calculated -automatically. In unmetered music (i.e. cadenzas), this is not +automatically. In unmetered music (i.e., cadenzas), this is not desirable and can be @q{switched off} using the command @code{\cadenzaOn}, then @q{switched back on} at the appropriate place using @code{\cadenzaOff}. @@ -1715,7 +1715,7 @@ These are created using the @code{\compoundMeter} function. The syntax for this is: @example -\compoundMeter #'@code{(list of lists)} +\compoundMeter #'(list of lists) @end example The simplest construction is a single list, where the @emph{last} number @@ -1864,7 +1864,7 @@ For consistency with previous behavior, notes and rests with duration longer than a measure, such as @code{c1*2}, are split into notes without any scale factor, @code{@{ c1 c1 @}}. The property @code{completionFactor} controls this behavior, and setting it to -@code{#f} cause split notes and rest to have the scale factor +@code{#f} cause split notes and rests to have the scale factor of the input durations. @@ -2666,7 +2666,7 @@ all notes end before the end of a measure. @warning{An incorrect duration can cause line breaks to be inhibited, leading to a line of highly compressed music or -music which flows off the page.} +music that flows off the page.} @cindex line breaks @cindex bar lines, invisible @@ -2758,7 +2758,7 @@ However, as such ticks are typically used in Gregorian chant, it is preferable to use @code{\divisioMinima} there instead, described in the section @ref{Divisiones} in Gregorian chant. -Lilypond supports kievan notation and provides a special kievan +LilyPond supports kievan notation and provides a special kievan bar line: @lilypond[quote,fragment,verbatim] f'1 \bar "k" @@ -2941,7 +2941,7 @@ for defining span bars correctly aligned to the main bar lines: @end lilypond If additional elements are needed, LilyPond provides a simple -way to define them. For more informations on modifying or adding +way to define them. For more information on modifying or adding bar lines, see file @file{scm/bar-line.scm}. In scores with many staves, a @code{\bar} command in one staff is @@ -3432,11 +3432,23 @@ notes following the main note. \relative { c''1 \afterGrace d1 { c16[ d] } c1 } @end lilypond -This will put the grace notes after a space lasting 3/4 of the -length of the main note. The default fraction 3/4 can be changed by -setting @code{afterGraceFraction}. The following example shows -the results from setting the space at the default, at 15/16, and -finally at 1/2 of the main note. +This will place the grace notes @emph{after} the start of the main +note. The point of time where the grace notes are placed is a +given fraction of the main note's duration. The default setting +of + +@example +afterGraceFraction = 3/4 +@end example + +@noindent +may be redefined at top level. Individual @code{\afterGrace} +commands may have the fraction specified right after the command +itself instead. + +The following example shows the results from setting with the +default space, setting it at @code{15/16}, and finally at +@code{1/2} of the main note. @lilypond[quote,verbatim] << @@ -3444,19 +3456,17 @@ finally at 1/2 of the main note. c''1 \afterGrace d1 { c16[ d] } c1 } \new Staff \relative { - #(define afterGraceFraction (cons 15 16)) - c''1 \afterGrace d1 { c16[ d] } c1 + c''1 \afterGrace 15/16 d1 { c16[ d] } c1 } \new Staff \relative { - #(define afterGraceFraction (cons 1 2)) - c''1 \afterGrace d1 { c16[ d] } c1 + c''1 \afterGrace 1/2 d1 { c16[ d] } c1 } >> @end lilypond -The space between the main note and the grace note may also be -specified using spacers. The following example places the grace -note after a space lasting 7/8 of the main note. +The effect of @code{\afterGrace} can also be achieved using +spacers. The following example places the grace note after a +space lasting 7/8 of the main note. @lilypond[quote,verbatim] \new Voice \relative { @@ -3717,10 +3727,10 @@ The next bar line then falls at 9/8 rather than 5/4. @end lilypond @noindent -As the example illustrates, @code{ly:make-moment n m} constructs a +As the example illustrates, @code{ly:make-moment n/m} constructs a duration of n/m of a whole note. For example, -@code{ly:make-moment 1 8} is an eighth note duration and -@code{ly:make-moment 7 16} is the duration of seven sixteenths +@code{ly:make-moment 1/8} is an eighth note duration and +@code{ly:make-moment 7/16} is the duration of seven sixteenths notes. @seealso diff --git a/Documentation/notation/simultaneous.itely b/Documentation/notation/simultaneous.itely index a29dd9c4ae..d9c7fb42d4 100644 --- a/Documentation/notation/simultaneous.itely +++ b/Documentation/notation/simultaneous.itely @@ -180,7 +180,7 @@ chord. The chord repetition symbol is @code{q}: @end lilypond As with regular chords, the chord repetition symbol can be used with -durations, articulations, markups, slurs, beams, etc. as only the +durations, articulations, markups, slurs, beams, etc., as only the pitches of the previous chord are duplicated. @lilypond[verbatim,quote] @@ -559,8 +559,8 @@ upstems, and the even-numbered voices are given downstems: >> @end lilypond -@warning{Lyrics, spanners (such as slurs, ties, hairpins etc.) cannot be -created @q{across} voices.} +@warning{Lyrics and spanners (such as slurs, ties, hairpins, etc.) cannot +be created @q{across} voices.} @subsubsubheading Identical rhythms @@ -1118,12 +1118,12 @@ started when combining notes that have just started in the other @code{Voice}. This can lead to a number of unexpected issues including @qq{Solo} or @qq{Unison} marks being printed incorrectly. -@code{\partcombine} keeps all spanners (slurs, ties, hairpins etc.) in +@code{\partcombine} keeps all spanners (slurs, ties, hairpins, etc.) in the same @code{Voice} so that if any such spanners start or end in a different @code{Voice}, they may not be printed properly or at all. If the @code{\partcombine} function cannot combine both music -expressions (i.e. when both voices have different durations), it will +expressions (i.e., when both voices have different durations), it will give the voices, internally, its own custom names: @code{one} and @code{two} respectively. This means if there is any @qq{switch} to a differently named @code{Voice} context, the events in that differently diff --git a/Documentation/notation/spacing.itely b/Documentation/notation/spacing.itely index bd6d4d4b78..23ed5c0f30 100644 --- a/Documentation/notation/spacing.itely +++ b/Documentation/notation/spacing.itely @@ -570,20 +570,20 @@ the distance between two (title or top-level) markups. @funindex last-bottom-spacing the distance from the last system or top-level markup on a page to -the bottom of the printable area (i.e. the top of the bottom +the bottom of the printable area (i.e., the top of the bottom margin). @item top-system-spacing @funindex top-system-spacing -the distance from the top of the printable area (i.e. the bottom +the distance from the top of the printable area (i.e., the bottom of the top margin) to the first system on a page, when there is no (title or top-level) markup between the two. @item top-markup-spacing @funindex top-markup-spacing -the distance from the top of the printable area (i.e. the bottom +the distance from the top of the printable area (i.e., the bottom of the top margin) to the first (title or top-level) markup on a page, when there is no system between the two. @end table @@ -927,7 +927,7 @@ scores (if there are two or more scores), or by ending a score on an even-numbered page. The values of the following three variables may be increased to make these actions less likely. -The values are penalties, i.e. the higher the value the less likely +The values are penalties, i.e., the higher the value the less likely will be the associated action relative to other choices. @table @code @@ -1431,7 +1431,7 @@ issue: @end lilypond A @code{\break} command that occurrs at a bar line will also ignored if -the previous measure ends in the middle of a note (e.g. when a tuplet +the previous measure ends in the middle of a note (e.g., when a tuplet begins in one measure and ends in another). In this case remove the @code{Forbid_line_break_engraver} from the @code{Voice} context and, use a simultaneous music construction inserting the @code{\break} at the @@ -1943,7 +1943,7 @@ non-staff line if @code{staff-affinity} is @code{UP}. Each distance is measured between the @emph{reference points} of the two items. The reference point for a staff is the vertical -center of its @code{StaffSymbol} (i.e. the middle line if +center of its @code{StaffSymbol} (i.e., the middle line if @code{line-count} is odd; the middle space if @code{line-count} is even). The reference points for individual non-staff lines are given in the following table: @@ -2107,7 +2107,7 @@ non-staff line. Choices are @code{UP}, @code{DOWN}, and placed equidistant between the two nearest staves on either side, unless collisions or other spacing constraints prevent this. Adjacent non-staff lines should have non-increasing -@code{staff-affinity} from top to bottom, e.g. a non-staff line +@code{staff-affinity} from top to bottom, e.g., a non-staff line set to @code{UP} should not immediately follow one that is set to @code{DOWN}. Non-staff lines at the top of a system should use @code{DOWN}; those at the bottom should use @code{UP}. Setting @@ -2333,7 +2333,7 @@ Internals Reference: @emph{Non-staff lines} (such as @code{Lyrics}, @code{ChordNames}, etc.) are contexts whose layout objects are engraved like staves -(i.e. in horizontal lines within systems). Specifically, +(i.e., in horizontal lines within systems). Specifically, non-staff lines are non-staff contexts that contain the @rinternals{Axis_group_engraver}. diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index ce859e2bb5..a114434664 100644 --- a/Documentation/notation/staff.itely +++ b/Documentation/notation/staff.itely @@ -1326,7 +1326,7 @@ It is possible to adjust which aspects of the music are quoted with property. Its default value is @code{'(note-event rest-event tie-event beam-event tuplet-span-event)}, which means that only notes, rests, ties, beams and tuplets are quoted, but not -articulations, dynamic marks, markup etc. +articulations, dynamic marks, markup, etc. @warning{When a @code{Voice} starts with @code{\cueDuring}, as in the following example, the @code{Voice} context must be explicitly declared, diff --git a/Documentation/notation/text.itely b/Documentation/notation/text.itely index 22471b86b3..4d1f44a4e4 100644 --- a/Documentation/notation/text.itely +++ b/Documentation/notation/text.itely @@ -121,7 +121,7 @@ Internals Reference: @knownissues Checking to make sure that text scripts and lyrics are within the -margins requires additonal calculations. In cases where slightly faster +margins requires additional calculations. In cases where slightly faster performance is desired, use @example @@ -505,7 +505,7 @@ Installed Files: @file{scm/markup.scm}. @knownissues -Syntax errors for markup mode can be confusing. +Syntax error messages for markup mode can be confusing. @node Selecting font and font size @@ -543,9 +543,9 @@ Basic font switching is supported in markup mode: @funindex \magnify The font size can be altered, relative to the global staff size, in a -number of different ways +number of different ways. -It can be set to predefined size, +It can be set to predefined size. @lilypond[quote,verbatim] \relative b' { @@ -555,7 +555,7 @@ It can be set to predefined size, } @end lilypond -It can be set relative to its previous value, +It can be set relative to its previous value. @lilypond[quote,verbatim] \relative b' { @@ -566,7 +566,7 @@ It can be set relative to its previous value, @end lilypond It can be increased or decreased relative to the value set by the -global staff size, +global staff size. @lilypond[quote,verbatim] \relative b' { @@ -577,7 +577,7 @@ global staff size, @end lilypond It can also be set to a fixed point-size, regardless of the global staff -size, +size. @lilypond[quote,verbatim] \relative b' { diff --git a/Documentation/notation/unfretted-strings.itely b/Documentation/notation/unfretted-strings.itely index becdc6f3e1..f3eae55765 100644 --- a/Documentation/notation/unfretted-strings.itely +++ b/Documentation/notation/unfretted-strings.itely @@ -198,10 +198,6 @@ dots are required. } @end lilypond -@warning{@code{@bs{}harmonic} @strong{must} be placed inside a -chord construct even if there is only a single note. Normally -@code{@bs{}harmonicsOn} would be used in this situation.} - @seealso Music Glossary: @rglos{harmonics}. diff --git a/Documentation/notation/vocal.itely b/Documentation/notation/vocal.itely index b06de6f40b..118a58e482 100644 --- a/Documentation/notation/vocal.itely +++ b/Documentation/notation/vocal.itely @@ -63,7 +63,7 @@ introduction to this notation is to be found in @item Vocal music is likely to require the use of @code{markup} mode, either for lyrics or for other text elements (characters' names, -etc.) This syntax is described in @ref{Text markup introduction}. +etc.). This syntax is described in @ref{Text markup introduction}. @item @notation{Ambitus} may be added at the beginning of vocal staves, @@ -791,11 +791,11 @@ should be included in the melisma: @predefined - @code{\autoBeamOff}, @code{\autoBeamOn}, @code{\melisma}, @code{\melismaEnd}. +@endpredefined @seealso Musical Glossary: @@ -1902,7 +1902,7 @@ are to be ignored. @cindex grace notes and lyrics @cindex lyrics on grace notes -By default, grace notes (e.g. via @code{\grace}) do not get assigned +By default, grace notes (e.g., via @code{\grace}) do not get assigned syllables when using @code{\lyricsto}, but this behavior can be changed: @@ -2300,6 +2300,7 @@ When a vocal part temporarily splits, you should use @code{\oneVoice}, @code{\voiceOne}, @code{\voiceTwo}. +@endpredefined @seealso Learning Manual: @@ -2392,7 +2393,10 @@ above their respective staves, as shown here: @end lilypond @predefined -@code{\dynamicUp}, @code{\dynamicDown}, @code{\dynamicNeutral}. +@code{\dynamicUp}, +@code{\dynamicDown}, +@code{\dynamicNeutral}. +@endpredefined @seealso Notation Reference: diff --git a/Documentation/po/ca.po b/Documentation/po/ca.po index 3b80f6da0d..ff8e942dc9 100644 --- a/Documentation/po/ca.po +++ b/Documentation/po/ca.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-04-25 19:39+0200\n" -"PO-Revision-Date: 2014-06-09 09:09+0200\n" +"PO-Revision-Date: 2016-07-04 11:28+0200\n" "Last-Translator: Walter Garcia-Fontes \n" "Language-Team: Catalan \n" "Language: ca\n" @@ -42,7 +42,7 @@ msgstr "Altres idiomes: %s." #: postprocess_html.py:70 #, python-format msgid "About automatic language selection." -msgstr "Quant a selecció automàtica de l'idioma." +msgstr "Quant a la selecció automàtica de la llengua." #: postprocess_html.py:327 msgid "stable-branch" @@ -532,7 +532,7 @@ msgstr "Interfícies per a programadors" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "Blocs de codi del LilyPond" #. @node in Documentation/extending/programming-interface.itely @@ -6480,7 +6480,7 @@ msgstr "Inserció de la sortida del LilyPond dins d'altres programes" #. @node in Documentation/usage/external.itely #. @unnumberedsubsec in Documentation/usage/external.itely msgid "Inserting LilyPond output into other programs" -msgstr "Inserció de la sortida del Lilypond dins d'altres programes" +msgstr "Inserció de la sortida del LilyPond dins d'altres programes" #. @node in Documentation/usage/external.itely msgid "Independent includes" @@ -11343,7 +11343,7 @@ msgstr "estigui al domini públic i pugui formar part, usar-se i presentar-se di #. Documentation/snippets/unfretted-headword.ly:37 (comment) msgid "the LilyPond Documention Project." -msgstr "Projecte de Documentació del Lilypond." +msgstr "Projecte de Documentació del LilyPond." #. Documentation/snippets/unfretted-headword.ly:39 (comment) msgid "Statement Date: Octber the 9th, 2008" diff --git a/Documentation/po/cs.po b/Documentation/po/cs.po index 466ac3afaa..50d0b4c65d 100644 --- a/Documentation/po/cs.po +++ b/Documentation/po/cs.po @@ -528,7 +528,7 @@ msgstr "Rozhraní pro programátory" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely #, fuzzy -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "Složené proměnné v LilyPondu" #. @node in Documentation/extending/programming-interface.itely diff --git a/Documentation/po/de.po b/Documentation/po/de.po index 9d2033aa3a..ae9c105c7e 100644 --- a/Documentation/po/de.po +++ b/Documentation/po/de.po @@ -523,7 +523,7 @@ msgstr "Schnittstellen für Programmierer" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely #, fuzzy -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "Zusammengesetzte LilyPond-Variablen" #. @node in Documentation/extending/programming-interface.itely diff --git a/Documentation/po/es.po b/Documentation/po/es.po index ccde9e84a3..1bd8ddb3f7 100644 --- a/Documentation/po/es.po +++ b/Documentation/po/es.po @@ -536,7 +536,7 @@ msgstr "Interfaces para programadores" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "Bloques de código de LilyPond" #. @node in Documentation/extending/programming-interface.itely diff --git a/Documentation/po/fr.po b/Documentation/po/fr.po index 5553c33154..dcc94ff474 100644 --- a/Documentation/po/fr.po +++ b/Documentation/po/fr.po @@ -514,7 +514,7 @@ msgstr "Interfaces pour programmeurs" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "Blocs de code lilyPond" #. @node in Documentation/extending/programming-interface.itely diff --git a/Documentation/po/hu.po b/Documentation/po/hu.po index abfdfb7078..ddddf92454 100644 --- a/Documentation/po/hu.po +++ b/Documentation/po/hu.po @@ -537,7 +537,7 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely #, fuzzy -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "lilypond-book sablonok" #. @node in Documentation/extending/programming-interface.itely diff --git a/Documentation/po/it.po b/Documentation/po/it.po index 710e4b35a1..1fbf062985 100644 --- a/Documentation/po/it.po +++ b/Documentation/po/it.po @@ -519,7 +519,7 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "" #. @node in Documentation/extending/programming-interface.itely diff --git a/Documentation/po/ja.po b/Documentation/po/ja.po index 76ffe4467f..588306bcdb 100644 --- a/Documentation/po/ja.po +++ b/Documentation/po/ja.po @@ -558,7 +558,7 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely #, fuzzy -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "環境変数" #. @node in Documentation/extending/programming-interface.itely diff --git a/Documentation/po/nl.po b/Documentation/po/nl.po index 0ce4b27c82..ae8d4bb1a8 100644 --- a/Documentation/po/nl.po +++ b/Documentation/po/nl.po @@ -518,7 +518,7 @@ msgstr "" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "" #. @node in Documentation/extending/programming-interface.itely diff --git a/Documentation/po/zh.po b/Documentation/po/zh.po index aaa66c2b1c..1da3bcfe81 100644 --- a/Documentation/po/zh.po +++ b/Documentation/po/zh.po @@ -515,7 +515,7 @@ msgstr "面向程序员的界面" #. @node in Documentation/extending/programming-interface.itely #. @section in Documentation/extending/programming-interface.itely -msgid "Lilypond code blocks" +msgid "LilyPond code blocks" msgstr "LilyPond 代码块" #. @node in Documentation/extending/programming-interface.itely diff --git a/Documentation/snippets/engravers-one-by-one.ly b/Documentation/snippets/engravers-one-by-one.ly index 5d1bcf060c..f9ca655110 100644 --- a/Documentation/snippets/engravers-one-by-one.ly +++ b/Documentation/snippets/engravers-one-by-one.ly @@ -4,7 +4,7 @@ %% and then run scripts/auxiliar/makelsr.py %% %% This file is in the public domain. -\version "2.19.7" +\version "2.19.46" \header { lsrtags = "contexts-and-engravers, specific-notation" @@ -89,8 +89,6 @@ MyStaff = \context { \description "Handles clefs, bar lines, keys, accidentals. It can contain @code{Voice} contexts." - \consists "Output_property_engraver" - \consists "Font_size_engraver" \consists "Volta_engraver" @@ -138,7 +136,6 @@ MyVoice = \context { \consists "Font_size_engraver" % must come before all - \consists "Output_property_engraver" \consists "Arpeggio_engraver" \consists "Multi_measure_rest_engraver" \consists "Text_spanner_engraver" diff --git a/Documentation/translations.itexi b/Documentation/translations.itexi index a12eb1c585..4bf76663c0 100644 --- a/Documentation/translations.itexi +++ b/Documentation/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{Last updated Sat Jul 2 15:06:05 UTC 2016 +@emph{Last updated Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.333333333333 0.333333333333 0.333333333333 @@ -27,7 +27,7 @@ LilyPond Changes @item Section titles @* -(2393) +(2449) @tab Francisco Vila @* @@ -77,7 +77,7 @@ up to date @item LilyPond --- \TITLE\ @* -(1139) +(1138) @tab Francisco Vila @* @@ -256,7 +256,7 @@ up to date @item LilyPond --- \TITLE\ @* -(1139) +(1138) @tab Till Paala @* @@ -817,7 +817,7 @@ up to date @item LilyPond --- \TITLE\ @* -(1139) +(1138) @tab Till Paala @* @@ -1404,7 +1404,7 @@ partially up to date @item LilyPond --- \TITLE\ @* -(1139) +(1138) @tab Walter Garcia-Fontes @* @@ -2734,7 +2734,7 @@ not translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -2843,7 +2843,7 @@ partially translated (95 %) @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -3362,10 +3362,11 @@ up to date @end multitable -@multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 +@multitable @columnfractions 0.142857142857 0.142857142857 0.142857142857 0.142857142857 0.142857142857 0.142857142857 0.142857142857 @headitem LilyPond Notation Reference +@tab ca @tab de @tab es @tab fr @@ -3375,6 +3376,29 @@ LilyPond Notation Reference Section titles @* (326) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -3495,7 +3519,30 @@ partially up to date @item LilyPond --- \TITLE\ @* -(1139) +(1138) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -3617,6 +3664,29 @@ up to date 1 Musical notation @* (91) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -3737,7 +3807,30 @@ up to date @item 1.1 Pitches @* -(5169) +(5224) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +translated +@end html +@end ifhtml +@ifnothtml +translated +@end ifnothtml +@* + +@ifhtml + +@html +partially up to date +@end html +@end ifhtml +@ifnothtml +partially up to date +@end ifnothtml @tab Till Paala @* @@ -3755,7 +3848,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -3778,11 +3871,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Frédéric Chiasson @* @@ -3877,11 +3970,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -3900,7 +3993,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -3909,7 +4002,30 @@ partially up to date @item 1.2 Rhythms @* -(6795) +(6822) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -3927,7 +4043,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -3950,11 +4066,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Frédéric Chiasson @* @@ -4060,11 +4176,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -4083,7 +4199,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -4093,6 +4209,29 @@ partially up to date 1.3 Expressive marks @* (1798) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -4265,6 +4404,29 @@ partially up to date 1.4 Repeats @* (1288) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -4437,6 +4599,29 @@ partially up to date 1.5 Simultaneous notes @* (2919) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -4454,7 +4639,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -4477,11 +4662,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Frédéric Chiasson @* @@ -4578,11 +4763,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -4601,7 +4786,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -4611,6 +4796,29 @@ partially up to date 1.6 Staff notation @* (2554) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -4772,6 +4980,29 @@ partially up to date 1.7 Editorial annotations @* (1477) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -4911,6 +5142,29 @@ partially up to date 1.8 Text @* (2754) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -5083,6 +5337,29 @@ partially up to date 2 Specialist notation @* (81) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +partially translated (2 %) +@end html +@end ifhtml +@ifnothtml +partially translated (2 %) +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -5203,7 +5480,30 @@ up to date @item 2.1 Vocal music @* -(4975) +(4977) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -5365,6 +5665,29 @@ partially up to date 2.2 Keyboard and other multi-staff instruments @* (904) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab  Till Paala @* @@ -5516,7 +5839,30 @@ partially up to date @item 2.3 Unfretted string instruments @* -(303) +(279) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -5534,7 +5880,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -5557,11 +5903,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Valentin Villenave @* @@ -5659,7 +6005,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -5668,7 +6014,30 @@ partially up to date @item 2.4 Fretted string instruments @* -(2820) +(2821) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -5808,6 +6177,29 @@ partially up to date 2.5 Percussion @* (799) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -5825,7 +6217,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -5939,7 +6331,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -5949,6 +6341,29 @@ partially up to date 2.6 Wind instruments @* (324) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -6095,12 +6510,35 @@ translated @end html @end ifhtml @ifnothtml -partially up to date +partially up to date +@end ifnothtml +@item +2.7 Chord notation +@* +(1979) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date @end ifnothtml -@item -2.7 Chord notation -@* -(1931) @tab Till Paala @* @@ -6118,7 +6556,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -6141,11 +6579,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Valentin Villenave @* @@ -6243,7 +6681,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -6253,6 +6691,29 @@ partially up to date 2.8 Contemporary music @* (475) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -6392,6 +6853,29 @@ up to date 2.9 Ancient notation @* (5516) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -6409,7 +6893,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -6511,6 +6995,29 @@ up to date 2.10 World music @* (1446) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -6671,7 +7178,30 @@ partially up to date @item 3 General input and output @* -(12704) +(12824) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -6689,7 +7219,7 @@ partially translated (94 %) @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -6712,11 +7242,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Jean-Charles Malahieude @* @@ -6780,11 +7310,11 @@ translated @ifhtml @html -up to date +partially up to date @end html @end ifhtml @ifnothtml -up to date +partially up to date @end ifnothtml @tab Yoshiki Sawada @* @@ -6792,18 +7322,18 @@ up to date @ifhtml @html -partially translated (94 %) +partially translated (95 %) @end html @end ifhtml @ifnothtml -partially translated (94 %) +partially translated (95 %) @end ifnothtml @* @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -6813,6 +7343,29 @@ partially up to date 4 Spacing issues @* (10911) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -6830,7 +7383,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -6944,7 +7497,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -6953,7 +7506,30 @@ partially up to date @item 5 Changing defaults @* -(15598) +(15597) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -7105,7 +7681,7 @@ partially translated (94 %) @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7114,7 +7690,30 @@ partially up to date @item A Notation manual tables @* -(3077) +(3079) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -7132,7 +7731,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -7236,6 +7835,29 @@ up to date B Cheat sheet @* (252) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -7375,6 +7997,29 @@ partially up to date C GNU Free Documentation License @* (3724) +@tab Walter Garcia-Fontes +@* + +@ifhtml + +@html +not translated +@end html +@end ifhtml +@ifnothtml +not translated +@end ifnothtml +@* + +@ifhtml + +@html +up to date +@end html +@end ifhtml +@ifnothtml +up to date +@end ifnothtml @tab Till Paala @* @@ -7698,7 +8343,7 @@ up to date @item LilyPond --- \TITLE\ @* -(1139) +(1138) @tab Walter Garcia-Fontes @* @@ -8751,7 +9396,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -8774,7 +9419,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -8953,7 +9598,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml @@ -9186,11 +9831,11 @@ translated @ifhtml @html -up to date + @end html @end ifhtml @ifnothtml -up to date + @end ifnothtml @tab Pavel Fric @* @@ -9450,7 +10095,7 @@ partially up to date @item LilyPond --- \TITLE\ @* -(1139) +(1138) @tab Walter Garcia-Fontes @* @@ -9798,7 +10443,7 @@ translated @ifhtml @html -partially up to date +partially up to date @end html @end ifhtml @ifnothtml diff --git a/Documentation/usage/suggestions.itely b/Documentation/usage/suggestions.itely index 56ddfe24c8..73de64e0f9 100644 --- a/Documentation/usage/suggestions.itely +++ b/Documentation/usage/suggestions.itely @@ -296,13 +296,13 @@ Another very useful debugging technique is constructing @cindex makefiles @cindex make -Pretty well all the platforms Lilypond can run on support a software +Pretty well all the platforms LilyPond can run on support a software facility called @code{make}. This software reads a special file called a @code{Makefile} that defines what files depend on what others and what commands you need to give the operating system to produce one file from another. For example the makefile would spell out how to produce @file{ballad.pdf} and @file{ballad.midi} from @file{ballad.ly} by -running Lilypond. +running LilyPond. There are times when it is a good idea to create a @code{Makefile} for your project, either for your own convenience or diff --git a/Documentation/web/introduction.itexi b/Documentation/web/introduction.itexi index 77eda53f3a..2ea2085ab9 100644 --- a/Documentation/web/introduction.itexi +++ b/Documentation/web/introduction.itexi @@ -391,7 +391,7 @@ The colors have been added for better visibility. @subheading Customized Output A short excerpt from Stockhausen's Klavierstück II to demonstrate -Lilypond's ability to provide customised output. +LilyPond's ability to provide customised output. @exampleImage{Stockhausen_Klavierstueck2} @divEnd @@ -612,8 +612,8 @@ Some highlights: version of Richard Strauss's @emph{Der Rosenkavalier} for four singers and a chamber orchestra of thirteen players. This has been commissioned by the Berlin Philharmonic Orchestra whose members will be the performers on -@uref{http://www.festspielhaus.de/veranstaltung/der-kleine-rosenkavalier-02-04-2015-1100/,April 2nd and 6th} -at the Festspielhaus, Baden-Baden, and on +@uref{http://www.festspielhaus.de/veranstaltung/der-kleine-rosenkavalier-02-04-2015-1100/,April 2nd and 6th} +at the Festspielhaus, Baden-Baden, and on @uref{http://www.berliner-philharmoniker.de/konzerte/kalender/details/21070/,April 26th} in the @emph{Philharmonie (großer Saal)}, Berlin. We are pleased to see musicians of such reputation playing from LilyPond scores -- and they are diff --git a/Documentation/web/news-front.itexi b/Documentation/web/news-front.itexi index 349678b75d..67ce189469 100644 --- a/Documentation/web/news-front.itexi +++ b/Documentation/web/news-front.itexi @@ -9,19 +9,19 @@ @c used for news about the upcoming release; see CG 10.2 @newsItem -@subheading LilyPond 2.19.45 released @emph{July 09, 2016} +@subheading LilyPond 2.19.47 released @emph{August 13, 2016} We are happy to announce the release of LilyPond -2.19.45. This release includes a number of enhancements, and contains some +2.19.47. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @newsItem -@subheading Lilypond 2.18.2 released! @emph{March 23, 2014} +@subheading LilyPond 2.18.2 released! @emph{March 23, 2014} We are proud to announce the release of GNU LilyPond 2.18.2. LilyPond is a music engraving program devoted to producing the @@ -53,7 +53,7 @@ from data encoded directly in the LilyPond score. @newsItem -@subheading Lilypond 2.18.0 released! @emph{December 29, 2013} +@subheading LilyPond 2.18.0 released! @emph{December 29, 2013} We are proud to announce the release of GNU LilyPond 2.18.0. LilyPond is a music engraving program devoted to producing the diff --git a/Documentation/web/news.itexi b/Documentation/web/news.itexi index c92da5f534..32cd7bde51 100644 --- a/Documentation/web/news.itexi +++ b/Documentation/web/news.itexi @@ -26,6 +26,30 @@ NOTE: * don't duplicate entries from news-front.itexi @end ignore +@newsItem +@subheading LilyPond 2.19.46 released @emph{July 26, 2016} + +We are happy to announce the release of LilyPond +2.19.46. 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.45 released @emph{July 09, 2016} + +We are happy to announce the release of LilyPond +2.19.45. 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.44 released @emph{June 21, 2016} @@ -33,7 +57,7 @@ We are happy to announce the release of LilyPond 2.19.44. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -45,7 +69,7 @@ We are happy to announce the release of LilyPond 2.19.43. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -57,7 +81,7 @@ We are happy to announce the release of LilyPond 2.19.42. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -69,7 +93,7 @@ We are happy to announce the release of LilyPond 2.19.41. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -81,7 +105,7 @@ We are happy to announce the release of LilyPond 2.19.40. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -93,7 +117,7 @@ We are happy to announce the release of LilyPond 2.19.39. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -105,7 +129,7 @@ We are happy to announce the release of LilyPond 2.19.38. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -117,7 +141,7 @@ We are happy to announce the release of LilyPond 2.19.37. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -129,7 +153,7 @@ We are happy to announce the release of LilyPond 2.19.36. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -141,7 +165,7 @@ We are happy to announce the release of LilyPond 2.19.35. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -153,7 +177,7 @@ We are happy to announce the release of LilyPond 2.19.34. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -165,7 +189,7 @@ We are happy to announce the release of LilyPond 2.19.33. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -177,7 +201,7 @@ We are happy to announce the release of LilyPond 2.19.32. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -189,7 +213,7 @@ We are happy to announce the release of LilyPond 2.19.31. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -201,7 +225,7 @@ We are happy to announce the release of LilyPond 2.19.30. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -213,7 +237,7 @@ We are happy to announce the release of LilyPond 2.19.29. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -225,7 +249,7 @@ We are happy to announce the release of LilyPond 2.19.28. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -237,7 +261,7 @@ We are happy to announce the release of LilyPond 2.19.27. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -249,7 +273,7 @@ We are happy to announce the release of LilyPond 2.19.26. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -261,7 +285,7 @@ We are happy to announce the release of LilyPond 2.19.25. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -273,7 +297,7 @@ We are happy to announce the release of LilyPond 2.19.24. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -285,7 +309,7 @@ We are happy to announce the release of LilyPond 2.19.23. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -297,7 +321,7 @@ We are happy to announce the release of LilyPond 2.19.22. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -309,7 +333,7 @@ We are happy to announce the release of LilyPond 2.19.21. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -321,7 +345,7 @@ We are happy to announce the release of LilyPond 2.19.20. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -333,7 +357,7 @@ We are happy to announce the release of LilyPond 2.19.19. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -345,7 +369,7 @@ We are happy to announce the release of LilyPond 2.19.18. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -357,7 +381,7 @@ We are happy to announce the release of LilyPond 2.19.17. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -369,7 +393,7 @@ At long last, we are very happy to announce the release of LilyPond 2.19.16. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. We would like to acknowledge and thank Masamichi Hosoda for making this @@ -384,7 +408,7 @@ We are happy to announce the release of LilyPond 2.19.15. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -396,7 +420,7 @@ We are happy to announce the release of LilyPond 2.19.14. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -408,7 +432,7 @@ We are happy to announce the release of LilyPond 2.19.13. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -420,7 +444,7 @@ We are happy to announce the release of LilyPond 2.19.12. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -432,7 +456,7 @@ We are happy to announce the release of LilyPond 2.19.11. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -444,7 +468,7 @@ We are happy to announce the release of LilyPond 2.19.10. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -456,7 +480,7 @@ We are happy to announce the release of LilyPond 2.19.9. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -468,7 +492,7 @@ We are happy to announce the release of LilyPond 2.19.8. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -480,7 +504,7 @@ We are happy to announce the release of LilyPond 2.19.7. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -492,7 +516,7 @@ We are happy to announce the release of LilyPond 2.19.6. 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 +require a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -504,7 +528,7 @@ We are happy to announce the release of LilyPond 2.19.5. 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. +a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -515,7 +539,7 @@ We are happy to announce the release of LilyPond 2.19.4. 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. +a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -548,7 +572,7 @@ We are happy to announce the release of LilyPond 2.19.3. 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. +a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -573,7 +597,7 @@ We are happy to announce the release of LilyPond 2.19.2. 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. +a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -584,7 +608,7 @@ We are happy to announce the release of LilyPond 2.19.1. 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. +a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -595,7 +619,7 @@ We are happy to announce the release of LilyPond 2.19.0. 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. +a stable version of LilyPond, we recommend using the 2.18 version. @newsEnd @@ -649,7 +673,7 @@ We are happy to announce the release of LilyPond 2.17.29. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -660,7 +684,7 @@ We are happy to announce the release of LilyPond 2.17.28. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -671,7 +695,7 @@ We are happy to announce the release of LilyPond 2.17.27. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -682,7 +706,7 @@ We are happy to announce the release of LilyPond 2.17.26. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -693,7 +717,7 @@ We are happy to announce the release of LilyPond 2.17.25. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -704,7 +728,7 @@ We are happy to announce the release of LilyPond 2.17.24. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -715,7 +739,7 @@ We are happy to announce the release of LilyPond 2.17.23. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -726,7 +750,7 @@ We are happy to announce the release of LilyPond 2.17.22. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. This update cures the issue with the Windows version crashing with a problem with positioning text. @@ -740,7 +764,7 @@ We are happy to announce the release of LilyPond 2.17.21. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -751,7 +775,7 @@ We are happy to announce the release of LilyPond 2.17.20. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -770,7 +794,7 @@ We are happy to announce the release of LilyPond 2.17.19. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -781,7 +805,7 @@ We are happy to announce the release of LilyPond 2.17.18. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -792,7 +816,7 @@ We are happy to announce the release of LilyPond 2.17.17. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -803,7 +827,7 @@ We are happy to announce the release of LilyPond 2.17.16. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -814,7 +838,7 @@ We are happy to announce the release of LilyPond 2.17.15. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -826,7 +850,7 @@ release contains the usual number of bugfixes (including putting span bars back where they should be) and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -837,7 +861,7 @@ We are happy to announce the release of LilyPond 2.17.13. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -848,7 +872,7 @@ We are happy to announce the release of LilyPond 2.17.12. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -859,7 +883,7 @@ We are happy to announce the release of LilyPond 2.17.11. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -870,7 +894,7 @@ We are happy to announce the release of LilyPond 2.17.10. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -890,7 +914,7 @@ We are happy to announce the release of LilyPond 2.17.9. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -901,7 +925,7 @@ We are happy to announce the release of LilyPond 2.17.8. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -912,7 +936,7 @@ We are happy to announce the release of LilyPond 2.17.7. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -956,7 +980,7 @@ We are happy to announce the release of LilyPond 2.17.6. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -967,7 +991,7 @@ We are happy to announce the release of LilyPond 2.17.5. This release contains the usual number of bugfixes and 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.16 version. +a stable version of LilyPond, we recommend using the 2.16 version. @newsEnd @@ -1023,7 +1047,7 @@ and instead use the stable 2.16 version. @newsEnd @newsItem -@subheading Lilypond 2.16.0 released! @emph{August 24, 2012} +@subheading LilyPond 2.16.0 released! @emph{August 24, 2012} We are proud to announce the release of GNU LilyPond 2.16.0. LilyPond is a music engraving program, devoted to producing the @@ -1086,7 +1110,7 @@ Jean-Charles Malahieude, Till Paala, Yoshiki Sawada @newsEnd @newsItem -@subheading Lilypond 2.15.95 released! @emph{August 11, 2012} +@subheading LilyPond 2.15.95 released! @emph{August 11, 2012} We are excited to announce the release of LilyPond 2.15.95. With this release, development on version 2.15 is frozen for the diff --git a/Documentation/zh/translations.itexi b/Documentation/zh/translations.itexi index 48e5871a2e..099f6ede96 100644 --- a/Documentation/zh/translations.itexi +++ b/Documentation/zh/translations.itexi @@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; } @end html @end ifhtml -@emph{最近更新 Sat Jul 2 15:06:05 UTC 2016 +@emph{最近更新 Sun Aug 7 13:59:13 UTC 2016 } @multitable @columnfractions 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 @@ -59,7 +59,7 @@ Anthony Fok @item LilyPond --- \TITLE\ @* -1139 +1138 @tab Ben Luo @* Anthony Fok diff --git a/INSTALL.txt b/INSTALL.txt index 25572a1616..b285145bd2 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -1,10 +1,7 @@ INSTALL - compiling and installing GNU LilyPond *********************************************** -Table of Contents -***************** -INSTALL - compiling and installing GNU LilyPond 1 Compilation 1.1 Overview of compiling 1.2 Requirements @@ -17,24 +14,24 @@ INSTALL - compiling and installing GNU LilyPond Other 1.2.3 Requirements for building documentation 1.3 Getting the source code - 1.4 Configuring `make' - 1.4.1 Running `./autogen.sh' - 1.4.2 Running `../configure' + 1.4 Configuring ‘make’ + 1.4.1 Running ‘./autogen.sh’ + 1.4.2 Running ‘../configure’ Configuration options Checking build dependencies Configuring target directories 1.5 Compiling LilyPond - 1.5.1 Using `make' - 1.5.2 Saving time with the `-j' option + 1.5.1 Using ‘make’ + 1.5.2 Saving time with the ‘-j’ option 1.5.3 Compiling for multiple platforms - 1.5.4 Useful `make' variables + 1.5.4 Useful ‘make’ variables 1.6 Post-compilation options 1.6.1 Installing LilyPond from a local build 1.6.2 Generating documentation - Documentation editor's edit/compile cycle + Documentation editor’s edit/compile cycle Building documentation Building a single document - Saving time with `CPU_COUNT' + Saving time with ‘CPU_COUNT’ AJAX search Installing documentation Building documentation without compiling @@ -47,8 +44,6 @@ INSTALL - compiling and installing GNU LilyPond Using lilypond python libraries 1.8 Concurrent stable and development versions 1.9 Build system - - 1 Compilation ************* @@ -60,7 +55,7 @@ recommended for developers and packagers. Typical program users are instead encouraged to obtain the program from a package manager (on Unix) or by downloading a precompiled binary configured for a specific operating system. Pre-compiled binaries are available on the *note -Download: (lilypond-web)Download. page. +(lilypond-web)Download:: page. Compiling LilyPond from source is necessary if you want to build, install, or test your own version of the program. @@ -68,13 +63,13 @@ install, or test your own version of the program. A successful compile can also be used to generate and install the documentation, incorporating any changes you may have made. However, a successful compile is not a requirement for generating the -documentation. The documentation can be built using a Git repository -in conjunction with a locally installed copy of the program. For more +documentation. The documentation can be built using a Git repository in +conjunction with a locally installed copy of the program. For more information, see *note Building documentation without compiling::. Attempts to compile LilyPond natively on Windows have been -unsuccessful, though a workaround is available (see *note LilyDev: -(lilypond-contributor)LilyDev.). +unsuccessful, though a workaround is available (see *note +(lilypond-contributor)LilyDev::). 1.2 Requirements ================ @@ -85,23 +80,23 @@ unsuccessful, though a workaround is available (see *note LilyDev: This section contains the list of separate software packages that are required to run LilyPond. - * DejaVu fonts (http://www.dejavu-fonts.org/) These are normally + • DejaVu fonts (http://www.dejavu-fonts.org/) These are normally installed by default. - * FontConfig (http://www.fontconfig.org/) Use version 2.4.0 or newer. + • FontConfig (http://www.fontconfig.org/) Use version 2.4.0 or newer. - * Freetype (http://www.freetype.org/) Use version 2.1.10 or newer. + • Freetype (http://www.freetype.org/) Use version 2.1.10 or newer. - * Ghostscript (http://www.ghostscript.com) Use version 8.60 or newer. + • Ghostscript (http://www.ghostscript.com) Use version 8.60 or newer. - * Guile (http://www.gnu.org/software/guile/guile.html) Use version - 1.8.8. Version 2.x of Guile is not currently supported. + • Guile (http://www.gnu.org/software/guile/guile.html) Use version + 1.8.8. Version 2.x of Guile is not currently supported. - * Pango (http://www.pango.org/) User version 1.12 or newer. + • Pango (http://www.pango.org/) User version 1.12 or newer. - * Python (http://www.python.org) Use version 2.4 or newer. + • Python (http://www.python.org) Use version 2.4 or newer. - * International fonts. For example: + • International fonts. For example: Fedora: @@ -126,7 +121,6 @@ required to run LilyPond. These are normally installed by default and are required only to create music with international text or lyrics. - 1.2.2 Requirements for compiling LilyPond ----------------------------------------- @@ -137,30 +131,30 @@ the software packages required to build LilyPond. simple commands to download all the software needed. For others, there is an explicit list of all the individual packages (as well as where to get them from) for those that are not already included in your -distributions' own repositories. +distributions’ own repositories. Fedora ...... -The following instructions were tested on `Fedora' versions 22 & 23 and +The following instructions were tested on ‘Fedora’ versions 22 & 23 and will download all the software required to both compile LilyPond and build the documentation. - * Download and install all the LilyPond build-dependencies + • Download and install all the LilyPond build-dependencies (approximately 700MB); sudo dnf builddep lilypond --nogpgcheck - * Download and install additional `build' tools required for + • Download and install additional ‘build’ tools required for compiling; sudo dnf install autoconf gcc-c++ - * Download `texi2html 1.82' directly from: - `http://download.savannah.gnu.org/releases/texi2html/texi2html-1.82.tar.gz'; + • Download ‘texi2html 1.82’ directly from: + ; - `texi2html' is only required if you intend to compile LilyPond's - own documentation (e.g. to help with any document writing). The + ‘texi2html’ is only required if you intend to compile LilyPond’s + own documentation (e.g. to help with any document writing). The version available in the Fedora repositories is too new and will not work. Extract the files into an appropriate location and then run the commands; @@ -169,50 +163,47 @@ build the documentation. make sudo make install - This should install `texi2html 1.82' into `/usr/local/bin', which - will normally take priority over `/usr/bin' where the later, + This should install ‘texi2html 1.82’ into ‘/usr/local/bin’, which + will normally take priority over ‘/usr/bin’ where the later, pre-installed versions gets put. Now verify that your operating - system is able to see the correct version of `texi2html'. + system is able to see the correct version of ‘texi2html’. texi2html --version - * Although not `required' to compile LilyPond, if you intend to - contribute to LilyPond (codebase or help improve the - documentation) then it is recommended that you also need to - install `git'. + • Although not ‘required’ to compile LilyPond, if you intend to + contribute to LilyPond (codebase or help improve the documentation) + then it is recommended that you also need to install ‘git’. sudo dnf install git - Also see *note Starting with Git: (lilypond-notation)Starting with - Git. + Also see *note (lilypond-notation)Starting with Git::. - * To use the `lily-git.tcl' GUI; + • To use the ‘lily-git.tcl’ GUI; sudo dnf install tk - See *note lily-git: (lilypond-notation)lily-git. - + See *note (lilypond-notation)lily-git::. - Note: By default, when building LilyPond's documentation, - `pdfTeX' is be used. However ligatures (fi, fl, ff etc.) may + Note: By default, when building LilyPond’s documentation, + ‘pdfTeX’ is be used. However ligatures (fi, fl, ff etc.) may not be printed in the PDF output. In this case XeTeX can be - used instead. Download and install the `texlive-xetex' + used instead. Download and install the ‘texlive-xetex’ package. sudo dnf install texlive-xetex The scripts used to build the LilyPond documentation will use - `XeTex' instead of `pdfTex' to generate the PDF documents if + ‘XeTex’ instead of ‘pdfTex’ to generate the PDF documents if it is available. No additional configuration is required. Linux Mint .......... -The following instructions were tested on `Linux Mint 17.1' and `LMDE - -Betsy' and will download all the software required to both compile +The following instructions were tested on ‘Linux Mint 17.1’ and ‘LMDE - +Betsy’ and will download all the software required to both compile LilyPond and build the documentation.. - * Enable the _sources_ repository; + • Enable the _sources_ repository; 1. Using the _Software Sources_ GUI (located under _Administration_). @@ -225,141 +216,131 @@ LilyPond and build the documentation.. 4. Click the _Update the cache_ button and when it has completed, close the _Software Sources_ GUI. - - * Download and install all the LilyPond build-dependencies + • Download and install all the LilyPond build-dependencies (approximately 200MB); sudo apt-get build-dep lilypond - * Download and install additional `build' tools required for + • Download and install additional ‘build’ tools required for compiling; sudo apt-get install autoconf fonts-texgyre texlive-lang-cyrillic - * Although not `required' to compile LilyPond, if you intend to - contribute to LilyPond (codebase or help improve the - documentation) then it is recommended that you also need to - install `git'. + • Although not ‘required’ to compile LilyPond, if you intend to + contribute to LilyPond (codebase or help improve the documentation) + then it is recommended that you also need to install ‘git’. sudo apt-get install git - Also see *note Starting with Git: (lilypond-notation)Starting with - Git. + Also see *note (lilypond-notation)Starting with Git::. - * To use the `lily-git.tcl' GUI; + • To use the ‘lily-git.tcl’ GUI; sudo apt-get install tk - Also see *note lily-git: (lilypond-notation)lily-git. - + Also see *note (lilypond-notation)lily-git::. - Note: By default, when building LilyPond's documentation, - `pdfTeX' is be used. However ligatures (fi, fl, ff etc.) may + Note: By default, when building LilyPond’s documentation, + ‘pdfTeX’ is be used. However ligatures (fi, fl, ff etc.) may not be printed in the PDF output. In this case XeTeX can be - used instead. Download and install the `texlive-xetex' + used instead. Download and install the ‘texlive-xetex’ package. sudo apt-get install texlive-xetex The scripts used to build the LilyPond documentation will use - `XeTex' instead of `pdfTex' to generate the PDF documents if + ‘XeTex’ instead of ‘pdfTex’ to generate the PDF documents if it is available. No additional configuration is required. OpenSUSE ........ -The following instructions were tested on `OpenSUSE 13.2' and will +The following instructions were tested on ‘OpenSUSE 13.2’ and will download all the software required to both compile LilyPond and build the documentation. - * Add the _sources_ repository; + • Add the _sources_ repository; sudo zypper addrepo -f \ "http://download.opensuse.org/source/distribution/13.2/repo/oss/" sources - * Download and install all the LilyPond build-dependencies + • Download and install all the LilyPond build-dependencies (approximately 680MB); sudo zypper source-install lilypond - * Download and install additional `build' tools required for + • Download and install additional ‘build’ tools required for compiling; sudo zypper install make - * Although not `required' to compile LilyPond, if you intend to - contribute to LilyPond (codebase or help improve the - documentation) then it is recommended that you also need to - install `git'. + • Although not ‘required’ to compile LilyPond, if you intend to + contribute to LilyPond (codebase or help improve the documentation) + then it is recommended that you also need to install ‘git’. sudo zypper install git - Also see *note Starting with Git: (lilypond-notation)Starting with - Git. + Also see *note (lilypond-notation)Starting with Git::. - * To use the `lily-git.tcl' GUI; + • To use the ‘lily-git.tcl’ GUI; sudo zypper install tk - Also see *note lily-git: (lilypond-notation)lily-git. + Also see *note (lilypond-notation)lily-git::. - - Note: By default, when building LilyPond's documentation, - `pdfTeX' is be used. However ligatures (fi, fl, ff etc.) may + Note: By default, when building LilyPond’s documentation, + ‘pdfTeX’ is be used. However ligatures (fi, fl, ff etc.) may not be printed in the PDF output. In this case XeTeX can be - used instead. Download and install the `texlive-xetex' + used instead. Download and install the ‘texlive-xetex’ package. sudo zypper install texlive-xetex The scripts used to build the LilyPond documentation will use - `XeTex' instead of `pdfTex' to generate the PDF documents if + ‘XeTex’ instead of ‘pdfTex’ to generate the PDF documents if it is available. No additional configuration is required. Ubuntu ...... -The following commands were tested on Ubuntu versions `14.04 LTS', -`14.10' and `15.04' and will download all the software required to both +The following commands were tested on Ubuntu versions ‘14.04 LTS’, +‘14.10’ and ‘15.04’ and will download all the software required to both compile LilyPond and build the documentation. - * Download and install all the LilyPond build-dependencies + • Download and install all the LilyPond build-dependencies (approximately 200MB); sudo apt-get build-dep lilypond - * Download and install additional `build' tools required for + • Download and install additional ‘build’ tools required for compiling; sudo apt-get install autoconf fonts-texgyre texlive-lang-cyrillic - * Although not `required' to compile LilyPond, if you intend to - contribute to LilyPond (codebase or help improve the - documentation) then it is recommended that you also need to - install `git'. + • Although not ‘required’ to compile LilyPond, if you intend to + contribute to LilyPond (codebase or help improve the documentation) + then it is recommended that you also need to install ‘git’. sudo apt-get install git - Also see *note Starting with Git: (lilypond-notation)Starting with - Git. + Also see *note (lilypond-notation)Starting with Git::. - * To use the `lily-git.tcl' GUI; + • To use the ‘lily-git.tcl’ GUI; sudo apt-get install tk - Also see *note lily-git: (lilypond-notation)lily-git. - + Also see *note (lilypond-notation)lily-git::. - Note: By default, when building LilyPond's documentation, - `pdfTeX' is be used. However ligatures (fi, fl, ff etc.) may + Note: By default, when building LilyPond’s documentation, + ‘pdfTeX’ is be used. However ligatures (fi, fl, ff etc.) may not be printed in the PDF output. In this case XeTeX can be - used instead. Download and install the `texlive-xetex' + used instead. Download and install the ‘texlive-xetex’ package. sudo apt-get install texlive-xetex The scripts used to build the LilyPond documentation will use - `XeTex' instead of `pdfTex' to generate the PDF documents if + ‘XeTex’ instead of ‘pdfTex’ to generate the PDF documents if it is available. No additional configuration is required. Other @@ -368,69 +349,69 @@ Other The following individual software packages are required just to compile LilyPond. - * GNU Autoconf (http://www.gnu.org/software/autoconf) + • GNU Autoconf (http://www.gnu.org/software/autoconf) - * GNU Bison (http://www.gnu.org/software/bison/) + • GNU Bison (http://www.gnu.org/software/bison/) - Use version `2.0' or newer. + Use version ‘2.0’ or newer. - * GNU Compiler Collection (http://gcc.gnu.org/) + • GNU Compiler Collection (http://gcc.gnu.org/) - Use version `3.4' or newer (`4.x' recommended). + Use version ‘3.4’ or newer (‘4.x’ recommended). - * Flex (http://flex.sourceforge.net/) + • Flex (http://flex.sourceforge.net/) - * FontForge (http://fontforge.sf.net/) + • FontForge (http://fontforge.sf.net/) - Use version `20060125' or newer (we recommend using at least - `20100501'); it must also be compiled with the `--enable-double' + Use version ‘20060125’ or newer (we recommend using at least + ‘20100501’); it must also be compiled with the ‘--enable-double’ switch, else this can lead to inaccurate intersection calculations which end up with poorly-rendered glyphs in the output. - * GNU gettext (http://www.gnu.org/software/gettext/gettext.html) + • GNU gettext (http://www.gnu.org/software/gettext/gettext.html) - Use version `0.17' or newer. + Use version ‘0.17’ or newer. - * GNU Make (http://www.gnu.org/software/make/) + • GNU Make (http://www.gnu.org/software/make/) - Use version `3.78' or newer. + Use version ‘3.78’ or newer. - * MetaFont (http://metafont.tutorial.free.fr/) + • MetaFont (http://metafont.tutorial.free.fr/) - The `mf-nowin', `mf', `mfw' or `mfont' binaries are usually + The ‘mf-nowin’, ‘mf’, ‘mfw’ or ‘mfont’ binaries are usually packaged along with TeX (http://www.latex-project.org/ftp.html). - * MetaPost (http://cm.bell-labs.com/who/hobby/MetaPost.html) + • MetaPost (http://cm.bell-labs.com/who/hobby/MetaPost.html) - The `mpost' binary is also usually packaged with TeX + The ‘mpost’ binary is also usually packaged with TeX (http://www.latex-project.org/ftp.html). - * Perl (http://www.perl.org/) + • Perl (http://www.perl.org/) - * Texinfo (http://www.gnu.org/software/texinfo/) + • Texinfo (http://www.gnu.org/software/texinfo/) - Use version `4.11' or newer. + Use version ‘4.11’ or newer. - * Type 1 utilities (http://www.lcdf.org/~eddietwo/type/#t1utils) + • Type 1 utilities (http://www.lcdf.org/~eddietwo/type/#t1utils) - Use version `1.33' or newer. + Use version ‘1.33’ or newer. - * Cyrillic fonts (https://www.ctan.org/pkg/cyrillic?lang=en) + • Cyrillic fonts (https://www.ctan.org/pkg/cyrillic?lang=en) - Often packaged in repositories as `texlive-lang-cyrillic'. + Often packaged in repositories as ‘texlive-lang-cyrillic’. - * TeX Gyre `OTF' font packages. As of LilyPond version `2.19.26', + • TeX Gyre ‘OTF’ font packages. As of LilyPond version ‘2.19.26’, the previous default serif, san serif and monospace fonts now use - Tex Gyre's _Schola_, _Heros_ and _Cursor_ fonts respectively. - Also See *note Fonts: (lilypond-notation)Fonts. + Tex Gyre’s _Schola_, _Heros_ and _Cursor_ fonts respectively. Also + See *note (lilypond-notation)Fonts::. - Some distributions do not always provide `OTF' font files in the + Some distributions do not always provide ‘OTF’ font files in the Tex Gyre packages from their repositories. Use the command - `fc-list | grep texgyre' to list the fonts available to your system - and check that the appropriate `*.otf' files are reported. If they - are not then download and manually extract the `OTF' files to - either your local `~/.fonts/' directory or use the `configure' - command and the `--with-texgyre-dir=/path_to_otf_files/' option. + ‘fc-list | grep texgyre’ to list the fonts available to your system + and check that the appropriate ‘*.otf’ files are reported. If they + are not then download and manually extract the ‘OTF’ files to + either your local ‘~/.fonts/’ directory or use the ‘configure’ + command and the ‘--with-texgyre-dir=/path_to_otf_files/’ option. The following font families are required: @@ -439,38 +420,37 @@ LilyPond. and Cursor (http://www.gust.org.pl/projects/e-foundry/tex-gyre/cursor). - 1.2.3 Requirements for building documentation --------------------------------------------- The entire set of documentation for the most current build of LilyPond is available online at -`http://lilypond.org/doc/v2.19/Documentation/web/development', but you -can also build them locally from the source code. This process -requires some additional tools and packages. +, but you +can also build them locally from the source code. This process requires +some additional tools and packages. Note: If the instructions for one of the previously listed - Linux in the previous section (*note Requirements for - compiling LilyPond: (lilypond-contributor)Requirements for - compiling LilyPond.) have been used, then the following can - be ignored as the software should already be installed. + Linux in the previous section (*note + (lilypond-contributor)Requirements for compiling LilyPond::) + have been used, then the following can be ignored as the + software should already be installed. - * Everything listed in *note Requirements for compiling LilyPond:: + • Everything listed in *note Requirements for compiling LilyPond:: - * ImageMagick (http://www.imagemagick.org/) + • ImageMagick (http://www.imagemagick.org/) - * Netpbm (http://netpbm.sourceforge.net/) + • Netpbm (http://netpbm.sourceforge.net/) - * gzip (http://gzip.org/) + • gzip (http://gzip.org/) - * rsync (http://rsync.samba.org/) + • rsync (http://rsync.samba.org/) - * Texi2HTML (http://www.nongnu.org/texi2html/) + • Texi2HTML (http://www.nongnu.org/texi2html/) - Use version `1.82'. Later versions will not work. + Use version ‘1.82’. Later versions will not work. - Download `texi2html 1.82' directly from: - `http://download.savannah.gnu.org/releases/texi2html/texi2html-1.82.tar.gz'; + Download ‘texi2html 1.82’ directly from: + ; Extract the files into an appropriate location and then run the commands; @@ -480,11 +460,11 @@ requires some additional tools and packages. sudo make install Now verify that your operating system is able to see the correct - version of `texi2html'. + version of ‘texi2html’. texi2html --version - * Fonts required to build the documentation in addition to those + • Fonts required to build the documentation in addition to those required to run LilyPond: gsfonts @@ -496,13 +476,12 @@ requires some additional tools and packages. texlive-fonts-recommended ttf-xfree86-nonfree - - Note: By default, when building LilyPond's documentation, - `pdfTeX' is be used. However ligatures (fi, fl, ff etc.) may + Note: By default, when building LilyPond’s documentation, + ‘pdfTeX’ is be used. However ligatures (fi, fl, ff etc.) may not be printed in the PDF output. In this case XeTeX can be - used instead. Download and install the `texlive-xetex' - package. The scripts used to build the LilyPond documentation - will use `XeTex' instead of `pdfTex' to generate the PDF + used instead. Download and install the ‘texlive-xetex’ + package. The scripts used to build the LilyPond documentation + will use ‘XeTex’ instead of ‘pdfTex’ to generate the PDF documents if it is available. No additional configuration is required. @@ -514,7 +493,7 @@ Downloading the Git repository In general, developers compile LilyPond from within a local Git repository. Setting up a local Git repository is explained in *note -Starting with Git: (lilypond-contributor)Starting with Git. +(lilypond-contributor)Starting with Git::. Downloading a source tarball ---------------------------- @@ -522,7 +501,7 @@ Downloading a source tarball Packagers are encouraged to use source tarballs for compiling. The tarball for the latest stable release is available on the *note -Source: (lilypond-web)Source. page. +(lilypond-web)Source:: page. The latest source code snapshot (http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=snapshot) is also @@ -531,14 +510,14 @@ available as a tarball from the GNU Savannah Git server. All tagged releases (including legacy stable versions and the most recent development release) are available here: - `http://download.linuxaudio.org/lilypond/source/' + - Download the tarball to your `~/src/' directory, or some other + Download the tarball to your ‘~/src/’ directory, or some other appropriate place. Note: Be careful where you unpack the tarball! Any - subdirectories of the current folder named `lilypond/' or - `lilypond-X.Y.Z/' (where X.Y.Z is the release number) will be + subdirectories of the current folder named ‘lilypond/’ or + ‘lilypond-X.Y.Z/’ (where X.Y.Z is the release number) will be overwritten if there is a name clash with the tarball. Unpack the tarball with this command: @@ -546,23 +525,23 @@ appropriate place. tar -xzf lilypond-X.Y.Z.tar.gz This creates a subdirectory within the current directory called -`lilypond-X.Y.Z/'. Once unpacked, the source files occupy about 40 MB +‘lilypond-X.Y.Z/’. Once unpacked, the source files occupy about 40 MB of disk space. - Windows users wanting to look at the source code may have to -download and install the free-software 7zip archiver -(http://www.7-zip.org) to extract the tarball. + Windows users wanting to look at the source code may have to download +and install the free-software 7zip archiver (http://www.7-zip.org) to +extract the tarball. -1.4 Configuring `make' +1.4 Configuring ‘make’ ====================== -1.4.1 Running `./autogen.sh' +1.4.1 Running ‘./autogen.sh’ ---------------------------- After you unpack the tarball (or download the Git repository), the contents of your top source directory should be similar to the current source tree listed at -`http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=tree'. +. Next, you need to create the generated files; enter the following command from your top source directory: @@ -570,7 +549,7 @@ command from your top source directory: ./autogen.sh --noconfigure This will generate a number of files and directories to aid -configuration, such as `configure', `README.txt', etc. +configuration, such as ‘configure’, ‘README.txt’, etc. Next, create the build directory with: @@ -580,32 +559,32 @@ configuration, such as `configure', `README.txt', etc. We heavily recommend building lilypond inside a separate directory with this method. -1.4.2 Running `../configure' +1.4.2 Running ‘../configure’ ---------------------------- Configuration options ..................... - Note: make sure that you are in the `build/' subdirectory of + Note: make sure that you are in the ‘build/’ subdirectory of your source tree. -The `../configure' command (generated by `./autogen.sh') provides many -options for configuring `make'. To see them all, run: + The ‘../configure’ command (generated by ‘./autogen.sh’) provides +many options for configuring ‘make’. To see them all, run: ../configure --help Checking build dependencies ........................... - Note: make sure that you are in the `build/' subdirectory of + Note: make sure that you are in the ‘build/’ subdirectory of your source tree. -When `../configure' is run without any arguments, it will check to make -sure your system has everything required for compilation: + When ‘../configure’ is run without any arguments, it will check to +make sure your system has everything required for compilation: ../configure - If any build dependency is missing, `../configure' will return with: + If any build dependency is missing, ‘../configure’ will return with: ERROR: Please install required programs: FOO @@ -617,7 +596,7 @@ only needed for building the documentation: If you intend to build the documentation locally, you will need to install or update these programs accordingly. - Note: `../configure' may fail to issue warnings for certain + Note: ‘../configure’ may fail to issue warnings for certain documentation build requirements that are not met. If you experience problems when building the documentation, you may need to do a manual check of *note Requirements for building @@ -626,95 +605,91 @@ install or update these programs accordingly. Configuring target directories .............................. - Note: make sure that you are in the `build/' subdirectory of + Note: make sure that you are in the ‘build/’ subdirectory of your source tree. -If you intend to use your local build to install a local copy of the -program, you will probably want to configure the installation -directory. Here are the relevant lines taken from the output of -`../configure --help': + If you intend to use your local build to install a local copy of the +program, you will probably want to configure the installation directory. +Here are the relevant lines taken from the output of +‘../configure --help’: - By default, ``make install'' will install all the files in - `/usr/local/bin', `/usr/local/lib' etc. You can specify an - installation prefix other than `/usr/local' using ``--prefix'', - for instance ``--prefix=$HOME''. + By default, ‘‘make install’’ will install all the files in + ‘/usr/local/bin’, ‘/usr/local/lib’ etc. You can specify an + installation prefix other than ‘/usr/local’ using ‘‘--prefix’’, for + instance ‘‘--prefix=$HOME’’. - A typical installation prefix is `$HOME/usr': + A typical installation prefix is ‘$HOME/usr’: ../configure --prefix=$HOME/usr Note that if you plan to install a local build on a system where you do not have root privileges, you will need to do something like this -anyway--`make install' will only succeed if the installation prefix -points to a directory where you have write permission (such as your -home directory). The installation directory will be automatically -created if necessary. +anyway—‘make install’ will only succeed if the installation prefix +points to a directory where you have write permission (such as your home +directory). The installation directory will be automatically created if +necessary. - The location of the `lilypond' command installed by this process -will be `PREFIX/bin/lilypond'; you may want to add `PREFIX/bin/' to -your `$PATH' if it is not already included. + The location of the ‘lilypond’ command installed by this process will +be ‘PREFIX/bin/lilypond’; you may want to add ‘PREFIX/bin/’ to your +‘$PATH’ if it is not already included. It is also possible to specify separate installation directories for different types of program files. See the full output of -`../configure --help' for more information. +‘../configure --help’ for more information. If you encounter any problems, please see *note Problems::. 1.5 Compiling LilyPond ====================== -1.5.1 Using `make' +1.5.1 Using ‘make’ ------------------ - Note: make sure that you are in the `build/' subdirectory of + Note: make sure that you are in the ‘build/’ subdirectory of your source tree. -LilyPond is compiled with the `make' command. Assuming `make' is + LilyPond is compiled with the ‘make’ command. Assuming ‘make’ is configured properly, you can simply run: make - `make' is short for `make all'. To view a list of `make' targets, + ‘make’ is short for ‘make all’. To view a list of ‘make’ targets, run: make help - TODO: Describe what `make' actually does. - + TODO: Describe what ‘make’ actually does. See also ........ - - - *note Generating documentation:: provides more info on the `make' + *note Generating documentation:: provides more info on the ‘make’ targets used to build the LilyPond documentation. -1.5.2 Saving time with the `-j' option +1.5.2 Saving time with the ‘-j’ option -------------------------------------- -If your system has multiple CPUs, you can speed up compilation by -adding `-jX' to the `make' command, where `X' is one more than the -number of cores you have. For example, a typical Core2Duo machine -would use: +If your system has multiple CPUs, you can speed up compilation by adding +‘-jX’ to the ‘make’ command, where ‘X’ is one more than the number of +cores you have. For example, a typical Core2Duo machine would use: make -j3 - If you get errors using the `-j' option, and `make' succeeds without -it, try lowering the `X' value. + If you get errors using the ‘-j’ option, and ‘make’ succeeds without +it, try lowering the ‘X’ value. - Because multiple jobs run in parallel when `-j' is used, it can be + Because multiple jobs run in parallel when ‘-j’ is used, it can be difficult to determine the source of an error when one occurs. In that -case, running `make' without the `-j' is advised. +case, running ‘make’ without the ‘-j’ is advised. 1.5.3 Compiling for multiple platforms -------------------------------------- If you want to build multiple versions of LilyPond with different -configuration settings, you can use the `--enable-config=CONF' option -of `configure'. You should use `make conf=CONF' to generate the output -in `out-CONF'. For example, suppose you want to build with and without +configuration settings, you can use the ‘--enable-config=CONF’ option of +‘configure’. You should use ‘make conf=CONF’ to generate the output in +‘out-CONF’. For example, suppose you want to build with and without profiling, then use the following for the normal build ./configure --prefix=$HOME/usr/ --enable-checking @@ -726,8 +701,8 @@ profiling, then use the following for the normal build --enable-config=prof --disable-checking make conf=prof - If you wish to install a copy of the build with profiling, don't -forget to use `conf=CONF' when issuing `make install': + If you wish to install a copy of the build with profiling, don’t +forget to use ‘conf=CONF’ when issuing ‘make install’: make conf=prof install @@ -735,15 +710,13 @@ forget to use `conf=CONF' when issuing `make install': See also ........ - - *note Installing LilyPond from a local build:: -1.5.4 Useful `make' variables +1.5.4 Useful ‘make’ variables ----------------------------- -If a less verbose build output if desired, the variable `QUIET_BUILD' -may be set to `1' on `make' command line, or in `local.make' at top of +If a less verbose build output if desired, the variable ‘QUIET_BUILD’ +may be set to ‘1’ on ‘make’ command line, or in ‘local.make’ at top of the build tree. 1.6 Post-compilation options @@ -752,17 +725,17 @@ the build tree. 1.6.1 Installing LilyPond from a local build -------------------------------------------- -If you configured `make' to install your local build in a directory +If you configured ‘make’ to install your local build in a directory where you normally have write permission (such as your home directory), -and you have compiled LilyPond by running `make', you can install the +and you have compiled LilyPond by running ‘make’, you can install the program in your target directory by running: make install If instead, your installation directory is not one that you can -normally write to (such as the default `/usr/local/', which typically -is only writeable by the superuser), you will need to temporarily -become the superuser when running `make install': +normally write to (such as the default ‘/usr/local/’, which typically is +only writeable by the superuser), you will need to temporarily become +the superuser when running ‘make install’: sudo make install @@ -770,23 +743,23 @@ or... su -c 'make install' - If you don't have superuser privileges, then you need to configure + If you don’t have superuser privileges, then you need to configure the installation directory to one that you can write to, and then re-install. See *note Configuring target directories::. 1.6.2 Generating documentation ------------------------------ -Documentation editor's edit/compile cycle +Documentation editor’s edit/compile cycle ......................................... - * Initial documentation build: + • Initial documentation build: make [-jX] make [-jX CPU_COUNT=X] doc _## can take an hour or more_ make [-jX CPU_COUNT=X] doc-stage-1 _## to build only PDF documentation_ - * Edit/compile cycle: + • Edit/compile cycle: _## edit source files, then..._ @@ -795,21 +768,20 @@ Documentation editor's edit/compile cycle _## for finding Texinfo errors._ make [-jX CPU_COUNT=X] doc _## usually faster than initial build._ - * Reset: + • Reset: It is generally possible to remove the compiled documentation from - your system with `make doc-clean', but this method is not 100% + your system with ‘make doc-clean’, but this method is not 100% guaranteed. Instead, if you want to be sure you have a clean - system, we recommend that you delete your `build/' directory, and + system, we recommend that you delete your ‘build/’ directory, and begin compiling from scratch. Since the documentation compile - takes much longer than the non-documentation compile, this does - not increase the overall time by a great deal. - + takes much longer than the non-documentation compile, this does not + increase the overall time by a great deal. Building documentation ...................... -After a successful compile (using `make'), the documentation can be +After a successful compile (using ‘make’), the documentation can be built by issuing: make doc @@ -818,32 +790,31 @@ built by issuing: make doc-stage-1 - Note: The first time you run `make doc', the process can + Note: The first time you run ‘make doc’, the process can easily take an hour or more with not much output on the command line. - After this initial build, `make doc' only makes changes to the + After this initial build, ‘make doc’ only makes changes to the documentation where needed, so it may only take a minute or two to test changes if the documentation is already built. - If `make doc' succeeds, the HTML documentation tree is available in -`out-www/offline-root/', and can be browsed locally. Various portions -of the documentation can be found by looking in `out/' and `out-www' + If ‘make doc’ succeeds, the HTML documentation tree is available in +‘out-www/offline-root/’, and can be browsed locally. Various portions +of the documentation can be found by looking in ‘out/’ and ‘out-www’ subdirectories in other places in the source tree, but these are only _portions_ of the docs. Please do not complain about anything which is broken in those places; the only complete set of documentation is in -`out-www/offline-root/' from the top of the source tree. +‘out-www/offline-root/’ from the top of the source tree. - `make doc' sends the output from most of the compilation to -logfiles. If the build fails for any reason, it should prompt you with -the name of a logfile which will provide information to help you work -out why the build failed. These logfiles are not deleted with -`make doc-clean'. To remove all the logfiles generated by the -compilation process, use: + ‘make doc’ sends the output from most of the compilation to logfiles. +If the build fails for any reason, it should prompt you with the name of +a logfile which will provide information to help you work out why the +build failed. These logfiles are not deleted with ‘make doc-clean’. To +remove all the logfiles generated by the compilation process, use: make log-clean - `make doc' compiles the documents for all languages. To save some + ‘make doc’ compiles the documents for all languages. To save some compile time, the English language documents can be compiled on their own with: @@ -863,8 +834,8 @@ separately by issuing: make info An issue when switching branches between master and translation is the -appearance/disappearance of translated versions of some manuals. If -you see such a warning from make: +appearance/disappearance of translated versions of some manuals. If you +see such a warning from make: No rule to make target `X', needed by `Y' @@ -873,8 +844,8 @@ Your best bet is to delete the file Y.dep and to try again. Building a single document .......................... -It's possible to build a single document. For example, to rebuild only -`contributor.pdf', do the following: +It’s possible to build a single document. For example, to rebuild only +‘contributor.pdf’, do the following: cd build/ cd Documentation/ @@ -883,30 +854,29 @@ It's possible to build a single document. For example, to rebuild only If you are only working on a single document, test-building it in this way can give substantial time savings - recreating -`contributor.pdf', for example, takes a matter of seconds. +‘contributor.pdf’, for example, takes a matter of seconds. -Saving time with `CPU_COUNT' +Saving time with ‘CPU_COUNT’ ............................ The most time consuming task for building the documentation is running LilyPond to build images of music, and there cannot be several -simultaneously running `lilypond-book' instances, so the `-j' `make' -option does not significantly speed up the build process. To help -speed it up, the makefile variable `CPU_COUNT' may be set in -`local.make' or on the command line to the number of `.ly' files that -LilyPond should process simultaneously, e.g. on a bi-processor or dual -core machine: +simultaneously running ‘lilypond-book’ instances, so the ‘-j’ ‘make’ +option does not significantly speed up the build process. To help speed +it up, the makefile variable ‘CPU_COUNT’ may be set in ‘local.make’ or +on the command line to the number of ‘.ly’ files that LilyPond should +process simultaneously, e.g. on a bi-processor or dual core machine: make -j3 CPU_COUNT=3 doc -The recommended value of `CPU_COUNT' is one plus the number of cores or -processors, but it is advisable to set it to a smaller value unless -your system has enough RAM to run that many simultaneous LilyPond -instances. Also, values for the `-j' option that pose problems with -`make' are less likely to pose problems with `make doc' (this applies -to both `-j' and `CPU_COUNT'). For example, with a quad-core processor, -it is possible for `make -j5 CPU_COUNT=5 doc' to work consistently even -if `make -j5' rarely succeeds. +The recommended value of ‘CPU_COUNT’ is one plus the number of cores or +processors, but it is advisable to set it to a smaller value unless your +system has enough RAM to run that many simultaneous LilyPond instances. +Also, values for the ‘-j’ option that pose problems with ‘make’ are less +likely to pose problems with ‘make doc’ (this applies to both ‘-j’ and +‘CPU_COUNT’). For example, with a quad-core processor, it is possible +for ‘make -j5 CPU_COUNT=5 doc’ to work consistently even if ‘make -j5’ +rarely succeeds. AJAX search ........... @@ -938,19 +908,19 @@ installation of Info documentation are printed on standard output. make install-info -Note that to get the images in Info documentation, `install-doc' target +Note that to get the images in Info documentation, ‘install-doc’ target creates symbolic links to HTML and PDF installed documentation tree in -`PREFIX/share/info', in order to save disk space, whereas -`install-info' copies images in `PREFIX/share/info' subdirectories. +‘PREFIX/share/info’, in order to save disk space, whereas ‘install-info’ +copies images in ‘PREFIX/share/info’ subdirectories. It is possible to build a documentation tree in -`out-www/online-root/', with special processing, so it can be used on a +‘out-www/online-root/’, with special processing, so it can be used on a website with content negotiation for automatic language selection; this can be achieved by issuing make WEB_TARGETS=online doc -and both `offline' and `online' targets can be generated by issuing +and both ‘offline’ and ‘online’ targets can be generated by issuing make WEB_TARGETS="offline online" doc @@ -961,10 +931,10 @@ available with make help from every directory in the build tree. Most targets for documentation -maintenance are available from `Documentation/'; for more information, -see *note Documentation work: (lilypond-contributor)Documentation work. +maintenance are available from ‘Documentation/’; for more information, +see *note (lilypond-contributor)Documentation work::. - The makefile variable `QUIET_BUILD' may be set to `1' for a less + The makefile variable ‘QUIET_BUILD’ may be set to ‘1’ for a less verbose build output, just like for building the programs. Building documentation without compiling @@ -980,14 +950,14 @@ binary, if LilyPond is already installed on your system. make -C scripts && make -C python nice make LILYPOND_EXTERNAL_BINARY=/path/to/bin/lilypond doc - Please note that this may break sometimes - for example, if a new + Please note that this may break sometimes – for example, if a new feature is added with a test file in input/regression, even the latest development release of LilyPond will fail to build the docs. - You may build the manual without building all the `input/*' stuff -(i.e. mostly regression tests): change directory, for example to -`Documentation/', issue `make doc', which will build documentation in a -subdirectory `out-www' from the source files in current directory. In + You may build the manual without building all the ‘input/*’ stuff +(i.e. mostly regression tests): change directory, for example to +‘Documentation/’, issue ‘make doc’, which will build documentation in a +subdirectory ‘out-www’ from the source files in current directory. In this case, if you also want to browse the documentation in its post-processed form, change back to top directory and issue @@ -997,7 +967,7 @@ post-processed form, change back to top directory and issue Known issues and warnings ......................... -You may also need to create a script for `pngtopnm' and `pnmtopng'. On +You may also need to create a script for ‘pngtopnm’ and ‘pnmtopng’. On GNU/Linux, I use this: export LD_LIBRARY_PATH=/usr/lib @@ -1028,20 +998,20 @@ make test been verified. More information on the regression test suite is found at *note -Regression tests: (lilypond-contributor)Regression tests. +(lilypond-contributor)Regression tests::. 1.7 Problems ============ -For help and questions use . Send bug reports -to . +For help and questions use . Send bug reports to +. Bugs that are not fault of LilyPond are documented here. Compiling on MacOS X -------------------- -Here are special instructions for compiling under MacOS X. These +Here are special instructions for compiling under MacOS X. These instructions assume that dependencies are installed using MacPorts. (http://www.macports.org/) The instructions have been tested using OS X 10.5 (Leopard). @@ -1049,13 +1019,13 @@ instructions assume that dependencies are installed using MacPorts. First, install the relevant dependencies using MacPorts. Next, add the following to your relevant shell initialization files. -This is `~/.profile' by default. You should create this file if it -does not exist. +This is ‘~/.profile’ by default. You should create this file if it does +not exist. export PATH=/opt/local/bin:/opt/local/sbin:$PATH export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib:$DYLD_FALLBACK_LIBRARY_PATH - Now you must edit the generated `config.make' file. Change + Now you must edit the generated ‘config.make’ file. Change FLEXLEXER_FILE = /usr/include/FlexLexer.h @@ -1064,9 +1034,9 @@ to: FLEXLEXER_FILE = /opt/local/include/FlexLexer.h At this point, you should verify that you have the appropriate fonts -installed with your ghostscript installation. Check `ls -/opt/local/share/ghostscript/fonts' for: 'c0590*' files (.pfb, .pfb and -.afm). If you don't have them, run the following commands to grab them +installed with your ghostscript installation. Check ‘ls +/opt/local/share/ghostscript/fonts’ for: ’c0590*’ files (.pfb, .pfb and +.afm). If you don’t have them, run the following commands to grab them from the ghostscript SVN server and install them in the appropriate location: @@ -1074,7 +1044,7 @@ location: sudo mv urw-fonts-1.0.7pre44/* /opt/local/share/ghostscript/fonts/ rm -rf urw-fonts-1.07pre44 - Now run the `./configure' script. To avoid complications with + Now run the ‘./configure’ script. To avoid complications with automatic font detection, add --with-fonts-dir=/opt/local/share/ghostscript/fonts @@ -1084,8 +1054,8 @@ Solaris Solaris7, ./configure - `./configure' needs a POSIX compliant shell. On Solaris7, `/bin/sh' -is not yet POSIX compliant, but `/bin/ksh' or bash is. Run configure + ‘./configure’ needs a POSIX compliant shell. On Solaris7, ‘/bin/sh’ +is not yet POSIX compliant, but ‘/bin/ksh’ or bash is. Run configure like CONFIG_SHELL=/bin/ksh ksh -c ./configure @@ -1097,11 +1067,11 @@ or FreeBSD ------- -To use system fonts, dejaview must be installed. With the default -port, the fonts are installed in `usr/X11R6/lib/X11/fonts/dejavu'. +To use system fonts, dejaview must be installed. With the default port, +the fonts are installed in ‘usr/X11R6/lib/X11/fonts/dejavu’. - Open the file `$LILYPONDBASE/usr/etc/fonts/local.conf' and add the -following line just after the `' line. (Adjust as necessary + Open the file ‘$LILYPONDBASE/usr/etc/fonts/local.conf’ and add the +following line just after the ‘’ line. (Adjust as necessary for your hierarchy.) /usr/X11R6/lib/X11/fonts @@ -1112,7 +1082,7 @@ International fonts On Mac OS X, all fonts are installed by default. However, finding all system fonts requires a bit of configuration; see this post (http://lists.gnu.org/archive/html/lilypond-user/2007-03/msg00472.html) -on the `lilypond-user' mailing list. +on the ‘lilypond-user’ mailing list. On Linux, international fonts are installed by different means on every distribution. We cannot list the exact commands or packages that @@ -1133,42 +1103,42 @@ Debian GNU/Linux Using lilypond python libraries ------------------------------- -If you want to use lilypond's python libraries (either running certain +If you want to use lilypond’s python libraries (either running certain build scripts manually, or using them in other programs), set -`PYTHONPATH' to `python/out' in your build directory, or -`.../usr/lib/lilypond/current/python' in the installation directory +‘PYTHONPATH’ to ‘python/out’ in your build directory, or +‘.../usr/lib/lilypond/current/python’ in the installation directory structure. 1.8 Concurrent stable and development versions ============================================== -It can be useful to have both the stable and the development versions -of Lilypond available at once. One way to do this on GNU/Linux is to +It can be useful to have both the stable and the development versions of +LilyPond available at once. One way to do this on GNU/Linux is to install the stable version using the precompiled binary, and run the -development version from the source tree. After running `make all' -from the top directory of the Lilypond source files, there will be a -binary called `lilypond' in the `out' directory: +development version from the source tree. After running ‘make all’ from +the top directory of the LilyPond source files, there will be a binary +called ‘lilypond’ in the ‘out’ directory: /lilypond/out/bin/lilypond - This binary can be run without actually doing the `make install' + This binary can be run without actually doing the ‘make install’ command. The advantage to this is that you can have all of the latest -changes available after pulling from git and running `make all', -without having to uninstall the old version and reinstall the new. +changes available after pulling from git and running ‘make all’, without +having to uninstall the old version and reinstall the new. - So, to use the stable version, install it as usual and use the -normal commands: + So, to use the stable version, install it as usual and use the normal +commands: lilypond foobar.ly To use the development version, create a link to the binary in the source tree by saving the following line in a file somewhere in your -`$PATH': +‘$PATH’: exec /lilypond/out/bin/lilypond "$@" - Save it as `Lilypond' (with a capital L to distinguish it from the -stable `lilypond'), and make it executable: + Save it as ‘Lilypond’ (with a capital L to distinguish it from the +stable ‘lilypond’), and make it executable: chmod +x Lilypond @@ -1189,16 +1159,15 @@ by us. Hopefully this will change in the future. Version-specific texinfo macros ------------------------------- - * made with `scripts/build/create-version-itexi.py' and - `scripts/build/create-weblinks-itexi.py' + • made with ‘scripts/build/create-version-itexi.py’ and + ‘scripts/build/create-weblinks-itexi.py’ - * used extensively in the `WEBSITE_ONLY_BUILD' version of the - website (made with `website.make', used on lilypond.org) + • used extensively in the ‘WEBSITE_ONLY_BUILD’ version of the website + (made with ‘website.make’, used on lilypond.org) - * not (?) used in the main docs? + • not (?) used in the main docs? - * the numbers in VERSION file: MINOR_VERSION should be 1 more than + • the numbers in VERSION file: MINOR_VERSION should be 1 more than the last release, VERSION_DEVEL should be the last *online* release. Yes, VERSION_DEVEL is less than VERSION. - diff --git a/NEWS.txt b/NEWS.txt index 33fc4d64f8..0aac6fc370 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,61 +1,71 @@ New features in 2.20 since 2.18 ******************************* - * Blocks introduced with `\header' can be stored in variables and + • Slurs and phrasing slurs may now be started from individual notes + in a chord. Several simultanous slurs per ‘Voice’ need to be + distinguished by ‘spanner-id’ setting. + + • The music and grob property ‘spanner-id’ for distinguishing + simultaneous slurs and phrasing slurs has been changed from a + string to a ‘key’, a non-negative integer or symbol. + + • There is a new command ‘\=’ for specifying the ‘spanner-id’ for + simultaneous slurs and phrasing slurs. + \fixed c' { + 2 + } + image of music + + • Blocks introduced with ‘\header’ can be stored in variables and used as arguments to music and scheme functions and as the body of - `#{...#}' constructs. They are represented as a Guile module. + ‘#{...#}’ constructs. They are represented as a Guile module. - While `\book', `\bookpart', `\score', `\with', `\layout', `\midi', - `\paper' blocks can be passed around in similar manner, they are + While ‘\book’, ‘\bookpart’, ‘\score’, ‘\with’, ‘\layout’, ‘\midi’, + ‘\paper’ blocks can be passed around in similar manner, they are represented by different data types. - * Dot-separated symbol lists like `FretBoard.stencil' were already + • Dot-separated symbol lists like ‘FretBoard.stencil’ were already supported as of version 2.18. They may now also contain unsigned integers, and may alternatively be separated by commata. This allows usage such as - { \time 2,2,1 5/8 g'8 8 8 8 8 } - [image of music] - + image of music and - \tagGroup violin,oboe,bassoon + \tagGroup violin,oboe,bassoon - * Such lists may also be used in expressions for assignments, sets, + • Such lists may also be used in expressions for assignments, sets, and overrides. This allows usage such as - { \unset Timing.beamExceptions \set Timing.beatStructure = 1,2,1 g'8 8 8 8 8 8 8 8 } - [image of music] - + image of music - * Association list elements could previously be assigned values + • Association list elements could previously be assigned values individually (for example, paper variables like - `system-system-spacing.basic-distance'). They may now be also + ‘system-system-spacing.basic-distance’). They may now be also referenced in this manner, as with - \paper { - \void \displayScheme \system-system-spacing.basic-distance - } + \paper { + \void \displayScheme \system-system-spacing.basic-distance + } In combination with the previously mentioned changes, this allows - setting and referencing pseudovariables like `violin.1'. + setting and referencing pseudovariables like ‘violin.1’. - * LilyPond source files may now be embedded inside the generated PDF - files. This experimental feature is disabled by default and may - be regarded as unsafe, as PDF documents with hidden content tend - to present a security risk. Please note that not all PDF viewers - have the ability to handle embedded documents (if not, the PDF - output will appear normally and source files will remain - invisible). This feature only works with the PDF backend. + • LilyPond source files may now be embedded inside the generated PDF + files. This experimental feature is disabled by default and may be + regarded as unsafe, as PDF documents with hidden content tend to + present a security risk. Please note that not all PDF viewers have + the ability to handle embedded documents (if not, the PDF output + will appear normally and source files will remain invisible). This + feature only works with the PDF backend. - * French note names are now defined specifically instead of being + • French note names are now defined specifically instead of being aliased to Italian note names: in addition to the generic - Italian-derived syntax, the D pitch may be entered as `ré'. - Double sharps may also be entered using the `-x' suffix. - - * Additional bass strings (for lute tablature) are supported. + Italian-derived syntax, the D pitch may be entered as ‘ré’. Double + sharps may also be entered using the ‘-x’ suffix. + • Additional bass strings (for lute tablature) are supported. m = { f'4 d' a f d a, g, fis, e, d, c, \bar "|." } \score { @@ -73,12 +83,10 @@ New features in 2.20 since 2.18 } } } - [image of music] - - - * The markup-list-command `\table' is now available. Each column - may be aligned differently. + image of music + • The markup-list-command ‘\table’ is now available. Each column may + be aligned differently. \markuplist { \override #'(padding . 2) \table @@ -91,13 +99,11 @@ New features in 2.20 since 2.18 thousand "1000" one "1.0" } } - [image of music] + image of music - - * A new markup-command, `\with-dimensions-from', makes - `\with-dimensions' easier to use by taking the new dimensions from + • A new markup-command, ‘\with-dimensions-from’, makes + ‘\with-dimensions’ easier to use by taking the new dimensions from a markup object, given as first argument. - \markup { \pattern #5 #Y #0 "x" \pattern #5 #Y #0 \with-dimensions-from "x" "f" @@ -109,19 +115,17 @@ New features in 2.20 since 2.18 \pattern #5 #X #0 \with-dimensions-from "n" "!" } } - [image of music] + image of music - - * A new page breaking function `ly:one-line-auto-height-breaking' - places a whole score on a single line and changes the page width - to match, just like `ly:one-line-breaking'. The difference is that - it also automatically modifies the height of the page to fit the + • A new page breaking function ‘ly:one-line-auto-height-breaking’ + places a whole score on a single line and changes the page width to + match, just like ‘ly:one-line-breaking’. The difference is that it + also automatically modifies the height of the page to fit the height of the music. - * Markup-command `\draw-squiggle-line' is now available. - Customizing is possible with overrides of `thickness', - `angularity', `height' and `orientation' - + • Markup-command ‘\draw-squiggle-line’ is now available. Customizing + is possible with overrides of ‘thickness’, ‘angularity’, ‘height’ + and ‘orientation’ \markup \overlay { \draw-squiggle-line #0.5 #'(3 . 3) ##t @@ -140,16 +144,14 @@ New features in 2.20 since 2.18 \override #'(orientation . -1) \draw-squiggle-line #0.2 #'(-3 . 3) ##t } - [image of music] - + image of music - * A new command, `\RemoveAllEmptyStaves', has been made available, - which acts exactly like `\RemoveEmptyStaves', except for also + • A new command, ‘\RemoveAllEmptyStaves’, has been made available, + which acts exactly like ‘\RemoveEmptyStaves’, except for also removing empty staves on the first system in a score. - * Markup-commands `\undertie' and `\overtie' are now available, as - well as the generic markup-command `\tie'. - + • Markup-commands ‘\undertie’ and ‘\overtie’ are now available, as + well as the generic markup-command ‘\tie’. \markup { \undertie "undertied" \overtie "overtied" @@ -160,11 +162,9 @@ New features in 2.20 since 2.18 } { \voiceOne \m \voiceTwo \m } - [image of music] - - - * `TabStaff' is now able to print micro-tones for bendings etc. + image of music + • ‘TabStaff’ is now able to print micro-tones for bendings etc. \layout { \context { \Score @@ -178,15 +178,14 @@ New features in 2.20 since 2.18 \new Staff << \clef "G_8" \mus >> \new TabStaff \mus >> - [image of music] - + image of music - * Two new styles of whiteout are now available. The `outline' style - approximates the contours of a glyph's outline, and its shape is + • Two new styles of whiteout are now available. The ‘outline’ style + approximates the contours of a glyph’s outline, and its shape is produced from multiple displaced copies of the glyph. The - `rounded-box' style produces a rounded rectangle shape. For all - three styles, including the default `box' style, the whiteout - shape's `thickness', as a multiple of staff-line thickness, can be + ‘rounded-box’ style produces a rounded rectangle shape. For all + three styles, including the default ‘box’ style, the whiteout + shape’s ‘thickness’, as a multiple of staff-line thickness, can be customized. \markup { @@ -214,12 +213,10 @@ New features in 2.20 since 2.18 \override Staff.Clef.whiteout = 3 g'1 } - [image of music] - - - * All of `\override', `\revert', `\set', and `\unset' now work with - the `\once' prefix for making one-time settings. + image of music + • All of ‘\override’, ‘\revert’, ‘\set’, and ‘\unset’ now work with + the ‘\once’ prefix for making one-time settings. \relative { c'4 d \override NoteHead.color = #red @@ -231,23 +228,22 @@ New features in 2.20 since 2.18 \revert NoteHead.color f2 c | } - [image of music] - - - * When outputting MIDI, LilyPond will now store the `title' defined - in a score's `\header' block (or, if there is no such definition - on the `\score' level, the first such definition found in a - `\header' block of the score's enclosing `\bookpart', `\book', or - top-level scope) as the name of the MIDI sequence in the MIDI - file. Optionally, the name of the MIDI sequence can be overridden - using the new `midititle' `\header' field independently of `title' - (for example, in case `title' contains markup code which does not - render as plain text in a satisfactory way automatically). - - * Music (and scheme and void) functions and markup commands that - just supply the final parameters to a chain of overrides, music - function and markup command calls can now be defined in the form - of just writing the expression cut short with `\etc'. + image of music + + • When outputting MIDI, LilyPond will now store the ‘title’ defined + in a score’s ‘\header’ block (or, if there is no such definition on + the ‘\score’ level, the first such definition found in a ‘\header’ + block of the score’s enclosing ‘\bookpart’, ‘\book’, or top-level + scope) as the name of the MIDI sequence in the MIDI file. + Optionally, the name of the MIDI sequence can be overridden using + the new ‘midititle’ ‘\header’ field independently of ‘title’ (for + example, in case ‘title’ contains markup code which does not render + as plain text in a satisfactory way automatically). + + • Music (and scheme and void) functions and markup commands that just + supply the final parameters to a chain of overrides, music function + and markup command calls can now be defined in the form of just + writing the expression cut short with ‘\etc’. bold-red-markup = \markup \bold \with-color #red \etc highlight = \tweak font-size 3 \tweak color #red \etc @@ -256,69 +252,63 @@ New features in 2.20 since 2.18 \markuplist \column-lines \bold-red { One Two } { c' \highlight d' e'2-\highlight -! } - [image of music] - - - * LilyPond functions defined with `define-music-function', - `define-event-function', `define-scheme-function' and - `define-void-function' can now be directly called from Scheme as - if they were genuine Scheme procedures. Argument checking and - matching will still be performed in the same manner as when - calling the function through LilyPond input. This includes the - insertion of defaults for optional arguments not matching their - predicates. Instead of using `\default' in the actual argument - list for explicitly skipping a sequence of optional arguments, - `*unspecified*' can be employed. - - * Current input location and parser are now stored in GUILE fluids - and can be referenced via the function calls `(*location*)' and - `(*parser*)'. Consequently, a lot of functions previously taking - an explicit `parser' argument no longer do so. - - Functions defined with `define-music-function', - `define-event-function', `define-scheme-function' and - `define-void-function' no longer use `parser' and `location' + image of music + + • LilyPond functions defined with ‘define-music-function’, + ‘define-event-function’, ‘define-scheme-function’ and + ‘define-void-function’ can now be directly called from Scheme as if + they were genuine Scheme procedures. Argument checking and + matching will still be performed in the same manner as when calling + the function through LilyPond input. This includes the insertion + of defaults for optional arguments not matching their predicates. + Instead of using ‘\default’ in the actual argument list for + explicitly skipping a sequence of optional arguments, + ‘*unspecified*’ can be employed. + + • Current input location and parser are now stored in GUILE fluids + and can be referenced via the function calls ‘(*location*)’ and + ‘(*parser*)’. Consequently, a lot of functions previously taking + an explicit ‘parser’ argument no longer do so. + + Functions defined with ‘define-music-function’, + ‘define-event-function’, ‘define-scheme-function’ and + ‘define-void-function’ no longer use ‘parser’ and ‘location’ arguments. With those particular definitions, LilyPond will try to recognize - legacy use of `parser' and `location' arguments, providing + legacy use of ‘parser’ and ‘location’ arguments, providing backwards-compatible semantics for some time. - * In the "english" notename language, the long notenames for pitches + • In the "english" notename language, the long notenames for pitches with accidentals now contain a hyphen for better readability. You now have to write - \key a-flat \major + \key a-flat \major instead of the previous - \key aflat \major - - Double accidentals do not get another hyphen, so the Dutch `cisis' - has the long English notename `c-sharpsharp'. - - * The visual style of tremolo slashes (shape, style and slope) is - now more finely controlled. - - [image of music] + \key aflat \major + Double accidentals do not get another hyphen, so the Dutch ‘cisis’ + has the long English notename ‘c-sharpsharp’. - * Multi-measure rests have length according to their total duration, - under the control of `MultiMeasureRest.space-increment'. + • The visual style of tremolo slashes (shape, style and slope) is now + more finely controlled. + image of music - [image of music] + • Multi-measure rests have length according to their total duration, + under the control of ‘MultiMeasureRest.space-increment’. + image of music + • Page numbers may now be printed in roman numerals, by setting the + ‘page-number-type’ paper variable. - * Page numbers may now be printed in roman numerals, by setting the - `page-number-type' paper variable. - - * It is now possible to use `\time' and `\partial' together to - change the time signature in mid measure. + • It is now possible to use ‘\time’ and ‘\partial’ together to change + the time signature in mid measure. \override Score.BarNumber.break-visibility = #end-of-line-invisible \partial 4 \time 3/4 f4 | 2 4 | 2 \bar "||" \time 9/8 \partial 4. f8 8 8 | 2. 8 8 8 | - [image of music] - + image of music - * It is now possible to override the `text' property of chord names. + • It is now possible to override the ‘text’ property of chord names. << \new ChordNames \chordmode { @@ -327,102 +317,99 @@ New features in 2.20 since 2.18 d } >> - [image of music] - + image of music - * Improved horizontal alignment when using `TextScript', with - `DynamicText' or `LyricText'. + • Improved horizontal alignment when using ‘TextScript’, with + ‘DynamicText’ or ‘LyricText’. - * A new command `\magnifyStaff' has been added which scales staff + • A new command ‘\magnifyStaff’ has been added which scales staff sizes, staff lines, bar lines, beamlets and horizontal spacing - generally at the `Staff' context level. Staff lines are prevented + generally at the ‘Staff’ context level. Staff lines are prevented from being scaled smaller than the default since the thickness of stems, slurs, and the like are all based on the staff line thickness. - * `InstrumentName' now supports `text-interface'. - - * There is now support for controlling the `expression level' of - MIDI channels using the `Staff.midiExpression' context property. - This can be used to alter the perceived volume of even sustained - notes (albeit in a very `low-level' way) and accepts a number - value between `0.0' and `1.0'. - - \score { - \new Staff \with { - midiExpression = #0.6 - midiInstrument = #"clarinet" - } - << - { a'1~ a'1 } - { - \set Staff.midiExpression = #0.7 s4\f\< - \set Staff.midiExpression = #0.8 s4 - \set Staff.midiExpression = #0.9 s4 - \set Staff.midiExpression = #1.0 s4 - - \set Staff.midiExpression = #0.9 s4\> - \set Staff.midiExpression = #0.8 s4 - \set Staff.midiExpression = #0.7 s4 - \set Staff.midiExpression = #0.6 s4\! - } - >> - \midi { } - } - - * Support for making it easier to use alternative `music' fonts other + • ‘InstrumentName’ now supports ‘text-interface’. + + • There is now support for controlling the ‘expression level’ of MIDI + channels using the ‘Staff.midiExpression’ context property. This + can be used to alter the perceived volume of even sustained notes + (albeit in a very ‘low-level’ way) and accepts a number value + between ‘0.0’ and ‘1.0’. + + \score { + \new Staff \with { + midiExpression = #0.6 + midiInstrument = #"clarinet" + } + << + { a'1~ a'1 } + { + \set Staff.midiExpression = #0.7 s4\f\< + \set Staff.midiExpression = #0.8 s4 + \set Staff.midiExpression = #0.9 s4 + \set Staff.midiExpression = #1.0 s4 + + \set Staff.midiExpression = #0.9 s4\> + \set Staff.midiExpression = #0.8 s4 + \set Staff.midiExpression = #0.7 s4 + \set Staff.midiExpression = #0.6 s4\! + } + >> + \midi { } + } + + • Support for making it easier to use alternative ‘music’ fonts other than the default Emmentaler in LilyPond has been added. See - `http://fonts.openlilylib.org/' for more information. + for more information. - * Grobs and their parents can now be aligned separately allowing - more flexibility for grob positions. For example the `left' edge - of a grob can now be aligned on the `center' of its parent. + • Grobs and their parents can now be aligned separately allowing more + flexibility for grob positions. For example the ‘left’ edge of a + grob can now be aligned on the ‘center’ of its parent. - * Improvements to the `\partial' command have been made to avoid + • Improvements to the ‘\partial’ command have been made to avoid problems when using multiple, parallel contexts. - * `\chordmode' can now use `< >' and `<< >>' constructs. + • ‘\chordmode’ can now use ‘< >’ and ‘<< >>’ constructs. - * A new command `\tagGroup' has now been added. This complements - the existing `\keepWithTag' and `\removeWithTag' commands. For + • A new command ‘\tagGroup’ has now been added. This complements the + existing ‘\keepWithTag’ and ‘\removeWithTag’ commands. For Example: - \tagGroup #'(violinI violinII viola cello) + \tagGroup #'(violinI violinII viola cello) - declares a list of `tags' that belong to a single `tag group'. + declares a list of ‘tags’ that belong to a single ‘tag group’. - \keepWithTag #'violinI + \keepWithTag #'violinI - Is now only concerned with `tags' from `violinI'’s tag group. + Is now only concerned with ‘tags’ from ‘violinI’’s tag group. - Any element of the included music tagged with one or more tags - from the group, but _not_ with VIOLINI, will be removed. + Any element of the included music tagged with one or more tags from + the group, but _not_ with VIOLINI, will be removed. - * The `\addlyrics' function now works with arbitrary contexts - incuding `Staff'. + • The ‘\addlyrics’ function now works with arbitrary contexts + incuding ‘Staff’. - * String numbers can now also be used to print roman numerals (e.g. + • String numbers can now also be used to print roman numerals (e.g. for unfretted string instruments). - c2\2 \romanStringNumbers c\2 \arabicStringNumbers c1\3 - [image of music] + image of music + • The ‘thin-kern’ property of the ‘BarLine’ grob has been renamed to + ‘segno-kern’. - * The `thin-kern' property of the `BarLine' grob has been renamed to - `segno-kern'. - - * `KeyCancellation' grobs now ignore cue clefs (like `KeySignature' + • ‘KeyCancellation’ grobs now ignore cue clefs (like ‘KeySignature’ grobs do). - * Add support for `\once \unset' + • Add support for ‘\once \unset’ - * It is now possible to individually color both the dots and - parentheses in fret diagrams when using the - `\fret-diagram-verbose' markup command. + • It is now possible to individually color both the dots and + parentheses in fret diagrams when using the ‘\fret-diagram-verbose’ + markup command. \new Voice { c1^\markup { @@ -452,13 +439,12 @@ New features in 2.20 since 2.18 } } } - [image of music] - + image of music - * Two new properties have been added for use in - `fret-diagram-details' when using the `\fret-diagram-verbose' - markup command; `fret-label-horizontal-offset' which affects the - `fret-label-indication' and `paren-padding' which controls the + • Two new properties have been added for use in + ‘fret-diagram-details’ when using the ‘\fret-diagram-verbose’ + markup command; ‘fret-label-horizontal-offset’ which affects the + ‘fret-label-indication’ and ‘paren-padding’ which controls the space between the dot and the parentheses surrounding it. \new Voice { @@ -485,26 +471,23 @@ New features in 2.20 since 2.18 } } } - [image of music] + image of music - - * A new markup command `\justify-line' has been added. Similar to - the `\fill-line' markup command except that instead of setting - _words_ in columns, the `\justify-line' command balances the + • A new markup command ‘\justify-line’ has been added. Similar to + the ‘\fill-line’ markup command except that instead of setting + _words_ in columns, the ‘\justify-line’ command balances the whitespace between them ensuring that when there are three or more words in a markup, the whitespace is always consistent. \markup \fill-line {oooooo oooooo oooooo oooooo} \markup \fill-line {ooooooooo oooooooo oo ooo} - [image of music] - + image of music \markup \justify-line {oooooo oooooo oooooo oooooo} \markup \justify-line {ooooooooo oooooooo oo ooo} - [image of music] + image of music - - * A new command `\magnifyMusic' has been added, which allows the + • A new command ‘\magnifyMusic’ has been added, which allows the notation size to be changed without changing the staff size, while automatically scaling stems, beams, and horizontal spacing. @@ -522,32 +505,30 @@ New features in 2.20 since 2.18 } } >> - [image of music] - + image of music - * A new flexible template suitable for a range of choral music, is - now provided. This may be used to create simple choral music, - with or without piano accompaniment, in two or four staves. Unlike - other templates, this template is `built-in', which means it does - not need to be copied and edited: instead it is simply `\include''d - in the input file. For details, see *note Built-in templates: - (lilypond-learning)Built-in templates. + • A new flexible template suitable for a range of choral music, is + now provided. This may be used to create simple choral music, with + or without piano accompaniment, in two or four staves. Unlike + other templates, this template is ‘built-in’, which means it does + not need to be copied and edited: instead it is simply ‘\include’’d + in the input file. For details, see *note + (lilypond-learning)Built-in templates::. - * The positioning of tuplet numbers for kneed beams has been + • The positioning of tuplet numbers for kneed beams has been significantly improved. Previously, tuplet numbers were placed - according to the position of the tuplet bracket, even if it was - not printed. This could lead to stranded tuplet numbers. Now - they are now positioned closer to the kneed-beam when an - appropriate beam segment exists for its placement and when the - bracket is not drawn. + according to the position of the tuplet bracket, even if it was not + printed. This could lead to stranded tuplet numbers. Now they are + now positioned closer to the kneed-beam when an appropriate beam + segment exists for its placement and when the bracket is not drawn. Collision detection is also added, offsetting horizontally if too - close to an adjoining note column but preserving the number's - vertical distance from the kneed beam. If the number itself is - too large to fit in the available space the original, - bracket-based, positioning system is used instead; and in the - event of a collision (e.g. with an accidental) the tuplet number - is moved vertically away instead. + close to an adjoining note column but preserving the number’s + vertical distance from the kneed beam. If the number itself is too + large to fit in the available space the original, bracket-based, + positioning system is used instead; and in the event of a collision + (e.g. with an accidental) the tuplet number is moved vertically + away instead. \time 3/4 \override Beam.auto-knee-gap = 3 @@ -556,11 +537,10 @@ New features in 2.20 since 2.18 c'8 g,, e'' g,,8 e''' c,, } - [image of music] - + image of music The original kneed-beam tuplet behavior is still available through - an `\override' via a new, `knee-to-beam' property. + an ‘\override’ via a new, ‘knee-to-beam’ property. \time 3/4 \override Beam.auto-knee-gap = 3 @@ -570,49 +550,47 @@ New features in 2.20 since 2.18 c'8 g,, e'' g,,8 e''' c,, } - [image of music] - - - * `\lyricsto' and `\addLyrics' have been `harmonized'. Both now - accept the same kind of delimited argument list that `\lyrics' and - `\chords' accept. Backward compatibility has been added so music - identifiers (i.e. `\mus') are permitted as arguments. A - `convert-ly' rule has been added that removes redundant uses of - `\lyricmode' and rearranges combinations with context starters such - that `\lyricsto' in general is applied last (i.e. like - `\lyricmode' would be). - - * Scheme functions and identifiers can now be used as output + image of music + + • ‘\lyricsto’ and ‘\addLyrics’ have been ‘harmonized’. Both now + accept the same kind of delimited argument list that ‘\lyrics’ and + ‘\chords’ accept. Backward compatibility has been added so music + identifiers (i.e. ‘\mus’) are permitted as arguments. A + ‘convert-ly’ rule has been added that removes redundant uses of + ‘\lyricmode’ and rearranges combinations with context starters such + that ‘\lyricsto’ in general is applied last (i.e. like + ‘\lyricmode’ would be). + + • Scheme functions and identifiers can now be used as output definitions. - * Scheme expressions can now be used as chord constituents. + • Scheme expressions can now be used as chord constituents. - * Improved visual spacing of small and regular `MI' Funk and Walker + • Improved visual spacing of small and regular ‘MI’ Funk and Walker noteheads so they are now the same width as other shaped notes in - their respective sets. `SOL' noteheads are also now visually + their respective sets. ‘SOL’ noteheads are also now visually improved when used with both the normal Aiken and Sacred Harp heads, as well as with the thin variants. - * `LeftEdge' now has a definable `Y-extent' (i.e.vertical). See *note - LeftEdge: (lilypond-internals)LeftEdge. + • ‘LeftEdge’ now has a definable ‘Y-extent’ (i.e.vertical). See + *note (lilypond-internals)LeftEdge::. - * Added a new `make-path-stencil' function that supports all `path' + • Added a new ‘make-path-stencil’ function that supports all ‘path’ commands both relative and absolute: - `lineto', `rlineto', `curveto', `rcurveto', `moveto', `rmoveto', - `closepath'. The function also supports `single-letter' syntax + ‘lineto’, ‘rlineto’, ‘curveto’, ‘rcurveto’, ‘moveto’, ‘rmoveto’, + ‘closepath’. The function also supports ‘single-letter’ syntax used in standard SVG path commands: - `L', `l', `C', `c', `M', `m', `Z' and `z'. The new command is - also backward-compatible with the original - `make-connected-path-stencil' function. Also see - `scm/stencil.scm'. + ‘L’, ‘l’, ‘C’, ‘c’, ‘M’, ‘m’, ‘Z’ and ‘z’. The new command is also + backward-compatible with the original ‘make-connected-path-stencil’ + function. Also see ‘scm/stencil.scm’. - * Context properties named in the `alternativeRestores' property are + • Context properties named in the ‘alternativeRestores’ property are restored to their value at the start of the _first_ alternative in all subsequent alternatives. - Currently the default set restores `current meter'; + Currently the default set restores ‘current meter’; \time 3/4 \repeat volta 2 { c2 e4 | } @@ -621,10 +599,9 @@ New features in 2.20 since 2.18 { f2 d4 | } } g2. | - [image of music] - + image of music - `measure position'; + ‘measure position’; \time 3/4 \repeat volta 2 { c2 e4 | } @@ -635,10 +612,9 @@ New features in 2.20 since 2.18 { f2 d4 | } } g2. | - [image of music] + image of music - - and `chord changes'; + and ‘chord changes’; << \new ChordNames { @@ -654,23 +630,21 @@ New features in 2.20 since 2.18 \chordmode { d:m } } >> - [image of music] - + image of music - * Improved MIDI output for breathe marks. After tied notes, breaths - take time _only_ from the last note of the tie; e.g. `{ c4~ c8 - \breathe }' performs as `{ c4~ c16 r }' instead of `{ c4 r8 }'. - This is more consistent with articulations and how humans - interpret breaths after ties. It now also makes it easier to - align simultaneous breathe marks over multiple parts, all with - different note lengths. + • Improved MIDI output for breathe marks. After tied notes, breaths + take time _only_ from the last note of the tie; e.g. ‘{ c4~ c8 + \breathe }’ performs as ‘{ c4~ c16 r }’ instead of ‘{ c4 r8 }’. + This is more consistent with articulations and how humans interpret + breaths after ties. It now also makes it easier to align + simultaneous breathe marks over multiple parts, all with different + note lengths. - * A new note head style for Tabulature has been added; - `TabNoteHead.style = #'slash'. + • A new note head style for Tabulature has been added; + ‘TabNoteHead.style = #'slash’. - * Four new Clef glyphs have been added _Double G_, _Tenor G_, + • Four new Clef glyphs have been added _Double G_, _Tenor G_, _Varpercussion_ and _varC_ and their related tessitura. - \override Staff.Clef.full-size-change = ##t \clef "GG" c c c c @@ -691,14 +665,13 @@ New features in 2.20 since 2.18 \clef "tenorvarC" c c c c \clef "baritonevarC" c c c c \clef "varpercussion" c c c c - [image of music] + image of music - - * Isolated durations in music sequences now stand for unpitched + • Isolated durations in music sequences now stand for unpitched notes. This may be useful for specifying rhythms to music or - scheme functions. When encountered in the final score, the - pitches are provided by the preceding note or chord. Here are two - examples where this makes for readable input: + scheme functions. When encountered in the final score, the pitches + are provided by the preceding note or chord. Here are two examples + where this makes for readable input: \new DrumStaff \with { \override StaffSymbol.line-count = 1 } \drummode { @@ -706,50 +679,46 @@ New features in 2.20 since 2.18 tambourine 8 \tuplet 3/2 { 16 16 16 } 8 \tuplet 3/2 { 16 16 16 } 8 8 | } - [image of music] - + image of music \new Staff { r16 c'16 ~ 8 ~ 4 ~ 2 | } - [image of music] + image of music - - * `\displayLilyMusic' and its underlying Scheme functions no longer + • ‘\displayLilyMusic’ and its underlying Scheme functions no longer omit redundant note durations. This makes it easier to reliably recognize and format standalone durations in expressions like - { c4 d4 8 } + { c4 d4 8 } - * Beaming exceptions can now be constructed using the - `\beamExceptions' scheme function. One can now write + • Beaming exceptions can now be constructed using the + ‘\beamExceptions’ scheme function. One can now write \time #'(2 1) 3/16 \set Timing.beamExceptions = \beamExceptions { 32[ 32] 32[ 32] 32[ 32] } c16 c c | \repeat unfold 6 { c32 } | - [image of music] - + image of music - with multiple exceptions separated with `|' bar checks (writing - the exception pattern without pitches is convenient but not - mandatory). Previously, setting the beam exceptions would have - required writing + with multiple exceptions separated with ‘|’ bar checks (writing the + exception pattern without pitches is convenient but not mandatory). + Previously, setting the beam exceptions would have required writing - \set Timing.beamExceptions = - #'( ;start of alist - (end . ;entry for end of beams - ( ;start of alist of end points - ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16 - ))) + \set Timing.beamExceptions = + #'( ;start of alist + (end . ;entry for end of beams + ( ;start of alist of end points + ((1 . 32) . (2 2 2)) ;rule for 1/32 beams -- end each 1/16 + ))) - * The most common articulations are now reflected in MIDI output. + • The most common articulations are now reflected in MIDI output. Accent and marcato make notes louder; staccato, staccatissimo and - portato make them shorter. Breath marks shorten the previous note. + portato make them shorter. Breath marks shorten the previous note. - This behavior is customizable through the `midiLength' and - `midiExtraVelocity' properties on `ArticulationEvent'. See - `script-init.ly' for examples. + This behavior is customizable through the ‘midiLength’ and + ‘midiExtraVelocity’ properties on ‘ArticulationEvent’. See + ‘script-init.ly’ for examples. - * The PostScript functionality of stroke adjustment is no longer + • The PostScript functionality of stroke adjustment is no longer applied automatically but left to the discretion of the PostScript device (by default, Ghostscript uses it for resolutions up to 150dpi when generating raster images). When it is enabled, a more @@ -757,14 +726,8 @@ New features in 2.20 since 2.18 adjustment is employed mostly for stems and bar lines. Stroke adjustment can be forced by specifying the command line - option `-dstrokeadjust' to LilyPond. When generating `PDF' files, - this will usually result in markedly better looking `PDF' previews + option ‘-dstrokeadjust’ to LilyPond. When generating ‘PDF’ files, + this will usually result in markedly better looking ‘PDF’ previews but significantly larger file size. Print quality at high resolutions will be unaffected. - - - -Local Variables: -coding: utf-8 -End: diff --git a/README.txt b/README.txt index 68e0e1397c..09f0f1847a 100644 --- a/README.txt +++ b/README.txt @@ -4,67 +4,67 @@ Toplevel README 1 Toplevel README ***************** -LilyPond is a music typesetter. It produces beautiful sheet music -using a description file as input. LilyPond is part of the GNU Project. +LilyPond is a music typesetter. It produces beautiful sheet music using +a description file as input. LilyPond is part of the GNU Project. 1.1 Versioning ============== LilyPond uses a versioning scheme that easily identifies stable and -development releases. In a version "x.y.z", an even second number 'y' -denotes a stable version. For development versions 'y' is odd. +development releases. In a version "x.y.z", an even second number ’y’ +denotes a stable version. For development versions ’y’ is odd. 1.2 Downloading =============== The primary download site for sourcecode is -`http://lilypond.org/downloads/'. +. 1.3 Compilation =============== For compiling and running LilyPond see the installation instructions. These instructions can be found when you unpack lilypond, as -`lilypond-x.y.z/INSTALL.txt'. They are also available on the web at -`http://lilypond.org/doc/v2.12/Documentation/topdocs/INSTALL.html'. +‘lilypond-x.y.z/INSTALL.txt’. They are also available on the web at +. 1.4 Documentation ================= -The documentation is available online at `http://lilypond.org/doc/'. +The documentation is available online at . You can also build it locally: follow the instructions under -`Building documentation' in the installation instructions. +‘Building documentation’ in the installation instructions. 1.5 Comments ============ -Send your criticism, comments, bugreports, patches, etc. to the mailing +Send your criticism, comments, bugreports, patches, etc. to the mailing list, not to us personally. We have the following mailing lists: - * info-lilypond@gnu.org + • info-lilypond@gnu.org (http://lists.gnu.org/mailman/listinfo/info-lilypond) is a - low-volume list for information on LilyPond project. This - list is moderated; ask David R. Linn or - Han-Wen to send announcements for this list. + low-volume list for information on LilyPond project. This list is + moderated; ask David R. Linn or Han-Wen + to send announcements for this list. - * lilypond-devel@gnu.org - (http://lists.gnu.org/mailman/listinfo/lilypond-devel) for + • lilypond-devel@gnu.org + (http://lists.gnu.org/mailman/listinfo/lilypond-devel) for discussions about developing LilyPond, in particular the unstable series. - * lilypond-user@gnu.org - (http://lists.gnu.org/mailman/listinfo/lilypond-user) for + • lilypond-user@gnu.org + (http://lists.gnu.org/mailman/listinfo/lilypond-user) for discussions about using LilyPond, in particular the stable series. - * bug-lilypond@gnu.org + • bug-lilypond@gnu.org (http://lists.gnu.org/mailman/listinfo/bug-lilypond) for sending bugreports. - * lilypond-auto@gnu.org - (http://lists.gnu.org/mailman/listinfo/lilypond-auto) for + • lilypond-auto@gnu.org + (http://lists.gnu.org/mailman/listinfo/lilypond-auto) for notifications from the issue tracking systems of LilyPond. You can search the lists from our searching facilities diff --git a/VERSION b/VERSION index 52ba04b1e7..0c746e0c7b 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=2 MINOR_VERSION=19 -PATCH_LEVEL=45 +PATCH_LEVEL=47 MY_PATCH_LEVEL= VERSION_STABLE=2.18.2 -VERSION_DEVEL=2.19.45 +VERSION_DEVEL=2.19.47 diff --git a/input/regression/context-mod-with.ly b/input/regression/context-mod-with.ly index 999c94bab8..391e49da48 100644 --- a/input/regression/context-mod-with.ly +++ b/input/regression/context-mod-with.ly @@ -1,4 +1,4 @@ -\version "2.19.21" +\version "2.19.46" \header { texidoc = "Context modifications can be stored into a variable as a @@ -41,11 +41,11 @@ music = \relative { \key fis \minor c''1 d e } \mark \markup { "Remove time sig, add ambitus, set staff to 4 lines" } \music } - % Some context modifications manually written in a \with block + % The same mods as direct value of \with \new Staff \with \ctxmod { \mark \markup { "The same mods using a variable" } \music } - % The same mods as direct value of \with + % Some context modifications manually written in a \with block \new Staff \with { \ctxmod } { \mark \markup { "The same mods using a variable and \with" } \music @@ -65,8 +65,8 @@ music = \relative { \key fis \minor c''1 d e } \ctxmod \remove "Key_engraver" } { \mark \markup { "Also remove clef and key engravers" } \music } - % Mods can be inserted instead of a \with block (i.e. \with is not required) - \new Staff \ctxmod { \mark \markup { "The same mods as staff 2" } \music } + % Test rendered redundant by issue 4911 + \new Staff \with \ctxmod { \mark \markup { "The same mods as staff 2" } \music } \new Staff { \mark \markup { "Back to default" } \music } >> } diff --git a/input/regression/midi/crescendo-abutting.ly b/input/regression/midi/crescendo-abutting.ly deleted file mode 100644 index da0ff4ffa0..0000000000 --- a/input/regression/midi/crescendo-abutting.ly +++ /dev/null @@ -1,10 +0,0 @@ -\version "2.19.44" - -\header { - texidoc="One (de)crescendo ends as the next begins." -} - -\score { - { c\< c\> c\! } - \midi {} -} diff --git a/input/regression/midi/crescendo-gap-compatible-target.ly b/input/regression/midi/crescendo-gap-compatible-target.ly new file mode 100644 index 0000000000..38c19a3d92 --- /dev/null +++ b/input/regression/midi/crescendo-gap-compatible-target.ly @@ -0,0 +1,18 @@ +\version "2.19.45" + +\header { + texidoc="When there is a gap between the end of a crescendo and a + subsequent explicit dynamic, the dynamic performer uses the explicit + dynamic as the target of the crescendo." + + %% Note: Choosing this behavior simplified the implementation. In + %% the developer's opinion, it is difficult to argue that choosing a + %% target dynamic that under- or overshoots the explicit dynamic is + %% more correct. + +} + +\score { + { c\mf\< c\! c\f } + \midi {} +} diff --git a/input/regression/midi/crescendo-return-crescendo.ly b/input/regression/midi/crescendo-return-crescendo.ly new file mode 100644 index 0000000000..4ab8dac24f --- /dev/null +++ b/input/regression/midi/crescendo-return-crescendo.ly @@ -0,0 +1,12 @@ +\version "2.19.44" + +\header { + texidoc="The dynamic performer chooses a reasonable peak dynamic and + returns to the original dynamic. The latter, extreme crescendo does + not affect the former." +} + +\score { + { c\mf\< c\> c\< c\sf } + \midi {} +} diff --git a/input/regression/midi/crescendo-return-louder-target.ly b/input/regression/midi/crescendo-return-louder-target.ly new file mode 100644 index 0000000000..f3fcb36233 --- /dev/null +++ b/input/regression/midi/crescendo-return-louder-target.ly @@ -0,0 +1,11 @@ +\version "2.19.45" + +\header { + texidoc="The dynamic performer chooses a reasonable peak dynamic and + returns to the specified dynamic." +} + +\score { + { c\mf\< c\> c\f } + \midi {} +} diff --git a/input/regression/midi/crescendo-return-softer-target.ly b/input/regression/midi/crescendo-return-softer-target.ly new file mode 100644 index 0000000000..788724be3f --- /dev/null +++ b/input/regression/midi/crescendo-return-softer-target.ly @@ -0,0 +1,11 @@ +\version "2.19.45" + +\header { + texidoc="The dynamic performer chooses a reasonable peak dynamic and + returns to the specified dynamic." +} + +\score { + { c\mf\< c\> c\p } + \midi {} +} diff --git a/input/regression/midi/crescendo-return-unspecified-target.ly b/input/regression/midi/crescendo-return-unspecified-target.ly new file mode 100644 index 0000000000..065f674ae1 --- /dev/null +++ b/input/regression/midi/crescendo-return-unspecified-target.ly @@ -0,0 +1,11 @@ +\version "2.19.44" + +\header { + texidoc="The dynamic performer chooses a reasonable peak dynamic and + returns to the original dynamic." +} + +\score { + { c\mf\< c\> c\! } + \midi {} +} diff --git a/input/regression/midi/crescendo-single-compatible-target.ly b/input/regression/midi/crescendo-single-compatible-target.ly new file mode 100644 index 0000000000..fcc0f5a6ef --- /dev/null +++ b/input/regression/midi/crescendo-single-compatible-target.ly @@ -0,0 +1,11 @@ +\version "2.19.44" + +\header { + texidoc="The velocity of notes during a crescendo is linearly + interpolated between the starting and target dynamics." +} + +\score { + { c\mf\< c c\f } + \midi {} +} diff --git a/input/regression/midi/crescendo-single-unspecified-target.ly b/input/regression/midi/crescendo-single-unspecified-target.ly new file mode 100644 index 0000000000..d995609be9 --- /dev/null +++ b/input/regression/midi/crescendo-single-unspecified-target.ly @@ -0,0 +1,11 @@ +\version "2.19.44" + +\header { + texidoc="If no explicit dynamic follows a crescendo, the dynamic + performer chooses a reasonable target dynamic." +} + +\score { + { c\mf\< c\! } + \midi {} +} diff --git a/input/regression/midi/decrescendo-multiple-compatible-target.ly b/input/regression/midi/decrescendo-multiple-compatible-target.ly new file mode 100644 index 0000000000..d066381102 --- /dev/null +++ b/input/regression/midi/decrescendo-multiple-compatible-target.ly @@ -0,0 +1,12 @@ +\version "2.19.45" + +\header { + texidoc="The dynamic performer apportions changes to consecutive + decrescendi in proportion to their duration. In this case, 1/3 of + the change occurs over the first decrescendo." +} + +\score { + { c\f\> c\! c2\> | c1\p } + \midi {} +} diff --git a/input/regression/midi/decrescendo-single-contrary-target.ly b/input/regression/midi/decrescendo-single-contrary-target.ly new file mode 100644 index 0000000000..7c13541747 --- /dev/null +++ b/input/regression/midi/decrescendo-single-contrary-target.ly @@ -0,0 +1,15 @@ +\version "2.19.45" + +\header { + texidoc="When a decrescendo is followed by an explicit dynamic that + is louder than the starting dynamic, the dynamic performer chooses a + reasonable target dynamic. The velocity of notes during the + decrescendo is linearly interpolated between the starting and target + dynamics, with the explicit dynamic taking effect at the last + moment." +} + +\score { + { c\mf\> c c\f } + \midi {} +} diff --git a/input/regression/midi/dynamic-voices-sequential.ly b/input/regression/midi/dynamic-voices-sequential.ly new file mode 100644 index 0000000000..2d25b2d696 --- /dev/null +++ b/input/regression/midi/dynamic-voices-sequential.ly @@ -0,0 +1,15 @@ +\version "2.19.47" + +\header { + texidoc="The MIDI performer operates in Voice context by default, + so dynamics in different voices are independent." +} + +\score { + \new Staff { + \new Voice = "A" c'2\p + \new Voice = "A" c'2 % default dynamic expected + } + + \midi {} +} diff --git a/input/regression/midi/dynamic-voices-simultaneous.ly b/input/regression/midi/dynamic-voices-simultaneous.ly new file mode 100644 index 0000000000..091dd68989 --- /dev/null +++ b/input/regression/midi/dynamic-voices-simultaneous.ly @@ -0,0 +1,15 @@ +\version "2.19.47" + +\header { + texidoc="The MIDI performer operates in Voice context by default, + so dynamics in different voices are independent." +} + +\score { + \new Staff << + \new Voice = "A" e'2\p + \new Voice = "A" c'2 % default dynamic expected + >> + + \midi {} +} diff --git a/input/regression/midi/midi-overlapping-notes.ly b/input/regression/midi/midi-overlapping-notes.ly new file mode 100644 index 0000000000..e808bb9ada --- /dev/null +++ b/input/regression/midi/midi-overlapping-notes.ly @@ -0,0 +1,22 @@ +\header { + + texidoc = "Notes with equal pitch overlapping in time on the same +MIDI channel should produce multiple MIDI note-on events, but no +isolated note-off events before the last of these notes ends." + +} + +\version "2.19.45" + +\score { + \new Staff \with { midiInstrument = "church organ" } + \new Voice \relative c' << + % This combination of music expressions should not produce audible + % pauses between notes in the MIDI output, in particular, before the + % 'g1' note in the first expression. + { c1 s1 g1 } + { s4 c4 } + { s2 c2~ c1 s1 } + >> + \midi { } +} diff --git a/input/regression/remove-empty-context-mod.ly b/input/regression/remove-empty-context-mod.ly index 9a503b53c6..83a2401a72 100644 --- a/input/regression/remove-empty-context-mod.ly +++ b/input/regression/remove-empty-context-mod.ly @@ -1,4 +1,4 @@ -\version "2.16.0" +\version "2.19.46" \header { texidoc = "@code{\\RemoveEmptyStaves} is defined separately from @@ -9,7 +9,7 @@ context definitions so it can be used outside of @code{\\layout} blocks." ragged-right = ##t } -\new Staff \RemoveEmptyStaves { +\new Staff \with \RemoveEmptyStaves { c'1 \break r1 } diff --git a/input/regression/retrograde.ly b/input/regression/retrograde.ly new file mode 100644 index 0000000000..dd7f7eba95 --- /dev/null +++ b/input/regression/retrograde.ly @@ -0,0 +1,30 @@ +\version "2.18.0" + +\header { + texidoc = "@code{\\retrograde} can deal with crescendo and + decrescendo as long as they are properly paired with + @code{\\endcr}/@code{\\!} and @code{\\enddecr}. Direction modifiers + on slurs like @code{^(} need to be repeated as @code{^)} at the end. + Ties and glissandi work mostly (in-chord ties are turned into + ordinary per-chord/note ties, however)." +} + +\layout { ragged-right = ##t } + +motif = +\relative { + \override TextSpanner.bound-details.left.text = "motif" + 2~\startTextSpan c16\< d^( e f~ f4:32^)\!\> | + << + \context Voice = "voice" { + 4 g8\glissando f\stopTextSpan\enddecr } + \\ + { c2 } + >> +} + +\new Voice = "voice" { + \motif + \override TextSpanner.bound-details.left.text = "retrograde motif" + \retrograde \motif \bar "|." +} diff --git a/input/regression/scheme-text-spanner.ly b/input/regression/scheme-text-spanner.ly index d89a959149..d97d215363 100644 --- a/input/regression/scheme-text-spanner.ly +++ b/input/regression/scheme-text-spanner.ly @@ -68,7 +68,7 @@ in scheme." (SchemeTextSpanEvent . ((description . "Used to signal where scheme text spanner brackets start and stop.") - (types . (scheme-text-span-event span-event event)) + (types . (post-event scheme-text-span-event span-event event)) )) )) diff --git a/input/regression/spacing-to-empty-barline.ly b/input/regression/spacing-to-empty-barline.ly index 16cb6656fb..b35fb67f80 100644 --- a/input/regression/spacing-to-empty-barline.ly +++ b/input/regression/spacing-to-empty-barline.ly @@ -1,4 +1,4 @@ -\version "2.17.30" +\version "2.19.46" \header { texidoc = "An empty barline does not confuse the spacing engine too much. @@ -15,7 +15,6 @@ The two scores should look approximately the same." \name "Top" \alias "Staff" \type "Engraver_group" - \consists "Output_property_engraver" \consists "Bar_engraver" \consists "Axis_group_engraver" diff --git a/lily/audio-item.cc b/lily/audio-item.cc index 97a15d552a..a8a78199c7 100644 --- a/lily/audio-item.cc +++ b/lily/audio-item.cc @@ -21,6 +21,7 @@ #include "midi-item.hh" #include "audio-column.hh" +#include "international.hh" Audio_instrument::Audio_instrument (string instrument_string) { @@ -101,24 +102,15 @@ Audio_key::Audio_key (int acc, bool major) major_ = major; } -Audio_dynamic::Audio_dynamic () - : volume_ (-1), - silent_ (false) -{ -} - -Audio_span_dynamic::Audio_span_dynamic (Real min_volume, Real max_volume) -{ - grow_dir_ = CENTER; - min_volume_ = min_volume; - max_volume_ = max_volume; -} +const Real Audio_span_dynamic::MINIMUM_VOLUME = 0.0; +const Real Audio_span_dynamic::MAXIMUM_VOLUME = 1.0; +const Real Audio_span_dynamic::DEFAULT_VOLUME = 90.0 / 127.0; -void -Audio_span_dynamic::add_absolute (Audio_dynamic *d) +Audio_span_dynamic::Audio_span_dynamic (Moment mom, Real volume) + : start_moment_ (mom), + duration_ (0) { - assert (d); - dynamics_.push_back (d); + set_volume (volume, volume); } Moment @@ -140,53 +132,60 @@ moment_to_ticks (Moment m) return int (moment_to_real (m) * 384 * 4); } -void -Audio_span_dynamic::render () +void Audio_span_dynamic::set_end_moment (Moment mom) { - if (dynamics_.size () <= 1) - return; - - assert (dynamics_[0]->volume_ >= 0); - - while (dynamics_.back ()->volume_ > 0 - && dynamics_.size () > 1 - && sign (dynamics_.back ()->volume_ - dynamics_[0]->volume_) != grow_dir_) + if (mom < start_moment_) { - dynamics_.erase (dynamics_.end () - 1); + programming_error (_f ("end moment (%s) < start moment (%s)", + mom.to_string ().c_str (), + start_moment_.to_string ().c_str ())); + mom = start_moment_; } - if (dynamics_.size () <= 1) + duration_ = moment_to_real (mom - start_moment_); +} + +void +Audio_span_dynamic::set_volume (Real start, Real target) +{ + if (!(start >= 0)) { - programming_error ("Impossible or ambiguous (de)crescendo in MIDI."); - return; + programming_error (_f ("invalid start volume: %f", start)); + start = DEFAULT_VOLUME; } - Real start_v = dynamics_[0]->volume_; - if (dynamics_.back ()->volume_ < 0) + if (!(target >= 0)) { - // The dynamic spanner does not end with an explicit dynamic script - // event. Adjust the end volume by at most 1/4 of the available - // volume range in this case. - dynamics_.back ()->volume_ = max (min (start_v + grow_dir_ * (max_volume_ - min_volume_) * 0.25, max_volume_), min_volume_); + programming_error (_f ("invalid target volume: %f", target)); + target = start; } - Real delta_v = dynamics_.back ()->volume_ - dynamics_[0]->volume_; - - Moment start = dynamics_[0]->get_column ()->when (); + start_volume_ = start; + gain_ = target - start; +} - Real total_t = moment_to_real (dynamics_.back ()->get_column ()->when () - start); +Real Audio_span_dynamic::get_volume (Moment mom) const +{ + const Real when = moment_to_real (mom - start_moment_); - for (vsize i = 1; i < dynamics_.size (); i++) + if (when <= 0) { - Moment dt_moment = dynamics_[i]->get_column ()->when () - - start; - - Real dt = moment_to_real (dt_moment); - - Real v = start_v + delta_v * (dt / total_t); + if (when < 0) + programming_error (_f ("asked to compute volume at %f for dynamic span of duration %f starting at %s", + when, duration_, + start_moment_.to_string ().c_str ())); + return start_volume_; + } - dynamics_[i]->volume_ = v; + if (when >= duration_) + { + programming_error (_f ("asked to compute volume at +%f for dynamic span of duration %f starting at %s", + when, duration_, + start_moment_.to_string ().c_str ())); + return start_volume_ + gain_; } + + return start_volume_ + gain_ * (when / duration_); } Audio_tempo::Audio_tempo (int per_minute_4) @@ -206,20 +205,8 @@ Audio_text::Audio_text (Audio_text::Type type, const string &text_string) type_ = type; } -Audio_control_function_value_change -::Audio_control_function_value_change (Control control, Real value) - : control_ (control), value_ (value) +Audio_control_change::Audio_control_change (int control, int value) + : control_ (control), + value_ (value) { } - -const Audio_control_function_value_change::Context_property -Audio_control_function_value_change::context_properties_[] = { - // property name, enum constant, lower bound for range, upper bound for range - { "midiBalance", BALANCE, -1.0, 1.0 }, - { "midiPanPosition", PAN_POSITION, -1.0, 1.0 }, - { "midiExpression", EXPRESSION, 0.0, 1.0 }, - { "midiReverbLevel", REVERB_LEVEL, 0.0, 1.0 }, - { "midiChorusLevel", CHORUS_LEVEL, 0.0, 1.0 }, - // extra element to signify the end of the mapping, must be kept last - { 0, NUM_CONTROLS, 0.0, 0.0 } -}; diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc index 5ce67f0463..23b7d43bfd 100644 --- a/lily/dynamic-performer.cc +++ b/lily/dynamic-performer.cc @@ -19,6 +19,7 @@ #include "performer.hh" #include "audio-item.hh" +#include "std-vector.hh" #include "stream-event.hh" #include "international.hh" @@ -29,6 +30,8 @@ class Dynamic_performer : public Performer public: TRANSLATOR_DECLARATIONS (Dynamic_performer); protected: + virtual void acknowledge_audio_element (Audio_element_info info); + virtual void finalize (); void stop_translation_timestep (); void process_music (); Real equalize_volume (Real); @@ -36,25 +39,286 @@ protected: void listen_decrescendo (Stream_event *); void listen_crescendo (Stream_event *); void listen_absolute_dynamic (Stream_event *); + +private: + void close_and_enqueue_span (); + Real compute_departure_volume (Direction depart_dir, + Real start_vol, + Real end_vol, + Real min_vol, + Real max_vol); + bool drive_state_machine (Direction next_grow_dir); + // next_vol < 0 means select a target dynamic based on growth direction. + // return actual next volume (computed if not provided) + Real finish_queued_spans (Real next_vol = -1.0); + Real look_up_absolute_volume (SCM dynamicString, + Real defaultValue); + +private: + // This performer queues a number of dynamic spans waiting for the following + // pattern before computing their volume levels. + // + // 1. the first (de)crescendo, followed by ... + // 2. zero or more spans that either change in the same direction as the + // first or do not change, followed by ... + // 3. zero or more spans that either change in the opposite direction as the + // first or do not change + // + // The search may be cut short by an absolute dynamic or the end of the + // context. + enum State + { + STATE_INITIAL = 0, // waiting for a (de)crescendo + STATE_DEPART, // enqueued the first span, gathering same-direction spans + STATE_RETURN // gathering opposite-direction spans + }; + + struct UnfinishedSpan + { + Audio_span_dynamic *dynamic_; + Direction grow_dir_; + + UnfinishedSpan () : dynamic_ (0), grow_dir_ (CENTER) {} + }; + + struct DynamicQueue + { + vector spans_; + // total duration of (de)crescendi (i.e. excluding fixed-volume spans) + Real change_duration_; + Real min_target_vol_; + Real max_target_vol_; + + DynamicQueue () : change_duration_ (0) {} + + void clear () + { + spans_.clear (); + change_duration_ = 0; + } + + void push_back (const UnfinishedSpan &span, + Real min_target_vol, + Real max_target_vol) + { + if (span.grow_dir_ != CENTER) + change_duration_ += span.dynamic_->get_duration (); + min_target_vol_ = min_target_vol; + max_target_vol_ = max_target_vol; + spans_.push_back (span); + } + + void set_volume (Real start_vol, Real target_vol); + }; + private: + vector notes_; Stream_event *script_event_; Drul_array span_events_; - Drul_array grow_dir_; - Real last_volume_; - Audio_dynamic *absolute_; - Audio_span_dynamic *span_dynamic_; - Audio_span_dynamic *finished_span_dynamic_; + Direction next_grow_dir_; + Direction depart_dir_; + UnfinishedSpan open_span_; + DynamicQueue depart_queue_; + DynamicQueue return_queue_; + State state_; }; Dynamic_performer::Dynamic_performer () + : script_event_ (0), + next_grow_dir_ (CENTER), + depart_dir_ (CENTER), + state_ (STATE_INITIAL) { - last_volume_ = -1; - script_event_ = 0; - absolute_ = 0; span_events_[LEFT] - = span_events_[RIGHT] = 0; - span_dynamic_ = 0; - finished_span_dynamic_ = 0; + = span_events_[RIGHT] = 0; +} + +void +Dynamic_performer::acknowledge_audio_element (Audio_element_info inf) +{ + // Keep track of the notes played in this translation time step so that they + // can be pointed to the current dynamic in stop_translation_timestep. + if (Audio_note *n = dynamic_cast (inf.elem_)) { + notes_.push_back (n); + } +} + +bool +Dynamic_performer::drive_state_machine (Direction next_grow_dir) +{ + switch (state_) + { + case STATE_INITIAL: + if (next_grow_dir != CENTER) + { + state_ = STATE_DEPART; + depart_dir_ = next_grow_dir; + } + break; + + case STATE_DEPART: + if (next_grow_dir == -depart_dir_) + state_ = STATE_RETURN; + break; + + case STATE_RETURN: + if (next_grow_dir == depart_dir_) + { + state_ = STATE_DEPART; + return true; + } + break; + } + + return false; +} + +void +Dynamic_performer::close_and_enqueue_span () +{ + if (!open_span_.dynamic_) + programming_error ("no open dynamic span"); + else + { + DynamicQueue &dq + = (state_ == STATE_RETURN) ? return_queue_ : depart_queue_; + + // Changing equalizer settings in the course of the performance does not + // seem very likely. This is a fig leaf: Equalize these limit volumes + // now as the required context properties are current. Note that only + // the limits at the end of the last span in the queue are kept. + + // Resist diminishing to silence. (Idea: Look up "ppppp" + // with dynamicAbsoluteVolumeFunction, however that would yield 0.25.) + const Real min_target = equalize_volume (0.1); + const Real max_target + = equalize_volume (Audio_span_dynamic::MAXIMUM_VOLUME); + + open_span_.dynamic_->set_end_moment (now_mom ()); + dq.push_back (open_span_, min_target, max_target); + } + + open_span_ = UnfinishedSpan (); +} + +// Set the starting and target volume for each span in the queue. The gain +// (loss) of any (de)crescendo is proportional to its share of the total time +// spent changing. +void +Dynamic_performer::DynamicQueue::set_volume (Real start_vol, + Real target_vol) +{ + const Real gain = target_vol - start_vol; + Real dur = 0; // duration of (de)crescendi processed so far + Real vol = start_vol; + for (vector::iterator it = spans_.begin (); + it != spans_.end (); ++it) + { + const Real prev_vol = vol; + if (it->grow_dir_ != CENTER) + { + // grant this (de)crescendo its portion of the gain + dur += it->dynamic_->get_duration (); + vol = start_vol + gain * (dur / change_duration_); + } + it->dynamic_->set_volume (prev_vol, vol); + } +} + +// Return a volume which is reasonably distant from the given start and end +// volumes in the given direction, for use as a peak volume in a passage with a +// crescendo followed by a decrescendo (or vice versa). If the given volumes +// are equal, the returned volume is a also reasonable target volume for a +// single (de)crescendo. +// +// The given minimum and maximum volumes are the allowable dynamic range. +Real +Dynamic_performer::compute_departure_volume (Direction depart_dir, + Real start_vol, + Real end_vol, + Real min_vol, + Real max_vol) +{ + if (depart_dir == CENTER) + return start_vol; + + // Try to find a volume that is a minimum distance from the starting and + // ending volumes. If the endpoint volumes differ, the nearer one is padded + // less than the farther one. + // + // Example: mf < ... > p. The legacy behavior was to use a 25% of the + // dynamic range for a (de)crescendo to an unspecified target, and this tries + // to preserve that, but is not possible to use a 25% change for both the + // crescendo and the decrescendo and meet the constraints of this example. + // The decrescendo is a greater change than the crescendo. Believing that + // 25% is already more than enough for either, pad using 25% for the greater + // change and 7% for the lesser change. + // + // Idea: Use a context property or callback, e.g. the difference between two + // dynamics in dynamicAbsoluteVolumeFunction. 0.25 is the default difference + // between "p" and "ff". (Isn't that rather wide for this purpose?) 0.07 is + // the default difference between "mp" and "mf". + const Real far_padding = 0.25; + const Real near_padding = 0.07; + + // If for some reason one of the endpoints is already below the supposed + // minimum or maximum, just accept it. + min_vol = min (min (min_vol, start_vol), end_vol); + max_vol = max (max (max_vol, start_vol), end_vol); + + const Real vol_range = max_vol - min_vol; + + const Real near_vol = minmax (depart_dir, start_vol, end_vol) + + depart_dir * near_padding * vol_range; + const Real far_vol = minmax (-depart_dir, start_vol, end_vol) + + depart_dir * far_padding * vol_range; + const Real depart_vol = minmax (depart_dir, near_vol, far_vol); + return max (min (depart_vol, max_vol), min_vol); +} + +Real +Dynamic_performer::finish_queued_spans (Real next_vol) +{ + if (depart_queue_.spans_.empty ()) + { + programming_error ("no dynamic span to finish"); + return next_vol; + } + + const Real start_vol = depart_queue_.spans_.front ().dynamic_->get_start_volume (); + + if (return_queue_.spans_.empty ()) + { + Real depart_vol = next_vol; + + // If the next dynamic is not specified or is inconsistent with the + // direction of growth, choose a reasonable target. + if ((next_vol < 0) || (depart_dir_ != sign (next_vol - start_vol))) + { + depart_vol = compute_departure_volume (depart_dir_, + start_vol, start_vol, + depart_queue_.min_target_vol_, + depart_queue_.max_target_vol_); + } + + depart_queue_.set_volume (start_vol, depart_vol); + depart_queue_.clear (); + return (next_vol >= 0) ? next_vol : depart_vol; + } + else + { + // If the next dynamic is not specified, return to the starting volume. + const Real return_vol = (next_vol >= 0) ? next_vol : start_vol; + Real depart_vol = compute_departure_volume (depart_dir_, + start_vol, return_vol, + depart_queue_.min_target_vol_, + depart_queue_.max_target_vol_); + depart_queue_.set_volume (start_vol, depart_vol); + depart_queue_.clear (); + return_queue_.set_volume (depart_vol, return_vol); + return_queue_.clear (); + return return_vol; + } } Real @@ -67,7 +331,8 @@ Dynamic_performer::equalize_volume (Real volume) SCM max = get_property ("midiMaximumVolume"); if (scm_is_number (min) || scm_is_number (max)) { - Interval iv (0, 1); + Interval iv (Audio_span_dynamic::MINIMUM_VOLUME, + Audio_span_dynamic::MAXIMUM_VOLUME); if (scm_is_number (min)) iv[MIN] = scm_to_double (min); if (scm_is_number (max)) @@ -97,125 +362,124 @@ Dynamic_performer::equalize_volume (Real volume) volume = iv[MIN] + iv.length () * volume; } } - return volume; + return std::max (std::min (volume, Audio_span_dynamic::MAXIMUM_VOLUME), + Audio_span_dynamic::MINIMUM_VOLUME); +} + +void +Dynamic_performer::finalize () +{ + if (open_span_.dynamic_) + close_and_enqueue_span (); + finish_queued_spans (); +} + +Real +Dynamic_performer::look_up_absolute_volume (SCM dynamicString, + Real defaultValue) +{ + SCM proc = get_property ("dynamicAbsoluteVolumeFunction"); + + SCM svolume = SCM_EOL; + if (ly_is_procedure (proc)) + svolume = scm_call_1 (proc, dynamicString); + + return robust_scm2double (svolume, defaultValue); } void Dynamic_performer::process_music () { - if (span_events_[START] || span_events_[STOP] || script_event_) + Real volume = -1; + + if (script_event_) // explicit dynamic { - // End the previous spanner when a new one begins or at an explicit stop - // or absolute dynamic. - finished_span_dynamic_ = span_dynamic_; - span_dynamic_ = 0; + volume = look_up_absolute_volume (script_event_->get_property ("text"), + Audio_span_dynamic::DEFAULT_VOLUME); + volume = equalize_volume (volume); } - - if (span_events_[START]) + else if (!open_span_.dynamic_) // first time only { - // Start of a dynamic spanner. Create a new Audio_span_dynamic for - // collecting changes in dynamics within this spanner. - span_dynamic_ = new Audio_span_dynamic (equalize_volume (0.1), equalize_volume (1.0)); - announce_element (Audio_element_info (span_dynamic_, span_events_[START])); - - span_dynamic_->grow_dir_ = grow_dir_[START]; + // Idea: look_up_absolute_volume (ly_symbol2scm ("mf")). + // It is likely to change regtests. + volume = equalize_volume (Audio_span_dynamic::DEFAULT_VOLUME); } - if (script_event_ - || span_dynamic_ - || finished_span_dynamic_) + // end the current span at relevant points + if (open_span_.dynamic_ + && (span_events_[START] || span_events_[STOP] || script_event_)) { - // New change in dynamics. - absolute_ = new Audio_dynamic (); - + close_and_enqueue_span (); if (script_event_) { - // Explicit dynamic script event: determine the volume. - SCM proc = get_property ("dynamicAbsoluteVolumeFunction"); - - SCM svolume = SCM_EOL; - if (ly_is_procedure (proc)) - { - // urg - svolume = scm_call_1 (proc, script_event_->get_property ("text")); - } - - Real volume = robust_scm2double (svolume, 0.5); - - last_volume_ - = absolute_->volume_ = equalize_volume (volume); + state_ = STATE_INITIAL; + volume = finish_queued_spans (volume); } - - Audio_element_info info (absolute_, script_event_); - announce_element (info); } - if (last_volume_ < 0) + // start a new span so that some dynamic is always in effect + if (!open_span_.dynamic_) { - absolute_ = new Audio_dynamic (); - - last_volume_ - = absolute_->volume_ = equalize_volume (0.71); // Backward compatible + if (drive_state_machine (next_grow_dir_)) + volume = finish_queued_spans (volume); - Audio_element_info info (absolute_, script_event_); - announce_element (info); - } + // if not known by now, use a default volume for robustness + if (volume < 0) + volume = equalize_volume (Audio_span_dynamic::DEFAULT_VOLUME); - if (span_dynamic_) - span_dynamic_->add_absolute (absolute_); + Stream_event *cause + = span_events_[START] ? span_events_[START] + : script_event_ ? script_event_ + : span_events_[STOP]; - if (finished_span_dynamic_) - finished_span_dynamic_->add_absolute (absolute_); + open_span_.dynamic_ = new Audio_span_dynamic (now_mom (), volume); + open_span_.grow_dir_ = next_grow_dir_; + announce_element (Audio_element_info (open_span_.dynamic_, cause)); + } } void Dynamic_performer::stop_translation_timestep () { - if (finished_span_dynamic_) - { - finished_span_dynamic_->render (); - finished_span_dynamic_ = 0; - } - - if (absolute_) + // link notes to the current dynamic + if (!open_span_.dynamic_) + programming_error("no current dynamic"); + else { - if (absolute_->volume_ < 0) - { - absolute_->volume_ = last_volume_; - } - else + for (vector::const_iterator ni = notes_.begin (); + ni != notes_.end (); ++ni) { - last_volume_ = absolute_->volume_; + (*ni)->dynamic_ = open_span_.dynamic_; } } + notes_.clear (); - absolute_ = 0; script_event_ = 0; span_events_[LEFT] - = span_events_[RIGHT] = 0; + = span_events_[RIGHT] = 0; + next_grow_dir_ = CENTER; } void Dynamic_performer::listen_decrescendo (Stream_event *r) { Direction d = to_dir (r->get_property ("span-direction")); - span_events_[d] = r; - grow_dir_[d] = SMALLER; + if (ASSIGN_EVENT_ONCE (span_events_[d], r) && (d == START)) + next_grow_dir_ = SMALLER; } void Dynamic_performer::listen_crescendo (Stream_event *r) { Direction d = to_dir (r->get_property ("span-direction")); - span_events_[d] = r; - grow_dir_[d] = BIGGER; + if (ASSIGN_EVENT_ONCE (span_events_[d], r) && (d == START)) + next_grow_dir_ = BIGGER; } void Dynamic_performer::listen_absolute_dynamic (Stream_event *r) { - if (!script_event_) - script_event_ = r; + ASSIGN_EVENT_ONCE (script_event_, r); } void diff --git a/lily/grob.cc b/lily/grob.cc index 7ce89d5015..eafa66288e 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -333,7 +333,7 @@ Real Grob::relative_coordinate (Grob const *refp, Axis a) const { /* eaa - hmmm, should we do a programming_error() here? */ - if ((this == NULL) || (refp == this)) + if (refp == this) return 0.0; /* We catch PARENT_L_ == nil case with this, but we crash if we did @@ -342,7 +342,8 @@ Grob::relative_coordinate (Grob const *refp, Axis a) const if (refp == dim_cache_[a].parent_) return off; - off += dim_cache_[a].parent_->relative_coordinate (refp, a); + if (dim_cache_[a].parent_ != NULL) + off += dim_cache_[a].parent_->relative_coordinate (refp, a); return off; } diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh index 8c41d18a52..f3a97a2949 100644 --- a/lily/include/audio-item.hh +++ b/lily/include/audio-item.hh @@ -40,26 +40,32 @@ private: Audio_item &operator = (Audio_item const &); }; -class Audio_dynamic : public Audio_item +// Audio_span_dynamic is open at the end of the interval, so the volume +// grows/diminshes toward a target, but whether it reaches it depends on the +// next Audio_span_dynamic in the performance. For example, a crescendo +// notated as mf < p is represented as [mf < x) [p ...) i.e. growth to some +// volume louder than mf followed by an abrupt change to p. +class Audio_span_dynamic : public Audio_element { public: - Audio_dynamic (); + static const Real MINIMUM_VOLUME; + static const Real MAXIMUM_VOLUME; + static const Real DEFAULT_VOLUME; - Real volume_; - bool silent_; -}; +private: + Moment start_moment_; + Real start_volume_; + Real duration_; // = target moment - start moment + Real gain_; // = target volume - start volume -class Audio_span_dynamic : public Audio_element -{ public: - Direction grow_dir_; - vector dynamics_; - Real min_volume_; - Real max_volume_; - - virtual void render (); - void add_absolute (Audio_dynamic *); - Audio_span_dynamic (Real min_volume, Real max_volume); + Moment get_start_moment () const { return start_moment_; } + Real get_start_volume () const { return start_volume_; } + Real get_duration () const { return duration_; } + void set_end_moment (Moment); + void set_volume (Real start, Real target); + Real get_volume (Moment) const; + Audio_span_dynamic (Moment mom, Real volume); }; class Audio_key : public Audio_item @@ -92,7 +98,7 @@ public: Pitch pitch_; Moment length_mom_; Pitch transposing_; - Audio_dynamic *dynamic_; + Audio_span_dynamic *dynamic_; int extra_velocity_; Audio_note *tied_; @@ -138,36 +144,13 @@ public: int one_beat_; }; -class Audio_control_function_value_change : public Audio_item +class Audio_control_change : public Audio_item { public: - // Supported control functions. - enum Control - { - BALANCE = 0, PAN_POSITION, EXPRESSION, REVERB_LEVEL, CHORUS_LEVEL, - // pseudo value for representing the size of the enum; must be kept last - NUM_CONTROLS - }; - - Audio_control_function_value_change (Control control, Real value); - - // Information about a context property corresponding to a control function - // (name, the corresponding enumeration value, and the allowed range for the - // value of the context property). - struct Context_property - { - const char *name_; - Control control_; - Real range_min_; - Real range_max_; - }; - - // Mapping from supported control functions to the corresponding context - // properties. - static const Context_property context_properties_[]; + Audio_control_change (int control, int value); - Control control_; - Real value_; + int control_; + int value_; }; int moment_to_ticks (Moment); diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index ee3946e0fd..6de69e16b9 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -24,7 +24,7 @@ class All_font_metrics; class Audio_column; -class Audio_control_function_value_change; +class Audio_control_change; class Audio_dynamic; class Audio_element; class Audio_instrument; @@ -90,7 +90,8 @@ class Lyric_engraver; class Lyric_performer; class Mensural_ligature_engraver; class Midi_chunk; -class Midi_control_function_value_change; +class Midi_control_change; +class Midi_control_change_announcer; class Midi_duration; class Midi_dynamic; class Midi_event; diff --git a/lily/include/midi-cc-announcer.hh b/lily/include/midi-cc-announcer.hh new file mode 100644 index 0000000000..38cb93f15a --- /dev/null +++ b/lily/include/midi-cc-announcer.hh @@ -0,0 +1,64 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2016 by Heikki Tauriainen . + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ + +#ifndef MIDI_CC_ANNOUNCER_HH +#define MIDI_CC_ANNOUNCER_HH + +#include "input.hh" +#include "performer.hh" +#include "audio-item.hh" + +/* Base class for announcing MIDI control changes. */ +class Midi_control_change_announcer +{ +public: + /* Constructor. The optional parameter can be used to specify an Input + to use for relativizing warning messages about out-of-range values. */ + Midi_control_change_announcer (Input *origin = 0); + virtual ~Midi_control_change_announcer (); + + void announce_from_context_properties (); + + /* Announces MIDI CC changes by creating new Audio_control_change events + from them, and calling 'do_announce' on each event. Control change + events will be created from every supported MIDI context property for + which the 'get_property_value' function returns a value that is + compatible with the expected type of the context property's value. */ + void announce_control_changes (); + +private: + virtual SCM get_property_value (const char *property_name) = 0; + virtual void do_announce (Audio_control_change *item) = 0; + void warn (const string &message); + + Input *origin_; + + struct Control_spec + { + const char *const context_property_name_; + const Real range_min_; + const Real range_max_; + const int msb_control_number_; + const int lsb_control_number_; + }; + + static const Control_spec controls_[]; +}; + +#endif // MIDI_CC_ANNOUNCER_HH diff --git a/lily/include/midi-item.hh b/lily/include/midi-item.hh index b593ce1527..57bb2d4da2 100644 --- a/lily/include/midi-item.hh +++ b/lily/include/midi-item.hh @@ -52,27 +52,27 @@ public: Midi_channel_item (Audio_item *ai); }; -/** - Midi control function value changes. -*/ -class Midi_control_function_value_change : public Midi_channel_item +class Midi_duration : public Midi_item { public: - DECLARE_CLASSNAME (Midi_control_function_value_change); - Midi_control_function_value_change (Audio_control_function_value_change *ai); - virtual ~Midi_control_function_value_change (); + Midi_duration (Real seconds_f); + virtual string to_string () const; - Audio_control_function_value_change::Control control_; - Real value_; + Real seconds_; }; -class Midi_duration : public Midi_item +/** + MIDI control change +*/ +class Midi_control_change : public Midi_channel_item { public: - Midi_duration (Real seconds_f); - + DECLARE_CLASSNAME (Midi_control_change); + Midi_control_change (Audio_control_change *ai); + virtual ~Midi_control_change (); virtual string to_string () const; - Real seconds_; + + Audio_control_change *audio_; }; /** @@ -157,17 +157,6 @@ public: Audio_text *audio_; }; -class Midi_dynamic : public Midi_channel_item -{ -public: - Midi_dynamic (Audio_dynamic *); - DECLARE_CLASSNAME (Midi_dynamic); - - virtual string to_string () const; - - Audio_dynamic *audio_; -}; - class Midi_piano_pedal : public Midi_channel_item { public: diff --git a/lily/include/slur-engraver.hh b/lily/include/slur-engraver.hh index 572e7ea023..1885625ed9 100644 --- a/lily/include/slur-engraver.hh +++ b/lily/include/slur-engraver.hh @@ -60,8 +60,8 @@ protected: void stop_translation_timestep (); void process_music (); - bool can_create_slur (const string&, vsize, vsize *, Stream_event *); - void create_slur (const string &spanner_id, Event_info evi, Grob *g_cause, Direction dir, bool left_broken); + bool can_create_slur (SCM, vsize, vsize *, Stream_event *); + void create_slur (SCM spanner_id, Event_info evi, Grob *g_cause, Direction dir, bool left_broken); bool try_to_end (Event_info evi); virtual void set_melisma (bool); diff --git a/lily/midi-cc-announcer.cc b/lily/midi-cc-announcer.cc new file mode 100644 index 0000000000..7fb4ed6c27 --- /dev/null +++ b/lily/midi-cc-announcer.cc @@ -0,0 +1,110 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2016 by Heikki Tauriainen . + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ + +#include "audio-item.hh" +#include "input.hh" +#include "international.hh" +#include "libc-extension.hh" +#include "midi-cc-announcer.hh" + +/* + Context properties for setting MIDI controls. Each MIDI control + specification has the following components: + 1. The name of the LilyPond context property used to change the value of + the MIDI control. + 2. The lower bound for the numeric range of the LilyPond context property. + 3. The upper bound for the numeric range of the LilyPond context property. + 4. The MIDI control number for setting the most significant 7 bits of the + control value. + 5. The MIDI control number for setting the least significant 7 bits of the + control value, if the control supports 14-bit ("fine") resolution. If + the control supports only 7-bit ("coarse") resolution, the LSB control + number should be negative. +*/ +const Midi_control_change_announcer::Control_spec +Midi_control_change_announcer::controls_[] += +{ + { "midiBalance", -1.0, 1.0, 8, 40 }, + { "midiPanPosition", -1.0, 1.0, 10, 42 }, + { "midiExpression", 0.0, 1.0, 11, 43 }, + { "midiReverbLevel", 0.0, 1.0, 91, -1 }, + { "midiChorusLevel", 0.0, 1.0, 93, -1 }, + // This element should be kept last in the array. + { 0, 0.0, 0.0, 0, 0 } +}; + +Midi_control_change_announcer::Midi_control_change_announcer (Input *origin) + : origin_ (origin) +{ +} + +Midi_control_change_announcer::~Midi_control_change_announcer () +{ +} + +void Midi_control_change_announcer::announce_control_changes () +{ + for (const Control_spec *spec = controls_; spec->context_property_name_; + ++spec) + { + SCM value = get_property_value (spec->context_property_name_); + if (!scm_is_number (value)) + continue; + Real val = scm_to_double (value); + if (val >= spec->range_min_ && val <= spec->range_max_) + { + // Normalize the value to the 0.0 to 1.0 range. + val = ((val - spec->range_min_) + / (spec->range_max_ - spec->range_min_)); + // Transform the normalized context property value into a 14-bit or + // a 7-bit (non-negative) integer depending on the MIDI control's + // resolution. For directional value changes, #CENTER will + // correspond to 0.5 exactly, and my_round rounds upwards when in + // case of doubt. That means that center position will round to + // 0x40 or 0x2000 by a hair's breadth. + const Real full_fine_scale = 0x3FFF; + const Real full_coarse_scale = 0x7F; + const bool fine_resolution = (spec->lsb_control_number_ >= 0); + const int v = (int) (my_round (val * (fine_resolution + ? full_fine_scale + : full_coarse_scale))); + // Announce a control change for the most significant 7 bits of the + // control value (and, if the control supports fine resolution, for + // the least significant 7 bits as well). + do_announce (new Audio_control_change (spec->msb_control_number_, + fine_resolution + ? (v >> 7) : v)); + if (fine_resolution) + do_announce (new Audio_control_change (spec->lsb_control_number_, + v & 0x7F)); + } + else + warn (_f ("ignoring out-of-range value change for MIDI property `%s'", + spec->context_property_name_)); + } +} + +void Midi_control_change_announcer::warn (const string &message) +{ + if (origin_) + origin_->warning (message); + else + warning (message); +} diff --git a/lily/midi-cc-performer.cc b/lily/midi-cc-performer.cc new file mode 100644 index 0000000000..2aff5d0039 --- /dev/null +++ b/lily/midi-cc-performer.cc @@ -0,0 +1,150 @@ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2013--2016 by Heikki Tauriainen . + Adapted from performer implementations + Copyright (C) 1996--2015 Jan Nieuwenhuizen , + Han-Wen Nienhyus and others. + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ + +#include "performer.hh" + +#include "audio-item.hh" +#include "context.hh" +#include "dispatcher.hh" +#include "international.hh" +#include "listener.hh" +#include "midi-cc-announcer.hh" +#include "stream-event.hh" + +#include "translator.icc" + +/** + MIDI control change performer. Announces "set property" events on MIDI + context properties. +*/ +class Midi_control_change_performer : public Performer +{ +public: + TRANSLATOR_DECLARATIONS (Midi_control_change_performer); + void announce_control_change (SCM); + ~Midi_control_change_performer (); + + void connect_to_context (Context *c); + void disconnect_from_context (Context *c); + +private: + class Control_change_announcer : public Midi_control_change_announcer + { + public: + Control_change_announcer (Midi_control_change_performer *p, + Stream_event *ev, const string &s); + + SCM get_property_value (const char *property_name); + void do_announce (Audio_control_change *item); + + private: + Midi_control_change_performer *performer_; + Stream_event *event_; + string symbol_; + }; +}; + +Midi_control_change_performer::Midi_control_change_performer () +{ +} + +Midi_control_change_performer::~Midi_control_change_performer () +{ +} + +void +Midi_control_change_performer::connect_to_context (Context *c) +{ + c->events_below ()-> + add_listener (GET_LISTENER (Midi_control_change_performer, + announce_control_change), + ly_symbol2scm ("SetProperty")); +} + +void +Midi_control_change_performer::disconnect_from_context (Context *c) +{ + c->events_below ()-> + remove_listener (GET_LISTENER (Midi_control_change_performer, + announce_control_change), + ly_symbol2scm ("SetProperty")); +} + +void +Midi_control_change_performer::announce_control_change (SCM sev) +{ + Stream_event *ev = unsmob (sev); + SCM sym = ev->get_property ("symbol"); + if (!scm_is_symbol (sym)) + return; + + Control_change_announcer a (this, ev, ly_symbol2string (sym)); + a.announce_control_changes (); +} + +Midi_control_change_performer::Control_change_announcer::Control_change_announcer +(Midi_control_change_performer *p, Stream_event *ev, const string &s) + : Midi_control_change_announcer (ev->origin ()), + performer_ (p), + event_ (ev), + symbol_ (s) +{ +} + +SCM +Midi_control_change_performer::Control_change_announcer::get_property_value +(const char *property_name) +{ + return symbol_ == property_name ? event_->get_property ("value") : SCM_EOL; +} + +void Midi_control_change_performer::Control_change_announcer::do_announce +(Audio_control_change *item) +{ + performer_->announce_element (Audio_element_info (item, 0)); +} + +void +Midi_control_change_performer::boot () +{ + +} + +ADD_TRANSLATOR (Midi_control_change_performer, + /* doc */ + "This performer listens to SetProperty events on context " + "properties for generating MIDI control changes and " + "prepares them for MIDI output.", + + /* create */ + "", + + /* read */ + "midiBalance " + "midiPanPosition " + "midiExpression " + "midiReverbLevel " + "midiChorusLevel ", + + /* write */ + "" + ); diff --git a/lily/midi-control-function-performer.cc b/lily/midi-control-function-performer.cc deleted file mode 100644 index a112e6bcef..0000000000 --- a/lily/midi-control-function-performer.cc +++ /dev/null @@ -1,138 +0,0 @@ -/* - This file is part of LilyPond, the GNU music typesetter. - - Copyright (C) 2013--2015 by Heikki Tauriainen . - Adapted from performer implementations - Copyright (C) 1996--2015 Jan Nieuwenhuizen , - Han-Wen Nienhyus and others. - - LilyPond is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - LilyPond is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with LilyPond. If not, see . -*/ - -#include "performer.hh" - -#include "audio-item.hh" -#include "context.hh" -#include "dispatcher.hh" -#include "international.hh" -#include "listener.hh" -#include "stream-event.hh" - -#include "translator.icc" - -/** - MIDI control function performer. Announces "set property" events on MIDI - context properties. -*/ -class Midi_control_function_performer : public Performer -{ -public: - TRANSLATOR_DECLARATIONS (Midi_control_function_performer); - void announce_function_value_change (SCM); - ~Midi_control_function_performer (); - - void connect_to_context (Context *c); - void disconnect_from_context (Context *c); -}; - -Midi_control_function_performer::Midi_control_function_performer () -{ -} - -Midi_control_function_performer::~Midi_control_function_performer () -{ -} - -void -Midi_control_function_performer::connect_to_context (Context *c) -{ - c->events_below ()-> - add_listener (GET_LISTENER (Midi_control_function_performer, announce_function_value_change), - ly_symbol2scm ("SetProperty")); -} - -void -Midi_control_function_performer::disconnect_from_context (Context *c) -{ - c->events_below ()-> - remove_listener (GET_LISTENER (Midi_control_function_performer, announce_function_value_change), - ly_symbol2scm ("SetProperty")); -} - -void -Midi_control_function_performer::announce_function_value_change (SCM sev) -{ - Stream_event *ev = unsmob (sev); - SCM sym = ev->get_property ("symbol"); - if (!scm_is_symbol (sym)) - return; - - // Search for a matching context property; if found, check that the value - // of the property is within the allowed range, and announce a possible - // change in the value of the corresponding control function. - string symbol = ly_symbol2string (sym); - for (const Audio_control_function_value_change::Context_property *p - = Audio_control_function_value_change::context_properties_; - p->name_; ++p) - { - if (symbol == p->name_) - { - SCM value = ev->get_property ("value"); - if (scm_is_number (value)) - { - Real val = scm_to_double (value); - if (val >= p->range_min_ && val <= p->range_max_) - { - // Normalize the value to the 0.0 to 1.0 range. - val = ((val - p->range_min_) - / (p->range_max_ - p->range_min_)); - Audio_control_function_value_change *item - = new Audio_control_function_value_change (p->control_, - val); - announce_element (Audio_element_info (item, 0)); - } - else - ev->origin ()-> - warning (_f ("ignoring out-of-range value change for MIDI " - "property `%s'", - p->name_)); - } - break; - } - } -} - -void -Midi_control_function_performer::boot () -{ - -} - -ADD_TRANSLATOR (Midi_control_function_performer, - /* doc */ - "", - - /* create */ - "", - - /* read */ - "midiBalance " - "midiPanPosition " - "midiExpression " - "midiReverbLevel " - "midiChorusLevel ", - - /* write */ - "" - ); diff --git a/lily/midi-item.cc b/lily/midi-item.cc index 33dd9f11bd..ba29ba0ba5 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -19,6 +19,7 @@ #include "midi-item.hh" +#include "audio-column.hh" #include "duration.hh" #include "international.hh" #include "libc-extension.hh" @@ -42,8 +43,6 @@ Midi_item::get_midi (Audio_item *a) return i->str_.length () ? new Midi_instrument (i) : 0; else if (Audio_note *i = dynamic_cast (a)) return new Midi_note (i); - else if (Audio_dynamic *i = dynamic_cast (a)) - return new Midi_dynamic (i); else if (Audio_piano_pedal *i = dynamic_cast (a)) return new Midi_piano_pedal (i); else if (Audio_tempo *i = dynamic_cast (a)) @@ -52,9 +51,8 @@ Midi_item::get_midi (Audio_item *a) return new Midi_time_signature (i); else if (Audio_text *i = dynamic_cast (a)) return new Midi_text (i); - else if (Audio_control_function_value_change *i - = dynamic_cast (a)) - return new Midi_control_function_value_change (i); + else if (Audio_control_change *i = dynamic_cast (a)) + return new Midi_control_change (i); else assert (0); @@ -106,9 +104,9 @@ Midi_channel_item::Midi_channel_item (Audio_item *ai) { } -Midi_control_function_value_change -::Midi_control_function_value_change (Audio_control_function_value_change *ai) - : Midi_channel_item (ai), control_ (ai->control_), value_ (ai->value_) +Midi_control_change::Midi_control_change (Audio_control_change *ai) + : Midi_channel_item (ai), + audio_ (ai) { } @@ -120,7 +118,7 @@ Midi_channel_item::~Midi_channel_item () { } -Midi_control_function_value_change::~Midi_control_function_value_change () +Midi_control_change::~Midi_control_change () { } @@ -193,8 +191,8 @@ Midi_time_signature::to_string () const Midi_note::Midi_note (Audio_note *a) : Midi_channel_item (a), audio_ (a), - dynamic_byte_ (min (max (Byte ((a->dynamic_ && a->dynamic_->volume_ >= 0 - ? a->dynamic_->volume_ * 0x7f : 0x5a) + dynamic_byte_ (min (max (Byte ((a->dynamic_ + ? a->dynamic_->get_volume (a->audio_column_->when ()) * 0x7f : 0x5a) + a->extra_velocity_), Byte (0)), Byte (0x7f))) { @@ -275,40 +273,6 @@ Midi_note_off::to_string () const return str; } -Midi_dynamic::Midi_dynamic (Audio_dynamic *a) - : Midi_channel_item (a), - audio_ (a) -{ -} - -string -Midi_dynamic::to_string () const -{ - Byte status_byte = (char) (0xB0 + channel_); - string str = ::to_string ((char)status_byte); - - /* - Main volume controller (per channel): - 07 MSB - 27 LSB - */ - static Real const full_scale = 127; - - int volume = (int) (audio_->volume_ * full_scale); - if (volume <= 0) - volume = 1; - if (volume > full_scale) - volume = (int)full_scale; - - int const volume_default = 100; - if (audio_->volume_ < 0 || audio_->silent_) - volume = volume_default; - - str += ::to_string ((char)0x07); - str += ::to_string ((char)volume); - return str; -} - Midi_piano_pedal::Midi_piano_pedal (Audio_piano_pedal *a) : Midi_channel_item (a), audio_ (a) @@ -363,63 +327,12 @@ Midi_text::to_string () const } string -Midi_control_function_value_change::to_string () const +Midi_control_change::to_string () const { - // MIDI control function information. A MIDI control function may have one - // or two assigned control numbers depending on whether it supports coarse - // (7-bit) or fine (14-bit) resolution. If the control function supports - // fine resolution, the first (respectively, second) member of the structure - // represents the control number for setting the most (least) significant 7 - // bits of the control function's value. - struct Control_function - { - int msb_control_number_; - int lsb_control_number_; - }; - - // Mapping from supported control functions (enumeration values defined in - // Audio_controller_value_change::Control) to the corresponding MIDI control - // numbers. - static const Control_function control_functions[] = - { - // When adding support for new control functions, please note the - // following: - // - The order of the control number definitions should be kept - // consistent with the order of the enumeration values defined in - // Audio_control_function_value_change::Control. - // - If the control function has only coarse resolution, the function's - // control number should be stored in the MSB member of the array - // element, and the LSB member should be set to a negative value. - - { 8, 40 }, // balance - { 10, 42 }, // pan position - { 11, 43 }, // expression - { 91, -1 }, // reverb level (only coarse resolution available) - { 93, -1 } // chorus level (only coarse resolution available) - }; - - string str; - const Control_function *control_function = &control_functions[control_]; - static const Real full_fine_scale = 0x3FFF; - static const Real full_coarse_scale = 0x7F; - bool fine_resolution = (control_function->lsb_control_number_ >= 0); - // value_ is in range [0.0 .. 1.0]. For directional value ranges, - // #CENTER will correspond to 0.5 exactly, and my_round rounds - // upwards when in case of doubt. That means that center position - // will round to 0x40 or 0x2000 by a hair's breadth. - int value = (int) my_round (value_ * (fine_resolution ? - full_fine_scale : full_coarse_scale)); Byte status_byte = (char) (0xB0 + channel_); - str += ::to_string ((char)status_byte); - str += ::to_string ((char)(control_function->msb_control_number_)); - str += ::to_string ((char)(fine_resolution ? (value >> 7) : value)); - if (fine_resolution) - { - str += ::to_string ((char)0x00); - str += ::to_string ((char)status_byte); - str += ::to_string ((char)(control_function->lsb_control_number_)); - str += ::to_string ((char)(value & 0x7F)); - } + string str = ::to_string ((char)status_byte); + str += ::to_string ((char) (audio_->control_)); + str += ::to_string ((char) (audio_->value_)); return str; } diff --git a/lily/midi-walker.cc b/lily/midi-walker.cc index bc6c93dc56..d9765c6814 100644 --- a/lily/midi-walker.cc +++ b/lily/midi-walker.cc @@ -89,8 +89,9 @@ Midi_walker::do_start_note (Midi_note *note) Real (384 * 4)) + now_ticks; for (vsize i = 0; i < stop_note_queue.size (); i++) { - /* if this pitch already in queue */ - if (stop_note_queue[i].val->get_semitone_pitch () + /* if this pitch already in queue, and is not already ignored */ + if (!stop_note_queue[i].ignore_ && + stop_note_queue[i].val->get_semitone_pitch () == note->get_semitone_pitch ()) { int queued_ticks diff --git a/lily/output-property-engraver.cc b/lily/output-property-engraver.cc index 7a0fa2d3c3..370d6e1c1f 100644 --- a/lily/output-property-engraver.cc +++ b/lily/output-property-engraver.cc @@ -37,15 +37,12 @@ protected: void stop_translation_timestep (); }; +// We only run this in the Score context, so all events are likely to +// find a target void Output_property_engraver::listen_apply_output (Stream_event *ev) { - /* - UGH. Only swallow the output property event in the context - it was intended for. This is inelegant but not inefficient. - */ - if (context ()->is_alias (ev->get_property ("context-type"))) - props_.push_back (ev); + props_.push_back (ev); } void @@ -59,11 +56,16 @@ Output_property_engraver::acknowledge_grob (Grob_info inf) if (scm_is_symbol (grob) && ly_symbol2string (grob) != inf.grob ()->name ()) continue; + SCM typ = o->get_property ("context-type"); SCM proc = o->get_property ("procedure"); - scm_call_3 (proc, - inf.grob ()->self_scm (), - d->self_scm (), - context ()->self_scm ()); + for (Context *c = d; c; c = c->get_parent_context ()) + { + if (c->is_alias (typ)) + scm_call_3 (proc, + inf.grob ()->self_scm (), + d->self_scm (), + c->self_scm ()); + } } } diff --git a/lily/parser.yy b/lily/parser.yy index 52fe450b7d..83e95491c2 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -229,7 +229,7 @@ static Music *make_music_with_input (SCM name, Input where); SCM check_scheme_arg (Lily_parser *parser, Input loc, SCM arg, SCM args, SCM pred, SCM disp = SCM_UNDEFINED); SCM make_music_from_simple (Lily_parser *parser, Input loc, SCM pitch); -SCM loc_on_music (Lily_parser *parser, Input loc, SCM arg); +SCM loc_on_copy (Lily_parser *parser, Input loc, SCM arg); SCM make_chord_elements (Input loc, SCM pitch, SCM dur, SCM modification_list); SCM make_chord_step (SCM step, Rational alter); SCM make_simple_markup (SCM a); @@ -346,7 +346,6 @@ If we give names, Bison complains. %token BOOK_IDENTIFIER %token CHORD_MODIFIER %token CHORD_REPETITION -%token CONTEXT_MOD_IDENTIFIER %token DRUM_PITCH /* Artificial token for durations in argument lists */ %token DURATION_ARG @@ -501,8 +500,8 @@ lookup: LOOKUP_IDENTIFIER | LOOKUP_IDENTIFIER '.' symbol_list_rev { - $$ = loc_on_music (parser, @$, - nested_property ($1, scm_reverse_x ($3, SCM_EOL))); + $$ = loc_on_copy (parser, @$, + nested_property ($1, scm_reverse_x ($3, SCM_EOL))); } ; @@ -1494,14 +1493,6 @@ context_modification: parser->lexer_->pop_state (); $$ = $4; } - | WITH CONTEXT_MOD_IDENTIFIER - { - $$ = $2; - } - | CONTEXT_MOD_IDENTIFIER - { - $$ = $1; - } | WITH context_modification_arg { if (unsmob ($2)) { @@ -1511,7 +1502,10 @@ context_modification: if (unsmob ($2)) $$ = $2; else { - parser->parser_error (@2, _ ("not a context mod")); + // let's permit \with #*unspecified* to go for + // an empty context mod + if (!scm_is_eq ($2, SCM_UNSPECIFIED)) + parser->parser_error (@2, _ ("not a context mod")); $$ = Context_mod ().smobbed_copy (); } } @@ -1564,24 +1558,16 @@ context_mod_list: if (!SCM_UNBNDP ($2)) unsmob ($1)->add_context_mod ($2); } - | context_mod_list CONTEXT_MOD_IDENTIFIER { - Context_mod *md = unsmob ($2); - if (md) - unsmob ($1)->add_context_mods (md->get_mods ()); - } | context_mod_list context_mod_arg { - if (scm_is_eq ($2, SCM_UNSPECIFIED)) - ; - else if (unsmob ($2)) { + if (unsmob ($2)) { SCM proc = parser->lexer_->lookup_identifier ("context-mod-music-handler"); $2 = scm_call_1 (proc, $2); } if (unsmob ($2)) unsmob ($$)->add_context_mods (unsmob ($2)->get_mods ()); - else { + else if (!scm_is_eq ($2, SCM_UNSPECIFIED)) parser->parser_error (@2, _ ("not a context mod")); - } } ; @@ -2006,7 +1992,7 @@ function_arglist_backup: $$ = scm_cons ($$, $3); else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (SCM_ARG, $4, @4); } } @@ -2017,7 +2003,7 @@ function_arglist_backup: { $$ = scm_cons ($4, $3); } else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (EVENT_IDENTIFIER, $4, @4); } } @@ -2033,7 +2019,7 @@ function_arglist_backup: } else if (scm_is_true (scm_call_1 ($2, $4))) $$ = scm_cons ($4, $3); else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (PITCH_IDENTIFIER, $4, @4); } } @@ -2049,7 +2035,7 @@ function_arglist_backup: } else if (scm_is_true (scm_call_1 ($2, $4))) $$ = scm_cons ($4, $3); else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (TONICNAME_PITCH, $4, @4); } } @@ -2058,7 +2044,7 @@ function_arglist_backup: if (scm_is_true (scm_call_1 ($2, $4))) $$ = scm_cons ($4, $3); else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (SCM_IDENTIFIER, $4, @4); } } @@ -2080,11 +2066,11 @@ function_arglist_backup: ($2, make_music_from_simple (parser, @4, d)))) MYREPARSE (@4, $2, DURATION_ARG, d); else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (UNSIGNED, $4, @4); } } else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (UNSIGNED, $4, @4); } } @@ -2096,7 +2082,7 @@ function_arglist_backup: $$ = $3; MYREPARSE (@4, $2, REAL, $4); } else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (REAL, $4, @4); } } @@ -2106,7 +2092,7 @@ function_arglist_backup: { $$ = scm_cons ($4, $3); } else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (NUMBER_IDENTIFIER, $4, @4); } } @@ -2123,7 +2109,7 @@ function_arglist_backup: if (scm_is_true (scm_call_1 ($2, $$))) $$ = scm_cons ($$, $3); else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (UNSIGNED, $5, @5); parser->lexer_->push_extra_token (@4, '-'); } @@ -2136,7 +2122,7 @@ function_arglist_backup: MYREPARSE (@5, $2, REAL, n); $$ = $3; } else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (REAL, n, @5); } } @@ -2146,7 +2132,7 @@ function_arglist_backup: if (scm_is_true (scm_call_1 ($2, n))) { $$ = scm_cons (n, $3); } else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (NUMBER_IDENTIFIER, n, @5); } } @@ -2160,7 +2146,7 @@ function_arglist_backup: ($2, make_music_from_simple (parser, @4, $4)))) MYREPARSE (@4, $2, DURATION_ARG, $4); else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (DURATION_IDENTIFIER, $4, @4); } } @@ -2175,7 +2161,7 @@ function_arglist_backup: else $$ = scm_cons (res, $3); else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (SCM_IDENTIFIER, $4, @4); } } @@ -2190,7 +2176,7 @@ function_arglist_backup: else $$ = scm_cons (res, $3); else { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); MYBACKUP (STRING, $4, @4); } } @@ -2229,7 +2215,7 @@ function_arglist: function_arglist_nonbackup | EXPECT_OPTIONAL EXPECT_SCM function_arglist_skip_nonbackup DEFAULT { - $$ = scm_cons (loc_on_music (parser, @4, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @4, $1), $3); } ; @@ -2237,7 +2223,7 @@ function_arglist_skip_nonbackup: function_arglist_nonbackup | EXPECT_OPTIONAL EXPECT_SCM function_arglist_skip_nonbackup { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); } ; @@ -2497,7 +2483,7 @@ function_arglist_optional: function_arglist_backup | EXPECT_OPTIONAL EXPECT_SCM function_arglist_skip_backup DEFAULT { - $$ = scm_cons (loc_on_music (parser, @4, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @4, $1), $3); } | function_arglist_skip_backup BACKUP ; @@ -2506,7 +2492,7 @@ function_arglist_skip_backup: function_arglist_backup | EXPECT_OPTIONAL EXPECT_SCM function_arglist_skip_backup { - $$ = scm_cons (loc_on_music (parser, @3, $1), $3); + $$ = scm_cons (loc_on_copy (parser, @3, $1), $3); } ; @@ -2956,15 +2942,11 @@ event_chord: } } %prec ':' | CHORD_REPETITION optional_notemode_duration post_events { - Input i; - i.set_location (@1, @3); - $$ = MAKE_SYNTAX (repetition_chord, i, + $$ = MAKE_SYNTAX (repetition_chord, @$, $2, scm_reverse_x ($3, SCM_EOL)); } %prec ':' | MULTI_MEASURE_REST optional_notemode_duration post_events { - Input i; - i.set_location (@1, @3); - $$ = MAKE_SYNTAX (multi_measure_rest, i, $2, + $$ = MAKE_SYNTAX (multi_measure_rest, @$, $2, scm_reverse_x ($3, SCM_EOL)); } %prec ':' | tempo_event @@ -4088,7 +4070,7 @@ Lily_lexer::try_special_identifiers (SCM *destination, SCM sid) return SCM_IDENTIFIER; } else if (unsmob (sid)) { *destination = unsmob (sid)->smobbed_copy (); - return CONTEXT_MOD_IDENTIFIER; + return SCM_IDENTIFIER; } else if (Music *mus = unsmob (sid)) { mus = mus->clone (); *destination = mus->self_scm (); @@ -4164,7 +4146,7 @@ SCM check_scheme_arg (Lily_parser *parser, Input loc, return args; } -SCM loc_on_music (Lily_parser *parser, Input loc, SCM arg) +SCM loc_on_copy (Lily_parser *parser, Input loc, SCM arg) { if (Music *m = unsmob (arg)) { @@ -4172,6 +4154,34 @@ SCM loc_on_music (Lily_parser *parser, Input loc, SCM arg) m->set_spot (parser->lexer_->override_input (loc)); return m->unprotect (); } + if (Book *b = unsmob (arg)) + { + b = b->clone (); + b->origin ()->set_spot (parser->lexer_->override_input (loc)); + return b->unprotect (); + } + if (Context_def *cd = unsmob (arg)) + { + cd = cd->clone (); + cd->origin ()->set_spot (parser->lexer_->override_input (loc)); + return cd->unprotect (); + } + if (Output_def *od = unsmob (arg)) + { + od = od->clone (); + od->input_origin_ = parser->lexer_->override_input (loc); + return od->unprotect (); + } + if (Score *s = unsmob (arg)) + { + s = s->clone (); + s->origin ()->set_spot (parser->lexer_->override_input (loc)); + return s->unprotect (); + } + if (Context_mod *cm = unsmob (arg)) + { + return cm->smobbed_copy (); + } return arg; } diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 1a06ca6422..80ceb5f431 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -189,14 +189,14 @@ Slur_engraver::finalize () } void -Slur_engraver::create_slur (const string &spanner_id, Event_info evi, Grob *g_cause, Direction dir, bool left_broken) +Slur_engraver::create_slur (SCM spanner_id, Event_info evi, Grob *g_cause, Direction dir, bool left_broken) { Grob *ccc = left_broken ? unsmob (get_property ("currentCommandColumn")) : 0; // efficiency SCM cause = evi.slur_ ? evi.slur_->self_scm () : g_cause->self_scm (); Spanner *slur = make_spanner (grob_symbol (), cause); - slur->set_property ("spanner-id", ly_string2scm (spanner_id)); + slur->set_property ("spanner-id", spanner_id); if (dir) set_grob_direction (slur, dir); if (left_broken) @@ -209,7 +209,7 @@ Slur_engraver::create_slur (const string &spanner_id, Event_info evi, Grob *g_ca { set_grob_direction (slur, DOWN); slur = make_spanner (grob_symbol (), cause); - slur->set_property ("spanner-id", ly_string2scm (spanner_id)); + slur->set_property ("spanner-id", spanner_id); set_grob_direction (slur, UP); if (left_broken) slur->set_bound (LEFT, ccc); @@ -221,7 +221,7 @@ Slur_engraver::create_slur (const string &spanner_id, Event_info evi, Grob *g_ca } bool -Slur_engraver::can_create_slur (const string &id, vsize old_slurs, vsize *event_idx, Stream_event *ev) +Slur_engraver::can_create_slur (SCM id, vsize old_slurs, vsize *event_idx, Stream_event *ev) { for (vsize j = slurs_.size (); j--;) { @@ -229,7 +229,7 @@ Slur_engraver::can_create_slur (const string &id, vsize old_slurs, vsize *event_ Direction updown = to_dir (ev->get_property ("direction")); // Check if we already have a slur with the same spanner-id. - if (id == robust_scm2string (slur->get_property ("spanner-id"), "")) + if (ly_is_equal (id, slur->get_property ("spanner-id"))) { if (j < old_slurs) { @@ -280,13 +280,13 @@ Slur_engraver::can_create_slur (const string &id, vsize old_slurs, vsize *event_ bool Slur_engraver::try_to_end (Event_info evi) { - string id = robust_scm2string (evi.slur_->get_property ("spanner-id"), ""); + SCM id = evi.slur_->get_property ("spanner-id"); // Find the slurs that are ended with this event (by checking the spanner-id) bool ended = false; for (vsize j = slurs_.size (); j--;) { - if (id == robust_scm2string (slurs_[j]->get_property ("spanner-id"), "")) + if (ly_is_equal (id, slurs_[j]->get_property ("spanner-id"))) { ended = true; end_slurs_.push_back (slurs_[j]); @@ -305,16 +305,14 @@ Slur_engraver::process_music () { for (vsize i = 0; i < stop_events_.size (); i++) { - string id = robust_scm2string - (stop_events_[i].slur_->get_property ("spanner-id"), ""); + SCM id = stop_events_[i].slur_->get_property ("spanner-id"); bool ended = try_to_end (stop_events_[i]); if (ended) { // Ignore redundant stop events for this id for (vsize j = stop_events_.size (); --j > i;) { - if (id == robust_scm2string - (stop_events_[j].slur_->get_property ("spanner-id"), "")) + if (ly_is_equal (id, stop_events_[j].slur_->get_property ("spanner-id"))) stop_events_.erase (stop_events_.begin () + j); } } @@ -326,7 +324,7 @@ Slur_engraver::process_music () for (vsize i = start_events_.size (); i--;) { Stream_event *ev = start_events_[i].slur_; - string id = robust_scm2string (ev->get_property ("spanner-id"), ""); + SCM id = ev->get_property ("spanner-id"); Direction updown = to_dir (ev->get_property ("direction")); if (can_create_slur (id, old_slurs, &i, ev)) diff --git a/lily/staff-performer.cc b/lily/staff-performer.cc index 3a05cbd0e2..592c6a7e01 100644 --- a/lily/staff-performer.cc +++ b/lily/staff-performer.cc @@ -25,6 +25,7 @@ #include "audio-staff.hh" #include "context.hh" #include "international.hh" +#include "midi-cc-announcer.hh" #include "performer-group.hh" #include "warn.hh" #include "lily-imports.hh" @@ -54,7 +55,22 @@ private: int get_channel (const string &instrument); Audio_staff *get_audio_staff (const string &voice); Audio_staff *new_audio_staff (const string &voice); - Audio_dynamic *get_dynamic (const string &voice); + + class Midi_control_initializer : public Midi_control_change_announcer + { + public: + Midi_control_initializer (Staff_performer *performer, + Audio_staff *audio_staff, + int channel); + + SCM get_property_value (const char *property_name); + void do_announce (Audio_control_change *item); + + private: + Staff_performer *performer_; + Audio_staff *audio_staff_; + int channel_; + }; string instrument_string_; int channel_; @@ -62,10 +78,8 @@ private: Audio_text *instrument_name_; Audio_text *name_; Audio_tempo *tempo_; - map > note_map_; map staff_map_; map channel_map_; - map dynamic_map_; // Would prefer to have the following two items be // members of the containing class Performance, // so they can be reset for each new midi file output. @@ -135,32 +149,9 @@ Staff_performer::new_audio_staff (const string &voice) staff_map_[voice] = audio_staff; if (!instrument_string_.empty ()) set_instrument (channel_, voice); - // Set initial values (if any) for control functions. - for (const Audio_control_function_value_change::Context_property *p - = Audio_control_function_value_change::context_properties_; - p->name_; ++p) - { - SCM value = get_property (p->name_); - if (scm_is_number (value)) - { - Real val = scm_to_double (value); - if (val >= p->range_min_ && val <= p->range_max_) - { - // Normalize the value to the 0.0 to 1.0 range. - val = ((val - p->range_min_) - / (p->range_max_ - p->range_min_)); - Audio_control_function_value_change *item - = new Audio_control_function_value_change (p->control_, val); - item->channel_ = channel_; - audio_staff->add_audio_item (item); - announce_element (Audio_element_info (item, 0)); - } - else - warning (_f ("ignoring out-of-range value change for MIDI " - "property `%s'", - p->name_)); - } - } + // Set initial values (if any) for MIDI controls. + Midi_control_initializer i (this, audio_staff, channel_); + i.announce_control_changes (); return audio_staff; } @@ -184,15 +175,6 @@ Staff_performer::get_audio_staff (const string &voice) return new_audio_staff (voice); } -Audio_dynamic * -Staff_performer::get_dynamic (const string &voice) -{ - map::const_iterator i = dynamic_map_.find (voice); - if (i != dynamic_map_.end ()) - return i->second; - return 0; -} - void Staff_performer::process_music () { @@ -226,22 +208,6 @@ Staff_performer::stop_translation_timestep () tempo_ = 0; instrument_name_ = 0; instrument_ = 0; - // For each voice with a note played in the current translation time step, - // check if the voice has an Audio_dynamic registered: if yes, apply this - // dynamic to every note played in the voice in the current translation time - // step. - for (map >::iterator vi = note_map_.begin (); - vi != note_map_.end (); ++vi) - { - Audio_dynamic *d = get_dynamic (vi->first); - if (d) - { - for (deque::iterator ni = vi->second.begin (); - ni != vi->second.end (); ++ni) - (*ni)->dynamic_ = d; - } - } - note_map_.clear (); } void @@ -316,47 +282,50 @@ Staff_performer::get_channel (const string &instrument) void Staff_performer::acknowledge_audio_element (Audio_element_info inf) { - if (Audio_item *ai = dynamic_cast (inf.elem_)) + /* map each context (voice) to its own track */ + Context *c = inf.origin_contexts (this)[0]; + string voice; + if (c->is_alias (ly_symbol2scm ("Voice"))) + voice = c->id_string (); + SCM channel_mapping = get_property ("midiChannelMapping"); + string str = new_instrument_string (); + if (!scm_is_eq (channel_mapping, ly_symbol2scm ("instrument"))) + channel_ = get_channel (voice); + else if (channel_ < 0 && str.empty ()) + channel_ = get_channel (str); + if (str.length ()) { - /* map each context (voice) to its own track */ - Context *c = inf.origin_contexts (this)[0]; - string voice; - if (c->is_alias (ly_symbol2scm ("Voice"))) - voice = c->id_string (); - SCM channel_mapping = get_property ("midiChannelMapping"); - string str = new_instrument_string (); - if (!scm_is_eq (channel_mapping, ly_symbol2scm ("instrument"))) - channel_ = get_channel (voice); - else if (channel_ < 0 && str.empty ()) + if (!scm_is_eq (channel_mapping, ly_symbol2scm ("voice"))) channel_ = get_channel (str); - if (str.length ()) - { - if (!scm_is_eq (channel_mapping, ly_symbol2scm ("voice"))) - channel_ = get_channel (str); - set_instrument (channel_, voice); - set_instrument_name (voice); - } + set_instrument (channel_, voice); + set_instrument_name (voice); + } + Audio_staff *audio_staff = get_audio_staff (voice); + if (Audio_item *ai = dynamic_cast (inf.elem_)) + { ai->channel_ = channel_; - Audio_staff *audio_staff = get_audio_staff (voice); - bool encode_dynamics_as_velocity_ = true; - if (encode_dynamics_as_velocity_) - { - if (Audio_note *n = dynamic_cast (inf.elem_)) - { - // Keep track of the notes played in the current voice in this - // translation time step (for adjusting their dynamics later in - // stop_translation_timestep). - note_map_[voice].push_back (n); - } - else if (Audio_dynamic *d = dynamic_cast (inf.elem_)) - { - dynamic_map_[voice] = d; - // Output volume as velocity: skip Midi_dynamic output for the - // current element. - return; - } - } audio_staff->add_audio_item (ai); } } +Staff_performer::Midi_control_initializer::Midi_control_initializer +(Staff_performer *performer, Audio_staff *audio_staff, int channel) + : performer_ (performer), + audio_staff_ (audio_staff), + channel_ (channel) +{ +} + +SCM Staff_performer::Midi_control_initializer::get_property_value +(const char *property_name) +{ + return performer_->get_property (property_name); +} + +void Staff_performer::Midi_control_initializer::do_announce +(Audio_control_change *item) +{ + item->channel_ = channel_; + audio_staff_->add_audio_item (item); + performer_->announce_element (Audio_element_info (item, 0)); +} diff --git a/ly/Welcome-to-LilyPond-MacOS.ly b/ly/Welcome-to-LilyPond-MacOS.ly index fe8e3b02a7..5768d8b5f0 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.45" % necessary for upgrading to future LilyPond versions. +\version "2.19.47" % 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 cb4128f17f..0dae0bf064 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.45" % necessary for upgrading to future LilyPond versions. +\version "2.19.47" % necessary for upgrading to future LilyPond versions. \header{ title = "A scale in LilyPond" diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 3637871a66..0b5b8f7f2a 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -16,7 +16,7 @@ %%%% You should have received a copy of the GNU General Public License %%%% along with LilyPond. If not, see . -\version "2.19.19" +\version "2.19.46" \context { \name "Global" @@ -35,7 +35,6 @@ \description "A context for displaying fret diagrams." \consists "Fretboard_engraver" - \consists "Output_property_engraver" \consists "Axis_group_engraver" \consists "Separating_line_group_engraver" \consists "Font_size_engraver" @@ -54,7 +53,6 @@ \type "Engraver_group" \name "Staff" - \consists "Output_property_engraver" \consists "Bar_engraver" \consists "Pure_from_neighbor_engraver" %% Bar_engraver must be first so default bars aren't overwritten @@ -177,7 +175,6 @@ contained staves are not connected vertically." \override Stem.neutral-direction = #UP \override Beam.neutral-direction = #UP - \consists "Output_property_engraver" \consists "Font_size_engraver" \consists "Separating_line_group_engraver" \consists "Dot_column_engraver" @@ -218,7 +215,6 @@ multiple voices on the same staff." \consists "Font_size_engraver" \consists "Pitched_trill_engraver" - \consists "Output_property_engraver" \consists "Arpeggio_engraver" \consists "Multi_measure_rest_engraver" \consists "Text_spanner_engraver" @@ -371,7 +367,6 @@ together, never separately." \override DynamicText.extra-spacing-width = ##f \consists "Span_bar_stub_engraver" \consists "Span_arpeggio_engraver" - \consists "Output_property_engraver" systemStartDelimiter = #'SystemStartBracket %% explicitly set instrument, so it is not inherited from the parent instrumentName = #'() @@ -433,7 +428,6 @@ it with a different one. Often used with @code{\\stopStaff} and \type "Engraver_group" \name "Dynamics" \alias "Voice" - \consists "Output_property_engraver" \consists "Bar_engraver" \consists "Piano_pedal_engraver" \consists "Script_engraver" @@ -535,7 +529,6 @@ printing of a single line of lyrics." % \key, \transposition \description "Typesets chord names." - \consists "Output_property_engraver" \consists "Separating_line_group_engraver" \consists "Chord_name_engraver" \consists "Axis_group_engraver" diff --git a/ly/grace-init.ly b/ly/grace-init.ly index 6fe32f49fb..a46111e4d9 100644 --- a/ly/grace-init.ly +++ b/ly/grace-init.ly @@ -1,7 +1,7 @@ \version "2.17.6" -startGraceSlur = #(make-music 'SlurEvent 'span-direction START 'spanner-id "grace") -stopGraceSlur = #(make-music 'SlurEvent 'span-direction STOP 'spanner-id "grace") +startGraceSlur = #(make-music 'SlurEvent 'span-direction START 'spanner-id 'grace) +stopGraceSlur = #(make-music 'SlurEvent 'span-direction STOP 'spanner-id 'grace) startGraceMusic = { diff --git a/ly/music-functions-init.ly b/ly/music-functions-init.ly index a23d154fd8..76c2ec64b8 100644 --- a/ly/music-functions-init.ly +++ b/ly/music-functions-init.ly @@ -56,12 +56,17 @@ addQuote = (add-quotable name music)) %% keep these two together -afterGraceFraction = #(cons 6 8) +afterGraceFraction = 3/4 afterGrace = -#(define-music-function (main grace) (ly:music? ly:music?) - (_i "Create @var{grace} note(s) after a @var{main} music expression.") +#(define-music-function (fraction main grace) ((fraction?) ly:music? ly:music?) + (_i "Create @var{grace} note(s) after a @var{main} music expression. + +The musical position of the grace expression is after a +given fraction of the main note's duration has passed. If +@var{fraction} is not specified as first argument, it is taken from +@code{afterGraceFraction} which has a default value of @code{3/4}.") (let ((main-length (ly:music-length main)) - (fraction (ly:parser-lookup 'afterGraceFraction))) + (fraction (or fraction (ly:parser-lookup 'afterGraceFraction)))) (make-simultaneous-music (list main @@ -71,10 +76,8 @@ afterGrace = (make-music 'SkipMusic 'duration (ly:make-duration 0 0 - (* (ly:moment-main-numerator main-length) - (car fraction)) - (* (ly:moment-main-denominator main-length) - (cdr fraction)))) + (* (ly:moment-main main-length) + (/ (car fraction) (cdr fraction))))) (make-music 'GraceMusic 'element grace))))))) @@ -1014,13 +1017,10 @@ creation.") (if p (make-music 'ApplyOutputEvent 'context-type (first p) + 'symbol (second p) 'procedure (lambda (grob orig-context context) - (if (equal? - (cdr (assoc 'name (ly:grob-property grob 'meta))) - (second p)) - (ly:grob-set-nested-property! - grob (cddr p) value)))) + (ly:grob-set-nested-property! grob (cddr p) value))) (make-music 'Music)))) @@ -1551,7 +1551,12 @@ retrograde = #(define-music-function (music) (ly:music?) (_i "Return @var{music} in reverse order.") - (retrograde-music music)) + (retrograde-music + (expand-repeat-notes! + (expand-repeat-chords! + (cons 'rhythmic-event + (ly:parser-lookup '$chord-repeat-events)) + music)))) revertTimeSignatureSettings = #(define-music-function diff --git a/ly/performer-init.ly b/ly/performer-init.ly index 00c4bdf3da..644a0bd2d6 100644 --- a/ly/performer-init.ly +++ b/ly/performer-init.ly @@ -31,7 +31,7 @@ \consists "Staff_performer" \consists "Key_performer" - \consists "Midi_control_function_performer" + \consists "Midi_control_change_performer" } \context { diff --git a/ly/spanners-init.ly b/ly/spanners-init.ly index 756a55579e..8d8a69444f 100644 --- a/ly/spanners-init.ly +++ b/ly/spanners-init.ly @@ -1,18 +1,15 @@ \version "2.19.29" "\\=" = -#(define-event-function (id event) (number-or-string? ly:event?) +#(define-event-function (id event) (key? ly:event?) (_i "This sets the @code{spanner-id} property of the following -@var{event} to the given @var{id} (numbers will be converted to a -string). This can be used to tell LilyPond how to connect overlapping +@var{event} to the given @var{id} (non-negative integer or symbol). +This can be used to tell LilyPond how to connect overlapping or parallel slurs or phrasing slurs within a single @code{Voice}. @lilypond[quote,verbatim] \\fixed c' { c\\=1( d\\=2( e\\=1) f\\=2) } @end lilypond\n") - (set! (ly:music-property event 'spanner-id) - (if (number? id) - (number->string id) - id)) + (set! (ly:music-property event 'spanner-id) id) event) startGroup = #(make-span-event 'NoteGroupingEvent START) diff --git a/out/ChangeLog b/out/ChangeLog index 39e8943c23..90a2fe5b71 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.45-1 +See http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=log;h=refs/tags/release/2.19.47-1 diff --git a/out/RELEASE-COMMIT b/out/RELEASE-COMMIT index 59c21c17d4..0a3bba8376 100644 --- a/out/RELEASE-COMMIT +++ b/out/RELEASE-COMMIT @@ -1,32 +1,7 @@ -commit de765c2d8f941423e0e33ced19b1436e7643277a +commit 753d6200e9ae51f0a98186478beff2d00d63a62b +Merge: fc5b145 2e0077b Author: Phil Holmes -Date: Fri Jul 8 13:58:06 2016 +0100 +Date: Tue Aug 30 11:23:53 2016 +0100 - Release: bump Welcome versions. + Update release/unstable with recent changes -diff --git a/ly/Welcome-to-LilyPond-MacOS.ly b/ly/Welcome-to-LilyPond-MacOS.ly -index 417b993..fe8e3b0 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.44" % necessary for upgrading to future LilyPond versions. -+\version "2.19.45" % 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 6e3e604..cb4128f 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.44" % necessary for upgrading to future LilyPond versions. -+\version "2.19.45" % necessary for upgrading to future LilyPond versions. - - \header{ - title = "A scale in LilyPond" diff --git a/po/ca.po b/po/ca.po index 89819f371d..871624a989 100644 --- a/po/ca.po +++ b/po/ca.po @@ -25,7 +25,7 @@ msgstr "" "Project-Id-Version: lilypond-2.19.26\n" "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n" "POT-Creation-Date: 2015-08-27 10:48+0100\n" -"PO-Revision-Date: 2015-11-11 22:27+0100\n" +"PO-Revision-Date: 2016-07-04 11:27+0200\n" "Last-Translator: Walter Garcia-Fontes \n" "Language-Team: Catalan \n" "Language: ca\n" @@ -1670,7 +1670,7 @@ msgstr "Altres llengües" #: website_post.py:133 #, python-format msgid "About automatic language selection." -msgstr "Sobre selecció automàtica de llengua." +msgstr "Quant a la selecció automàtica de llengua." #: getopt-long.cc:153 #, c-format diff --git a/po/lilypond.pot b/po/lilypond.pot index ae5cfd4108..965a48bf92 100644 --- a/po/lilypond.pot +++ b/po/lilypond.pot @@ -6,10 +6,10 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: lilypond 2.19.45\n" +"Project-Id-Version: lilypond 2.19.47\n" "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu." "lilypond.bugs\n" -"POT-Creation-Date: 2016-07-08 13:56+0100\n" +"POT-Creation-Date: 2016-08-13 13:37+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -917,7 +917,7 @@ msgstr "" msgid "Encountered unprocessed marker %s\n" msgstr "" -#: abc2ly.py:1389 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1046 +#: abc2ly.py:1389 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1052 #, python-format msgid "%s [OPTION]... FILE" msgstr "" @@ -930,16 +930,16 @@ msgid "" msgstr "" #: abc2ly.py:1398 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231 -#: midi2ly.py:1097 musicxml2ly.py:2766 main.cc:184 +#: midi2ly.py:1103 musicxml2ly.py:2766 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:1064 musicxml2ly.py:2747 main.cc:163 +#: midi2ly.py:1070 musicxml2ly.py:2747 main.cc:163 msgid "show this help and exit" msgstr "" -#: abc2ly.py:1404 etf2ly.py:1209 midi2ly.py:1073 +#: abc2ly.py:1404 etf2ly.py:1209 midi2ly.py:1079 msgid "write output to FILE" msgstr "" @@ -960,7 +960,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:1109 musicxml2ly.py:2909 main.cc:318 +#: midi2ly.py:1115 musicxml2ly.py:2909 main.cc:318 #, c-format, python-format msgid "Report bugs via %s" msgstr "" @@ -1042,7 +1042,7 @@ msgstr "" msgid "make a numbered backup [default: filename.ext~]" msgstr "" -#: convert-ly.py:152 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1098 +#: convert-ly.py:152 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1104 #: main.cc:186 msgid "show warranty and copyright" msgstr "" @@ -1101,7 +1101,7 @@ msgid "" "file.\n" msgstr "" -#: etf2ly.py:1210 midi2ly.py:1069 midi2ly.py:1074 musicxml2ly.py:2859 +#: etf2ly.py:1210 midi2ly.py:1075 midi2ly.py:1080 musicxml2ly.py:2859 #: main.cc:169 main.cc:181 msgid "FILE" msgstr "" @@ -1208,7 +1208,7 @@ msgstr "" msgid "write snippet output files with the same base name as their source file" msgstr "" -#: lilypond-book.py:223 midi2ly.py:1092 musicxml2ly.py:2772 +#: lilypond-book.py:223 midi2ly.py:1098 musicxml2ly.py:2772 msgid "be verbose" msgstr "" @@ -1310,7 +1310,7 @@ msgstr "" msgid "warning: " msgstr "" -#: midi2ly.py:92 midi2ly.py:1126 +#: midi2ly.py:92 midi2ly.py:1132 msgid "error: " msgstr "" @@ -1318,85 +1318,85 @@ msgstr "" msgid "Exiting... " msgstr "" -#: midi2ly.py:834 +#: midi2ly.py:840 msgid "found more than 5 voices on a staff, expect bad output" msgstr "" -#: midi2ly.py:1034 +#: midi2ly.py:1040 #, python-format msgid "%s output to `%s'..." msgstr "" -#: midi2ly.py:1047 +#: midi2ly.py:1053 #, python-format msgid "Convert %s to LilyPond input.\n" msgstr "" -#: midi2ly.py:1052 +#: midi2ly.py:1058 msgid "print absolute pitches" msgstr "" -#: midi2ly.py:1054 midi2ly.py:1082 +#: midi2ly.py:1060 midi2ly.py:1088 msgid "DUR" msgstr "" -#: midi2ly.py:1055 +#: midi2ly.py:1061 msgid "quantise note durations on DUR" msgstr "" -#: midi2ly.py:1058 +#: midi2ly.py:1064 msgid "debug printing" msgstr "" -#: midi2ly.py:1061 +#: midi2ly.py:1067 msgid "print explicit durations" msgstr "" -#: midi2ly.py:1066 +#: midi2ly.py:1072 msgid "prepend FILE to output" msgstr "" -#: midi2ly.py:1070 +#: midi2ly.py:1076 msgid "set key: ALT=+sharps|-flats; MINOR=1" msgstr "" -#: midi2ly.py:1071 +#: midi2ly.py:1077 msgid "ALT[:MINOR]" msgstr "" -#: midi2ly.py:1076 +#: midi2ly.py:1082 msgid "preview of first 4 bars" msgstr "" -#: midi2ly.py:1080 +#: midi2ly.py:1086 msgid "suppress progress messages and warnings about excess voices" msgstr "" -#: midi2ly.py:1081 +#: midi2ly.py:1087 msgid "quantise note starts on DUR" msgstr "" -#: midi2ly.py:1085 +#: midi2ly.py:1091 msgid "use s instead of r for rests" msgstr "" -#: midi2ly.py:1087 +#: midi2ly.py:1093 msgid "DUR*NUM/DEN" msgstr "" -#: midi2ly.py:1090 +#: midi2ly.py:1096 msgid "allow tuplet durations DUR*NUM/DEN" msgstr "" -#: midi2ly.py:1100 +#: midi2ly.py:1106 msgid "treat every text as a lyric" msgstr "" -#: midi2ly.py:1103 +#: midi2ly.py:1109 msgid "Examples" msgstr "" -#: midi2ly.py:1127 +#: midi2ly.py:1133 msgid "no files specified on command line." msgstr "" @@ -1770,6 +1770,33 @@ msgstr "" msgid "no heads for arpeggio found?" msgstr "" +#: audio-item.cc:139 +#, c-format +msgid "end moment (%s) < start moment (%s)" +msgstr "" + +#: audio-item.cc:153 +#, c-format +msgid "invalid start volume: %f" +msgstr "" + +#: audio-item.cc:159 +#, c-format +msgid "invalid target volume: %f" +msgstr "" + +#: audio-item.cc:174 +#, c-format +msgid "" +"asked to compute volume at %f for dynamic span of duration %f starting at %s" +msgstr "" + +#: audio-item.cc:182 +#, c-format +msgid "" +"asked to compute volume at +%f for dynamic span of duration %f starting at %s" +msgstr "" + #: axis-group-engraver.cc:154 msgid "Axis_group_engraver: vertical group already has a parent" msgstr "" @@ -2080,7 +2107,7 @@ msgstr "" msgid "%d: %s" msgstr "" -#: grob.cc:486 +#: grob.cc:487 #, c-format msgid "ignored infinite %s-offset" msgstr "" @@ -2517,17 +2544,17 @@ msgstr "" msgid "unexpected case fall-through" msgstr "" -#: midi-control-function-performer.cc:107 staff-performer.cc:159 +#: midi-cc-announcer.cc:99 #, c-format msgid "ignoring out-of-range value change for MIDI property `%s'" msgstr "" -#: midi-item.cc:93 +#: midi-item.cc:91 #, c-format msgid "no such MIDI instrument: `%s'" msgstr "" -#: midi-item.cc:179 +#: midi-item.cc:177 msgid "Time signature with more than 255 beats. Truncating" msgstr "" @@ -3075,11 +3102,11 @@ msgstr "" msgid "expected to read %d characters, got %d" msgstr "" -#: staff-performer.cc:307 +#: staff-performer.cc:273 msgid "MIDI channel wrapped around" msgstr "" -#: staff-performer.cc:308 +#: staff-performer.cc:274 msgid "remapping modulo 16" msgstr "" @@ -3228,119 +3255,119 @@ msgstr "" msgid "giving up" msgstr "" -#: parser.yy:483 parser.yy:650 parser.yy:989 parser.yy:1070 parser.yy:1306 +#: parser.yy:482 parser.yy:649 parser.yy:988 parser.yy:1069 parser.yy:1305 msgid "bad expression type" msgstr "" -#: parser.yy:902 parser.yy:1514 parser.yy:1583 +#: parser.yy:901 parser.yy:1508 parser.yy:1570 msgid "not a context mod" msgstr "" -#: parser.yy:983 parser.yy:1062 parser.yy:1214 +#: parser.yy:982 parser.yy:1061 parser.yy:1213 msgid "need \\paper for paper block" msgstr "" -#: parser.yy:1096 +#: parser.yy:1095 msgid "Missing music in \\score" msgstr "" -#: parser.yy:1133 +#: parser.yy:1132 msgid "\\paper cannot be used in \\score, use \\layout instead" msgstr "" -#: parser.yy:1184 +#: parser.yy:1183 msgid "Spurious expression in \\score" msgstr "" -#: parser.yy:1388 +#: parser.yy:1387 msgid "music expected" msgstr "" -#: parser.yy:1398 parser.yy:1432 +#: parser.yy:1397 parser.yy:1431 msgid "unexpected post-event" msgstr "" -#: parser.yy:1440 +#: parser.yy:1439 msgid "Ignoring non-music expression" msgstr "" -#: parser.yy:1763 parser.yy:1782 +#: parser.yy:1749 parser.yy:1768 msgid "not a key" msgstr "" -#: parser.yy:2642 parser.yy:2760 parser.yy:2773 parser.yy:2782 +#: parser.yy:2628 parser.yy:2746 parser.yy:2759 parser.yy:2768 msgid "bad grob property path" msgstr "" -#: parser.yy:2740 +#: parser.yy:2726 msgid "only \\consists and \\remove take non-string argument." msgstr "" -#: parser.yy:2801 +#: parser.yy:2787 msgid "bad context property path" msgstr "" -#: parser.yy:2886 +#: parser.yy:2872 msgid "markup expected" msgstr "" -#: parser.yy:2898 +#: parser.yy:2884 msgid "simple string expected" msgstr "" -#: parser.yy:2915 +#: parser.yy:2901 msgid "symbol expected" msgstr "" -#: parser.yy:3059 +#: parser.yy:3041 msgid "not a rhythmic event" msgstr "" -#: parser.yy:3109 +#: parser.yy:3091 msgid "post-event expected" msgstr "" -#: parser.yy:3118 parser.yy:3123 +#: parser.yy:3100 parser.yy:3105 msgid "have to be in Lyric mode for lyrics" msgstr "" -#: parser.yy:3199 +#: parser.yy:3181 msgid "expecting string or post-event as script definition" msgstr "" -#: parser.yy:3303 +#: parser.yy:3285 msgid "not an articulation" msgstr "" -#: parser.yy:3369 parser.yy:3421 +#: parser.yy:3351 parser.yy:3403 msgid "not a duration" msgstr "" -#: parser.yy:3442 +#: parser.yy:3424 msgid "bass number expected" msgstr "" -#: parser.yy:3534 +#: parser.yy:3516 msgid "have to be in Note mode for notes" msgstr "" -#: parser.yy:3573 +#: parser.yy:3555 msgid "have to be in Chord mode for chords" msgstr "" -#: parser.yy:3616 +#: parser.yy:3598 msgid "markup outside of text script or \\lyricmode" msgstr "" -#: parser.yy:3621 +#: parser.yy:3603 msgid "unrecognized string, not in text script or \\lyricmode" msgstr "" -#: parser.yy:3773 parser.yy:3782 +#: parser.yy:3755 parser.yy:3764 msgid "not an unsigned integer" msgstr "" -#: parser.yy:3869 +#: parser.yy:3851 msgid "not a markup" msgstr "" @@ -3641,12 +3668,12 @@ msgstr "" msgid "Writing ~a..." msgstr "" -#: framework-ps.scm:259 +#: framework-ps.scm:260 #, scheme-format msgid "CFF font `~a' already embedded, skipping." msgstr "" -#: framework-ps.scm:262 +#: framework-ps.scm:263 #, scheme-format msgid "" "Different CFF fonts which have the same name `~a' has been detected. The " @@ -3655,51 +3682,55 @@ msgstr "" #: framework-ps.scm:267 #, scheme-format -msgid "Embedding CFF font `~a'" +msgid "Embedding CFF font `~a'." +msgstr "" + +#: framework-ps.scm:272 +msgid "Initializing embedded CFF font list." msgstr "" -#: framework-ps.scm:317 +#: framework-ps.scm:325 #, scheme-format msgid "" "Font ~a cannot be loaded via Ghostscript because its font-index (~a) is not " "zero." msgstr "" -#: framework-ps.scm:323 +#: framework-ps.scm:331 #, scheme-format msgid "" -"Font ~a cannot be loaded via Ghostscript because it is an OpenType/CFF (OTC) " -"font." +"Font ~a cannot be loaded via Ghostscript because it is an OpenType/CFF " +"Collection (OTC) font." msgstr "" -#: framework-ps.scm:329 +#: framework-ps.scm:337 #, scheme-format msgid "" "Font ~a cannot be used via Ghostscript because it is a TrueType font that " "does not have glyph names." msgstr "" -#: framework-ps.scm:343 +#: framework-ps.scm:351 #, scheme-format msgid "cannot embed ~S=~S" msgstr "" -#: framework-ps.scm:386 +#: framework-ps.scm:394 #, scheme-format msgid "cannot extract file matching ~a from ~a" msgstr "" -#: framework-ps.scm:403 +#: framework-ps.scm:411 #, scheme-format msgid "do not know how to embed ~S=~S" msgstr "" -#: framework-ps.scm:428 +#: framework-ps.scm:436 #, scheme-format msgid "do not know how to embed font ~s ~s ~s" msgstr "" -#: framework-ps.scm:810 +#: framework-ps.scm:820 msgid "" "\n" "The PostScript backend does not support the\n" @@ -4008,12 +4039,12 @@ msgstr "" msgid "quoted music `~a' is empty" msgstr "" -#: ps-to-png.scm:72 ps-to-png.scm:75 +#: ps-to-png.scm:74 ps-to-png.scm:77 #, scheme-format msgid "Copying `~a' to `~a'..." msgstr "" -#: ps-to-png.scm:77 ps-to-png.scm:79 +#: ps-to-png.scm:79 ps-to-png.scm:81 #, scheme-format msgid "Deleting `~a'..." msgstr "" diff --git a/python/convertrules.py b/python/convertrules.py index 3e43a28133..f64312a839 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -3888,6 +3888,21 @@ def conv (str): repl, str) return str +@rule ((2, 19, 46), r"""\context ... \modification -> \context ... \with \modification +\consists "Output_property_engraver" ->""") +def conv (str): + word=r'(?:#?"[^"]*"|\b' + wordsyntax + r'\b)' + mods = string.join (re.findall ("\n(" + wordsyntax + r")\s*=\s*\\with(?:\s|\\|\{)", str) + + ['RemoveEmptyStaves','RemoveAllEmptyStaves'], "|") + str = re.sub (r"(\\(?:drums|figures|chords|lyrics|addlyrics|" + + r"(?:new|context)\s*" + word + + r"(?:\s*=\s*" + word + r")?)\s*)(\\(?:" + mods + "))", + r"\1\\with \2", str) + + str = re.sub (r'\\(consists|remove)\s+"?Output_property_engraver"?\s*', + '', str) + return str + # Guidelines to write rules (please keep this at the end of this file) # # - keep at most one rule per version; if several conversions should be done, diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index cb9103a6fc..7ca44b6f3d 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -992,7 +992,7 @@ override: \\override MultiMeasureRest #'spacing-pair = #'(staff-bar . staff-bar) @end example") - (spanner-id ,string? "An identifier to distinguish concurrent spanners.") + (spanner-id ,key? "An identifier to distinguish concurrent spanners.") (springs-and-rods ,boolean? "Dummy variable for triggering spacing routines.") (stacking-dir ,ly:dir? "Stack objects in which direction?") diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index f525edd69a..6ca25b586e 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1787,7 +1787,6 @@ (height-limit . 2.0) (minimum-length . 1.5) (ratio . 0.333) - (spanner-id . "") (springs-and-rods . ,ly:spanner::set-spacing-rods) (stencil . ,ly:slur::print) (thickness . 1.1) @@ -1957,7 +1956,6 @@ (line-thickness . 0.8) (minimum-length . 1.5) (ratio . 0.25) - (spanner-id . "") (springs-and-rods . ,ly:spanner::set-spacing-rods) (stencil . ,ly:slur::print) (thickness . 1.2) diff --git a/scm/define-music-properties.scm b/scm/define-music-properties.scm index 4df3f93340..f8c567d1fa 100644 --- a/scm/define-music-properties.scm +++ b/scm/define-music-properties.scm @@ -183,7 +183,7 @@ If zero, signals a beat containing varying durations.") Options are @code{'text} and @code{'hairpin}.") (span-text ,markup? "The displayed text for dynamic text spanners (e.g., cresc.)") - (spanner-id ,string? "Identifier to distinguish concurrent spanners.") + (spanner-id ,key? "Identifier to distinguish concurrent spanners.") (start-callback ,procedure? "Function to compute the negative length of starting grace notes. This property can only be defined as initializer in @file{scm/@/define-music-types.scm}.") diff --git a/scm/define-music-types.scm b/scm/define-music-types.scm index e0190eda55..348bcd0e87 100644 --- a/scm/define-music-types.scm +++ b/scm/define-music-types.scm @@ -438,7 +438,6 @@ goes down).") . ((description . "Start or end phrasing slur. Syntax: @var{note}@code{\\(} and @var{note}@code{\\)}") - (spanner-id . "") (types . (post-event span-event event phrasing-slur-event)) )) @@ -570,7 +569,6 @@ Syntax: @code{\\skip} @var{duration}") . ((description . "Start or end slur. Syntax: @var{note}@code{(} and @var{note}@code{)}") - (spanner-id . "") (types . (post-event span-event event slur-event)) )) diff --git a/scm/framework-ps.scm b/scm/framework-ps.scm index 8221e5eab3..a404119678 100644 --- a/scm/framework-ps.scm +++ b/scm/framework-ps.scm @@ -248,27 +248,32 @@ (define check-conflict-and-embed-cff (let ((font-list '())) (lambda (name file-name font-index) - (let* ((name-symbol (string->symbol name)) - (args-filename-offset - (cons file-name (ly:get-cff-offset file-name font-index))) - (found-filename-offset (assq name-symbol font-list))) - (if found-filename-offset - (begin - (if (equal? args-filename-offset (cdr found-filename-offset)) - (ly:debug - (_ "CFF font `~a' already embedded, skipping.") - name) - (ly:warning - (_ "Different CFF fonts which have the same name `~a' has been detected. The font cannot be embedded.") - name)) - "") - (begin - (ly:debug - (_ "Embedding CFF font `~a'") - name) - (set! font-list - (acons name-symbol args-filename-offset font-list)) - (ps-embed-cff (ly:otf->cff file-name font-index) name 0))))))) + (if name + (let* ((name-symbol (string->symbol name)) + (args-filename-offset + (cons file-name (ly:get-cff-offset file-name font-index))) + (found-filename-offset (assq name-symbol font-list))) + (if found-filename-offset + (begin + (if (equal? args-filename-offset (cdr found-filename-offset)) + (ly:debug + (_ "CFF font `~a' already embedded, skipping.") + name) + (ly:warning + (_ "Different CFF fonts which have the same name `~a' has been detected. The font cannot be embedded.") + name)) + "") + (begin + (ly:debug (_ "Embedding CFF font `~a'.") name) + (set! font-list + (acons name-symbol args-filename-offset font-list)) + (ps-embed-cff (ly:otf->cff file-name font-index) name 0)))) + (begin + (ly:debug (_ "Initializing embedded CFF font list.")) + (set! font-list '())))))) + +(define (initialize-font-embedding) + (check-conflict-and-embed-cff #f #f #f)) (define (write-preamble paper load-fonts? port) (define (internal-font? font-name-filename) @@ -283,16 +288,19 @@ (define (load-font-via-GS font-name-filename) (define (is-collection-font? file-name) - (let ((port (open-file file-name "rb"))) - (if (eq? (read-char port) #\t) - (if (eq? (read-char port) #\t) - (if (eq? (read-char port) #\c) - (if (eq? (read-char port) #\f) - #t - #f) - #f) - #f) - #f))) + (let* ((port (open-file file-name "rb")) + (retval + (if (eq? (read-char port) #\t) + (if (eq? (read-char port) #\t) + (if (eq? (read-char port) #\c) + (if (eq? (read-char port) #\f) + #t + #f) + #f) + #f) + #f))) + (close-port port) + retval)) (define (ps-load-file file-name) (if (string? file-name) @@ -320,7 +328,7 @@ ((and (string? bare-file-name) (eq? (ly:get-font-format bare-file-name font-index) 'CFF) (is-collection-font? bare-file-name)) - (ly:warning (_ "Font ~a cannot be loaded via Ghostscript because it is an OpenType/CFF (OTC) font.") + (ly:warning (_ "Font ~a cannot be loaded via Ghostscript because it is an OpenType/CFF Collection (OTC) font.") name) (load-font font-name-filename)) ((and (string? bare-file-name) @@ -575,6 +583,7 @@ mark {ly~a_stream} /CLOSE pdfmark (page-number (1- (ly:output-def-lookup paper 'first-page-number))) (page-count (length page-stencils)) (port (ly:outputter-port outputter))) + (initialize-font-embedding) (if (ly:get-option 'clip-systems) (clip-system-EPSes basename book)) (if (ly:get-option 'dump-signatures) @@ -655,6 +664,7 @@ mark {ly~a_stream} /CLOSE pdfmark (rounded-bbox (to-rounded-bp-box bbox)) (port (ly:outputter-port outputter)) (header (eps-header paper rounded-bbox load-fonts))) + (initialize-font-embedding) (display header port) (write-preamble paper load-fonts port) (display "/mark_page_link { pop pop pop pop pop } bind def\n" port) diff --git a/scm/modal-transforms.scm b/scm/modal-transforms.scm index 98e9ac3021..f9e26ed360 100644 --- a/scm/modal-transforms.scm +++ b/scm/modal-transforms.scm @@ -185,32 +185,110 @@ Typically used to construct a scale for input to (define-public (retrograde-music music) "Returns @var{music} in retrograde (reversed) order." - ;; Copied from LSR #105 and renamed. ;; Included here to allow this module to provide a complete set of ;; common formal operations on motives, i.e transposition, ;; inversion and retrograding. - (let* ((elements (ly:music-property music 'elements)) - (arts (ly:music-property music 'articulations)) - (reversed (reverse elements)) - (element (ly:music-property music 'element)) - (span-dir (ly:music-property music 'span-direction))) - - (ly:music-set-property! music 'elements reversed) - - (for-each retrograde-music arts) - - (if (ly:music? element) - (ly:music-set-property! - music 'element - (retrograde-music element))) - - (if (ly:dir? span-dir) - (ly:music-set-property! music 'span-direction (- span-dir))) - - (for-each retrograde-music reversed) - - music)) + (define (reverse-span! m) + ;; invert direction of two-sided spanners + (let ((spd (ly:music-property m 'span-direction))) + (if (ly:dir? spd) + (begin + (set! (ly:music-property m 'span-direction) (- spd)) + (case (ly:music-property m 'name) + ((CrescendoEvent) + (make-music 'DecrescendoEvent m)) + ((DecrescendoEvent) + (make-music 'CrescendoEvent m)) + (else m))) + m))) + + ;; carryover is a possible list of tie events, the loop returns any + ;; such trailing list from the given expression + (define (loop m carryover) + (define (filter-ties! m carryover field) + (let ((vals (ly:music-property m field))) + (if (pair? vals) + (call-with-values + (lambda () + (partition! (music-type-predicate + '(tie-event glissando-event)) vals)) + (lambda (ties no-ties) + (set! (ly:music-property m field) + (append! (map! reverse-span! no-ties) carryover)) + ties)) + (begin + (if (pair? carryover) + (set! (ly:music-property m field) carryover)) + '())))) + + ;; The reversal will let some prefatory material stay in front of + ;; the following element. Most prominently single + ;; overrides/reverts/sets/unsets and applyContext. This does not + ;; change the position of a clef (which will generally be useless + ;; after retrograding) but it does not jumble the clef change + ;; command internals. Also, stuff like \once\override stays at + ;; the affected element. + + (define (prefatory? m) + (or ((music-type-predicate + '(apply-context apply-output-event layout-instruction-event)) m) + (and + (music-is-of-type? m 'music-wrapper-music) + (prefatory? (ly:music-property m 'element))))) + + (define (musiclistreverse lst) + (let loop ((lst lst) (res '()) (zeros '())) + (cond ((null? lst) (reverse! zeros res)) + ((prefatory? (car lst)) + (loop (cdr lst) res (cons (car lst) zeros))) + (else + (loop (cdr lst) (reverse! zeros (cons (car lst) res)) '()))))) + + (cond ((music-is-of-type? m 'event-chord) + (let* ((chord-ties + (append! + (filter-ties! m carryover 'elements) + ;; articulations on an event-chord do not occur + ;; "naturally" but are supported when user-generated + ;; elsewhere, so we treat them properly + (filter-ties! m '() 'articulations))) + ;; in-chord ties are converted to per-chord ties. + ;; This is less than optimal but pretty much the + ;; best we can hope to achieve with this approach. + (element-ties + (append-map! + (lambda (m) (filter-ties! m '() 'articulations)) + (ly:music-property m 'elements)))) + (append! chord-ties element-ties))) + + ((music-is-of-type? m 'rhythmic-event) + (filter-ties! m carryover 'articulations)) + + ;; The following is hardly correct but tieing inside of + ;; <<...>> is really beyond our pay grade. + ((music-is-of-type? m 'simultaneous-music) + (append-map! (lambda (m) (loop m (ly:music-deep-copy carryover))) + (ly:music-property m 'elements))) + (else + (let ((elt (ly:music-property m 'element)) + (elts (ly:music-property m 'elements))) + (let ((res + (fold loop + (if (ly:music? elt) (loop elt carryover) carryover) + elts))) + (if (ly:music? elt) + (set! (ly:music-property m 'element) + (reverse-span! elt))) + (if (pair? elts) + (set! (ly:music-property m 'elements) + (map! reverse-span! (musiclistreverse elts)))) + (append! res (filter-ties! m '() 'articulations))))))) + (let ((dangling (loop music '()))) + (for-each + (lambda (t) (ly:music-warning t (_ "Dangling tie in \\retrograde"))) + dangling)) + music) (define-public (pitch-invert around to music) "If @var{music} is a single pitch, inverts it about @var{around} diff --git a/scm/ps-to-png.scm b/scm/ps-to-png.scm index f5d40d0c5c..f20ca61b41 100644 --- a/scm/ps-to-png.scm +++ b/scm/ps-to-png.scm @@ -69,6 +69,8 @@ (search-pnmtopng) tmp2-name))) + (close-port port-tmp1) + (close-port port-tmp2) (ly:debug (_ "Copying `~a' to `~a'...") file tmp1-name) (copy-binary-file file tmp1-name) (ly:system-with-shell cmd) diff --git a/scripts/midi2ly.py b/scripts/midi2ly.py index 5358fc4698..3a29f9aaa1 100644 --- a/scripts/midi2ly.py +++ b/scripts/midi2ly.py @@ -267,11 +267,13 @@ class Note: elif commas < 0: s = s + "," * -commas - if ((dump_dur - and self.duration.compare (reference_note.duration)) - or global_options.explicit_durations): + if (dump_dur + and (self.duration.compare (reference_note.duration) + or global_options.explicit_durations)): s = s + self.duration.dump () + # Chords need to handle their reference duration themselves + reference_note = self # TODO: move space @@ -653,13 +655,17 @@ def dump_chord (ch): s = s + dump (notes[0]) elif len (notes) > 1: global reference_note + reference_dur = reference_note.duration s = s + '<' s = s + notes[0].dump (dump_dur=False) r = reference_note for i in notes[1:]: s = s + i.dump (dump_dur=False) s = s + '>' - s = s + notes[0].duration.dump () + ' ' + if (r.duration.compare (reference_dur) + or global_options.explicit_durations): + s = s + r.duration.dump () + s = s + ' ' reference_note = r return s diff --git a/tex/texinfo.tex b/tex/texinfo.tex index d7e6b1f6b8..79bc925655 100644 --- a/tex/texinfo.tex +++ b/tex/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2016-05-26.20} +\def\texinfoversion{2016-07-20.14} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, @@ -1192,6 +1192,7 @@ where each line of input produces a line of output.} \ifx\pdfescapestring\thisisundefined % No primitive available; should we give a warning or log? % Many times it won't matter. + \xdef#1{#1}% \else % The expandable \pdfescapestring primitive escapes parentheses, % backslashes, and other special chars. @@ -1311,8 +1312,10 @@ output) for that.)} % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts - \turnoffactive \makevalueexpandable + \turnoffactive + % Use ASCII approximations in destination names. + \passthroughcharsfalse \def\pdfdestname{#1}% \txiescapepdf\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% @@ -1357,8 +1360,21 @@ output) for that.)} \fi % % Also escape PDF chars in the display string. - \edef\pdfoutlinetext{#1}% - \txiescapepdf\pdfoutlinetext + \bgroup + \ifx \declaredencoding \latone + % The PDF format can use an extended form of Latin-1 in bookmark + % strings. See Appendix D of the PDF Reference, Sixth Edition, for + % the "PDFDocEncoding". + \passthroughcharstrue + \fi + \ifx \declaredencoding \utfeight + % TODO: the PDF format can use UTF-16 in bookmark strings, but the + % code for this isn't done yet. + \fi + \globaldefs=1 + \edef\pdfoutlinetext{#1}% + \txiescapepdf\pdfoutlinetext + \egroup % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } @@ -1525,11 +1541,21 @@ output) for that.)} % % XeTeX version check % - \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99995}>-1 + \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1 + % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307. + % It can be used `dvipdfmx:config' special (from TeX Live SVN r40941). + % For avoiding PDF destination name replacement, we use the special + % instead of xdvipdfmx commandline option `-C 0x0010'. + \special{dvipdfmx:config C 0x0010} % XeTeX 0.99995+ contains xdvipdfmx 20160307+. % It can handle Unicode destination name for PDF. \txiuseunicodedestnametrue \else + % XeTeX < 0.99996 (TeX Live < 2016) cannot be used + % `dvipdfmx:config' special. + % So for avoiding PDF destination name replacement, + % xdvipdfmx commandline option `-C 0x0010' is necessary. + % % XeTeX < 0.99995 can not handle Unicode destination name for PDF % because xdvipdfmx 20150315 has UTF-16 convert issue. % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). @@ -1540,7 +1566,7 @@ output) for that.)} % % Emulate the primitive of pdfTeX \def\pdfdest name#1 xyz{% - \special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos]}% + \special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos null]}% } \def\pdfmkdest#1{{% % We have to set dummies so commands such as @code, and characters @@ -3870,7 +3896,7 @@ end \message{tables,} -% Tables -- @table, @ftable, @vtable, @item(x). +% Tables -- @table, @ftable, @ktable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in @@ -3882,7 +3908,7 @@ end % used internally for \itemindent minus \itemmargin \newdimen\itemmax -% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% Note @table, @ftable, @ktable and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). @@ -3950,7 +3976,7 @@ end \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} -% @table, @ftable, @vtable. +% @table, @ftable, @ktable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% @@ -3959,6 +3985,10 @@ end \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } +\envdef\ktable{% + \def\itemindex ##1{\doind {ky}{\code{##1}}}% + \tablecheck{ktable}% +} \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \tablecheck{vtable}% @@ -4002,6 +4032,7 @@ end } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable +\let\Ektable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable @@ -4609,11 +4640,23 @@ end % Like \expandablevalue, but completely expandable (the \message in the % definition above operates at the execution level of TeX). Used when % writing to auxiliary files, due to the expansion that \write does. +% If flag is undefined, pass through an unexpanded @value command: maybe it +% will be set by the time it is read back in. % % NB flag names containing - or _ may not work here. \def\dummyvalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax - [No value for ``#1'']% + \noexpand\value{#1}% + \else + \csname SET#1\endcsname + \fi +} + +% Used for @value's in index entries to form the sort key: expand the @value +% if possible, otherwise sort late. +\def\indexnofontsvalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + ZZZZZZZ \else \csname SET#1\endcsname \fi @@ -4760,7 +4803,7 @@ end % Define \doindex, the driver for all index macros. % Argument #1 is generated by the calling \fooindex macro, -% and it the two-letter name of the index. +% and it is the two-letter name of the index. \def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} \def\doindexxxx #1{\doind{\indexname}{#1}} @@ -4769,6 +4812,7 @@ end \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} \def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} + % Used when writing an index entry out to an index file to prevent % expansion of Texinfo commands that can appear in an index entry. % @@ -4787,9 +4831,11 @@ end \def\}{{\tt\char125}}% % % Do the redefinitions. - \commondummies + \definedummies } +% Used for the aux and toc files, where @ is the escape character. +% % For the aux and toc files, @ is the escape character. So we want to % redefine everything using @ as the escape character (instead of % \realbackslash, still used for index files). When everything uses @, @@ -4802,30 +4848,35 @@ end \let\} = \rbraceatcmd % % Do the redefinitions. - \commondummies + \definedummies \otherbackslash } -% Called from \indexdummies and \atdummies. +% \definedummyword defines \#1 as \string\#1\space, thus effectively +% preventing its expansion. This is used only for control words, +% not control letters, because the \space would be incorrect for +% control characters, but is needed to separate the control word +% from whatever follows. % -\def\commondummies{% - % \definedummyword defines \#1 as \string\#1\space, thus effectively - % preventing its expansion. This is used only for control words, - % not control letters, because the \space would be incorrect for - % control characters, but is needed to separate the control word - % from whatever follows. - % - % For control letters, we have \definedummyletter, which omits the - % space. - % - % These can be used both for control words that take an argument and - % those that do not. If it is followed by {arg} in the input, then - % that will dutifully get written to the index (or wherever). - % - \def\definedummyword ##1{\def##1{\string##1\space}}% - \def\definedummyletter##1{\def##1{\string##1}}% - \let\definedummyaccent\definedummyletter +% These can be used both for control words that take an argument and +% those that do not. If it is followed by {arg} in the input, then +% that will dutifully get written to the index (or wherever). +% +% For control letters, we have \definedummyletter, which omits the +% space. +% +\def\definedummyword #1{\def#1{\string#1\space}}% +\def\definedummyletter#1{\def#1{\string#1}}% +\let\definedummyaccent\definedummyletter + +% Called from \indexdummies and \atdummies, to effectively prevent +% the expansion of commands. +% +\def\definedummies{% % + \let\commondummyword\definedummyword + \let\commondummyletter\definedummyletter + \let\commondummyaccent\definedummyaccent \commondummiesnofonts % \definedummyletter\_% @@ -4910,77 +4961,77 @@ end \normalturnoffactive } -% \commondummiesnofonts: common to \commondummies and \indexnofonts. -% Define \definedumyletter, \definedummyaccent and \definedummyword before -% using. +% \commondummiesnofonts: common to \definedummies and \indexnofonts. +% Define \commondummyletter, \commondummyaccent and \commondummyword before +% using. Used for accents, font commands, and various control letters. % \def\commondummiesnofonts{% % Control letters and accents. - \definedummyletter\!% - \definedummyaccent\"% - \definedummyaccent\'% - \definedummyletter\*% - \definedummyaccent\,% - \definedummyletter\.% - \definedummyletter\/% - \definedummyletter\:% - \definedummyaccent\=% - \definedummyletter\?% - \definedummyaccent\^% - \definedummyaccent\`% - \definedummyaccent\~% - \definedummyword\u - \definedummyword\v - \definedummyword\H - \definedummyword\dotaccent - \definedummyword\ogonek - \definedummyword\ringaccent - \definedummyword\tieaccent - \definedummyword\ubaraccent - \definedummyword\udotaccent - \definedummyword\dotless + \commondummyletter\!% + \commondummyaccent\"% + \commondummyaccent\'% + \commondummyletter\*% + \commondummyaccent\,% + \commondummyletter\.% + \commondummyletter\/% + \commondummyletter\:% + \commondummyaccent\=% + \commondummyletter\?% + \commondummyaccent\^% + \commondummyaccent\`% + \commondummyaccent\~% + \commondummyword\u + \commondummyword\v + \commondummyword\H + \commondummyword\dotaccent + \commondummyword\ogonek + \commondummyword\ringaccent + \commondummyword\tieaccent + \commondummyword\ubaraccent + \commondummyword\udotaccent + \commondummyword\dotless % % Texinfo font commands. - \definedummyword\b - \definedummyword\i - \definedummyword\r - \definedummyword\sansserif - \definedummyword\sc - \definedummyword\slanted - \definedummyword\t + \commondummyword\b + \commondummyword\i + \commondummyword\r + \commondummyword\sansserif + \commondummyword\sc + \commondummyword\slanted + \commondummyword\t % % Commands that take arguments. - \definedummyword\abbr - \definedummyword\acronym - \definedummyword\anchor - \definedummyword\cite - \definedummyword\code - \definedummyword\command - \definedummyword\dfn - \definedummyword\dmn - \definedummyword\email - \definedummyword\emph - \definedummyword\env - \definedummyword\file - \definedummyword\image - \definedummyword\indicateurl - \definedummyword\inforef - \definedummyword\kbd - \definedummyword\key - \definedummyword\math - \definedummyword\option - \definedummyword\pxref - \definedummyword\ref - \definedummyword\samp - \definedummyword\strong - \definedummyword\tie - \definedummyword\U - \definedummyword\uref - \definedummyword\url - \definedummyword\var - \definedummyword\verb - \definedummyword\w - \definedummyword\xref + \commondummyword\abbr + \commondummyword\acronym + \commondummyword\anchor + \commondummyword\cite + \commondummyword\code + \commondummyword\command + \commondummyword\dfn + \commondummyword\dmn + \commondummyword\email + \commondummyword\emph + \commondummyword\env + \commondummyword\file + \commondummyword\image + \commondummyword\indicateurl + \commondummyword\inforef + \commondummyword\kbd + \commondummyword\key + \commondummyword\math + \commondummyword\option + \commondummyword\pxref + \commondummyword\ref + \commondummyword\samp + \commondummyword\strong + \commondummyword\tie + \commondummyword\U + \commondummyword\uref + \commondummyword\url + \commondummyword\var + \commondummyword\verb + \commondummyword\w + \commondummyword\xref } % For testing: output @{ and @} in index sort strings as \{ and \}. @@ -5036,11 +5087,11 @@ end % \def\indexnofonts{% % Accent commands should become @asis. - \def\definedummyaccent##1{\let##1\asis}% + \def\commondummyaccent##1{\let##1\asis}% % We can just ignore other control letters. - \def\definedummyletter##1{\let##1\empty}% + \def\commondummyletter##1{\let##1\empty}% % All control words become @asis by default; overrides below. - \let\definedummyword\definedummyaccent + \let\commondummyword\commondummyaccent \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command @@ -5125,8 +5176,11 @@ end % goes to end-of-line is not handled. % \macrolist + \let\value\indexnofontsvalue } + + \let\SETmarginindex=\relax % put index entries in margin (undocumented)? @@ -5925,18 +5979,32 @@ end \global\advance\dimen@ by 1pt \repeat }% - \multiply\dimen@ii by 4 - \divide\dimen@ii by 5 - \ifdim\ht3<\dimen@ii - % Column heights are too different, so don't make their bottoms - % flush with each other. The glue at the end of the second column - % allows a second column to stretch, reducing the difference in - % height between the two. - \setbox0=\vbox to\dimen@{\unvbox1\vfill}% - \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% + \ifdim2\ht1>\vsize + % The left column has come out longer than the page itself. (Note + % that we have doubled \vsize for the double columns, so + % the actual height of the page is 0.5\vsize). Just split the last + % of the double column material roughly in half. + \setbox2=\box0 + \setbox0 = \vsplit2 to \dimen@ii + \setbox0=\vbox to\dimen@ii{\unvbox0}% + \setbox2=\vbox to\dimen@ii{\unvbox2}% \else - \setbox0=\vbox to\dimen@{\unvbox1}% - \setbox2=\vbox to\dimen@{\unvbox3}% + \multiply\dimen@ii by 5 + \divide\dimen@ii by 4 + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ii + \global\setbox\balancedcolumns=\vbox{\pagesofar}% + \ifdim\ht3<\dimen@ii + % Column heights are too different, so don't make their bottoms + % flush with each other. The glue at the end of the second column + % allows a second column to stretch, reducing the difference in + % height between the two. + \setbox0=\vbox to\dimen@{\unvbox1\vfill}% + \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% + \else + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + \fi \fi \fi % @@ -7985,7 +8053,7 @@ end \newif\ifrecursive % Is it recursive? % List of all defined macros in the form -% \definedummyword\macro1\definedummyword\macro2... +% \commondummyword\macro1\commondummyword\macro2... % Currently is also contains all @aliases; the list can be split % if there is a need. \def\macrolist{} @@ -7993,7 +8061,7 @@ end % Add the macro to \macrolist \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} \def\addtomacrolistxxx#1{% - \toks0 = \expandafter{\macrolist\definedummyword#1}% + \toks0 = \expandafter{\macrolist\commondummyword#1}% \xdef\macrolist{\the\toks0}% } @@ -8134,7 +8202,7 @@ end % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax - \let\definedummyword\unmacrodo + \let\commondummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else @@ -8149,7 +8217,7 @@ end \ifx #1\relax % remove this \else - \noexpand\definedummyword \noexpand#1% + \noexpand\commondummyword \noexpand#1% \fi } @@ -8424,8 +8492,7 @@ end % its parameters, looking like "\xeatspaces{\hash 1}". % \paramno is the number of parameters % \paramlist is a TeX parameter text, e.g. "#1,#2,#3," -% There are eight cases: recursive and nonrecursive macros of zero, one, -% up to nine, and many arguments. +% There are four cases: macros of zero, one, up to nine, and many arguments. % \xdef is used so that macro definitions will survive the file % they're defined in: @include reads the file inside a group. % @@ -8440,91 +8507,48 @@ end \else \let\xeatspaces\relax % suppress expansion \fi - \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\macrobody}}% - \or % 1 + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\scanmacro{\macrobody}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \egroup + \noexpand\scanmacro{\macrobody}% + }% + \else % at most 9 + \ifnum\paramno<10\relax + % @MACNAME sets the context for reading the macro argument + % @MACNAME@@ gets the argument, processes backslashes and appends a + % comma. + % @MACNAME@@@ removes braces surrounding the argument list. + % @MACNAME@@@@ scans the macro body with arguments substituted. \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \bgroup + \noexpand\expandafter % This \expandafter skip any spaces after the + \noexpand\macroargctxt % macro before we change the catcode of space. + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% \expandafter\xdef\csname\the\macname @@@\endcsname##1{% - \egroup - \noexpand\scanmacro{\macrobody}% - }% - \else - \ifnum\paramno<10\relax % at most 9 - % See non-recursive section below for comments - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup - \noexpand\expandafter - \noexpand\macroargctxt - \noexpand\expandafter - \expandafter\noexpand\csname\the\macname @@\endcsname}% - \expandafter\xdef\csname\the\macname @@\endcsname##1{% - \noexpand\passargtomacro - \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% - \expandafter\xdef\csname\the\macname @@@\endcsname##1{% - \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname @@@@\endcsname\paramlist{% - \egroup\noexpand\scanmacro{\macrobody}}% - \else % 10 or more - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\getargvals@{\the\macname}{\argl}% - }% - \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody - \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble - \fi - \fi - \else %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%% - \ifcase\paramno - % 0 + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname @@@@\endcsname\paramlist{% + \egroup\noexpand\scanmacro{\macrobody}}% + \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\macrobody}}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname @@@\endcsname}% - \expandafter\xdef\csname\the\macname @@@\endcsname##1{% - \egroup - \noexpand\scanmacro{\macrobody}% - }% - \else % at most 9 - \ifnum\paramno<10\relax - % @MACNAME sets the context for reading the macro argument - % @MACNAME@@ gets the argument, processes backslashes and appends a - % comma. - % @MACNAME@@@ removes braces surrounding the argument list. - % @MACNAME@@@@ scans the macro body with arguments substituted. - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup - \noexpand\expandafter % This \expandafter skip any spaces after the - \noexpand\macroargctxt % macro before we change the catcode of space. - \noexpand\expandafter - \expandafter\noexpand\csname\the\macname @@\endcsname}% - \expandafter\xdef\csname\the\macname @@\endcsname##1{% - \noexpand\passargtomacro - \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% - \expandafter\xdef\csname\the\macname @@@\endcsname##1{% - \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname @@@@\endcsname\paramlist{% - \egroup\noexpand\scanmacro{\macrobody}}% - \else % 10 or more: - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\getargvals@{\the\macname}{\argl}% - }% - \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody - \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse - \fi + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi} @@ -8871,6 +8895,9 @@ end % In this case, the replaced destination names of % remote PDF cannot be known. In order to avoid replacement, % you can use commandline option `-C 0x0010' for xdvipdfmx. + % If you use XeTeX 0.99996+ (TeX Live 2016+), + % the commandline option is not neccesary + % because we can use `dvipdfmx:config' special. \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A << /S /GoToR /F (\the\filename.pdf) /D (name\pdfxrefdest) >> >>}% \else @@ -10227,7 +10254,7 @@ directory should work if nowhere else does.} \countUTFx = "80 \countUTFy = "C2 \def\UTFviiiTmp{% - \gdef~{ + \gdef~{% \ifpassthroughchars $\fi}}% \UTFviiiLoop @@ -10278,6 +10305,15 @@ directory should work if nowhere else does.} \fi } +% These macros are used here to construct the name of a control +% sequence to be defined. +\def\UTFviiiTwoOctetsName#1#2{% + \csname u8:#1\string #2\endcsname}% +\def\UTFviiiThreeOctetsName#1#2#3{% + \csname u8:#1\string #2\string #3\endcsname}% +\def\UTFviiiFourOctetsName#1#2#3#4{% + \csname u8:#1\string #2\string #3\string #4\endcsname}% + % For UTF-8 byte sequence (TeX, e-TeX and pdfTeX) % Definition macro to replace the Unicode character % Definition macro that is used by @U command @@ -10294,17 +10330,18 @@ directory should work if nowhere else does.} \countUTFz = "#1\relax \begingroup \parseXMLCharref + + % Give \u8:... its definition. The sequence of seven \expandafter's + % expands after the \gdef three times, e.g. % - % Access definitions of characters given UTF-8 sequences - \def\UTFviiiTwoOctets##1##2{% - \csname u8:##1\string ##2\endcsname}% - \def\UTFviiiThreeOctets##1##2##3{% - \csname u8:##1\string ##2\string ##3\endcsname}% - \def\UTFviiiFourOctets##1##2##3##4{% - \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% - \expandafter\expandafter\expandafter\expandafter - \expandafter\expandafter\expandafter - \gdef\UTFviiiTmp{#2}% + % 1. \UTFviiTwoOctetsName B1 B2 + % 2. \csname u8:B1 \string B2 \endcsname + % 3. \u8: B1 B2 (a single control sequence token) + % + \expandafter\expandafter + \expandafter\expandafter + \expandafter\expandafter + \expandafter\gdef \UTFviiiTmp{#2}% % \expandafter\ifx\csname uni:#1\endcsname \relax \else \message{Internal error, already defined: #1}% @@ -10314,37 +10351,53 @@ directory should work if nowhere else does.} \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp \endgroup} % - % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp. + % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp + % to the corresponding UTF-8 sequence. \gdef\parseXMLCharref{% \ifnum\countUTFz < "A0\relax \errhelp = \EMsimple \errmessage{Cannot define Unicode char value < 00A0}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% - \parseUTFviiiB C\UTFviiiTwoOctets.,% + \parseUTFviiiB C\UTFviiiTwoOctetsName.,% \else\ifnum\countUTFz < "10000\relax \parseUTFviiiA;% \parseUTFviiiA,% - \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% + \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}% \else \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiA!% - \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% + \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}% \fi\fi\fi } + % Extract a byte from the end of the UTF-8 representation of \countUTFx. + % It must be a non-initial byte in the sequence. + % Change \uccode of #1 for it to be used in \parseUTFviiiB as one + % of the bytes. \gdef\parseUTFviiiA#1{% \countUTFx = \countUTFz \divide\countUTFz by 64 - \countUTFy = \countUTFz + \countUTFy = \countUTFz % Save to be the future value of \countUTFz. \multiply\countUTFz by 64 + + % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract + % in order to get the last five bits. \advance\countUTFx by -\countUTFz + + % Convert this to the byte in the UTF-8 sequence. \advance\countUTFx by 128 \uccode `#1\countUTFx \countUTFz = \countUTFy} - % Used to set \UTFviiiTmp to a UTF-8 byte sequence + % Used to put a UTF-8 byte sequence into \UTFviiiTmp + % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8 + % sequence. + % #2 is one of the \UTFviii*OctetsName macros. + % #3 is always a full stop (.) + % #4 is a template for the other bytes in the sequence. The values for these + % bytes is substituted in here with \uppercase using the \uccode's. \gdef\parseUTFviiiB#1#2#3#4{% \advance\countUTFz by "#10\relax \uccode `#3\countUTFz