Autor Thema: Akkordbezeichnungen mal oberhalb, mal unterhalb  (Gelesen 1886 mal)

Manuela

  • Member
Akkordbezeichnungen mal oberhalb, mal unterhalb
« am: Donnerstag, 5. Mai 2016, 22:18 »
Hi, ich hätte gerne die Akkordbezeichnungen oberhalb der Notenlinien bzw. würde ich gerne die Reihenfolge steuern.

Zufällig bin ich darauf gekommen, dass, wenn ich den Staff weglasse, plötzlich die Akkorde oberhalb stehen, wie gewünscht.

\version "2.19.2"

\header{
  title = "Blabla blabla"
  composer = "Text/Blabla blabla"
  subtitle = "Blabla blabla"
}

\language "deutsch"

\paper {
  #(set-paper-size "a4")
  annotate-spacing = ##f
  system-system-spacing.extra-distance = #0
  last-bottom-spacing.basic-distance = #10
  left-margin = #40
  system-system-spacing.basic-distance = #10
  system-system-spacing.basic-distance = #100
}

StropheI = \lyricmode {
  %\set stanza = "1:"
  bla bla bla
}

NurNoten=  {
  \set Score.barNumberVisibility = #(every-nth-bar-number-visible 1)
  \override Score.BarNumber.break-visibility = #end-of-line-invisible
  \mark \markup { \box \bold "Teil 1" }
  c c c c c c c c c c c c
}

Gesang = \relative c' {
  \clef "treble" \key c \major \time 4/4
  \set Timing.beamExceptions = #'()
  \set Timing.baseMoment = #(ly:make-moment 1/8)
  \set Staff.beatStructure = #'(2 2 2 2 )
  \set Staff.midiInstrument = #"acoustic grand"
  \autoBeamOff
  \tempo 4=120
  \set Score.markFormatter = #format-mark-box-alphabet
  \set midiInstrument = #"choir aahs"
  \override Score.BarNumber.break-visibility = #end-of-line-invisible
  \set Score.barNumberVisibility = #(every-nth-bar-number-visible 1)
  \mark \markup { \box "Einleitung" } r1 r1

  r1 r1
  \NurNoten
  \bar "||"
}

% hier kommen die Akkordbezeichnungen
AK = \chordmode {
  \set chordChanges = ##f
  c1 g c c c c c
}

Struktur= {
  s1*7 \break
}

\score
{
  \new Staff
  <<
    \context ChordNames \AK
    \context Voice = "upper" {
      \set Staff.instrumentName="Mit explizitem Staff"
      \Gesang
    }
    \context Lyrics \lyricsto "upper" { \StropheI }
    \context Voice \Struktur
  >>
}

\score
{
 
  <<
    \context ChordNames \AK
    \context Voice = "upper" {
      \set Staff.instrumentName="ohne explizitem Staff"
      \Gesang
    }
    \context Lyrics \lyricsto "upper" { \StropheI }
    \context Voice \Struktur
  >>
}

Wieso ist das so?

harm6

  • Member
Re: Akkordbezeichnungen mal oberhalb, mal unterhalb
« Antwort #1 am: Donnerstag, 5. Mai 2016, 23:20 »
Minimalbeispiel!! ;)

mus =
  <<
    \context ChordNames \chordmode { c1 g }
    \context Voice \repeat unfold 2 r1
  >>
#(begin) %% Füllsel, dem minimal-example geschuldet
\mus
 
\new Staff \mus

Im ersten Fall initiierst Du simultaneous-music, mittels <<>>.
Dann wird ein neuer Context kreiert, ChordNames.
Dann ein weiterer neuer Context, Voice, der allerdings nicht für sich alleine stehen kann, sondern defacto in einen Staff gepact wird. Also eigentlich: \new Staff \new Voice ...
LilyPond ordnet neue Contexte in immer unten an. Deshalb erscheinen die Akkorde oben, die Note unten.

Im zweiten Fall ist von vornherein ein Staff-context geschaffen worden. Der ChordNames-context wird danach neu initiiert, erscheint also unten,
Der Voice-context wirkt im bereits vorhandenen Staff, also erscheinen die Noten oben, die Akkorde unten.

Du willst vielleicht:

<<
  \new ChordNames ...
  \new Staff ...
  \new Lyrics ...
>>

Erschaffe keine Contexte innerhalb von anderen Contexten. Es sei denn es ist wirklich angebracht.

Ansonsten gibt es auch
alignAboveContext und alignBelowContext, such mal in der NR danach.

Gruß,
  Harm

Manuela

  • Member
Re: Akkordbezeichnungen mal oberhalb, mal unterhalb
« Antwort #2 am: Freitag, 6. Mai 2016, 10:07 »
Danke.

Das mit dem \context habe ich zufällig irgendwo in der Doku gefunden, ich dachte, daran liegt es.

Muss noch viel lernen  :-[

Update: Jetzt weiß ich auch wieder, warum ich das mit dem \context gemacht habe. Lily hat unerwünschte Staffs erzeugt (so patschert wie ich das angeordnet habe).
« Letzte Änderung: Freitag, 6. Mai 2016, 10:16 von Manuela »

harm6

  • Member
Re: Akkordbezeichnungen mal oberhalb, mal unterhalb
« Antwort #3 am: Freitag, 6. Mai 2016, 10:39 »
\new WhatEverContext
erzeugt immer einen neuen Context vom Typ `WhatEverContext'.

\context WhatEverContext
führt einen Context vom Typ `WhatEverContext' (und gleichen Namens) fort. Falls kein Context gleichen Typs und Namens bereits da ist, wird ein neuer Context angelegt.

Kommt drauf an was gerade gebraucht wird...


Gruß,
  Harm