Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: Inxman am Sonntag, 4. Januar 2009, 17:17

Titel: Akkordnamen über Klavierstaff, nur wie?
Beitrag von: Inxman am Sonntag, 4. Januar 2009, 17:17
Hallo Leute,

gesundes neues Jahr.

Ich habe folgendes script:

\version "2.12.0"

\header {
title = "Testsong"
}

\include "deutsch.ly"

#(set-global-staff-size 20)

upper = \relative c'' {
\clef treble
\key c \major
\time 3/4
c,4 g' g g c8 [c] c [c] c4 a a a2.
\bar "|."
}
lower = \relative c {
\clef bass
\key c \major
\time 3/4
<c e g>2. <c e g>2. <c f a>2. <c f a>2.
\bar "|."
}

textmitte = \lyricmode {
Tra- la Tra- la la la la la
}

harmonies =  \new ChordNames \chordmode {
\germanChords
\set chordChanges = ##t
c2 c4 c2 c4 f2 f4 f2 f4
}

\score {
\new GrandStaff <<
  \harmonies
\new Staff = upper {
\new Voice = "singer1" \upper
}
\new Lyrics \lyricsto "singer1" \textmitte
\new Staff = lower { \lower }
>>
\layout {
#(layout-set-staff-size 20)
\context {
\GrandStaff
\accepts "Lyrics"
\accepts "Chordnames"
}
\context {
\Lyrics
\consists "Bar_engraver"
}
}
\midi { }
}
\paper {}

Ich verstehe nicht, warum er die Akkordnamen UNTER dem Staff notiert, es steht doch noch
vor dem "\new Staff upper" oder geht dies nicht nach Reihenfolge?

Wie muss ich tun, damit es darüber geschrieben wird?

Viele Grüße,
Ingo
Titel: Re: Akkordnamen über Klavierstaff, nur wie?
Beitrag von: derHindemith am Sonntag, 4. Januar 2009, 17:39
Versuch's mal mit dem \harmonies ausserhalb vom GrandStaff
\version "2.11.65"

global = {
   \key c \major
   \time 3/4
}
upper = \relative c'' {
   c,4 g' g
}
lower = \relative c {
   \clef bass
   <c e g>2.
}
harmonies = \chords {
   \germanChords
   c2 c4
}

\score {
   <<
      \harmonies
      \new PianoStaff <<
         \context Staff = upper <<
            \global
            \context Voice = "singer1" \upper
         >>
         \context Staff = lower <<
            \global
            \lower
         >>
      >>
   >>
}
Titel: Re: Akkordnamen über Klavierstaff, nur wie?
Beitrag von: Inxman am Sonntag, 4. Januar 2009, 20:23
Ah gut, danke.

Jetzt ist nur noch mein Text in der Mitte weg. Wie krieg ich den hier wieder mit rein? ;-)
So wie es hatte mit new und \layout-Umgebung blicke ich nicht durch, wie ich dies in dein Beispiel
reinbekomme.

Ach so, noch eine Frage nebenbei: Wovon ist es abhängig, ob ein Phrasierungsbogen oben oder unterhalb des Systems angeordnet wird? Kann ich es auch erzwingen, das er nur oben angeordnet werden soll?

Gruß,
Ingo
Titel: Re: Akkordnamen über Klavierstaff, nur wie?
Beitrag von: derHindemith am Sonntag, 4. Januar 2009, 21:44
Ich hatte das Gefühl diese Frage kommt zunächst. Suche in den Schnipsel für "Piano template with centered lyrics"
Titel: Re: Akkordnamen über Klavierstaff, nur wie?
Beitrag von: derHindemith am Sonntag, 4. Januar 2009, 21:50
Und, zum Thema Phrasierungsbogen, \override PhrasingSlur #'direction kontrolliert sowas.
LM 4 spricht mehr über wie diese Sachen verändert werden können.
Titel: Re: Akkordnamen über Klavierstaff, nur wie?
Beitrag von: etilli33 am Dienstag, 6. Januar 2009, 19:10
Phrasierungsbögen: hier ist das relevante Kapitel: http://lilypond.org/doc/v2.12/Documentation/user/lilypond/Curves#Phrasing-slurs

es geht auch direkt mit Befehlen wie \PhrasingSlurUp usw.

Die Ausrichtung von Kontexten (also auch den Akkorden) kann mit alignAboveContext erreicht werden, siehe Beispiel:

global = {
   \key c \major
   \time 3/4
}
upper = \relative c'' {
   c,4 g' g
}
lower = \relative c {
   \clef bass
   <c e g>2.
}
harmonies = \chordmode {
   \germanChords
   c2 c4
}

\score {
   <<
      \new ChordNames
      \with {
      alignAboveContext = #"piano"
        }{
      \harmonies }
      \new PianoStaff = "piano" <<
         \context Staff = upper <<
            \global
            \context Voice = "singer1" \upper
         >>
         \context Staff = lower <<
            \global
            \lower
         >>
      >>
   >>
}

Ich habe das Beispiel von unten genommen und verändert: in der Variable harmonies habe ich \chords durch chordmode ersetzt und dann explizit weiter unten eine ChordNames erstellt, dem mit \with dieses Align über dem PIano-Kontext zugewiesen wird. Wichtig dabei, dass der Piano-Kontext einen Namen kriegt (hier piano), der dann in beiden Fällen verwendet wird.

Gruß
Till