@end ignore
+@item
+A minimal composer toolkit of modal transformations is provided.
+A motif may be @notation{transposed}, @notation{inverted} and/or
+converted to its @notation{retrograde} within any scale.
+
+@lilypond
+pentatonicScale = \relative a' { a c d f g }
+motif = \relative c'' { d8 c f,4 <a f'> <a f'> }
+
+\new Staff <<
+ {
+ \partial 4
+ \pentatonicScale
+ \motif
+ \modalTranspose c a, \pentatonicScale \motif
+ \modalInversion d'' a' \pentatonicScale \motif
+ \retrograde \motif
+ }
+ {
+ \partial 4
+ s4^"pentatonic scale"
+ s1
+ s1^"motif"
+ s1^"transposition"
+ s1^"inversion"
+ s1^"retrograde"
+ }
+>>
+@end lilypond
+
@item
Black mensural notation has minimal support.
that new contributors often get stuck with something that could be
solved/explained with 2 or 3 sentences from a mentor.
+@item
+If you have been working on a task much longer than was originally
+estimated, stop and ask your mentor. There may have been a
+miscommunication, or there may be some time-saving tips that could
+vastly simply your task.
+
@item
Send patches to your mentor for initial comments.
* Bug Squad checklists::
* Issue classification::
* Adding issues to the tracker::
+* Patch handling::
* Summary of project status::
@end menu
@item
Issues to verify: try to reproduce the bug with the latest
-version; if you cannot reproduce the bug, mark the item
-@qq{Verified} (i.e. @qq{the fix has been verified to work}).
+official GUB version; if you cannot reproduce the bug, mark the
+item @qq{Verified} (i.e. @qq{the fix has been verified to work}).
@example
@uref{http://code.google.com/p/lilypond/issues/list?can=7}
for you to verify these. Leave those issues alone; somebody else
will handle them.
-@end itemize
-
-
-@ignore
-@c try omitting from daily tasks for now. -gp
-
-Once every @strong{two weeks} or so:
-
-@itemize
-
@item
Check for any incorrectly-classified items in the tracker. This
generally just means looking at the grid to see any items without
a Type or Priority.
-@item
-Check for any items with @code{label:patch}. If it's been more
-than a week since the last action on the issue, send an email to
--devel to remind them about it. If the patch was withdrawn for
-more work, then remove the @code{patch} label.
-
-@example
-@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:patch}
-@end example
-
@end itemize
+@ignore
+@c try omitting from daily tasks for now. -gp
+
@subheading Irregular maintenance
@warning{These tasks are a lot of work; gathering more volunteers
@subheading Patch (optional)
+Normal Bug Squad members should not add or modify Patch issues;
+leave them to the Patch Meister.
+
@itemize
@item
In order to assign labels to issues, Bug Squad members should log
in to their google account before adding an item.
-@subsubheading Normal issues
-
@enumerate
@item
@end enumerate
-@subsubheading Patch reminders
+
+@node Patch handling
+@section Patch handling
@warning{This is not a Bug Squad responsibility; we have a
separate person handling this task.}
-There is a special category of issues: reminders of an existing
-patch. These should be added if a patch has been sent to a
-lilypond mailing list (generally @code{lilypond-devel}, but they
-sometimes appear on @code{bug-lilypond} as well) and has had no
-discussion for at least @strong{3 days}. Do not add issues for
-patches under active discussion.
+There is a single Patch Meister, and a number of Patch Helpers
+(rename this?). The list of known patches awaiting review is:
+
+@example
+@uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:patch&sort=patch}
+@end example
+
+
+@subheading Helpers: adding patches
+
+The primary duty is to add patches to the google tracker; we have
+a bad track record of losing patches in email. Patches generally
+come to the @code{lilypond-devel} mailing list, but are sometimes
+sent to @code{bug-lilypond}, @code{lilypond-users}, or
+@code{frogs} mailing list instead.
+
+@itemize
+@item
+Unless a patch is clearly in response to an existing issue, add a
+new issue with the @code{Patch-new} label and a link to the patch
+(either on the mailing list archives or the codereview url).
+Issue numbers are cheap; losing developers because they got fed up
+with us losing their hard work is expensive.
+
+@c if we enter patches immediately, I don't think this is relevant.
+@ignore
+@item
Before adding a patch-reminder issue, do a quick check to see if
it was pushed without sending any email. This can be checked for
searching for relevant terms (from the patch subject or commit
@example
@uref{http://git.savannah.gnu.org/gitweb/?p=lilypond.git}
@end example
+@end ignore
+@item
+If the patch is clearly in response to an existing issue, then
+update that issue with the @code{Patch-new} label and a link to
+the patch (either on the mailing list archives or the codereview
+url).
+
+@item
After adding the issue, please send a response email to the same
-group(s) that the initial patch was sent to. If the initial email
-was sent to multiple mailing lists (such as both @code{bugs} and
-@code{devel}), then reply to all those mailing lists as well. The
-email should contain a link to the issue you just added.
+group(s) that the initial patch was sent to.
+
+If the initial email was sent to multiple mailing lists (such as
+both @code{bugs} and @code{devel}), then reply to all those
+mailing lists as well. The email should contain a link to the
+issue you just added.
+
+@end itemize
+
+@subheading Helpers: @code{Patch-review} label
+
+The secondary duty is to do make sure that every issue in the
+tracker with a @code{Patch-review} label has passed these
+@qq{obvious} tests:
+
+@itemize
+@item
+Applies automatically to git master.
+
+It's ok to have offsets, but not conflicts.
+
+@item
+Regtest comparison looks ok; no unexpected changes.
+
+@item
+Descriptive subject line.
+
+Avoid subjects like @qq{fixes 123}; instead write @qq{Doc: discuss
+stacking-dir for BassFigureAlignment (fix 123)}.
+
+@item
+Compiles docs from scratch. Only check this if you have reason to
+suspect it might not work.
+
+@item
+(maybe)
+
+Check code indentation and style. This should be easier post-GOP
+when we have a better-defined code style.
+
+@end itemize
+
+
+@subheading Patch Meister
+
+The Patch Meister will:
+
+@itemize
+
+@item
+send @qq{countdown} emails to
+@code{lilypond-devel} when patches appear to be ready.
+
+@item
+send general requests to review patches, or even nasty requests to
+review patches.
+
+@item
+downgrade patches from @code{Patch-review} to
+@code{Patch-needs_work} as appropriate.
+
+@item
+downgrade patches from @code{Patch-needs_work} to
+@code{Patch-abandoned} if no actions have been taken in four
+weeks.
+
+@end itemize
+
+
@node Summary of project status
% author =Alyssa Lamb (edited & converted to bibtex by HWN)
%
-@Book {jacob47:_music,
+@Book{jacob47,
author = {Jacob, Archibald},
year = 1947,
title = {Musical handwriting : or, How to put music on paper : A handbook for all musicians, professional and amateur},
note = {subject: Musical notation},
}
-@Book{brandt:_stand_chord_symbol_notat,
+@Book{brandt,
author = {Carl Brandt and Clinton Roemer},
title = {Standardized Chord Symbol Notation},
address = {Sherman Oaks, CA},
note = {subject: musical notation},
}
-@Book{johnson46:_how,
+@Book{johnson46,
author = {Johnson, Harold M},
year = 1946,
title = {How to write music manuscript an exercise-method handbook for the music student, copyist, arranger, composer, teacher},
note = {subject: Musical notation --Handbooks, manuals},
}
-@Book{sadie90:_music_print_publis,
+@Book{sadie90,
title = {Music Printing & Publishing},
author = {Donald W. Krummel \& Stanley Sadie},
year = 1990,
note = {subject: musical notation},
}
-@Book{foss:_music_print,
+@Book{foss,
author = {Foss, Hubert},
title = {Music Printing},
series = {Practical Printing and Binding},
note = {subject: musical notation},
}
-@Book{steele03:_earlies_englis_music_print,
+@Book{steele03,
author = {Steele, Robert},
year = 1903,
title = {The Earliest English Music Printing},
note = {subject: history of music printing and engraving},
}
-@Book{austin:_story_music_print,
+@Book{austin,
author = {Austin, Ernest},
title = {The Story of Music Printing},
address = {London},
note = {subject: history of music printing and engraving},
}
-@Book{unknown_author:_pictor_histor_music_print,
+@Book{unknown_author,
author = {unknown author},
title = {Pictorial History of Music Printing},
address = {Elhardt, Indiana},
note = {subject: history of music printing and engraving},
}
-@Book{wintermitz55:_music_autog_montev_hindem,
+@Book{wintermitz55,
author = {Wintermitz, Emmanuel},
year = 1955,
title = {Musical Autographs from Monteverdi to Hindemith},
note = {subject: history of music printing and engraving},
}
-@Book{novello47:_some_accoun_method_music_print,
+@Book{novello47,
author = {Novello, A},
year = 1847,
note = {subject: history of music printing and engraving},
}
-@Book{chrsander18:_sketc_histor_music,
+@Book{chrsander18,
author = {Chrsander, F.},
year = {18??},
title = {A Sketch of the HIstory of Music printing, from the 15th to the 16th century},
note = {subject: history of music printing and engraving},
}
-@Article {squire1897,
+@Article{squire1897,
author = {Squire, W},
year = 1897,
title = {Notes on Early Music Printing},
note = {subject: history of music printing and engraving},
}
-@Article{meyer35:_print_music,
+@Article{meyer35,
author = {Meyer, K. and O'Meara, J},
year = 1935,
title = {The Printing of Music, 1473-1934},
}
% 4th ver.,
-@Article{pattison39:_notes_early_music_print,
+@Article{pattison39,
author = {Pattison, B},
year = 1939,
title = {Notes on Early Music Printing},
pages = {389-421},
}
-@Book{king64:_four_hundr_years_music_print,
+@Book{king64,
author = {King, H},
year = 1964,
title = {Four Hundred Years of Music Printing},
}
%(Rev.1961).
-@Book{deutsch46:_music_number,
+@Book{deutsch46,
author = {Deutsch, O.F.},
year = 1946,
title = {Music Publishers' Numbers},
note = {subject: history of music printing and engraving},
}
-@Book{marco62:_earlies_music_print_contin_europ,
+@Book{marco62,
author = {Marco, G.A},
year = 1962,
title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work},
note = {subject: history of music printing and engraving},
}
-@Article{kinkeldey32:_music_and_music_print_incun,
+@Article{kinkeldey32,
author = {Kinkeldey, O},
year = 1932,
title = {Music And Music Printing in Incunabula},
note = {subject: history of music printing and engraving},
}
-@Book{oldman34:_collec_music_first_edition,
+@Book{oldman34,
author = {Oldman, C.B},
year = 1934,
title = {Collecting Musical First Editions},
note = {subject: history of music printing and engraving},
}
-@Book{carter34:_new_paths_book_collec,
+@Book{carter34,
author = {Carter, J},
year = 1934,
title = {New Paths in Book Collecting},
note = {subject: history of music printing and engraving},
}
-@Book{krummel58:_graph_analy_applic_early_americ_engrav_music,
+@Book{krummel58,
author = {Krummel, D.W.},
year = 1958,
month = 9,
note = {subject: history of music printing and engraving},
}
-@Book{krummel71:_oblon_format_early_music_books,
+@Book{krummel71,
author = {Krummel, D.W},
year = 1971,
title = {Oblong Format in Early Music Books},
note = {subject: history of music printing and engraving},
}
-@Book{king73:_anniv_music_print,
+@Book{king73,
author = {King, A.H},
year = 1973,
title = {The 50th Anniversary of Music Printing},
}
-@Book{rastall82:_wester,
+@Book{rastall82,
author = {Rastall, Richard},
year = 1982,
title = {The notation of Western music : an introduction},
note = {Musical notation},
}
-@Book{tappolet47:_la_notat_music,
+@Book{tappolet47,
author = {Tappolet, Willy},
year = 1947,
title = {La Notation Musicale},
publisher = {Neuchâtel},
}
-@Book{williams03:_story_notat,
+@Book{williams03,
author = {Williams, C.F. Abdy},
year = 1903,
title = {The Story of Notation},
note = {Musical notation},
}
-@Book{berger93:_mensur,
+@Book{berger93,
author = {Berger, Anna Maria Busse},
year = 1993,
title = {Mensuration and proportion signs : origins and evolution},
note = {Musical notation},
}
-@Book{parrish46:_notat_mediev_music,
+@Book{parrish46,
author = {Parrish, Carl},
year = 1946,
title = {The Notation of Medieval Music},
note = {subject: early notation},
}
-@Book{patch49:_genes_music,
+@Book{patch49,
author = {Patch, Harry},
year = 1949,
title = {Genesis of a Music},
note = {subject: early notation},
}
-@Book{cage69:_notat,
+@Book{cage69,
author = {Cage, John},
year = 1969,
title = {Notations},
chance operations.,V)},
}
-@Book{gaburo77:_notat,
+@Book{gaburo77,
author = {Gaburo, Virginia},
year = 1977,
title = {Notation},
note = {A Lecture about notation, new ideas about},
}
-@Book{risatti75:_new_music_vocab,
+@Book{risatti75,
author = {Risatti, Howard},
year = 1975,
title = {New Music Vocabulary},
note = {A Guide to Notational Signs for Contemporary Music},
}
-@Book{cowell30:_new_music_resour,
+@Book{cowell30,
author = {Cowell, Henry},
year = 1930,
title = {New Musical Resources},
note = {subject: 20th century notation},
}
-@Article{cowell27:_our_inadeq_notat,
+@Article{cowell27,
author = {Cowell, Henry},
year = 1927,
title = {Our Inadequate Notation},
note = {subject: 20th century notation},
}
-@Book{bowers92:_music_letter,
+@Book{bowers92,
author = {Bowers, Roger},
year = 1992,
title = {Music & Letters},
note = {Some reflection upon notation and proportion in Monteverdi's mass and vespers},
}
-@Book{brainard92:_curren_music,
+@Book{brainard92,
author = {Brainard, Paul},
year = 1992,
title = {Current Musicology},
note = {Proportional notation in the music of Schutz and his contemporaries in the 17th Century},
}
-@Book{monelle89:_compar_liter,
+@Book{monelle89,
author = {Monelle, Raymond},
year = 1989,
title = {Comparative Literature},
note = {Music notation and the poetic foot},
}
-@Book{pinegar93:_curren_music,
+@Book{pinegar93,
author = {Pinegar, Sandra},
year = 1993,
title = {Current Musicology},
note = {The seeds of notation and music paleography.},
}
-@Book{smith90:_curren_music,
+@Book{smith90,
author = {Smith, Norman E},
year = 1990,
title = {Current Musicology},
note = {The notation of fractio modi.},
}
-@Book{treitler92:_journ_music,
+@Book{treitler92,
author = {Treitler, Leo},
year = 1992,
title = {The Journal of Musicology},
Notational practice developed in medieval music to address the written tradition for chant which interacted with the unwritten vocal tradition.},
}
-@Book{west94:_music_letter,
+@Book{west94,
author = {West, M.L},
year = 1994,
title = {Music & Letters},
A new way of deciphering the ancient Babylonian musical notation.}
}
-@Book{brown86:_music_quart,
+@Book{brown86,
author = {Brown, Earle},
year = 1986,
title = {Musical Quarterly},
note = {The notation and performance of new music.},
}
-@Book{eggleston94:_notes,
+@Book{eggleston94,
author = {Eggleston, Suzanne},
year = 1994,
title = {Notes},
contents of each listed periodical. Includes Music Notation News},
}
-@Book{fuller89:_journ_music,
+@Book{fuller89,
author = {Fuller, David},
year = 1989,
title = {The Journal of Musicology},
note = {Notes and inegales unjoined: defending a definition. (written-out inequalities in music notation).}
},
-@Book{jones90:_persp_new_music,
+@Book{jones90,
author = {Jones, David Evan},
year = 1990,
title = {Perspectives of New Music},
note = {Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan)},
}
-@Book{rastall93:_music_letter,
+@Book{rastall93,
author = {Rastall, Richard},
year = 1993,
title = {Music & Letters},
Refor by the Chroma Foundation (book reviews).},
}
-@Article {Francois92,
+@Article{francois92,
author = {Francois, Jean-Charles},
journal = {Perspectives of New Music},
volume = {30},
@String{CitH = {Computing and the Humanities}}
@String{CMJ = {Computer Music Journal}}
-@Book {smith73,
+@Book{smith73,
year = {1973},
title = {Editing and Printing Music by Computer},
author = {Leland Smith},
music-printing system SCORE}
}
-@Article {byrd74,
+@Article{byrd74,
year = {1974},
title = {A System for Music Printing by Computer},
author = {Donald Byrd},
}
% Gomberg
-@PhdThesis {gomber75,
+@PhdThesis{gomberg75,
year = {1975},
title = {A Computer-Oriented System for Music Printing},
author = {David A. Gomberg},
school = {Washington University},
}
-@Book {gomberg,
+@Book{gomberg77,
title = {A Computer-oriented System for Music Printing},
author = {David A. Gomberg},
journal = CitH,
computer algorithms."}
}
-@TechReport{Ornstein83,
+@TechReport{ornstein83,
author = {Ornstein, Severo M. and John Turner Maxwell III},
title = {Mockingbird: A Composer's Amanuensis},
institution = {Xerox Palo Alto Research Center},
year = {1983}
}
-@Article{Ornstein84,
+@Article{ornstein84,
author = {Ornstein, Severo M. and John Turner Maxwell III},
title = {Mockingbird: A Composer's Amanuensis},
journal = {Byte},
}
% byrd
-@PhdThesis {byrd85,
+@PhdThesis{byrd85,
year = {1985},
title = {Music Notation by Computer},
author = {Donald Byrd},
editors = {Genevois \& Orlarey}
}
-@Book {CASR,
+@Book{casr,
note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP},
title = {Directory of Computer Assisted Research in Musicology},
author = {Walter B Hewlett and Eleanor Selfridge-Field},
totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities},
}
-@Book{selfridge-field97:_beyon_midi,
+@Book{selfridge-field97,
title = {Beyond MIDI: the handbook of musical codes},
editor = {Eleanor Selfridge-Field},
publisher = {MIT Press},
note = {A description of various music interchange formats.}
}
-@InProceedings{hoos98:_guido_music_notat_format,
- title = {The {GUIDO} Music Notation Format---A Novel Approach
+@InProceedings{hoos98,
+ title = {The GUIDO Music Notation Format---A Novel Approach
for Adequately Representing Score-level Music},
author = {H. H. Hoos and K. A. Hamel and K. Renz and J. Kilian},
booktitle = {Proceedings of International Computer Music Conference},
pages = {451--454},
}
-@Article {blostein91,
+@Article{blostein91,
note = {This paper provides a overview of the algorithm used in LIME
for spacing individual lines. HWN},
year = {1991},
pages = {88-99},
}
-@Article {haken93,
+@Article{haken93,
year = {1993},
title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor},
author = {Lippold Haken and Dorothea Blostein},
adjacent columns.},
}
-@InProceedings{bouzaiene98:_une,
+@InProceedings{bouzaiene98,
author = {Nabil Bouzaiene and Loïc Le Gall and Emmanuel Saint-James},
title = {Une bibliothèque pour la notation musicale baroque},
booktitle = {EP '98},
%
% MusiCopy
%
-@TechReport {gourlay87-spacing,
+@TechReport{gourlay87-spacing,
annote = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it.},
year = {1987},
title = {Spacing a Line of Music,},
institution = {Department of Computer and Information Science, The Ohio State University},
}
-@TechReport {parish87,
- annote = {A brief overview of {MusiCopy}},
+@TechReport{parish87,
+ annote = {A brief overview of MusiCopy},
year = {1987},
- title = {{MusiCopy}: An automated Music Formatting System},
+ title = {MusiCopy: An automated Music Formatting System},
author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola},
totalentry = {OSU-CISRC-10/87-TR29},
institution = {Department of Computer and Information Science, The Ohio State University},
}
-@TechReport {gourlay87-formatting,
+@TechReport{gourlay87-formatting,
note = {This paper discusses the development of algorithms for the
formatting of musical scores (from abstract). It also appeared at
PROTEXT III, Ireland 1986},
The Ohio State University},
}
-@TechReport {hegazy87,
+@TechReport{hegazy87,
year = {1987},
- title = {On the Implementation of the {MusiCopy} Language Processor,},
+ title = {On the Implementation of the MusiCopy Language Processor,},
author = {Wael A. Hegazy},
number = {OSU-CISRC-10/87-TR34},
institution= {Department of Computer and Information Science, The Ohio State University},
objects.},
}
-@TechReport {hegazy87-breaking-tr,
+@TechReport{hegazy87-breaking-tr,
annote = {This generalizes \TeX's breaking algorithm to music. It also
appeared in Document Manipulation and Typography, J.C. van Vliet (ed)
1988},
institution= {Department of Computer and Information Science, The Ohio State University,},
}
-@InProceedings{hegazy88:_optim,
+@InProceedings{hegazy88,
author = {Wael A. Hegazy and John S. Gourlay},
booktitle = {Proceedings of the International Conference on
Electronic Publishing, Document Manipulation and Typography. Nice (France)},
title = {Optimal line breaking in music},
}
-@TechReport {roush87,
+@TechReport{roush87,
note = {User manual of MusiCopy.},
year = {1987},
- title = {Using {MusiCopy}},
+ title = {Using MusiCopy},
author = {Dean K. Roush},
number = {OSU-CISRC-18/87-TR31},
institution= {Department of Computer and Information Science, The Ohio State University},
}
-@TechReport {parrish87-simultaneities,
+@TechReport{parrish87-simultaneities,
note = {This note discusses
placement of balls, stems, dots which occur at the same moment
("Simultaneity")},
number = {OSU-CISRC-10/87-TR28},
}
-@TechReport {sola87,
+@TechReport{sola87,
note = {Overview of a procedure for generating slurs},
year = {1987},
title = {Computer Design of Musical Slurs, Ties and Phrase Marks,},
number = {OSU-CISRC-10/87-TR32},
}
-@Article {gourlay86,
+@Article{gourlay86,
note = {This paper describes the MusiCopy musicsetting system and an input language to go with it.},
year = {1986},
title = {A language for music printing},
pages = {388--401},
}
-@TechReport {sola87-beams,
+@TechReport{sola87-beams,
institution= {Department of Computer and Information Science, The Ohio
State University},
note = {Calculating beam slopes HWN},
number = {OSU-CISRC-10/87-TR30},
}
-@PhdThesis {page88,
+@PhdThesis{page88,
note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP},
year = {1988},
title = {Computer Tools for Music Information Retrieval},
rules. Same remarks as for [grover89-twovoices] applies},
}
-@PhdThesis{mueller90:_inter_bearb_musik,
+@PhdThesis{mueller90,
author = {Giovanni Müller},
title = {Interaktive Bearbeitung konventioneller Musiknotation},
- school = {Eidgenössischen Technischen Hochschule Zürich},
+ school = {Eidgenössische Technische Hochschule Zürich},
year = 1990,
note = {This is about engraver-quality typesetting with computers. It
accepts the axiom that notation is too difficult to generate
translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.},
}
-@Article {filgueiras93,
+@Article{filgueiras93,
year = {1993},
title = {Representation and manipulation of music documents in SceX},
author = {Miguel Filgueiras and José Paulo Leal},
url= {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1480},
}
-@Article {foxley87,
+@Article{foxley87,
note = {A paper on a simple TROFF preprocessor to typeset music.},
year = {1987},
title = {Music --- A language for typesetting music scores},
pages = {485-502},
}
-@Article {Langston90,
+@Article{langston90,
note = {This paper deals with some command-line
tools for music editing and playback.},
year = {1990},
pages = {47--61},
}
-@Book {filgueiras96,
+@Book{filgueiras96,
year = {1996},
title = {Implementing a Symbolic Music Processing System},
author = {Miguel Filgueiras},
totalentry = {LIACC, Universidade do Porto, 1996; submitted},
}
-@Book {filgueiras?,
+@Book{filgueiras,
title = {Some Music Typesetting Algorithms},
author = {Miguel Filgueiras},
totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming},
}
-@Article {colorado-web,
+@Article{colorado-web,
author = {Alyssa Lamb},
note = {Webpages about engraving (designed with finale
users in mind) (sic) HWN},
institution = {The University of Colorado},
- title = {The University of Colorado Music Engraving page.},
+ title = {The University of Colorado Music Engraving page},
HTML= {http://www.cc.colorado.edu/Dept/MU/Musicpress/},
year = {1996}
}
-@Article {tablature-web,
+@Article{tablature-web,
note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN},
title = {how to read and write tab: a guide to tab notation},
author = {Howard Wright},
url= {http://www.guitartabs.cc/tabfaq.shtml},
}
-@Article {niff-web,
+@Article{niff-web,
note = {Specs for NIFF, a reasonably comprehensive but binary
format for notation HWN},
year = {1995},
ftp = {ftp://blackbox.cartah.washington.edu}
}
-@Article {smdl-web,
+@Article{smdl-web,
author = {International Organization for Standardization (ISO)},
title = {Information Technology - Document Description and Processing Languages - Standard Music Description Language (SMDL)},
pdf = {ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf},
basically say: "You can embed a NIFF or MIDI file")},
}
-@Article {rader96,
+@Article{rader96,
note = {Describes a system called MusicEase, and explains that it
uses "constraints" (which go unexplained) to automatically position
various elements.},
pages = {61--69},
}
-@MastersThesis{gall97:_creat,
+@MastersThesis{gall97,
author = {Loïc Le Gall},
title = {Création d'une police adaptée à la notation musicale baroque},
school = {École Estienne},
year = 1997,
}
-@TechReport{droettboom00:_study_notat_descr_languag,
+@TechReport{droettboom00,
author = {Michael Droettboom},
title = {Study of music Notation Description Languages},
year = 2000,
implementation simplicity.},
}
-@PhdThesis{gieseking01:_code_gener_noten,
+@PhdThesis{gieseking01,
author = {Martin Gieseking},
title = {Code-basierte Generierung interaktiver Notengraphik},
school = {Universität Osnabrück},
isbn = {ISBN 3-923486-30-8}
}
-@Book{hewlett01:_virtual_score,
+@Book{hewlett01,
editor = {Walter B. Hewlett and Eleanor Selfridge-Field},
title = {The Virtual Score; representation, retrieval and restoration},
publisher = {MIT Press},
year = 2001
}
-@PhdThesis{renz02:_algor_guido,
+@PhdThesis{renz02,
author = {Kai Renz},
title = {Algorithms and data structures for a music notation system based on GUIDO music notation},
school = {Universität Darmstadt},
year = 2002
}
-@InBook{powell02:_music,
+@InBook{powell02,
author = {Steven Powell},
title = {Music engraving today},
publisher = {Brichtmark},
note = {A "How Steven uses Finale" manual.}
}
-@InProceedings{nienhuys03:_lilyp,
+@InProceedings{nienhuys03,
author = {Han-Wen Nienhuys and Jan Nieuwenhuizen},
title = {LilyPond, a system for automated music engraving},
booktitle = {XIV Colloquium on Musical Informatics},
% AUTHOr =Han-Wen Nienhuys
%
-@Book{banter,
+@Book{banter87,
author = {Harald Banter},
title = {Akkord Lexikon},
publisher = {Schott's Söhne},
address = {Mainz, Germany},
}
-@Book{rastall,
+@Book{rastall83,
author = {Richard Rastall},
ALTeditor = {},
title = {The Notation of Western Music: an
note = {Interesting account of the evolution and origin of common notation starting from neumes, and ending with modern innovations HWN},
}
-@Book{ignatzek95:_jazzm_klavier,
+@Book{ignatzek95,
author = {Klaus Ignatzek},
title = {Die Jazzmethode für Klavier 1},
publisher = {Schott},
note = {This book contains a system for denoting chords that is used in LilyPond.}
}
-@Book{mcgrain,
+@Book{mcgrain91,
author = {Mark Mc Grain},
title = {Music notation},
year = 1991,
[heussenstamm]. }
}
-@Book{ross,
+@Book{ross87,
author = {Ted Ross},
title = {Teach yourself the art of music engraving and processing},
publisher = {Hansen House},
address = {Miami, Florida},
}
-@Book {read78,
+@Book{read78,
note = {Sound (boring) review of the various hairy rhythmic notations used by avant-garde composers HWN},
year = {1978},
title = {Modern Rhythmic Notation},
publisher = {Indiana University Press},
}
-@Book {read-notation,
+@Book{read79,
note = {This is as close to the ``standard''
reference work for music notation issues as one is likely to get.},
title = {Music Notation: a Manual of Modern Practice},
address = {New York},
}
-@Book {weaner93,
+@Book{weaner93,
year = {1993},
title = {Standard Music Notation Practice},
author = {Maxwell Weaner and Walter Boelke},
address = {New York}
}
-@Book {wanske,
+@Book{wanske88,
annote = {I. A very thorough overview of engraving practices of various
craftsmen. It includes detailed specs of characters, dimensions
etc. II. a thorough overview of a anonymous (by now antiquated)
isbn = {ISBN 3-7957-2886-x},
}
-@Book {hader48,
+@Book{hader48,
year = {1948},
title = {Aus der Werkstatt eines Notenstechers},
author = {Karl Hader},
of print.}
}
-@Book{gamble23:_music_engrav,
+@Book{gamble23,
author = {William Gamble},
title = {Music Engraving and printing. Historical and Technical Treatise},
publisher = {Sir Isaac Pitman & Sons, ltd.},
(1971).}
}
-@Booklet {mpa96,
+@Booklet{mpa96,
note = {Pamphlet explaining a few fine points in music font design HWN},
year = {1996},
title = {Standard music notation specifications for computer programming.},
publisher = {MPA},
}
-@Book {donato63,
+@Book{donato63,
year = {1963},
author = {Anthony Donato},
title = {Preparing Music Manuscript},
publisher = {Prentice-Hall},
}
-@Book {Karkoshka72,
+@Book{karkoshka72,
year = {1972},
title = {Notation in New Music; a critical guide to interpretation and realisation},
author = {Erdhard Karkoshka},
note = {(Out of print)},
}
-@Book {Roemer84,
+@Book{roemer84,
year = {1984},
title = {The Art of Music Copying},
author = {Clinton Roemer},
edition = {2nd},
}
-@Book {Rosecrans79,
+@Book{rosecrans79,
year = {1979},
title = {Music Notation Primer},
author = {Glen Rosecrans},
note = {Heussenstamm writes: Limited in scope, similar to [Roemer84]}
}
-@Book {donemus1982,
+@Book{donemus82,
year = {1982},
title = {Uitgeven van muziek},
subtitle = {Handleiding voor componisten en copiisten},
}
@Book{schirmer90,
- author = {{G. Schirmer, Inc.}},
+ author = {Schirmer},
title = {The G. Schirmer Manual of Style and Usage},
address = {New York},
publisher = {The G. Schirmer Publications Department},
printouts to publication quality. It can be ordered from the rental department.},
}
-@Book {Stone80,
+@Book{stone80,
year = {1980},
title = {Music Notation in the Twentieth Century},
author = {Kurt Stone},
note = {Heussenstamm writes: The most important book on notation in recent years.},
}
-@Book {Heussenstamm87,
+@Book{heussenstamm87,
year = {1987},
title = {The Norton Manual of Music Notation},
author = {George Heussenstamm},
note = {Hands-on instruction book for copying (ie. handwriting) music. Fairly complete. HWN}
}
-@Book {gerou96,
+@Book{gerou96,
note = {A cheap, concise, alphabetically ordered list of typesetting and music (notation) issues with a rather simplistic attitude but in most cases "good-enough" answers JCN},
year = {1996},
title = {Essential Dictionary of Music Notation},
isbn = {ISBN 0-88284-768-6},
}
-@Book {chlapik87,
+@Book{chlapik87,
note = {An clearly written book for the casually interested
reader. It shows some of the conventions and difficulties in
printing music HWN},
isbn = {ISBN 3-9000 035-96-2},
}
-@Book {barksdale57,
+@Book{barksdale57,
author = {Barksdale, A},
year = {1957},
title = {The Printed Note: 500 Years of Music Printing and Engraving},
publisher = {The Toledo Museum of Art},
}
-@Book {wolf19,
+@Book{wolf19,
author = {Wolf, Johannes},
year = {1919},
title = {Handbuch der Notationskunde},
note = {Very thorough treatment (in two volumes) of the history of music notation},
}
-@Book {rosenthal67,
+@Book{rosenthal67,
author = {Rosenthal, Carl A},
year = {1967},
title = {A Practical Guide to Music Notation},
note = {Heussenstamm writes: Informative in terms of traditional notation. Does not concern score preparation}
}
-@Book {Boehm61,
+@Book{boehm61,
author = {Boehm, Laszlo},
year = {1961},
title = {Modern Music Notation},
note = {Heussenstamm writes: A handy compact reference book in basic notation.}
}
-@Book{button20:_system_music_notat,
+@Book{button20,
author = {Button, H. Elliot},
title = {System in Musical Notation},
publisher = {Novello and co.},
address = {London}
}
-@Book{johnson46:_how,
+@Book{johnson46,
author = {Johnson, Harold},
title = {How to write music manuscript},
publisher = {Carl Fischer, Inc.},
address = {New York}
}
-@Book{tyboni94:_noter_handb_i_tradit_noter,
+@Book{tyboni94,
author = {Börje Tyboni},
title = {Noter Handbok I Traditionell Notering},
publisher = {Gehrmans Musikförlag},
note = {Swedish book on music notation.}
}
-@Book{jaschinski00:_notat,
+@Book{jaschinski00,
editor = {Andreas Jaschinski},
title = {Notation},
publisher = {Bärenreiter Verlag},
@node Long literature list
@section Long literature list
-@subheading Colorado
+@subheading University of Colorado Engraving music bibliography
@include colorado.itexi
-@subheading Computer notation
+@subheading Computer notation bibliography
@include computer-notation.itexi
-@subheading Engraving
+@subheading Engraving bibliography
@include engravingbib.itexi
-% 18/aug/2010:
-% - changed into texi-long.bst by Graham Percival for GNU LilyPond
-% - only a minimum of changes were made; some html remains in
-% this file, but it does not appear in our output
-% BibTeX bibliography style `html-long'
-% spits out texinfo-formatted bibliography in place of bbl output
-% by David Kotz dfk@cs.dartmouth.edu
-% $Id: html-long.bst,v 1.4 2005/07/21 21:29:50 hjunes Exp $
-% modified from
-% BibTeX standard bibliography style `alpha'
- % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
- % Copyright (C) 1985, all rights reserved.
- % Copying of this file is authorized only if either
- % (1) you make absolutely no changes to your copy, including name, or
- % (2) if you do make changes, you name it something other than
- % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
- % This restriction helps ensure that all standard styles are identical.
- % The file btxbst.doc has the documentation for this style.
+% This template file was written by Phil Holmes to replace the one used for the bibliogrphy
+% on the LilyPond project. 18 Feb 2011
-% DFK added abstract, comment, earlier, keyword, later, URL
+% This section lists the possible fields, although not all are handled by the template
ENTRY
{ abstract
address
{}
{ label extra.label sort.label }
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-FUNCTION {init.state.consts}
-{ #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
+% s and t came from the original. The other strings are self explanatory
STRINGS { s t }
+STRINGS { ThesisType ReportType }
-FUNCTION {output.nonnull}
-{ 's :=
- output.state mid.sentence =
- { ", " * write$ }
- { output.state after.block =
- { add.period$ write$
- newline$
- }
- { output.state before.all =
- 'write$
- { add.period$ " " * write$ }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION {output.check}
-{ 't :=
- duplicate$ empty$
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-% DFK changed to use cite$ for the label
-% DFK changed to texinfo, and use URL to make cite key a link
-FUNCTION {output.bibitem}
-{ newline$
- URL empty$
- { "@item @code{[" cite$ * "]} " * write$ newline$
- }
- { "" quote$ * cite$ * quote$ * " HREF=" * quote$ *
- URL * quote$ * "> " * cite$ * ":</A></DT>" * write$
- }
- if$
- newline$
-% "" write$ newline$
- ""
- before.all 'output.state :=
-}
-
-% DFK changed to HTML
-FUNCTION {fin.entry}
-{ add.period$
- write$
- newline$
- earlier empty$
- 'skip$
- { "<br>" write$ newline$
- "See also earlier version <A HREF=" quote$ * "#" * earlier * quote$ *
- ">" * earlier * "</A>." * write$ newline$
- }
- if$
- later empty$
- 'skip$
- { "<br>" write$ newline$
- "See also later version <A HREF=" quote$ * "#" * later * quote$ *
- ">" * later * "</A>." * write$ newline$
- }
- if$
-% "" write$ newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION {new.sentence}
-{ output.state after.block =
- 'skip$
- { output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION {not}
-{ { #0 }
- { #1 }
- if$
-}
-
-FUNCTION {and}
-{ 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION {or}
-{ { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION {new.block.checka}
-{ empty$
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.block.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION {new.sentence.checka}
-{ empty$
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {new.sentence.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
- if$
-}
-
-% DFK changed to texinfo
-FUNCTION {emphasize}
-{ duplicate$ empty$
- { pop$ "" }
- { "@emph{" swap$ * "}" * }
- if$
-}
-
-% DFK added for texinfo strong emphasis
-FUNCTION {strong}
-{ duplicate$ empty$
- { pop$ "" }
- { "@strong{" swap$ * "}" * }
- if$
-}
-
+% from the original
INTEGERS { nameptr namesleft numnames }
-% DFK added this, to strip {} and ~ from titles and authors
-% It's not a great idea, because it will screw up in math mode and some
-% special characters... but it makes most things much prettier.
-FUNCTION {author.title.purify}
-{ 't :=
- ""
- { t empty$ not }
- { t #1 #1 substring$ "{" =
- t #1 #1 substring$ "}" = or
- 'skip$
- { t #1 #1 substring$ "~" =
- { " " * }
- { t #1 #1 substring$ * }
- if$
- }
- if$
- t #2 global.max$ substring$ 't :=
- }
- while$
-}
-
+% This was simply copied and pasted from the original
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
- { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
+ % This line was changed: the {ff{ } } entry outputs the first name without allowing bibtex to use
+ % a ~ to replace the spaces where it thinks fit. The downside is that we lose hyphens...
+ { s nameptr "{ff{ } }{vv }{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
'skip$
if$
t "others" =
- { " et al." * }
+ { " et al." * }
{ " and " * t * }
if$
}
}
FUNCTION {format.authors}
+% This is a very common construct. It means "if the author is empty, process the lines in the first pair
+% of braces {}. Otherwise process the lines in the second pair. So if it's empty, an empty string is
+% stacked.
{ author empty$
{ "" }
- { author format.names author.title.purify }
+ % If it's not empty, it formats author (and stacks the result) and then checks whether editor is empty
+ { author format.names
+ editor empty$
+ % If editor is empty, it appends an empty string (the * is a postfix operator meaning append this
+ % string to the top entry on the stack
+ { "" * }
+ % Otherwise it appends a period, parenthesis.
+ { ". (" * }
+ if$
+ }
if$
}
-FUNCTION {format.editors}
+FUNCTION {format.editor}
{ editor empty$
{ "" }
- { editor format.names author.title.purify
+ { editor format.names
editor num.names$ #1 >
{ ", editors" * }
{ ", editor" * }
if$
+ author empty$
+ { "" * }
+ { ")" * }
+ if$
}
if$
+
}
-% DFK added strong, so it will be bold.
-FUNCTION {format.title}
-{ title empty$
- { "" }
- { title "t" change.case$ author.title.purify strong }
- if$
+FUNCTION {output.bibitem}
+{ newline$
+ "@item " write$ newline$
}
-FUNCTION {n.dashify}
-{ 't :=
- ""
- { t empty$ not }
- { t #1 #1 substring$ "-" =
- { t #1 #2 substring$ "--" = not
- { "--" *
- t #2 global.max$ substring$ 't :=
- }
- { { t #1 #1 substring$ "-" = }
- { "-" *
- t #2 global.max$ substring$ 't :=
- }
- while$
- }
- if$
- }
- { t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- if$
- }
- while$
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { edition " edition, " * }
+ if$
}
FUNCTION {format.date}
if$
}
-% DFK changed emphasize to strong
-FUNCTION {format.btitle}
-{ title author.title.purify strong
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
- { " " }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION {either.or.check}
-{ empty$
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION {format.bvolume}
-{ volume empty$
+FUNCTION {format.address}
+{ address empty$
{ "" }
- { "volume" volume tie.or.space.connect
- series empty$
- 'skip$
- { " of " * series emphasize * }
- if$
- "volume and number" number either.or.check
+ { address
+ year empty$
+ { "" * }
+ { ", " * }
+ if$
}
if$
}
-FUNCTION {format.number.series}
-{ volume empty$
- { number empty$
- { series field.or.null }
- { output.state mid.sentence =
- { "number" }
- { "Number" }
- if$
- number tie.or.space.connect
- series empty$
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
+FUNCTION {format.publisher}
+{
+ publisher empty$
+ { "" }
+ { publisher
+ address empty$
+ { year empty$
+ { "" * }
+ { ", " * }
+ if$
+ }
+ { ", " * }
if$
}
- { "" }
if$
}
-FUNCTION {format.edition}
-{ edition empty$
+FUNCTION {format.note}
+{ note empty$
{ "" }
- { output.state mid.sentence =
- { edition "l" change.case$ " edition" * }
- { edition "t" change.case$ " edition" * }
- if$
+ { note
+ add.period$
}
if$
}
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
- #0 'multiresult :=
- { multiresult not
- t empty$ not
- and
- }
- { t #1 #1 substring$
- duplicate$ "-" =
- swap$ duplicate$ "," =
- swap$ "+" =
- or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
- if$
- }
- while$
- multiresult
-}
-
-FUNCTION {format.pages}
-{ pages empty$
+FUNCTION {format.title}
+{ title empty$
{ "" }
- { pages multi.page.check
- { "pages" pages n.dashify tie.or.space.connect }
- { "page" pages tie.or.space.connect }
+ { "@strong{" title * "}" *
+ journal empty$
+ {
+ volume empty$
+ { "" * }
+ { ", " * }
if$
}
+ { "" * }
+ if$
+ }
if$
}
-FUNCTION {format.vol.num.pages}
-{ volume field.or.null
- number empty$
- 'skip$
- { "(" number * ")" * *
- volume empty$
- { "there's a number but no volume in " cite$ * warning$ }
- 'skip$
+FUNCTION {format.number}
+{
+ % ReportType is set by us when we call the correct function for the bibliography type
+ ReportType empty$
+ {
+ volume empty$
+ {number empty$
+ { "" }
+ { "Number " number * ". " * }
if$
+ }
+ { "" }
+ if$
}
- if$
- pages empty$
- 'skip$
- { duplicate$ empty$
- { pop$ format.pages }
- { ":" * pages n.dashify * }
+ { ReportType
+ number empty$
+ { ", " * }
+ { " " * number * ", " * institution * ", " * }
if$
}
if$
}
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- 'format.pages
- { type empty$
- { "chapter" }
- { type "l" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty$
- 'skip$
- { ", " * format.pages * }
- if$
+FUNCTION {format.volume}
+{ journal empty$
+ {
+ volume empty$
+ { "" }
+ { "volume " volume * }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.journal}
+{ journal empty$
+ { "" write$ }
+ { "@emph{" journal * "}" *
+ write$
+ volume empty$
+ { "" }
+ { ", " volume * }
+ if$
+ write$
+ number empty$
+ { "" }
+ { "(" number * ")" * }
+ if$
+ write$
+ pages empty$
+ { "" }
+ { ":" pages * }
+ if$
+ write$
+ year empty$
+ { "" }
+ { ", " }
+ if$
+ write$
+ }
+ if$
+}
+
+FUNCTION {format.series}
+{ series empty$
+ { "" }
+ { series
+ % This is an inbuilt function that adds a period when appropriate.
+ add.period$
+ " " *
}
if$
}
-FUNCTION {format.in.ed.booktitle}
+FUNCTION {format.booktitle}
{ booktitle empty$
{ "" }
- { editor empty$
- { "In " booktitle emphasize * }
- { "In " format.editors * ", " * booktitle emphasize * }
- if$
- }
- if$
-}
-
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
- month empty$ year empty$ note empty$
- and and and and and
- key empty$ not and
- { "all relevant fields are empty in " cite$ * warning$ }
- 'skip$
- if$
-}
-
-FUNCTION {format.thesis.type}
-{ type empty$
- 'skip$
- { pop$
- type "t" change.case$
- }
- if$
-}
-
-FUNCTION {format.tr.number}
-{ type empty$
- { "Technical Report" }
- 'type
- if$
- number empty$
- { "t" change.case$ }
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION {format.article.crossref}
-{ key empty$
- { journal empty$
- { "need key or journal for " cite$ * " to crossref " * crossref *
- warning$
- ""
- }
- { "In {\em " journal * "\/}" * }
- if$
- }
- { "In " key * }
- if$
-% " \cite{" * crossref * "}" *
- " [" * crossref * "]" *
-}
-
-FUNCTION {format.crossref.editor}
-{ editor #1 "{vv~}{ll}" format.name$
- editor num.names$ duplicate$
- #2 >
- { pop$ " et al." * }
- { #2 <
- 'skip$
- { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " et al." * }
- { " and " * editor #2 "{vv~}{ll}" format.name$ * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION {format.book.crossref}
-{ volume empty$
- { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
- "In "
- }
- { "Volume" volume tie.or.space.connect
- " of " *
- }
- if$
- editor empty$
- editor field.or.null author field.or.null =
- or
- { key empty$
- { series empty$
- { "need editor, key, or series for " cite$ * " to crossref " *
- crossref * warning$
- "" *
- }
- { "{\em " * series * "\/}" * }
- if$
- }
- { key * }
- if$
- }
- { format.crossref.editor * }
- if$
-% " \cite{" * crossref * "}" *
- " [" * crossref * "]" *
-}
-
-FUNCTION {format.incoll.inproc.crossref}
-{ editor empty$
- editor field.or.null author field.or.null =
- or
- { key empty$
- { booktitle empty$
- { "need editor, key, or booktitle for " cite$ * " to crossref " *
- crossref * warning$
- ""
- }
- { "In {\em " booktitle * "\/}" * }
- if$
- }
- { "In " key * }
+ { "In @emph{" booktitle * "}, " *
+ pages empty$
+ { "" * }
+ { "pages " * pages * ", " * }
if$
}
- { "In " format.crossref.editor * }
if$
-% " \cite{" * crossref * "}" *
- " [" * crossref * "]" *
}
-
-% DFK added
-% top of stack is the string we want to be a quoted paragraph
-FUNCTION {format.quotedParagraph}
-{ duplicate$ empty$
- { skip$ }
- { "<P><QUOTE> " swap$ * " </QUOTE></P>" *}
- if$
-}
-
-
-% DFK added, to support comment, private, keyword, etc
-% next-to-top is field name (eg, "Comment")
-% top is field value (eg, value of comment)
-% both are popped; resulting top is either empty,
-% or string describing field
-FUNCTION {format.dfkfield}
-{ duplicate$ empty$
- { pop$ pop$ "" }
- { swap$
- "<strong> " swap$ * ":</strong> " * swap$ * }
- if$
-}
-
-% DFK added
-FUNCTION {dfk.stuff}
-{ new.block
- "Abstract" abstract format.dfkfield format.quotedParagraph write$ newline$
- "Keyword" keyword format.dfkfield format.quotedParagraph write$ newline$
- "Comment" comment format.dfkfield format.quotedParagraph write$ newline$
-}
-
-% DFK: added a call to dfk.stuff in all entry-type functions below
-
-FUNCTION {article}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { journal emphasize "journal" output.check
- format.vol.num.pages output
- format.date "year" output.check
- }
- { format.article.crossref output.nonnull
- format.pages output
- }
+FUNCTION {format.thesis}
+{ ThesisType empty$
+ { "" }
+ { ThesisType school * ", " *}
if$
- new.block
- note output
- fin.entry
- dfk.stuff
}
+% This is the function that runs the formatting code. It's called when the biblio type is @Book
FUNCTION {book}
{ output.bibitem
- author empty$
- { format.editors "author and editor" output.check }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- new.block
- format.btitle "title" output.check
- crossref missing$
- { format.bvolume output
- new.block
- format.number.series output
- new.sentence
- publisher "publisher" output.check
- address output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- format.edition output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {booklet}
-{ output.bibitem
- format.authors output
- new.block
- format.title "title" output.check
- howpublished address new.block.checkb
- howpublished output
- address output
- format.date output
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {inbook}
-{ output.bibitem
- author empty$
- { format.editors "author and editor" output.check }
- { format.authors output.nonnull
- crossref missing$
- { "author and editor" editor either.or.check }
- 'skip$
- if$
- }
- if$
- new.block
- format.btitle "title" output.check
- crossref missing$
- { format.bvolume output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.number.series output
- new.sentence
- publisher "publisher" output.check
- address output
- }
- { format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- format.edition output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {incollection}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.bvolume output
- format.number.series output
- format.chapter.pages output
- new.sentence
- publisher "publisher" output.check
- address output
- format.edition output
- format.date "year" output.check
- }
- { format.incoll.inproc.crossref output.nonnull
- format.chapter.pages output
- }
- if$
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.bvolume output
- format.number.series output
- format.pages output
- address empty$
- { organization publisher new.sentence.checkb
- organization output
- publisher output
- format.date "year" output.check
- }
- { address output.nonnull
- format.date "year" output.check
- new.sentence
- organization output
- publisher output
- }
- if$
- }
- { format.incoll.inproc.crossref output.nonnull
- format.pages output
- }
- if$
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {conference} { inproceedings }
-
-FUNCTION {manual}
-{ output.bibitem
- author empty$
- { organization empty$
- 'skip$
- { organization output.nonnull
- address output
- }
- if$
- }
- { format.authors output.nonnull }
- if$
- new.block
- format.btitle "title" output.check
- author empty$
- { organization empty$
- { address new.block.checka
- address output
- }
- 'skip$
- if$
- }
- { organization address new.block.checkb
- organization output
- address output
- }
- if$
- format.edition output
- format.date output
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- "Master's thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {misc}
-{ output.bibitem
- format.authors output
- title howpublished new.block.checkb
- format.title output
- howpublished new.block.checka
- howpublished output
- format.date output
- new.block
- note output
- fin.entry
- dfk.stuff
- empty.misc.check
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.btitle "title" output.check
- new.block
- "PhD thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
- editor empty$
- { organization output }
- { format.editors output.nonnull }
- if$
- new.block
- format.btitle "title" output.check
- format.bvolume output
- format.number.series output
- address empty$
- { editor empty$
- { publisher new.sentence.checka }
- { organization publisher new.sentence.checkb
- organization output
- }
- if$
- publisher output
- format.date "year" output.check
- }
- { address output.nonnull
- format.date "year" output.check
- new.sentence
- editor empty$
- 'skip$
- { organization output }
- if$
- publisher output
- }
- if$
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {techreport}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- format.tr.number output.nonnull
- institution "institution" output.check
- address output
- format.date "year" output.check
- new.block
- note output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.title "title" output.check
- new.block
- note "note" output.check
- format.date output
- fin.entry
- dfk.stuff
-}
-
-FUNCTION {default.type} { misc }
-
-MACRO {jan} {"January"}
-
-MACRO {feb} {"February"}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"April"}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"June"}
-
-MACRO {jul} {"July"}
-
-MACRO {aug} {"August"}
-
-MACRO {sep} {"September"}
-
-MACRO {oct} {"October"}
-
-MACRO {nov} {"November"}
-
-MACRO {dec} {"December"}
-
-MACRO {acmcs} {"ACM Computing Surveys"}
-
-MACRO {acta} {"Acta Informatica"}
-
-MACRO {cacm} {"Communications of the ACM"}
-
-MACRO {ibmjrd} {"IBM Journal of Research and Development"}
-
-MACRO {ibmsj} {"IBM Systems Journal"}
-
-MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
-
-MACRO {ieeetc} {"IEEE Transactions on Computers"}
-
-MACRO {ieeetcad}
- {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
-
-MACRO {ipl} {"Information Processing Letters"}
-
-MACRO {jacm} {"Journal of the ACM"}
-
-MACRO {jcss} {"Journal of Computer and System Sciences"}
-
-MACRO {scp} {"Science of Computer Programming"}
-
-MACRO {sicomp} {"SIAM Journal on Computing"}
-
-MACRO {tocs} {"ACM Transactions on Computer Systems"}
-
-MACRO {tods} {"ACM Transactions on Database Systems"}
-
-MACRO {tog} {"ACM Transactions on Graphics"}
-
-MACRO {toms} {"ACM Transactions on Mathematical Software"}
-
-MACRO {toois} {"ACM Transactions on Office Information Systems"}
-
-MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
-
-MACRO {tcs} {"Theoretical Computer Science"}
-
-READ
-
-FUNCTION {sortify}
-{ purify$
- "l" change.case$
-}
-
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
- 'len :=
- s #1 len substring$ =
- { s len #1 + global.max$ substring$ }
- 's
- if$
-}
-
-INTEGERS { et.al.char.used }
-
-FUNCTION {initialize.et.al.char.used}
-{ #0 'et.al.char.used :=
-}
-
-EXECUTE {initialize.et.al.char.used}
-
-FUNCTION {format.lab.names}
-{ 's :=
- s num.names$ 'numnames :=
- numnames #1 >
- { numnames #4 >
- { #3 'namesleft := }
- { numnames 'namesleft := }
- if$
- #1 'nameptr :=
- ""
- { namesleft #0 > }
- { nameptr numnames =
- { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { "{\etalchar{+}}" *
- #1 'et.al.char.used :=
- }
- { s nameptr "{v{}}{l{}}" format.name$ * }
- if$
- }
- { s nameptr "{v{}}{l{}}" format.name$ * }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
- numnames #4 >
- { "{\etalchar{+}}" *
- #1 'et.al.char.used :=
- }
- 'skip$
- if$
- }
- { s #1 "{v{}}{l{}}" format.name$
- duplicate$ text.length$ #2 <
- { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
- 'skip$
- if$
- }
- if$
-}
-
-FUNCTION {author.key.label}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- { key #3 text.prefix$ }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.editor.key.label}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- { key #3 text.prefix$ }
- if$
- }
- { editor format.lab.names }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.key.organization.label}
-{ author empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- { key #3 text.prefix$ }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {editor.key.organization.label}
-{ editor empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- { key #3 text.prefix$ }
- if$
- }
- { editor format.lab.names }
- if$
+ format.authors write$
+ format.editor write$
+ "." write$ newline$
+ format.title write$
+ format.volume write$
+ "." write$ newline$
+ format.number write$
+ format.journal
+ format.series write$
+ format.publisher write$
+ format.address write$
+ format.edition write$
+ format.booktitle write$
+ format.thesis write$
+ format.date write$
+ "." write$ newline$
+ format.note write$
+ newline$
+ newline$
+ newline$
+ newline$
}
-FUNCTION {calc.label}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.label
- { type$ "proceedings" =
- 'editor.key.organization.label
- { type$ "manual" =
- 'author.key.organization.label
- 'author.key.label
- if$
- }
- if$
- }
- if$
- duplicate$
- year field.or.null purify$ #-1 #2 substring$
- *
- 'label :=
- year field.or.null purify$ #-1 #4 substring$
- *
- sortify 'sort.label :=
+% All the following functions are called for the other biblio types. This is @article
+FUNCTION {article}
+{
+ % And we just call the book function
+ book
}
-FUNCTION {sort.format.names}
-{ 's :=
- #1 'nameptr :=
- ""
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { nameptr #1 >
- { " " * }
- 'skip$
- if$
- s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
- nameptr numnames = t "others" = and
- { "et al" * }
- { t sortify * }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
+FUNCTION {booklet}
+{
+ book
}
-FUNCTION {sort.format.title}
-{ 't :=
- "A " #2
- "An " #3
- "The " #4 t chop.word
- chop.word
- chop.word
- sortify
- #1 global.max$ substring$
+FUNCTION {PhDThesis}
+{
+ % This sets the string ThesisType to be equal to "PhD Thesis"
+ "PhD thesis, " 'ThesisType :=
+ book
+ % And this sets it back to an empty string
+ "" 'ThesisType :=
}
-FUNCTION {author.sort}
-{ author empty$
- { key empty$
- { "to sort, need author or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
+FUNCTION {TechReport}
+{
+ "Technical Report" 'ReportType :=
+ book
+ "" 'ReportType :=
}
-FUNCTION {author.editor.sort}
-{ author empty$
- { editor empty$
- { key empty$
- { "to sort, need author, editor, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { editor sort.format.names }
- if$
- }
- { author sort.format.names }
- if$
+FUNCTION {InProceedings}
+{
+ book
}
-FUNCTION {author.organization.sort}
-{ author empty$
- { organization empty$
- { key empty$
- { "to sort, need author, organization, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { "The " #4 organization chop.word sortify }
- if$
- }
- { author sort.format.names }
- if$
+FUNCTION {MastersThesis}
+{
+ "Master's thesis, " 'ThesisType :=
+ book
+ "" 'ThesisType :=
}
-FUNCTION {editor.organization.sort}
-{ editor empty$
- { organization empty$
- { key empty$
- { "to sort, need editor, organization, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { "The " #4 organization chop.word sortify }
- if$
- }
- { editor sort.format.names }
- if$
+FUNCTION {InBook}
+{
+ book
}
+% Haven't dug too deeply into this, but it seems to set the sort key
FUNCTION {presort}
-{ calc.label
- sort.label
- " "
- *
- type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.sort
- { type$ "proceedings" =
- 'editor.organization.sort
- { type$ "manual" =
- 'author.organization.sort
- 'author.sort
- if$
- }
- if$
- }
- if$
- *
- " "
- *
- year field.or.null sortify
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
-% DFK throw away stuff above and use cite$ for sort key
- pop$
- cite$
+{ cite$
#1 entry.max$ substring$
'sort.key$ :=
}
-ITERATE {presort}
-
-SORT
-
-STRINGS { longest.label last.sort.label next.extra }
-
-INTEGERS { longest.label.width last.extra.num }
+% The entry point for processing
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #0 int.to.chr$ 'last.sort.label :=
- "" 'next.extra :=
- #0 'longest.label.width :=
- #0 'last.extra.num :=
-}
-
-FUNCTION {forward.pass}
-{ last.sort.label sort.label =
- { last.extra.num #1 + 'last.extra.num :=
- last.extra.num int.to.chr$ 'extra.label :=
- }
- { "a" chr.to.int$ 'last.extra.num :=
- "" 'extra.label :=
- sort.label 'last.sort.label :=
- }
- if$
-}
-
-FUNCTION {reverse.pass}
-{ next.extra "b" =
- { "a" 'extra.label := }
- 'skip$
- if$
- label extra.label * 'label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- 'skip$
- if$
- extra.label 'next.extra :=
-}
-
-EXECUTE {initialize.longest.label}
+% Read the .bib file
+READ
-ITERATE {forward.pass}
+% Work through the entries, calling the presort function
+ITERATE {presort}
-REVERSE {reverse.pass}
+% Sort the entries
+SORT
-% DFK removed code about et.al.char
-% DFK changed to texinfo
+% This could go higher with all the other functions, but it _has_ to be above the call
FUNCTION {begin.bib}
{ "@c bib -> itexi intro" write$ newline$
"@itemize" write$ newline$
}
+% Run the begin.bib function
EXECUTE {begin.bib}
-EXECUTE {init.state.consts}
-
+% For each bibliogrpahy entry call the relevant function (e.g. book, article, booklet, etc.)
ITERATE {call.type$}
-% DFK changed to texinfo
FUNCTION {end.bib}
{ newline$
"@end itemize" write$ newline$
}
EXECUTE {end.bib}
+% And that's it.
@menu
* Using variables::
* Using tags::
+* Using global settings::
@end menu
@node Using variables
@end ignore
+@node Using global settings
+@unnumberedsubsubsec Using global settings
+
+@cindex include-settings
+
+Global settings can be incuded from a separate file:
+
+@example
+lilypond -dinclude-settings=MY_SETTINGS.ly MY_SCORE.ly
+@end example
+
+Groups of settings such as page size, font or type face can be stored
+in separate files. This allows different editions from the same score
+as well as standard settings to be applied to many scores, simply by
+specifying the proper settings file.
+
+This technique also works well with the use of style sheets, as
+discussed in @rlearning{Style sheets}.
+
+@seealso
+Learning Manual:
+@rlearning{Organizing pieces with variables},
+@rlearning{Style sheets}.
+
+Notation Reference:
+@ref{Including LilyPond files}.
+
@node Text encoding
@subsection Text encoding
@menu
* Octave checks::
* Transpose::
+* Modal transformations::
@end menu
@node Octave checks
@seealso
Notation Reference:
@ref{Relative octave entry},
+@ref{Modal transformations},
@ref{Instrument transpositions}.
Snippets:
To use relative mode within transposed music, an additional
@code{\relative} must be placed inside @code{\transpose}.
+@node Modal transformations
+@unnumberedsubsubsec Modal transformations
+
+@cindex modal transformations
+@cindex transformations, modal
+@cindex operations, modal
+
+In a musical composition that is based on a scale, a motif is
+frequently transformed in various ways. It may be
+@notation{transposed} to start at different places in the scale, it
+may be @notation{inverted} around a pivot point in the scale, and/or
+it may be converted to its @notation{retrograde} (written backwards).
+
+@warning{Any note that does not lie within the given scale will be
+left untransformed.}
+
+@subsubheading Modal transposition
+
+@cindex modal transposition
+@cindex transposition, modal
+@cindex operation, transposition
+@funindex \modalTranspose
+@funindex modalTranspose
+
+A motif can be transposed within a given scale with:
+
+@example
+\modalTranspose @var{from-pitch} @var{to-pitch} @var{scale} @var{motif}
+@end example
+
+The notes of @var{motif} are shifted within the @var{scale} by the
+number of scale degrees given by the interval between @var{to-pitch}
+and @var{from-pitch}:
+
+@lilypond[verbatim,quote]
+diatonicScale = \relative c' { c d e f g a b }
+motif = \relative c' { c8 d e f g a b c }
+
+\new Staff {
+ \motif
+ \modalTranspose c f \diatonicScale \motif
+ \modalTranspose c b, \diatonicScale \motif
+}
+@end lilypond
+
+An ascending scale of any length and with any intervals may be
+specified:
+
+@lilypond[verbatim,quote]
+pentatonicScale = \relative c' { ges aes bes des ees }
+motif = \relative c' { ees8 des ges,4 <ges' bes,> <ges bes,> }
+
+\new Staff {
+ \motif
+ \modalTranspose ges ees' \pentatonicScale \motif
+}
+@end lilypond
+
+When used with a chromatic scale @code{\modalTranspose} has a
+similar effect to @code{\transpose}, but with the ability to
+specify the names of the notes to be used:
+
+@lilypond[verbatim,quote]
+chromaticScale = \relative c' { c cis d dis e f fis g gis a ais b }
+motif = \relative c' { c8 d e f g a b c }
+
+\new Staff {
+ \motif
+ \transpose c f \motif
+ \modalTranspose c f \chromaticScale \motif
+}
+@end lilypond
+
+@subsubheading Modal inversion
+
+@cindex modal inversion
+@cindex inversion, modal
+@cindex operation, inversion
+@funindex \modalInversion
+@funindex modalInversion
+
+A motif can be inverted within a given scale around a given pivot
+note and transposed in a single operation with:
+
+@example
+\modalInversion @var{around-pitch} @var{to-pitch} @var{scale} @var{motif}
+@end example
+
+The notes of @var{motif} are placed the same number of scale degrees
+from the @var{around-pitch} note within the @var{scale}, but in the
+opposite direction, and the result is then shifted within the
+@var{scale} by the number of scale degrees given by the interval between
+@var{to-pitch} and @var{around-pitch}.
+
+So to simply invert around a note in the scale use the same value for
+@var{around-pitch} and @var{to-pitch}:
+
+@lilypond[verbatim,quote]
+octatonicScale = \relative c' { ees f fis gis a b c d }
+motif = \relative c' { c8. ees16 fis8. a16 b8. gis16 f8. d16 }
+
+\new Staff {
+ \motif
+ \modalInversion fis' fis' \octatonicScale \motif
+}
+@end lilypond
+
+To invert around a pivot between two notes in the scale, invert around
+one of the notes and then transpose by one scale degree. The two notes
+specified can be interpreted as bracketing the pivot point:
+
+@lilypond[verbatim,quote]
+scale = \relative c' { c g' }
+motive = \relative c' { c c g' c, }
+
+\new Staff {
+ \motive
+ \modalInversion c' g' \scale \motive
+}
+@end lilypond
+
+
+@subsubheading Retrograde transformation
+
+@cindex retrograde transformation
+@cindex transformation, retrograde
+@cindex operation, retrograde
+@funindex \retrograde
+@funindex retrograde
+
+A motif can be reversed to produce its retrograde:
+
+@lilypond[verbatim,quote]
+motif = \relative c' { c8. ees16( fis8. a16 b8.) gis16 f8. d16 }
+
+\new Staff {
+ \motif
+ \retrograde \motif
+}
+@end lilypond
+
+The combined operation of inversion and retrograde produce the
+retrograde-inversion:
+
+@lilypond[verbatim,quote]
+octatonicScale = \relative c' { ees f fis gis a b c d }
+motif = \relative c' { c8. ees16 fis8. a16 b8. gis16 f8. d16 }
+
+\new Staff {
+ \motif
+ \retrograde \modalInversion c' c' \octatonicScale \motif
+}
+@end lilypond
+
+@seealso
+Notation Reference:
+@ref{Transpose}.
+
+@knownissues
+Manual ties inside @code{\retrograde} will be broken and
+generate warnings. Some ties can be generated automatically
+by enabling @ref{Automatic note splitting}.
+
+
@node Displaying pitches
@subsection Displaying pitches
@rinternals{Pitch_squash_engraver},
@rinternals{Voice},
@rinternals{RhythmicStaff}.
-
-
'skip$
if$
t "others" =
- { " et al." * }
+ { " et al." * }
{ " and " * t * }
if$
}
{ title author.title.purify strong
}
+% PEH - the 2 same lines below are because I replaced with a space
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
- { " " }
+ { " " }
{ " " }
if$
swap$ * *
{ editor #1 "{vv~}{ll}" format.name$
editor num.names$ duplicate$
#2 >
- { pop$ " et al." * }
+ { pop$ " et al." * }
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " et al." * }
+ { " et al." * }
{ " and " * editor #2 "{vv~}{ll}" format.name$ * }
if$
}
--- /dev/null
+\version "2.13.51"
+
+\header {
+
+ texidoc = "
+3/4 beaming has special rules, that are hardcoded in the autobeam
+routines. When the beaming is changed, beams should start at the
+beginning of the measure. In this case, the measure should be beamed
+in two.
+"
+}
+
+\relative c' {
+ \time 3/4
+ \set Timing.baseMoment = #(ly:make-moment 1 8)
+ \set Timing.beatStructure = #'(3 3)
+ \set Timing.beamExceptions = #'()
+ c8 c c c c c
+}
-\version "2.13.48"
+\version "2.13.51"
\header{
texidoc="
}
<<
- \new Staff \with
- {
-% \remove "Bar_engraver"
- }
- {
+ \new Staff {
b1 \bar "|:" b1 \bar ":|"
}
\context Lyrics \with {
\consists "Bar_engraver"
\consists "Separating_line_group_engraver"
- \override BarLine #'bar-extent = #'(-2 . 2)
} \lyricmode {
looooooooooooooooooooooooooooooooooong1 syllable
}
\lyrics {
- no Bar_Engraver_Bar_Engraver_Bar_Engraver
+ no Bar_Engraver_Bar_Engraver_Bar_Engraver
+ }
+ \new Staff {
+ b1 b1
}
- \new Staff \with {
-% \remove "Bar_engraver"
- } { b1 b1 }
>>
-
+\layout {
+ \context {
+ \Lyrics
+ \override VerticalAxisGroup #'nonstaff-nonstaff-spacing #'minimum-distance = #4
+ \override LyricText #'Y-offset = #-0.7
+ \override BarLine #'bar-extent = #'(-2 . 2)
+ }
+}
--- /dev/null
+\version "2.13.51"
+\header {
+ texidoc = "\modalTranspose, \retrograde and \modalInversion work
+for an octatonic motif."
+}
+
+cOctatonicScale = {
+ c' d' ees' f'
+ ges' aes' a' b'
+}
+motif = {
+ c'8. ees'16 ges'8. a'16
+ b'8. aes'16 f'8. d'16
+}
+
+\score {
+ \new Staff {
+ \time 4/4
+ <<
+ {
+ \motif
+ \modalTranspose c' f' \cOctatonicScale \motif
+ \retrograde \motif
+ \modalInversion aes' b' \cOctatonicScale \motif
+ }
+ {
+ s1-"Octatonic motif" |
+ s1-"motif transposed from c to f" |
+ s1-"motif in retrograde" |
+ s1-"motif inverted around aes to b" |
+ }
+ >>
+ }
+}
--- /dev/null
+\version "2.13.51"
+
+\header {
+
+ texidoc = "Prefatory items maintain sufficient separation from
+ musical notation for readability, even in tight spacing.
+ The notes should remain generally on the correct side of the
+ time signature, key signature and barlines. A key change to
+ G major should be legible."
+
+}
+
+\new Staff <<
+ \relative c''' {
+ \key f \major
+ es4 c c c \bar "||" \noBreak
+ \key g \major
+ <gis cis,>4 r2. \bar "|."
+ } \\
+ \relative c' {
+ R1
+ r4 cis a a
+ }
+>>
+\layout {
+ line-width = 5\cm % impossibly narrow to induce tight spacing
+}
--- /dev/null
+\version "2.13.51"
+
+\header {
+ texidoc = "Beat repeats for patterns containing mixed durations use
+a double percent symbol."
+}
+
+\relative c' {
+ \repeat percent 4 {
+ c8. <d f>16
+ }
+ \repeat percent 2 {
+ \times 2/3 {
+ r8 d e
+ }
+ c4
+ }
+}
--- /dev/null
+\version "2.13.51"
+
+\header {
+ texidoc = "Beat repeats for patterns containing identical durations
+shorter than an eighth note use multiple slashes."
+}
+
+\relative c' {
+ \repeat percent 2 { c16 d e f }
+ \repeat percent 4 { c32 e g e }
+}
-\version "2.13.36"
+\version "2.13.51"
\header {
texidoc = "Stems with overridden 'length should not confuse height estimation.
\paper {
#(set-paper-size "a6")
tagline = ##f
+ indent = #0
system-system-spacing = #'((padding . 1.2))
oddHeaderMarkup = \markup \on-the-fly #assert-single-page \null
}
}
Interval
-Axis_group_interface::cached_pure_height (Grob *me, int start, int end)
+Axis_group_interface::sum_partial_pure_heights (Grob *me, int start, int end)
{
Interval iv = begin_of_line_pure_height (me, start);
iv.unite (rest_of_line_pure_height (me, start, end));
}
Interval
-Axis_group_interface::rest_of_line_pure_height (Grob *me, int start, int end)
+Axis_group_interface::part_of_line_pure_height (Grob *me, bool begin, int start, int end)
{
+ Spanner *sp = dynamic_cast<Spanner*> (me);
+ SCM cache_symbol = begin
+ ? ly_symbol2scm ("begin-of-line-pure-height")
+ : ly_symbol2scm ("rest-of-line-pure-height");
+ SCM cached = sp->get_cached_pure_property (cache_symbol, start, end);
+ if (scm_is_pair (cached))
+ return robust_scm2interval (cached, Interval (0, 0));
+
SCM adjacent_pure_heights = me->get_property ("adjacent-pure-heights");
+ Interval ret;
+
+ if (!scm_is_pair (adjacent_pure_heights))
+ ret = Interval (0, 0);
+ else
+ {
+ SCM these_pure_heights = begin
+ ? scm_car (adjacent_pure_heights)
+ : scm_cdr (adjacent_pure_heights);
- if (!scm_is_pair (adjacent_pure_heights)
- || !scm_is_vector (scm_cdr (adjacent_pure_heights)))
- return Interval (0, 0);
+ if (scm_is_vector (these_pure_heights))
+ ret = combine_pure_heights (me, these_pure_heights, start, end);
+ else
+ ret = Interval (0, 0);
+ }
- return combine_pure_heights (me, scm_cdr (adjacent_pure_heights), start, end);
+ sp->cache_pure_property (cache_symbol, start, end, ly_interval2scm (ret));
+ return ret;
}
Interval
Axis_group_interface::begin_of_line_pure_height (Grob *me, int start)
{
- SCM adjacent_pure_heights = me->get_property ("adjacent-pure-heights");
-
- if (!scm_is_pair (adjacent_pure_heights)
- || !scm_is_vector (scm_car (adjacent_pure_heights)))
- return Interval (0, 0);
+ return part_of_line_pure_height (me, true, start, start + 1);
+}
- return combine_pure_heights (me, scm_car (adjacent_pure_heights), start, start+1);
+Interval
+Axis_group_interface::rest_of_line_pure_height (Grob *me, int start, int end)
+{
+ return part_of_line_pure_height (me, false, start, end);
}
Interval
we can assume additivity and cache things nicely. */
Grob *p = me->get_parent (Y_AXIS);
if (p && Align_interface::has_interface (p))
- return Axis_group_interface::cached_pure_height (me, start, end);
+ return Axis_group_interface::sum_partial_pure_heights (me, start, end);
Grob *common = unsmob_grob (me->get_object ("pure-Y-common"));
extract_grob_set (me, "pure-relevant-grobs", elts);
return busy;
}
+
+bool
+check_repeat_count_visibility (Context const *context, SCM count)
+{
+ SCM proc = context->get_property ("repeatCountVisibility");
+ return (ly_is_procedure (proc)
+ && to_boolean (scm_call_2 (proc,
+ count,
+ context->self_scm ())));
+}
--- /dev/null
+/*
+ This file is part of LilyPond, the GNU music typesetter.
+
+ Copyright (C) 2011 Neil Puttock <n.puttock@gmail.com>
+
+ 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 <http://www.gnu.org/licenses/>.
+*/
+
+#include "engraver.hh"
+#include "global-context.hh"
+#include "international.hh"
+#include "item.hh"
+#include "side-position-interface.hh"
+#include "stream-event.hh"
+#include "warn.hh"
+
+#include "translator.icc"
+
+class Double_percent_repeat_engraver : public Engraver
+{
+public:
+ TRANSLATOR_DECLARATIONS (Double_percent_repeat_engraver);
+
+protected:
+ Stream_event *percent_event_;
+
+ // moment (global time) where percent started
+ Moment start_mom_;
+
+ DECLARE_TRANSLATOR_LISTENER (double_percent);
+
+ void process_music ();
+};
+
+Double_percent_repeat_engraver::Double_percent_repeat_engraver ()
+{
+ percent_event_ = 0;
+}
+
+IMPLEMENT_TRANSLATOR_LISTENER (Double_percent_repeat_engraver, double_percent);
+void
+Double_percent_repeat_engraver::listen_double_percent (Stream_event *ev)
+{
+ if (!percent_event_)
+ {
+ Moment meas_len (robust_scm2moment (get_property ("measureLength"),
+ Moment (1)));
+ start_mom_ = now_mom () + meas_len;
+ get_global_context ()->add_moment_to_process (start_mom_);
+ percent_event_ = ev;
+ }
+ else
+ ASSIGN_EVENT_ONCE (percent_event_, ev);
+}
+
+void
+Double_percent_repeat_engraver::process_music ()
+{
+ if (percent_event_ && now_mom ().main_part_ == start_mom_.main_part_)
+ {
+ Item *double_percent = make_item ("DoublePercentRepeat",
+ percent_event_->self_scm ());
+
+ SCM count = percent_event_->get_property ("repeat-count");
+ if (count != SCM_EOL && to_boolean (get_property ("countPercentRepeats"))
+ && check_repeat_count_visibility (context (), count))
+ {
+ Item *double_percent_counter
+ = make_item ("DoublePercentRepeatCounter",
+ percent_event_->self_scm ());
+
+ SCM text = scm_number_to_string (count, scm_from_int (10));
+ double_percent_counter->set_property ("text", text);
+
+ Side_position_interface::add_support (double_percent_counter,
+ double_percent);
+ double_percent_counter->set_parent (double_percent, Y_AXIS);
+ double_percent_counter->set_parent (double_percent, X_AXIS);
+ }
+ // forbid breaks on a % line
+ context ()->get_score_context ()->set_property ("forbidBreak",
+ SCM_BOOL_T);
+ percent_event_ = 0;
+ }
+}
+
+ADD_TRANSLATOR (Double_percent_repeat_engraver,
+ /* doc */
+ "Make double measure repeats.",
+
+ /* create */
+ "DoublePercentRepeat "
+ "DoublePercentRepeatCounter ",
+
+ /* read */
+ "countPercentRepeats "
+ "measureLength "
+ "repeatCountVisibility ",
+
+ /* write */
+ "forbidBreak "
+ );
Grob *common, Axis);
static Interval relative_pure_height (Grob *me, int start, int end);
static Interval combine_pure_heights (Grob *me, SCM, int, int);
- static Interval cached_pure_height (Grob *me, int, int);
+ static Interval sum_partial_pure_heights (Grob *me, int, int);
static Interval begin_of_line_pure_height (Grob *me, int);
static Interval rest_of_line_pure_height (Grob *me, int, int);
+ static Interval part_of_line_pure_height (Grob *me, bool begin, int, int);
static Skyline_pair skyline_spacing (Grob *me, vector<Grob*> elements);
static void add_element (Grob *me, Grob *);
Moment measure_position (Context const *context, Duration const *dur);
Rational measure_length (Context const *context);
int measure_number (Context const *context);
+
+bool check_repeat_count_visibility (Context const *context, SCM count);
+
void set_context_property_on_children (Context *trans, SCM sym, SCM val);
/* Shorthand for creating and broadcasting stream events. */
SCM evict_from_alist (SCM, SCM, SCM);
#endif /* CONTEXT_HH */
-
DECLARE_SCHEME_CALLBACK (beat_slash, (SCM));
DECLARE_SCHEME_CALLBACK (double_percent, (SCM));
static Stencil x_percent (Grob *, int);
- static Stencil brew_slash (Grob *);
+ static Stencil brew_slash (Grob *, int);
};
#endif /* PERCENT_REPEAT_ITEM_HH */
DECLARE_GROB_INTERFACE();
virtual System *get_system () const;
+ SCM get_cached_pure_property (SCM sym, int start, int end);
+ void cache_pure_property (SCM sym, int start, int end, SCM value);
+
protected:
+ SCM pure_property_cache_;
+
void set_my_columns ();
virtual Grob *clone () const;
virtual void do_break_processing ();
Spanner *sp = dynamic_cast<Spanner *> (me);
Stencil r = Percent_repeat_item_interface::x_percent (me, 1);
+ r.translate_axis (-r.extent (X_AXIS).center (), X_AXIS);
// ugh copy & paste.
discarded after a call to set_current_breakpoints, since that Line_division
refers to a subset of chunks which might be different from the current
subset of chunks under consideration.
+
+ HOW TO WRITE A PAGE BREAKING ALGORITHM
+ All page breakers supported by this class work more-or-less in the same way.
+ First, they request a particular number of systems by saying
+ set_current_breakpoints (0, last_break_position (), system_count)
+ (never mind what the first two arguments do, I'll get to them later).
+ Alternatively, you can do
+ set_to_ideal_line_configuration (0, last_break_position ()),
+ and the number of systems will be automatically chosen according to what
+ the line breaker wants.
+
+ If there are multiple scores, there will be many different ways to achieve
+ a certain number of lines. You can see how many alternatives are available
+ with current_configuration_count (). For every i from 0 to
+ current_configuration_count ()-1, you can see the line division of the
+ corresponding configuration with current_configuration (i), or you can try
+ out various page configurations with one of the space_systems_xxx or
+ pack_systems_xxx functions. The first argument to each of these functions
+ is the configuration index.
+
+ When you're done trying out configurations and you've picked the one
+ you want, do
+ break_into_pieces (0, last_break_position (), line_division_that_you_want);
+ return make_pages (systems_per_page, systems ());
+ where systems_per_page is a vector of numbers telling how many systems are
+ on each page. You can get your systems_per_page vector by looking inside
+ the Page_spacing_results that are returned by space_systems_xxx or
+ pack_systems_xxx.
+
+ A note on performance: set_current_breakpoints is EXPONENTIALLY SLOW unless
+ you constrain it by giving it a lower or an upper bound on the configurations
+ it looks for. Optimal_page_breaking, for example, works by trying
+ out a bunch of configurations, increasing the system count by one, trying
+ again and so on. Each time we increase the system count, we assume that the
+ best new configurations are going to be elementwise larger than the
+ best configuration for the previous system count (in other words, we're going
+ to get a new configuration just by adding an extra line to sone score
+ and leaving the rest the same). Therefore, we pass the best previous line
+ division as an lower bound to set_current_breakpoints.
+
+ Now you should be in a position to understand Optimal_page_breaking::solve.
+ Go ahead and read that before finding out, in the next paragraph,
+ what the first two arguments to set_current_breakpoints do.
+
+ "BREAKS"
+ Sometimes, it's useful to run this whole page-breaking machinery on a subset
+ of the book. To do this, you can mark certain "breaks" in the book (a poor
+ choice of name, perhaps, since a "break" here is different from a page break)
+ and you can run page breaking between any two breaks. You mark your breaks
+ by providing a Break_predicate (and, if you want, a Prob_break_predicate)
+ to Page_breaking's constructor. You then choose a subset of your book
+ by passing the starting and ending breaks to set_current_breakpoints. You
+ can see an example of this in Page_turn_page_breaking, where there is a break
+ everywhere that a page turn is allowed.
*/
#include "page-breaking.hh"
Real
Page_layout_problem::get_fixed_spacing (Grob *before, Grob *after, int spaceable_index, bool pure, int start, int end)
{
+ Spanner *after_sp = dynamic_cast<Spanner*> (after);
+ SCM cache_symbol = (is_spaceable (before) && is_spaceable (after))
+ ? ly_symbol2scm ("spaceable-fixed-spacing")
+ : ly_symbol2scm ("loose-fixed-spacing");
+ if (pure)
+ {
+ // The result of this function doesn't depend on "end," so we can reduce the
+ // size of the cache by ignoring it.
+ SCM cached = after_sp->get_cached_pure_property (cache_symbol, start, 0);
+ if (scm_is_number (cached))
+ return robust_scm2double (cached, 0.0);
+ }
+
SCM spec = Page_layout_problem::get_spacing_spec (before, after, pure, start, end);
Real ret = -infinity_f;
Real stretchability = 0;
ret = max (ret, scm_to_double (forced));
}
}
+
+ // Cache the result. As above, we ignore "end."
+ if (pure)
+ after_sp->cache_pure_property (cache_symbol, start, 0, scm_from_double (ret));
+
return ret;
}
*/
-#include "score-engraver.hh"
-
-#include "bar-line.hh"
+#include "engraver.hh"
#include "global-context.hh"
#include "international.hh"
#include "item.hh"
-#include "misc.hh"
-#include "repeated-music.hh"
#include "side-position-interface.hh"
#include "spanner.hh"
#include "stream-event.hh"
#include "translator.icc"
-/*
-* TODO: Create separate Double_percent_repeat_engraver?
-* Or, at least move double percent handling to Slash_repeat_engraver
-*/
-
class Percent_repeat_engraver : public Engraver
{
void typeset_perc ();
- bool check_count_visibility (SCM count);
+
public:
TRANSLATOR_DECLARATIONS (Percent_repeat_engraver);
protected:
Stream_event *percent_event_;
- /// moment (global time) where percent started.
- Moment stop_mom_;
+ // moment (global time) where percent started
Moment start_mom_;
-
- enum Repeat_sign_type
- {
- UNKNOWN,
- MEASURE,
- DOUBLE_MEASURE,
- };
- Repeat_sign_type repeat_sign_type_;
+ // moment (global time) where percent should end
+ Moment stop_mom_;
Spanner *percent_;
Spanner *percent_counter_;
-
Grob *first_command_column_;
Moment command_moment_;
-
-protected:
+
virtual void finalize ();
DECLARE_TRANSLATOR_LISTENER (percent);
- void stop_translation_timestep ();
void start_translation_timestep ();
+ void stop_translation_timestep ();
void process_music ();
};
{
if (now_mom ().main_part_ != command_moment_.main_part_)
{
- first_command_column_ = unsmob_grob (get_property ("currentCommandColumn"));
+ first_command_column_
+ = unsmob_grob (get_property ("currentCommandColumn"));
command_moment_ = now_mom ();
}
if (percent_)
typeset_perc ();
percent_event_ = 0;
- repeat_sign_type_ = UNKNOWN;
}
}
if (!percent_event_)
{
Moment body_length = get_event_length (ev);
- Moment meas_len (robust_scm2moment (get_property ("measureLength"),
- Moment (1)));
- if (meas_len == body_length)
- {
- repeat_sign_type_ = MEASURE;
- start_mom_ = now_mom ();
- stop_mom_ = now_mom () + body_length;
- get_global_context ()->add_moment_to_process (stop_mom_);
- }
- else if (Moment (2) * meas_len == body_length)
- {
- repeat_sign_type_ = DOUBLE_MEASURE;
- start_mom_ = now_mom () + meas_len;
- stop_mom_ = now_mom () + body_length; /* never used */
- get_global_context ()->add_moment_to_process (start_mom_);
- }
- else
- {
- /*
- don't warn about percent repeats: slash repeats are not
- exactly 1 or 2 measures long.
- */
- return;
- }
+ start_mom_ = now_mom ();
+ stop_mom_ = now_mom () + body_length;
+ get_global_context ()->add_moment_to_process (stop_mom_);
percent_event_ = ev;
}
else
- /* print a warning: no assignment happens because
- percent_event_ != 0 */
- ASSIGN_EVENT_ONCE (percent_event_, ev);
+ {
+ /*
+ print a warning: no assignment happens because
+ percent_event_ != 0
+ */
+ ASSIGN_EVENT_ONCE (percent_event_, ev);
+ }
}
void
Percent_repeat_engraver::process_music ()
{
- if (percent_event_ && now_mom ().main_part_ == start_mom_.main_part_)
+ if (percent_event_
+ && now_mom ().main_part_ == start_mom_.main_part_)
{
- if (repeat_sign_type_ == MEASURE)
- {
- if (percent_)
- typeset_perc ();
-
- percent_ = make_spanner ("PercentRepeat", percent_event_->self_scm ());
-
- Grob *col = first_command_column_;
- percent_->set_bound (LEFT, col);
-
- SCM count = percent_event_->get_property ("repeat-count");
- if (count != SCM_EOL && to_boolean (get_property ("countPercentRepeats"))
- && check_count_visibility (count))
- {
- percent_counter_
- = make_spanner ("PercentRepeatCounter", percent_event_->self_scm ());
-
- SCM text = scm_number_to_string (count, scm_from_int (10));
- percent_counter_->set_property ("text", text);
- percent_counter_->set_bound (LEFT, col);
- Side_position_interface::add_support (percent_counter_,
- percent_);
- percent_counter_->set_parent (percent_, Y_AXIS);
- }
- else
- percent_counter_ = 0;
- }
- else if (repeat_sign_type_ == DOUBLE_MEASURE)
+ if (percent_)
+ typeset_perc ();
+
+ percent_ = make_spanner ("PercentRepeat", percent_event_->self_scm ());
+
+ Grob *col = first_command_column_;
+ percent_->set_bound (LEFT, col);
+
+ SCM count = percent_event_->get_property ("repeat-count");
+ if (count != SCM_EOL && to_boolean (get_property ("countPercentRepeats"))
+ && check_repeat_count_visibility (context (), count))
{
- Item *double_percent = make_item ("DoublePercentRepeat", percent_event_->self_scm ());
-
- SCM count = percent_event_->get_property ("repeat-count");
- if (count != SCM_EOL && to_boolean (get_property ("countPercentRepeats"))
- && check_count_visibility (count))
- {
- Item *double_percent_counter = make_item ("DoublePercentRepeatCounter",
- percent_event_->self_scm ());
-
- SCM text = scm_number_to_string (count,
- scm_from_int (10));
- double_percent_counter->set_property ("text", text);
-
- Side_position_interface::add_support (double_percent_counter,
- double_percent);
- double_percent_counter->set_parent (double_percent, Y_AXIS);
- double_percent_counter->set_parent (double_percent, X_AXIS);
- }
-
- /* forbid breaks on a % line. Should forbid all breaks, really. */
- context ()->get_score_context ()->set_property ("forbidBreak", SCM_BOOL_T);
-
- /* No more processing needed. */
- repeat_sign_type_ = UNKNOWN;
+ percent_counter_ = make_spanner ("PercentRepeatCounter",
+ percent_event_->self_scm ());
+
+ SCM text = scm_number_to_string (count, scm_from_int (10));
+ percent_counter_->set_property ("text", text);
+ percent_counter_->set_bound (LEFT, col);
+ Side_position_interface::add_support (percent_counter_, percent_);
+ percent_counter_->set_parent (percent_, Y_AXIS);
}
+ else
+ percent_counter_ = 0;
}
}
void
Percent_repeat_engraver::typeset_perc ()
{
- if (percent_)
- {
- Grob *col = first_command_column_;
+ Grob *col = first_command_column_;
- percent_->set_bound (RIGHT, col);
- percent_ = 0;
-
- if (percent_counter_)
- percent_counter_->set_bound (RIGHT, col);
- percent_counter_ = 0;
- }
-}
+ percent_->set_bound (RIGHT, col);
+ percent_ = 0;
-bool
-Percent_repeat_engraver::check_count_visibility (SCM count)
-{
- SCM proc = get_property ("repeatCountVisibility");
- return (ly_is_procedure (proc) && to_boolean (scm_call_2 (proc,
- count,
- context ()->self_scm ())));
+ if (percent_counter_)
+ percent_counter_->set_bound (RIGHT, col);
+ percent_counter_ = 0;
}
-
void
Percent_repeat_engraver::stop_translation_timestep ()
{
ADD_TRANSLATOR (Percent_repeat_engraver,
/* doc */
- "Make whole bar and double bar repeats.",
+ "Make whole measure repeats.",
/* create */
- "DoublePercentRepeat "
- "DoublePercentRepeatCounter "
"PercentRepeat "
"PercentRepeatCounter ",
/* read */
"countPercentRepeats "
"currentCommandColumn "
- "measureLength "
"repeatCountVisibility ",
/* write */
- "forbidBreak "
+ ""
);
*/
#include "percent-repeat-item.hh"
+
#include "item.hh"
-#include "lookup.hh"
#include "font-interface.hh"
+#include "lookup.hh"
+#include "stream-event.hh"
Stencil
-Percent_repeat_item_interface::brew_slash (Grob *me)
+Percent_repeat_item_interface::brew_slash (Grob *me, int count)
{
Real slope = robust_scm2double (me->get_property ("slope"), 1);
Real wid = 2.0 / slope;
todo: check out if in staff-rule thickness normally.
*/
Real thick = robust_scm2double (me->get_property ("thickness"), 1);
- Stencil m = Lookup::repeat_slash (wid, slope, thick);
+ Stencil slash = Lookup::repeat_slash (wid, slope, thick);
+ Stencil m = slash;
+
+ Real slash_neg_kern =
+ robust_scm2double (me->get_property ("slash-negative-kern"), 1.6);
+ for (int i = count - 1; i--;)
+ m.add_at_edge (X_AXIS, RIGHT, slash, -slash_neg_kern);
+
m.translate_axis (-m.extent (Y_AXIS).center (), Y_AXIS);
return m;
}
Stencil
Percent_repeat_item_interface::x_percent (Grob *me, int count)
{
- Stencil m;
- Stencil s = brew_slash (me);
+ Stencil m = brew_slash (me, count);
Real dot_neg_kern =
robust_scm2double (me->get_property ("dot-negative-kern"), 0.75);
- Real slash_neg_kern =
- robust_scm2double (me->get_property ("slash-negative-kern"), 1.6);
- for (int i = count; i--;)
- m.add_at_edge (X_AXIS, RIGHT, s, -slash_neg_kern);
Stencil d1 = Font_interface::get_default_font (me)->find_by_name ("dots.dot");
Stencil d2 = d1;
d1.translate_axis (0.5, Y_AXIS);
m.add_at_edge (X_AXIS, LEFT, d1, -dot_neg_kern);
m.add_at_edge (X_AXIS, RIGHT, d2, -dot_neg_kern);
- m.translate_axis (- m.extent (X_AXIS).center (), X_AXIS);
return m;
}
{
Grob *me = unsmob_grob (grob);
Stencil m = x_percent (me, 2);
+ m.translate_axis (-m.extent (X_AXIS).center (), X_AXIS);
return m.smobbed_copy ();
}
Percent_repeat_item_interface::beat_slash (SCM grob)
{
Grob *me = unsmob_grob (grob);
- Stencil m = brew_slash (me);
+ Stream_event *cause = unsmob_stream_event (me->get_property ("cause"));
+ int count = robust_scm2int (cause->get_property ("slash-count"), 1);
+
+ Stencil m;
+ if (count == 0)
+ m = x_percent (me, 2);
+ else
+ m = brew_slash (me, count);
return m.smobbed_copy ();
}
ADD_INTERFACE (Percent_repeat_item_interface,
"Repeats that look like percent signs.",
-
+
/* properties */
"dot-negative-kern "
"slash-negative-kern "
"slope "
"thickness "
);
-
along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "context.hh"
#include "input.hh"
#include "repeated-music.hh"
#include "sequential-iterator.hh"
SCM
Percent_repeat_iterator::get_music_list () const
{
- /* TODO: Distinction between percent, double-percent and slash */
Music *mus = get_music ();
Music *child = Repeated_music::body (mus);
SCM length = child->get_length ().smobbed_copy ();
SCM child_list = SCM_EOL;
+ Moment measure_len = measure_length (get_outlet ());
+ Moment music_len = robust_scm2moment (length, Moment (0));
+
+ string event_type;
+ SCM slash_count = SCM_EOL;
+
+ if (measure_len == music_len)
+ event_type = "PercentEvent";
+ else if (measure_len * Moment (2) == music_len)
+ event_type = "DoublePercentEvent";
+ else
+ {
+ slash_count
+ = scm_call_1 (ly_lily_module_constant ("calc-repeat-slash-count"),
+ child->self_scm ());
+ event_type = "RepeatSlashEvent";
+ }
int repeats = scm_to_int (mus->get_property ("repeat-count"));
for (int i = repeats; i > 1; i--)
{
- Music *percent = make_music_by_name (ly_symbol2scm ("PercentEvent"));
+ Music *percent = make_music_by_name (ly_symbol2scm (event_type.c_str ()));
percent->set_spot (*mus->origin ());
percent->set_property ("length", length);
if (repeats > 1)
- percent->set_property ("repeat-count", scm_from_int (i));
+ {
+ percent->set_property ("repeat-count", scm_from_int (i));
+ if (event_type == "RepeatSlashEvent")
+ percent->set_property ("slash-count", slash_count);
+ }
child_list = scm_cons (percent->unprotect (), child_list);
}
ret->push_front (Building (-infinity_f, -infinity_f, -infinity_f, infinity_f));
}
+/*
+ Given Building 'b' with starting wall location 'start', extend each side
+ with a sloped roofline of width 'horizon_padding'; put the skyline in 'ret'
+*/
static void
single_skyline (Building b, Real start, Real horizon_padding, list<Building> *const ret)
{
{
list<Building> result;
single_skyline (Building (boxes->front (), horizon_padding, horizon_axis, sky),
- boxes->front ()[horizon_axis][LEFT], horizon_padding, &result);
+ boxes->front ()[horizon_axis][LEFT] - horizon_padding,
+ horizon_padding, &result);
return result;
}
{
sky_ = sky;
Building front (b, horizon_padding, horizon_axis, sky);
- single_skyline (front, b[horizon_axis][LEFT], horizon_padding, &buildings_);
+ single_skyline (front, b[horizon_axis][LEFT] - horizon_padding,
+ horizon_padding, &buildings_);
}
void
return;
my_bld.splice (my_bld.begin (), buildings_);
- single_skyline (Building (b, horizon_padding, a, sky_), b[a][LEFT], horizon_padding, &other_bld);
+ single_skyline (Building (b, horizon_padding, a, sky_), b[a][LEFT] - horizon_padding,
+ horizon_padding, &other_bld);
internal_merge_skyline (&other_bld, &my_bld, &buildings_);
}
along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "bar-line.hh"
-#include "global-context.hh"
-#include "international.hh"
#include "item.hh"
-#include "misc.hh"
-#include "repeated-music.hh"
-#include "score-engraver.hh"
-#include "spanner.hh"
+#include "engraver.hh"
#include "stream-event.hh"
-#include "warn.hh"
#include "translator.icc"
-/**
- This acknowledges repeated music with "percent" style. It typesets
- a slash sign.
+/*
+ This acknowledges repeated music with "percent" style. It typesets
+ a slash sign or double percent sign.
*/
class Slash_repeat_engraver : public Engraver
{
protected:
Stream_event *slash_;
protected:
- DECLARE_TRANSLATOR_LISTENER (percent);
+ DECLARE_TRANSLATOR_LISTENER (repeat_slash);
void process_music ();
};
slash_ = 0;
}
-IMPLEMENT_TRANSLATOR_LISTENER (Slash_repeat_engraver, percent);
+IMPLEMENT_TRANSLATOR_LISTENER (Slash_repeat_engraver, repeat_slash);
void
-Slash_repeat_engraver::listen_percent (Stream_event *ev)
+Slash_repeat_engraver::listen_repeat_slash (Stream_event *ev)
{
- /*todo: separate events for percent and slash */
- Moment meas_length
- = robust_scm2moment (get_property ("measureLength"), Moment (0));
-
- if (get_event_length (ev) < meas_length)
ASSIGN_EVENT_ONCE (slash_, ev);
-
- /*
- don't warn if nothing happens: this can happen if there are whole
- measure repeats.
- */
}
void
{
if (slash_)
{
- make_item ("RepeatSlash", slash_->self_scm ());
+ SCM count = slash_->get_property ("slash-count");
+ if (scm_to_int (count) == 0)
+ make_item ("DoubleRepeatSlash", slash_->self_scm ());
+ else
+ make_item ("RepeatSlash", slash_->self_scm ());
slash_ = 0;
}
}
"Make beat repeats.",
/* create */
+ "DoubleRepeatSlash "
"RepeatSlash ",
/* read */
- "measureLength ",
+ "",
/* write */
""
{
break_index_ = 0;
spanned_drul_.set (0, 0);
+ pure_property_cache_ = SCM_UNDEFINED;
}
Spanner::Spanner (Spanner const &s)
: Grob (s)
{
spanned_drul_.set (0, 0);
+ pure_property_cache_ = SCM_UNDEFINED;
}
Real
void
Spanner::derived_mark () const
{
+ scm_gc_mark (pure_property_cache_);
+
Direction d = LEFT;
do
if (spanned_drul_[d])
return SCM_UNSPECIFIED;
}
+SCM
+Spanner::get_cached_pure_property (SCM sym, int start, int end)
+{
+ // The pure property cache is indexed by (name start . end), where name is
+ // a symbol, and start and end are numbers referring to the starting and
+ // ending column ranks of the current line.
+ if (scm_hash_table_p (pure_property_cache_) == SCM_BOOL_F)
+ return SCM_UNDEFINED;
+
+ SCM key = scm_cons (sym, scm_cons (scm_from_int (start), scm_from_int (end)));
+ return scm_hash_ref (pure_property_cache_, key, SCM_UNDEFINED);
+}
+
+void
+Spanner::cache_pure_property (SCM sym, int start, int end, SCM val)
+{
+ if (scm_hash_table_p (pure_property_cache_) == SCM_BOOL_F)
+ pure_property_cache_ = scm_c_make_hash_table (17);
+
+ SCM key = scm_cons (sym, scm_cons (scm_from_int (start), scm_from_int (end)));
+ scm_hash_set_x (pure_property_cache_, key, val);
+}
+
ADD_INTERFACE (Spanner,
"Some objects are horizontally spanned between objects. For"
" example, slurs, beams, ties, etc. These grobs form a subtype"
\consists "New_fingering_engraver"
\consists "Chord_tremolo_engraver"
+ \consists "Double_percent_repeat_engraver"
\consists "Percent_repeat_engraver"
\consists "Slash_repeat_engraver"
\consists "Part_combine_engraver"
compoundMeter =
#(define-music-function (parser location args) (pair?)
- (_i "Create compound time signatures. The argument is a Scheme list of
-lists. Each list describes one fraction, with the last entry being the
-denominator, while the first entries describe the summands in the
-enumerator. If the time signature consists of just one fraction,
+ (_i "Create compound time signatures. The argument is a Scheme list of
+lists. Each list describes one fraction, with the last entry being the
+denominator, while the first entries describe the summands in the
+enumerator. If the time signature consists of just one fraction,
the list can be given directly, i.e. not as a list containing a single list.
-For example, a time signature of (3+1)/8 + 2/4 would be created as
-@code{\\compoundMeter #'((3 1 8) (2 4))}, and a time signature of (3+2)/8
-as @code{\\compoundMeter #'((3 2 8))} or shorter
+For example, a time signature of (3+1)/8 + 2/4 would be created as
+@code{\\compoundMeter #'((3 1 8) (2 4))}, and a time signature of (3+2)/8
+as @code{\\compoundMeter #'((3 2 8))} or shorter
@code{\\compoundMeter #'(3 2 8)}.")
(let* ((mlen (calculate-compound-measure-length args))
(beat (calculate-compound-base-beat args))
(_i "Display chords in @var{arg} as clusters.")
(music-map note-to-cluster arg))
+modalInversion =
+#(define-music-function (parser location around to scale music)
+ (ly:music? ly:music? ly:music? ly:music?)
+ (_i "Invert @var{music} about @var{around} using @var{scale} and
+transpose from @var{around} to @var{to}.")
+ (let ((inverter (make-modal-inverter around to scale)))
+ (change-pitches music inverter)
+ music))
+
+modalTranspose =
+#(define-music-function (parser location from to scale music)
+ (ly:music? ly:music? ly:music? ly:music?)
+ (_i "Transpose @var{music} from pitch @var{from} to pitch @var{to}
+using @var{scale}.")
+ (let ((transposer (make-modal-transposer from to scale)))
+ (change-pitches music transposer)
+ music))
+
musicMap =
#(define-music-function (parser location proc mus) (procedure? ly:music?)
(_i "Apply @var{proc} to @var{mus} and all of the music it contains.")
(music-map proc mus))
-
-
%% noPageBreak and noPageTurn are music functions (not music indentifiers),
%% because music identifiers are not allowed at top-level.
noPageBreak =
reference-note))
+retrograde =
+#(define-music-function (parser location music)
+ (ly:music?)
+ (_i "Return @var{music} in reverse order.")
+ (retrograde-music music))
+
revertTimeSignatureSettings =
#(define-music-function
(parser location time-signature)
website-pictures:
mkdir -p $(OUT)/website/pictures
- cp $(PICTURES)/* $(OUT)/website/pictures
- ln -sf website/pictures $(OUT)/pictures
+ if [ -d $(PICTURES) ]; \
+ then \
+ cp $(PICTURES)/* $(OUT)/website/pictures ; \
+ ln -sf website/pictures $(OUT)/pictures ;\
+ fi
website-examples:
mkdir -p $(OUT)/website/ly-examples
- cp $(EXAMPLES)/* $(OUT)/website/ly-examples
+ if [ -d $(EXAMPLES) ]; \
+ then \
+ cp $(EXAMPLES)/* $(OUT)/website/ly-examples ; \
+ fi
web-post:
$(WEB_POST) $(OUT)/website
# This file is distributed under the same license as the lilypond package.
# Erwin Dieterich <bamse@gmx.de>, 1999
# Roland Stigge <stigge@antcom.de>, 2003, 2004, 2005, 2006, 2007
-#
-# Till Paala <till.rettig@gmx.de>, 2007, 2008, 2009, 2010.
+# Till Paala <till.rettig@gmx.de>, 2007, 2008, 2009, 2010, 2011.
msgid ""
msgstr ""
-"Project-Id-Version: lilypond 2.13.42\n"
+"Project-Id-Version: lilypond 2.13.48\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
"POT-Creation-Date: 2010-12-06 22:30+0100\n"
-"PO-Revision-Date: 2010-12-18 21:09+0200\n"
+"PO-Revision-Date: 2011-02-12 20:51+0200\n"
"Last-Translator: Till Paala <till.rettig@gmx.de>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"which will produce the closest match to @var{target-val} when\n"
"applied to function @var{getter}."
msgstr ""
+"Finde den Index zwischen @var{start} und @var{end} (eine ganze Zahl),\n"
+"die den nächstmöglichen Treffer für @var{target-val} findet,\n"
+"wenn auf die Funktion @var{getter} angewandt."
#: lily-library.scm:821
#, scheme-format
# Greek translation for lilypond.
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009, 2010 Free Software Foundation, Inc.
# This file is distributed under the same license as the lilypond package.
-# Michael Kotsarinis <mk73628@gmail.com>, 2010
-#
+# Michael Kotsarinis <mk73628@gmail.com>, 2010, 2011.
msgid ""
msgstr ""
-"Project-Id-Version: lilypond-2.13.42\n"
+"Project-Id-Version: lilypond-2.13.48\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
"POT-Creation-Date: 2010-12-06 22:30+0100\n"
-"PO-Revision-Date: 2010-12-13 22:22+0200\n"
+"PO-Revision-Date: 2011-02-14 09:29+0200\n"
"Last-Translator: Michael Kotsarinis <mk73628@gmail.com>\n"
"Language-Team: Greek <team@lists.gnome.gr>\n"
+"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
-"Plural-Forms: plurals=2; plural=(n!=1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.6.1\n"
"X-Poedit-Language: Greek\n"
"X-Poedit-Country: GREECE\n"
-# translation of lilypond-2.13.42.po to Español
+# translation of lilypond-2.13.48.po to Español
# Spanish translation of GNU Lilypond - http://lilypond.org
-# Copyright (C) 2002, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
#
# This file is distributed under the same license as the lilypond package.
#
# Quique <quique@sindominio.net>, 2002, 2004.
# Daniel Tonda <daniel dot tonda (at) gmail dot com>, 2006.
-# Francisco Vila <francisco.vila@hispalinux.es>, 2007, 2008, 2009, 2010.
+# Francisco Vila <francisco.vila@hispalinux.es>, 2007, 2008, 2009, 2010, 2011.
# This file is distributed under the same license as the lilypond package.
msgid ""
msgstr ""
-"Project-Id-Version: lilypond-2.13.42\n"
+"Project-Id-Version: lilypond-2.13.48\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
"POT-Creation-Date: 2010-12-06 22:30+0100\n"
-"PO-Revision-Date: 2010-12-13 01:12+0100\n"
+"PO-Revision-Date: 2011-02-11 11:21+0100\n"
"Last-Translator: Francisco Vila <francisco.vila@hispalinux.es>\n"
"Language-Team: Spanish <es@li.org>\n"
+"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: convertrules.py:2358
msgid "Use grob closures iso. XY-offset-callbacks."
-msgstr "Utilizar las cerraduras de grob iso. XY-offset-callbacks."
+msgstr "Utilizar cerraduras de grob en lugar de XY-offset-callbacks."
#: convertrules.py:2420
msgid "foobar -> foo-bar for \\paper, \\layout"
#: midi2ly.py:882
msgid "quantise note starts on DUR"
-msgstr "cuantizar los comienzos de las notras sobre DUR"
+msgstr "cuantizar los comienzos de las notras sobre DURACIÓN"
#: midi2ly.py:885
msgid "DUR*NUM/DEN"
#: stem.cc:658
#, c-format
msgid "flag stroke `%s' not found"
-msgstr "no se encuentra el impacto «%s» de indicador"
+msgstr "no se encuentra la forma del glifo del corchete «%s»"
#: system.cc:197
#, c-format
# French translation of GNU/lilypond - http//lilypond.org
# Copyright © 2004 Free Software Foundation, Inc.
# Michel Robitaille <robitail@IRO.UMontreal.CA>, 1996-2007.
-# Jean-Charles Malahieude <lilyfan@orange.fr>, 2007-2010
+# Jean-Charles Malahieude <lilyfan@orange.fr>, 2007-2011
#
msgid ""
msgstr ""
-"Project-Id-Version: lilypond 2.13.42\n"
+"Project-Id-Version: lilypond 2.13.48\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
"POT-Creation-Date: 2010-12-06 22:30+0100\n"
-"PO-Revision-Date: 2010-12-11 18:02+0100\n"
+"PO-Revision-Date: 2011-02-13 15:12+0100\n"
"Last-Translator: Jean-Charles Malahieude <lilyfan@orange.fr>\n"
"Language-Team: French <traduc@traduc.org>\n"
+"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: convertrules.py:1349
msgid "attempting automatic \\figures conversion. Check results!"
msgstr ""
-"tentative de convertir automatiquement les \\figures. \n"
+"tentative de convesion automatique des \\figures. \n"
"Résultats à vérifier !"
#: convertrules.py:1400
"\n"
"as a substitution text."
msgstr ""
-"Un \\outputproperty a été localisé ;\n"
+"Un \\outputproperty a été détecté ;\n"
"éditer manuellement, en utilisant\n"
"\n"
" \\applyoutput #(outputproperty-compatibility %s '%s <GROB PROPRIÉTÉ VALEUR>)\n"
#: convertrules.py:2420
msgid "foobar -> foo-bar for \\paper, \\layout"
-msgstr "foobar -> foo-bar pour \\paper et \\layout"
+msgstr "taratata -> tara-tata pour \\paper et \\layout"
#: convertrules.py:2530
msgid "deprecate \\tempo in \\midi"
"\n"
"%s"
msgstr ""
-"Utiliser désormais \n"
+"Utiliser dorénavant \n"
"\n"
"%s"
#: convertrules.py:3080
msgid "Rename vertical spacing grob properties."
-msgstr "Renommage des propriétés d'objet d'espacement vertical."
+msgstr "Renommage des propriétés d'objet en matière d'espacement vertical."
#: convertrules.py:3096
msgid "Remove \\paper variables head-separation and foot-separation."
#: musicexp.py:848
#, python-format
msgid "Grace note with no following music: %s"
-msgstr "Apoggiature non suivie de musique :%s"
+msgstr "Apoggiature non suivie de musique : %s"
#: musicexp.py:1010
#, python-format
#: musicxml.py:520
#, python-format
msgid "Unable to find instrument for ID=%s\n"
-msgstr "Aucun instrument ne correspond à l'ID=%s\n"
+msgstr "Aucun instrument ne correspond à l'ID %s\n"
#: abc2ly.py:1373 convert-ly.py:87 lilypond-book.py:122 midi2ly.py:860
#, python-format
#: midi2ly.py:866
msgid "print absolute pitches"
-msgstr "Afficher des tons absolus"
+msgstr "Afficher des hauteurs absolues"
#: midi2ly.py:868 midi2ly.py:883
msgid "DUR"
#: midi2ly.py:872
msgid "print explicit durations"
-msgstr "ÉcriT des durées explicites"
+msgstr "Écrit des durées explicites"
#: midi2ly.py:876
msgid "set key: ALT=+sharps|-flats; MINOR=1"
#: musicxml2ly.py:864
msgid "Unable to extract key signature!"
-msgstr "Impossible de trouver l'armure."
+msgstr "Impossible de déterminer l'armure."
#: musicxml2ly.py:891
#, python-format
#: musicxml2ly.py:2694
msgid "use lxml.etree; uses less memory and cpu time"
msgstr ""
-"utilise lxml.etree pour consommer moins de mémoire \n"
+"utilise lxml.etree pour consommer moins de mémoire\n"
"et de temps processeur."
#: musicxml2ly.py:2700
#: musicxml2ly.py:2716
msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
-msgstr "utilise une autre définition liguistique (LANG), p.ex. deutsch l'allemand"
+msgstr "utilise une autre définition linguistique (LANG), p.ex. deutsch l'allemand"
#: musicxml2ly.py:2722
msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
#: musicxml2ly.py:2893
msgid "Input is compressed, extracting raw MusicXML data from stdin"
-msgstr "Le fichier d'entrée est compressé. Extraction des données MusicXML brutes"
+msgstr ""
+"Le fichier d'entrée est compressé.\n"
+"Extraction des données MusicXML brutes à partir de stdin"
#: musicxml2ly.py:2896
#, python-format
#: warn.cc:59
#, c-format
msgid "success: %s"
-msgstr "Succès de %s"
+msgstr "%s mené(e) à terme avec succès"
#: warn.cc:86 grob.cc:617 input.cc:97
#, c-format
#: auto-change-iterator.cc:74 change-iterator.cc:72
#, c-format
msgid "cannot change, already in translator: %s"
-msgstr "modification impossible, c'est déjà dans le traducteur : %s"
+msgstr "modification impossible, c'est déjà dans le translateur : %s"
#: axis-group-engraver.cc:94
msgid "Axis_group_engraver: vertical group already has a parent"
msgid "an outside-staff object should have a direction, defaulting to up"
msgstr ""
"un objet externe à la portée devrait avoir un positionnement.\n"
-"Placé par défaut au dessus."
+"Placé par défaut au-dessus."
#: bar-check-iterator.cc:84
#, c-format
#: beam-engraver.cc:147
msgid "already have a beam"
-msgstr "lien déjà présent"
+msgstr "ligature déjà présente"
#: beam-engraver.cc:230
msgid "unterminated beam"
-msgstr "lien non terminé"
+msgstr "ligature non terminée"
#: beam-engraver.cc:266 chord-tremolo-engraver.cc:150
msgid "stem must have Rhythmic structure"
#: beam-engraver.cc:274
msgid "stem does not fit in beam"
-msgstr "la hampe ne s'insère pas dans le lien"
+msgstr "la hampe ne s'insère pas dans la ligature"
#: beam-engraver.cc:275
msgid "beam was started here"
-msgstr "le lien a débuté ici"
+msgstr "la ligature a débuté ici"
#: beam-quanting.cc:314
msgid "no feasible beam position"
-msgstr "nulle part où positionner le lien"
+msgstr "nulle part où positionner une ligature"
#: beam.cc:171
msgid "removing beam with no stems"
-msgstr "suppression du lien ayant moins de deux hampes"
+msgstr "suppression d'une ligature ayant moins de deux hampes"
#: beam.cc:1116
msgid "no viable initial configuration found: may not find good beam slope"
msgstr ""
"pas de configuration initiale viable repérée : \n"
-"la pente du lien pourrait être inesthétique."
+"la pente de la ligature pourrait être inesthétique."
#: break-alignment-interface.cc:206
#, c-format
#: context-property.cc:42
msgid "need symbol arguments for \\override and \\revert"
-msgstr "nécessite des arguments symboliques pour \\override et \\revert"
+msgstr "\\override et \\revert requièrent des arguments symboliques"
#: context.cc:149
#, c-format
#: episema-engraver.cc:137
msgid "unterminated episema"
-msgstr "émisème non terminé"
+msgstr "épisème non terminé"
#: extender-engraver.cc:170 extender-engraver.cc:179
msgid "unterminated extender"
-msgstr "prolongation non terminée"
+msgstr "prolongation ou extenseur non terminé"
#: font-config-scheme.cc:152 font-config.cc:55
#, c-format
#: general-scheme.cc:542 output-ps.scm:48
msgid "Found infinity or nan in output. Substituting 0.0"
msgstr ""
-"La sortie contient l'infini ou une valeur non numérique. \n"
+"La sortie contient l'infini ou une valeur non numérique.\n"
"Substitution par 0.0"
#: glissando-engraver.cc:105
#: grob-interface.cc:68
#, c-format
msgid "Unknown interface `%s'"
-msgstr "Interface inconnue « %s »"
+msgstr "Interface inconnue : « %s »"
#: grob-interface.cc:79
#, c-format
#: key-signature-interface.cc:78
#, c-format
msgid "No glyph found for alteration: %s"
-msgstr "Pas de glyphe pour l'altération : %s"
+msgstr "Pas de glyphe pour l'altération « %s »"
#: key-signature-interface.cc:88
msgid "alteration not found"
#: lily-parser-scheme.cc:82
#, c-format
msgid "Changing working directory to: `%s'"
-msgstr "Modification du répertoire de travail pour : « %s »"
+msgstr "Modification du répertoire de travail pour « %s »"
#: lily-parser-scheme.cc:99
#, c-format
"dump header field FIELD to file\n"
"named BASENAME.FIELD"
msgstr ""
-"écrire le champ d'en-tête CHAMP dans le\n"
+"écrire le champ d'entête CHAMP dans le\n"
"fichier nommé BASENAME.CHAMP"
#: main.cc:160
#: main.cc:375
#, c-format
msgid "cannot change group id to: %d: %s"
-msgstr "impossible de changer l'identifiant de groupe en : %d : %s"
+msgstr "impossible de changer l'identifiant de groupe en %d : %s"
#: main.cc:381
#, c-format
msgid "cannot change user id to: %d: %s"
-msgstr "impossible de changer l'identifiant utilisateur en : %d : %s"
+msgstr "impossible de changer l'identifiant utilisateur en %d : %s"
#: main.cc:387
#, c-format
msgid "cannot change working directory to: %s: %s"
-msgstr "impossible de changer le répertoire de travail en : %s : %s"
+msgstr "impossible de changer le répertoire de travail en %s : %s"
#: main.cc:628
#, c-format
#: mensural-ligature-engraver.cc:96
msgid "ligature with less than 2 heads -> skipping"
-msgstr "ligature avec moins de 2 tête -> escamotage"
+msgstr "ligature avec moins de 2 têtes -> escamotage"
#: mensural-ligature-engraver.cc:123
msgid "cannot determine pitch of ligature primitive -> skipping"
#: mensural-ligature.cc:152
msgid "Mensural_ligature: unexpected case fall-through"
-msgstr "Mensural_ligature: cas inattendu et non interprétable"
+msgstr "Mensural_ligature : cas inattendu et non interprétable"
#: mensural-ligature.cc:203
msgid "Mensural_ligature: (join_right == 0)"
-msgstr "Mensural_ligature: (joint_right == 0)"
+msgstr "Mensural_ligature : (joint_right == 0)"
#: midi-item.cc:92
#, c-format
#: midi-stream.cc:55
#, c-format
msgid "cannot write to file: `%s'"
-msgstr "impossible d'écrire dans le fichier : « %s »"
+msgstr "impossible d'écrire dans le fichier « %s »"
#: minimal-page-breaking.cc:40 paper-score.cc:122
msgid "Calculating line breaks..."
#: music.cc:151
#, c-format
msgid "octave check failed; expected \"%s\", found: \"%s\""
-msgstr "Échec de vérification d'octave. Aurait dû être \"%s\", \"%s\" obtenu"
+msgstr ""
+"Échec de vérification d'octave.\n"
+"Aurait dû être \"%s\", \"%s\" obtenu"
#: music.cc:219
msgid "(normalized pitch)"
#: note-head.cc:76
#, c-format
msgid "none of note heads `%s' or `%s' found"
-msgstr "tête de note « %s » ou « %s » non trouvé(e)"
+msgstr "tête de note « %s » ou « %s » non trouvée"
#: note-heads-engraver.cc:76
msgid "NoteEvent without pitch"
#: open-type-font.cc:319 pango-font.cc:187
#, c-format
msgid "FT_Get_Glyph_Name () error: %s"
-msgstr "FT_Get_Glyph_Name () erreur : %s"
+msgstr "Erreur FT_Get_Glyph_Name () : %s"
#. find out the ideal number of pages
#: optimal-page-breaking.cc:60
#: optimal-page-breaking.cc:91
#, c-format
msgid "Fitting music on %d or %d pages..."
-msgstr "Répartition de la musique sur %d ou %d pages..."
+msgstr "Répartition de la musique sur %d à %d pages..."
#: optimal-page-breaking.cc:101 optimal-page-breaking.cc:155
#, c-format
#: page-turn-page-breaking.cc:168
#, c-format
msgid "page-turn-page-breaking: breaking from %d to %d"
-msgstr "Saut de page et tourne (page-turn-page-breaking) : coupure de %d à %d"
+msgstr ""
+"Saut de page et tourne (page-turn-page-breaking) :\n"
+"coupure entre %d et %d"
#: page-turn-page-breaking.cc:217
msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number."
"Glyph has no name, but font supports glyph naming.\n"
"Skipping glyph U+%0X, file %s"
msgstr ""
-"Le glyphe n'a pas de nom, mais la fonte prend en charge le nommage de glyphes.\n"
+"Le glyphe n'a pas de nom alors que la fonte prend en charge leur nommage.\n"
"Glyphe U+%0X ignoré dans le fichier %s"
#: pango-font.cc:241
#, c-format
msgid "no PostScript font name for font `%s'"
-msgstr "« %s » n'est pas un fichier PostScript"
+msgstr "« %s » n'est pas un fichier de fonte PostScript"
#: pango-font.cc:290
msgid "FreeType face has no PostScript font name"
#: paper-column-engraver.cc:233
msgid "forced break was overridden by some other event, should you be using bar checks?"
msgstr ""
-"Un saut explicite a été outrepassé par un autre événement. \n"
+"Un saut explicite a été outrepassé par un autre événement.\n"
"Positionnez quelques contrôles de mesure (bar check) pour vérifier."
#: paper-outputter-scheme.cc:41
#: relocate.cc:94
#, c-format
msgid "%s=%s (prepend)\n"
-msgstr "%s=%s (préfixage)\n"
+msgstr "%s=%s (ajout)\n"
#: relocate.cc:124
#, c-format
#: slur-engraver.cc:93
#, c-format
msgid "direction of %s invalid: %d"
-msgstr "la direction de %s n'est pas valide : %d"
+msgstr "l'orientation de %s n'est pas valide : %d"
#: slur-engraver.cc:162
msgid "unterminated slur"
#: time-signature.cc:94
#, c-format
msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr "symbole de chiffrage de mesure « %s » inconnu ; retour à un style numérique"
+msgstr ""
+"symbole de chiffrage de mesure « %s » inconnu ;\n"
+"retour à un style numérique"
#: translator-ctors.cc:65
#, c-format
#: ttf.cc:481 ttf.cc:530
#, c-format
msgid "font index %d too large for font `%s', using index 0"
-msgstr "index %d trop grand pour la fonte « %s » ; réindexé sur 0"
+msgstr ""
+"index %d trop grand pour la fonte « %s » ;\n"
+"réindexé sur 0"
#: ttf.cc:513 ttf.cc:565
msgid "font index must be non-negative, using index 0"
#: lexer.ll:485
msgid "Brace found at end of lyric. Did you forget a space?"
-msgstr "Accolade repérée à la fin d'une parole. Manquerait-il un espace ?"
+msgstr "Accolade repérée à la fin d'une parole. Manquerait-il une espace ?"
#: lexer.ll:595
msgid "Brace found at end of markup. Did you forget a space?"
-msgstr "Accolade repérée à la fin d'un \"markup\". Manquerait-il un espace ?"
+msgstr "Accolade repérée à la fin d'un \"markup\". Manquerait-il une espace ?"
#: lexer.ll:699
#, c-format
msgid "file too old: %s (oldest supported: %s)"
msgstr ""
"%s est plus qu'obsolète ;\n"
-"le plus ancien pouvant être supporté est : %s"
+"le plus ancien pouvant être supporté est %s"
#: lexer.ll:925 lexer.ll:926
msgid "consider updating the input with the convert-ly script"
#: backend-library.scm:178
#, scheme-format
msgid "Writing header field `~a' to `~a'..."
-msgstr "écriture du champ d'en-tête « ~a » dans « ~a »..."
+msgstr "écriture du champ d'entête « ~a » dans « ~a »..."
#: backend-library.scm:228
#, scheme-format
msgid "missing stencil expression `~S'"
-msgstr "absence d'expression stencil ~S"
+msgstr "absence d'expression stencil « ~S »"
#: chord-entry.scm:50
#, scheme-format
msgid "Spurious garbage following chord: ~A"
-msgstr "Information incompréhensible à la suite de l'accord ~A"
+msgstr "Information incompréhensible à la suite de l'accord « ~A »"
#: define-context-properties.scm:31 define-grob-properties.scm:21
#: define-music-properties.scm:21
#, scheme-format
msgid "symbol ~S redefined"
-msgstr "symbole ~S redéfini"
+msgstr "symbole « ~S » redéfini"
#: define-event-classes.scm:78
msgid "All classes must be the last in their matrilineal line."
#: layout-beam.scm:38
#, scheme-format
msgid "Error in beam quanting. Expected (~S,~S) found ~S."
-msgstr "Erreur de définition du lien : attendait (~S,~S), ~S trouvé."
+msgstr "Erreur de définition de ligature : attendait (~S,~S), ~S trouvé."
#: layout-beam.scm:52
#, scheme-format
msgid "Error in beam quanting. Expected ~S 0, found ~S."
-msgstr "Erreur de définition du lien : attendait ~S 0, repéré ~S."
+msgstr "Erreur de définition de ligature : attendait ~S 0, repéré ~S."
#: lily-library.scm:747
msgid ""
#: paper.scm:308
#, scheme-format
msgid "Unknown paper size: ~a"
-msgstr "Format de papier inconnue : ~a"
+msgstr "Format de papier inconnu : ~a"
#. TODO: should raise (generic) exception with throw, and catch
#. that in parse-scm.cc
# GNU LilyPond's Italian language file.
+# This file is distributed under the same license as the lilypond package.
# Copyright (C) 1998 Free Software Foundation, Inc.
#
# Tineke de Munnik <jantien@xs4all.nl>, 1998.
# Maurizio Umberto Puxeddu <umbpux@tin.it>, 1999
+# Federico Bruni <fedelogy@gmail.com>, 2010-2011, 2011.
+#
msgid ""
msgstr ""
-"Project-Id-Version: lilypond 1.6.0\n"
+"Project-Id-Version: lilypond 2.13.48\n"
"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2008-02-14 15:55+0100\n"
-"PO-Revision-Date: 1998-05-30 00:17:12+0200\n"
-"Last-Translator: Maurizio Umberto Puxeddu <umbpux@tin.it>\n"
+"POT-Creation-Date: 2010-12-06 22:30+0100\n"
+"PO-Revision-Date: 2011-02-20 17:07+0100\n"
+"Last-Translator: Federico Bruni <fedelogy@gmail.com>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+#: book_base.py:24
+#, python-format
+msgid "file not found: %s"
+msgstr "file non trovato: %s"
+
+#: book_base.py:161
+msgid "Output function not implemented"
+msgstr "Funzione di output non implementata"
+
+#: book_latex.py:156
+msgid "cannot find \\begin{document} in LaTeX document"
+msgstr "impossibile trovare \\begin{document} nel documento LaTeX"
+
+#: book_snippets.py:517
+#, python-format
+msgid "deprecated ly-option used: %s=%s"
+msgstr "opzione ly-option deprecata: %s=%s"
+
+#: book_snippets.py:519
+#, python-format
+msgid "compatibility mode translation: %s=%s"
+msgstr "traduzione in modalità compatibile: %s=%s"
+
+#: book_snippets.py:522
+#, python-format
+msgid "deprecated ly-option used: %s"
+msgstr "opzione ly-option deprecata: %s"
+
+#: book_snippets.py:524
+#, python-format
+msgid "compatibility mode translation: %s"
+msgstr "traduzione in modalità compatibile: %s"
+
+#: book_snippets.py:542
+#, python-format
+msgid "ignoring unknown ly option: %s"
+msgstr "l'opzione ly sconosciuta viene ignorata: %s"
+
+#: book_snippets.py:728
+#, python-format
+msgid "Opening filter `%s'\n"
+msgstr "Apertura del filtro «%s»\n"
+
+#: book_snippets.py:748
+#, python-format
+msgid "`%s' failed (%d)"
+msgstr "«%s» fallito (%d)"
+
+#: book_snippets.py:749
+msgid "The error log is as follows:"
+msgstr "Il registro dell'errore è il seguente:"
+
#: convertrules.py:12
#, python-format
msgid "Not smart enough to convert %s"
-msgstr ""
+msgstr "Non abbastanza intelligente per convertire %s"
#: convertrules.py:13
msgid "Please refer to the manual for details, and update manually."
-msgstr ""
+msgstr "Si consulti il manuale per i dettagli e si aggiorni manualmente."
#: convertrules.py:14
#, python-format
msgid "%s has been replaced by %s"
-msgstr ""
+msgstr "%s è stato sostituito da %s"
-#: convertrules.py:24 musicexp.py:16 convert-ly.py:47 lilypond-book.py:82
-#: warn.cc:48 input.cc:90
-#, fuzzy, c-format, python-format
+#: convertrules.py:24 lilylib.py:78 musicexp.py:17 convert-ly.py:64 warn.cc:66
+#: input.cc:109
+#, c-format, python-format
msgid "warning: %s"
-msgstr "attenzione: "
+msgstr "attenzione: %s"
-#: convertrules.py:33 convertrules.py:103
+#: convertrules.py:49 convertrules.py:99
msgid "\\header { key = concat + with + operator }"
-msgstr ""
+msgstr "\\header { chiave = concat + con + operatore }"
-#: convertrules.py:48
-#, fuzzy, python-format
+#: convertrules.py:58
+#, python-format
msgid "deprecated %s"
-msgstr "approssimato: %s:"
+msgstr "%s è deprecato"
-#: convertrules.py:61
+#: convertrules.py:70
msgid "deprecated \\textstyle, new \\key syntax"
-msgstr ""
+msgstr "\\textstyle deprecato, nuova sintassi per \\key"
-#: convertrules.py:80 convertrules.py:2124 convertrules.py:2337
-#: convertrules.py:2512 convertrules.py:2889
+#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084
+#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862
msgid "bump version for release"
-msgstr ""
+msgstr "aumentare il numero di versione per il rilascio"
-#: convertrules.py:99
+#: convertrules.py:103
msgid "new \\header format"
-msgstr ""
+msgstr "nuovo formato di \\header"
-#: convertrules.py:133
+#: convertrules.py:132
msgid "\\translator syntax"
-msgstr ""
+msgstr "sintassi di \\translator"
-#: convertrules.py:211
+#: convertrules.py:184
msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
-msgstr ""
+msgstr "\\repeat NUMERO Alternativa Musicale -> \\repeat FOLDSTR Alternativa Musicale"
-#: convertrules.py:254 convertrules.py:828 convertrules.py:1584
-#: convertrules.py:2685
+#: convertrules.py:216 convertrules.py:699 convertrules.py:1383
+#: convertrules.py:2378
#, python-format
msgid "deprecate %s"
-msgstr ""
+msgstr "%s è deprecato"
-#: convertrules.py:361
+#: convertrules.py:290
#, python-format
msgid "deprecate %s "
-msgstr ""
+msgstr "%s è deprecato "
-#: convertrules.py:384
+#: convertrules.py:319
msgid "new \\notenames format"
-msgstr ""
+msgstr "nuovo formato di \\notenames"
-#: convertrules.py:404
+#: convertrules.py:337
msgid "new tremolo format"
-msgstr ""
+msgstr "nuovo formato di tremolo"
-#: convertrules.py:417
+#: convertrules.py:342
msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
-msgstr ""
+msgstr "Staff_margin_engraver è deprecato, usare Instrument_name_engraver"
-#: convertrules.py:536
+#: convertrules.py:395
msgid "change property definiton case (eg. onevoice -> oneVoice)"
-msgstr ""
+msgstr "cambiare le maiuscole della definizione di proprietà (es: onevoice -> oneVoice)"
-#: convertrules.py:544
+#: convertrules.py:457
msgid "new \\textscript markup text"
-msgstr ""
+msgstr "nuovo testo di marcatura \\textscript"
-#: convertrules.py:638
-#, fuzzy, python-format
+#: convertrules.py:530
+#, python-format
msgid "identifier names: %s"
-msgstr "Il nome dell'identificatore è una parola chiave (`%s')"
+msgstr "nomi dell'identificatore: %s"
-#: convertrules.py:679
+#: convertrules.py:569
msgid "point-and-click argument changed to procedure."
-msgstr ""
+msgstr "l'argomento point-and-click è stato cambiato in procedura."
-#: convertrules.py:739
+#: convertrules.py:611
msgid "semicolons removed"
-msgstr ""
+msgstr "punti e virgola eliminati"
#. 40 ?
-#: convertrules.py:795
+#: convertrules.py:654
#, python-format
msgid "%s property names"
-msgstr ""
+msgstr "nomi della proprietà %s"
-#: convertrules.py:865
+#: convertrules.py:724
msgid "automaticMelismata turned on by default"
-msgstr ""
+msgstr "automaticMelismata attivato per impostazione predefinita"
-#: convertrules.py:1131 convertrules.py:1893 convertrules.py:2166
-#: convertrules.py:2472
-#, fuzzy, python-format
+#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942
+#: convertrules.py:2189
+#, python-format
msgid "remove %s"
-msgstr "Genero le voci..."
+msgstr "elimina %s"
-#: convertrules.py:1164 convertrules.py:1173
+#: convertrules.py:1001 convertrules.py:1005
msgid "cluster syntax"
-msgstr ""
+msgstr "sintassi dei cluster"
-#: convertrules.py:1182
+#: convertrules.py:1014
msgid "new Pedal style syntax"
-msgstr ""
+msgstr "nuova sintassi di stile del Pedale"
-#: convertrules.py:1451
+#: convertrules.py:1273
msgid ""
"New relative mode,\n"
"Postfix articulations, new text markup syntax, new chord syntax."
msgstr ""
+"Nuovo modo relativo.\n"
+"Articolazioni suffisse, nuova sintassi di marcatura del testo, nuova sintassi degli accordi."
-#: convertrules.py:1475
+#: convertrules.py:1286
msgid "Remove - before articulation"
-msgstr ""
+msgstr "Elimina - prima dell'articolazione"
-#: convertrules.py:1515
+#: convertrules.py:1324
#, python-format
msgid "%s misspelling"
-msgstr ""
-
-#: convertrules.py:1521
-msgid "attempting automatic \\figures conversion. Check results!"
-msgstr ""
+msgstr "errore di digitazione in %s"
-#: convertrules.py:1550
+#: convertrules.py:1346
msgid "Swap < > and << >>"
-msgstr ""
+msgstr "Scambia < > e << >>"
+
+#: convertrules.py:1349
+msgid "attempting automatic \\figures conversion. Check results!"
+msgstr "tentativo di conversione automatica di \\figures. Controllare i risultati!"
-#: convertrules.py:1576
+#: convertrules.py:1400
msgid "Use Scheme code to construct arbitrary note events."
+msgstr "Usa il codice di Scheme per costruire eventi arbitrari della nota."
+
+#: convertrules.py:1407
+msgid ""
+"use symbolic constants for alterations,\n"
+"remove \\outputproperty, move ly:verbose into ly:get-option"
msgstr ""
+"usa costanti simboliche per le alterazioni,\n"
+"togli \\outproperty, sostituisci ly:verbose con ly:get-option"
-#: convertrules.py:1609
+#: convertrules.py:1432
#, python-format
msgid ""
"\\outputproperty found,\n"
"\n"
"as a substitution text."
msgstr ""
+"Trovato \\outputproperty,\n"
+"Modificalo manualmente con\n"
+"\n"
+" \\applyoutput #(outputproperty-compatibility %s '%s <VALORE DELLA PROPRIETÀ DEL GROB>)\n"
+"\n"
+"come testo sostitutivo."
-#: convertrules.py:1623
+#: convertrules.py:1446
msgid ""
"The alteration field of Scheme pitches was multiplied by 2\n"
"to support quarter tone accidentals. You must update the following constructs manually:\n"
"* calls of ly:make-pitch and ly:pitch-alteration\n"
"* keySignature settings made with \\property\n"
msgstr ""
+"Il campo di alterazione delle altezze di Scheme è stato moltiplicato per 2\n"
+"per supportare le alterazioni di un quarto di tono. È necessario aggiornare manualmente i seguenti costrutti:\n"
+"\n"
+"* chiamate a ly:make-pitch e ly:pitch-alteration\n"
+"* impostazioni di keySignature fatte con \\property\n"
-#: convertrules.py:1633
-msgid ""
-"use symbolic constants for alterations,\n"
-"remove \\outputproperty, move ly:verbose into ly:get-option"
-msgstr ""
-
-#: convertrules.py:1692
+#: convertrules.py:1493
msgid "removal of automaticMelismata; use melismaBusyProperties instead."
-msgstr ""
+msgstr "eliminazione di automaticMelismata; al suo posto usare melismaBusyProperties."
-#: convertrules.py:1807
+#: convertrules.py:1600
msgid "\\partcombine syntax change to \\newpartcombine"
+msgstr "cambio nella sintassi da \\partcombine a \\newpartcombine"
+
+#: convertrules.py:1628
+msgid ""
+"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
+"Harmonic notes. Thread context removed. Lyrics context removed."
msgstr ""
+"Cambiamenti della notazione per percussioni, eliminati \\chordmodifiers e \\notenames.\n"
+"Note armoniche. Eliminati i contesti Thread e Lyrics."
-#: convertrules.py:1824
+#: convertrules.py:1632
msgid "Drums found. Enclose drum notes in \\drummode"
-msgstr ""
+msgstr "Trovate percussioni. Inserisci le note delle percussioni in \\drummode"
-#: convertrules.py:1835 convertrules.py:1842 convertrules.py:1853
+#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661
#, python-format
msgid ""
"\n"
"%s found. Check file manually!\n"
msgstr ""
+"\n"
+"Si è trovato %s. Controlla il file manualmente!\n"
-#: convertrules.py:1835
+#: convertrules.py:1643
msgid "Drum notation"
-msgstr ""
-
-#: convertrules.py:1863
-msgid ""
-"Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
-"Harmonic notes. Thread context removed. Lyrics context removed."
-msgstr ""
+msgstr "Notazione delle percussioni"
-#: convertrules.py:1924
+#: convertrules.py:1702
msgid "new syntax for property settings:"
-msgstr ""
+msgstr "nuova sintassi per le impostazioni delle proprietà:"
-#: convertrules.py:1957
+#: convertrules.py:1728
msgid "Property setting syntax in \\translator{ }"
-msgstr ""
-
-#: convertrules.py:1978
-#, fuzzy, python-format
-msgid "use %s"
-msgstr "attenzione: "
+msgstr "Sintassi per impostare una proprietà in \\translator{ }"
-#: convertrules.py:1995
+#: convertrules.py:1767
msgid "Scheme grob function renaming"
-msgstr ""
+msgstr "Rinominare la funzione di grob di Scheme"
+
+#: convertrules.py:1780
+#, python-format
+msgid "use %s"
+msgstr "usa %s"
-#: convertrules.py:2008
+#: convertrules.py:1797
msgid "More Scheme function renaming"
-msgstr ""
+msgstr "Rinominare altre funzioni di Scheme"
-#: convertrules.py:2140
+#: convertrules.py:1924
msgid ""
"Page layout has been changed, using paper size and margins.\n"
"textheight is no longer used.\n"
msgstr ""
+"La formattazione di pagina è stata modificata, usando la dimensione del foglio e i margini.\n"
+"textheight non è più usato.\n"
-#: convertrules.py:2259
+#: convertrules.py:2010
msgid ""
"\\foo -> \\foomode (for chords, notes, etc.)\n"
"fold \\new FooContext \\foomode into \\foo."
msgstr ""
+"\\foo -> \\foomode (per accordi, note, etc.)\n"
+"inserire \\new FooContext \\foomode in \\foo."
-#: convertrules.py:2285
+#: convertrules.py:2048
msgid ""
"staff size should be changed at top-level\n"
"with\n"
" #(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)\n"
"\n"
msgstr ""
+"la dimensione del rigo deve essere cambiata al livello superiore\n"
+"con\n"
+"\n"
+" #(set-global-staff-size <ALTEZZA-DEL-RIGO-IN-PUNTI>)\n"
+"\n"
-#: convertrules.py:2320
+#: convertrules.py:2068
msgid "regularize other identifiers"
-msgstr ""
+msgstr "normalizza altri identificatori"
+
+#: convertrules.py:2136
+msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
+msgstr "\\encoding: ricodifica intelligente da latin1 a utf-8. Eliminazione di ly:point-and-click"
-#: convertrules.py:2411
+#: convertrules.py:2149
msgid "LilyPond source must be UTF-8"
-msgstr ""
+msgstr "Il sorgente di LilyPond deve avere la codifica UTF-8"
-#: convertrules.py:2414
+#: convertrules.py:2152
msgid "Try the texstrings backend"
-msgstr ""
+msgstr "Prova il backend textstrings"
-#: convertrules.py:2417
+#: convertrules.py:2155
#, python-format
msgid "Do something like: %s"
-msgstr ""
+msgstr "Fai qualcosa come: %s"
-#: convertrules.py:2420
+#: convertrules.py:2158
msgid "Or save as UTF-8 in your editor"
-msgstr ""
+msgstr "O salva in formato UTF-8 nel tuo editor"
-#: convertrules.py:2452
-msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
-msgstr ""
+#: convertrules.py:2212
+msgid "warn about auto beam settings"
+msgstr "attenzione alle impostazioni delle travature automatiche"
-#: convertrules.py:2485
+#: convertrules.py:2217
msgid "auto beam settings"
-msgstr ""
+msgstr "impostazioni delle travature automatiche"
-#: convertrules.py:2487
+#: convertrules.py:2219
msgid ""
"\n"
"Auto beam settings must now specify each interesting moment in a measure\n"
-"explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n"
-msgstr ""
-
-#: convertrules.py:2498
-msgid "warn about auto beam settings"
+"explicitly; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n"
msgstr ""
+"\n"
+"Le impostazioni di travatura automatica ora devono specificare esplicitamente ogni momento\n"
+"interessante in una misura; 1/4 non viene più moltiplicato per coprire anche i momenti 1/2 e 3/4.\n"
-#: convertrules.py:2624
+#: convertrules.py:2333
msgid "verticalAlignmentChildCallback has been deprecated"
-msgstr ""
+msgstr "verticalAlignmentChildCallback è deprecato"
-#: convertrules.py:2652
+#: convertrules.py:2337
msgid "Remove callbacks property, deprecate XY-extent-callback."
-msgstr ""
+msgstr "Togli la proprietà di callback, XY-extent-callback è deprecato."
-#: convertrules.py:2663
+#: convertrules.py:2358
msgid "Use grob closures iso. XY-offset-callbacks."
-msgstr ""
+msgstr "Usa le chiusure del grob al posto di XY-offset-callbacks."
-#: convertrules.py:2770
+#: convertrules.py:2420
msgid "foobar -> foo-bar for \\paper, \\layout"
-msgstr ""
+msgstr "foobar -> foo-bar per \\paper, \\layout"
-#: convertrules.py:2877
+#: convertrules.py:2530
msgid "deprecate \\tempo in \\midi"
-msgstr ""
+msgstr "\\tempo in un blocco \\midi è deprecato"
-#: convertrules.py:2912
+#: convertrules.py:2583
msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
-msgstr ""
+msgstr "cautionary-style è deprecato. Usa le proprietà di AccidentalCautionary"
-#: convertrules.py:2941
+#: convertrules.py:2596
msgid "Rename accidental glyphs, use glyph-name-alist."
-msgstr ""
+msgstr "Rinomina i glifi delle alterazioni, usa glyph-name-alist."
-#: convertrules.py:2973
+#: convertrules.py:2651
msgid "edge-text settings for TextSpanner."
-msgstr ""
+msgstr "Impostazioni di edge-text per TextSpanner."
-#: convertrules.py:2974
-#, fuzzy, python-format
+#: convertrules.py:2652
+#, python-format
msgid ""
"Use\n"
"\n"
"%s"
-msgstr "attenzione: "
+msgstr ""
+"Usa\n"
+"\n"
+"%s"
+
+#: convertrules.py:2685
+msgid "Use the `alignment-offsets' sub-property of\n"
+msgstr "Usa «alignment-offsets», sottoproprietà di\n"
+
+#: convertrules.py:2686
+msgid "NonMusicalPaperColumn #'line-break-system-details\n"
+msgstr "NonMusicalPaperColumn #'line-break-system-details\n"
+
+#: convertrules.py:2687
+msgid "to set fixed distances between staves.\n"
+msgstr "per impostare distanze fisse tra i righi.\n"
+
+#: convertrules.py:2699
+msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
+msgstr "Usa #'style e non #'dash-fraction per ottenere linee continue o tratteggiate."
-#: convertrules.py:3020
+#: convertrules.py:2705
msgid "all settings related to dashed lines.\n"
-msgstr ""
+msgstr "tutte le impostazioni relative alle linee tratteggiate.\n"
-#: convertrules.py:3021
+#: convertrules.py:2706
msgid "Use \\override ... #'style = #'line for solid lines and\n"
-msgstr ""
+msgstr "Usa \\override ... #'style = #'line per le linee continue e\n"
-#: convertrules.py:3022
+#: convertrules.py:2707
msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
+msgstr "\t\\override ... #'style = #'dashed-line per le linee tratteggiate."
+
+#: convertrules.py:2743
+msgid ""
+"metronomeMarkFormatter uses text markup as second argument,\n"
+"fret diagram properties moved to fret-diagram-details."
msgstr ""
+"il secondo argomento di metronomeMarkFormatter deve essere una marcatura di testo,\n"
+"le proprietà del diagramma dei tasti si trovano ora in fret-diagram-details."
-#: convertrules.py:3027
-msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
+#: convertrules.py:2748
+msgid "metronomeMarkFormatter got an additional text argument.\n"
+msgstr "metronomeMarkFormatter prende un argomento testuale supplementare.\n"
+
+#: convertrules.py:2749
+#, python-format
+msgid ""
+"The function assigned to Score.metronomeMarkFunction now uses the signature\n"
+"%s"
msgstr ""
+"La funzione assegnata a Score.metronomeMarkFunction ora usa l'indicazione\n"
+"%s"
+
+#: convertrules.py:2812
+msgid "\\put-adjacent argument order.\n"
+msgstr "ordine degli argomenti di \\put-adjacent.\n"
+
+#: convertrules.py:2813
+msgid "Axis and direction now come before markups:\n"
+msgstr "Asse e direzione ora devono precedere i marcatori:\n"
+
+#: convertrules.py:2814
+msgid "\\put-adjacent axis dir markup markup."
+msgstr "\\put-adjacent asse direzione marcatore marcatore."
+
+#: convertrules.py:2845
+msgid "re-definition of InnerStaffGroup.\n"
+msgstr "ridefinizione di InnerStaffGroup.\n"
-#: fontextract.py:26
-#, fuzzy, python-format
+#: convertrules.py:2851
+msgid "re-definition of InnerChoirStaff.\n"
+msgstr "ridefinizione di InnerChoirStaff.\n"
+
+#: convertrules.py:2861
+msgid "Syntax changes for \\addChordShape and \\chord-shape"
+msgstr "Cambiamenti di sintassi per \\addChordShape e \\chord-shape"
+
+#: convertrules.py:2866
+msgid "stringTuning must be added to addChordShape call.\n"
+msgstr "stringTuning deve essere aggiunto alla chiamata addChordShape.\n"
+
+#: convertrules.py:2872
+msgid "stringTuning must be added to chord-shape call.\n"
+msgstr "stringTuning deve essere aggiunto alla chiamata chord-shape.\n"
+
+#: convertrules.py:2879
+msgid "Remove oldaddlyrics"
+msgstr "Elimina oldaddlyrics"
+
+#: convertrules.py:2883
+msgid ""
+"oldaddlyrics is no longer supported. \n"
+" Use addlyrics or lyrsicsto instead.\n"
+msgstr ""
+"oldaddlyrics non è più supportato.\n"
+" Usa addlyrics o lyrsicsto al suo posto.\n"
+
+#: convertrules.py:2889
+msgid ""
+"keySignature property not reversed any more\n"
+"MIDI 47: orchestral strings -> orchestral harp"
+msgstr ""
+"la proprietà keySignature property non è più invertita\n"
+"MIDI 47: archi orchestrali -> arpa orchestrale"
+
+#: convertrules.py:2894
+msgid "The alist for Staff.keySignature is no longer in reversed order.\n"
+msgstr "L'alist (association list) di Staff.keySignature non è più in ordine invertito.\n"
+
+#: convertrules.py:2900
+msgid ""
+"\\bar \".\" now produces a thick barline\n"
+"ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
+"Dash parameters for slurs and ties are now in dash-definition"
+msgstr ""
+"\\bar \".\" ora crea una stanghetta spessa\n"
+"ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
+"I parametri del tratteggiato per le legature di portamento e di valore si trovano ora in dash-definition"
+
+#: convertrules.py:2906
+msgid "\\bar \".\" now produces a thick barline.\n"
+msgstr "\\bar \".\" ora crea una stanghetta spessa.\n"
+
+#: convertrules.py:2912
+msgid "Dash parameters for slurs and ties are now in 'dash-details.\n"
+msgstr "I parametri del tratteggiato per le legature di portamento e di valore si trovano ora in 'dash-details.\n"
+
+#: convertrules.py:2917
+msgid ""
+"Autobeaming rules have changed. override-auto-beam-setting and\n"
+"revert-auto-beam-setting have been eliminated.\n"
+"\\overrideBeamSettings has been added.\n"
+"beatGrouping has been eliminated.\n"
+"Different settings for vertical layout.\n"
+"ly:system-start-text::print -> system-start-text::print\n"
+"Beam #'thickness -> Beam #'beam-thickness\n"
+"ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil\n"
+"ly:ambitus::print -> ambitus::print\n"
+"Explicit dynamics context definition from `Piano centered dynamics'\n"
+"template replaced by new `Dynamics' context."
+msgstr ""
+"Le regole per la disposizione automatica delle travature sono cambiate. override-auto-beam-setting e\n"
+"revert-auto-beam-setting sono stati eliminati.\n"
+"\\overrideBeamSettings è stato aggiunto.\n"
+"beatGrouping è stato eliminato.\n"
+"Impostazioni diverse per la formattazione verticale.\n"
+"ly:system-start-text::print -> system-start-text::print\n"
+"Beam #'thickness -> Beam #'beam-thickness\n"
+"ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil\n"
+"ly:ambitus::print -> ambitus::print\n"
+"La definizione esplicita del contesto della dinamica presa dal modello «Piano centered dynamics»\n"
+"è stata sostituita dal nuovo contesto «Dynamics»."
+
+#: convertrules.py:2931
+msgid ""
+"override-auto-beam-setting.\n"
+" Autobeam settings are now overriden with \\overrideBeamSettings.\n"
+msgstr ""
+"override-auto-beam-setting.\n"
+" Le impostazioni della disposizione automatica delle travature vengono ora sovrascritte con \\overrideBeamSettings.\n"
+
+#: convertrules.py:2936
+msgid ""
+"override-auto-beam-setting.\n"
+" Autobeam settings are now reverted with \\revertBeamSettings.\n"
+msgstr ""
+"override-auto-beam-setting.\n"
+" Le impostazioni della disposizione automatica delle travature vengono ora ripristinate con \\revertBeamSettings.\n"
+
+#: convertrules.py:2941
+msgid ""
+"beatGrouping. \n"
+" beatGrouping with a specified context must now be accomplished with\n"
+" \\overrideBeamSettings.\n"
+msgstr ""
+"beatGrouping. \n"
+" beatGrouping in un contesto specifico ora deve essere ottenuto con\n"
+" \\overrideBeamSettings.\n"
+
+#: convertrules.py:2947
+msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n"
+msgstr "alignment-offsets è diventato alignment-distances: ora occorre specificare le distanze tra i righi invece dello slittamento (offset) dei righi.\n"
+
+#: convertrules.py:2958
+msgid ""
+"Remove obsolete engravers/translators: Note_swallow_translator,\n"
+"Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n"
+"Swallow_performer and String_number_engraver.\n"
+"New vertical spacing variables."
+msgstr ""
+"Elimina gli incisori/traduttori obsoleti: Note_swallow_translator,\n"
+"Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n"
+"Swallow_performer e String_number_engraver.\n"
+"Nuove variabili per la spaziatura verticale."
+
+#: convertrules.py:2982
+msgid "vertical spacing has been changed; minimum-Y-extent is obsolete.\n"
+msgstr "la spaziatura verticale è cambiata; minimum-Y-extent è obsoleto.\n"
+
+#: convertrules.py:2988
+msgid "Unify fetaNumber and fetaDynamic encodings"
+msgstr "Unifica le codifiche di fetaNumber e fetaDynamic"
+
+#: convertrules.py:2993
+msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
+msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
+
+#: convertrules.py:3004
+msgid "\\cresc etc. are now postfix operators"
+msgstr "\\cresc etc. sono ora operatori suffissi"
+
+#: convertrules.py:3010
+msgid ""
+"Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n"
+"\"accordion.accEtcbase\" -> \"accordion.etcbass\""
+msgstr ""
+"Elimina beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings e \\revertBeamSettings.\n"
+"\"accordion.accEtcbase\" -> \"accordion.etcbass\""
+
+#: convertrules.py:3028
+msgid "\\overrideBeamSettings. Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
+msgstr "\\overrideBeamSettings. Usa \\set beamExceptions o \\overrideTimeSignatureSettings.\n"
+
+#: convertrules.py:3032
+msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
+msgstr "\\revertBeamSettings. Usa \\set beamExceptions o \\revertTimeSignatureSettings.\n"
+
+#: convertrules.py:3036
+msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n"
+msgstr "beamSettings. Usa baseMoment, beatStructure, e beamExceptions.\n"
+
+#: convertrules.py:3040
+msgid "beatLength. Use baseMoment and beatStructure.\n"
+msgstr "beatLength. Usa baseMoment e beatStructure.\n"
+
+#: convertrules.py:3044
+msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
+msgstr "setbeatGrouping. Usa baseMoment e beatStructure.\n"
+
+#: convertrules.py:3049
+msgid ""
+"Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n"
+"Deprecate negative dash-period for hidden lines: use #'style = #'none instead."
+msgstr ""
+"Diagrammi dei legni: Spostare dimensione, spessore e grafico da lista di argomenti a proprietà.\n"
+"L'uso di dash-period con valori negativi per creare linee nascoste è deprecato: al suo posto usare #'style = #'none."
+
+#: convertrules.py:3054
+msgid "woodwind-diagrams. Move size, thickness, and graphic to properties. Argument should be just the key list.\n"
+msgstr "Diagrammi dei legni: Sposta dimensione, spessore e grafico in proprietà. L'unico argomento deve essere la lista di chiavi.\n"
+
+#: convertrules.py:3062
+msgid ""
+"Rename vertical spacing variables.\n"
+"Add fretboard-table argument to savePredefinedFretboard."
+msgstr ""
+"Rinomina le variabili della spaziatura verticale.\n"
+"Aggiungi l'argomento fretboard-table a savePredefinedFretboard."
+
+#: convertrules.py:3080
+msgid "Rename vertical spacing grob properties."
+msgstr "Rinomina le proprietà di spaziatura verticale dei grob."
+
+#: convertrules.py:3096
+msgid "Remove \\paper variables head-separation and foot-separation."
+msgstr "Elimina le variabili di \\paper head-separation e foot-separation."
+
+#: convertrules.py:3101
+msgid "Adjust settings for top-system-spacing instead.\n"
+msgstr "Regola invece le impostazioni di top-system-spacing.\n"
+
+#: convertrules.py:3106
+msgid "Adjust settings for last-bottom-spacing instead.\n"
+msgstr "Regola invece le impostazioni di last-bottom-spacing.\n"
+
+#: fontextract.py:25
+#, python-format
msgid "Scanning %s"
-msgstr "attenzione: "
+msgstr "Esame di %s"
-#: fontextract.py:71
+#: fontextract.py:70
#, python-format
msgid "Extracted %s"
-msgstr ""
+msgstr "Estratto %s"
-#: fontextract.py:86
-#, fuzzy, python-format
+#: fontextract.py:85
+#, python-format
msgid "Writing fonts to %s"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "Scrittura dei tipi di carattere su %s"
-#: lilylib.py:102 lilylib.py:153
+#: lilylib.py:81 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:115
+#: input.cc:123
+#, c-format, python-format
+msgid "error: %s"
+msgstr "errore: %s"
+
+#: lilylib.py:124 lilylib.py:175
#, python-format
msgid "Invoking `%s'"
-msgstr ""
+msgstr "Invocazione di «%s»"
-#: lilylib.py:104 lilylib.py:155
-#, fuzzy, python-format
+#: lilylib.py:126 lilylib.py:177
+#, python-format
msgid "Running %s..."
-msgstr "Genero le voci..."
+msgstr "Esecuzione di %s..."
-#: lilylib.py:220
-#, fuzzy, python-format
+#: lilylib.py:253
+#, python-format
msgid "Usage: %s"
-msgstr "attenzione: "
+msgstr "Uso: %s"
-#: musicexp.py:577
+#: musicexp.py:216 musicexp.py:221
+msgid "Language does not support microtones contained in the piece"
+msgstr "La lingua non supporta i microtoni presenti nel brano"
+
+#: musicexp.py:483
+msgid "Tuplet brackets of curved shape are not correctly implemented"
+msgstr "Le parentesi di forma curva per i gruppi irregolari non sono implementate correttamente"
+
+#: musicexp.py:669
#, python-format
msgid "unable to set the music %(music)s for the repeat %(repeat)s"
-msgstr ""
+msgstr "non è stato possibile impostare la musica %(music)s per la ripetizione %(repeat)s"
-#: musicexp.py:586
+#: musicexp.py:678
msgid "encountered repeat without body"
-msgstr ""
+msgstr "si è incontrata una ripetizione senza corpo"
-#: musicxml.py:13 convert-ly.py:50 lilypond-book.py:85 warn.cc:54 input.cc:96
-#: input.cc:104
-#, fuzzy, c-format, python-format
-msgid "error: %s"
-msgstr "errore: "
+#. no self.elements!
+#: musicexp.py:848
+#, python-format
+msgid "Grace note with no following music: %s"
+msgstr "Nota di abbellimento non seguita da musica: %s"
-#: musicxml.py:272
-msgid "requested time signature, but time sig is unknown"
-msgstr ""
+#: musicexp.py:1010
+#, python-format
+msgid "Invalid octave shift size found: %s. Using no shift."
+msgstr "Trovata una dimensione di spostamento dell'ottava non valida: %s. Non si userà alcun spostamento."
-#: musicxml.py:338
+#: musicexp.py:1468
#, python-format
-msgid "Encountered note at %s with %s duration (no <type> element):"
-msgstr ""
+msgid "Unable to convert alteration %s to a lilypond expression"
+msgstr "Non si può convertire l'alterazione %s in un'espressione lilypond"
+
+#. TODO: Handle pieces without a time signature!
+#: musicxml.py:358
+msgid "Senza-misura time signatures are not yet supported!"
+msgstr "I segni di tempo senza-misura non sono ancora supportati!"
-#: musicxml.py:372
+#: musicxml.py:376
+msgid "Unable to interpret time signature! Falling back to 4/4."
+msgstr "Non è stato possibile interpretare l'indicazione di tempo! Verrà usato il 4/4."
+
+#: musicxml.py:432
#, python-format
-msgid "Unable to find find instrument for ID=%s\n"
-msgstr ""
+msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!"
+msgstr "Si è inserita un'ottava di alterazione di tonalità per un numero di alterazioni inesistente %s, numeri disponibili: %s!"
+
+#: musicxml.py:520
+#, python-format
+msgid "Unable to find instrument for ID=%s\n"
+msgstr "Impossibile trovare lo strumento con ID=%s\n"
-#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:109 midi2ly.py:849
-#, fuzzy, python-format
+#: abc2ly.py:1373 convert-ly.py:87 lilypond-book.py:122 midi2ly.py:860
+#, python-format
msgid "%s [OPTION]... FILE"
-msgstr "Uso: %s [OPZIONE]... [FILE]"
+msgstr "%s [OPZIONE]... FILE"
-#: abc2ly.py:1343
+#: abc2ly.py:1374
#, python-format
msgid ""
"abc2ly converts ABC music files (see\n"
-"%s) to LilyPond input."
+"%s) to LilyPond input.\n"
msgstr ""
+"abc2ly converte file musicali ABC (si veda\n"
+"%s) in input LilyPond.\n"
-#: abc2ly.py:1350 convert-ly.py:78 etf2ly.py:1190 lilypond-book.py:175
-#: midi2ly.py:885 musicxml2ly.py:1824 main.cc:161
+#: abc2ly.py:1382 convert-ly.py:94 etf2ly.py:1206 lilypond-book.py:212
+#: midi2ly.py:896 musicxml2ly.py:2683 main.cc:168
msgid "show version number and exit"
-msgstr ""
+msgstr "mostra il numero di versione ed esce"
-#: abc2ly.py:1354 convert-ly.py:82 etf2ly.py:1186 lilypond-book.py:125
-#: midi2ly.py:864 musicxml2ly.py:1808 main.cc:150
+#: abc2ly.py:1386 convert-ly.py:98 etf2ly.py:1202 lilypond-book.py:140
+#: midi2ly.py:875 musicxml2ly.py:2665 main.cc:157
msgid "show this help and exit"
-msgstr ""
+msgstr "mostra questo messaggio di aiuto ed esce"
-#: abc2ly.py:1356 etf2ly.py:1191 midi2ly.py:868
+#: abc2ly.py:1388 etf2ly.py:1207 midi2ly.py:879
msgid "write output to FILE"
-msgstr ""
+msgstr "scrive l'output in FILE"
-#: abc2ly.py:1358
-msgid "be strict about succes"
-msgstr ""
+#: abc2ly.py:1390
+msgid "be strict about success"
+msgstr "è severo rispetto all'esito"
-#: abc2ly.py:1360
+#: abc2ly.py:1392
msgid "preserve ABC's notion of beams"
-msgstr ""
-
-#: abc2ly.py:1361 convert-ly.py:111 etf2ly.py:1198 lilypond-book.py:180
-#: midi2ly.py:897 musicxml2ly.py:1872
-msgid "Bugs"
-msgstr ""
-
-#: abc2ly.py:1362 convert-ly.py:112 etf2ly.py:1199 lilypond-book.py:181
-#: midi2ly.py:898 musicxml2ly.py:1873
-msgid "Report bugs via"
-msgstr ""
+msgstr "preserva la nozione di travatura di ABC"
+
+#. Translators, please translate this string as
+#. "Report bugs in English via %s",
+#. 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:1395 convert-ly.py:144 etf2ly.py:1216 lilypond-book.py:234
+#: midi2ly.py:909 musicxml2ly.py:2751 main.cc:281
+#, c-format, python-format
+msgid "Report bugs via %s"
+msgstr "Segnalare i bug in inglese attraverso %s"
-#: convert-ly.py:32
+#: convert-ly.py:44
msgid ""
"Update LilyPond input to newer version. By default, update from the\n"
"version taken from the \\version command, to the current LilyPond version."
msgstr ""
+"Aggiorna l'input LilyPond a una nuova versione. Per impostazione predefinita aggiorna dalla\n"
+"versione presa dal comando \\version alla versione attuale di LilyPond."
-#: convert-ly.py:34 lilypond-book.py:59
+#: convert-ly.py:46 lilypond-book.py:82
msgid "Examples:"
-msgstr ""
+msgstr "Esempi:"
-#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:105 midi2ly.py:79
+#: convert-ly.py:81 etf2ly.py:1189 lilypond-book.py:116 midi2ly.py:90
+#, python-format
+msgid "Copyright (c) %s by"
+msgstr "Copyright (c) %s di"
+
+#: convert-ly.py:83 etf2ly.py:1191 lilypond-book.py:118 midi2ly.py:92
msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
+msgstr "Distribuito secondo i termini della GNU General Public License."
-#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:106 midi2ly.py:80
+#: convert-ly.py:84 etf2ly.py:1192 lilypond-book.py:119 midi2ly.py:93
msgid "It comes with NO WARRANTY."
-msgstr ""
+msgstr "È distribuito con NESSUNA GARANZIA."
-#: convert-ly.py:86 convert-ly.py:106
+#: convert-ly.py:102 convert-ly.py:135
msgid "VERSION"
-msgstr ""
+msgstr "VERSIONE"
-#: convert-ly.py:88
+#: convert-ly.py:104
msgid "start from VERSION [default: \\version found in file]"
-msgstr ""
+msgstr "parte dalla VERSIONE [predefinito: \\version del file]"
-#: convert-ly.py:91
+#: convert-ly.py:107
msgid "edit in place"
-msgstr ""
+msgstr "modifica il file di input"
-#: convert-ly.py:94
+#: convert-ly.py:111
msgid "do not add \\version command if missing"
-msgstr ""
+msgstr "non aggiunge il comando \\version se non è presente"
-#: convert-ly.py:100
-msgid "show rules [default: --from=0, --to=@TOPLEVEL_VERSION@]"
-msgstr ""
+#: convert-ly.py:117
+#, python-format
+msgid "force updating \\version number to %s"
+msgstr "forza l'aggiornamento del numero di \\version a %s"
-#: convert-ly.py:105
-msgid "convert to VERSION [default: @TOPLEVEL_VERSION@]"
-msgstr ""
+#: convert-ly.py:123
+msgid "only update \\version number if file is modified"
+msgstr "aggiorna il numero di \\version solo se il file è modificato"
-#: convert-ly.py:153
+#: convert-ly.py:129
+#, python-format
+msgid "show rules [default: -f 0, -t %s]"
+msgstr "mostra le regole [predefinito: -f 0, -t %s]"
+
+#: convert-ly.py:134
+#, python-format
+msgid "convert to VERSION [default: %s]"
+msgstr "converte a VERSIONE [predefinito: %s]"
+
+#: convert-ly.py:139 etf2ly.py:1210 lilypond-book.py:215 midi2ly.py:897
+#: main.cc:170
+msgid "show warranty and copyright"
+msgstr "mostra la garanzia e il copyright"
+
+#: convert-ly.py:184
msgid "Applying conversion: "
-msgstr ""
+msgstr "Conversione in corso: "
-#: convert-ly.py:166
+#: convert-ly.py:197
msgid "Error while converting"
-msgstr ""
+msgstr "Errore durante la conversione"
-#: convert-ly.py:168
-msgid "Stopping at last succesful rule"
-msgstr ""
+#: convert-ly.py:199
+msgid "Stopping at last successful rule"
+msgstr "Fermarsi all'ultima regola riuscita"
-#: convert-ly.py:190
-#, fuzzy, python-format
+#: convert-ly.py:224
+#, python-format
msgid "Processing `%s'... "
-msgstr "Elaboro..."
+msgstr "Elaborazione di «%s»... "
-#: convert-ly.py:277 relocate.cc:362 source-file.cc:54
-#, c-format, python-format
-msgid "cannot open file: `%s'"
-msgstr "non posso aprire il file: `%s'"
+#: convert-ly.py:332
+#, python-format
+msgid "%s: Unable to open file"
+msgstr "%s: Impossibile aprire il file"
+
+#: convert-ly.py:339
+#, python-format
+msgid "%s: Unable to determine version. Skipping"
+msgstr "%s: Impossibile determinare la versione. Tralasciato"
-#: convert-ly.py:284
-#, fuzzy, python-format
-msgid "cannot determine version for `%s'. Skipping"
-msgstr "non trovo il file: `%s'"
+#: convert-ly.py:344
+#, python-format
+msgid ""
+"%s: Invalid version string `%s' \n"
+"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
+msgstr ""
+"%s: Stringa di versione non valida `%s' \n"
+"Le stringhe di versione valide sono composte da tre numeri separati da punti, ad esempio «2.8.12»"
-#: etf2ly.py:1180
-#, fuzzy, python-format
+#: etf2ly.py:1195
+#, python-format
msgid "%s [OPTION]... ETF-FILE"
-msgstr "Uso: %s [OPZIONE]... [FILE]"
+msgstr "%s [OPZIONE]... FILE-ETF"
-#: etf2ly.py:1181
+#: etf2ly.py:1196
msgid ""
"Enigma Transport Format is a format used by Coda Music Technology's\n"
-"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file."
+"Finale product. etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n"
msgstr ""
+"Enigma Transport Format è un formato usato dal prodotto Finale di Coda Music Technology.\n"
+"etf2ly converte un sottoinsieme di ETF in un file LilyPond pronto da usare.\n"
-#: etf2ly.py:1192 midi2ly.py:869 musicxml2ly.py:1866 main.cc:154 main.cc:159
+#: etf2ly.py:1208 midi2ly.py:880 musicxml2ly.py:2743 main.cc:161 main.cc:166
msgid "FILE"
-msgstr ""
+msgstr "FILE"
-#: etf2ly.py:1194 lilypond-book.py:178 midi2ly.py:886 main.cc:163
-#, fuzzy
-msgid "show warranty and copyright"
-msgstr " -w, --warranty mostra la garanzia e il copyright\n"
-
-#: lilypond-book.py:57
+#: lilypond-book.py:80
msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
-msgstr ""
+msgstr "Elaborare i frammenti di codice LilyPond in un documento HTML ibrido, LaTeX, texinfo o DocBook."
-#: lilypond-book.py:64
+#: lilypond-book.py:87
msgid "BOOK"
-msgstr ""
+msgstr "LIBRO"
-#: lilypond-book.py:72
-#, fuzzy, python-format
-msgid "Exiting (%d)..."
-msgstr "Genero le voci..."
-
-#: lilypond-book.py:103
+#: lilypond-book.py:95
#, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s di"
+msgid "Exiting (%d)..."
+msgstr "Uscita (%d)..."
-#: lilypond-book.py:113
+#: lilypond-book.py:127
msgid "FILTER"
-msgstr ""
+msgstr "FILTRO"
-#: lilypond-book.py:116
-msgid "pipe snippets through FILTER [convert-ly -n -]"
-msgstr ""
+#: lilypond-book.py:130
+msgid "pipe snippets through FILTER [default: `convert-ly -n -']"
+msgstr "redirige i frammenti di codice attraverso FILTRO [predefinito: `convert-ly -n -']"
-#: lilypond-book.py:120
+#: lilypond-book.py:134
msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
-msgstr ""
+msgstr "usa il formato di output FORMATO (texi [predefinito], texi-html, latex, html, docbook)"
-#: lilypond-book.py:127
-#, fuzzy
+#: lilypond-book.py:135
+msgid "FORMAT"
+msgstr "FORMATO"
+
+#: lilypond-book.py:142
msgid "add DIR to include path"
-msgstr " -I, --include=DIR aggiunge DIR ai path di ricerca\n"
+msgstr "aggiunge DIR al percorso di inclusione"
-#: lilypond-book.py:128 lilypond-book.py:135 lilypond-book.py:147 main.cc:153
+#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163
+#: lilypond-book.py:173 lilypond-book.py:189 lilypond-book.py:195 main.cc:160
msgid "DIR"
-msgstr ""
+msgstr "DIR"
-#: lilypond-book.py:133
+#: lilypond-book.py:148
msgid "format Texinfo output so that Info will look for images of music in DIR"
-msgstr ""
+msgstr "formatta l'output di Texinfo in modo che Info cerchi le immagini in DIR"
-#: lilypond-book.py:140
+#: lilypond-book.py:155
msgid "PAD"
-msgstr ""
+msgstr "PAD"
-#: lilypond-book.py:142
+#: lilypond-book.py:157
msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
-msgstr ""
+msgstr "aumenta il lato sinistro della musica (in mm) per allinearla nonostante il numero irregolare di battute"
-#: lilypond-book.py:146
-msgid "write output to DIR"
+#: lilypond-book.py:162
+msgid "write lily-XXX files to DIR, link into --output dir"
msgstr ""
+"scrive i file lily-XXX in DIR e crea un collegamento verso\n"
+"la directory specificata con --output"
-#: lilypond-book.py:151
-msgid "COMMAND"
-msgstr ""
+#: lilypond-book.py:167
+msgid "Load the additional python PACKAGE (containing e.g. a custom output format)"
+msgstr "Carica il PACCHETTO python supplementare (contenente ad esempio un formato di output personalizzato)"
-#: lilypond-book.py:152
-msgid "process ly_files using COMMAND FILE..."
-msgstr ""
+#: lilypond-book.py:168
+msgid "PACKAGE"
+msgstr "PACCHETTO"
-#: lilypond-book.py:159
-msgid "create PDF files for use with PDFTeX"
-msgstr ""
-
-#: lilypond-book.py:163
-msgid ""
-"extract all PostScript fonts into INPUT.psfonts for LaTeX\n"
-"must use this with dvips -h INPUT.psfonts"
-msgstr ""
-
-#: lilypond-book.py:167 midi2ly.py:879 musicxml2ly.py:1829 main.cc:162
-msgid "be verbose"
-msgstr ""
+#: lilypond-book.py:172
+msgid "write output to DIR"
+msgstr "scrive l'output in DIR"
-#: lilypond-book.py:788
-#, python-format
-msgid "file not found: %s"
-msgstr ""
+#: lilypond-book.py:177
+msgid "COMMAND"
+msgstr "COMANDO"
-#: lilypond-book.py:1022
-#, python-format
-msgid "deprecated ly-option used: %s=%s"
-msgstr ""
+#: lilypond-book.py:178
+msgid "process ly_files using COMMAND FILE..."
+msgstr "elabora ly_files con COMANDO FILE..."
-#: lilypond-book.py:1025
-#, python-format
-msgid "compatibility mode translation: %s=%s"
-msgstr ""
+#: lilypond-book.py:182
+msgid "Compile snippets in safe mode"
+msgstr "Compila i frammenti di codice in modalità sicura"
-#: lilypond-book.py:1029
-#, python-format
-msgid "deprecated ly-option used: %s"
-msgstr ""
+#: lilypond-book.py:188
+msgid "do not fail if no lilypond output is found"
+msgstr "non si interrompe se non si trova alcun output di lilypond"
-#: lilypond-book.py:1032
-#, python-format
-msgid "compatibility mode translation: %s"
-msgstr ""
+#: lilypond-book.py:194
+msgid "do not fail if no PNG images are found for EPS files"
+msgstr "non si interrompe se non si trovano immagini PNG per i file EPS"
-#: lilypond-book.py:1051
-#, python-format
-msgid "ignoring unknown ly option: %s"
-msgstr ""
+#: lilypond-book.py:200
+msgid "write snippet output files with the same base name as their source file"
+msgstr "scrive i file di output dei frammenti di codice con lo stesso nome di base dei file sorgenti"
-#: lilypond-book.py:1422
-#, fuzzy, python-format
-msgid "Opening filter `%s'"
-msgstr "Genero le voci..."
+#: lilypond-book.py:204 midi2ly.py:890 musicxml2ly.py:2688 main.cc:169
+msgid "be verbose"
+msgstr "passa in modalità prolissa"
-#: lilypond-book.py:1439
-#, python-format
-msgid "`%s' failed (%d)"
+#: lilypond-book.py:220
+msgid ""
+"run executable PROG instead of latex, or in\n"
+"case --pdf option is set instead of pdflatex"
msgstr ""
+"eseguire il PROGRAMMA eseguibile invece di latex, o nel caso in\n"
+"cui viene impostata l'opzione --pdf invece di usare pdflatex"
-#: lilypond-book.py:1440
-msgid "The error log is as follows:"
-msgstr ""
+#: lilypond-book.py:222
+msgid "PROG"
+msgstr "PROGRAMMA"
-#: lilypond-book.py:1512
-msgid "cannot find \\begin{document} in LaTeX document"
-msgstr ""
+#: lilypond-book.py:228
+msgid "create PDF files for use with PDFTeX"
+msgstr "creare file PDF per l'utilizzo con PDFTeX"
-#: lilypond-book.py:1623
-#, fuzzy
+#: lilypond-book.py:419
msgid "Writing snippets..."
-msgstr "Genero le voci..."
+msgstr "Scrittura dei frammenti di codice..."
-#: lilypond-book.py:1628
-#, fuzzy
+#: lilypond-book.py:425
msgid "Processing..."
-msgstr "Elaboro..."
+msgstr "In elaborazione..."
-#: lilypond-book.py:1632
+#: lilypond-book.py:431
msgid "All snippets are up to date..."
-msgstr ""
+msgstr "Tutti i frammenti di codice sono aggiornati..."
-#: lilypond-book.py:1642
-#, fuzzy, python-format
+#: lilypond-book.py:452
+#, python-format
msgid "cannot determine format for: %s"
-msgstr "non trovo il file: `%s'"
+msgstr "impossibile determinare il formato per: %s"
-#: lilypond-book.py:1653
+#: lilypond-book.py:461
#, python-format
msgid "%s is up to date."
-msgstr ""
+msgstr "%s è aggiornato."
-#: lilypond-book.py:1659
-#, fuzzy, python-format
+#: lilypond-book.py:475
+#, python-format
msgid "Writing `%s'..."
-msgstr "Genero le voci..."
+msgstr "Scrittura di «%s»..."
-#: lilypond-book.py:1714
+#: lilypond-book.py:537
msgid "Output would overwrite input file; use --output."
-msgstr ""
+msgstr "L'output sovrascriverebbe il file di input; usare --output."
-#: lilypond-book.py:1718
-#, fuzzy, python-format
+#: lilypond-book.py:541
+#, python-format
msgid "Reading %s..."
-msgstr "Genero le voci..."
+msgstr "Lettura di %s..."
-#: lilypond-book.py:1737
-#, fuzzy
+#: lilypond-book.py:549
msgid "Dissecting..."
-msgstr "Genero le voci..."
+msgstr "Dissezione di..."
-#: lilypond-book.py:1753
-#, fuzzy, python-format
+#: lilypond-book.py:561
+#, python-format
msgid "Compiling %s..."
-msgstr "Genero le voci..."
+msgstr "Compilazione di %s"
-#: lilypond-book.py:1762
-#, fuzzy, python-format
+#: lilypond-book.py:570
+#, python-format
msgid "Processing include: %s"
-msgstr "Elaboro..."
+msgstr "Elaborazione di include: %s"
-#: lilypond-book.py:1776
-#, fuzzy, python-format
+#: lilypond-book.py:582
+#, python-format
msgid "Removing `%s'"
-msgstr "Genero le voci..."
-
-#: lilypond-book.py:1809
-msgid "option --psfonts not used"
-msgstr ""
-
-#: lilypond-book.py:1810
-msgid "processing with dvips will have no fonts"
-msgstr ""
+msgstr "Eliminazione di «%s»"
-#: lilypond-book.py:1813
-msgid "DVIPS usage:"
-msgstr ""
-
-#: lilypond-book.py:1869
-#, fuzzy, python-format
-msgid "Writing fonts to %s..."
-msgstr "non trovo e non posso creare `%s'"
-
-#: midi2ly.py:87 lily-library.scm:615 lily-library.scm:624
+#: midi2ly.py:99
msgid "warning: "
msgstr "attenzione: "
-#: midi2ly.py:90 midi2ly.py:911
+#: midi2ly.py:102 midi2ly.py:922
msgid "error: "
msgstr "errore: "
-#: midi2ly.py:91
-#, fuzzy
+#: midi2ly.py:103
msgid "Exiting... "
-msgstr "Genero le voci..."
+msgstr "Uscita... "
-#: midi2ly.py:837
-#, fuzzy, python-format
+#: midi2ly.py:848
+#, python-format
msgid "%s output to `%s'..."
-msgstr "L'output MIDI è inviato a %s..."
+msgstr "%s output inviato a «%s»..."
-#: midi2ly.py:850 musicxml2ly.py:1803
+#: midi2ly.py:861
#, python-format
-msgid "Convert %s to LilyPond input."
-msgstr ""
+msgid "Convert %s to LilyPond input.\n"
+msgstr "Converte %s in input LilyPond.\n"
-#: midi2ly.py:855
+#: midi2ly.py:866
msgid "print absolute pitches"
-msgstr ""
+msgstr "stampa altezze assolute"
-#: midi2ly.py:857 midi2ly.py:872
+#: midi2ly.py:868 midi2ly.py:883
msgid "DUR"
-msgstr ""
+msgstr "DURATA"
-#: midi2ly.py:858
+#: midi2ly.py:869
msgid "quantise note durations on DUR"
-msgstr ""
+msgstr "quantificare la durata delle note in DURATA"
-#: midi2ly.py:861
+#: midi2ly.py:872
msgid "print explicit durations"
-msgstr ""
+msgstr "stampa durate esplicite"
-#: midi2ly.py:865
-#, fuzzy
+#: midi2ly.py:876
msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr " -k, --key=ACC[:MINOR] imposta l'armatura: ACC +diesis/-bemolli; :1 minore\n"
+msgstr "imposta la tonalità: ALTERAZIONE=+diesis|-bemolle; MINORE=1"
-#: midi2ly.py:866
+#: midi2ly.py:877
msgid "ALT[:MINOR]"
-msgstr ""
+msgstr "ALTERAZIONE[:MINORE]"
-#: midi2ly.py:871
+#: midi2ly.py:882
msgid "quantise note starts on DUR"
-msgstr ""
+msgstr "quantifica l'inizio di una nota in DURATA"
-#: midi2ly.py:874
+#: midi2ly.py:885
msgid "DUR*NUM/DEN"
-msgstr ""
+msgstr "DURATA*NUMERATORE/DENOMINATORE"
-#: midi2ly.py:877
+#: midi2ly.py:888
msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr ""
+msgstr "consente le durate DURATA*NUMERATORE/DENOMINATORE nei gruppi irregolari"
-#: midi2ly.py:889
+#: midi2ly.py:900
msgid "treat every text as a lyric"
-msgstr ""
+msgstr "tratta ogni testo come il testo di una canzone"
-#: midi2ly.py:892
+#: midi2ly.py:903
msgid "Examples"
-msgstr ""
+msgstr "Esempi"
-#: midi2ly.py:912
+#: midi2ly.py:923
msgid "no files specified on command line."
-msgstr ""
+msgstr "nessun file specificato nella riga di comando."
-#: musicxml2ly.py:193 musicxml2ly.py:195
+#: musicxml2ly.py:324
+#, python-format
+msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
+msgstr "Si è trovato un file creato da %s che contiene informazioni sbagliate sulla disposizione delle travature. Tutte le informazioni sulle travature presenti nel file MusicXML verranno ignorate"
+
+#: musicxml2ly.py:340 musicxml2ly.py:342
#, python-format
msgid "Unprocessed PartGroupInfo %s encountered"
-msgstr ""
+msgstr "PartGroupInfo %s rilevato ma non elaborato"
-#: musicxml2ly.py:426
+#: musicxml2ly.py:595
+#, python-format
+msgid "Encountered note at %s without type and duration (=%s)"
+msgstr "Trovata una nota in %s senza tipo e durata (=%s)"
+
+#: musicxml2ly.py:615
#, python-format
msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
-msgstr ""
+msgstr "Trovata una durata razionale con denominatore %s, impossibile convertire in una durata di lilypond"
+
+#: musicxml2ly.py:864
+msgid "Unable to extract key signature!"
+msgstr "Impossibile estrarre l'armatura di chiave!"
-#: musicxml2ly.py:609
+#: musicxml2ly.py:891
#, python-format
-msgid "unknown mode %s, expecting 'major' or 'minor'"
-msgstr ""
+msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
+msgstr "modo %s sconosciuto, è richiesto \"major\" o \"minor\" o un modo ecclesiastico!"
-#: musicxml2ly.py:647
+#: musicxml2ly.py:1029
#, python-format
msgid "Encountered unprocessed marker %s\n"
-msgstr ""
+msgstr "Trovato un marcatore non elaborato %s\n"
-#: musicxml2ly.py:741
-#, fuzzy, python-format
+#: musicxml2ly.py:1123
+#, python-format
msgid "unknown span event %s"
-msgstr "tipo di chiave sconosciuto"
+msgstr "evento di estensione %s sconosciuto"
-#: musicxml2ly.py:751
-#, fuzzy, python-format
+#: musicxml2ly.py:1133
+#, python-format
msgid "unknown span type %s for %s"
-msgstr "traduttore sconosciuto `%s'"
+msgstr "tipo di estensione %s sconosciuto per %s"
+
+#: musicxml2ly.py:1553
+msgid "Unknown metronome mark, ignoring"
+msgstr "Indicazione metronomica sconosciuta, si ignora"
+
+#. TODO: Implement the other (more complex) way for tempo marks!
+#: musicxml2ly.py:1558
+msgid "Metronome marks with complex relations (<metronome-note> in MusicXML) are not yet implemented."
+msgstr "Indicazioni metronomiche con relazioni complesse (<metronome-note> in MusicXML) non sono ancora implementate."
-#: musicxml2ly.py:1259
+#: musicxml2ly.py:1760
+#, python-format
+msgid "Unable to convert chord type %s to lilypond."
+msgstr "Impossibile convertire l'accordo di tipo %s in un'espressione di lilypond."
+
+#: musicxml2ly.py:1909
#, python-format
msgid "drum %s type unknown, please add to instrument_drumtype_dict"
-msgstr ""
+msgstr "tipo di percussione %s sconosciuto, si prega di aggiungerlo a instrument_drumtype_dict"
-#: musicxml2ly.py:1263
-#, fuzzy
+#: musicxml2ly.py:1913
msgid "cannot find suitable event"
-msgstr "non trovo il file: `%s'"
+msgstr "impossibile trovare un evento adatto"
-#: musicxml2ly.py:1346
+#: musicxml2ly.py:2061
#, python-format
-msgid "Negative skip %s"
-msgstr ""
+msgid "Negative skip %s (from position %s to %s)"
+msgstr "Salto negativo %s (dalla posizione %s a %s)"
-#: musicxml2ly.py:1480
+#: musicxml2ly.py:2202
#, python-format
msgid "Negative skip found: from %s to %s, difference is %s"
-msgstr ""
+msgstr "Trovato un salto negativo: da %s a %s, la differenza è %s"
-#: musicxml2ly.py:1505
-#, fuzzy, python-format
+#: musicxml2ly.py:2283
+#, python-format
msgid "unexpected %s; expected %s or %s or %s"
-msgstr "Errore non fatale: "
+msgstr "%s inaspettato; previsto %s o %s o %s"
-#: musicxml2ly.py:1583
-msgid "cannot have two simultaneous slurs"
-msgstr ""
+#: musicxml2ly.py:2389
+msgid "Encountered closing slur, but no slur is open"
+msgstr "Trovata la chiusura di una legatura di portamento, ma non ne è stata aperta alcuna"
+
+#: musicxml2ly.py:2392
+msgid "Cannot have two simultaneous (closing) slurs"
+msgstr "Due legature di portamento non possono chiudersi simultaneamente"
+
+#: musicxml2ly.py:2401
+msgid "Cannot have a slur inside another slur"
+msgstr "Due legature di portamento non possono sovrapporsi"
-#: musicxml2ly.py:1711
+#: musicxml2ly.py:2404
+msgid "Cannot have two simultaneous slurs"
+msgstr "Due legature di portamento non possono intervenire simultaneamente"
+
+#: musicxml2ly.py:2538
#, python-format
msgid "cannot simultaneously have more than one mode: %s"
-msgstr ""
+msgstr "non si può avere simultaneamente più di un modo: %s"
-#: musicxml2ly.py:1791
-#, fuzzy
+#: musicxml2ly.py:2646
msgid "Converting to LilyPond expressions..."
-msgstr "Genero le voci..."
+msgstr "Conversione nelle espressioni di LilyPond..."
+
+#: musicxml2ly.py:2657
+msgid "musicxml2ly [OPTION]... FILE.xml"
+msgstr "musicxml2ly [OPZIONE]... FILE.xml"
-#: musicxml2ly.py:1802
-msgid "musicxml2ly [options] FILE.xml"
+#: musicxml2ly.py:2659
+msgid ""
+"Convert MusicXML from FILE.xml to LilyPond input.\n"
+"If the given filename is -, musicxml2ly reads from the command line.\n"
msgstr ""
+"Converte FILE.xml (MusicXML) in input di LilyPond.\n"
+"Se il nome del file è -, musicxml2ly legge dalla riga di comando.\n"
-#: musicxml2ly.py:1812
-#, python-format
+#: musicxml2ly.py:2669
msgid ""
-"This program is free software. It is covered by the GNU General Public\n"
-"License and you are welcome to change it and/or distribute copies of it\n"
-"under certain conditions. Invoke as `%s --warranty' for more\n"
-"information."
+"Copyright (c) 2005--2011 by\n"
+" Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
+" Jan Nieuwenhuizen <janneke@gnu.org> and\n"
+" Reinhold Kainhofer <reinhold@kainhofer.com>\n"
msgstr ""
+"Copyright (c) 2005--2011 di\n"
+" Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
+" Jan Nieuwenhuizen <janneke@gnu.org> e\n"
+" Reinhold Kainhofer <reinhold@kainhofer.com>\n"
-#: musicxml2ly.py:1835
+#: musicxml2ly.py:2694
msgid "use lxml.etree; uses less memory and cpu time"
-msgstr ""
+msgstr "usa lxml.etree per limitare il consumo di memoria e i tempi del processore"
-#: musicxml2ly.py:1841
+#: musicxml2ly.py:2700
msgid "input file is a zip-compressed MusicXML file"
-msgstr ""
+msgstr "il file di input è un file MusicXML compresso in ZIP"
-#: musicxml2ly.py:1847
+#: musicxml2ly.py:2706
msgid "convert pitches in relative mode (default)"
-msgstr ""
+msgstr "converte le altezze in modo relativo (predefinito)"
-#: musicxml2ly.py:1852
+#: musicxml2ly.py:2711
msgid "convert pitches in absolute mode"
-msgstr ""
+msgstr "converte le altezze in modo assoluto"
-#: musicxml2ly.py:1855
+#: musicxml2ly.py:2714
msgid "LANG"
-msgstr ""
+msgstr "LINGUA"
-#: musicxml2ly.py:1857
-msgid "use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly"
-msgstr ""
+#: musicxml2ly.py:2716
+msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
+msgstr "usa LINGUA per i nomi delle altezze, ad esempio 'deutsch' per i nomi delle note in tedesco"
-#: musicxml2ly.py:1863
+#: musicxml2ly.py:2722
msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
-msgstr ""
+msgstr "non converte le direzioni (^, _ o -) per articolazioni, dinamiche, etc."
-#: musicxml2ly.py:1871
-msgid "set output filename to FILE"
-msgstr ""
+#: musicxml2ly.py:2728
+msgid "do not convert exact vertical positions of rests"
+msgstr "non converte le esatte posizioni verticali delle pause"
+
+#: musicxml2ly.py:2734
+msgid "do not convert the exact page layout and breaks"
+msgstr "non converte l'esatta formattazione di pagina e gli a capo"
+
+#: musicxml2ly.py:2740
+msgid "do not convert beaming information, use lilypond's automatic beaming instead"
+msgstr "non converte le informazioni relative alle travature, usare invece la disposizione automatica delle travature di lilypond"
+
+#: musicxml2ly.py:2748
+msgid "set output filename to FILE, stdout if -"
+msgstr "imposta il nome del file di output su FILE (stdout se -)"
-#: musicxml2ly.py:1929
-#, fuzzy, python-format
+#: musicxml2ly.py:2831
+#, python-format
msgid "unknown part in part-list: %s"
-msgstr "traduttore sconosciuto `%s'"
+msgstr "parte sconosciuta in part-list: %s"
+
+#: musicxml2ly.py:2893
+msgid "Input is compressed, extracting raw MusicXML data from stdin"
+msgstr "L'input è compresso. Estrazione dei dati MusicXML da stdin"
-#: musicxml2ly.py:1985
+#: musicxml2ly.py:2896
#, python-format
msgid "Input file %s is compressed, extracting raw MusicXML data"
-msgstr ""
+msgstr "Il file di input %s è compresso. Estrazione dei dati MusicXML"
+
+#: musicxml2ly.py:2926
+msgid "Reading MusicXML from Standard input ..."
+msgstr "Lettura di MusicXML da Standard input ..."
-#: musicxml2ly.py:2011
-#, fuzzy, python-format
+#: musicxml2ly.py:2928
+#, python-format
msgid "Reading MusicXML from %s ..."
-msgstr "Genero le voci..."
+msgstr "Lettura di MusicXML da %s ..."
-#: musicxml2ly.py:2039 musicxml2ly.py:2053
-#, fuzzy, python-format
+#: musicxml2ly.py:2961
+#, python-format
msgid "Output to `%s'"
-msgstr "L'output MIDI è inviato a %s..."
+msgstr "Output inviato a «%s»"
-#: musicxml2ly.py:2096
-#, fuzzy, python-format
+#: musicxml2ly.py:3028
+#, python-format
msgid "Unable to find input file %s"
-msgstr "non trovo il file: `%s'"
+msgstr "Impossibile trovare il file di input %s"
+
+#: website_post.py:115
+msgid "English"
+msgstr "Inglese"
-#: getopt-long.cc:140
+#: website_post.py:118
+msgid "Other languages"
+msgstr "Altre lingue"
+
+#: getopt-long.cc:153
#, c-format
msgid "option `%s' requires an argument"
-msgstr "l'opzione `%s' richiede un argomento"
+msgstr "l'opzione «%s» richiede un argomento"
-#: getopt-long.cc:144
-#, fuzzy, c-format
+#: getopt-long.cc:157
+#, c-format
msgid "option `%s' does not allow an argument"
-msgstr "opzione `%s' non accetta argomenti"
+msgstr "l'opzione «%s» non accetta argomenti"
-#: getopt-long.cc:148
+#: getopt-long.cc:161
#, c-format
msgid "unrecognized option: `%s'"
-msgstr "opzione non riconosciuta: `%s'"
+msgstr "opzione non riconosciuta: «%s»"
-#: getopt-long.cc:154
+#: getopt-long.cc:167
#, c-format
msgid "invalid argument `%s' to option `%s'"
-msgstr "argomento `%s' non valido per l'opzione `%s'"
+msgstr "argomento «%s» non valido per l'opzione «%s»"
+
+#: warn.cc:59
+#, c-format
+msgid "success: %s"
+msgstr "riuscito: %s"
-#: warn.cc:68 grob.cc:566 input.cc:82
+#: warn.cc:86 grob.cc:617 input.cc:97
#, c-format
msgid "programming error: %s"
-msgstr ""
+msgstr "errore di programmazione: %s"
-#: warn.cc:69 input.cc:83
+#: warn.cc:87 input.cc:98
msgid "continuing, cross fingers"
-msgstr ""
+msgstr "continua, incrociare le dita"
-#: accidental-engraver.cc:250
+#: accidental-engraver.cc:180
#, c-format
msgid "accidental typesetting list must begin with context-name: %s"
-msgstr ""
-
-#: accidental-engraver.cc:277
-#, fuzzy, c-format
-msgid "ignoring unknown accidental rule: %s"
-msgstr "stringa di escape sconosciuta: `\\%s'"
+msgstr "la lista tipografica delle alterazioni deve iniziare con context-name: %s"
-#: accidental-engraver.cc:293
+#: accidental-engraver.cc:210
#, c-format
-msgid "pair or context-name expected for accidental rule, found %s"
-msgstr ""
+msgid "procedure or context-name expected for accidental rule, found %s"
+msgstr "si aspettava una procedura o un nome di contesto per la regola di alterazione accidentale, si è trovato %s"
-#: accidental.cc:187
+#: accidental.cc:200
#, c-format
msgid "Could not find glyph-name for alteration %s"
-msgstr ""
+msgstr "Non si è trovato il nome del glifo per l'alterazione %s"
-#: accidental.cc:202
+#: accidental.cc:215
msgid "natural alteration glyph not found"
-msgstr ""
-
-#: align-interface.cc:325
-msgid "tried to get a translation for something that is no child of mine"
-msgstr ""
+msgstr "alterazione naturale del glifo non trovata"
-#: all-font-metrics.cc:143
-#, fuzzy, c-format
+#: all-font-metrics.cc:156
+#, c-format
msgid "cannot find font: `%s'"
-msgstr "non trovo il file: `%s'"
+msgstr "impossibile trovare il tipo di carattere: «%s»"
-#: apply-context-iterator.cc:31
+#: apply-context-iterator.cc:42
msgid "\\applycontext argument is not a procedure"
-msgstr ""
+msgstr "l'argomento di \\applycontext non è una procedura"
-#: auto-change-iterator.cc:63 change-iterator.cc:61
-#, fuzzy, c-format
+#: auto-change-iterator.cc:74 change-iterator.cc:72
+#, c-format
msgid "cannot change, already in translator: %s"
-msgstr "non posso cambiare `%s' in `%s'"
+msgstr "impossibile cambiare, già nel traduttore: %s"
-#: axis-group-engraver.cc:78
+#: axis-group-engraver.cc:94
msgid "Axis_group_engraver: vertical group already has a parent"
-msgstr ""
+msgstr "Axis_group_engraver: il gruppo verticale ha già un genitore"
-#: axis-group-engraver.cc:79
+#: axis-group-engraver.cc:95
msgid "are there two Axis_group_engravers?"
-msgstr ""
+msgstr "ci sono due Axis_group_engravers?"
-#: axis-group-engraver.cc:80
+#: axis-group-engraver.cc:96
msgid "removing this vertical group"
-msgstr ""
+msgstr "eliminazione di questo gruppo verticale"
-#: axis-group-interface.cc:524
+#: axis-group-interface.cc:611
msgid "an outside-staff object should have a direction, defaulting to up"
-msgstr ""
+msgstr "un oggetto esterno al rigo dovrebbe avere una direzione, si imposta in su come da impostazione predefinita"
-#: bar-check-iterator.cc:73
-#, fuzzy, c-format
+#: bar-check-iterator.cc:84
+#, c-format
msgid "barcheck failed at: %s"
-msgstr "controllo del battute fallito: %s"
+msgstr "controllo di battuta fallito a: %s"
-#: beam-engraver.cc:126
+#: beam-engraver.cc:147
msgid "already have a beam"
-msgstr ""
+msgstr "travatura già presente"
-#: beam-engraver.cc:202
-#, fuzzy
+#: beam-engraver.cc:230
msgid "unterminated beam"
-msgstr "beam non terminato"
+msgstr "travatura non terminata"
-#: beam-engraver.cc:244 chord-tremolo-engraver.cc:138
-#, fuzzy
+#: beam-engraver.cc:266 chord-tremolo-engraver.cc:150
msgid "stem must have Rhythmic structure"
-msgstr "I gambi devono avere una struttura ritmica."
+msgstr "il gambo deve avere una struttura ritmica"
-#: beam-engraver.cc:252
-#, fuzzy
+#: beam-engraver.cc:274
msgid "stem does not fit in beam"
-msgstr "il gambo non rientra nel beam"
+msgstr "il gambo non rientra nella travatura"
-#: beam-engraver.cc:253
+#: beam-engraver.cc:275
msgid "beam was started here"
-msgstr ""
+msgstr "la travatura è iniziata qui"
-#: beam-quanting.cc:307
+#: beam-quanting.cc:314
msgid "no feasible beam position"
-msgstr ""
+msgstr "nessuna posizione fattibile per la travatura"
-#: beam.cc:160
-#, fuzzy
+#: beam.cc:171
msgid "removing beam with no stems"
-msgstr "beam con meno di due gambi"
+msgstr "rimozione delle travature senza gambi"
-#: beam.cc:1069
+#: beam.cc:1116
msgid "no viable initial configuration found: may not find good beam slope"
-msgstr ""
+msgstr "nessuna configurazione iniziale fattibile trovata: si potrebbe non trovare una buona inclinazione delle travature"
-#: break-alignment-interface.cc:195
-#, fuzzy, c-format
+#: break-alignment-interface.cc:206
+#, c-format
msgid "No spacing entry from %s to `%s'"
-msgstr "traduttore sconosciuto `%s'"
+msgstr "Nessuno spazio da %s a «%s»"
-#: change-iterator.cc:23
-#, fuzzy, c-format
+#: change-iterator.cc:34
+#, c-format
msgid "cannot change `%s' to `%s'"
-msgstr "non posso cambiare `%s' in `%s'"
+msgstr "impossibile cambiare «%s» in «%s»"
#. FIXME: constant error message.
-#: change-iterator.cc:82
-#, fuzzy
+#: change-iterator.cc:93
msgid "cannot find context to switch to"
-msgstr "Non trovo il contesto dello Score"
+msgstr "impossibile trovare il contesto su cui spostarsi"
#. We could change the current translator's id, but that would make
#. errors hard to catch.
#.
#. last->translator_id_string () = get_change
#. ()->change_to_id_string ();
-#: change-iterator.cc:91
-#, fuzzy, c-format
+#: change-iterator.cc:102
+#, c-format
msgid "not changing to same context type: %s"
-msgstr "% strumento:"
+msgstr "non passare allo stesso tipo di contesto: %s"
#. FIXME: uncomprehensable message
-#: change-iterator.cc:95
+#: change-iterator.cc:106
msgid "none of these in my family"
-msgstr ""
+msgstr "nessuno di questi nella mia famiglia"
#: chord-tremolo-engraver.cc:88
msgid "No tremolo to end"
-msgstr ""
+msgstr "Nessun tremolo alla fine"
-#: chord-tremolo-engraver.cc:110
-#, fuzzy
+#: chord-tremolo-engraver.cc:109
msgid "unterminated chord tremolo"
-msgstr "beam non terminato"
+msgstr "tremolo dell'accordo non terminato"
-#: chord-tremolo-iterator.cc:35
-#, c-format
-msgid "expect 2 elements for chord tremolo, found %d"
-msgstr ""
-
-#: clef.cc:54
+#: clef.cc:65
#, c-format
msgid "clef `%s' not found"
-msgstr ""
+msgstr "chiave «%s» non trovata"
-#: cluster.cc:110
-#, fuzzy, c-format
+#: cluster.cc:120
+#, c-format
msgid "unknown cluster style `%s'"
-msgstr "tipo di chiave sconosciuto"
+msgstr "stile cluster sconosciuto «%s»"
-#: cluster.cc:147
+#: cluster.cc:157
msgid "junking empty cluster"
-msgstr ""
+msgstr "eliminazione di cluster vuoti"
-#: coherent-ligature-engraver.cc:100
+#: coherent-ligature-engraver.cc:111
#, c-format
msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
-msgstr ""
+msgstr "Coherent_ligature_engraver: impostare `spacing-increment=0.01': ptr=%ul"
#. if we get to here, just put everything on one line
-#: constrained-breaking.cc:167 constrained-breaking.cc:184
-#, fuzzy
+#: constrained-breaking.cc:189 constrained-breaking.cc:207
msgid "cannot find line breaking that satisfies constraints"
-msgstr "la soluzione non soddisfa i vincoli"
+msgstr "impossibile trovare interruzioni di linea che soddisfino i vincoli"
-#: context-def.cc:130
-#, c-format
-msgid "program has no such type: `%s'"
-msgstr ""
-
-#: context-property.cc:30
+#: context-property.cc:42
msgid "need symbol arguments for \\override and \\revert"
-msgstr ""
+msgstr "sono necessari argomenti simbolici per \\override e \\revert"
-#: context.cc:144
-#, fuzzy, c-format
+#: context.cc:149
+#, c-format
msgid "cannot find or create new `%s'"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "impossibile trovare o creare un nuovo «%s»"
-#: context.cc:206
-#, fuzzy, c-format
+#: context.cc:207
+#, c-format
msgid "cannot find or create `%s' called `%s'"
-msgstr "non trovo e non posso creare '%s' chiamato '%s'"
+msgstr "impossibile trovare o creare «%s» chiamato «%s»"
-#: context.cc:268
+#: context.cc:269
#, c-format
msgid "Invalid CreateContext event: Cannot create %s context"
-msgstr ""
+msgstr "Evento CreateContext non valido: impossibile creare il contesto %s"
-#: context.cc:380
-#, fuzzy, c-format
+#: context.cc:400
+#, c-format
msgid "cannot find or create: `%s'"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "impossibile trovare o creare: «%s»"
-#: custos.cc:77
+#: custos.cc:88
#, c-format
msgid "custos `%s' not found"
-msgstr ""
+msgstr "custos «%s» non trovato"
-#: dispatcher.cc:71
+#: dispatcher.cc:82
msgid "Event class should be a symbol"
-msgstr ""
+msgstr "La classe evento dovrebbe essere un simbolo"
-#: dispatcher.cc:78
-#, fuzzy, c-format
+#: dispatcher.cc:89
+#, c-format
msgid "Unknown event class %s"
-msgstr "tipo di chiave sconosciuto"
+msgstr "Classe di evento %s sconosciuta"
-#: dots.cc:37
+#: dots.cc:48
#, c-format
msgid "dot `%s' not found"
-msgstr ""
+msgstr "punto «%s» non trovato"
-#: dynamic-engraver.cc:192
-#, fuzzy
+#: dynamic-engraver.cc:197
msgid "cannot find start of (de)crescendo"
-msgstr "non trovo un (de)crescendo fino alla fine"
+msgstr "impossibile trovare l'inizio del (de)crescendo"
-#: dynamic-engraver.cc:201
-#, fuzzy
+#: dynamic-engraver.cc:206
msgid "already have a decrescendo"
-msgstr "crescendo non terminato"
+msgstr "decrescendo già presente"
-#: dynamic-engraver.cc:203
-#, fuzzy
+#: dynamic-engraver.cc:208
msgid "already have a crescendo"
-msgstr "crescendo non terminato"
+msgstr "crescendo già presente"
-#: dynamic-engraver.cc:206
-#, fuzzy
+#: dynamic-engraver.cc:211
msgid "cresc starts here"
-msgstr "un cambio di tempo non è ammesso in questo punto"
+msgstr "cresc inizia qui"
-#: dynamic-engraver.cc:335
-#, fuzzy
+#: dynamic-engraver.cc:339
msgid "unterminated (de)crescendo"
-msgstr "crescendo non terminato"
+msgstr "(de)crescendo non terminato"
-#: extender-engraver.cc:142 extender-engraver.cc:151
-msgid "unterminated extender"
-msgstr "extender non terminato"
+#: episema-engraver.cc:75
+msgid "already have an episema"
+msgstr "episema già presente"
-#: font-config.cc:28
-msgid "Initializing FontConfig..."
-msgstr ""
+#: episema-engraver.cc:88
+msgid "cannot find start of episema"
+msgstr "impossibile trovare l'inizio dell'episema"
-#: font-config.cc:44
-#, c-format
-msgid "Rebuilding FontConfig cache %s, this may take a while..."
-msgstr ""
+#: episema-engraver.cc:137
+msgid "unterminated episema"
+msgstr "episema non terminato"
-#: font-config.cc:57
-#, fuzzy, c-format
+#: extender-engraver.cc:170 extender-engraver.cc:179
+msgid "unterminated extender"
+msgstr "estensore non terminato"
+
+#: font-config-scheme.cc:152 font-config.cc:55
+#, c-format
msgid "failed adding font directory: %s"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "errore nell'aggiungere la directory dei tipi di carattere: %s"
-#: font-config.cc:59
-#, fuzzy, c-format
+#: font-config-scheme.cc:154 font-config.cc:57
+#, c-format
msgid "adding font directory: %s"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "aggiungere la directory dei tipi di carattere: %s"
-#: general-scheme.cc:201
+#: font-config-scheme.cc:168
+#, c-format
+msgid "failed adding font file: %s"
+msgstr "errore nell'aggiungere il file dei tipi di carattere: %s"
+
+#: font-config-scheme.cc:170
+#, c-format
+msgid "adding font file: %s"
+msgstr "aggiungere il file dei tipi di carattere: %s"
+
+#: font-config.cc:40
+msgid "Initializing FontConfig..."
+msgstr "Inizializzazione di FontConfig..."
+
+#: font-config.cc:61
+msgid "Building font database..."
+msgstr "Creazione del database dei tipi di carattere..."
+
+#: general-scheme.cc:305
msgid "infinity or NaN encountered while converting Real number"
-msgstr ""
+msgstr "si è incontrato infinito o un valore non numerico durante la conversione di un numero reale"
-#: general-scheme.cc:202
+#: general-scheme.cc:306
msgid "setting to zero"
-msgstr ""
+msgstr "impostato a zero"
-#: general-scheme.cc:421 output-ps.scm:61
+#: general-scheme.cc:542 output-ps.scm:48
msgid "Found infinity or nan in output. Substituting 0.0"
-msgstr ""
+msgstr "Trovato infinito o un valore non numerico nell'output. Sostituito con 0.0"
-#: glissando-engraver.cc:94
-#, fuzzy
+#: glissando-engraver.cc:105
msgid "unterminated glissando"
-msgstr "slur non terminato"
+msgstr "glissando non terminato"
-#: global-context-scheme.cc:85 global-context-scheme.cc:103
-#, fuzzy
+#: global-context-scheme.cc:96 global-context-scheme.cc:114
msgid "no music found in score"
-msgstr "ho bisogno di musica nello spartito"
+msgstr "nessuna musica trovata nello spartito"
-#: global-context-scheme.cc:93
-#, fuzzy
+#: global-context-scheme.cc:104
msgid "Interpreting music... "
msgstr "Interpretazione della musica..."
-#: global-context-scheme.cc:116
-#, fuzzy, c-format
+#: global-context-scheme.cc:127
+#, c-format
msgid "elapsed time: %.2f seconds"
-msgstr "durata: %.2f secondi"
+msgstr "tempo trascorso: %.2f secondi"
-#: gregorian-ligature-engraver.cc:59
+#: gregorian-ligature-engraver.cc:70
#, c-format
msgid "\\%s ignored"
-msgstr ""
+msgstr "\\%s ignorato"
-#: gregorian-ligature-engraver.cc:64
+#: gregorian-ligature-engraver.cc:75
#, c-format
msgid "implied \\%s added"
-msgstr ""
+msgstr "aggiunto il \\%s implicato"
#. ligature may not start with 2nd head of pes or flexa
-#: gregorian-ligature-engraver.cc:212
-#, fuzzy
+#: gregorian-ligature-engraver.cc:224
msgid "cannot apply `\\~' on first head of ligature"
-msgstr "non trovo le estremità di %s"
+msgstr "impossibile applicare «\\~» sulla prima testa della legatura"
#. (pitch == prev_pitch)
-#: gregorian-ligature-engraver.cc:224
+#: gregorian-ligature-engraver.cc:236
msgid "cannot apply `\\~' on heads with identical pitch"
-msgstr ""
+msgstr "impossibile applicare «\\~» su teste di identica altezza"
-#: grob-interface.cc:57
-#, fuzzy, c-format
+#: grob-interface.cc:68
+#, c-format
msgid "Unknown interface `%s'"
-msgstr "tipo di chiave sconosciuto"
+msgstr "Interfaccia «%s» sconosciuta"
-#: grob-interface.cc:68
+#: grob-interface.cc:79
#, c-format
msgid "Grob `%s' has no interface for property `%s'"
-msgstr ""
+msgstr "Il grob «%s» non ha un'interfaccia per la proprietà «%s»"
#: grob-property.cc:34
#, c-format
msgid "%d: %s"
-msgstr ""
+msgstr "%d: %s"
#: grob-property.cc:173
#, c-format
msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
-msgstr ""
+msgstr "dipendenza ciclica: calculation-in-progress incontrato per #'%s (%s)"
-#: grob.cc:251
+#: grob.cc:286
msgid "Infinity or NaN encountered"
-msgstr ""
+msgstr "incontrato infinito o un valore non numerico"
-#: hairpin.cc:187
+#: hairpin.cc:186
msgid "decrescendo too small"
-msgstr ""
+msgstr "decrescendo troppo piccolo"
-#: horizontal-bracket-engraver.cc:59
+#: horizontal-bracket-engraver.cc:78
msgid "do not have that many brackets"
-msgstr ""
+msgstr "non ci sono così tante parentesi"
-#: horizontal-bracket-engraver.cc:68
-#, fuzzy
+#: horizontal-bracket-engraver.cc:87
msgid "conflicting note group events"
-msgstr "richieste di timing in conflitto"
+msgstr "eventi di gruppi di note in conflitto"
-#: hyphen-engraver.cc:93
-#, fuzzy
+#: hyphen-engraver.cc:104
msgid "removing unterminated hyphen"
-msgstr "beam non terminato"
+msgstr "eliminazione di un trattino non terminato"
-#: hyphen-engraver.cc:107
-#, fuzzy
+#: hyphen-engraver.cc:118
msgid "unterminated hyphen; removing"
-msgstr "beam non terminato"
+msgstr "trattino non terminato; eliminazione"
-#: includable-lexer.cc:53 lily-guile.cc:76 lily-parser-scheme.cc:117
+#: includable-lexer.cc:71 lily-guile.cc:87 lily-parser-scheme.cc:109
#, c-format
msgid "cannot find file: `%s'"
-msgstr "non trovo il file: `%s'"
+msgstr "impossibile trovare il file: «%s»"
-#: includable-lexer.cc:55 lily-parser-scheme.cc:108
-#, fuzzy, c-format
+#: includable-lexer.cc:73 lily-parser-scheme.cc:100
+#, c-format
msgid "(search path: `%s')"
-msgstr "(Il path di caricamento è `%s'"
+msgstr "(percorso di ricerca: «%s»)"
-#: input.cc:112 source-file.cc:168 source-file.cc:183
+#: input.cc:131 source-file.cc:179 source-file.cc:194
msgid "position unknown"
msgstr "posizione sconosciuta"
-#: key-signature-interface.cc:74
+#: key-signature-interface.cc:78
#, c-format
msgid "No glyph found for alteration: %s"
-msgstr ""
+msgstr "Nessun glifo trovato per l'alterazione: %s"
-#: key-signature-interface.cc:84
+#: key-signature-interface.cc:88
msgid "alteration not found"
-msgstr ""
+msgstr "alterazione non trovata"
-#: ligature-bracket-engraver.cc:62 ligature-engraver.cc:93
-#, fuzzy
+#: ligature-bracket-engraver.cc:73 ligature-engraver.cc:104
msgid "cannot find start of ligature"
-msgstr "non trovo le estremità di %s"
+msgstr "impossibile trovare l'inizio della legatura"
-#: ligature-bracket-engraver.cc:75 ligature-engraver.cc:120
-#, fuzzy
+#: ligature-bracket-engraver.cc:86 ligature-engraver.cc:131
msgid "already have a ligature"
-msgstr "crescendo non terminato"
+msgstr "legatura già presente"
-#: ligature-engraver.cc:98
+#: ligature-engraver.cc:109
msgid "no right bound"
-msgstr ""
+msgstr "manca il limite destro"
-#: ligature-engraver.cc:129
+#: ligature-engraver.cc:140
msgid "no left bound"
-msgstr ""
+msgstr "manca il limite sinistro"
-#: ligature-engraver.cc:173
-#, fuzzy
+#: ligature-engraver.cc:185
msgid "unterminated ligature"
-msgstr "slur non terminato"
+msgstr "legatura non terminata"
-#: ligature-engraver.cc:202
+#: ligature-engraver.cc:214
msgid "ignoring rest: ligature may not contain rest"
-msgstr ""
+msgstr "pausa ignorata: la legatura non può contenere una pausa"
-#: ligature-engraver.cc:203
-#, fuzzy
+#: ligature-engraver.cc:215
msgid "ligature was started here"
-msgstr "un cambio di tempo non è ammesso in questo punto"
+msgstr "la legatura è iniziata qui"
-#: lily-guile.cc:78
-#, fuzzy, c-format
+#: lily-guile.cc:89
+#, c-format
msgid "(load path: `%s')"
-msgstr "(Il path di caricamento è `%s'"
+msgstr "(percorso di caricamento: «%s»)"
-#: lily-guile.cc:438
+#: lily-guile.cc:439
#, c-format
msgid "cannot find property type-check for `%s' (%s)."
-msgstr ""
+msgstr "impossibile trovare la proprietà type-check per «%s» (%s)."
-#: lily-guile.cc:441
+#: lily-guile.cc:442
msgid "perhaps a typing error?"
-msgstr ""
+msgstr "forse un errore di digitazione?"
-#: lily-guile.cc:448
+#: lily-guile.cc:449
msgid "doing assignment anyway"
-msgstr ""
+msgstr "compito comunque in corso"
-#: lily-guile.cc:460
+#: lily-guile.cc:461
#, c-format
msgid "type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr ""
+msgstr "controllo del tipo per «%s» fallito; il valore «%s» deve essere del tipo «%s»"
-#: lily-lexer.cc:251
+#: lily-lexer.cc:264
msgid "include files are not allowed in safe mode"
-msgstr ""
+msgstr "l'inclusione di file non è permessa in modalità sicura"
-#: lily-lexer.cc:270
-#, fuzzy, c-format
+#: lily-lexer.cc:291
+#, c-format
msgid "identifier name is a keyword: `%s'"
-msgstr "Il nome dell'identificatore è una parola chiave (`%s')"
+msgstr "Il nome dell'identificatore è una parola chiave: «%s»"
-#: lily-lexer.cc:285
+#: lily-lexer.cc:312
#, c-format
msgid "error at EOF: %s"
-msgstr "errore alla fine del file: %s"
-
-#: lily-parser-scheme.cc:30
-#, fuzzy, c-format
-msgid "deprecated function called: %s"
-msgstr "non riesco a trovare il carattere `%s'"
+msgstr "errore alla fine del file (EOF): %s"
-#: lily-parser-scheme.cc:89
-#, fuzzy, c-format
+#: lily-parser-scheme.cc:82
+#, c-format
msgid "Changing working directory to: `%s'"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "Si cambia la directory di lavoro a: «%s»"
-#: lily-parser-scheme.cc:107
-#, fuzzy, c-format
+#: lily-parser-scheme.cc:99
+#, c-format
msgid "cannot find init file: `%s'"
-msgstr "non trovo il file: `%s'"
+msgstr "impossibile trovare il file di init: «%s»"
-#: lily-parser-scheme.cc:126
-#, fuzzy, c-format
+#: lily-parser-scheme.cc:118
+#, c-format
msgid "Processing `%s'"
-msgstr "Elaboro..."
+msgstr "Elaborazione di «%s»"
+
+#: lily-parser-scheme.cc:204
+msgid "ly:parser-parse-string is only valid with a new parser. Use ly:parser-include-string instead."
+msgstr "ly:parser-parse-string è valido solo con un nuovo parser. Usare ly:parser-include-string al suo posto."
-#: lily-parser.cc:99
+#: lily-parser.cc:106
msgid "Parsing..."
msgstr "Analisi..."
-#: lily-parser.cc:127
-#, fuzzy
+#: lily-parser.cc:134
msgid "braces do not match"
-msgstr "le bretelle no si accoppiano"
+msgstr "le graffe non corrispondono"
-#: lyric-combine-music-iterator.cc:327
-#, fuzzy, c-format
+#: lyric-combine-music-iterator.cc:337
+#, c-format
msgid "cannot find Voice `%s'"
-msgstr "Non trovo il file `%s'"
+msgstr "impossibile trovare la voce (Voice) «%s»"
-#: lyric-engraver.cc:158
+#: lyric-engraver.cc:175
msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
-msgstr ""
+msgstr "Le sillabe del testo non hanno note. Usare \\lyricsto o associatedVoice."
-#: main.cc:100
+#: main.cc:109
#, c-format
msgid ""
"This program is free software. It is covered by the GNU General Public\n"
"under certain conditions. Invoke as `%s --warranty' for more\n"
"information.\n"
msgstr ""
+"Questo programma è software libero. È coperto dalla GNU General Public\n"
+"License che permette di modificarlo o distribuirne copie rispettando certe\n"
+"condizioni. Per maggiori informazioni, invocare «%s --warranty».\n"
-#: main.cc:106
-#, fuzzy
+#: main.cc:115
msgid ""
" This program is free software; you can redistribute it and/or\n"
"modify it under the terms of the GNU General Public License version 2\n"
"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
"Boston, MA 02111-1307, USA.\n"
msgstr ""
-" Questo programma è free software; puoi ridistribuirlo e/o\n"
+" Questo programma è software libero; puoi ridistribuirlo e/o\n"
"modificarlo sotto le condizioni della GNU General Public License, versione 2,\n"
"come pubblicata dalla Free Software Foundation.\n"
+"\n"
" Questo programma è distribuito nella speranza che possa essere utile,\n"
"ma SENZA ALCUNA GARANZIA; è privo anche di garanzia implicita di\n"
-"COMMERCIABILITA' o della POSSIBILITA' D'USO A SCOPI PARTICOLARI. Si veda la GNU\n"
+"COMMERCIABILITÀ o della POSSIBILITÀ D'USO A SCOPI PARTICOLARI. Si veda la GNU\n"
"General Public License per ulteriori dettagli.\n"
"\n"
" Con questo programma dovresti aver ricevuto una copia della\n"
-"GNU General Public License (ci riferiamo al file COPYING); se ciò non èavvenuto, scrivi a: Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02136\n"
-"USA.\n"
+"GNU General Public License; se ciò non è avvenuto, scrivi a\n"
+"Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
+"Boston, MA 02111-1307, USA.\n"
-#: main.cc:137
+#: main.cc:146
msgid "SYM[=VAL]"
-msgstr ""
+msgstr "SIMBOLO[=VALORE]"
-#: main.cc:138
+#: main.cc:147
msgid ""
"set Scheme option SYM to VAL (default: #t).\n"
"Use -dhelp for help."
msgstr ""
+"imposta l'opzione di Scheme SIMBOLO a VALORE (predefinito: #t).\n"
+"Usare -dhelp per ottenere aiuto."
-#: main.cc:141
+#: main.cc:150
msgid "EXPR"
-msgstr ""
+msgstr "ESPRESSIONE"
-#: main.cc:141
+#: main.cc:150
msgid "evaluate scheme code"
-msgstr ""
+msgstr "valuta il codice scheme"
#. Bug in option parser: --output =foe is taken as an abbreviation
#. for --output-format.
-#: main.cc:144
+#: main.cc:153
msgid "FORMATs"
-msgstr ""
+msgstr "FORMATO"
-#: main.cc:144
+#: main.cc:153
msgid "dump FORMAT,... Also as separate options:"
-msgstr ""
-
-#: main.cc:145
-#, fuzzy
-msgid "generate DVI (tex backend only)"
-msgstr "vincoli degenerati"
+msgstr "scarica FORMATO,... Anche come opzioni separate:"
-#: main.cc:146
-#, fuzzy
+#: main.cc:154
msgid "generate PDF (default)"
-msgstr "vincoli degenerati"
+msgstr "genera PDF (predefinito)"
-#: main.cc:147
-#, fuzzy
+#: main.cc:155
msgid "generate PNG"
-msgstr "vincoli degenerati"
+msgstr "genera PNG"
-#: main.cc:148
-#, fuzzy
+#: main.cc:156
msgid "generate PostScript"
-msgstr "vincoli degenerati"
-
-#: main.cc:149
-msgid "generate TeX (tex backend only)"
-msgstr ""
+msgstr "genera PostScript"
-#: main.cc:151
+#: main.cc:158
msgid "FIELD"
-msgstr ""
+msgstr "CAMPO"
-#: main.cc:151
+#: main.cc:158
msgid ""
"dump header field FIELD to file\n"
"named BASENAME.FIELD"
msgstr ""
+"scrive il campo di intestazione CAMPO sul\n"
+"file chiamato BASENAME.CAMPO"
-#: main.cc:153
-#, fuzzy
+#: main.cc:160
msgid "add DIR to search path"
-msgstr " -I, --include=DIR aggiunge DIR ai path di ricerca\n"
+msgstr "aggiunge DIRECTORY ai percorsi di ricerca"
-#: main.cc:154
-#, fuzzy
+#: main.cc:161
msgid "use FILE as init file"
-msgstr " -i, --init=NOMEFILE usa NOMEFILE come file iniziale\n"
+msgstr "usa FILE come file di inizializzazione"
-#: main.cc:156
+#: main.cc:163
msgid "USER, GROUP, JAIL, DIR"
-msgstr ""
+msgstr "UTENTE, GRUPPO, GABBIA, DIRECTORY"
-#: main.cc:156
+#: main.cc:163
msgid ""
"chroot to JAIL, become USER:GROUP\n"
"and cd into DIR"
msgstr ""
+"chroot a GABBIA, diventa UTENTE:GRUPPO\n"
+"ed entra in DIRECTORY"
-#: main.cc:159
+#: main.cc:166
msgid "write output to FILE (suffix will be added)"
-msgstr ""
+msgstr "scrive l'output su FILE (verrà aggiunto un suffisso)"
-#: main.cc:160
+#: main.cc:167
msgid "relocate using directory of lilypond program"
-msgstr ""
+msgstr "trasferisce alla directory del programma lilypond"
-#: main.cc:203
-#, fuzzy, c-format
+#. Do not update the copyright years here, run `make grand-replace'
+#: main.cc:238
+#, c-format
msgid ""
"Copyright (c) %s by\n"
"%s and others."
-msgstr "Copyright (c) %s di"
+msgstr ""
+"Copyright (c) %s di\n"
+"%s e altri."
#. No version number or newline here. It confuses help2man.
-#: main.cc:230
-#, fuzzy, c-format
+#: main.cc:265
+#, c-format
msgid "Usage: %s [OPTION]... FILE..."
msgstr "Uso: %s [OPZIONE]... [FILE]..."
-#: main.cc:232
-#, fuzzy, c-format
+#: main.cc:267
msgid "Typeset music and/or produce MIDI from FILE."
-msgstr "Stampa partitura oppure suona una song MIDI da FILE o <stdin>."
+msgstr "Stampa partitura oppure crea MIDI da FILE."
-#: main.cc:234
-#, c-format
+#: main.cc:269
msgid "LilyPond produces beautiful music notation."
-msgstr ""
+msgstr "LilyPond produce bella notazione musicale."
-#: main.cc:236
+#: main.cc:271
#, c-format
msgid "For more information, see %s"
-msgstr ""
+msgstr "Per maggiori informazioni si veda %s"
-#: main.cc:238
-#, c-format
+#: main.cc:273
msgid "Options:"
-msgstr "Opzioni: "
-
-#: main.cc:242
-#, c-format
-msgid "Report bugs via %s"
-msgstr ""
+msgstr "Opzioni:"
-#: main.cc:288
+#: main.cc:327
#, c-format
msgid "expected %d arguments with jail, found: %u"
-msgstr ""
+msgstr "previsti gli argomenti %d per la gabbia, trovati: %u"
-#: main.cc:302
-#, fuzzy, c-format
+#: main.cc:341
+#, c-format
msgid "no such user: %s"
-msgstr "% strumento:"
+msgstr "non esiste questo utente: %s"
-#: main.cc:304
+#: main.cc:343
#, c-format
msgid "cannot get user id from user name: %s: %s"
-msgstr ""
+msgstr "impossibile acquisire l'id dell'utente dal nome utente: %s: %s"
-#: main.cc:319
-#, fuzzy, c-format
+#: main.cc:358
+#, c-format
msgid "no such group: %s"
-msgstr "% strumento:"
+msgstr "non esiste questo gruppo: %s"
-#: main.cc:321
-#, fuzzy, c-format
+#: main.cc:360
+#, c-format
msgid "cannot get group id from group name: %s: %s"
-msgstr "non posso cambiare `%s' in `%s'"
+msgstr "impossibile acquisire l'id del gruppo dal nome del gruppo: %s:%s"
-#: main.cc:329
-#, fuzzy, c-format
+#: main.cc:368
+#, c-format
msgid "cannot chroot to: %s: %s"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "non si può fare il chroot a: %s: %s"
-#: main.cc:336
-#, fuzzy, c-format
+#: main.cc:375
+#, c-format
msgid "cannot change group id to: %d: %s"
-msgstr "non posso cambiare `%s' in `%s'"
+msgstr "non si può cambiare l'id del gruppo in: %d: %s"
-#: main.cc:342
-#, fuzzy, c-format
+#: main.cc:381
+#, c-format
msgid "cannot change user id to: %d: %s"
-msgstr "non posso cambiare `%s' in `%s'"
+msgstr "non si può cambiare l'id dell'utente in: %d: %s"
-#: main.cc:348
-#, fuzzy, c-format
+#: main.cc:387
+#, c-format
msgid "cannot change working directory to: %s: %s"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "non si può passare alla directory di lavoro: %s: %s"
-#: main.cc:594
+#: main.cc:628
#, c-format
msgid "exception caught: %s"
-msgstr ""
+msgstr "ricevuta un'eccezione: %s"
#. FIXME: constant error message.
-#: mark-engraver.cc:129
+#: mark-engraver.cc:157
msgid "rehearsalMark must have integer value"
-msgstr ""
+msgstr "rehearsalMark deve avere un valore intero"
-#: mark-engraver.cc:135
+#: mark-engraver.cc:163
msgid "mark label must be a markup object"
-msgstr ""
+msgstr "l'etichetta del segno deve essere un oggetto di markup"
-#: mensural-ligature-engraver.cc:85
+#: mensural-ligature-engraver.cc:96
msgid "ligature with less than 2 heads -> skipping"
-msgstr ""
+msgstr "legatura con meno di due teste -> si ignora"
-#: mensural-ligature-engraver.cc:112
+#: mensural-ligature-engraver.cc:123
msgid "cannot determine pitch of ligature primitive -> skipping"
-msgstr ""
+msgstr "impossibile determinare l'altezza della legatura primitiva -> si ignora"
-#: mensural-ligature-engraver.cc:126
+#: mensural-ligature-engraver.cc:137
msgid "single note ligature - skipping"
-msgstr ""
+msgstr "legatura di una nota singola - si ignora"
-#: mensural-ligature-engraver.cc:138
+#: mensural-ligature-engraver.cc:149
msgid "prime interval within ligature -> skipping"
-msgstr ""
+msgstr "primo intervallo all'interno della legatura -> si ignora"
-#: mensural-ligature-engraver.cc:150
+#: mensural-ligature-engraver.cc:161
msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
-msgstr ""
+msgstr "legatura mensurale: nessuna durata per Mx, L, B. S -> si ignora"
-#: mensural-ligature-engraver.cc:198
+#: mensural-ligature-engraver.cc:209
msgid "semibrevis must be followed by another one -> skipping"
-msgstr ""
+msgstr "una semibreve deve essere seguita da un'altra semibreve -> si ignora"
-#: mensural-ligature-engraver.cc:209
+#: mensural-ligature-engraver.cc:220
msgid ""
"semibreves can only appear at the beginning of a ligature,\n"
"and there may be only zero or two of them"
msgstr ""
+"le semibrevi possono comparire solo all'inizio di una legatura,\n"
+"e ce ne possono essere due o nessuna"
-#: mensural-ligature-engraver.cc:236
+#: mensural-ligature-engraver.cc:247
msgid ""
"invalid ligatura ending:\n"
"when the last note is a descending brevis,\n"
"the penultimate note must be another one,\n"
"or the ligatura must be LB or SSB"
msgstr ""
+"fine della legatura non valido:\n"
+"se l'ultima nota è una breve discendente,\n"
+"lo deve essere anche la penultima nota,\n"
+"oppure la legatura deve essere LB o SSB"
-#: mensural-ligature-engraver.cc:356
+#: mensural-ligature-engraver.cc:367
msgid "unexpected case fall-through"
-msgstr ""
+msgstr "caso inatteso e non interpretabile"
-#: mensural-ligature.cc:141
+#: mensural-ligature.cc:152
msgid "Mensural_ligature: unexpected case fall-through"
-msgstr ""
+msgstr "Mensural_ligature: caso inatteso e non interpretabile"
-#: mensural-ligature.cc:192
+#: mensural-ligature.cc:203
msgid "Mensural_ligature: (join_right == 0)"
-msgstr ""
+msgstr "Mensural_ligature: (join_right == 0)"
-#: midi-item.cc:81
-#, fuzzy, c-format
+#: midi-item.cc:92
+#, c-format
msgid "no such MIDI instrument: `%s'"
-msgstr "% strumento:"
+msgstr "non esiste questo strumento MIDI: «%s»"
-#: midi-stream.cc:28
-#, fuzzy, c-format
+#: midi-stream.cc:39
+#, c-format
msgid "cannot open for write: %s: %s"
-msgstr "non posso aprire il file: `%s'"
+msgstr "impossibile aprire il file con permesso di scrittura: %s: %s"
-#: midi-stream.cc:44
-#, fuzzy, c-format
+#: midi-stream.cc:55
+#, c-format
msgid "cannot write to file: `%s'"
-msgstr "non posso aprire il file: `%s'"
+msgstr "impossibile scrivere su file: «%s»"
-#: minimal-page-breaking.cc:42
-#, fuzzy
-msgid "Computing page breaks..."
-msgstr "Calcolo delle posizioni della colonne..."
+#: minimal-page-breaking.cc:40 paper-score.cc:122
+msgid "Calculating line breaks..."
+msgstr "Calcolo delle interruzioni di linea..."
+
+#: minimal-page-breaking.cc:44
+msgid "Calculating page breaks..."
+msgstr "Calcolo delle interruzioni di pagina..."
-#: music-iterator.cc:171
+#: music-iterator.cc:182
msgid "Sending non-event to context"
-msgstr ""
+msgstr "Invio di un non-evento al contesto"
-#: music.cc:140
+#: music.cc:151
#, c-format
msgid "octave check failed; expected \"%s\", found: \"%s\""
+msgstr "controllo dell'ottava fallito: previsto \"%s\", trovato: \"%s\""
+
+#: music.cc:219
+msgid "(normalized pitch)"
+msgstr "(altezza normalizzata)"
+
+#: music.cc:223
+#, c-format
+msgid "Transposing %s by %s makes alteration larger than double"
+msgstr "La trasposizione di %s da %s ingrandisce le alterazioni più del doppio"
+
+#: new-dynamic-engraver.cc:142
+#, c-format
+msgid ""
+"unknown crescendo style: %s\n"
+"defaulting to hairpin."
msgstr ""
+"stile di crescendo sconosciuto: %s\n"
+"si usa la forcella predefinita."
-#: music.cc:203
-#, fuzzy, c-format
-msgid "transposition by %s makes alteration larger than double"
-msgstr "la trasposizine di %s rende le alterazioni più che doppie"
+#: new-dynamic-engraver.cc:200
+#, c-format
+msgid "unterminated %s"
+msgstr "%s non terminato"
-#: new-fingering-engraver.cc:96
+#: new-fingering-engraver.cc:106
msgid "cannot add text scripts to individual note heads"
-msgstr ""
+msgstr "impossibile aggiungere delle scritte testuali alle teste delle note individuali"
-#: new-fingering-engraver.cc:239
+#: new-fingering-engraver.cc:250
msgid "no placement found for fingerings"
-msgstr ""
+msgstr "nessuna posizione trovata per le diteggiature"
-#: new-fingering-engraver.cc:240
+#: new-fingering-engraver.cc:251
msgid "placing below"
-msgstr ""
+msgstr "si colloca in basso"
-#: note-collision.cc:463
-#, fuzzy
+#: note-collision.cc:497
msgid "ignoring too many clashing note columns"
-msgstr "Troppe collisioni tra colonne di note. Le ignoro."
+msgstr "troppe collisioni tra colonne di note, ignorate"
-#: note-column.cc:124
+#: note-column.cc:135
msgid "cannot have note heads and rests together on a stem"
-msgstr ""
+msgstr "impossibile avere teste e pause insieme su un gambo"
-#: note-head.cc:63
+#: note-head.cc:76
#, c-format
msgid "none of note heads `%s' or `%s' found"
-msgstr ""
+msgstr "non si è trovata alcuna delle teste delle note «%s» o «%s»"
-#: note-heads-engraver.cc:64
+#: note-heads-engraver.cc:76
msgid "NoteEvent without pitch"
-msgstr ""
+msgstr "NoteEvent senza altezza"
-#: open-type-font.cc:33
-#, fuzzy, c-format
+#: open-type-font.cc:44
+#, c-format
msgid "cannot allocate %lu bytes"
-msgstr "non posso maneggiare %s"
+msgstr "impossibile allocare %lu byte"
-#: open-type-font.cc:37
-#, fuzzy, c-format
+#: open-type-font.cc:48
+#, c-format
msgid "cannot load font table: %s"
-msgstr "non trovo il file: `%s'"
+msgstr "impossibile caricare la tabella dei tipi di carattere: %s"
-#: open-type-font.cc:42
-#, fuzzy, c-format
+#: open-type-font.cc:53
+#, c-format
msgid "Free type error: %s"
-msgstr "errore: "
+msgstr "Errore FreeType: %s"
-#: open-type-font.cc:100
+#: open-type-font.cc:111
#, c-format
msgid "unsupported font format: %s"
-msgstr ""
+msgstr "formato di tipo di carattere non supportato: %s"
-#: open-type-font.cc:102
-#, fuzzy, c-format
+#: open-type-font.cc:113
+#, c-format
msgid "error reading font file %s: %s"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "errore nella lettura del file del tipo di carattere %s: %s"
-#: open-type-font.cc:177
+#: open-type-font.cc:188
#, c-format
msgid "FT_Get_Glyph_Name () Freetype error: %s"
-msgstr ""
+msgstr "errore di Freetype in FT_Get_Glyph_Name (): %s"
-#: open-type-font.cc:302 pango-font.cc:167
+#: open-type-font.cc:250
+msgid "Invalid index for character"
+msgstr "Indice non valido per il carattere"
+
+#: open-type-font.cc:319 pango-font.cc:187
#, c-format
msgid "FT_Get_Glyph_Name () error: %s"
-msgstr ""
+msgstr "errore in FT_Get_Glyph_Name (): %s"
#. find out the ideal number of pages
-#: optimal-page-breaking.cc:56
+#: optimal-page-breaking.cc:60
msgid "Finding the ideal number of pages..."
-msgstr ""
+msgstr "Determinazione del numero ottimale di pagine..."
-#: optimal-page-breaking.cc:71
+#: optimal-page-breaking.cc:87
msgid "Fitting music on 1 page..."
-msgstr ""
+msgstr "Compressione della musica in una pagina..."
-#: optimal-page-breaking.cc:73
-#, fuzzy, c-format
+#: optimal-page-breaking.cc:89
+#, c-format
msgid "Fitting music on %d pages..."
-msgstr "non trovo e non posso creare `%s'"
+msgstr "Compressione della musica in %d pagine..."
-#: optimal-page-breaking.cc:75
+#: optimal-page-breaking.cc:91
#, c-format
msgid "Fitting music on %d or %d pages..."
-msgstr ""
+msgstr "Compressione della musica in %d o %d pagine..."
-#: optimal-page-breaking.cc:152 page-turn-page-breaking.cc:226
-#: paper-score.cc:146
-#, fuzzy
+#: optimal-page-breaking.cc:101 optimal-page-breaking.cc:155
+#, c-format
+msgid "trying %d systems"
+msgstr "tentando %d sistemi"
+
+#: optimal-page-breaking.cc:120 optimal-page-breaking.cc:183
+#, c-format
+msgid "best score for this sys-count: %f"
+msgstr "miglior punteggio per questo numero di sistemi: %f"
+
+#: optimal-page-breaking.cc:190 page-turn-page-breaking.cc:248
+#: paper-score.cc:163
msgid "Drawing systems..."
-msgstr "Genero le voci..."
+msgstr "Disegno dei sistemi..."
+
+#: output-def.cc:235
+msgid "margins do not fit with line-width, setting default values"
+msgstr "i margini non corrispondono con la larghezza del rigo, si impostano i valori predefiniti"
+
+#: output-def.cc:242
+msgid "systems run off the page due to improper paper settings, setting default values"
+msgstr "i sistemi escono fuori dalla pagina a causa di errate impostazioni del foglio, si impostano i valori predefiniti"
+
+#: page-breaking.cc:194
+msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
+msgstr "si ignorano min-systems-per-page e max-systems-per-page perché è stato impostato systems-per-page"
+
+#: page-breaking.cc:199
+msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
+msgstr "min-systems-per-page è maggiore di max-systems-per-page, si ignorano entrambi i valori"
+
+#: page-layout-problem.cc:315
+#, c-format
+msgid "couldn't fit music on page: overflow is %f"
+msgstr "impossibile far entrare la musica nella pagina: l'eccesso è %f"
+
+#: page-layout-problem.cc:317
+msgid "compressing music to fit"
+msgstr "si comprime la musica per farla entrare"
-#: page-turn-page-breaking.cc:146
+#: page-layout-problem.cc:733
+msgid "staff-affinities should only decrease"
+msgstr "staff-affinities deve solo diminuire"
+
+#: page-turn-page-breaking.cc:168
#, c-format
msgid "page-turn-page-breaking: breaking from %d to %d"
-msgstr ""
+msgstr "page-turn-page-breaking: interruzione da %d a %d"
-#: page-turn-page-breaking.cc:195
+#: page-turn-page-breaking.cc:217
msgid "cannot fit the first page turn onto a single page. Consider setting first-page-number to an even number."
-msgstr ""
+msgstr "impossibile far entrare il primo cambio di pagina in una pagina singola. Si consideri la possibilità di impostare first-page-number su un numero pari."
-#: page-turn-page-breaking.cc:208
+#: page-turn-page-breaking.cc:230
#, c-format
msgid "Calculating page and line breaks (%d possible page breaks)..."
-msgstr ""
+msgstr "Calcolo delle interruzioni di pagina e di linea (%d possibili interruzioni di pagina)..."
-#: page-turn-page-breaking.cc:275
+#: page-turn-page-breaking.cc:297
#, c-format
msgid "break starting at page %d"
-msgstr ""
+msgstr "l'interruzione comincia alla pagina %d"
-#: page-turn-page-breaking.cc:276
+#: page-turn-page-breaking.cc:298
#, c-format
msgid "\tdemerits: %f"
-msgstr ""
+msgstr "\tdemeriti: %f"
-#: page-turn-page-breaking.cc:277
+#: page-turn-page-breaking.cc:299
#, c-format
msgid "\tsystem count: %d"
-msgstr ""
+msgstr "\tnumero dei sistemi: %d"
-#: page-turn-page-breaking.cc:278
+#: page-turn-page-breaking.cc:300
#, c-format
msgid "\tpage count: %d"
-msgstr ""
+msgstr "\tnumero delle pagine: %d"
-#: page-turn-page-breaking.cc:279
+#: page-turn-page-breaking.cc:301
#, c-format
msgid "\tprevious break: %d"
-msgstr ""
+msgstr "\tinterruzione precedente: %d"
-#: pango-font.cc:184
+#: pango-font.cc:204
#, c-format
msgid ""
"Glyph has no name, but font supports glyph naming.\n"
"Skipping glyph U+%0X, file %s"
msgstr ""
+"Il glifo non ha un nome, ma il tipo di carattere permette di dare un nome al glifo.\n"
+"Si salta il glifo U+%0X, file %s"
-#: pango-font.cc:229
-#, fuzzy, c-format
+#: pango-font.cc:241
+#, c-format
msgid "no PostScript font name for font `%s'"
-msgstr "non posso aprire il file: `%s'"
+msgstr "nessun nome di tipo di carattere PostScript per «%s»"
-#: pango-font.cc:277
+#: pango-font.cc:290
msgid "FreeType face has no PostScript font name"
-msgstr ""
+msgstr "Il tipo FreeType non ha un nome per il tipo di carattere PostScript"
+
+#: paper-book.cc:214
+#, c-format
+msgid "program option -dprint-pages not supported by backend `%s'"
+msgstr "l'opzione -dprint-pages del programma non è supportata dal backend «%s»"
+
+#: paper-book.cc:233
+#, c-format
+msgid "program option -dpreview not supported by backend `%s'"
+msgstr "l'opzione -dpreview del programma non è supportata dal backend «%s»"
-#: paper-column-engraver.cc:221
+#: paper-column-engraver.cc:233
msgid "forced break was overridden by some other event, should you be using bar checks?"
-msgstr ""
+msgstr "l'interruzione forzata è stata sovrascritta da qualche altro evento, considerare l'uso dei controlli di battuta"
-#: paper-outputter-scheme.cc:30
-#, fuzzy, c-format
+#: paper-outputter-scheme.cc:41
+#, c-format
msgid "Layout output to `%s'..."
-msgstr "L'output MIDI è inviato a %s..."
-
-#: paper-score.cc:105
-#, fuzzy
-msgid "Calculating line breaks..."
-msgstr "Calcolo delle posizioni della colonne..."
+msgstr "Output della formattazione inviato a «%s»..."
-#: paper-score.cc:118
+#: paper-score.cc:135
#, c-format
msgid "Element count %d (spanners %d) "
-msgstr ""
+msgstr "Conto degli elementi %d (spanner %d)."
-#: paper-score.cc:122
-#, fuzzy
+#: paper-score.cc:139
msgid "Preprocessing graphical objects..."
-msgstr "Pre-elaborazione..."
+msgstr "Pre-elaborazione degli oggetti grafici..."
-#: parse-scm.cc:87
+#: parse-scm.cc:101
msgid "GUILE signaled an error for the expression beginning here"
-msgstr ""
+msgstr "GUILE ha segnalato un errore per l'espressione che inizia qui"
-#: percent-repeat-engraver.cc:200
-#, fuzzy
+#: partial-iterator.cc:45
+msgid "trying to use \\partial after the start of a piece"
+msgstr "tentativo di usare \\partial all'inizio di un brano"
+
+#: percent-repeat-engraver.cc:213
msgid "unterminated percent repeat"
-msgstr "beam non terminato"
+msgstr "ripetizione percentuale non terminata"
-#: performance.cc:43
-#, fuzzy
+#: performance.cc:54
msgid "Track..."
-msgstr "traccia "
+msgstr "Traccia..."
-#: performance.cc:72
+#: performance.cc:83
msgid "MIDI channel wrapped around"
-msgstr ""
+msgstr "Numerazione canale MIDI ricominciata"
-#: performance.cc:73
+#: performance.cc:84
msgid "remapping modulo 16"
-msgstr ""
+msgstr "riassegnata con modulo 16"
-#: performance.cc:101
+#: performance.cc:111
#, c-format
msgid "MIDI output to `%s'..."
-msgstr "L'output MIDI è inviato a %s..."
+msgstr "L'output MIDI è inviato a «%s»..."
-#: phrasing-slur-engraver.cc:139
-#, fuzzy
+#: phrasing-slur-engraver.cc:157
msgid "unterminated phrasing slur"
-msgstr "slur non terminato"
+msgstr "legatura di frase non terminata"
-#: piano-pedal-engraver.cc:286
+#: piano-pedal-engraver.cc:298
#, c-format
msgid "expect 3 strings for piano pedals, found: %ld"
-msgstr ""
+msgstr "previste tre corde per i pedali del pianoforte, trovate: %ld"
-#: piano-pedal-engraver.cc:301 piano-pedal-engraver.cc:312
-#: piano-pedal-performer.cc:93
-#, fuzzy, c-format
+#: piano-pedal-engraver.cc:313 piano-pedal-engraver.cc:324
+#: piano-pedal-performer.cc:104
+#, c-format
msgid "cannot find start of piano pedal: `%s'"
-msgstr "non risco a trovare una ruling note a %s"
+msgstr "impossibile trovare l'inizio del pedale del pianoforte: «%s»"
-#: piano-pedal-engraver.cc:347
-#, fuzzy, c-format
+#: piano-pedal-engraver.cc:359
+#, c-format
msgid "cannot find start of piano pedal bracket: `%s'"
-msgstr "non risco a trovare una ruling note a %s"
+msgstr "impossibile trovare la parentesi di apertura del pedale del pianoforte: «%s»"
-#: program-option-scheme.cc:215
-#, fuzzy, c-format
+#: program-option-scheme.cc:237
+#, c-format
msgid "no such internal option: %s"
-msgstr "% strumento:"
+msgstr "opzione interna sconosciuta: %s"
-#: property-iterator.cc:74
+#: property-iterator.cc:85
#, c-format
msgid "not a grob name, `%s'"
-msgstr ""
+msgstr "non è il nome di un grob, «%s»"
-#: relative-octave-check.cc:38
+#: relative-octave-check.cc:49
msgid "Failed octave check, got: "
-msgstr ""
+msgstr "Il controllo dell'ottava è fallito, si è ottenuto:"
-#: relocate.cc:44
-#, fuzzy, c-format
+#: relocate.cc:54
+#, c-format
msgid "Setting %s to %s"
-msgstr "non trovo e non posso creare `%s'"
+msgstr "Si imposta %s su %s"
-#: relocate.cc:64
-#, fuzzy, c-format
+#: relocate.cc:74
+#, c-format
msgid "no such file: %s for %s"
-msgstr "% strumento:"
+msgstr "file inesistente: %s per %s"
-#: relocate.cc:74 relocate.cc:92
-#, fuzzy, c-format
+#: relocate.cc:84 relocate.cc:102
+#, c-format
msgid "no such directory: %s for %s"
-msgstr "% strumento:"
+msgstr "directory inesistente: %s per %s"
-#: relocate.cc:84
+#: relocate.cc:94
#, c-format
msgid "%s=%s (prepend)\n"
-msgstr ""
+msgstr "%s=%s (prefisso)\n"
-#: relocate.cc:114
+#: relocate.cc:124
#, c-format
msgid "not relocating, no %s/ or current/ found under %s"
-msgstr ""
+msgstr "non si riloca, non si è incontrato %s/ o current/ in %s"
-#: relocate.cc:125
+#: relocate.cc:135
#, c-format
msgid "Relocation: compile datadir=%s, new datadir=%s"
-msgstr ""
+msgstr "Rilocazione: compilare datadir=%s, nuova datadir=%s"
-#: relocate.cc:138
+#: relocate.cc:148
#, c-format
msgid "Relocation: framework_prefix=%s"
-msgstr ""
+msgstr "Rilocazione: framework_prefix=%s"
-#: relocate.cc:179
+#: relocate.cc:189
#, c-format
msgid "Relocation: is absolute: argv0=%s"
-msgstr ""
+msgstr "Rilocazione: è assoluta: argv0=%s"
-#: relocate.cc:186
+#: relocate.cc:196
#, c-format
msgid "Relocation: from cwd: argv0=%s"
-msgstr ""
+msgstr "Rilocazione: da cwd: argv0=%s"
-#: relocate.cc:195
+#: relocate.cc:205
#, c-format
msgid ""
"Relocation: from PATH=%s\n"
"argv0=%s"
msgstr ""
+"Rilocazione: da PATH=%s\n"
+"argv0=%s"
-#: relocate.cc:229
+#: relocate.cc:239
msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
-msgstr ""
+msgstr "LILYPONDPREFIX è obsoleto, usare LILYPOND_DATADIR"
-#: relocate.cc:356
-#, fuzzy, c-format
+#: relocate.cc:366
+#, c-format
msgid "Relocation file: %s"
-msgstr "non posso aprire il file: `%s'"
+msgstr "File di rilocazione: %s"
+
+#: relocate.cc:372 source-file.cc:65
+#, c-format
+msgid "cannot open file: `%s'"
+msgstr "impossibile aprire il file: «%s»"
-#: relocate.cc:392
+#: relocate.cc:402
#, c-format
msgid "Unknown relocation command %s"
-msgstr ""
+msgstr "Comando di rilocazione sconosciuto %s"
+
+#: rest-collision-engraver.cc:70
+msgid "rhythmic head is not part of a rhythmic column"
+msgstr "la testa ritmica non fa parte di una colonna ritmica"
-#: rest-collision.cc:145
+#: rest-collision.cc:146
msgid "cannot resolve rest collision: rest direction not set"
-msgstr ""
+msgstr "impossibile risolvere la collisione di pause: direzione delle pause non impostata"
-#: rest-collision.cc:159 rest-collision.cc:204
-#, fuzzy
+#: rest-collision.cc:160 rest-collision.cc:205
msgid "too many colliding rests"
-msgstr "Troppi crescendi"
+msgstr "troppe collisioni tra pause"
-#: rest.cc:132
+#: rest.cc:159
#, c-format
msgid "rest `%s' not found"
-msgstr ""
+msgstr "pausa «%s» non trovata"
-#: score-engraver.cc:67
-#, fuzzy, c-format
+#: score-engraver.cc:78
+#, c-format
msgid "cannot find `%s'"
-msgstr "non trovo `%s'"
+msgstr "impossibile trovare «%s»"
-#: score-engraver.cc:69
+#: score-engraver.cc:80
msgid "Music font has not been installed properly."
-msgstr ""
+msgstr "Il tipo di carattere musicale non è stato installato correttamente."
-#: score-engraver.cc:71
-#, fuzzy, c-format
+#: score-engraver.cc:82
+#, c-format
msgid "Search path `%s'"
-msgstr "(Il path di caricamento è `%s'"
+msgstr "Percorso di ricerca «%s»"
-#: score-engraver.cc:73
+#: score-engraver.cc:84
msgid "Aborting"
-msgstr ""
+msgstr "Si sospende l'esecuzione"
-#: score.cc:167
-#, fuzzy
+#: score.cc:178
msgid "already have music in score"
-msgstr "ho bisogno di musica nello spartito"
+msgstr "musica già presente nello spartito"
-#: score.cc:168
+#: score.cc:179
msgid "this is the previous music"
-msgstr ""
+msgstr "questa è la musica precedente"
-#: score.cc:173
-#, fuzzy
+#: score.cc:184
msgid "errors found, ignoring music expression"
-msgstr "ho trovato un errore, /*non sto elaborando lo spartito*/"
+msgstr "trovati degli errori, si ignora l'espressione musicale"
#. FIXME:
-#: script-engraver.cc:102
-msgid "do not know how to interpret articulation: "
-msgstr ""
+#: script-engraver.cc:113
+msgid "do not know how to interpret articulation:"
+msgstr "non so come interpretare l'articolazione:"
-#: script-engraver.cc:103
-#, fuzzy
-msgid "scheme encoding: "
-msgstr "Opzioni: "
+#: script-engraver.cc:114
+msgid " scheme encoding: "
+msgstr " codifica di Scheme: "
-#: slur-engraver.cc:82
+#: slur-engraver.cc:93
#, c-format
msgid "direction of %s invalid: %d"
-msgstr ""
+msgstr "direzione di %s non valida: %d"
-#: slur-engraver.cc:151
+#: slur-engraver.cc:162
msgid "unterminated slur"
-msgstr "slur non terminato"
+msgstr "legatura di portamento non terminata"
-#: slur-engraver.cc:163
-#, fuzzy
+#: slur-engraver.cc:174
msgid "cannot end slur"
-msgstr "non posso maneggiare %s"
+msgstr "impossibile terminare la legatura di portamento"
-#: slur.cc:353
+#: slur.cc:369
#, c-format
msgid "Ignoring grob for slur: %s. avoid-slur not set?"
-msgstr ""
+msgstr "Si ignora il grob per la legatura di portamento: %s. Non si è impostato avoid-slur?"
-#: source-file.cc:74
+#: source-file.cc:85
#, c-format
msgid "expected to read %d characters, got %d"
-msgstr ""
+msgstr "si prevedeva di leggere %d caratteri, se ne sono ottenuti %d"
-#: spaceable-grob.cc:83
+#: spaceable-grob.cc:94
#, c-format
msgid "No spring between column %d and next one"
-msgstr ""
-
-#: staff-symbol-engraver.cc:62
-msgid "staff-span event has no direction"
-msgstr ""
+msgstr "Nessuna separazione tra la colonna %d e la successiva"
-#: stem-engraver.cc:92
+#: stem-engraver.cc:103
msgid "tremolo duration is too long"
-msgstr ""
+msgstr "la durata del tremolo è troppo lunga"
#. FIXME:
-#: stem-engraver.cc:129
+#: stem-engraver.cc:140
#, c-format
msgid "adding note head to incompatible stem (type = %d)"
-msgstr ""
+msgstr "si aggiunge la testa della nota a un gambo incompatibile (tipo = %d)"
-#: stem-engraver.cc:131
+#: stem-engraver.cc:142
msgid "maybe input should specify polyphonic voices"
-msgstr ""
+msgstr "forse l'input dovrebbe specificare le voci polifoniche"
-#: stem.cc:105
-#, fuzzy
+#: stem.cc:116
msgid "weird stem size, check for narrow beams"
-msgstr "dimensione del gambo poco ortodossa; check for narrow beams"
+msgstr "strana dimensione del gambo, controllare di non avere travature strette"
-#: stem.cc:627
+#: stem.cc:642
#, c-format
msgid "flag `%s' not found"
-msgstr ""
+msgstr "non si trova la coda uncinata «%s»"
-#: stem.cc:638
+#: stem.cc:658
#, c-format
msgid "flag stroke `%s' not found"
-msgstr ""
+msgstr "non si trova il tratto «%s» della coda uncinata"
-#: system.cc:179
+#: system.cc:197
#, c-format
-msgid "Element count %d."
-msgstr ""
+msgid "Element count %d"
+msgstr "Numero degli elementi %d"
-#: system.cc:271
+#: system.cc:289
#, c-format
msgid "Grob count %d"
-msgstr ""
+msgstr "Numero degli oggetti grafici %d"
-#: text-spanner-engraver.cc:60
-#, fuzzy
+#: text-spanner-engraver.cc:73
msgid "cannot find start of text spanner"
-msgstr "non trovo le estremità di %s"
+msgstr "impossibile trovare l'inizio di uno spanner testuale"
-#: text-spanner-engraver.cc:72
-#, fuzzy
+#: text-spanner-engraver.cc:86
msgid "already have a text spanner"
-msgstr "crescendo non terminato"
+msgstr "spanner testuale già presente"
-#: text-spanner-engraver.cc:118
-#, fuzzy
+#: text-spanner-engraver.cc:132
msgid "unterminated text spanner"
-msgstr "extender non terminato"
+msgstr "spanner testuale non terminato"
-#: tie-engraver.cc:262
+#: tie-engraver.cc:116
+msgid "unterminated tie"
+msgstr "legatura di valore non terminata"
+
+#: tie-engraver.cc:312
msgid "lonely tie"
-msgstr ""
+msgstr "legatura di valore solitaria"
#.
#. Todo: should make typecheck?
#.
#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
#.
-#: time-signature-engraver.cc:64
+#: time-signature-engraver.cc:75
#, c-format
msgid "strange time signature found: %d/%d"
-msgstr ""
+msgstr "si è incontrato uno strano segno di tempo: %d/%d"
#. If there is no such symbol, we default to the numbered style.
#. (Here really with a warning!)
-#: time-signature.cc:83
+#: time-signature.cc:94
#, c-format
msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr ""
+msgstr "non si è trovato il simbolo di tempo «%s»: si ritorna allo stile numerato"
-#: translator-ctors.cc:53
-#, fuzzy, c-format
+#: translator-ctors.cc:65
+#, c-format
msgid "unknown translator: `%s'"
-msgstr "traduttore sconosciuto `%s'"
+msgstr "traduttore sconosciuto: «%s»"
-#: translator-group-ctors.cc:29
+#: translator-group-ctors.cc:40
#, c-format
msgid "fatal error. Couldn't find type: %s"
-msgstr ""
+msgstr "errore fatale. Impossibile trovare il tipo: %s"
-#: translator-group.cc:146
-#, fuzzy, c-format
+#: translator-group.cc:188
+#, c-format
msgid "cannot find: `%s'"
-msgstr "non trovo `%s'"
+msgstr "impossibile trovare: «%s»"
-#: translator.cc:347
+#: translator.cc:359
#, c-format
msgid "Two simultaneous %s events, junking this one"
-msgstr ""
+msgstr "Due eventi %s simultanei, si butta via questo"
-#: translator.cc:348
+#: translator.cc:360
#, c-format
msgid "Previous %s event here"
-msgstr ""
+msgstr "L'evento %s precedente sta qui"
-#: trill-spanner-engraver.cc:84
-#, fuzzy
-msgid "cannot find start of trill spanner"
-msgstr "non trovo le estremità di %s"
+#: ttf.cc:481 ttf.cc:530
+#, c-format
+msgid "font index %d too large for font `%s', using index 0"
+msgstr "l'indice del tipo di carattere %d è troppo grande per il tipo di carattere «%s», si usa l'indice 0"
-#: trill-spanner-engraver.cc:96
-#, fuzzy
-msgid "already have a trill spanner"
-msgstr "crescendo non terminato"
+#: ttf.cc:513 ttf.cc:565
+msgid "font index must be non-negative, using index 0"
+msgstr "l'indice del tipo di carattere deve essere non negativo, si usa l'indice 0"
-#: tuplet-engraver.cc:96
+#: tuplet-engraver.cc:107
msgid "No tuplet to end"
-msgstr ""
+msgstr "Nessun gruppo irregolare da terminare"
-#: vaticana-ligature-engraver.cc:389
+#: vaticana-ligature-engraver.cc:400
#, c-format
-msgid "ignored prefix (es) `%s' of this head according to restrictions of the selected ligature style"
-msgstr ""
+msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
+msgstr "prefisso/i «%s» di questa testa ignorato/i in base alle restrizioni dello stile di legatura scelto"
-#: vaticana-ligature-engraver.cc:718
+#: vaticana-ligature-engraver.cc:736
#, c-format
msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
-msgstr ""
+msgstr "Vaticana_ligature_engraver: si imposta `spacing-increment = %f': ptr =%ul"
-#: vaticana-ligature.cc:84
+#: vaticana-ligature.cc:95
msgid "flexa-height undefined; assuming 0"
-msgstr ""
+msgstr "flexa-height non definito; si assume 0"
-#: vaticana-ligature.cc:89
+#: vaticana-ligature.cc:100
msgid "ascending vaticana style flexa"
-msgstr ""
+msgstr "flexa ascendente in stile vaticana"
-#: vaticana-ligature.cc:177
+#: vaticana-ligature.cc:188
msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
-msgstr ""
+msgstr "Vaticana_ligature: unione nulla (delta_pitch == 0)"
#. fixme: be more verbose.
-#: volta-engraver.cc:100
-#, fuzzy
+#: volta-engraver.cc:111
msgid "cannot end volta spanner"
-msgstr "non trovo le estremità di %s"
+msgstr "impossibile terminare lo spanner della volta"
-#: volta-engraver.cc:110
+#: volta-engraver.cc:121
msgid "already have a volta spanner, ending that one prematurely"
-msgstr ""
+msgstr "spanner della volta già presente, si termina quello prematuramente"
-#: volta-engraver.cc:114
-#, fuzzy
+#: volta-engraver.cc:125
msgid "also already have an ended spanner"
-msgstr "crescendo non terminato"
+msgstr "è già presente uno spanner terminato"
-#: volta-engraver.cc:115
+#: volta-engraver.cc:126
msgid "giving up"
-msgstr ""
+msgstr "rinuncia"
-#: parser.yy:728
+#: parser.yy:816
msgid "\\paper cannot be used in \\score, use \\layout instead"
-msgstr ""
+msgstr "non si può usare \\paper dentro \\score, usare \\layout al suo posto"
-#: parser.yy:752
+#: parser.yy:840
msgid "need \\paper for paper block"
-msgstr ""
+msgstr "è necessario \\paper per il blocco \"paper\""
-#: parser.yy:1211
+#: parser.yy:1365
+msgid "only \\consists takes non-string argument."
+msgstr "solo \\consists prende un argomento diverso da una stringa"
+
+#: parser.yy:1378
msgid "Grob name should be alphanumeric"
-msgstr ""
+msgstr "Il nome del grob deve essere alfanumerico"
-#: parser.yy:1509
+#: parser.yy:1687
msgid "second argument must be pitch list"
-msgstr ""
+msgstr "il secondo argomento deve essere una lista di altezze"
-#: parser.yy:1536 parser.yy:1541 parser.yy:2006
-#, fuzzy
+#: parser.yy:1714 parser.yy:1719 parser.yy:2192
msgid "have to be in Lyric mode for lyrics"
-msgstr "bisogna essere in Lyric mode per i testi"
+msgstr "bisogna essere in modo \"Lyric\" per i testi"
-#: parser.yy:1638
+#: parser.yy:1816
msgid "expecting string as script definition"
-msgstr ""
+msgstr "ci si aspetta una stringa come definizione dello script"
-#: parser.yy:1793 parser.yy:1843
+#: parser.yy:1971 parser.yy:2022
#, c-format
msgid "not a duration: %d"
msgstr "non è una durata: %d"
-#: parser.yy:1960
-#, fuzzy
+#: parser.yy:2146
msgid "have to be in Note mode for notes"
-msgstr "bisogna essere in Note mode per le note"
+msgstr "bisogna essere in modo \"Note\" per le note"
-#: parser.yy:2021
-#, fuzzy
+#: parser.yy:2207
msgid "have to be in Chord mode for chords"
-msgstr "bisogna essere in Chord mode per gli accordi"
+msgstr "bisogna essere in modo \"Chord\" per gli accordi"
-#: lexer.ll:179
+#: lexer.ll:190
msgid "stray UTF-8 BOM encountered"
-msgstr ""
+msgstr "si è incontrato un segno BOM UTF-8 isolato"
-#: lexer.ll:183
+#: lexer.ll:194
msgid "Skipping UTF-8 BOM"
-msgstr ""
+msgstr "Si ignora il BOM UTF-8"
-#: lexer.ll:238
-#, fuzzy, c-format
+#: lexer.ll:249
+#, c-format
msgid "Renaming input to: `%s'"
-msgstr "Genero le voci..."
+msgstr "Si rinomina l'input in: «%s»"
-#: lexer.ll:255
+#: lexer.ll:266
msgid "quoted string expected after \\version"
-msgstr ""
+msgstr "\\version deve essere seguito da una stringa compresa tra virgolette"
-#: lexer.ll:259
+#: lexer.ll:270
msgid "quoted string expected after \\sourcefilename"
-msgstr ""
+msgstr "\\sourcefilename deve essere seguito da una stringa compresa tra virgolette"
-#: lexer.ll:263
+#: lexer.ll:274
msgid "integer expected after \\sourcefileline"
-msgstr ""
+msgstr "\\sourcefileline deve essere seguito da un intero"
-#: lexer.ll:276
+#: lexer.ll:287
msgid "EOF found inside a comment"
-msgstr "ho trovato un EOF in un commento"
+msgstr "fine del file (EOF) trovata in un commento"
-#: lexer.ll:291
+#: lexer.ll:302
msgid "\\maininput not allowed outside init files"
-msgstr ""
+msgstr "\\maininput non permesso fuori dai file di inizializzazione"
-#: lexer.ll:315
-#, fuzzy, c-format
+#: lexer.ll:326
+#, c-format
msgid "wrong or undefined identifier: `%s'"
-msgstr "indentificatore non definito: `%s'"
+msgstr "indentificatore errato o non definito: «%s»"
#. backup rule
-#: lexer.ll:324
+#: lexer.ll:335
msgid "end quote missing"
-msgstr ""
+msgstr "mancano le virgolette di chiusura"
-#: lexer.ll:469
+#: lexer.ll:485
msgid "Brace found at end of lyric. Did you forget a space?"
-msgstr ""
+msgstr "Trovata una parentesi alla fine del testo. È stato dimenticato uno spazio?"
-#: lexer.ll:582
+#: lexer.ll:595
msgid "Brace found at end of markup. Did you forget a space?"
-msgstr ""
+msgstr "Trovata una parentesi alla fine della marcatura. È stato dimenticato uno spazio?"
-#: lexer.ll:686
-#, fuzzy, c-format
+#: lexer.ll:699
+#, c-format
msgid "invalid character: `%c'"
-msgstr "carattere illegale: `%c'"
+msgstr "carattere non valido: «%c»"
-#: lexer.ll:801 lexer.ll:802
+#: lexer.ll:814 lexer.ll:815
#, c-format
msgid "unknown escaped string: `\\%s'"
-msgstr "stringa di escape sconosciuta: `\\%s'"
+msgstr "stringa di escape sconosciuta: «\\%s»"
-#: lexer.ll:907 lexer.ll:908
+#: lexer.ll:924 lexer.ll:925
#, c-format
msgid "file too old: %s (oldest supported: %s)"
-msgstr ""
+msgstr "file troppo vecchio: %s (il più vecchio che si può gestire è: %s)"
-#: lexer.ll:908 lexer.ll:909
+#: lexer.ll:925 lexer.ll:926
msgid "consider updating the input with the convert-ly script"
-msgstr ""
+msgstr "si consideri di aggiornare l'input con lo script convert-ly"
-#: lexer.ll:914 lexer.ll:915
+#: lexer.ll:931 lexer.ll:932
#, c-format
msgid "program too old: %s (file requires: %s)"
-msgstr ""
+msgstr "programma troppo vecchio: %s (il file richiede: %s)"
-#: backend-library.scm:19 lily.scm:767 ps-to-png.scm:58
-#, fuzzy, scheme-format
+#: backend-library.scm:35 ps-to-png.scm:66
+#, scheme-format
msgid "Invoking `~a'..."
-msgstr "Genero le voci..."
+msgstr "Invocazione di «~a»..."
-#: backend-library.scm:28
+#: backend-library.scm:45
#, scheme-format
msgid "`~a' failed (~a)"
-msgstr ""
+msgstr "«~a» fallito (~a)"
-#: backend-library.scm:117 framework-tex.scm:344 framework-tex.scm:369
-#, fuzzy, scheme-format
+#: backend-library.scm:130
+#, scheme-format
msgid "Converting to `~a'..."
-msgstr "Genero le voci..."
+msgstr "Conversione a «~a»..."
-#: backend-library.scm:130
-#, fuzzy, scheme-format
+#. Do not try to guess the name of the png file,
+#. GS produces PNG files like BASE-page%d.png.
+#: backend-library.scm:140
+#, scheme-format
msgid "Converting to ~a..."
-msgstr "Genero le voci..."
+msgstr "Conversione a ~a..."
-#: backend-library.scm:168
-#, fuzzy, scheme-format
+#: backend-library.scm:178
+#, scheme-format
msgid "Writing header field `~a' to `~a'..."
-msgstr "scrivo il file delle dipendenze: `%s'..."
+msgstr "Scrittura del campo di intestazione «~a» in «~a»..."
+
+#: backend-library.scm:228
+#, scheme-format
+msgid "missing stencil expression `~S'"
+msgstr "manca l'espressione di stencil «~S»"
+
+#: chord-entry.scm:50
+#, scheme-format
+msgid "Spurious garbage following chord: ~A"
+msgstr "Informazione incomprensibile dopo l'accordo: ~A"
-#: define-context-properties.scm:20 define-grob-properties.scm:10
-#: define-music-properties.scm:10
+#: define-context-properties.scm:31 define-grob-properties.scm:21
+#: define-music-properties.scm:21
#, scheme-format
msgid "symbol ~S redefined"
-msgstr ""
+msgstr "simbolo ~S ridefinito"
-#: define-event-classes.scm:119
+#: define-event-classes.scm:78
+msgid "All classes must be the last in their matrilineal line."
+msgstr "Tutte le classi devono essere le ultime della propria linea di discendenza."
+
+#: define-event-classes.scm:82
+msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
+msgstr "Tutte le classi devono avere un'ascendenza ben definita nella gerarchia di classe esistente."
+
+#: define-event-classes.scm:148
#, scheme-format
msgid "event class ~A seems to be unused"
-msgstr ""
+msgstr "la classe di evento ~A sembra essere non utilizzata"
#. should be programming-error
-#: define-event-classes.scm:125
+#: define-event-classes.scm:154
#, scheme-format
msgid "translator listens to nonexisting event class ~A"
-msgstr ""
+msgstr "il traduttore è in ascolto della classe di evento ~A inesistente"
-#: define-markup-commands.scm:296
+#: define-markup-commands.scm:803
msgid "no systems found in \\score markup, does it have a \\layout block?"
-msgstr ""
+msgstr "non si è trovato alcun sistema nella marcatura \\score, contiene un blocco \\layout?"
+
+#: define-markup-commands.scm:2571
+#, scheme-format
+msgid "Cannot find glyph ~a"
+msgstr "Impossibile trovare il glifo ~a"
+
+#: define-markup-commands.scm:2831
+#, scheme-format
+msgid "no brace found for point size ~S "
+msgstr "non c'è una graffa che abbia una dimensione di ~S punti"
+
+#: define-markup-commands.scm:2832
+#, scheme-format
+msgid "defaulting to ~S pt"
+msgstr "si applica la dimensione predefinita ~S pt"
-#: define-markup-commands.scm:1310
-#, fuzzy, scheme-format
+#: define-markup-commands.scm:2985
+#, scheme-format
msgid "not a valid duration string: ~a"
-msgstr "non è una durata: %d"
+msgstr "non è una durata valida per la stringa: ~a"
-#: define-music-types.scm:670
-#, fuzzy, scheme-format
+#: define-music-types.scm:725
+#, scheme-format
msgid "symbol expected: ~S"
-msgstr "aspettavo %s"
+msgstr "simbolo atteso: ~S"
-#: define-music-types.scm:673
-#, fuzzy, scheme-format
+#: define-music-types.scm:728
+#, scheme-format
msgid "cannot find music object: ~S"
-msgstr "non trovo `%s'"
+msgstr "impossibile trovare l'oggetto musicale: ~S"
-#: define-music-types.scm:692
-#, fuzzy, scheme-format
+#: define-music-types.scm:747
+#, scheme-format
msgid "unknown repeat type `~S'"
-msgstr "tipo di chiave sconosciuto"
+msgstr "tipo di ripetizione sconosciuto «~S»"
-#: define-music-types.scm:693
-msgid "See music-types.scm for supported repeats"
-msgstr ""
+#: define-music-types.scm:748
+msgid "See define-music-types.scm for supported repeats"
+msgstr "Si veda define-music-types.scm per le ripetizioni supportate"
-#: document-backend.scm:91
+#: document-backend.scm:132
#, scheme-format
msgid "pair expected in doc ~s"
-msgstr ""
+msgstr "si aspettava una coppia nel documento ~s"
-#: document-backend.scm:135
-#, fuzzy, scheme-format
+#: document-backend.scm:189
+#, scheme-format
msgid "cannot find interface for property: ~S"
-msgstr "non riesco a trovare il carattere `%s'"
+msgstr "impossibile trovare un'interfaccia per le proprietà: ~S"
-#: document-backend.scm:145
-#, fuzzy, scheme-format
+#: document-backend.scm:199
+#, scheme-format
msgid "unknown Grob interface: ~S"
-msgstr "tipo di chiave sconosciuto"
+msgstr "interfaccia del Grob sconosciuta: ~S"
-#: documentation-lib.scm:45
-#, fuzzy, scheme-format
+#: documentation-lib.scm:59
+#, scheme-format
msgid "Processing ~S..."
-msgstr "Elaboro..."
+msgstr "Elaborazione di ~S..."
-#: documentation-lib.scm:154
-#, fuzzy, scheme-format
+#: documentation-lib.scm:176
+#, scheme-format
msgid "Writing ~S..."
-msgstr "Genero le voci..."
+msgstr "Scrittura di ~S..."
-#: documentation-lib.scm:176
-#, fuzzy, scheme-format
+#: documentation-lib.scm:198
+#, scheme-format
msgid "cannot find description for property ~S (~S)"
-msgstr "non riesco a trovare il carattere `%s'"
+msgstr "impossibile trovare la descrizione per la proprietà ~S (~S)"
+
+#: flag-styles.scm:142
+#, scheme-format
+msgid "flag stroke `~a' or `~a' not found"
+msgstr "tipo di coda uncinata sconosciuto: «~a» o «~a»"
-#: framework-eps.scm:90
-#, fuzzy, scheme-format
+#: framework-eps.scm:108
+#, scheme-format
msgid "Writing ~a..."
-msgstr "Genero le voci..."
+msgstr "Scrittura di ~a..."
-#: framework-ps.scm:282
+#: framework-ps.scm:250
#, scheme-format
msgid "cannot embed ~S=~S"
-msgstr ""
+msgstr "impossibile inserire ~S=~S"
-#: framework-ps.scm:335
+#: framework-ps.scm:291
#, scheme-format
msgid "cannot extract file matching ~a from ~a"
-msgstr ""
+msgstr "impossibile estrarre il file corrispondente a ~a a partire da ~a"
-#: framework-ps.scm:352
+#: framework-ps.scm:309
#, scheme-format
msgid "do not know how to embed ~S=~S"
-msgstr ""
+msgstr "impossibile realizzare l'integrazione ~S=~S"
-#: framework-ps.scm:383
+#: framework-ps.scm:334
#, scheme-format
msgid "do not know how to embed font ~s ~s ~s"
-msgstr ""
-
-#: framework-ps.scm:750
-#, scheme-format
-msgid "cannot convert <stdout> to ~S"
-msgstr ""
-
-#: framework-ps.scm:769 framework-ps.scm:772
-#, scheme-format
-msgid "cannot generate ~S using the postscript back-end"
-msgstr ""
+msgstr "non so come inserire il tipo di carattere ~s ~s ~s"
-#: framework-ps.scm:779
+#: framework-ps.scm:639
msgid ""
"\n"
-"The PostScript backend does not support the system-by-system \n"
-"output. For that, use the EPS backend instead,\n"
+"The PostScript backend does not support the\n"
+"system-by-system output. For that, use the EPS backend instead,\n"
"\n"
" lilypond -dbackend=eps FILE\n"
"\n"
" %% Start cut-&-pastable-section\n"
" %% ****************************************************************\n"
msgstr ""
+"\n"
+"Il backend PostScript non supporta l'output\n"
+"di sistemi individuali. Si usi il backend EPS al suo posto.\n"
+"\n"
+" lilypond -dbackend=eps FILE\n"
+"\n"
+"Se avete tagliato e incollato un frammento di codice lilypond da una pagina web,\n"
+"assicuratevi di togliere soltanto ciò che precede\n"
+"\n"
+" %% ****************************************************************\n"
+" %% Start cut-&-pastable-section\n"
+" %% ****************************************************************\n"
-#: framework-tex.scm:361
+#: framework-svg.scm:84
#, scheme-format
-msgid "TeX file name must not contain whitespace: `~a'"
-msgstr ""
+msgid "Updating font into: ~a"
+msgstr "Aggiornamento dei tipi di carattere in: ~a"
-#: graphviz.scm:53
-#, fuzzy, scheme-format
+#: graphviz.scm:64
+#, scheme-format
msgid "Writing graph `~a'..."
-msgstr "Genero le voci..."
+msgstr "Scrittura del grafico «~a»..."
-#: layout-beam.scm:29
+#: layout-beam.scm:38
#, scheme-format
msgid "Error in beam quanting. Expected (~S,~S) found ~S."
-msgstr ""
+msgstr "Errore nella definizione delle travature. Previste (~S,~S), trovate ~S."
-#: layout-beam.scm:46
+#: layout-beam.scm:52
#, scheme-format
msgid "Error in beam quanting. Expected ~S 0, found ~S."
-msgstr ""
+msgstr "Errore nella definizione delle travature. Previste ~S 0, trovate ~S."
-#: layout-page-layout.scm:124
-msgid "Can't fit systems on page -- ignoring between-system-padding"
+#: lily-library.scm:747
+msgid ""
+"Find the index between @var{start} and @var{end} (an integer)\n"
+"which will produce the closest match to @var{target-val} when\n"
+"applied to function @var{getter}."
msgstr ""
+"Cerca un indice compreso tra @var{start} e @var{end} (un intero)\n"
+"che produrrà l'abbinamento più vicino al @var{target-val} quando\n"
+"applicato alla funzione @var{getter}."
-#: layout-page-layout.scm:458
-#, fuzzy
-msgid "Calculating page breaks..."
-msgstr "Calcolo delle posizioni della colonne..."
-
-#: lily-library.scm:583
-#, fuzzy, scheme-format
+#: lily-library.scm:821
+#, scheme-format
msgid "unknown unit: ~S"
-msgstr "traduttore sconosciuto `%s'"
+msgstr "unità sconosciuta: ~S"
+
+#: lily-library.scm:847 lily-library.scm:856
+msgid "warning:"
+msgstr "attenzione:"
-#: lily-library.scm:617
+#: lily-library.scm:849
#, scheme-format
msgid "no \\version statement found, please add~afor future compatibility"
-msgstr ""
+msgstr "dichiarazione di \\version assente; si aggiunga ~a per compatibilità futura"
-#: lily-library.scm:625
+#: lily-library.scm:857
msgid "old relative compatibility not used"
-msgstr ""
+msgstr "compatibilità col vecchio modo relativo non utilizzata"
-#: lily.scm:177
-#, fuzzy, scheme-format
+#: lily.scm:282
+#, scheme-format
msgid "cannot find: ~A"
-msgstr "non trovo"
+msgstr "impossibile trovare ~A"
-#: lily.scm:242
+#: lily.scm:342
#, scheme-format
msgid "wrong type for argument ~a. Expecting ~a, found ~s"
-msgstr ""
+msgstr "tipo di argomento errato per ~a. Previsto ~a, trovato ~s"
-#: lily.scm:634
+#: lily.scm:704
+msgid "Compilation successfully completed"
+msgstr "Compilazione completata con successo"
+
+#: lily.scm:705
+msgid "Compilation completed with warnings or errors"
+msgstr "Compilazione completata con avvertimenti o errori"
+
+#: lily.scm:767
#, scheme-format
msgid "job ~a terminated with signal: ~a"
-msgstr ""
+msgstr "il lavoro ~a è terminato col segnale ~a"
-#: lily.scm:637
+#: lily.scm:770
#, scheme-format
msgid ""
"logfile ~a (exit ~a):\n"
"~a"
msgstr ""
+"file di registro ~a (uscita ~a):\n"
+"~a"
-#: lily.scm:664 lily.scm:757
+#: lily.scm:792 lily.scm:870
#, scheme-format
msgid "failed files: ~S"
-msgstr ""
+msgstr "errore nei file: ~S"
-#: lily.scm:747
-#, fuzzy, scheme-format
+#: lily.scm:861
+#, scheme-format
msgid "Redirecting output to ~a..."
-msgstr "L'output stampato è inviato a %s..."
+msgstr "Redirezione dell'output verso ~a..."
+
+#: lily.scm:880
+#, scheme-format
+msgid "Invoking `~a'...\n"
+msgstr "Chiamata di «~a»...\n"
-#: ly-syntax-constructors.scm:40
+#: ly-syntax-constructors.scm:51
msgid "Music head function must return Music object"
-msgstr ""
+msgstr "Una funzione musicale principale deve restituire un Oggetto musicale"
-#: ly-syntax-constructors.scm:139
+#: ly-syntax-constructors.scm:176
#, scheme-format
msgid "Invalid property operation ~a"
-msgstr ""
+msgstr "Operazione di proprietà non valida: ~a"
-#: markup.scm:124
+#: markup.scm:223
#, scheme-format
msgid "Wrong number of arguments. Expect: ~A, found ~A: ~S"
-msgstr ""
+msgstr "Numero errato di argomenti. Attesi: ~A, trovati ~A: ~S"
-#: markup.scm:130
+#: markup.scm:229
#, scheme-format
msgid "Invalid argument in position ~A. Expect: ~A, found: ~S."
-msgstr ""
+msgstr "Argomento non valido in posizione ~A. Atteso ~A, trovato ~S."
-#: music-functions.scm:228
+#: markup.scm:292
+#, scheme-format
+msgid "Not a markup command: ~A"
+msgstr "Non è un comando di tipo \"markup\": ~A"
+
+#: music-functions.scm:265
msgid "More alternatives than repeats. Junking excess alternatives"
-msgstr ""
+msgstr "Più alternative che ripetizioni. Vengono tralasciate le alternative in eccesso"
-#: music-functions.scm:240
+#: music-functions.scm:294
#, scheme-format
msgid "invalid tremolo repeat count: ~a"
-msgstr ""
+msgstr "numero di ripetizioni di tremolo non valido: ~a"
-#: music-functions.scm:248
+#: music-functions.scm:601
#, scheme-format
-msgid "expecting 2 elements for chord tremolo, found ~a"
-msgstr ""
-
-#: music-functions.scm:564
-#, fuzzy, scheme-format
msgid "music expected: ~S"
-msgstr "aspettavo %s"
+msgstr "musica attesa: ~S"
#. FIXME: uncomprehensable message
-#: music-functions.scm:614
+#: music-functions.scm:649
#, scheme-format
msgid "Bar check failed. Expect to be at ~a, instead at ~a"
-msgstr ""
+msgstr "Controllo di battuta fallito. Avrebbe dovuto trovarsi a ~a invece che a ~a"
-#: music-functions.scm:764
-#, fuzzy, scheme-format
+#: music-functions.scm:828
+#, scheme-format
msgid "cannot find quoted music: `~S'"
-msgstr "non trovo il file: `%s'"
+msgstr "impossibile trovare la musica citata: «~S»"
+
+#: music-functions.scm:964
+msgid "Add @var{octave-shift} to the octave of @var{pitch}."
+msgstr "Aggiungere @var{octave-shift} all'ottava di @var{altezza}."
+
+#: music-functions.scm:1019
+#, scheme-format
+msgid "Unknown octaveness type: ~S "
+msgstr "Tipo di ottava sconosciuto: ~S "
+
+#: music-functions.scm:1020
+msgid "Defaulting to 'any-octave."
+msgstr "Applicazione del valore predefinito 'any-octave."
-#: music-functions.scm:961
-#, fuzzy, scheme-format
+#: music-functions.scm:1355
+#, scheme-format
msgid "unknown accidental style: ~S"
-msgstr "stringa di escape sconosciuta: `\\%s'"
+msgstr "stile di alterazione sconosciuto: ~S"
-#: output-ps.scm:276
-msgid "utf-8-string encountered in PS backend"
-msgstr ""
+#: output-ps.scm:289 output-svg.scm:550
+#, scheme-format
+msgid "unknown line-cap-style: ~S"
+msgstr "line-cap-style sconosciuto: ~S"
+
+#: output-ps.scm:294 output-svg.scm:556
+#, scheme-format
+msgid "unknown line-join-style: ~S"
+msgstr "line-join-style sconosciuto: ~S"
-#: output-svg.scm:45
+#: output-svg.scm:47
#, scheme-format
msgid "undefined: ~S"
-msgstr ""
+msgstr "~S indefinito"
-#: output-svg.scm:135
+#: output-svg.scm:151
#, scheme-format
msgid "cannot decypher Pango description: ~a"
-msgstr ""
+msgstr "impossibile decifrare la descrizione di Pango: ~a"
-#: output-tex.scm:96
-#, fuzzy, scheme-format
-msgid "cannot find ~a in ~a"
-msgstr "non trovo le estremità di %s"
+#: output-svg.scm:231
+msgid "Glyph must have a unicode value"
+msgstr "Un glifo deve avere un valore unicode"
-#: paper.scm:85
-#, fuzzy
+#: output-svg.scm:283 output-svg.scm:293
+#, scheme-format
+msgid "cannot find SVG font ~S"
+msgstr "impossibile trovare il tipo di carattere SVG ~S"
+
+#: paper.scm:115
msgid "set-global-staff-size: not in toplevel scope"
-msgstr "non c'è un traduttore di livello massimo"
+msgstr "set-global-staff-size: non è nell'ambito di livello più alto"
-#: paper.scm:133
+#: paper.scm:296
#, scheme-format
msgid "This is not a \\layout {} object, ~S"
-msgstr ""
+msgstr "Questo non è un oggetto \\layout {}, ~S"
-#: paper.scm:145
-#, fuzzy, scheme-format
-msgid "Unknown papersize: ~a"
-msgstr "variabile paper sconosciuta: `%s'"
+#: paper.scm:308
+#, scheme-format
+msgid "Unknown paper size: ~a"
+msgstr "Dimensione del foglio sconosciuta: ~a"
#. TODO: should raise (generic) exception with throw, and catch
#. that in parse-scm.cc
-#: paper.scm:160
+#: paper.scm:323
msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
-msgstr ""
+msgstr "Si deve usare #(set-paper-size .. ) all'interno di \\paper { ... }"
-#: parser-clef.scm:129
-#, fuzzy, scheme-format
+#: parser-clef.scm:140
+#, scheme-format
msgid "unknown clef type `~a'"
-msgstr "tipo di chiave sconosciuto"
+msgstr "tipo di chiave sconosciuto «~a»"
-#: parser-clef.scm:130
+#: parser-clef.scm:141
#, scheme-format
msgid "supported clefs: ~a"
-msgstr ""
+msgstr "chiavi supportate: ~a"
-#: ps-to-png.scm:64
+#: ps-to-png.scm:72
#, scheme-format
msgid "~a exited with status: ~S"
-msgstr ""
+msgstr "~a è terminato con stato ~S"
-#: to-xml.scm:180
+#: to-xml.scm:191
#, scheme-format
msgid "assertion failed: ~S"
-msgstr ""
+msgstr "errore di asserzione: ~S"
+
+#, fuzzy
+#~ msgid "deprecated function called: %s"
+#~ msgstr "non riesco a trovare il carattere `%s'"
+
+#, fuzzy
+#~ msgid "generate DVI (tex backend only)"
+#~ msgstr "vincoli degenerati"
#, fuzzy
#~ msgid "do not generate printed output"
#~ msgstr "vincoli degenerati"
+#, fuzzy
+#~ msgid "cannot find start of trill spanner"
+#~ msgstr "non trovo le estremità di %s"
+
+#, fuzzy
+#~ msgid "already have a trill spanner"
+#~ msgstr "crescendo non terminato"
+
#~ msgid "silly pitch"
#~ msgstr "indicazione altezza priva di senso"
#~ msgid "unbound spanner `%s'"
#~ msgstr "Spanner non legato `%s'"
-#, fuzzy
-#~ msgid "cannot find start of slur"
-#~ msgstr "non trovo le estremità di %s"
-
#, fuzzy
#~ msgid "Error syncing file (disk full?)"
#~ msgstr "errore nel sincronizzare il file (disco pieno?)"
#~ msgid "cannot abbreviate tuplet"
#~ msgstr "non posso abbreviare"
-#~ msgid "Invalid midi format"
-#~ msgstr "Formato midi non valido"
-
#~ msgid "Parsing...\n"
#~ msgstr "Interpreto...\n"
(exception-moments (ending-moments
exception-grouping 0 grouping-moment)))
- (if (= dir START)
+ (if (= dir START)
;; Start rules
- (or (not (equal? time-signature-fraction '(3 . 4))) ;; start anywher if not 3/4
- (beat-end? pos beat-endings) ;; are we at start of beat?
- (and (not (equal? test-beam base-moment)) ;; is beat split?
+ (or (not (equal? time-signature-fraction '(3 . 4))) ;; start anywhere if not 3/4
+ (= (ly:moment-main-numerator pos) 0) ;; start at beginning of measure
+ (not (null? exception-grouping)) ;; don't use special rules if exception
+ (beat-end? pos beat-endings) ;; are we at start of beat?
+ (and (not (equal? test-beam base-moment)) ;; is beat split?
(not (beat-end? (ly:moment-add pos test-beam)
beat-endings)))) ;; will this note end the beat
;; End rules
(break-span-event . (break-dynamic-span-event))
(pedal-event . (sostenuto-event sustain-event una-corda-event))
(rhythmic-event . (lyric-event melodic-event multi-measure-rest-event
- percent-event
- rest-event skip-event bass-figure-event))
+ double-percent-event percent-event
+ repeat-slash-event rest-event
+ skip-event bass-figure-event))
(melodic-event . (cluster-note-event note-event))
(() . (Announcement))
(Announcement . (AnnounceNewContext))
(slope . 1.0)
(stencil . ,ly:percent-repeat-item-interface::double-percent)
(thickness . 0.48)
- (width . 2.0)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
font-interface
side-position-interface
text-interface))))))
+ (DoubleRepeatSlash
+ . (
+ (dot-negative-kern . 0.75)
+ (font-encoding . fetaMusic)
+ (slash-negative-kern . 1.6)
+ (slope . 1.0)
+ (stencil . ,ly:percent-repeat-item-interface::beat-slash)
+ (thickness . 0.48)
+ (meta . ((class . Item)
+ (interfaces . (font-interface
+ percent-repeat-interface
+ percent-repeat-item-interface
+ rhythmic-grob-interface))))))
+
(DynamicLineSpanner
. (
(axes . (,Y))
(right-edge . (extra-space . 0.5))
(first-note . (fixed-space . 2.5))))
(stencil . ,ly:key-signature-interface::print)
+ (extra-spacing-width . (0.0 . 0.5))
(Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
(right-edge . (extra-space . 0.5))
(first-note . (fixed-space . 2.5))))
(stencil . ,ly:key-signature-interface::print)
+ (extra-spacing-width . (0.0 . 0.5))
(Y-offset . ,ly:staff-symbol-referencer::callback)
(meta . ((class . Item)
(interfaces . (break-aligned-interface
(before-line-breaking . ,ly:paper-column::before-line-breaking)
(full-measure-extra-space . 1.0)
(horizontal-skylines . ,ly:separation-item::calc-skylines)
- (skyline-vertical-padding . 0.15)
+ ;; sufficient padding to prevent ledger lines from moving over/under
+ (skyline-vertical-padding . 0.6)
;; (stencil . ,ly:paper-column::print)
(line-break-permission . allow)
(RepeatSlash
. (
+ (slash-negative-kern . 0.85)
(slope . 1.7)
(stencil . ,ly:percent-repeat-item-interface::beat-slash)
(thickness . 0.48)
(repeat-count ,integer? "Do a @code{\\repeat} how often?")
+ (slash-count ,integer? "The number of slashes in a single-beat repeat.
+If zero, signals a beat containing varying durations.")
(span-direction ,ly:dir? "Does this start or stop a spanner?")
(span-type ,symbol? "What kind of dynamic spanner should be created?
Options are @code{'text} and @code{'hairpin}.")
event))
))
+ (DoublePercentEvent
+ . ((description . "Used internally to signal double percent repeats.")
+ (types . (general-music event double-percent-event rhythmic-event))
+ ))
+
(EpisemaEvent
. ((description . "Begin or end an episema.")
(types . (general-music span-event event episema-event))
))
(PercentRepeatedMusic
- . ((description . "Repeats encoded by percents.")
+ . ((description . "Repeats encoded by percents and slashes.")
(iterator-ctor . ,ly:percent-repeat-iterator::constructor)
(start-callback . ,ly:repeated-music::first-start)
(length-callback . ,ly:repeated-music::unfolded-music-length)
(types . (general-music repeated-music))
))
+ (RepeatSlashEvent
+ . ((description . "Used internally to signal beat repeats.")
+ (types . (general-music event repeat-slash-event rhythmic-event))
+ ))
+
(RepeatTieEvent
. ((description . "Ties for starting a second volta bracket.")
(types . (general-music event repeat-tie-event))
"chord-generic-names.scm"
"stencil.scm"
"markup.scm"
+ "modal-transforms.scm"
"music-functions.scm"
"part-combiner.scm"
"autochange.scm"
--- /dev/null
+;;; modal-transforms.scm --- Modal transposition, inversion, and retrograde.
+
+;; Copyright (C) 2011 Ellis & Grant, Inc.
+
+;; Author: Michael Ellis <michael.f.ellis@gmail.com>
+
+;; COPYRIGHT NOTICE
+
+;; This program 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 2 of the License, or
+;; (at your option) any later version.
+
+;; This program 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 this program; if not, write to the Free Software
+;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+
+(define (transposer-factory scale)
+ "Returns a transposer for the specified @var{scale}.
+It is an error if either argument to a transposer is not in the scale
+it was created with. A transposer knows nothing about LilyPond
+internals. It treats scales as an ordered list of arbitrary items and
+pitches as members of a scale.
+"
+
+ (define (index item lis)
+ (list-index (lambda (x) (equal? item x)) lis))
+
+ (lambda (from-pitch to-pitch pitch)
+ (cond
+ ((not (member from-pitch scale))
+ (ly:warning (_i "'from' pitch not in scale; ignoring"))
+ pitch)
+
+ ((not (member to-pitch scale))
+ (ly:warning (_i "'to' pitch not in scale; ignoring"))
+ pitch)
+
+ ((not (member pitch scale))
+ (ly:warning (_i "pitch to be transposed not in scale; ignoring"))
+ pitch)
+
+ (else
+ (list-ref scale
+ (modulo
+ (+ (index pitch scale)
+ (- (index to-pitch scale)
+ (index from-pitch scale)))
+ (length scale)))))))
+
+(define (inverter-factory scale)
+ "Returns an inverter for the specified @var{scale}.
+It is an error if either argument to an inverter
+is not in the scale it was created with. An inverter knows nothing
+about LilyPond internals. It treats scales as an ordered list of
+arbitrary items and pitches as members of a scale.
+"
+
+ (define (index item lis)
+ (list-index (lambda (x) (equal? item x)) lis))
+
+ (lambda (around-pitch to-pitch pitch)
+ (cond
+ ((not (member around-pitch scale))
+ (ly:warning (_i "'around' pitch not in scale; ignoring"))
+ pitch)
+
+ ((not (member to-pitch scale))
+ (ly:warning (_i "'to' pitch not in scale; ignoring"))
+ pitch)
+
+ ((not (member pitch scale))
+ (ly:warning (_i "pitch to be inverted not in scale; ignoring"))
+ pitch)
+
+ (else
+ (list-ref scale
+ (modulo
+ (+ (index to-pitch scale)
+ (- (index around-pitch scale)
+ (index pitch scale)))
+ (length scale)))))))
+
+(define (replicate-modify lis n mod-proc)
+ "Apply @code{(mod-proc lis n)} to each element of a list and
+concatenate the results. Knows nothing of LilyPond internals."
+ (cond
+ ((< n 0)
+ (ly:warning (_i "negative replication count; ignoring")))
+ ((= n 0)
+ '())
+ ((= n 1)
+ (mod-proc lis 1))
+ ((> n 1)
+ (append
+ (replicate-modify lis (- n 1) mod-proc)
+ (mod-proc lis n)))))
+
+
+
+(define-public (change-pitches music converter)
+ "Recurse through @var{music}, applying @var{converter} to pitches.
+Converter is typically a transposer or an inverter as defined above in
+this module, but may be user-defined. The converter function must take
+a single pitch as its argument and return a new pitch. These are
+LilyPond scheme pitches, e.g. @code{(ly:make-pitch 0 2 0)}
+"
+ (let ((elements (ly:music-property music 'elements))
+ (element (ly:music-property music 'element))
+ (pitch (ly:music-property music 'pitch)))
+
+ (cond
+ ((ly:pitch? pitch)
+ (ly:music-set-property! music 'pitch (converter pitch)))
+
+ ((pair? elements)
+ (map (lambda (x) (change-pitches x converter)) elements))
+
+ ((ly:music? element)
+ (change-pitches element converter)))))
+
+
+(define (extract-pitch-sequence music)
+ "Recurse through @var{music}, extracting pitches.
+Returns a list of pitch objects, e.g
+@code{'((ly:make-pitch 0 2 0) (ly:make-pitch 0 4 0) ... )}
+Typically used to construct a scale for input to transposer-factory
+(see).
+"
+
+ (let ((elements (ly:music-property music 'elements))
+ (element (ly:music-property music 'element))
+ (pitch (ly:music-property music 'pitch)))
+
+ (cond
+ ((ly:pitch? pitch)
+ pitch)
+
+ ((pair? elements)
+ (map
+ (lambda (x) (extract-pitch-sequence x))
+ elements))
+
+ ((ly:music? element)
+ (extract-pitch-sequence element)))))
+
+(define (make-scale music)
+ "Convenience wrapper for extract-pitch-sequence."
+ (map car (extract-pitch-sequence music)))
+
+
+(define (make-extended-scale music)
+ "Extend scale given by @var{music} by 5 octaves up and down."
+ ;; This is a bit of a hack since, in theory, someone might want to
+ ;; transpose further than 5 octaves from the original scale
+ ;; definition. In practice this seems unlikely to occur very often.
+ (define extender
+ (lambda (lis n)
+ (map
+ (lambda (i)
+ (ly:make-pitch
+ (+ (- n 6) (ly:pitch-octave i))
+ (ly:pitch-notename i)
+ (ly:pitch-alteration i)))
+ lis)))
+
+ (let ((scale (make-scale music)))
+ (replicate-modify scale 11 extender)))
+
+
+;; ------------- PUBLIC FUNCTIONS -----------------------------
+
+(define-public (make-modal-transposer from-pitch to-pitch scale)
+ "Wrapper function for transposer-factory."
+ (let ((transposer (transposer-factory (make-extended-scale scale)))
+ (from (car (extract-pitch-sequence from-pitch)))
+ (to (car (extract-pitch-sequence to-pitch))))
+
+ (lambda (p)
+ (transposer from to p))))
+
+(define-public (make-modal-inverter around-pitch to-pitch scale)
+ "Wrapper function for inverter-factory"
+ (let ((inverter (inverter-factory (make-extended-scale scale)))
+ (around (car (extract-pitch-sequence around-pitch)))
+ (to (car (extract-pitch-sequence to-pitch))))
+
+ (lambda (p)
+ (inverter around to p))))
+
+
+(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))
+ (reversed (reverse elements))
+ (element (ly:music-property music 'element))
+ (span-dir (ly:music-property music 'span-direction)))
+
+ (ly:music-set-property! music 'elements reversed)
+
+ (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)))
+
+ (map retrograde-music reversed)
+
+ music))
(shift-duration-log r shift dots))
r)))
+(define (calc-repeat-slash-count music)
+ "Given the child-list @var{music} in @code{PercentRepeatMusic},
+calculate the number of slashes based on the durations. Returns @code{0}
+if durations in in @var{music} vary, allowing slash beats and double-percent
+beats to be distinguished."
+ (let* ((durs (map (lambda (elt)
+ (duration-of-note elt))
+ (extract-named-music music 'EventChord)))
+ (first-dur (car durs)))
+
+ (if (every (lambda (d) (equal? d first-dur)) durs)
+ (max (- (ly:duration-log first-dur) 2) 1)
+ 0)))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; clusters.
skip))
(define-public (pitch-of-note event-chord)
+ (let ((evs (filter (lambda (x)
+ (music-has-type x 'note-event))
+ (ly:music-property event-chord 'elements))))
- (let*
- ((evs (filter (lambda (x) (memq 'note-event (ly:music-property x 'types)))
- (ly:music-property event-chord 'elements))))
+ (and (pair? evs)
+ (ly:music-property (car evs) 'pitch))))
+
+(define-public (duration-of-note event-chord)
+ (let ((evs (filter (lambda (x)
+ (music-has-type x 'rhythmic-event))
+ (ly:music-property event-chord 'elements))))
- (if (pair? evs)
- (ly:music-property (car evs) 'pitch)
- #f)))
+ (and (pair? evs)
+ (ly:music-property (car evs) 'duration))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;