Edition d'une partition importée en xml

Bonjour,
Je voudrais avoir vos conseils pour être efficace lors de la récupération d'un fichier xml. Après le maquettage, l'éditeur n'est pas suffisant pour écrire une belle partition, mais je peux importer un fichier xml dans Lilypond.
Comment refaire une partition propre avec ce fichier ? Quelles commandes supprimer ou ajouter ?
Le code en exemple :

s\version "2.24.4"
% automatically converted by musicxml2ly from /media/christophe/16 GO/Chopin orchestre.xml
\pointAndClickOff

\include "articulate.ly"

\header {
  title =  "Chopin orchestre"
  encodingsoftware =  "Logic Pro"
  encodingdate =  "2024-11-21"
}

#(set-global-staff-size 21.54464285714286)
\paper {

  paper-width = 20.98\cm
  paper-height = 29.69\cm
  top-margin = 1.24\cm
  bottom-margin = 1.24\cm
  left-margin = 1.09\cm
  right-margin = 1.09\cm
  between-system-space = 0.7\cm
  page-top-space = 0.7\cm
  indent = 1.613846153846154\cm
}
\layout {
  \context {
    \Score
    skipBars = ##t
    autoBeaming = ##f
  }
}
PartPOneVoiceOne =  {
  \clef "treble" \time 3/4 \key b \minor | % 1
  R2. | % 2
  \stemUp fis'2. ~ \pp | % 3
  \stemUp fis'2. ~ | % 4
  \stemUp fis'2. ~ \pageBreak | % 5
  \stemUp fis'2. | % 6
  r4
}

PartPOneVoiceTwo =  {
  \clef "bass" \time 3/4 \key b \minor | % 1
  R2. | % 2
  \stemDown fis2. ~ ^\pp | % 3
  \stemDown fis2. ~ | % 4
  \stemDown fis2. ~ \pageBreak | % 5
  \stemDown fis2. | % 6
  r4
}

