[Gelöst] Ausrichtung "ShortInstrumentName"

Begonnen von Joei, Mittwoch, 12. September 2018, 10:54

« vorheriges - nächstes »

Joei

Moin,

kann ich die die Ausrichtung des shortInstrumentNames unabhängig vom instrumentName modifizieren?

\override shortInstrumentName #'self-alignment-X = #-0.1

funktioniert jedenfalls nicht...

Ver. 2.19.32

Joei


Malte

Beide Kontexteigenschaften, instrumentName und shortInstrumentName, sorgen dafür, daß ein Grob namens InstrumentName erzeugt wird. Auf das mußt du deinen \override anwenden.

Joei

aber wenn ich das Grob InstrumentName modifiziere - dann werden doch sowohl der short- als auch der "long"instrumentName verändert - die Frage war ja, ob ich das unabhängig von einander machen kann... oder verstehe ich jetzt was falsch?

Joei

zum Hintergrund meiner Frage (falls es - wie es aussieht - mit meiner angedachten Option nicht funktioniert...):

Ich habe eine Partitur mit 2 Chören und Orchester. Auf Seite 1 sollen die "Langnamen" (auch der einzelnen Chorstimmen) inkl. einer um 90° gedrehten ChoirStaff Benamumg erfolgen, später nur noch ShortNames. Außer auf der ersten Seite hätte ich aber gerne lediglich die beiden Chorgruppen benannt (ohne Einzelstimmen) - allerdings erfolgt die Beschriftung des ChoirStaffs logischerweise nach links versetzt - ich hätte die aber gerne Vertikal ausgerichtet mit den übrigen Einzelstimmen.

Keine Ahnung, ob das jetzt verständlich war :(

V1
V2

Cl1
Cl2

C
H
O
R
1 (aber 90°gedreht)

C
H
O
R
2 (aber 90°gedreht)

BC


so ungefähr..

Malte

Zitat von: Joei am Mittwoch, 12. September 2018, 14:22
aber wenn ich das Grob InstrumentName modifiziere - dann werden doch sowohl der short- als auch der "long"instrumentName verändert - die Frage war ja, ob ich das unabhängig von einander machen kann... oder verstehe ich jetzt was falsch?
Ich hatte ganz einfach das entscheidende Wort ,,unabhängig" überlesen ;)

Hm ... eigentlich komisch, daß LilyPond nicht selbst den Namen für den Chor weiter nach links rückt ... Und dann ist auch dein Anliegen eine sehr gute Frage. Es scheint ja nicht mal ein einfaches \once \override tatsächlich nur einmaligen Effekt zu haben.
Ich habe jetzt leider keine Zeit, mich tiefer in das Problem zu vergraben, vielleicht hat ja jemand anders eine Idee ...

harm6

Wie Malte schon sagte:
"Beide Kontexteigenschaften, instrumentName und shortInstrumentName, sorgen dafür, daß ein Grob namens InstrumentName erzeugt wird."

Betonung sollte auf ein grob liegen, zumindest ist es nur eines bevor der Zeilenumbruch ins Spiel kommt. Dieses InstrumentName-grob ist ein spanner! In der Regel ein also gebrochener spanner. Was gedruckt wird wird durch die grob-properties 'text und 'long-text bestimmt. diese werden ihrerseits idR durch die oben erwähnten context-properties gesetzt.

Um die einzelnen Teile dieses spanners gesondert anzusprechen muß man diese Teile finden, sortieren und die richtigen ansprechen.
Siehe auch:
http://lilypond.org/doc/v2.19/Documentation/extending-big-page#difficult-tweaks

Zitat von: JoeiKeine Ahnung, ob das jetzt verständlich war
Nein!
Warum kein code example?

Da ich zu blöd bin zu verstehen, was Du willst, hier der obige Ansatz mit Farben:


\version "2.19.82"

foo =
\override InstrumentName.color =
#(lambda (grob)
  (let* ((orig (ly:grob-original grob))
         (siblings (if (ly:grob? orig)
                       (ly:spanner-broken-into orig) '() ))
         ;; überflüssig! nur der Vollständigkeit halber:
         (long-text (ly:grob-property grob 'long-text #f))
         (text (ly:grob-property grob 'text #f)))
         
    (if (and text (pair? siblings) (member grob (cdr siblings)))
        red)))
       
\new Staff
\with {
  instrumentName = "Full Name"
  shortInstrumentName = "short"
  \foo
}
\repeat unfold 100 r2


-Harm



Malte

Zitat von: harm6 am Mittwoch, 12. September 2018, 22:05
Betonung sollte auf ein grob liegen, zumindest ist es nur eines bevor der Zeilenumbruch ins Spiel kommt.
Das erklärt natürlich, warum \once \override sich trotzdem auf alle Teile bezieht. Da hätte ich mal drauf kommen sollen.

Joei

Lieber Harm,

ich dachte ja, meine Idee der getrennten Behandlung von long- und shortname wäre machbar, dann wäre
das Beispiel eher verkomplizierend gewesen.

Ich muss gestehen, dass mir das Hintergrundwissen fehlt um Deinen Code soweit zu analysieren,
dass ich verstehe, wass Du da gemacht hast :(

Hier also ein Beispiel und das was ich erreichen möchte:

\version "2.19.58"


einzel = \new Staff
\with {
  instrumentName = "LongEinzel"
  shortInstrumentName = "A"
}
\repeat unfold 50 r1

gruppe = \new StaffGroup
\with {
  instrumentName = \markup \rotate #90 "Chor II_l"
  shortInstrumentName = \markup \rotate #90 "Chor II_s"
}

<<
  \new Staff
  \with {
    instrumentName = "long"
    shortInstrumentName = " "
  }
  \relative { \repeat unfold 50 r1 }
  \new Staff   \with {
    instrumentName = "long"
    shortInstrumentName = " "
  }
  \relative {\repeat unfold 50 r1 }
>>

\score {

  <<
    \einzel
    \gruppe
  >>

  \layout {
    indent = 2.5\cm
    short-indent = 2\cm


    \context {
      \Staff
       \override InstrumentName #'self-alignment-X = #0.5
   
    }

    \context {
      \StaffGroup
     \override InstrumentName #'self-alignment-X = #-0.5
     }
  }
}



Im ersten System schiebe ich den langen InstrumentName der Gruppe mit \override InstrumentName #'self-alignment-X = #-0.5 nach links, so kollidiert er nicht mit den Staffnamen, die ich im ersten System auch noch haben möchte. Später möchte ich dort nur noch den Gruppennamen, allerdings in einer Flucht mit den Staffnamen der "nicht-Gruppen-Staffs". Dafür hätte ich den Inhalt von InstrumentName und ShortInstrumentName gleich gelassen und für den StaffGroup-Context den einen verschoben, den anderen nicht.



Ich weiß, immernoch kompliziert - aber ich bin zu blöd das schlichter zu formulieren :(

Joei

Joei

Lösung:

  shortInstrumentName = \markup \combine " " \translate #'(2.2 . 0) \rotate #90  "Chor II"