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 contextStaff
al contextVoice
, y deixant quemidiChannelMapping
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 } }