[Tutoriel] Comment réparer un fichier corrompu

• 29 Mar. 2020 - 17:36

EDIT : Avant d'essayer la manoeuvre prescrite ici, vous essayer celles proposées là bas https://musescore.org/en/node/54721.
Bonjour,
Si comme moi vous faites souvent joujoux à composer de la musique pour orchestre en jonglant avec les valeurs rythmiques vous êtes peut-être arrivé au problème de type « fichier corrompu »

Comment se manifeste une corruption visuellement ? (pourvu que le fichier reste lisible par MuseScore) :
-Vous observez sur une portée donnée un décalage pour une mesure entre la durée totale des rythmes qu'elle affiche sa durée réelle (observable modifiable dans « propriété de la mesure » après clic droit sur la mesure), une modification de la durée réelle ne règle alors pas le problème, c'est le code du fichier qui est incohérent.

Quand est-ce que MuseScore vous alerte que votre fichier est corrompu ? :
-Lorsque vous ouvrez le logiciel avec un fichier corrompu mais encore exploitable
-Lorsque vous essayez d'enregistrer en ligne une partition qui allait bien à l'ouverture
Que faire lorsque vous apprenez que votre fichier est corrompu ?:
-Si vous avez terminé votre travail vous pouvez imprimer/exporter la partition et corriger les erreurs par vous mêmes, de même le rendu audio fonctionne souvent sans problème sur un fichier légèrement corrompu
-Vous pouvez si vous avez été chanceux et prévoyant, reprendre une copie récente de votre travail qui ne soit pas corrompue (auquel cas refaites immédiatement une copie de la copie)
-Vous pouvez, si vous êtes un rigolo, vous amuser à jongler avec les mesures corrompues et constater qu'une croche copiée peut donner une ronde au collage, ou que tenter de supprimer la mesure buguée peut faire planter le logiciel et autres merveilles du genre. Evidemment je déconseille.
-Ou vous pouvez réparer le fichier avec la méthode que je vous donne

Dans tous les cas, évitez d'enregistrer et fermer un fichier que vous savez corrompu, surtout si vous avez tripoté les mesures corrompues . La corruption pourrait alors faire des métastases sur d'autres mesures et y ajouter des silences farfelus ou y supprimer des notes précieuses.

Que faire alors docteur me dites vous ? Pour les plus technophiles la solution devrait être évidente
Pour les autres suivez bien.
-GARDEZ votre document OUVERT dans MuseScore
-Dans le menu fichier, choisissez l'option exporter et le format « music xml » (non-compressé)

Vous obtenez alors un fichier music xml (extension .musicxml) qui est la clé de la solution

Qu'est-ce que le format music xml ?
Le format music xml est un format qui permet de décrire des partitions « conventionnelles » sous forme d'un (très) long texte balisé.

En fait le format music xml, comme le format html utilisé dans les pages web est un format issu du vieux format **xml **encore très utilisé dont l'idée générale est de découper les documents textuels en éléments et sous-élément et encadrant chaque élément d'une balise ouvrante   et d'une balise fermante   dans certains cas l'élément se résume à une unique balise ouvrante et fermante à la fois .
un exemple d'écriture légale selon la norme xml

<document format= "inventé pour l'exemple mais issu de xml">
<famille nom = "Martin">
<papa> Eric </papa>
<maman> Jeanne </maman>
<enfant sexe = "masculin"> Benoît </enfant>
<enfant sexe = "masculin" naturel = "non" > Pierre </enfant>
 
<absenceDAnnimaux/>
</famille>
</document>

On voit ici que <pere> est un élément Double filsDouble de <famille> ainsi que les élements <mere> et <enfant>, et que <famille> est un fils de <document>. Remarquez que j'ai pris soin de refermer l'élément document après l'élément famille, car le dernier élément ouvert est toujours le premier refermé. De façon générale les éléments ne se chevauchent jamais, ils se succèdent ou s'emboitent les uns dans les autres
Vous aurez remarqué les compléments < machin = "bidule"> ce sont des attributs ils sont utilisés très souvent dans les formats xml récents, ils permettent de compacter le code en utilisant moins de sous-éléments

