GNU LilyPond Benutzerhandbuch: 3.5.5 Controlling MIDI dynamics

### 3.5.5 Controlling MIDI dynamics

Dynamik in der MIDI-Ausgabe wird durch den Dynamic_performer erstellt, welcher sich in einem `Voice`-Kontext befindet. Es ist möglich, sowohl die generelle Lautstärke einer MIDI-Datei als auch relative Lautstärken von Dynamikanweisungen und auch relative Lautstärke von einzelnen Instrumenten einzustellen.

#### Dynamic marks

Dynamikanweisungen werden als ein bestimmter Bruch der insgesamt zur Verfügung stehenden MIDI-Lautstärke notiert. Die Standardbrüche reichen von 0,25 für ppppp bis hin zu 0,95 für fffff. Diese Anweisung befinden sich in der Datei ‘`../scm/midi.scm`’, siehe auch Other sources of information. Diese Brüche können nach Belieben geändert oder erweitert werden, indem eine Funktion erstellt wird, die ein Dynamikzeichen als Argument nimmt und den erforderlichen Bruch ausgibt; schließlich muss noch `Score.dynamicAbsoluteVolumeFunction` auf diese Funktion gesetzt werden.

Beispielhaft soll gezeigt werden, wie man eine Rinforzando-Dynamik, `\rfz`, auch in die MIDI-Ausgabe übernehmen kann. Gleiches gilt für neue, selbstdefinierte Dynamikzeichen, die in den Standarddefinitionen nicht enthalten sind. Die Scheme-Funktion, die hier definiert wird, setzt den Bruch von 0,9 für eine rfz-Anweisung und ruft andernfalls die Standardanweisungen auf:

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

Alternativ, insbesondere wenn die gesamte Tabelle der MIDI-Lautstärken umdefiniert werden soll, ist es besser, die default-dynamic-absolute-volume-Prozedur in der Datei ‘`../scm/midi.scm`’ und die hiermit verknüpfte Tabelle als Modell zu benutzen. Das letzte Beispiel dieses Abschnittes zeigt, wie das gemacht werden kann.

#### Overall MIDI volume

Die generellen Mindest- und Höchstwerte für die Lautstärke der MIDI-Datei wird kontrolliert, indem die Eigenschaften `midiMinimumVolume` unde `midiMaximumVolume` auf der `Score`-Ebene gesetzt werden. Diese Eigenschaften haben nur Einfluss auf Dynamikzeichen, sodass ein Dynamikzeichen direkt an den Anfang der Partitur gestellt werden muss, wenn diese Einstellung von Anfang an Wirkung zeigen soll. Der Bruch, der dann den einzelnen Dynamikzeichen entspricht, wird mit der Formel

>     midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * Bruch

errechnet. Im folgenden Beispiel wird die generelle MIDI-Lautstärke auf den Bereich zwischen 0.2 und 0.5 eingeschränkt.

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

Wenn die Mindest- und Höchstwerte für die MIDI-Lautstärke innerhalb eines `Staff`-Kontextes gesetzt werden, kann damit die relative Lautstärke einzelner Instrumente kontrolliert werden. Damit kann man die Qualität der MIDI-Datei merklich verbessern.

In diesem Beispiel wird die Lautstärke der Klarinette relativ zur Lautstärke der Flöte verringert. In jeder Stimme muss eine Dynamikanweisung für die erste Note gesetzt werden, damit diese Einstellung korrekt funktioniert.

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

Wenn Mindest- und Höchstwerte für die Lautstärke der MIDI-Datei nicht vorgegeben werden, nimmt LilyPond standardmäßig einige Anpassungen für die Lautstärken bestimmter Instrumente vor. Diese Instrumente und ihre entsprechende Veränderung lassen sich aus der Tabelle instrument-equalizer-alist in der Datei ‘`../scm/midi.scm`’ entnehmen.

Dieser grundlegende Equalizer kann ersetzt werden, indem die Funktion `instrumentEqualizer` im `Score`-Kontext auf eine neue Scheme-Funktion gesetzt wird, die MIDI-Instrumentbezeichnungen als einziges Argument akzeptiert und ein Zahlenpaar ausgibt, das den Höchst- und Mindestwert für die Lautstärke des entpsrechenden Instruments darstellt. Die Ersetzung der Standardfunktion wird auf gleiche Weise vorgenommen, wie es schon für die `dynamicAbsoluteVolumeFunction` zu Beginn dieses Abschnittes gezeigt wurde. Der Standard-Equalizer, default-instrument-equalizer in der Datei ‘`../scm/midi.scm`’ zeigt, wie solche eine Funktion erstellt werden kann.

Das folgende Beispiel definiert für die Flöte und Klarinette relative Lautstärkewerte, die denen des vorigen Beispiels entsprechen.

>     #(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, español.

#### Notation Reference