On Wed, 2015-10-28 at 23:23 +0000, Thomas WillNot wrote:
> Hi Everyone,
> 
> Thanks for all your ideas!
> Jacques, I appreciate you trying conversion in Mac OSX, though it looks like
> you got the same result as me with those error messages complaining about
> having too many children or something.  I don't think anything's wrong with
> my Sibelius files, but maybe Sibelius 7's MusicXML converter just isn't very
> good.  It is the first version to natively support MusicXML export!
> I wish it would just spit something out despite the errors!  I find LilyPond
> itself to be very good at doing that as it rarely fails me (unless I mess up
> something serious like the nestedness of my brackets or I leave Acrobat
> Reader open; then it will freak out of course!)
> I think the easiest for me will be just using Denemo since it seems to work

You may find some little scripts I have written to fix bugs in
Sibelius's musicXML output. The first is to fix the
slurs-instead-of-ties bug. It may be that this is just a common error
when using Sibelius, rather than a MusicXML generation error. This
script looks for pairs of same pitch notes connected by a slur and
changes them into two tied notes. That one is actually so common (people
make the mistake when entering music in Denemo too) that it is available
in Denemo as a command. The second fixes the problem that Sibelius
outputs two barlines end-repeat and start repeat for a :||: barline;
this script replaces such pairs with a proper end-repeat-start-repeat
barline. The third one replaces rests that fill a whole measure with a
whole measure rest - again this may just be a characteristic error made
by Sibelius users.

8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><
;;two successive notes of equal pitch both begin slur should be tie           
(while (d-NextObject)
            (if (and (d-IsSlurStart) (d-NextObject) (d-IsSlurStart))
                (let ((note (d-GetNote)))
                    (d-ToggleBeginSlur)
                   
                    (d-PrevObject)
                     (if (equal? note (d-GetNote))
                        (begin
                            (d-ToggleBeginSlur)
                            (d-ToggleTie))))))
                            
;;;Replace end repeat start repeat with EndStartRepeat    
(while (d-NextObject)
    (if (and (d-DirectiveGetForTag-standalone "RepeatEnd") (d-NextObject) 
(d-DirectiveGetForTag-standalone "RepeatStart"))       
        (begin
            (d-DeleteObject)
            (d-DeletePreviousObject)
            (d-RepeatEndStart))))


;;; replace rests that are for whole measure with whole-measure rests.
(while (d-NextObject)
    (if (Rest?)
        (let ((duration (d-GetDurationInTicks)))
             (if (= duration (* 1536 (GetPrevailingTimeSig #t)))
                (begin
                    (d-DeleteObject)
                    (DenemoWholeMeasureRestCommand))))))

8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><8><
These scripts are all acting on a single staff - if you have a lot of
staffs it would be worth while creating a loop around them to go through
all the staffs executing them. You use them by placing the cursor at the
start of the staff and the script in the Scheme Window and clicking
Execute (or pressing the Execute Scheme shortcut if you have one).

More serious problems with Sibelius' MusicXML is a failure to output
time signature changes. Mostly these are harmless, the LilyPond is still
functional, or at worst you have to add them back in. But in the case of
compound time signatures I've been forced to insert the time signature
code into the MusicXML file to get something worth having. (It's not as
hairy as it sounds - you find the measure concerned by searching for the
<measure number="nnn"> field in a text editor and paste in the time
signature block which you can copy from the one Sibelius *does* output
at the start of the whole piece modified from 4/4 to 12/8 or whatever).

To digress slightly, most of this is symptomatic of the fact that
MusicXML is not a good standard for describing music notation, it is a
hodge-podge of recipes with a MIDI-centric view of music that Finale
generates and which other programs then have to try to mimic. 

> and then use Simon's idea of converting each file to relative mode with
> Frescobaldi.

I was going to point out that you don't have to use Denemo's default
LilyPond output. Besides the commands to output just the parts Denemo
also allows you to step through the music emitting whatever massaged
output suits you. A script (similar to the ones above) would look at
each object in turn and output your preferred LilyPond style, be it
relative mode or French note names or what have you. The Denemo mailing
list denemo-de...@gnu.org would be the place to get help with doing
that.

Richard



> Thanks again,
>          Thomas
> 
> 
> _______________________________________________
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user



_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to