[ << Entrada y salida generales ] | [Arriba][Índice general][Índice][ ? ] | [ Problemas de espaciado >> ] | ||
[ < Repeticiones y MIDI ] | [ Subir : Salida MIDI ] | [ > ] |
3.5.5 Control de los matices en el MIDI
La dinámica en el MIDI está implementada por medio del intérprete Dynamic_performer que reside de forma predeterminada dentro del contexto Voice. Es posible controlar el volumen MIDI general, el volumen relativo de los matices dinámicos y el volumen relativo de los distintos instrumentos.
[ << Entrada y salida generales ] | [Arriba][Índice general][Índice][ ? ] | [ Problemas de espaciado >> ] | ||
[ < Control de los matices en el MIDI ] | [ Subir : Control de los matices en el MIDI ] | [ > ] |
Indicaciones dinámicas
Los matices o indicaciones de dinámica se traducen a una fracción fija
del rango de volumen MIDI disponible. Las fracciones predeterminadas
se extienden desde 0.25 para ppppp hasta 0.95 para
fffff. El conjunto de indicaciones dinámicas y las
fracciones asociadas pueden verse en ‘../scm/midi.scm’, véase
Otras fuentes de información. Este conjunto de fracciones
se puede cambiar o extender proporcionando una función que toma como
argumento una indicación dinámica y devuelve la fracción requerida, y
estableciendo Score.dynamicAbsoluteVolumeFunction
a esta
función.
Por ejemplo, si se requiere una indicación dinámica
rinforzando, \rfz
, ésta no tiene ningún efecto
predeterminado sobre el volumen MIDI, pues no está incluida en el
conjunto predeterminado. De igual manera, si se define una indicación
dinámica nueva con make-dynamic-script
, ésta tampoco estará
incluida en el conjunto predeterminado. El ejemplo siguiente muestra
cómo hay que añadir el volumen MIDI para estas indicaciones dinámicas.
La función Scheme establece la fracción a 0.9 si se encuentra una
indicación dinámica rfz, y en caso contrario llama a la función
predeterminada.
#(define (myDynamics dynamic) (if (equal? dynamic "rfz") 0.9 (default-dynamic-absolute-volume dynamic))) \score { \new Staff { \set Staff.midiInstrument = #"cello" \set Score.dynamicAbsoluteVolumeFunction = #myDynamics \new Voice { \relative c'' { a4\pp b c-\rfz } } } \layout {} \midi {} }
Como alternativa, si se necesitara redefinir la tabla completa de fracciones, sería mejor usar el procedimiento default-dynamic-absolute-volume que aparece en ‘../scm/midi.scm’ y la tabla asociada como modelo. El último ejemplo de esta sección muestra cómo se puede hacer esto.
[ << Entrada y salida generales ] | [Arriba][Índice general][Índice][ ? ] | [ Problemas de espaciado >> ] | ||
[ < ] | [ Subir : Control de los matices en el MIDI ] | [ > ] |
Volumen maestro MIDI
El volumen general máximo y mínimo de las indicaciones dinámicas de
MIDI se controla estableciendo valores para las propiedades
midiMinimumVolume
y midiMaximumVolume
en el nivel de
Score
. Estas propiedades tienen efecto solamente sobre las
indicaciones dinámicas, por ello si queremos que tengan validez desde
el comienzo de la partitura, se debe colocar allí una indicación de
dinámica. La fracción que corresponde a cada indicación dinámica se
modifica con esta fórmula:
midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fracción
En el ejemplo siguiente, el rango de intensidad dinámica del volumen general MIDI está limitado al intervalo desde 0.2 hasta 0.5.
\score { << \new Staff { \key g \major \time 2/2 \set Staff.midiInstrument = #"flute" \new Voice \relative c''' { r2 g\mp g fis~ fis4 g8 fis e2~ e4 d8 cis d2 } } \new Staff { \key g \major \set Staff.midiInstrument = #"clarinet" \new Voice \relative c'' { b1\p a2. b8 a g2. fis8 e fis2 r } } >> \layout {} \midi { \context { \Score tempoWholesPerMinute = #(ly:make-moment 72 2) midiMinimumVolume = #0.2 midiMaximumVolume = #0.5 } } }
[ << Entrada y salida generales ] | [Arriba][Índice general][Índice][ ? ] | [ Problemas de espaciado >> ] | ||
[ < ] | [ Subir : Control de los matices en el MIDI ] | [ > ] |
Balance entre instrumentos (i)
Si las propiedades de volumen MIDI máximo y mínimo están establecidas
en el contexto Staff
se pueden controlar los volúmenes
relativos de los instrumentos MIDI. Esto proporciona un ecualizador
de instrumentos básico que puede realzar significativamente la calidad
de la salida MIDI.
En este ejemplo se reduce el volumen del clarinete con relación al de la flauta. Debe haber una indicación dinámica en la primera nota de cada instrumento para que esto funcione correctamente.
\score { << \new Staff { \key g \major \time 2/2 \set Staff.midiInstrument = #"flute" \set Staff.midiMinimumVolume = #0.7 \set Staff.midiMaximumVolume = #0.9 \new Voice \relative c''' { r2 g\mp g fis~ fis4 g8 fis e2~ e4 d8 cis d2 } } \new Staff { \key g \major \set Staff.midiInstrument = #"clarinet" \set Staff.midiMinimumVolume = #0.3 \set Staff.midiMaximumVolume = #0.6 \new Voice \relative c'' { b1\p a2. b8 a g2. fis8 e fis2 r } } >> \layout {} \midi { \context { \Score tempoWholesPerMinute = #(ly:make-moment 72 2) } } }
[ << Entrada y salida generales ] | [Arriba][Índice general][Índice][ ? ] | [ Problemas de espaciado >> ] | ||
[ < ] | [ Subir : Control de los matices en el MIDI ] | [ Percusión en MIDI > ] |
Balance entre instrumentos (ii)
Si las propiedades de volumen MIDI máximo y mínimo no están establecidas, de forma predeterminada LilyPond aplica un pequeño grado de ecualización a algunos instrumentos. Los instrumentos y la ecualización que se aplica se muestra en la tabla instrument-equalizer-alist en ‘../scm/midi.scm’.
El ecualizador básico predeterminado se puede sustituir estableciendo
instrumentEqualizer
en el contexto Score
a un
procedimiento Scheme nuevo que acepte el nombre de un instrumento MIDI
como único argumento y devuelva un par de fracciones que dan los
volúmenes máximo y mínimo que se aplican a dicho instrumento. Esta
sustitución se hace de la misma forma que mostramos para restablecer
la fracción de volumen absoluto dynamicAbsoluteVolumeFunction
al comienzo de esta sección. El ecualizador predeterminado,
default-instrument-equalizer, en
‘../scm/midi.scm’, muestra cómo se puede escribir tal
procedimiento.
El ejemplo siguiente establece los volúmenes relativos de la flauta y del clarinete a los mismos valores que el ejemplo anterior.
#(define my-instrument-equalizer-alist '()) #(set! my-instrument-equalizer-alist (append '( ("flute" . (0.7 . 0.9)) ("clarinet" . (0.3 . 0.6))) my-instrument-equalizer-alist)) #(define (my-instrument-equalizer s) (let ((entry (assoc s my-instrument-equalizer-alist))) (if entry (cdr entry)))) \score { << \new Staff { \key g \major \time 2/2 \set Score.instrumentEqualizer = #my-instrument-equalizer \set Staff.midiInstrument = #"flute" \new Voice \relative c''' { r2 g\mp g fis~ fis4 g8 fis e2~ e4 d8 cis d2 } } \new Staff { \key g \major \set Staff.midiInstrument = #"clarinet" \new Voice \relative c'' { b1\p a2. b8 a g2. fis8 e fis2 r } } >> \layout { } \midi { \context { \Score tempoWholesPerMinute = #(ly:make-moment 72 2) } } }
[ << Entrada y salida generales ] | [Arriba][Índice general][Índice][ ? ] | [ Problemas de espaciado >> ] | ||
[ < ] | [ Subir : Control de los matices en el MIDI ] | [ Percusión en MIDI > ] |