Autor Thema: Stichnoten und normale Noten auf gleicher Linie direkt nebeneinander  (Gelesen 2569 mal)

friedemann_bach

  • Member
Stichnoten und normale Noten auf gleicher Linie direkt nebeneinander
« am: Mittwoch, 14. September 2011, 22:53 »
Liebes Forum,

und schon wieder eine Aufgabe: In einem Vokalstück möchte ich alternative Silbenverteilungen (für einen anderen Text) mit Stichnoten versehen. Mein Ansatz sieht wie folgt aus:

\version "2.14.1"
\include "deutsch.ly"

Melodie = \relative f {
\key c \major
\time 6/4
r4 r4 a4 << c2 \new CueVoice { c4 c4 } >>
c4 a4 a4 a4 c4 c4 c4 a1.
}

\score {
<<
\new Staff {
\clef bass
\new Voice = "Voice1" \Melodie
}
>>
}

Was mir daran nicht gefällt ist, dass die Notenköpfe leider aufeinander kleben (siehe PDF im Anhang), anstatt leicht versetzt nebeneinander zu stehen. Weiß jemand einen Rat? Ich habe schon verschiedenes ausprobiert, leider ohne Erfolg. Ich freue mich über jede Hilfe!

harm6

  • Member
Re: Stichnoten und normale Noten auf gleicher Linie direkt nebeneinander
« Antwort #1 am: Donnerstag, 15. September 2011, 00:03 »
Hallo friedemann,

Du mußt die NoteColumn verschieben und der CueVoice eine Stimme zuweisen dann klappts. Im Code unten habe ich die CueVoice in \voiceThree gepackt (voiceFour geht auch, aber ich kenne es nur so, daß eine alternative Melodie gegensätzlich "behalst" wird.)

Im übrigen bevorzuge ich es, in so einem Fall die CueVoice grundsätzlich in eine separate Stimme zu setzen, aber das mag Geschmackssache sein. (Ist im Code unten im Moment auskommentiert.)

\version "2.14.1"
\include "deutsch.ly"

shift = \once\override CueVoice.NoteColumn #'force-hshift = #1.5

Melodie = \relative f {
\key c \major
\time 6/4
r4 r4 a4 << c2 \new CueVoice { %{\voiceFour%} \voiceThree \shift c4 c4 } >>
c4 a4 a4 a4 c4 c4 c4 a1.
}

\score {
<<
\new Staff {
\clef bass
\new Voice = "Voice1" \Melodie
}
>>
}

%{
melody = \relative f {
\key c \major
\time 6/4
r4 r4 a4 c2
c4 a4 a4 a4 c4 c4 c4 a1.
}
cueMelody = \relative f {
        \voiceThree
        %\voiceFour
        s2. \shift c'4 c
}


\score {

\new Staff <<
\new Voice = "voice1" { \clef bass \melody }
\new CueVoice = "cueVoice1" { \clef bass \cueMelody }
>>
}
%}

Gruß,
  Harm

friedemann_bach

  • Member
Re: Stichnoten und normale Noten auf gleicher Linie direkt nebeneinander
« Antwort #2 am: Donnerstag, 15. September 2011, 13:10 »
Hallo Harm,

ich bin, wie bei den letzten Malen, sehr beeindruckt von der hohen Geschwindigkeit und Qualität Deiner Antworten. Und es hilft mir, das möchte ich gern nochmals sagen, Lilypond besser zu verstehen und schneller auf eigene Lösungen zu kommen (die ich dem Forum nicht vorenthalten will, wenn es erlaubt ist).

Danke!!

RobUr

  • Member
Re: Stichnoten und normale Noten auf gleicher Linie direkt nebeneinander
« Antwort #3 am: Donnerstag, 15. September 2011, 17:37 »
Hallo,

dieses Szenario habe ich auch oft. Eine CueVoice ist leider nicht geeignet, Liedtext daran auszurichten (Lyrics erfordert Voice-Context).
Meist sind die Problemstellen aber recht kurz, weshalb eine temporär eingeführte zweite Stimme genügen sollte. Knifflig dabei ist, dass in paralleler Notation eine zweite Stimme explizit angelegt werden muss:
<< {...} \new Voice {...} >>
Das „Doppelbackslash-Konstrukt“ (<< {...} \\ {...} >>) ist dafür ungeeignet, da die Stimmen implizit die neuen Bezeichner „1“, „2“ etc. zugewiesen bekommen. Es geht aber gerade darum, den Voice-Namen zu erhalten.
Weiterhin ist die Stimme mit den meisten Noten zu ermitteln, um die Silben entsprechend ausrichten zu können. Im Beispiel hat die zweite Strophe eine Silbe mehr. Allerdings wird immer der Noten-/Liedtext der ersten Strophe „normalgroß“ und in „normaler Richtung“ gesetzt. Also notieren wir für die Männerstimmen zuerst die beiden Viertel mit \stemUp und \tiny und anschließend die Halbe mit \stemDown. Die homophone Passage wird dann mit \stemNeutral \normalsize fortgeführt. (Alternativ ist die Ausrichtung mittels \voiceOne, \voiceTwo und \oneVoice realisierbar; relevant auch wegen Bogenausrichtung.) Für den Alt muss es entgegengesetzt sein.

