Akkorde und Melodie in einer Variable: Akkorde oben? [GELÖST]

Begonnen von ingmar, Freitag, 28. August 2020, 18:24

« vorheriges - nächstes »

ingmar

Liebe Freunde,

ich habe je eine Variable mit Melodie, Akkorden und zweiter Stimme.

Nun kombiniere ich Melodie und Akkorde so, dass die Akkorde oben stehen. Das funktioniert auch (erster Score).

Dann nutze ich die Melodie innerhalb einer Partitur; ich füge die zweite Stimme hinzu. Schwupps, stehen die Akkorde unterhalb der Melodie! Das möchte ich aber nicht. Was kann ich tun?

Danke für Eure Hilfe!
--ingmar

\version "2.20.0"
mel = \relative { c'2 e f4 a g f e2 g4 c d1 }
akk = \chords { c1 f c g2 d:m }
zweite = \relative { c'1 a c g2 f }

beides = << \akk \mel >>

\score { \beides }

  \score { \new StaffGroup <<
\new Staff {
\beides }
\new Staff {
\zweite }
         >>
}

Malte

Vermutung: Du hast hier den ChordNames-Kontext (erzeugt durch \chords) und den Staff-Kontext (implizit erzeugt bei der Definition von ,,beides") in einen weiteren Staff-Kontext geschachtelt. Lösung: in der Partitur keinen expliziten zweiten Staff-Kontext anlegen und gegebenenfalls, nämlich falls du einen expliziten Staff haben willst, den schon in der Definition von ,,mel" oder ,,beides" anlegen:

mel = \new Staff \relative { ... }
% ODER
beides = << \akk \new Staff \mel >>

ingmar

Danke!

Ich denke, ich weiß, was zu tun ist.

Gruß,
--ingmar

Manuela

#3
Wenn du alle Contexte explizit angibst, dann kannst du die Chordnames nach Belieben anordnen.

\version "2.20.0"
\language "deutsch"

mel = \relative { c''4 \repeat unfold 15 c }
akk = \chords { c1 q q q }
zweite = \relative { c'4 \repeat unfold 15 c }

\score {
  \new StaffGroup
  <<
    \new ChordNames \akk
    \new Staff
    <<
      \new Voice { \voiceOne \mel }
      \new Voice { \voiceTwo \zweite }
    >>
    \new Staff \zweite
  >>
}

\score {
  \new StaffGroup
  <<
    \new Staff
    <<
      \new Voice { \voiceOne \mel }
      \new Voice { \voiceTwo \zweite }
    >>
    \new ChordNames \akk
    \new Staff \zweite
  >>
}

\score {
  \new StaffGroup
  <<
    \new Staff
    <<
      \new Voice { \voiceOne \mel }
      \new Voice { \voiceTwo \zweite }
    >>
    \new Staff \zweite
    \new ChordNames \akk
  >>
}


Update: du kannst mit alignAboveContext bzw. alignBelowContext die ChordNames zusätzlich nach Bedarf verschieben.

\score {
  \new StaffGroup
  <<
    \new Staff = "1"
    <<
      \new Voice { \voiceOne \mel }
      \new Voice { \voiceTwo \zweite }
    >>
    \new Staff { \zweite }
    \new ChordNames
    {
      \set alignAboveContext = #"1"
      \chordmode { c1 q q q }
    }
  >>
}


Funktioniert allerdings nur mit \chordmode, nicht mit \chords
Danke für eure Hilfe
viele Grüße
-- Manuela