PartPTwoVoiceOne =  {
  \clef "treble" \time 3/4 \key b \minor \pageBreak | % 1
  r4 r4 \stemDown fis''4 ~ ^\f | % 2
  \stemDown fis''8 [ \stemDown g''8 ] \stemDown fis''8 [ \stemDown
  cis''8 ] \stemDown d''8 [ \stemDown b'8 ] | % 3
  \stemUp ais'2 r4 | % 4
  R2. \pageBreak | % 5
  R2. | % 6
  r4
}

PartPThreeVoiceOne =  {
  \clef "treble" \time 3/4 \key b \minor | % 1
  r2 s4 | % 2
  r2 s4 | % 3
  \clef "treble" \time 3/4 \key b \minor s4 r4 r4 \pageBreak | % 4
  \stemDown fis''4. ^\f \stemDown g''8 \stemDown fis''8 [ \stemDown
  cis''8 ] \pageBreak | % 5
  \stemDown e''8 [ \stemDown d''8 ] \stemDown b'2 | % 6
  r4
}

PartPFourVoiceOne =  {
  \clef "bass" \time 3/4 \key b \minor | % 1
  R2. \pageBreak | % 2
  \clef "bass" \time 3/4 \key b \minor r4 \stemDown <fis b d'>4 ^\pp
  \stemDown <fis b d'>4 | % 3
  r4 \stemDown <fis cis' e'>4 \stemDown <fis cis' e'>4 | % 4
  r4 \stemDown <fis ais e'>4 \stemDown <fis ais e'>4 \pageBreak | % 5
  r4 \stemDown <fis b d'>4 \stemDown <fis b d'>4 | % 6
  r4
}

PartPFiveVoiceOne =  {
  \clef "bass" \time 3/4 \key b \minor | % 1
  R2. \pageBreak | % 2
  \clef "bass" \time 3/4 \key b \minor \stemUp b,4 ^\p r4 r4 | % 3
  \stemUp cis4 r4 r4 | % 4
  \stemUp ais,4 r4 r4 \pageBreak | % 5
  \stemUp b,4 r4 r4 | % 6
  r4
}

PartPSixVoiceOne =  {
  \clef "bass_8" \time 3/4 \key b \minor | % 1
  R2. \pageBreak | % 2
  \clef "bass_8" \time 3/4 \key b \minor \stemUp b,,4 ^\p r4 r4 | % 3
  \stemUp cis,4 r4 r4 | % 4
  \stemUp ais,,4 r4 r4 \pageBreak | % 5
  \stemUp b,,4 r4 r4 | % 6
  r4
}


% The score definition
\score {
  <<

    \new StaffGroup \with {
      systemStartDelimiter = #'SystemStartBar
    }

    <<
      \new StaffGroup \with { \hide SpanBar }

      <<
        \new PianoStaff
        <<
          \set PianoStaff.instrumentName = "Cors en Fa"

          \context Staff = "1" <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPOneVoiceOne" {  \PartPOneVoiceOne }
          >> \context Staff = "2" <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPOneVoiceTwo" {  \PartPOneVoiceTwo }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Violons 1"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPTwoVoiceOne" {  \PartPTwoVoiceOne }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Violons 2"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPThreeVoiceOne" {  \PartPThreeVoiceOne }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Altos"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPFourVoiceOne" {  \PartPFourVoiceOne }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Violoncelles"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPFiveVoiceOne" {  \PartPFiveVoiceOne }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Contrebasses"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPSixVoiceOne" {  \PartPSixVoiceOne }
          >>
        >>

      >>

    >>

  >>
  \layout {}
}
\score {
  \unfoldRepeats \articulate {

    \new StaffGroup \with {
      systemStartDelimiter = #'SystemStartBar
    }

    <<
      \new StaffGroup \with { \hide SpanBar }

      <<
        \new PianoStaff
        <<
          \set PianoStaff.instrumentName = "Cors en Fa"

          \context Staff = "1" <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPOneVoiceOne" {  \PartPOneVoiceOne }
          >> \context Staff = "2" <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPOneVoiceTwo" {  \PartPOneVoiceTwo }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Violons 1"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPTwoVoiceOne" {  \PartPTwoVoiceOne }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Violons 2"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPThreeVoiceOne" {  \PartPThreeVoiceOne }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Altos"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPFourVoiceOne" {  \PartPFourVoiceOne }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Violoncelles"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPFiveVoiceOne" {  \PartPFiveVoiceOne }
          >>
        >>
        \new Staff
        <<
          \set Staff.instrumentName = "Contrebasses"

          \context Staff <<
            \mergeDifferentlyDottedOn\mergeDifferentlyHeadedOn
            \context Voice = "PartPSixVoiceOne" {  \PartPSixVoiceOne }
          >>
        >>

      >>

    >>

  }
  \midi {\tempo 4 = 150 }
}


Merci pour vos conseils.
Cordialement
Christophe

Je ne vois pas de solution ou de méthode apparaître.
Il ne me reste plus qu'à tout reprendre en conservant si tout va bien les saisies de notes.

Aux modérateurs : le sujet peut être supprimé. Merci.
C.

Bonjour,

j'avoue avoir essayé,
mais c'est assez inextricable ainsi.
il faut jouer sur l'espacement vertical, sur la taille des portées, le nombre de systeme par page
soit sur toute la partition dans \paper system-per-page = 2
soit en forcçant

myBreak = { 
r1*5 \break %mesure par ligne 
r1*2\break  %mesur sur cette ligne
etc.
}
<<

\new Staff .....etc... 
\new Devnull \myBreak 
>>

voir l'aide :
http://lilypond.org/doc/v2.24/Documentation/notation/vertical-spacing
Cordialment,

Bonjour,
Quand j'écris de la musique à l'image le maquettage précède la partition (pour une pièce de concert c'est plutôt l'inverse) et j'exporte depuis Logic Pro en XML.
La première fois ça a été une prise de tête à la limite de la noyade pour m'y retrouver.
En prenant le temps de parcourir le résultat importé sous Lilypond, on peut trouver un certain nombre de corrections génériques pour éclaircir le code (ici je vois tous les stemUp ou Down à supprimer).
Je crois que j'ai chaque fois supprimé toutes les indications de mise en page.
Ca reste laborieux mais, dans mon cas, je trouve toujours plus intéressant de ne pas devoir recopier toutes les voix. Il faut généralement enlever du code, pas trop en rajouter.
Je compatis.
Bon courage

Bonjour,
J'abonde sur la réponse précédente. Le moins possible d'interventions avant l'export (prévoir un instrument en plus pour éditer les \mark et \tempo sur une voix ne comportant que des silences). Puis copier les voix dans un .ly préalablement préparé sous forme de modèle à remplir (je n'arrive pas à être à l'aise avec la manière dont musicxml2ly présente les voix). Le cauchemar récurrent étant de récupérer des xml de finale imprécis.
Pour éviter les \stemUp etc, utiliser l'option --nsd --no-stem-directions.
Bon courage en effet !

Bonjour,

Pour ma part, je ferais une seule fois un script qui nettoierait le fichier reçu.

Par exemple, avec frescobaldi, vous pouvez faire un fragment en python qui enlève les stemDown et stemUp du texte sélectionné dans l'éditeur:

-*- set: xml; menu: Insérer; python; indent: no; selection: yes;

text = text.replace(r'\stemDown', '' )
text = text.replace(r'\stemUp', '' )

Au plaisir,

Ben

Tout d'abord j'exporte en musicxml non compressé pour obtenir un fichier
exploitable avec sed

  • sed -i '/up</stem>/d' MonFichier.musicxml
  • sed -i '/down</stem>/d' MonFichier.musicxml
  • et pendant que j'y suis sed -i
    's/bracket="no"/bracket="yes"/' MonFichier.musicxml

petit script bash et hop...

#!/bin/bash

if [ ! -v 1 ]; then echo "indiquez un fichier à modifier"; exit; fi
if [ ! -e $1 ]; then echo "fichier non trouvé"; exit; fi
sed -i '/up</stem>/d' $1
sed -i '/down</stem>/d' $1
sed -i 's/bracket="no"/bracket="yes"/' $1

Le 27/11/2024 à 11:48, Frédéric Moinard via LilyPond a écrit :

Pour éviter les \stemUp etc,

--
Vincent Gay
Envoyé depuis mon saxo-phone