GNU LilyPond – Manuel de notation: 3.5.5 Gestion des nuances en MIDI

### 3.5.5 Gestion des nuances en MIDI

Les nuances MIDI sont générées par le `Dynamic_performer`, affecté par défaut au contexte `Voice`. Vous pouvez contrôler à la fois le volume général, celui des indications de nuance ainsi que celui des différents instruments.

#### Indications de nuance

Les indications de nuances sont transcrites en fraction du volume MIDI. Nous allons, par défaut, de 0,25 pour un ppppp à 0,95 pour un fffff. Les correspondances entre nuance et fraction de volume sont répertoriées dans le fichier ‘`../scm/midi.scm`’ – consultez la rubrique Autres sources de documentation si vous ne savez comment le localiser. Vous pouvez modifier ou étendre ce jeu grâce à une fonction qui prendra en argument une indication de nuance et renverra la fraction désirée, puis en affectant cette fonction à `Score.dynamicAbsoluteVolumeFunction`.

Prenons un exemple. Votre partition comporte un rinforzando que vous avez indiqué par `\rfz`. Cette indication de nuance n’étant pas répertoriée dans le jeu par défaut, elle ne produira aucun effet en MIDI. Il en sera d’ailleurs de même pour toute indication créée de toute pièce à l’aide de l’instruction `make-dynamic-script`. Voici comment procéder pour ajuster le volume MIDI de ce rinforzando que le compositeur a indiqué. La fonction Scheme définit une fraction de 0,9 en cas de rfz, et demande d’utiliser la fonction par défaut dans les autre cas.

>     #(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 {}
>     }

Si vous étiez amené à devoir modifier l’intégralité du jeu des correspondances, nous vous conseillons d’utiliser la procédure `default-dynamic-absolute-volume` contenue dans le fichier ‘`../scm/midi.scm`’ ansi que la table d’association comme base. Le dernier exemple de cette partie illustre la manière de procéder.

#### Amplitude du volume en MIDI

Les valeurs extrêmes du volume MIDI des nuances se contrôlent à l’aide des propriétés `midiMinimumVolume` et `midiMaximumVolume` qui agissent au niveau `Score`. Ces propriétés sont effectives dès lors qu’une nuance est indiquée ; une nuance de départ est donc requise pour que le volume soit ajusté dès le début de la partition. Vous pouvez alors modifier la fraction correspondant à chaque nuance à l’aide de la formule

>     midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction

Voici comment ajuster les nuances tout en limitant l’amplitude du volume entre 0,2 et 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
>         }
>       }
>     }

#### Égalisation de plusieurs instruments (i)

La définition de l’amplitude du volume MIDI au niveau d’un contexte `Staff` permet de gérer les volumes relatifs entre les différents instruments. Ceci constitue en quelque sorte un égaliseur, ce qui permet d’améliorer notablement la qualité de la sortie MIDI.

La clarinette de l’exemple suivant jouera relativement moins fort que la flûte. Rappelez-vous que pour que cela fonctionne correctement, la première note de chacun des instruments doit être affublée d’une indication de nuance.

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

#### Égalisation de plusieurs instruments (ii)

Lorsque les propriétés volume minimum et maximum n’ont pas été définies, LilyPond appliquera par défaut une légère égalisation pour quelques instruments. Les instrument concernés ainsi que le niveau d’égalisation sont répertoriés dans une table instrument-equalizer-alist du fichier ‘`../scm/midi.scm`’.

Vous pouvez remplacer l’égaliseur basique en définissant une nouvelle procédure Scheme `instrumentEqualizer` au sein du contexte `Score`. Cette procédure prend en unique argument le nom d’un instrument MIDI et renverra une paire de fractions correspondant au minimum et maximum de volume alloué à cet instrument. Cette substitution fonctionne selon le même principe que celui que nous avons vu en dédut de chapitre avec `dynamicAbsoluteVolumeFunction`. L’égaliseur par défaut, default-instrument-equalizer, est défini dans le fichier ‘`../scm/midi.scm`’ ; son analyse vous aidera à construire votre propre procédure.

Nous allons, dans l’exemple suivant, régler le volume relatif de la flûte et de la clarinette – au même niveau que dans le précédent.

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

Autres langues : English, deutsch, español, 日本語.

#### LilyPond — Manuel de notation