Bien maintenant que les moins initiés le sont un peu, ouvrez votre fichier music xml, avec au choix :
-un éditeur de fichier xml, qui va vous permettre de naviguer aisément dans le document et de colorer les éléments de manière à les rendre plus lisible
-un éditeur de texte comme NotePad ou Sublime Text, vous aurez également l'aide de la coloration
-si vous ne voulez pas installer un nouveau logiciel, mais que vous êtes à l'aise avec le traitement de texte pour rechercher les mots, vous pouvez également travailler.

Donc vous vous retrouvez face à un gigantesque texte balisé en music xml, avec plein de balises emboitées les unes dans les autres, vous pouvez retrouver si vous êtes à l'aise avec l'anglais et que vous avez bien compris le principe, toutes les infos de votre projet MuseScore quelque part.

Bien maintenant, je vous avais demandé de garder votre document MuseScore ouvert, identifiez-y précisément les problèmes de rythmes, en général il s'agit de silence trop longs ou trop court. Pour localiser toutes les mesures qui posent problème faites Fichier/Enregistrer en ligne, une fenêtre d'erreur s'ouvre alors, qui vous demande de réparer les mesures corrompues, cliquez alors sur « afficher les détails »
Vous avez alors une liste, j'espère pour vous la plus courte possible, de mesures corrompues.

Supposons pour l'exemple que le problème se situe à la mesure 10 de la portée 8
Vous cherchez alors dans le document xml d'abord l'élément <part id = "P8">
(si vous ne savez pas le chercher efficacement référez-vous à l'aide de votre éditeur de texte)
et cherchez ensuite à l'intérieur de cet élément <part ...> l'élément <measure number = "10" width = "xxx" >
Ensuite, regardez à la fin de cet élément et repérez tous les éléments <note>

2 manières alors de procéder
- Manière « simple » si vous voulez remplacer votre mesure corrompue par une pause de la bonne durée :
Supprimez tous les éléments et collez l'unique élément <note> que je vous donne (notez que les espacements hors des chevrons <> ne comptent jamais pour l'intégrité du code)
Pour une mesure à 4/4 ou 2/2 (durée réelle)

<note>
        <rest/>
        <duration>16</duration>
        <voice>1</voice>
        <type>whole</type>
        </note>

Pour une mesure à 3/4 ou 6/8

<note>
        <rest/>
        <duration>12</duration>
        <voice>1</voice>
        <type>whole</type>
        </note>

Pour une mesure à 2/4 :

<note>
        <rest/>
        <duration>8</duration>
        <voice>1</voice>
        <type>whole</type>
        </note>

(Seul le contenu de « duration » change, il correspond au nombre de triples croches que vous pouvez entrer dans la mesure)

-Manière « subtile » idéale si vous voulez préserver vos notes et n'êtes pas effrayé par le xml:
-vous ajustez les durées des notes et silences incorrectes en changeant le nombre entier entre les balises <duration> et </duration>.
Pour corriger la figure de rythme visuellement, vous devez modifiez l'intérieur de l'élément <type> : whole correspond à une ronde, half à une blanche, quarter à une noire, eighth à une croche, 16th à une double croche, breve à une note carrée. Chaque élément <dot/> après l'élément <type> ajoute un point à la note ou au silence
pour plus d'informations (en anglais), chercher ici https://wpmedia.musicxml.com/wp-content/uploads/2012/12/musicxml-tutori…

Ensuite, il vous suffit d'enregistrer votre fichier music xml corrigé, de le réouvrir dans MuseScore et le tour et joué.

N'hésitez pas à laisser un commentaire si je n'ai pas été assez clair.
Bon courage !


Commentaires