Der Liedtext ist nun recht einfach ausrichtbar: In Strophe 1 überspringen wir eine Note per _ (Unterstrich); Strophe 2 benötigt keinen Sprung.

Ein wenig Kosmetik benötigen nun noch die kleingedruckten Noten und die Silbe in der ersten Strophe, die optisch unter der Viertel platziert wird. Die beiden Eigenbaufunktionen shiftNC („shiftNoteColumn“) und lto („lyrictextoffset“) erleichtern die Eingabe.

Hier der komplette Code:
\version "2.14.2"
\include "deutsch.ly"

%% Gebrauch: \shiftNC #<hor-offset>
shiftNC = #(define-music-function (parser location X) (number?)
#{
\once \override Voice.NoteColumn #'force-hshift = #$X
#})

%% Gebrauch: \lto #'(<hor-offset> . <ver-offset>)
lto = #(define-music-function (parser location X-Y) (pair?)
#{
\once \override LyricText #'extra-offset = #$X-Y
#})

AltNoten = \relative c' {
\key c \major
\time 6/4
r4 r e
<<
{ \stemDown \tiny \shiftNC #1.0 f4 f }
\new Voice
{ \stemUp f2 }
>>
\stemNeutral \normalsize
f4 e e e f f f e1.
}

AltTextI = \lyricmode {
\set stanza = "1."
Und \lto #'(-1.25 . 0) ke -- _ cker rau -- schen die Quel -- len her -- vor,
}

AltTextII = \lyricmode {
\set stanza = "2."
Doch im -- mer be -- hal -- ten die Quel -- len das Wort,
}

MaennerNoten = \relative f {
\key c \major
\time 6/4
r4 r a
<<
{ \stemUp \tiny \shiftNC #1.6 c4 c }
\new Voice
{ \stemDown c2 }
>>
\stemNeutral \normalsize
c4 a a a c c c a1.
}

MaennerTextI = \lyricmode {
\set stanza = "1."
Und \lto #'(-1.25 . 0) ke -- _ cker rau -- schen die Quel -- len her -- vor,
}

MaennerTextII = \lyricmode {
\set stanza = "2."
Doch im -- mer be -- hal -- ten die Quel -- len das Wort,
}

\score {
\new ChoirStaff = "Chor" {
<<
\new Staff = "Alt" {
<<
\new Voice = "Alt" \AltNoten
\new Lyrics = "AltTextI" \lyricsto "Alt" \AltTextI
\new Lyrics = "AltTextII" \lyricsto "Alt" \AltTextII
>>
}

\new Staff = "Männer" {
<<
\clef bass
\new Voice = "Männer" \MaennerNoten
\new Lyrics = "MännerTextI" \lyricsto "Männer" \MaennerTextI
\new Lyrics = "MännerTextII" \lyricsto "Männer" \MaennerTextII
>>
}
>>
}

\layout {
\context {
\Lyrics
\override LyricHyphen #'minimum-distance = #1.0
\override StanzaNumber #'font-size = #-1
\override StanzaNumber #'font-encoding = #'fetaText
}
}
}

Übrigens ein sehr schöner Distler ;)  (Kommendes Jahr ist sein 70. Todestag …)

Grüße, Robert

harm6

  • Member
Re: Stichnoten und normale Noten auf gleicher Linie direkt nebeneinander
« Antwort #4 am: Freitag, 16. September 2011, 00:19 »
Hallo zusammen,

@friedemnn:
Hör auf Robert, er kennt sich mit Gesangsnotation und Text im allgemeinen wesentlich besser aus als ich.

@Robert:
Zitat
Eine CueVoice ist leider nicht geeignet, Liedtext daran auszurichten (Lyrics erfordert Voice-Context).

Nach Lektüre Deines Posts habe ich das mal ausprobiert ... und es hat funktioniert:
Ich habe den jeweiligen Notentext in eine CueVoice kopiert und die gewünschten Änderungen eingefügt. Im Score dann addressiert und das wars.
Natürlich muß man in der CueVoice mit \hideNotes, \unhideNotes arbeiten und immer mal wieder die NoteColumn tweaken (zusätzlich zur Angabe im \layout).
Ist wahrscheinlich Geschmackssache, wie man da vorgeht.

