Génération de silence en hauteur absolue sur un Staff multi Voice

Bonjour,

J'apporte ici une demande liée à un besoin et ma méconnaissance de l'interaction entre scheme et lilypond.

Je transcris pas mal de musique pour chœur, et j'ai une problématique que j'aimerais "rationnaliser" sur la question des silences.
Lorsqu'on a une partition SA-TB, et qu'on entre les parties de soprano, alto, tenor, basse, on se retrouve à mettre des silences qui sont assez fréquemment en homorythmie sur les voix. Dans ce cas, il est plus esthétique et compréhensible de ne mettre qu'un seul silence à l'emplacement par défaut sur les partitions pour les 2 voix concernées (SA et/ou TB). Sinon on se retrouve avec des silences alignés avec VoiceOne ou VoiceTwo, ce qui alourdit la partition.

Jusqu'à présent je m'échine à introduire des bn\rest pour les partitions en clef de sol, et dn\rest pour celles en clef de fa (n étant évidemment la durée du silence).

2 problèmes à cette pratique:

  1. La lecture est un peu abrupte (lire une hauteur de note pour un silence demande un surcroît de concentration
  2. Le contexte de pitch est affecté par ce silence. Par exemple, lorsqu'on insère un silence en clef de sol, et que la mélodie n'est pas dans la quarte inférieure ou supérieure, on se retrouve à devoir mettre des apostrophes et des virgules juste pour "débrancher" le contexte et en gros passer en mode "silence absolu". C'est contre-intuitif parce qu'un silence n'est normalement pas "pitché", et encore une fois peu lisible.

J'aimerais créer une fonction qui permette d'afficher un silence à la place par défaut sur une portée (b' ou d, selon la clef), tout en n'affectant pas le contexte de pitch courant => mettre le silence au milieu de la mélodie, sans affecter la succession de notes.

J'ai essayé de créer une fonction qui afficherait uniquement le silence (note en réalité 1 fonction par clef pour réduire la complexité de lecture lors de l'appel), mais déjà là c'est compliqué:

absoluteGKeyRest = 
 #(define-music-function
    (restDuration)
    (number?)
    #{
      \absolute b'4\rest
    #}
    )

et l'utilisation:
\absoluteGKeyRest #4
Me donne l'erreur:

Erreur : syntax error, unexpected NUMBER_IDENTIFIER
      \absolute b'
                  $restDuration \rest

Alors pour en plus sauvegarder le contexte de pitch et le restituer à la fin de la fonction, je crois que j'en suis loin... :frowning:

Si quelqu'un a une idée...

Merci beaucoup d'avance,
Bonne journée à tous!
Emmanuel

Bonjour,

Je pense que vous ne connaissez pas le Merge_rests_engraver car c'est précisément le but de celui-ci de fusionner les silences sur les portées à plusieurs voix.
Cf. les explications dans le manuel de notation.

Cordialement,
Xavier

1 « J'aime »

Hopurée!! Vous venez de faire ma journée! :star_struck:
Merci infiniment Xavier, et désolé pour la demande inutile (autre que faire progresser ma culture)

Emmanuel