Hiya,
danke für den Hinweis. Das Problem habe ich leider dennoch nicht lösen können. Ich will die Lautstärke innerhalb des jeweiligen midi {} verändern und nicht innerhalb von voice, da ich mehrere MIDI-Dateien mit unterschiedlichen Lautstärken brauche. In meinem Fall wäre es mir im Grunde auch egal, ob die Lautstärkenregelung in Staff oder in Voice geschehen müsste.
Hier ein Minimalbeispiel:
\version "2.16.2"
% in allen Stimmen muss am Anfang ein Dynamikzeichen gesetzt sein
VoiceA = { \clef treble e'' \f d'' c'' b' a' g' a' b' }
VoiceB = { \clef bass c' \f g a e f c f g }
\score {
\new ChoirStaff <<
\new Staff = "Staff1" <<
\set Staff.midiInstrument = #"oboe"
\new Voice = "Voice1" { \VoiceA }
>>
\new Staff = "Staff2" <<
\set Staff.midiInstrument = #"bassoon"
\new Voice = "Voice2" { \VoiceB }
>>
>>
% erste MIDI-Datei: alle Lautstärken normal
\midi {
}
% zweite MIDI-Datei: erste Stimme hervorgehoben
\midi {
\context Staff = "Staff1" \set Staff.midiMaximumVolume = #1.0
\context Staff = "Staff2" \set Staff.midiMaximumVolume = #0.2
}
% dritte MIDI-Datei: zweite Stimme hervorgehoben
\midi {
\context Staff = "Staff1" \set Staff.midiMaximumVolume = #0.2
\context Staff = "Staff2" \set Staff.midiMaximumVolume = #1.0
}
}
Ergebnis: Ich bekomme drei Dateien (gut), die erste mit gleichmäßigen Lautstärken (gut), die zweite mit allen Stimmen auf 20% (schlecht) und die dritte mit allen Stimmen auf 100% (schlecht). Es scheint, dass die letzte Kontext-Anweisung auf alle Stimmen bezogen wird ...
Ich habe außerdem mit Score.midiChannelMapping experimentiert und auch mit dem Performer, aber das Ergebnis blieb immer gleich ... über weitere Hilfe würde ich mich sehr freuen, vielleicht hilft das Minimalbeispiel ja weiter.