Je viens d'acquérir une partition sur musescore que je voulais convertir en lilypond à partir des sources en .mxl afin de pouvoir garder juste les voix qui m'intéressent. J'ai déjà réussi avec une autre partition, mais là je tombe sur un os:
Traceback (most recent call last):
File "/opt/local/bin/musicxml2ly", line 3409, in <module>
main()
File "/opt/local/bin/musicxml2ly", line 3402, in main
voices = convert(filename, options)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 3263, in convert
(voices, staff_info) = get_all_voices(parts)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 2855, in get_all_voices
voice = musicxml_voice_to_lily_voice(v)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 2436, in musicxml_voice_to_lily_voice
for direction in musicxml_direction_to_lily(n):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 1722, in musicxml_direction_to_lily
ev = tmp_tp(entry)
^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 1632, in musicxml_metronome_to_ly
if isinstance(children[index], musicxml.BeatUnitDot):
~~~~~~~~^^^^^^^
IndexError: list index out of range
Ai-je trouvé un bug de musicxml2ly ou y a-t-il un contournement possible ?
Je suis sous MacOS avec lilypond2.25.13 (qui est la version à jour sur MacPort mais déjà pas mal en retard sur la version actuelle en développement).
Si vous en avez la possibilité, il faudrait pouvoir essayer avec une version lilypond directement faite pour macos (la dernière stable ou la dernière en développement).
Voici la partition exportée depuis Musescore en .musicxml en y supprimant un maximum de chose mais qui montre encore le souci. Merci à ceux qui pourront tester de leur côté. Pour ma part, cela donne
~>musicxml2ly MWE.musicxml
musicxml2ly: Lecture du fichier MusicXML « MWE.musicxml »...
musicxml2ly: Conversion en expressions LilyPond...
Traceback (most recent call last):
File "/opt/local/bin/musicxml2ly", line 3410, in <module>
main()
File "/opt/local/bin/musicxml2ly", line 3403, in main
voices = convert(filename, options)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 3264, in convert
(voices, staff_info) = get_all_voices(parts)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 2856, in get_all_voices
voice = musicxml_voice_to_lily_voice(v)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 2437, in musicxml_voice_to_lily_voice
for direction in musicxml_direction_to_lily(n):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 1723, in musicxml_direction_to_lily
ev = tmp_tp(entry)
^^^^^^^^^^^^^
File "/opt/local/bin/musicxml2ly", line 1633, in musicxml_metronome_to_ly
if isinstance(children[index], musicxml.BeatUnitDot):
~~~~~~~~^^^^^^^
IndexError: list index out of range
Merci Martial, cela marche effectivement avec la toute dernière version, même si ce n'est pas super facile de contourner les protections d'Apple pour réussir à exécuter les programmes qui viennent avec lilypond sous MacOS, c'est pourquoi je préfère utiliser les paquets MacPort, mais je crois qu'en ce moment c'est un peu bloqué de ce côté là.
En tous cas, merci pour le test, j'ai maintenant le moyen de faire la traduction du morceau original complet.