[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < Wiederholungen im MIDI ] | [ Nach oben : MIDI-Ausgabe ] | [ > ] |
3.5.5 MIDI-Lautstärke kontrollieren
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.
[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < MIDI-Lautstärke kontrollieren ] | [ Nach oben : MIDI-Lautstärke kontrollieren ] | [ > ] |
Dynamik-Zeichen
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
Mehr 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 { a'4\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.
[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < ] | [ Nach oben : MIDI-Lautstärke kontrollieren ] | [ > ] |
MIDI-Lautstärke
Die generellen Mindest- und Höchstwerte für die Lautstärke der MIDI-Datei
wird kontrolliert, indem die Eigenschaften midiMinimumVolume
und 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 { 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 { \tempo 2 = 72 \context { \Score midiMinimumVolume = #0.2 midiMaximumVolume = #0.5 } } }
[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < ] | [ Nach oben : MIDI-Lautstärke kontrollieren ] | [ > ] |
Verschiedene Instrumente angleichen (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 { r2 g''\mp g fis~ 4 g8 fis e2~ 4 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 { b'1\p a2. b8 a g2. fis8 e fis2 r } } >> \layout {} \midi { \tempo 2 = 72 } }
[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < ] | [ Nach oben : MIDI-Lautstärke kontrollieren ] | [ Schlagzeug in MIDI > ] |
Verschiedene Instrumente angleichen (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 entsprechenden
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 { 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 { \tempo 2 = 72 } }
[ << Allgemeine Eingabe und Ausgabe ] | [Anfang][Inhalt][Index] | [ Abstände >> ] |
[ < ] | [ Nach oben : MIDI-Lautstärke kontrollieren ] | [ Schlagzeug in MIDI > ] |