Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Manuela am Freitag, 30. Dezember 2022, 15:22

Titel: ChordNames akzeptiert kein HorizontalBracket - warum?
Beitrag von: Manuela am Freitag, 30. Dezember 2022, 15:22
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 }
Titel: Antw:ChordNames akzeptiert kein HorizontalBracket - warum?
Beitrag von: Malte am Samstag, 31. Dezember 2022, 07:35
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 ...
Titel: Antw:ChordNames akzeptiert kein HorizontalBracket - warum?
Beitrag von: Manuela am Samstag, 31. Dezember 2022, 07:48
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  :)
Titel: Antw:ChordNames akzeptiert kein HorizontalBracket - warum?
Beitrag von: Malte am Samstag, 31. Dezember 2022, 16:22
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 ;)
Titel: Antw:ChordNames akzeptiert kein HorizontalBracket - warum?
Beitrag von: Manuela am Samstag, 31. Dezember 2022, 19:42
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 }
>>