Deutsches Lilypond Forum (Archiv)

Allgemein => Hilfe beim Einstieg in Lilypond => Thema gestartet von: admin am Sonntag, 10. Juni 2012, 20:18

Titel: Drei Stimmen in einer Notenzeile
Beitrag von: admin am Sonntag, 10. Juni 2012, 20:18
Ich versuche gerade, drei Stimmen in einer Notenzeile zu vereinen. Dabei bekomme ich zwar fast das was ich möchte, aber halt nur fast. Letztendlich möchte ich das gleiche resultat haben, wie wenn ich das so schreibe
<ais fis cis>4Ich möchte jedoch die einzelnen Stimmen aufteilen, um einzelne Stimmen schnell fürs Midi ausblenden zu können. Daher habe ich nun folgenden Aufbau gewählt:
\score {
    \new Staff <<
      \new Voice = "1" {
        \voiceOne{
          \sopranVoice
        }
      }
      \new Voice = "2" {
        \voiceTwo{
          \altVoice
        }
      }
      \new Voice = "3" {
        \voiceThree{
          \tenorVoice
        }
      }
    >>
}
Die Ausgabe ist leider noch etwas unerwünscht: Die dritte Stimme ist etwas verschoben gegenüber den anderen beiden, also halt nicht genauso, wie wenn ich die erste Methode wähle. Kann man das noch korrigiere, sodass die drei Stimmen genau unterneinander stehen?
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: ding-dong am Sonntag, 10. Juni 2012, 21:21
hallo

versuchs mal mit
\voiceFour
[\once] \override NoteColumn #'force-hshift = #.001

\voiceFour sorgt dafür dass der hals nach unten schaut.
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: admin am Montag, 11. Juni 2012, 07:05
Das hat schon mal geholfen. Zwei weitere Fragen dazu.

1) Was macht die Anweisung
\override NoteColumn #'force-hshift = #.001
2) Soland die Notenhälse gerade sind und keine "Fähnchen" haben, geht das gut, aber ab der Achtelnote sieht das nicht mehr ganz so schön aus (siehe Bild, sind eigentlich Achtelnoten). Kann man da noch was machen?
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: ding-dong am Montag, 11. Juni 2012, 09:09
klar:
\override Flag #'style = #'no-flag
force-hshift = … bestimmt um wieviel nach rechts oder links verschoben werden soll, wenn kollisionen drohen; die richtung hängt von \voice… ab.
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: trulli am Montag, 11. Juni 2012, 09:31
Zitat
Die dritte Stimme ist etwas verschoben gegenüber den anderen beiden

Hallo lomtas,

neben der Methode von ding-dong kannst du auch \shiftOff an den Anfang der dritten Stimme schreiben.

Gruß
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: ding-dong am Montag, 11. Juni 2012, 09:56
hallo Trulli

geht auch , aber … - du kriegst vermehrt warnungen wegen kollisionen (die dann z.t. gar keine sind)

ding-dong

Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: admin am Montag, 11. Juni 2012, 19:29
\override Flag #'style = #'no-flag