Bonjour,
Il y a fichier corrompu et fichier corrompu (les corruptions peuvent être diverses et d'origine complètement différente, ce n'est pas seulement/toujours une question de valeurs rythmiques. Vous dites "jongler" avec les valeurs rythmiques. Il faudrait donner un ou des exemples, susceptibles de mal tourner)

Des méthodes de correction sont déjà connues: https://musescore.org/en/node/54721
L'export en XML et correction dans un éditeur de texte type Notepad l'est aussi (sauf que chacun n'a pas forcément l'envie et la patience de s'y coller). Parfois même le seul export en XML puis ré-import dans MuseScore suffit à corriger les choses.
Ou encore, une suppression des parties (et leur re-création) peut aussi suffire à remettre une partition d'aplomb.
Donc, le mieux, et de très loin à mon avis, est, D'ABORD, de partager la partition sur un forum. Il est fort probable que quelqu'un (un développeur par exemple) puisse remettre la partition d'équerre assez facilement.

En outre, l'immense intérêt de ce partage est d'observer qu'il s'agit (peut-être) d'un problème déjà repéré et en phase d'être rectifié (ou déjà rectifié) au sein d'une nightly. Ce qui vous évitera toute cette perte de temps.
Et si c'est un nouveau bug, cela permettra de le recenser, de le déposer dans la page du Issue Tracker, pour correction future. Ce qui épargnera à d'autres, mais aussi à vous-même, de re-tomber dessus X semaines ou mois plus tard.

En réponse à par cadiz1

"Bonjour,
Il y a fichier corrompu et fichier corrompu (les corruptions peuvent être diverses et d'origine complètement différente, ce n'est pas seulement/toujours une question de valeurs rythmiques."
Je réponds ce que dit Madame Smith dans La Cantatrice Chauve "Cela est vrai en théorie, mais dans la réalité les choses se passent autrement" x)

"Donc, le mieux, et de très loin à mon avis, est, D'ABORD, de partager la partition sur un forum. Il est fort probable que quelqu'un (un développeur par exemple) puisse remettre la partition d'équerre assez facilement."
Et cette probabilité croit avec le nombre de non-développeurs qui lit cet article, n'est-ce pas merveilleux ?

"Ou encore, une suppression des parties (et leur re-création) peut aussi suffire à remettre une partition d'aplomb." pour quelqu'un qui voudrait "éviter les pertes de temps" je trouve que le conseil ne manque pas de mordant, encore moins que celui qui consiste à attendre la disponibilité d'un développeur sur le forum, bien que ceux-ci soient très réactifs. Ceci dit il est vrai que cette solution peut convenir si la partie en question est courte ou enregistrée ailleurs de façon intègre.

"Et si c'est un nouveau bug, cela permettra de le recenser, de le déposer dans la page du Issue Tracker, pour correction future. Ce qui épargnera à d'autres, mais aussi à vous-même, de re-tomber dessus X semaines ou mois plus tard." Je fais partie hélas des gens beaucoup trop égoïste pour apprendre l'anglais, le musique xml est beaucoup plus simple et carré. Plus embêtant encore, il faut relever immédiatement la corruption de la mesure, en question, pour connaitre la funeste suite d'opération.

Par contre je vais en effet mettre votre lien en anglais au début du sujet, peut-être certains seront plus chanceux que moi.
Bonne soirée.

En réponse à par pernox341

Fondamentalement, je réitère ce conseil: partagez un fichier corrompu avant d'essayer de le résoudre par vous-même. Si vous y parvenez de telle ou telle manière, tant mieux. Mais l'idée du partage est essentielle et doit être prioritaire: cette action peut permettre aux développeurs (et testeurs), ce qui commence à faire du monde, de comprendre les causes de ce bug - qui, encore une fois, peut être déjà connu. Et s'il ne l'est pas, il sera pris en charge à un moment ou à autre, pour le bien de MuseScore, et de sa communauté entière.
Quant à l'anglais, ce n'est plus une contrainte de nos jours, avec des traducteurs en ligne qui ont effectué d'énormes progrès.

Do you still have an unanswered question? Please log in first to post your question.