3.5.7 Assignació de canals MIDI

Quan s’està generant un fitxer MIDI d’una partitura, el LilyPond assigna cada nota de la partitura automàticament a un canal MIDI, aquell que es tocaria quan s’envia cap a un dispositiu MIDI. Un canal MIDI té una certa quantitat de controls disponibles per seleccionar, per exemple, l’instrument a usar per reproduir les notes en aquest canal, o ordenar al dispositiu MIDI que apliqui diversos efectes al so produït sobre el canal. En tot moment, cada control d’un canal MIDI sols pot tenir assignat un valor únic (que malgrat això es pot modificar, per exemple, per canviar a un altre instrument a la meitat d’una partitura).

L’estàndard MIDI dóna suport sols a 16 canals per dispositiu MIDI. Aquest límit en el nombre de canals limita també el nombre d’instruments diferents que poden estar tocant al mateix temps.

El LilyPond crea pistes MIDI separades per a cada pentagrama (o instrument o veu, segons el valor de Score.midiChannelMapping), i també per a cada context de lletra. No hi ha un límit per al nombre de pistes.

Per solucionar el nombre limitat de canals MIDI, el LilyPond dóna suport a alguns modes diferents per a la assignació de canals MIDI, que se seleccionen usant la propietat de context Score.midiChannelMapping. En cada cas, si calen més canals MIDI que el límit, els números de canal assignats tornen a comptar des de zero, causant possiblement una assignació incorrecta d’instrument a algunes notes. Aquesta propietat de context es pot fixar a un dels valors següent:

'staff

Reservar un canal MIDI diferent per a cada un dels pentagrames de la partitura (és l’ajustament predeterminat). Totes les notes de totes les veus comparteixen el canal MIDI del pentagrama que les envolta, i totes es codifiquen dins de la mateixa pista MIDI.

El límit de 16 canals s’aplica al nombre total de contextos de pentagrama i de lletra, fins i tot que les lletres del MIDI no consumeixin un canal MIDI.

'instrument

Reservar un canal MIDI diferent a cada un dels instruments diferents especificats a la partitura. Això significa que totes les notes reproduïdes amb el mateix instrument MIDI comparteixen el mateix canal MIDI (i la mateixa pista), fins i tot que les notes provinguin de diferents veus o pentagrames.

En aquest cas els contextos de lletra no compten per al límit de 16 canals MIDI (ja que no s’assignen a un instrument MIDI), de forma que aquest ajustament pot permetre una millor distribució dels canals MIDI quan el nombre de contextos de pentagrama i de lletra en la partitura excedeix la quantitat de 16.

'voice

Reservar un canal MIDI a cada veu de la partitura que tingui un nom únic entre les veus del seu pentagrama que l’envolta. Les veus dels diferents pentagrames sempre s’assignen a diferents canals MIDI però dues veus qualssevol contingudes dins del mateix pentagrama comparteixen el mateix canal MIDI si tenen el mateix nom. A causa que midiInstrument i els diversos controls MIDI per als efectes són propietats del context de pentagrama, no es poden fixar independentment per a cada veu. La primera veu es reprodueix amb l’instrument i els efectes especificats per al pentagrama, i les veus amb un nom diferent de la primera rebran l’instrument i els efectes predeterminats.

Nota: es poden assignar diferents instruments i/o efectes a diverses veus dins del mateix pentagrama movent el Staff_performer del context Staff al context Voice, y deixant que midiChannelMapping conservi el seu valor predeterminat de 'staff o s’estableixi al valor 'instrument; vegeu el fragment de codi següent.

Per exemple, l’assignació predeterminada de canal MIDI d’una partitura pot canviar-se a l’ajustament 'instrument com es mostra a continuació:

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

Fragments de codi seleccionats

Modificar la sortida MIDI perquè tingui un canal per a cada veu

En produir una sortida MIDI, el comportament predeterminat és que cada pentagrama representa un canal MIDI, amb totes les veus d’aquest pentagrama barrejades. Això redueix al mínim el risc que s’esgoti el nombre de canals MIDI disponibles, atès que hi ha un màxim de 16 canals per cada port MIDI, i la majoria dels dispositius sols tenen un port.

No obstant, quan es trasllada l’interpretador Staff_performer al context Voice, cada veu d’un pentagrama pot tenir el seu propi canal MIDI, com es mostra a l’exemple següent: malgrat d’estar sobre el mateix pentagrama, es creen dos canals MIDI, cadascú amb un midiInstrument diferent.

\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]


Referència de la notació del GNU LilyPond v2.25.22 (development-branch).