bug-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

music2xml script, musicexp.py, self.short_indent/char_per_cm, and a divi


From: James Wilkinson
Subject: music2xml script, musicexp.py, self.short_indent/char_per_cm, and a division by zero
Date: Fri, 30 Dec 2022 14:09:34 +0000

Hello everyone,

Firstly, thank you for all your work on Lilypond, and a very Happy New
Year!

I hope this is the right place to report bugs with musicxml2ly (version
2.23.82, from Fedora).

In musicexp.py, in class Paper, def print_ly(self, printer), there is
this snippet:

        char_per_cm = (len(self.get_longest_instrument_name())
                       * 13) / self.page_width
        if self.indent != 0:
            self.print_length_field(printer, "indent", self.indent/char_per_cm)
        if self.short_indent != 0:
            self.print_length_field(
                printer, "short-indent", self.short_indent/char_per_cm)

It’s possible for there not to be a longest instrument name, char_per_cm
to be zero, self.short_indent not to be zero, and the final division to
raise a divide-by-zero error. A very minimal “fix” of
        if self.short_indent != 0 and char_per_cm != 0:
enabled me to run the conversion.

The error message from the original version was this:

$ musicxml2ly Good_Christian_Men.mxl
musicxml2ly: Reading MusicXML from Good_Christian_Men.mxl ...
musicxml2ly: Input file Good_Christian_Men.mxl is compressed, extracting raw 
MusicXML data
musicxml2ly: Converting to LilyPond expressions...
musicxml2ly: Converting to LilyPond expressions...
musicxml2ly: Converting to LilyPond expressions...
musicxml2ly: Converting to LilyPond expressions...
musicxml2ly: Output to `Good_Christian_Men.ly'
Traceback (most recent call last):
  File "/usr/bin/musicxml2ly", line 3482, in <module>
    main()
  File "/usr/bin/musicxml2ly", line 3475, in main
    voices = convert(filename, options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/bin/musicxml2ly", line 3372, in convert
    paper_information.print_ly(printer)
  File "/usr/share/lilypond/2.23.82/python/musicexp.py", line 1026, in print_ly
    printer, "short-indent", self.short_indent/char_per_cm)
                             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
ZeroDivisionError: float division by zero

The file is available at
https://www.cpdl.org/wiki/images/f/f9/Good_Christian_Men.mxl .

Thanks for your time, and hope this helps,

James.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]