3.5.7 Asignación de canales MIDI
Cuando se está generando un archivo MIDI de una partitura, LilyPond asigna cada nota de la partitura automáticamente a un canal MIDI, aquel en que se tocaría cuando se envía hacia un dispositivo MIDI. Un canal MIDI tiene una cierta cantidad de controles disponibles para seleccionar, por ejemplo, el instrumento que usar para reproducir las notas en ese canal, u ordenar al dispositivo MIDI que aplique diversos efectos al sonido producido sobre el canal. En todo momento, cada control de un canal MIDI solo puede tener asignado un valor único (que sin embargo se puede modificar, por ejemplo, para cambiar a otro instrumento en mitad de una partitura).
El estándar MIDI contempla solamente 16 canales por dispositivo MIDI. Este límite en el número de canales limita también el número de instrumentos diferentes que pueden estar tocando al mismo tiempo.
LilyPond crea pistas MIDI separadas para cada pentagrama (o
instrumento o voz, según el valor de
Score.midiChannelMapping
), y también para cada contexto de
letra. No hay un límite para el número de pistas.
Para solventar el número limitado de canales MIDI, LilyPond
contempla algunos modos diferentes para la asignación de canales
MIDI, que se seleccionan usando la propiedad de contexto
Score.midiChannelMapping
. En cada caso, si se necesitan
más canales MIDI que el límite, los números de canal asignados
vuelven a contar desde cero, causando posiblemente una asignación
incorrecta de instrumento a algunas notas. Esta propiedad de
contexto se puede fijar a uno de los siguientes valores:
-
'staff
-
Reservar un canal MIDI distinto para cada uno de los pentagramas de la partitura (es el ajuste predeterminado). Todas las notas de todas las voces comparten el canal MIDI del pentagrama que las encierra, y todas se codifican dentro de la misma pista MIDI.
El límite de 16 canales se aplica al número total de contextos de pentagrama y de letra, incluso aunque las letras del MIDI no consumen un canal MIDI.
-
'instrument
-
Reservar un canal MIDI distinto a cada uno de los instrumentos diferentes especificados en la partitura. Esto significa que todas las notas reproducidas con el mismo instrumento MIDI comparten el mismo canal MIDI (y la misma pista), incluso aunque las notas provengan de diferentes voces o pentagramas.
En este caso los contextos de letra no cuentan para el límite de 16 canales MIDI (ya que no se asignan a un instrumento MIDI), de forma que este ajuste puede permitir una mejor distribución de los canales MIDI cuando el número de contextos de pentagrama y de letra en la partitura excede la cantidad de 16.
-
'voice
-
Reservar un canal MIDI distinto a cada voz de la partitura que tenga un nombre único entre las voces de su pentagrama circundante. Las voces de los distintos pentagramas siempre se asignan a distintos canales MIDI pero dos voces cualesquiera contenidas dentro del mismo pentagrama comparten el mismo canal MIDI sin tienen el mismo nombre. A causa de que
midiInstrument
y los diversos controles MIDI para los efectos son propiedades del contexto de pentagrama, no se pueden fijar independientemente para cada voz. La primera voz se reproduce con el instrumento y los efectos especificados para el pentagrama, y las voces con un nombre distinto de la primera recibirán el instrumento y los efectos predeterminados.Nota: se pueden asignar distintos instrumentos y/o efectos a varias voces dentro del mismo pentagrama moviendo el
Staff_performer
del contextoStaff
al contextoVoice
, y dejando quemidiChannelMapping
conserve su valor predeterminado de'staff
o se fije al valor'instrument
; véase el fragmento de código siguiente.
Por ejemplo, la asignación predeterminada de canal MIDI de una
partitura puede cambiarse al ajuste 'instrument
como se
muestra a continuación:
\score { ...music... \midi { \context { \Score midiChannelMapping = #'instrument } } }
Fragmentos de código seleccionados
Modificar la salida MIDI para que tenga un canal por cada voz
Al producir una salida MIDI, el comportamiento predeterminado es que cada pentagrama representa un canal MIDI, con todas las voces de dicho pentagrama mezcladas. Esto reduce al mínimo el riesgo de que se agote el número de canales MIDI disponibles, pues existe un máximo de 16 canales por cada puerto MIDI, y la mayoría de los dispositivos sólo tiene un puerto.
Sin embargo, cuando se traslada el interpretador
Staff_performer
al contexto Voice
, cada voz de un
pentagrama puede tener su propio canal MIDI, como se muestra en el
siguiente ejemplo: a pesar de estar sobre el mismo pentagrama, se
crean dos canales MIDI, cada uno con un midiInstrument
distinto.
\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 } }