Mesures qui ne se suivent pas dans le bon ordre

Bonjour/soir à tout le monde!

Je suis dans une pièce pour piano dont voici la main droite:

\version "2.24.4"

\relative c''' {
  \key bes \minor
  \time 3/4
  \partial 4
  r4 R2. r4 r \ottava1 des8-. f
  \repeat volta 2 {
    c8-. ges' bes,-. ges' des[-. f] c ges' bes, ges' es[ ges]
    % 5
    des g c, g' des g c, a' a, f' des[ f] c ges' bes, ges' es[ ges] des g c, g' des g c, a' a, f' des[ f]
    % 10
    c8 f bes, f' as,! f' bes, ges'! as, ges' bes, ges' \repeat unfold 2 {c,8 f bes, f' as, f' bes, ges' as, ges' bes, ges'}
    % 16
    c,8 f bes, f' as, f'
    \alternative {
      \volta 1 {r8 f-. r des-. des[ f]}
      \volta 2 {r8 f-. r des-. r as-.}
    }
  } \ottava0
  \key e \major
  \repeat volta 2 {
    r4 b,8 e r4
    % 20
    e8 gis r4 gis8 b fis c' e, c' gis[ b] fis c' e, c' fis,[ a] r4 e8 gis r4 gis8 b r4 b8 e
    % 25
    gis,8 d' fis, d' a[ cis] gis d' fis, d' \ottava1 cis8[ fis] dis a' cis, a' e[ a] dis, a' cis, a' fis[ a] e ais dis, ais' e ais
    % 30
    dis,8 bis' bis, gis' e[ gis] dis a' cis, a' e[ gis] dis a' cis, a' gis[ b] d, b' cis, b' d, b' cis, ais' bis, ais' cis, a'
    % 35
    \repeat unfold 2 { bis,8 gis' ais, gis' gis, gis' ais, gis' gis, gis' ais, gis'}
    % 39
    \alternative {
      \volta 1 {bis,8 gis' ais, gis' gis, gis' r eis \ottava0 r8 cis r gis}
      \volta 2 {\ottava1 \repeat unfold 3 {bis8 gis' ais, gis' r4} r8 fis r eis \ottava0 r4 dis( cis) r}
    }
  } \bar "|."
}

Je ne sais pas si j'ai fait une erreur ou s'il s'agit d'un bogue, mais le problème est la suite illogique (chez moi en tout cas…) des mesures 35 et suivantes. L'erreur apparaît depuis le \repeat unfold 2 et l'ordre des mesures est complètement chamboulé depuis la mesure 35 et redevient logique à la 40. L'ordre normal devrait être: 35-36-39-40 [fin 1. 37-38 (barre de reprise)][fin 2. 41-jusqu'à la fin].
Il manque aussi les deux fins alterrnatives (alors qu'elles sont bien présentes avant le changement de tonalité) et la barre de mesure signalant la reprise, qui devrait figurer à la fin de la première fin (1.) est également absente. J'ai certainement dû faire une erreur, mais je ne vois pas où…

Bernard

Je sais que c'est contre-intuitif. Le problème est que dans les versions plus anciennes de LilyPond, la syntaxe était

\repeat ... {
  ...
}
\alternative {
  { ... }
  { ... }
}

au lieu de

\repeat ... {
  ...
  \alternative {
    \volta 1 { ... }
    \volta 2 { ... }
  }
}

Dans le cas présent, l'ancienne syntaxe prend le pas sur la nouvelle (pour des raisons de compatibilité), donc le deuxième \alternative est en fait rattaché au \repeat unfold. La solution est d'ajouter une paire d'accolades { ... } autour de ce \repeat unfold.

Bonjour

Et ainsi ?

\version "2.24.4"

\relative c''' {
  \key bes \minor
  \time 3/4
  \partial 4
  r4 R2. r4 r \ottava1 des8-. f
  \repeat volta 2 {
    c8-. ges' bes,-. ges' des[-. f] c ges' bes, ges' es[ ges]
    % 5
    des g c, g' des g c, a' a, f' des[ f] c ges' bes, ges' es[ ges] des g c, g' des g c, a' a, f' des[ f]
    % 10
    c8 f bes, f' as,! f' bes, ges'! as, ges' bes, ges' \repeat unfold 2 {c,8 f bes, f' as, f' bes, ges' as, ges' bes, ges'}
    % 16
    c,8 f bes, f' as, f'
  } %FERMER VOLTA avant alternative
    \alternative {
      \volta 1 {r8 f-. r des-. des[ f]}
      \volta 2 {r8 f-. r des-. r as-.}
    }
   \ottava0
  \key e \major
  \repeat volta 2 {
    r4 b,8 e r4
    % 20
    e8 gis r4 gis8 b fis c' e, c' gis[ b] fis c' e, c' fis,[ a] r4 e8 gis r4 gis8 b r4 b8 e
    % 25
    gis,8 d' fis, d' a[ cis] gis d' fis, d' \ottava1 cis8[ fis] dis a' cis, a' e[ a] dis, a' cis, a' fis[ a] e ais dis, ais' e ais
    % 30
    dis,8 bis' bis, gis' e[ gis] dis a' cis, a' e[ gis] dis a' cis, a' gis[ b] d, b' cis, b' d, b' cis, ais' bis, ais' cis, a'
    % 35
    \repeat unfold 2 { bis,8 gis' ais, gis' gis, gis' ais, gis' gis, gis' ais, gis'}
    % 39
  } %FERMER VOLTA avant alternative
    \alternative {
      \volta 1 {bis,8 gis' ais, gis' gis, gis' r eis \ottava0 r8 cis r gis}
      \volta 2 {\ottava1 \repeat unfold 3 {bis8 gis' ais, gis' r4} r8 fis r eis \ottava0 r4 dis( cis) r}
    }
   \bar "|."
}

