3.6.7 Affectation des canaux MIDI

Lorsque LilyPond génère un fichier MIDI à partir d’une partition, chaque note contenue dans cette partition sera automatiquement assignée à un canal MIDI, celui sur lequel elle devrait être jouée quand elle est transmise à un périphérique MIDI. Chaque canal MIDI dispose d’un certain nombre de contrôles pour, par exemple, sélectionner l’instrument qui jouera les notes de ce canal ou bien demander au périphérique MIDI d’appliquer différents effets au son produit sur ce canal. En tout état de cause, chaque contrôle d’un canal MIDI ne peut se voir affecté que d’une seule valeur à la fois – celle-ci peut toutefois être modifiée pour, par exemple, changer d’instrument au milieu du morceau.

Le standard MIDI ne dispose que de 16 canaux par périphérique MIDI. Cette limite du nombre de canaux entraîne une limitation du nombre d’instruments pouvant jouer de concert.

LilyPond crée une piste MIDI séparée pour chaque portée (ou chaque instrument ou voix selon la valeur de Score.midiChannelMapping) ainsi que pour chaque contexte de paroles. Il n’y a pas de limite au nombre de pistes.

Afin de contourner la limitation du nombre de canaux MIDI, LilyPond dispose de différents modes d’allocation d’un canal MIDI grâce à la propriété de contexte Score.midiChannelMapping. Dans tous les cas, lorsque la limite au nombre de canaux est atteinte, LilyPond repart du canal 0, ce qui peut affecter des notes au mauvais instrument. Cette propriété de contexte peut prendre les valeurs suivantes :

'staff

Allocation d’un canal MIDI particulier à chacune des portées de la partition (option par défaut). Toutes les notes de toutes les voix d’une même portée partageront le canal MIDI affecté à la portée qui les englobe, et toutes seront encodées dans la même piste.

La limite des 16 canaux s’applique au nombre total de portées augmenté des contextes de paroles même si les paroles MIDI n’occupent pas de canal MIDI.

'instrument

Allocation d’un canal MIDI particulier à chaque instrument MIDI tel que spécifié dans la partition. En d’autre termes, des notes jouées par un même instrument MIDI partageront le même canal MIDI (et la même piste), même si elles proviennent de voix ou portées différentes.

Dans ce cas particulier, les contextes de paroles ne sont pas pris en compte dans la limite des 16 canaux, puisqu’ils ne sont pas assignés à un instrument MIDI, ce qui permet une meilleure allocation des canaux MIDI lorsque le nombre de portées et de contextes de paroles dépasse 16.

'voice

Allocation d’un canal MIDI particulier à chaque voix de la partition portant un nom unique parmi les voix de la portée considérée. Des voix appartenant à des portées différentes seront toujours affectées à des canaux MIDI différents, mais deux voix partageant une même portée partageront le même canal MIDI dès lors qu’elles porteront le même nom. Dans la mesure où midiInstrument et les différents contrôles d’effets MIDI sont des propriétés affectant le contexte de portée, ils ne peuvent se déterminer individuellement pour une voix. La première voix adoptera l’instrument et les effets spécifiés pour cette portée, et les voix dénommées différemment de la première se verront attribué l’instrument et le effets par défaut.

Note : l’affectation d’instruments ou d’effets différents aux differentes voix d’une même portée s’obtient dès lors que le Staff_performer est déplacé du contexte Staff au contexte Voice tout en maintenant le midiChannelMapping dans le contexte 'staff ou en le réglant sur 'instrument.

Par exemple, l’affectation par défaut des canaux MIDI d’une partition peut être réglée sur 'instrument comme ceci :

\score {
  ...musique...
  \midi {
    \context {
      \Score
      midiChannelMapping = #'instrument
    }
  }
}

Morceaux choisis

Affectation d’un canal MIDI par voix

Lorsque LilyPond génère un fichier MIDI, chaque portée sera par défaut affectée à un canal, quel que soit le nombre de voix qu’elle contient. Ceci permet d’éviter de se retrouver à court de canaux, sachant qu’il n’y en a que seize de disponibles par piste.

Le fait de déplacer le Staff_performer dans le contexte Voice permet d’affecter à chaque voix d’une même portée un canal MIDI spécifique. Dans l’exemple suivant, la même portée donnera lieu à deux canaux MIDI différents, chacun étant affecté de son propre midiInstrument.

\score {
  \new Staff <<
    \new Voice \relative c''' {
      \set midiInstrument = "flute"
      \voiceOne
      \key g \major
      \time 2/2
      r2 g-"Flute" ~
      g fis ~
      fis4 g8 fis e2 ~
      e4 d8 cis d2
    }
    \new Voice \relative c'' {
      \set midiInstrument = "clarinet"
      \voiceTwo
      b1-"Clarinet"
      a2. b8 a
      g2. fis8 e
      fis2 r
    }
  >>
  \layout { }
  \midi {
    \context {
      \Staff
      \remove "Staff_performer"
    }
    \context {
      \Voice
      \consists "Staff_performer"
    }
    \tempo 2 = 72
  }
}

[image of music]


GNU LilyPond – Manuel de notation v2.25.21 (branche de développement).