Deutsches Lilypond Forum (Archiv)
Allgemein => Hilfe beim Einstieg in Lilypond => Thema gestartet 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?
-
hallo
versuchs mal mit
\voiceFour
[\once] \override NoteColumn #'force-hshift = #.001
\voiceFour sorgt dafür dass der hals nach unten schaut.
-
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?
-
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.
-
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ß
-
hallo Trulli
geht auch , aber … - du kriegst vermehrt warnungen wegen kollisionen (die dann z.t. gar keine sind)
ding-dong
-
\override Flag #'style = #'no-flag
Wo setze ich das hin?
-
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
-
Das hatte ich mir irgendwie anders vorgestellt...
-
wie denn?
es hilft immer wenn ein eigenes beispiel - auch wenn (noch) nicht vollkommen - beigefügt wird, dann kann man über das wesentliche sprechen!
-
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.
-
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
-
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.
-
immerhin:
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!
-
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?
-
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
-
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