Wo setze ich das hin?
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: Arnold am Dienstag, 12. Juni 2012, 08:53
Variante 1:
ParallelMusic innerhalb eines Voice-Contexts
Alle Noten müssen im parallelen Rhythmus verlaufen
Vorsicht mit Bindebögen, Dynamik u.s.w. - es prasselt Warnungen
I   = { c''4 c'' b' c'' }
II  = { g'4  a'  g' g'  }
III = { e'4  f'  f' e'  }
Dyn = { s4\p\< s s\ff s\fp }

{
  \new Voice {
    <<
      { \I   }
      { \II  }
      { \III }
      { \Dyn }
    >>
  }
}

Variante 2:
MusicMap-Scheme-Prozedur zum Extrahieren einer Stimme
Die Nummer entspricht der Auflistungsreihenfolge im Akkord, somit Stimmkreuzungen möglich
#(define (extract-nth-noteevent-from-chord count mus)
  (let ((eventtype (ly:music-property mus 'name)))
   (if (eq? eventtype 'EventChord)
    (let
     ((es (ly:music-property mus 'elements))
      (new-es '())
      (counter 0))
     (for-each (lambda (e)
       (let ((e-type (ly:music-property e 'name)))
        (if (eq? e-type 'NoteEvent)
         (begin
          (set! counter (+ 1 counter))
          (if (equal? counter count)
           (set! new-es (append new-es (cons e '())))))
         (set! new-es (append new-es (cons e '()))))))
      es)
     (if (>= counter count)
      (ly:music-set-property! mus 'elements new-es)
      (ly:warning "Zu wenig Töne im Akkord!"))))
   mus))

extractNthVoiceFromChords =
#(define-music-function (parser location n m) (integer? ly:music?)
  (music-map (lambda (x) (extract-nth-noteevent-from-chord n x)) (ly:music-deep-copy m)))

Trio = { <c'' g' e'>4\p\<   <c'' a' f'>   <b' g' f'>\ff   <c'' g' e'>\fp }

\score {
  <<
    \new Staff { \Trio }
    \new StaffGroup <<
      \new Staff { \extractNthVoiceFromChords #1 \Trio }
      \new Staff { \extractNthVoiceFromChords #2 \Trio }
      \new Staff { \extractNthVoiceFromChords #3 \Trio }
    >>
  >>
}

Ich habe bei drei Stimmen in einer Notenzeile meistens mit »drei gleichen Singstimmen« zu kämpfen, und die laufen in der Regel nie vollständig parallel. Da es meistens ein Abschreiben (und transponieren) ist, hatte ich noch nie die Notwendigkeit, mich um das Zusammenfassen oder Verzeinzeln zu kümmern.

Arnold
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: admin am Dienstag, 12. Juni 2012, 21:44
Das hatte ich mir irgendwie anders vorgestellt...
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: ding-dong am Dienstag, 12. Juni 2012, 22:45
wie denn?

es hilft immer wenn ein eigenes beispiel - auch wenn (noch) nicht vollkommen - beigefügt wird, dann kann man über das wesentliche sprechen!
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: martinst am Dienstag, 12. Juni 2012, 23:44
Wenn das Notenbild ansprechend sein soll, gibt's die Möglichkeit, die beiden oberen Stimmen als voiceOne per \partcombine zu verbinden und die dritte Stimme als voiceTwo.
Das funktioniert sogar bei unterschiedlichen Rhythmen in den Stimmen einigermaßen gut ohne manuelle Eingriffe.
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: Arnold am Mittwoch, 13. Juni 2012, 16:58
Hallo,

\voiceOne, \voiceTwo und \voiceThree sind eigentlich Notenformatierungsstile.
Wenn nicht gerade (viele) Achtel und kürzer vorkommen, sieht es am besten aus, wenn die untere Stimme mit \voiceTwo und die mittlere Stimme mit \voiceThree formatiert werden. Andernfalls hat man solch unschöne Darstellungen, als wäre bei Zweistimmigkeit die hohe Stimme mit Hals nach unten und die tiefe mit Hals noch oben geschreiben.
Da wir leider nur zwei Halsrichtungen zur Verfügung haben (nach oben oder nach unten) ist eine dritte (eigenständige) Stimme immer ein bischen sperrig.
Vielleicht muß ein genialer Kopf erst noch ein [i]threeVoicesPartCombine[/i] kreieren.

Arnold
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: trulli am Mittwoch, 13. Juni 2012, 18:23
geht auch , aber … - du kriegst vermehrt warnungen wegen kollisionen (die dann z.t. gar keine sind)

Schon recht ding-dong, aber mit \override Staff.NoteColumn #'ignore-collision = ##t nicht.  :)

Also in die 3. Stimme:
\override Staff.NoteColumn #'ignore-collision = ##t
\shiftOff

Falls jetzt jemand meckert und das als dreckige Lösung bezeichnet, dann hat er völlig recht.
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: ding-dong am Mittwoch, 13. Juni 2012, 20:45
immerhin:

Zitat
Using \override NoteColumn #'ignore-collision = ##t will cause differently headed notes in different voices to merge incorrectly.

aber da es eh nur aufgelöste akkordnoten sind, macht's ja nichts!
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: stefanhuglfing am Sonntag, 6. Oktober 2013, 07:28
ich möchte noch mal auf den Vorschlag von martinst zurückkommen. Mit \partcombine kann ich die zwei oberen Stimmen zusammenfassen. Aber ich dachte, wenn ich \voiceOne davor schreibe, zeigen die Notenhälse nach oben. Hier dagegen:

\version "2.14.2-2"
         
SopranNoten = 
 \relative c'
  { c2  g'2 a2 c2 } 
 
MezzoNoten = 
 \relative c'
  { g2  e'2 f2 a2 }   
       
AltNoten = 
 \relative c 
  { e2  c'2  c2 f2 }

       
\score
 {
  <<   
   
   \new Staff 
    <<
     
     \new Voice = "first"
      {
       \voiceOne
       \partcombine  \SopranNoten  \MezzoNoten
      }
     
     \new Voice = "second"
      {
       \voiceTwo 
       \AltNoten
      }
     
    >>
 
  >>

  \layout { \context { \Staff } }
 
 }

zeigen die Notenhälse am Ende nach unten (weil sie sonst zu weit rauf gehen(?))

auch wenn ich den Abstand nach oben vergrößere:

\version "2.14.2-2"

\paper {
  system-system-spacing #'basic-distance = #32
  score-system-spacing =
    #'((basic-distance . 12)
       (minimum-distance . 6)
       (padding . 1)
       (stretchability . 12))
}

SopranNoten =
 \relative c'
 { c2  g'2 \break a2 c2 }

MezzoNoten =
 \relative c'
 { g2  e'2 f2 a2 }

AltNoten =
 \relative c
 { e2  c'2  c2 f2 }

\score
 {
  <<   
   
   \new Staff 
    <<
     
     \new Voice = "first"
      {
       \voiceOne
       \partcombine  \SopranNoten  \MezzoNoten
      }
     
     \new Voice = "second"
      {
       \voiceTwo 
       \AltNoten
      }
     
    >>
 
  >>

  \layout { \context { \Staff } }
 
 }

bleibt es so. Weiß jemand Abhilfe?
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: harm6 am Sonntag, 6. Oktober 2013, 11:41
ich möchte noch mal auf den Vorschlag von martinst zurückkommen. Mit \partcombine kann ich die zwei oberen Stimmen zusammenfassen. Aber ich dachte, wenn ich \voiceOne davor schreibe, zeigen die Notenhälse nach oben. Hier dagegen:

[...]

Hallo,

gemeint war wohl:

\partcombine  { \voiceOne \SopranNoten }  { \voiceOne \MezzoNoten }
Gruß,
  Harm
Titel: Re: Drei Stimmen in einer Notenzeile
Beitrag von: eluze am Dienstag, 8. Oktober 2013, 10:51
die grundlegende frage scheint hier: wie kombiniert man 2 stimmen (soprano, mezzo) in einer (notations-)stimme?

die wohl einfachste variante:
\new Voice = "soprano+mezzo kombiniert" <<
  \voiceOne \slurDown \tieUp % … (beliebig)
  \SopranNoten
  \MezzoNoten
>>

Eluze