3.5.4 Control de las dinámicas del MIDI

Es posible controlar el volumen MIDI general, el volumen relativo de las indicaciones de matiz dinámico y el volumen relativo de los distintos instrumentos.

Las indicaciones matiz dinámico se traducen automáticamente a niveles de volumen dentro del rango de volúmenes MIDI disponible mientras que los crescendos y decrescendos varían el volumen linealmente entre sus dos extremos. Es posible controlar el volumen relativo de las indicaciones de matiz dinámico, y el volumen general de los diferentes instrumentos.


Indicaciones de matiz dinámico en el MIDI

Solo las marcas de dinámica desde ppppp hasta fffff, incluidos mp, mf y sf tienen valores asignados. Este valor se aplica a continuación al valor del rango de volumen MIDI general para obtener el volumen final que se incluye en la salida MIDI para esa indicación de matiz dinámico en particular. Las fracciones predeterminadas varían desde 0.25 para el ppppp hasta 0.95 para el fffff. El conjunto completo de las indicaciones de matiz dinámico pueden verse en el archivo ‘scm/midi.scm’.

Fragmentos de código seleccionados

Creating custom dynamics in MIDI output

The following example shows how to create a dynamic marking, not included in the default list, and assign it a specific value so that it can be used to affect MIDI output.

The dynamic mark \rfz is assigned a value of 0.9.

#(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 {
        a'4\pp b c-\rfz
      }
    }
  }
  \layout {}
  \midi {}
}

[image of music]

Archivos instalados: ‘ly/script-init.ly’ ‘scm/midi.scm’.

Fragmentos de código: MIDI.

Referencia de funcionamiento interno: Dynamic_performer.


Establecimiento del volumen MIDI

Los volúmenes generales mínimo y máximo de las indicaciones de matiz dinámico MIDI se controlan estableciendo las propiedades midiMinimumVolume y midiMaximumVolume en el nivel del bloque Score. Estas propiedades tienen efecto solamente al comienzo de una vos y sobre las indicaciones dinámicas. 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 dinámico del volumen MIDI general se limita al intervalo entre 0.2 y 0.5.

\score {
  <<
    \new Staff {
      \set Staff.midiInstrument = "flute"
      … music …
    }
    \new Staff {
      \set Staff.midiInstrument = "clarinet"
      … music …
    }
  >>
  \midi {
    \context {
      \Score
      midiMinimumVolume = #0.2
      midiMaximumVolume = #0.5
    }
  }
}

Se puede obtener una ecualización sencilla de instrumentos MIDI estableciendo las propiedades midiMinimumVolume y midiMaximumVolume dentro del contexto Staff.

\score {
  \new Staff {
    \set Staff.midiInstrument = "flute"
    \set Staff.midiMinimumVolume = #0.7
    \set Staff.midiMaximumVolume = #0.9
    … music …
  }
  \midi { }
}

Para partituras con más de un pentagrama y más de un instrumento MIDI, se pueden fijar individualmente los volúmenes relativos de cada instrumento:

\score {
  <<
    \new Staff {
      \set Staff.midiInstrument = "flute"
      \set Staff.midiMinimumVolume = #0.7
      \set Staff.midiMaximumVolume = #0.9
      … music …
    }
    \new Staff {
      \set Staff.midiInstrument = "clarinet"
      \set Staff.midiMinimumVolume = #0.3
      \set Staff.midiMaximumVolume = #0.6
      … music …
    }
  >>
  \midi { }
}

En este ejemplo el volumen del clarinete se reduce de forma relativa al volumen de la flauta.

Si no se establecen estas propiedades de volumen, LilyPond aún aplica un ‘pequeño grado’ de ecualización a ciertos instrumentos. Véase ‘scm/midi.scm’.

Archivos instalados: ‘scm/midi.scm’.

Véase también

Referencia de la notación: Disposición de la partitura.

Referencia de funcionamiento interno: Dynamic_performer.

Fragmentos de código seleccionados

Replacing default MIDI instrument equalization

The default MIDI instrument equalizer can be replaced by setting the instrumentEqualizer property in the Score context to a user-defined Scheme procedure that uses a MIDI instrument name as its argument along with a pair of fractions indicating the minimum and maximum volumes respectively to be applied to that specific instrument.

The following example sets the minimum and maximum volumes for flute and clarinet respectively."

#(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 {
        r2 g''\mp g fis~
        4 g8 fis e2~
        4 d8 cis d2
      }
    }
    \new Staff {
      \key g \major
      \set Staff.midiInstrument = "clarinet"
      \new Voice \relative {
        b'1\p a2. b8 a
        g2. fis8 e
        fis2 r
      }
    }
  >>
  \layout { }
  \midi {  }
}

[image of music]

Advertencias y problemas conocidos

Los cambios en el volumen del MIDI solamente tienen lugar en el comienzo de una nota, por lo que los crescendos y decrescendos no afectan al volumen de una sola nota.


Establecimiento de las propiedades del bloque MIDI

El bloque \midi puede contener distintas disposiciones de los contextos, definiciones de contexto nuevas o código que fija los valores de ciertas propiedades.

\score {
  … music …
  \midi {
    \tempo 4 = 72
  }
}

Aquí, el tempo se establece a 72 pulsos de negra por minuto. La indicación de tempo dentro del bloque \midi no aparece en la partitura impresa. Aunque cualquier otra indicación de \tempo que se especifique dentro del bloque \score también se reflejará en la salida MIDI.

Dentro de un bloque \midi, la instrucción \tempo está estableciendo propiedades durante la interpretación de la música y en el contexto de las definiciones de salida; así, se interpreta como si fuera una modificación de contesto.

Las definiciones de contexto siguen la misma sintaxis que las del bloque \layout:

\score {
  … music …
  \midi {
    \context {
      \Voice
      \remove Dynamic_performer
    }
  }
}

Este ejemplo suprime el efecto de las indicaciones dinámicas sobre la salida MIDI. Nota: los módulos de traducción de LilyPond usados para el sonido se llaman ‘performers’.

Véase también

Manual de aprendizaje: Otras fuentes de información.

Referencia de la notación: Expresiones, Disposición de la partitura.

Archivos instalados: ‘ly/performer-init.ly’.

Fragmentos de código: MIDI.

Referencia de funcionamiento interno: Dynamic_performer.

Advertencias y problemas conocidos

Ciertos reproductores de MIDI no siempre maneja correctamente los cambios de tempo en la salida MIDI.

Los cambios efectuados al midiInstrument, así como ciertas opciones MIDI, al comienzo de un pentagrama pueden aparecer dos veces en la salida MIDI.


LilyPond — Referencia de la notación v2.23.82 (rama de desarrollo).