Resolució de les col·lisions

Els caps de notes que estan a diferents veus i tenen la mateixa alçada, la mateixa forma de cap, i direcció oposada a la plica, es combinen automàticament, però els que tenen caps diferents o la mateixa direcció de plica no es combinen. Els silencis que es troben al costat oposat d’una plica a una altra veu es desplacen verticalment. L’exemple següent mostra tres circumstàncies diferents, sobre la pulsació 1 i 3 al primer compàs i sobre la pulsació 1 del segon compàs, on la combinació automàtica falla.

<<
  \relative {
    c''8 d e d c d c4
    g'2 fis
  } \\
  \relative {
    c''2 c8. b16 c4
    e,2 r
  } \\
  \relative {
    \oneVoice
    s1
    e'8 a b c d2
  }
>>

[image of music]

Els caps de notes diferents es poden com binar com es mostra més a sota. A aquest exemple els caps de la pulsació 1 del primer compàs sí que es combinen:

<<
  \relative {
    \mergeDifferentlyHeadedOn
    c''8 d e d c d c4
    g'2 fis
  } \\
  \relative {
    c''2 c8. b16 c4
    e,2 r
  } \\
  \relative {
    \oneVoice
    s1
    e'8 a b c d2
  }
>>

[image of music]

Les figures negres i blanques no es combinen d’aquesta manera, atès que fora difícil distingir-les.

També es poden combinar caps amb puntets diferents, com es mostra a la tercera pulsació del primer compàs:

<<
  \relative {
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    c''8 d e d c d c4
    g'2 fis
  } \\
  \relative {
    c''2 c8. b16 c4
    e,2 r
  } \\
  \relative {
    \oneVoice
    s1
    e'8 a b c d2
  }
>>

[image of music]

La blanca i la corxera al començament del segon compàs no estan correctament combinades perquè la combinació automàtica no és capaç de completar-se satisfactòriament quan es troben tres o més notes alineades a la mateixa columna de notes, i en aquest cas el cap combinat és incorrecte. Per aconseguir que la combinació seleccioni el cap correcte, s’ha d’aplicar un \shift o desplaçament a la nota que no es pot combinar. Aquí s’aplica \shiftOn per moure el sol agut fora de la columna, i aleshores \mergeDifferentlyHeadedOn fa el seu treball correctament.

<<
  \relative {
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    c''8 d e d c d c4
    \shiftOn
    g'2 fis
  } \\
  \relative {
    c''2 c8. b16 c4
    e,2 r
  } \\
  \relative {
    \oneVoice
    s1
    e'8 a b c d2
  }
>>

[image of music]

L’ordre \shiftOn permet (tot i que obliga a) que les notes d’una veu es puguin desplaçar. Quan \shiftOn s’aplica a una veu, una nota o acord d’aquesta veu es desplaça solament si la seva plica xoqués en cas contrari amb una plica d’una altra veu, i sols si les pliques que xoquen apunten cap a la mateixa direcció. L’ordre \shiftOff evita la possibilitat d’aquest tipus de desplaçament.

De forma predeterminada, les veus externes (normalment les veus u i dos) tenen \shiftOff especificat (desplaçament desactivat), mentre que les veus interiors (tres i següents) tenen especificat \shiftOn (desplaçament activat). Quan s’aplica un desplaçament, les veus amb pliques cap amunt (veus de numeració imparell) es desplacen cap a la dreta, i les veus amb les pliques cap avall (veus amb numeració parell) es desplacen cap a l’esquerra.

Aquí es pot veure un exemple que us ajudarà a visualitzar la forma en la qual s’expandirà internament una expressió polifònica.

Nota: Observeu que amb tres o més veus, l’ordre vertical de les veus dins del seu fitxer d’entrada no seria el mateix que l’ordre vertical de les veus al pentagrama.

\new Staff \relative {
  %% abbreviated entry
  <<
    { f''2  }  % 1: highest
    \\
    { g,2 }  % 2: lowest
    \\
    { d'2 }  % 3: upper middle
    \\
    { b2  }  % 4: lower middle
  >>
  %% internal expansion of the above
  <<
    \new Voice = "1" { \voiceOne   \shiftOff f'2 }
    \new Voice = "2" { \voiceTwo   \shiftOff g,2 }
    \new Voice = "3" { \voiceThree \shiftOn  d'2 } % shifts right
    \new Voice = "4" { \voiceFour  \shiftOn  b2  } % shifts left
  >>
}

[image of music]

Dues ordres addicionals, \shiftOnn i \shiftOnnn, ofereixen nivells de desplaçament majors que es poden especificar temporalment per resoldre col·lisions en situacions complexes; vegeu Exemple real de música.

Sols es combinen les notes si tenen les pliques en direccions oposades (com la tenen, per exemple, a les veus u i dos de forma predeterminada o quan les pliques s’estableixen explícitament en direccions oposades).

Instruccions predefinides

\mergeDifferentlyDottedOn, \mergeDifferentlyDottedOff, \mergeDifferentlyHeadedOn, \mergeDifferentlyHeadedOff.

\shiftOn, \shiftOnn, \shiftOnnn, \shiftOff.

Fragments de codi seleccionats

Veus addicionals per evitar col·lisions

En certs casos de polifonia complexa, calen veus addicionals per evitar col·lisions entre les notes. Si calen més de quatre veus paral·leles, les veus addicionals s’afegeixen definint una variable que utilitza la funció de l’Scheme context-spec-music.

voiceFive = #(context-spec-music (make-voice-props-set 4) 'Voice)

\relative c'' {
  \time 3/4
  \key d \minor
  \partial 2
  <<
    \new Voice  {
      \voiceOne
      a4. a8
      e'4 e4. e8
      f4 d4. c8
    }
    \new Voice {
      \voiceTwo
      d,2
      d4 cis2
      d4 bes2
    }
    \new Voice {
      \voiceThree
      f'2
      bes4 a2
      a4 s2
    }
    \new Voice {
      \voiceFive
      s2
      g4 g2
      f4 f2
    }
  >>
}

[image of music]

Forçar el desplaçament horitzontal de les notes

Quan el motor de gravat no és capaç de tot, es pot usar la sintaxi següent per sobreescriure les decisions de tipografia. Les unitats de mesura que s’usen aquí són espais de pentagrama.

\relative c' <<
  {
    <d g>2 <d g>
  }
  \\
  {
    <b f'>2
    \once \override NoteColumn.force-hshift = 1.7
    <b f'>2
  }
>>

[image of music]

Vegeu també

Glossari musical: polyphony.

Manual d’aprenentatge: Diverses notes a l’hora, Les veus contenen música, Exemple real de música.

Fragments de codi: Simultaneous notes.

Referència de funcionament intern: NoteColumn, NoteCollision, RestCollision.

Advertiments i problemes coneguts

L’ús de \override NoteColumn.ignore-collision = ##t fa que les notes de cap diferent a veus diferents es barregin incorrectament.

\mergeDifferentlyHeadedOn
<< \relative { c'16 a' b a } \\ \relative { c'2 } >>
\override NoteColumn.ignore-collision = ##t
<< \relative { c'16 a' b a } \\ \relative { c'2 } >>

[image of music]


Referència de la notació del GNU LilyPond v2.25.15 (branca de desenvolupament).