ChordNames akzeptiert kein HorizontalBracket - warum?

Begonnen von Manuela, Freitag, 30. Dezember 2022, 15:22

« vorheriges - nächstes »

Manuela

Ich wollte die HorizontalBracket in einem ChordNames-Context anwenden, doch es erscheint keine Ausgabe.

Was mache ich falsch oder geht das prinzipiell nicht?

\version "2.23.6"

\layout {
  \context {
    \ChordNames
    \consists Horizontal_bracket_engraver
    \override HorizontalBracket.direction = #UP
    \override HorizontalBracket.bracket-flare = #'(0 . 0)
    \override HorizontalBracketText.text = \markup \italic "Intro"
  }
  \context {
    \Voice
    \consists Horizontal_bracket_engraver
    \override HorizontalBracket.direction = #UP
    \override HorizontalBracket.bracket-flare = #'(0 . 0)
    \override HorizontalBracketText.text = \markup \italic "Intro"
  }
}

%% hier erscheinen die Brackets
\chordmode {
  c2 c\startGroup
  c c c c \stopGroup
}

%% hier erscheinen keine Klammern
\new ChordNames { c2 c\startGroup
  c c c c \stopGroup }
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

Ich fürchte, HorizontalBracket hält sich an NoteColumns fest und ChordNames hat keine. Deshalb sehe ich keine einfache Möglichkeit, da etwas zu tun ...

Manuela

Danke Malte. Obwohl, die Akkordnamen ordnen sich auch den Notenwerten entsprechend an, sollten daher auch die NoteColumns kennen.

Der Hintergrund ist der, dass ich über den Noten noch einen ChordNames-Context stehen habe, der sich arg weit nach oben verschiebt, wenn ein HorizontalBracket eingefügt wird. Daher wollte ich die HorizontalBracket gleich in die ChordNames verschieben.

Inzwischen habe ich einen Workaround ausgearbeitet. Die komplette Funktion schaut jetzt so aus

%% Zusatztext und extra-offset sind optional
%% wenn extra-offset angegeben wird, muss auch ein Zusatztext vorhanden sein, "" genügt

mybrack =
#(define-music-function (t n m) ((string? #f) (number? 3.5) ly:music?)
   #{
     {
       \once \override HorizontalBracket.Y-extent = #'(0 . 0)
       \once \override HorizontalBracketText.Y-extent = #'(0 . 0)
       \once \override HorizontalBracket.extra-offset = #`(0 . ,n)
       \once \override HorizontalBracketText.extra-offset = #`(0 . ,n)
       \once \override HorizontalBracketText.text =
       \markup \italic { "Intro" #(or t "") }
       <>\startGroup
       $m
       \stopGroup
     }
   #})

Verbesserungsvorschläge willkommen  :)
Danke für eure Hilfe
viele Grüße
-- Manuela

Malte

Zitat von: Manuela am Samstag, 31. Dezember 2022, 07:48Verbesserungsvorschläge willkommen  :)
Hast du ein Minimalbeispiel mit Anwendung? Ich vermeide extra-offset wo es geht, habe aber gerade keinen Anwendungsfall, an dem ich herumprobieren könnte ;)

Manuela

Bitte sehr

\version "2.23.5"

\layout {
  \context {
    \Voice
    \consists Horizontal_bracket_engraver
    \override HorizontalBracket.direction = #UP
    \override HorizontalBracket.bracket-flare = #'(0 . 0)
    \override HorizontalBracketText.text = \markup \italic "Intro"
  }
}


%% Zusatztext und extra-offset sind optional
%% wenn extra-offset angegeben wird, muss auch ein Zusatztext vorhanden sein, "" genügt

mybrack =
#(define-music-function (t n m) ((string? #f) (number? 3.5) ly:music?)
   #{
     {
       \once \override HorizontalBracket.Y-extent = #'(0 . 0)
       \once \override HorizontalBracketText.Y-extent = #'(0 . 0)
       \once \override HorizontalBracket.extra-offset = #`(0 . ,n)
       \once \override HorizontalBracketText.extra-offset = #`(0 . ,n)
       \once \override HorizontalBracketText.text =
       \markup \italic { "Intro" #(or t "") }
       <>\startGroup
       $m
       \stopGroup
     }
   #})

<<
  \new ChordNames { c4 c c c c c c c }
  \new Staff \relative { c''4 c \mybrack { c c c c } c c }
>>

<<
  \new ChordNames { c4 c c c c c c c }
  \new Staff \relative { c''4 c \mybrack "" 5 { c c c c } c c }
>>
Danke für eure Hilfe
viele Grüße
-- Manuela