Allgemein > Fragen zu Funktionen

Lyrics: Strophen-Nummern in jeder Notenzeile

<< < (2/3) > >>

ding-dong:
sehr schön -danke!

nur eine kleine frage: der deutsche text ist in der 4. strophe auf die zweite kolonne umgebrochen, das sieht meiner ansicht nach etwas seltsam aus; es ist doch genug platz da, um links 4 strophen, rechts 3 hinzuschreiben, oder? vielleicht auch in der anordnung:

1 - 2
3 - 4
5 - 6
  7

weiterhin alles gute!

RobUr:
Hi Radler,

coole Sache! Richtig nutzen würde mir der Quelltext, dann könnte ich ein Beispiel nach meinem Geschmack fertigstellen :)

Die einzig denkbare Strophenanordnung ist eigentlich immer: von links oben abwärts bis zur Hälfte und dann rechts oben fortsetzen (Zeitungsspaltenlayout). Im vorliegenden Falle (mit ungerader Strophenanzahl) hieße das:

1.    4.
2.    5.
3.    6.
   7.

Ein Umbruch innerhalb der Strophe wäre lediglich durch arge Platzknappheit gerechtfertigt. Ich sehe zu, so etwas zu vermeiden.

Grüße, Robert

complanar:
Das ist alles ganz schön, soweit war ich auch schon mal.

Die Sache hat nur einen Schönheitsfehler: Die shortVocalNames werden im Unterschied zu normalen stanzaNumbers an einem festen Punkt ausgerichtet und kümmern sich kein bisschen um die Breite der Wörter vor denen sie gerade stehen.

Das kann leicht dazu führen, dass sie sich mit dem Text in die Quere kommen. Bei mir tritt das Problem fast immer auf. Und jede Zeile einen neuen X-offset zuzuweisen ist am ende auch nicht besser als neue stanzaNumbers einzufügen.

Außerdem: Wenn man einen ChoirStaff verwendet, evtl. wenig bis keine Vorzeichen hat und gerade eine lange Silbe am Zeilenanfang steht, dann ist zwischen StaffBrace und Textsilbe kaum Platz für die Strophennummer.

Und wenn es mal nicht zu Kollisionen kommt, dann hat man zumindest nicht gerade schöne Ungleichheiten bei den Abständen. (s. Anhang)



Wahrscheinlich hilft da nur ein Einklinken in den Lilypond-Code und ein entsprechendes Abändern bzw. Duplizieren und modifizieren des Codes für die shortVocalNames. Oder man sucht sich einen Hook im automatischen Zeilenumbruch und hakt dort ein. Das übersteigt aber meine Kenntnisse. Vielleicht weiß harm6 weiter, der/die ist doch Profi für solche Fälle … (Weiß jemand ob harm6 männlich oder weiblich ist?)

Holger

Joei:
Moinsen,

gibt's hier eigentlich was Neues? Ich finde die Lösung mit den ShortInstrument Names nur bedingt hübsch...

Joei

harm6:

--- Zitat von: Joei ---gibt's hier eigentlich was Neues? Ich finde die Lösung mit den ShortInstrument Names nur bedingt hübsch...

--- Ende Zitat ---

Ich hatte mal folgendes gemacht (png im Anhang)

--- Code: ---\version "2.19.44"

%% REMARK:
%% Using instrument-names _and_ setting an invisible stanza with a certain
%% extent at line-begin to avoid collisions

%% Thanks to David Nalesnik
%% http://lists.gnu.org/archive/html/lilypond-user/2016-07/msg00028.html

#(define create-stanza-number-grob-engraver
;; puts out a StanzaNumber for every LyricText-grob
  (lambda (context)
    (let ((stanza (ly:context-property context 'stanza)))
      `((acknowledgers
          (lyric-syllable-interface .
            ,(lambda (engraver grob source-engraver)
              (let ((new-stanza-grob
                      (ly:engraver-make-grob engraver 'StanzaNumber '())))
              (ly:grob-set-property! new-stanza-grob 'text stanza)))))))))

#(define (at-line-beginning? grob)
   (let* ((col (ly:item-get-column grob))
          (ln (ly:grob-object col 'left-neighbor))
          (col-to-check (if (ly:grob? ln) ln col)))
     (and (eq? #t (ly:grob-property col-to-check 'non-musical))
          (= 1 (ly:item-break-dir col-to-check)))))

#(define (keep-at-line-begin grob)
   (if (and (ly:item? grob) (not (at-line-beginning? grob)))
       (ly:grob-suicide! grob)
       grob))

keepLineStartStanzaNumbers =
\layout {
  \context {
  \Lyrics
  \override StanzaNumber.after-line-breaking =
    #keep-at-line-begin
  }
}

numberLyrics =
#(define-scheme-function (instr-name move)(number? number?)
"Return a context-modification setting @code{stanza} and consisting
@code{create-stanza-number-grob-engraver}, as well as @code{instrumentName} and
@code{shortInstrumentName}.
The latter prints the numbering using @var{instr-name}, the first is used to
push the lyrics to the right, using @var{move}.
"
#{
  \with {
    %stanza = \markup \italic #(format #f "~a." nmbr)
    stanza = \markup \combine \null \translate #(cons move  0) \null
    \consists #create-stanza-number-grob-engraver
instrumentName = #(format #f "~a." instr-name)
shortInstrumentName = #(format #f "~a." instr-name)
  }
#})

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXAMPLE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\score {
  <<
    \new Staff { \key cis \major \repeat unfold 6 {  c''4 d'' e'' } }
    \new Lyrics
      \with {
        \numberLyrics 1 3.5
  }
      \lyricmode {
        \repeat unfold 6 {  foo -- bar -- buzz }
      }
     
    \new Lyrics 
      \with {
        \numberLyrics 2 3.5
  }
      \lyricmode {
        \repeat unfold 6 {  very-very-long-syllable bur -- buuuzz }
      }
     
    \new Lyrics 
      \with {
        \numberLyrics 3 3.5
  }
      \lyricmode {
        \repeat unfold 6 {  fuu -- bla -- blibbb }
      }
  >>
  \layout {
    \keepLineStartStanzaNumbers
    \context {
      \Lyrics
      \override InstrumentName.X-offset = 2
    }
  }
}

--- Ende Code ---

Gruß,
  Harm


--- Zitat von: complanar ---(Weiß jemand ob harm6 männlich oder weiblich ist?)

--- Ende Zitat ---
Das hatte ich noch gar nicht gesehen, und lass es unbeantwortet rofl

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln