Autor Thema: InstrumentName bei Chor  (Gelesen 6571 mal)

LaLuneNoir

  • Member
InstrumentName bei Chor
« am: Dienstag, 4. Oktober 2011, 14:28 »
Hallo!

Ich habe ein Problem bei der Verbindung von InstrumentName und ChoirStaff. Ich schreibe gerade ein Stück für achtstimmigen Chor SSAATTBB. Dabei ist vor dem gesamten System eine normale eckige Klammer und die Stimmen, die einer Stimmlage angehören sind durch ein SystemStartSquare miteinander verbunden. Zusätzlich hätte ich gerne vor dem ersten System folgende Instrumenten-Namen:

I
Sopran
II

I
Alt
II

I
Tenor
II

I
Bass
II

Also I/II jeweils als Staff.InstrumentName und Sopran/Alt/Tenor/Bass als ChoirStaff.InstrumentName. Lilypond ist nun aber der Meinung, dass zur Höhe eines Systems auch dessen Lyrics gehören, was im Grunde ja gut ist – denn sonst würden die Lyrics ja in das nächste System rutschen –, was aber ziemlich dämlich ist, wenn es InstrumentName zwischen den beiden Systemen zentrieren soll. Dann hängt der Name nämlich viel zu tief wie in meinem Beispiel.

\score {
\new ChoirStaff <<
\new ChoirStaff <<
\set ChoirStaff.systemStartDelimiter = #'SystemStartSquare
\new Staff <<
\new Voice = "SopranEins"
{ a a a a }
>>
\new Lyrics = "SopranEinsText"
\context Lyrics = SopranEinsText \lyricsto SopranEins \lyricmode { a a a a }

\new Staff <<
\new Voice = "SopranZwei"
{ a a a a }
>>
\context Lyrics = SopranZweiText \lyricsto SopranZwei \lyricmode { a a a a }

\set ChoirStaff.instrumentName = #"test"
>>
>>
}

Irgendwelche Ideen, wie ich den Namen zentriert kriege?

ding-dong

  • Member
Re: InstrumentName bei Chor
« Antwort #1 am: Dienstag, 4. Oktober 2011, 15:53 »
ich vertehe nicht was du meinst - welche version? oder ein bild?

LaLuneNoir

  • Member
Re: InstrumentName bei Chor
« Antwort #2 am: Dienstag, 4. Oktober 2011, 16:07 »
Hallo ding-dong,

ich arbeite mit Version 2.14.2. Im Snippet hängt das Wort "test" viel zu tief und ist nicht zwischen den Systemen zentriert.


ding-dong

  • Member
Re: InstrumentName bei Chor
« Antwort #3 am: Dienstag, 4. Oktober 2011, 16:49 »
hallo Schwarzer Mond!

hier mein code (nur leichte vereinfachung/restrukturierung):
\new ChoirStaff <<
  \new ChoirStaff <<
    \set ChoirStaff.systemStartDelimiter = #'SystemStartSquare
    \new Staff \with {instrumentName = "I" } <<
      \new Voice = "SopranEins" { a a a a }
      \new Lyrics = "SopranEinsText" \lyricsto SopranEins \lyricmode { a a a a }
    >>
    \new Staff \with {instrumentName = "II"} <<
      \new Voice = "SopranZwei" { a a a a }
      \new Lyrics = "SopranZweiText" \lyricsto SopranZwei \lyricmode { a a a a }
    >>
    \set ChoirStaff.instrumentName = "Sopran"
  >>
>>
und was dabei herauskommt (version 2.15.13):

ding-dong

  • Member
Re: InstrumentName bei Chor
« Antwort #4 am: Dienstag, 4. Oktober 2011, 16:51 »
ich hab's noch rasch mit 2.14.2 getestet - und es kommt so schief heraus wie bei dir!!!

LaLuneNoir

  • Member
Re: InstrumentName bei Chor
« Antwort #5 am: Dienstag, 4. Oktober 2011, 16:59 »
Hm, das schreit nach einem Update. Geht wohl schneller als sich mit dem Problem selber rumzuschlagen. Vielen Dank für den Hinweis

ding-dong

  • Member
Re: InstrumentName bei Chor
« Antwort #6 am: Dienstag, 4. Oktober 2011, 17:03 »
genau 8)

LaLuneNoir

  • Member
Re: InstrumentName bei Chor
« Antwort #7 am: Dienstag, 4. Oktober 2011, 17:21 »
Dabei hatte ich mich doch damit angefreundet, auf die nächste stabile Version zu warten. Na gut, dann halt wieder dauer-updaten…  :o

ding-dong

  • Member
Re: InstrumentName bei Chor
« Antwort #8 am: Dienstag, 4. Oktober 2011, 18:01 »
der sollte bald herauskommen - allerdings wird immer wieder was verschoben...

LaLuneNoir

  • Member
Re: InstrumentName bei Chor
« Antwort #9 am: Dienstag, 4. Oktober 2011, 18:41 »
Eben… bis 2.14. rauskam hat ja auch ewig gedauert. Naja, mal sehen, bis dahin wird halt munter geupdated.

ding-dong

  • Member
Re: InstrumentName bei Chor
« Antwort #10 am: Dienstag, 4. Oktober 2011, 18:42 »
übrigens gibt es ein kleines - freies - tool, das hilft den path sauber zu halen (für windows): System Path Commander. lilypond fügt ja jedesmal den pfad nochmals hinzu…

LaLuneNoir

  • Member
Re: InstrumentName bei Chor
« Antwort #11 am: Dienstag, 4. Oktober 2011, 18:57 »
Vielen Dank für die Info, ich bin aber Mac-User und mache das von Hand (das geht bei einem Mac ja immer schön schnell). Die letzte Version behalte ich aber immer als Backup (vor allem, falls ich vergesse, meine selbstgebaute paper.scm mal zu sichern vor dem löschen)…

ding-dong

  • Member
Re: InstrumentName bei Chor
« Antwort #12 am: Dienstag, 4. Oktober 2011, 23:16 »
hab ich früher auch immer von hand gemacht - sorry dass ich für mac nichts bieten kann :-[

harm6

  • Member
Re: InstrumentName bei Chor
« Antwort #13 am: Mittwoch, 5. Oktober 2011, 00:08 »
Hallo Jonas,
Vielen Dank für die Info, ich bin aber Mac-User und mache das von Hand (das geht bei einem Mac ja immer schön schnell). Die letzte Version behalte ich aber immer als Backup (vor allem, falls ich vergesse, meine selbstgebaute paper.scm mal zu sichern vor dem löschen)…

da könnte Dich dies hier interessieren:

https://liarchiv.joonet.de/index.php?topic=924.msg5421#msg5421

Mit dieser Methode ist kein Eingriff in paper.scm nötig und es ist auch update-sicher.

Gruß,
  Harm



RobUr

  • Member
Re: InstrumentName bei Chor
« Antwort #14 am: Mittwoch, 5. Oktober 2011, 17:23 »
Hallo Jonas,

Zitat von: LaLuneNoir
Lilypond ist nun aber der Meinung, dass zur Höhe eines Systems auch dessen Lyrics gehören, was im Grunde ja gut ist – denn sonst würden die Lyrics ja in das nächste System rutschen –, was aber ziemlich dämlich ist, wenn es InstrumentName zwischen den beiden Systemen zentrieren soll.
Ja, das ist wirklich dämlich und ärgert auch mich  >:(

Die schnellste und unkomplizierteste Abhilfe ist die manuelle Positionierung – muss man ja nur einmal für das allererste System machen. Ich löse das seit v2.14 in einer Spalte mit zusätzlichem \vspace. Ein guter Startwert ist #2 – den kann man dann kommastellenweise anpassen, um eine annähernde Zentrierung hinzukriegen (siehe Snippet). Hilfreich dabei ist eine vorübergehende Abänderung des systemStartDelimiter in SystemStartBrace, da sieht man gut die vertikale Mitte.

Grundsätzlich ist der Instrument_name_engraver seit v2.14 von vornherein Bestandteil des ChoirStaff-Contexts (man muss ihn also nicht mehr explizit hinzufügen), aber dass zumindest die unterste Lyrics-Zeile für die Berechnung der (vertikal zentrierten) Position der ChoirStaff-Bezeichnung außen vor gelassen werden muss, ist den Entwicklern wohl entwischt. Ich habe auch noch nicht nachgeforscht, ob das Problem bereits gemeldet wurde.

Programmtechnisch hatte ich gehofft, einen Ansatz in Harms Thread zu Wie liest man die aktuelle Höhe einer StaffGroup aus? zu finden (also Systemhöhe auslesen, halbieren und instrumentName dorthin schieben), aber so richtig weit bin ich mit der Anwendung der Ausleseprozedur auch noch nicht gekommen ???

Kosmetiktechnisch bevorzuge ich die gewohnten SystemStartBrackets (für „ChoirStaves in ChoirStaff“), die etwas näher an die eigentliche, große Systemklammer gerückt sind – aber darüber könnte man sich streiten. Mein Template ist nur eines von vielen:
\version "2.14.2"

Global = {
\key d \minor
s1*4
\break
s1*4
\bar "|."
}

Noten = \relative c' { \repeat unfold 8 { a4 a a a } }
Text = \lyricmode { a a a a }

\score {
\context ChoirStaff = "Tutti"
<<
\context ChoirStaff = "Sopran" \with {
instrumentName = \markup \column { "Sopran" \vspace #2 }
\override SystemStartBracket #'padding = #0.4
%systemStartDelimiter = #'SystemStartBrace
}
<<
\context Staff = "SopranI" \with {
instrumentName = #"I"
shortInstrumentName = #"S.I"
}
<<
\context Voice = "SopranI" {
<< \Global \Noten >>
}
\context Lyrics = "SopranIText" \lyricsto "SopranI" \Text
>>

\context Staff = "SopranII" \with {
instrumentName = #"II"
shortInstrumentName = #"S.II"
}
<<
\context Voice = "SopranII" {
<< \Global \Noten >>
}
\context Lyrics = "SopranIIText" \lyricsto "SopranII" \Text
>>
>>

\context ChoirStaff = "Alt" \with {
instrumentName = \markup \column { "Alt" \vspace #2 }
\override SystemStartBracket #'padding = #0.4
%systemStartDelimiter = #'SystemStartBrace
}
<<
\context Staff = "AltI" \with {
instrumentName = #"I"
shortInstrumentName = #"A.I"
}
<<
\context Voice = "AltI" {
<< \Global \Noten >>
}
\context Lyrics = "AltIText" \lyricsto "AltI" \Text
>>

\context Staff = "AltII" \with {
instrumentName = #"II"
shortInstrumentName = #"A.II"
}
<<
\context Voice = "AltII" {
<< \Global \Noten >>
}
\context Lyrics = "AltIIText" \lyricsto "AltII" \Text
>>
>>

\context ChoirStaff = "Tenor" \with {
instrumentName = \markup \column { "Tenor" \vspace #2 }
\override SystemStartBracket #'padding = #0.4
%systemStartDelimiter = #'SystemStartBrace
}
<<
\context Staff = "TenorI" \with {
instrumentName = #"I"
shortInstrumentName = #"T.I"
}
<<
\context Voice = "TenorI" {
\clef "treble_8"
<< \Global \Noten >>
}
\context Lyrics = "TenorIText" \lyricsto "TenorI" \Text
>>

\context Staff = "TenorII" \with {
instrumentName = #"II"
shortInstrumentName = #"T.II"
}
<<
\context Voice = "TenorII" {
\clef "treble_8"
<< \Global \Noten >>
}
\context Lyrics = "TenorIIText" \lyricsto "TenorII" \Text
>>
>>

\context ChoirStaff = "Bass" \with {
instrumentName = \markup \column { "Baß" \vspace #2 }
\override SystemStartBracket #'padding = #0.4
%systemStartDelimiter = #'SystemStartBrace
}
<<
\context Staff = "BassI" \with {
instrumentName = #"I"
shortInstrumentName = #"B.I"
}
<<
\context Voice = "BassI" {
\clef "bass"
<< \Global \Noten >>
}
\context Lyrics = "BassIText" \lyricsto "BassI" \Text
>>

\context Staff = "BassII" \with {
instrumentName = #"II"
shortInstrumentName = #"B.II"
}
<<
\context Voice = "BassII" {
\clef "bass"
<< \Global \Noten >>
}
\context Lyrics = "BassIIText" \lyricsto "BassII" \Text
>>
>>
>>

\layout {
indent = #20
short-indent = #10
\context {
\Score
\override InstrumentName #'font-series = #'bold
\override BarNumber #'font-series = #'bold
\override BarNumber #'font-shape = #'italic
\override BarNumber #'font-size = #0.5
\override BarNumber #'padding = #2
}
}
}

Grüße, Robert