MusicXML: Make tuplet detection work a bit better with nested tuplets
At least the script now detects the correct boundaries for nested
tuplets. It does not, however, correctly group the notes. For this,
the code needs to be substantially changed...
MusicXML: Implement support for transposed instruments
We simply need to take the <transpose> attribute and determine
the correct sounding pitch from the chromatic tag (adjust it
enharmonically if an explicit diatonic shift is given)...
MusicXML: Add a way to force a pitch output to be in absolute pitch
Even when we convert in relative pitch mode, some pitches will still
need to be written out in absolute pitch. Examples are the arguments
of \transposition or \transpose...
Nicolas Sceaux [Sun, 16 Nov 2008 22:32:33 +0000 (23:32 +0100)]
Book parts: \bookpart implementation
Book parts aim at splitting a book into several parts, in order to be
able to use eg. different page breaking functions, or to make the page
breaking problem less difficult and more likely to finish.
- Book and Paper_book instances respectively are nestable: children
book or paper_book are added to the bookparts_ slot;
- the paper_ slot of a child Book (or Book_paper) is created empty,
and has its parent set to the paper object of the parent Book (or
Paper_book), so that default paper properties are got from the
higher level paper object, and child objects only store part-wide
overrides. This way, we ensure that fonts are loaded in the higher
level paper object, so that the output framework can get all the
loaded fonts from the top level book;
- a Paper_book::top_paper() method is added to access the higher level
paper object, to access properties that are book-wide, for instance
the table used to store labels and page numbers;
- in the parser, \bookpart blocks are introduced, which can be used at
toplevel, or inside a \book block. It can contain the same things as
\book blocks (except \bookpart blocks, though that would be
possible). The associated handlers are added.
- in header and footer markups, the following predicates can be used
to determine if a page is the first or the last one in a book part:
part-first-page, part-last-page.
makefiles: Don't sort file list in lys-to-tely, but sort lsr list on creation
Also, Fix musicxml regression test to no longer duplicate the .texi files.
For this, I first need to sort the list of *.{xml,mxl,texi,tely,itexi,itely}
files and only after that rewrite all *.{mxl,xml} files to their out-www/*.ly
counterparts...
Docs: Rework the way collated-files.html is generated.
-) List the files to be collated in a makefile variable COLLATED_FILES
(will default to $(sort $(TEXINFO_SOURCES) $(LY_FILES) $(OUT_LY_FILES) )
if unset)
-) Get rid of AAA-intro-regression.ly hack and instead include a
.tely file.
lilypond-book: Pass lilypond version to lilypond-book via env var in makefiles
When lilypond-book.py is called from our makefiles to build the documentation,
the @TOPLEVEL_VERSION@ string has not been expanded and the lilypond
version will not be available to lilypond-book.
This patch detects this case and uses the LILYPOND_VERSION environment
variable in that case, which is passed to lilypond-book.py by the makefiles.
Makefiles: Remove old ports targets and the convert-ly target
The convert-ly target was intended to automatically download and convert all
scores from mutopia and was last changed in lilypond 1.4. It is not called
except from the ports-*.make files, which in turn are not included anywhere.
MusicXML: Insert the section headers as pure texinfo code
Unfortunately, we can't yet get rid of the AAA-intro-regression.ly
hack, because the description in that file tries to include the
lilypond version. lilypond-book now supports @liypondversion, but
unfortunately, that's not available during docs building,
so I have to leave that one .ly in there :((((
lys-to-tely: If a .i?te(ly|xi) file is passed to the script, include it
lsy-to-tely simply creates one texinfo page from a list of snippets. If
one wants to insert some texinfo code in between some snippets,
that's currently not really possible (only as texidoc header field of
some dummy snippet, that will create an empty image and display the
dummy file name). This patch allows *.i?te(ly|xi) files to be passed
to lys-to-tely, too, which will simply be include via
@include ${filename}
in the .tely file. All other files are still treated as lilypond snippets
with no difference to the current state.
lys-to-tely will use the same order of files as passed on the command line,
so by sorting the file names appropriately, one can now insert
arbitrary texinfo code somewhere in between some snippets (or at beginning
or end of the file).
This allows the metronome-markup function to be called from anywhere in the
score, e.g. to generate the markup for a (sub)title (header field!) or to
generate text markup without changing the midi performance at all.
MusicXML: Add test case for directions in the middle of some multimeasure-rests
This is currently broken: the direction element is placed after the final
barline, thus creating invalid LilyPond syntax... For this reason, this
file does not have the default .xml file extension for now, until I have
resolved the problem...
MusicXML: Remove unneccessary header fields from the regtests
-) Remove work/movement title. There should be one regtest to check whether
all header fields are correctly converted, but then other files should not
have them. These header fields just clutter up the output and draw away
attention from the issues that are tested.
-) Rename some files to make their purpose clearer
MusicXML: Implement inclusion of .ily files in MusicXML regtest page
All files *.ily in the musicxml regtest directory are now copied to
out-www/*.ly and automatically included (with proper sorting!) into the
regtest page. This allows us to insert @section lines using an *.ily file...
MusicXML: convert <miscellaneous-field name='description'> tag to texidoc header
This allows the regtest cases to contain a verbose description of the
purpose of the test by simply placing it inside the
<identity>
<miscellaneous>
<miscellaneous-field name='description'>
HERE COMES THE TEXIDOC STRING FOR LILYPOND (or any other application)!!!
</miscellaneous-field name='description'>
</miscellaneous>
</identity>
Joe Neeman [Fri, 14 Nov 2008 19:40:03 +0000 (11:40 -0800)]
Fix a ragged-bottom/ragged-last-bottom corner case.
When using ragged spacing, we want to pretend that the last page
requires no force (so that we don't worsen the spacing of the
previous pages in order to fill the last page). The previous check
for this only worked if ragged-last-bottom = ##t, but not if
ragged-bottom = ##t and ragged-last-bottom ##f.
MusicXML: Correctly handle bar checks with attributes and MM rests
-) Put the bar line BEFORE the attribute
-) Add Bar checks around MM rests (of course not inside MM rests!)
-) If we have a MM rest, globally set Score.skipBars=##t
-) Don't print a bar check at the very beginning of a score