Referencia de la notación de GNU LilyPond: 3.5.5 Controlling MIDI dynamics

### 3.5.5 Controlling MIDI dynamics

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.

#### Dynamic marks

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 Other sources of information. Este conjunto de fracciones se puede cmbiar 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 voumen 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'' {
>              a\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.

#### Overall MIDI volume

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
>         }
>       }
>     }

#### Equalizing different instruments (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)
>         }
>       }
>     }

#### Equalizing different instruments (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 reestablecer 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)
>         }
>       }
>     }

Other languages: English, deutsch.

#### Manual de referencia de la notación