Eine Kleinigkeit zu \lto. Wenn man gaaanz genau hinschaut, so sieht man, daß das LyricHyphen bei "ke -- cker" nach dem tweak nicht mehr zentriert ist. Ich hab dann noch was in \lto gebastelt. ;)

\version "2.14.2"

\include "deutsch.ly"

lto = #(define-music-function (parser location X) (number?)
#{
\once \override LyricText #'extra-offset = #(cons $X 0)
\once \override LyricHyphen #'extra-offset = #(cons (/ $X 2) 0)
#})

cueShift =
#(define-music-function (parser location X)(number?)
#{
        \once\override CueVoice.NoteColumn #'force-hshift = $X
#})

Alt= \relative c' {
\key c \major
\time 6/4
r4 r e f2 f4
e e e f f f e1.
}

cueAlt= \relative c' {
        \voiceFour
s4 s
\hideNotes

\unHideNotes
\cueShift #1.2 f f
\hideNotes
f4 e e e f f f
\cueShift #-0.1 e1.
}

melodyMaenner = \relative f {
        \time 6/4
r4 r4 a4 c2
c4 a4 a4 a4 c4 c4 c4 a1.
}
cueMaenner = \relative f {
        \voiceThree
        s2
        \hideNotes
        a4
        \unHideNotes
        \cueShift #1.5 c4 c
        \hideNotes
        c
        a a a c c c
        \cueShift #0.8 a1.
}

AltTextI = \lyricmode {
\set stanza = "1."
Und  ke -- cker rau -- schen die Quel -- len her -- vor,
}

AltTextII = \lyricmode {
\set stanza = "2."
Doch \lto #-0.6 im -- mer be -- hal -- ten die Quel -- len das Wort,
}

MaennerTextI = \lyricmode {
\set stanza = "1."
Und  ke -- cker rau -- schen die Quel -- len her -- vor,
}

MaennerTextII = \lyricmode {
\set stanza = "2."
Doch \lto #-0.6 im -- mer be -- hal -- ten die Quel -- len das Wort,
}

\score {
\new ChoirStaff = "Chor" {
<<
\new Staff = "Alt" <<
\new Voice = "Alt" \Alt
\new Lyrics = "AltTextI" \lyricsto "Alt" \AltTextI

\new CueVoice = "cueAlt" \cueAlt
\new Lyrics = "AltTextII" \lyricsto "cueAlt" \AltTextII
>>

\new Staff = "Männer" <<
\new Voice = "Maenner" { \clef bass \melodyMaenner }
\new Lyrics \lyricsto "Maenner" \MaennerTextI

\new CueVoice = "cueMaenner" { \clef bass \cueMaenner }
\new Lyrics \lyricsto "cueMaenner" \MaennerTextII
>>
>>
}

\layout {
\context {
\Lyrics
\override LyricHyphen #'minimum-distance = #1.0
\override StanzaNumber #'font-size = #-1
\override StanzaNumber #'font-encoding = #'fetaText
}
\context {
\CueVoice
\override NoteColumn #'force-hshift = #0.25
}

}
}

Gruß,
  Harm

friedemann_bach

  • Member
Re: Stichnoten und normale Noten auf gleicher Linie direkt nebeneinander
« Antwort #5 am: Montag, 19. September 2011, 22:58 »
Danke dafür. Schon wieder was gelernt :)

Roberts Lösung mit \new voice funktioniert prima und ist leicht zu beherrschen, wenn man einmal begriffen hat, wie sie funktioniert.
« Letzte Änderung: Montag, 19. September 2011, 23:09 von friedemann_bach »

harm6

  • Member
Re: Stichnoten und normale Noten auf gleicher Linie direkt nebeneinander
« Antwort #6 am: Dienstag, 20. September 2011, 01:29 »
Zitat von: friedemann
es hilft mir, das möchte ich gern nochmals sagen, Lilypond besser zu verstehen und schneller auf eigene Lösungen zu kommen (die ich dem Forum nicht vorenthalten will, wenn es erlaubt ist).

Du bist herzlichst eingeladen hier im Forum mitzuarbeiten. Je mehr Sachverstand sich versammelt um so schneller und besser werden Probleme gelöst. Ich selbst habe in der Zeit in der ich hier poste ein Mehrfaches von dem gelernt was ich vorher wußte. Also versuch doch mal bei der nächsten Frage zu einer Lösung zu kommen und falls Dir etwas problemlösendes einfällt, dann schreib es. ;)

Gruß,
  Harm