Autor Thema: mehrere MIDI-Dateien mit unterschiedlichen Stimmverteilungen  (Gelesen 2579 mal)

friedemann_bach

  • Member
mehrere MIDI-Dateien mit unterschiedlichen Stimmverteilungen
« am: Mittwoch, 21. August 2013, 16:53 »
Liebes Forum,

ich habe folgendes Szenario: Für ein mehrstimmiges Chorstück brauche ich zur Erleichterung des Übens mehrere MIDI-Dateien, in denen jeweils eine Stimme hervorgehoben ist. Diese möchte ich direkt aus einer Lilypond-Datei erzeugen.

Ich stelle es mir so vor, dass ich ingesamt viermal \midi {} aufrufe und darin jeweils die Lautstärken der Stimmen einstelle. Es scheint allerdings ein Problem mit den MIDI-Channels zu geben: Das Ergebnis sieht so aus, dass die Lautstärkeneinstellung immer für alle Instrumente übernommen wird - auch wenn ich jedem Staff ein anderes Instrument zuweise. Weiß jemand eine Lösung oder einen anderen Ansatz für die Aufgabenstellung?

Ich habe folgendes versucht in Lilypond 2.16.2:

\midi {
% ChannelMapping einstellen (hat nicht geholfen)
% alternativ: #'voice, #'instrument (hat nicht geholfen)
\set Score.midiChannelMapping = #'staff
% Performer in die Stimmen schieben (hat nicht geholfen)
\context {
\Staff
\remove "Staff_performer"
}
\context {
\Voice
\consists "Staff_performer"     
}
% Lautstärken einstellen: erste Stimme laut, die anderen leiser
\context Staff = "Staff1" \set Staff.midiMaximumVolume = #1.0
\context Staff = "Staff2" \set Staff.midiMaximumVolume = #0.5
\context Staff = "Staff3" \set Staff.midiMaximumVolume = #0.5
\context Staff = "Staff4" \set Staff.midiMaximumVolume = #0.5
}

eluze

  • Member
Re: mehrere MIDI-Dateien mit unterschiedlichen Stimmverteilungen
« Antwort #1 am: Mittwoch, 21. August 2013, 18:02 »
hallo!
wenn du den midi-performer in die stimme verlegst muss die lautstärkeregelung auch dort geschehen!

also etwa:
\score{
  \new Staff <<
    \new Voice \relative c' {
      \set Voice.midiMaximumVolume = #1.0
      \voiceTwo c1 c c c
    }
    \new Voice \relative c, {
      \set Voice.midiMaximumVolume = #1
      \voiceOne d1 d d d
    }
  >>
  \layout {}
  \midi {
    \context {
      \Staff
      \remove "Staff_performer"
    }
    \context {
      \Voice
      \consists "Staff_performer"
    }
  }
}
Eluze

friedemann_bach

  • Member
Re: mehrere MIDI-Dateien mit unterschiedlichen Stimmverteilungen
« Antwort #2 am: Donnerstag, 22. August 2013, 22:56 »
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.

eluze

  • Member
Re: mehrere MIDI-Dateien mit unterschiedlichen Stimmverteilungen
« Antwort #3 am: Donnerstag, 22. August 2013, 23:52 »


\score {
  …

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


darauf bin ich auch hereingefallen: ich dachte super! - mit einem \score und verschiedenen \layout {} produziere ich auf einen streich mehrere darstellungen.

das wird leider nicht unterstützt (irgendwo ist ein thread mit meiner nachfrage) und die resultate sind ziemlich wunderlich.

probier's mit verschiedenen  \score {} und jeweils 1 \midi { "deine anweisungen"}

Eluze

RobUr

  • Member
Re: mehrere MIDI-Dateien mit unterschiedlichen Stimmverteilungen
« Antwort #4 am: Freitag, 23. August 2013, 16:05 »
Hallo friedemann_bach,

ich erledige solche Dinge immer mit Hilfe mehrerer \books:
\version "2.16.2"

SopranNoten = { \clef treble e'' d'' c'' b' a' g' a' b' }
BassNoten = { \clef bass c' g a e f c f g }

#(define output-suffix "0-Tutti")
\book {
\score { % MIDI alle
<<
\context Staff = "Sopran" {
\set Staff.midiInstrument = #"pan flute"
<< \SopranNoten >>
}

\context Staff = "Bass" {
\set Staff.midiInstrument = #"string ensemble 2"
<< \BassNoten >>
}
>>

\midi {
\context {
\Voice
\remove "Dynamic_performer"
}
}
}
}

#(define output-suffix "1-Sopran")
\book {
\score { % MIDI Sopran
<<
\context Staff = "Sopran" {
%\set Staff.midiInstrument = #"pan flute"
<< s4\ffff \SopranNoten >>
}

\context Staff = "Bass" {
\set Staff.midiInstrument = #"string ensemble 2"
<< s4\pppp \BassNoten >>
}
>>

\midi { }
}
}

#(define output-suffix "4-Bass")
\book {
\score { % MIDI Bass
<<
\context Staff = "Sopran" {
\set Staff.midiInstrument = #"pan flute"
<< s4\pppp \SopranNoten >>
}

\context Staff = "Bass" {
%\set Staff.midiInstrument = #"string ensemble 2"
<< s4\ffff \BassNoten >>
}
>>

\midi { }
}
}

Viel Spaß beim Experimentieren!

Gruß, Robert

iugin

  • Member
Re: mehrere MIDI-Dateien mit unterschiedlichen Stimmverteilungen
« Antwort #5 am: Dienstag, 26. November 2013, 11:22 »
Hallo miteinander

das was RobUr vorschlägt funktioniert sehr gut!
Frage: wie kann ich das gleiche erreichen, wenn ich Voices definiere? (siehe Code).
Ich könnte die Dynamic-Zeichen in den Stimmen nehmen, ist aber etwas umständlich.
Gibt es eine Lösung?

Liebe Grüsse

Eugenio

\version "2.16.2"

SopranNoten = { \new Voice = "sop" { \clef treble e'' d'' c'' b' a' g' a' b' }} %% <- das habe ich geändert
BassNoten = { \new Voice = "bass" { \clef bass c' g a e f c f g }} %% <- und das auch

#(define output-suffix "0-Tutti")
\book {
  \score { % MIDI alle
    <<
      \context Staff = "Sopran" {
        << \SopranNoten >>
      }
     
      \context Staff = "Bass" {
        << \BassNoten >>
      }
    >>
   
    \midi {
      \context {
        \Voice
        \remove "Dynamic_performer"
      }
    }
  }
}

#(define output-suffix "1-Sopran")
\book {
  \score { % MIDI Sopran
    <<
      \context Staff = "Sopran" {
        << s4\ffff \SopranNoten >>
      }
     
      \context Staff = "Bass" {
        << s4\pppp \BassNoten >>
      }
    >>
   
    \midi { }
  }
}

#(define output-suffix "4-Bass")
\book {
  \score { % MIDI Bass
    <<
      \context Staff = "Sopran" {
        << s4\pppp \SopranNoten >>
      }
     
      \context Staff = "Bass" {
        << s4\ffff \BassNoten >>
      }
    >>
   
    \midi { }
  }
}