ha je n'avais pas vu la réponse de Jean
Effectivement la doc indique ceci

 `\repeat ... {
  ...
  \alternative {
    \volta 1 { ... }
    \volta 2 { ... }
  }
}

Merci Jean et Martial!

C'est avec cette "logique", qui est pour moi totalement "illogique" (contre-intuitif comme l'écrit Jean) que je comprends pourquoi je n'aurais jamais pu devenir programmeur… :wink: Parce que selon ma "logique", le fait d'inclure une \alternative et ses \volti, verra le tout multiplié par x dans une \repeat unfold x… Mais bon, je suis, comme toustes les intervenants de cette liste très reconnaissant aux deux vigiles qui nous sortent de bien des terrains boueux…
Encore merci!

Bernard

Ce qui est bizarre c'est que ça la syntaxe de la doc fonctionne ... Mais pas toujuors

Je reviens à la charge: la solution de la doc, avec mes \repeat volta 2 et \repeat unfold 2 imbriqués, ne marche pas. Par contre, la solution de Martial, qui est de fermer la \repeat volta 2 avant d'ouvrir une \alternative fonctionne… Donc, c'est bien la présence de la \repeat unfold x qui met le boxon. Je suis de plus en plus désemparé… mais ça marche.

Merci encore, Martial.

Bernard

Je ne comprends pas. Mieux vaut rester sur la syntaxe actuelle, pas celle des anciennes versions, donc bien mettre l'\alternative à l'intérieur du \repeat. Ma solution de juste mettre des accolades autour du \repeat unfold ne te convient pas ? C'est-à-dire :

\version "2.24.4"

\relative c''' {
  \key bes \minor
  \time 3/4
  \partial 4
  r4 R2. r4 r \ottava1 des8-. f
  \repeat volta 2 {
    c8-. ges' bes,-. ges' des[-. f] c ges' bes, ges' es[ ges]
    % 5
    des g c, g' des g c, a' a, f' des[ f] c ges' bes, ges' es[ ges] des g c, g' des g c, a' a, f' des[ f]
    % 10
    c8 f bes, f' as,! f' bes, ges'! as, ges' bes, ges' \repeat unfold 2 {c,8 f bes, f' as, f' bes, ges' as, ges' bes, ges'}
    % 16
    c,8 f bes, f' as, f'
    \alternative {
      \volta 1 {r8 f-. r des-. des[ f]}
      \volta 2 {r8 f-. r des-. r as-.}
    }
  } \ottava0
  \key e \major
  \repeat volta 2 {
    r4 b,8 e r4
    % 20
    e8 gis r4 gis8 b fis c' e, c' gis[ b] fis c' e, c' fis,[ a] r4 e8 gis r4 gis8 b r4 b8 e
    % 25
    gis,8 d' fis, d' a[ cis] gis d' fis, d' \ottava1 cis8[ fis] dis a' cis, a' e[ a] dis, a' cis, a' fis[ a] e ais dis, ais' e ais
    % 30
    dis,8 bis' bis, gis' e[ gis] dis a' cis, a' e[ gis] dis a' cis, a' gis[ b] d, b' cis, b' d, b' cis, ais' bis, ais' cis, a'
    % 35
    { \repeat unfold 2 { bis,8 gis' ais, gis' gis, gis' ais, gis' gis, gis' ais, gis'} }
    % 39
    \alternative {
      \volta 1 {bis,8 gis' ais, gis' gis, gis' r eis \ottava0 r8 cis r gis}
      \volta 2 {\ottava1 \repeat unfold 3 {bis8 gis' ais, gis' r4} r8 fis r eis \ottava0 r4 dis( cis) r}
    }
  } \bar "|."
}

Aaah! c'est donc cela:

{ \repeat unfold 2 { bis,8 gis' ais, gis' gis, gis' ais, gis' gis, gis' ais, gis'} }

avec l'accolade ouvrante avant le \repeat unfold, la partie musicale entre deux accolades et la fermeture du tout avec une accolade fermante. Dans ce cas, c'est moi qui avait mal compris ce que tu as écrit… C'est la toute première fois que je vois cette syntaxe. Avec cela, tout marche à merveille.

Bernard

aïe aîe j'étais resté à l'ancienne syntaxe depuis un bail. pffff .
C'est effectivement plus logique
Merci mes prochaines partitions avec alternative seront ainsi :

\repeat ... {
  ...
  \alternative {
    \volta 1 { ... }
    \volta 2 { ... }
  }
}

N'oubliez pas les notions « expression musicale » et « séquentiel » :
on commence une répétition puis vient l'alternative constituée d'expressions musicales (bornée par des accolades) et les voltas (chacune étant aussi une expression musicale en elle-même) de manière séquentielle.