Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: Manuela am Montag, 26. Dezember 2016, 11:51

Titel: Gepunktete Taktstriche mit Öhrchen
Beitrag von: Manuela am Montag, 26. Dezember 2016, 11:51
Es ist nur ein wenig Kosmetik, ich hätte es trotzdem gerne  ;)

Ich bräuchte Taktstriche, die die gleichen (oder ähnliche) Öhrchen wie die Wiederholungszeichen aufweisen:

\bar "[|:"
allerdings gepunktet, ohne Wiederholungspunkte und mit feinerer Punktierung als die Standard-gepunkteten Taktstriche, die ich so erzeuge:

\bar ";"
Im LSR bin ich nicht fündig geworden, zumindest fand ich nichts, das ich hätte für meine Bedürfnisse adaptieren können (mit meinem derzeitigen Kenntnisstand)
Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: harm6 am Dienstag, 27. Dezember 2016, 13:56
Neue Taktstriche können selbst definiert werden -> NR 1.2.5 Bars

Allerdings ist nicht klar was Du meinst.
\bar "[|:" liefert einen dicken und einen dünnen senkrechten Strich. Welcher soll gepunktet sein?

Falls nur der dünne, dann vielleicht:

\version "2.18.2"

#(define-bar-line "[;" ";" "[;" ";")
#(define-bar-line ";]" ";]" #f ";")


{
  s1
  \bar "[;" 
  s
  \bar ";]"
 
  s1
  \override Staff.BarLine.font-size = #-5
  \bar "[;" 
  s
  \bar ";]"
}

Allerdings werden die brackettips (Öhrchen) ebenfalls von dem font-size-override beeinflußt.

Oder soll nur die dicke Linie gepunktetet werden?
Dann bräuchtest Du zuerst eine neue printing-procedure dafür.
Genauso falls beide Linien gepunktet werden sollen. Ebenso falls die font-size bei brackettips und dots verschieden wirken soll.

Ist alles machbar...

Gruß,
  Harm
Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: Manuela am Dienstag, 27. Dezember 2016, 14:09

Oder soll nur die dicke Linie gepunktetet werden?
Dann bräuchtest Du zuerst eine neue printing-procedure dafür.


Danke Harm für die Hinweise.

Der Taktstrich soll nur aus einer (fein) gepunkteten Linie bestehen, an der die Öhrchen sitzen.
Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: harm6 am Dienstag, 27. Dezember 2016, 21:06
#(define ((make-slim-dotted-bar-line val) grob extent)
  "Draw a dotted bar line."
  (let* ((position (round (* (interval-end extent) 2)))
         (correction (if (even? position) 0.5 0.0))
         (dot
           (ly:stencil-scale
             (ly:font-get-glyph (ly:grob-default-font grob) "dots.dot")
             val val))
         (i (round (+ (interval-start extent)
                      (- 0.5 correction))))
         (e (round (+ (interval-end extent)
                      (- 0.5 correction))))
         (counting (interval-length (cons i e)))
         (stil-list (map
                     (lambda (x)
                       (ly:stencil-translate-axis
                        dot (+ x correction) Y))
                     (iota counting i 1))))

    (define (add-stencils! stil l)
      (if (null? l)
          stil
          (if (null? (cdr l))
              (ly:stencil-add stil (car l))
              (add-stencils! (ly:stencil-add stil (car l)) (cdr l)))))

    (add-stencils! empty-stencil stil-list)))

#(define ((make-bracket-dashed-bar-line val dir) grob extent)
  "Draw a bracket-style bar line. If @var{dir} is set to @code{LEFT}, the
opening bracket will be drawn, for @code{RIGHT} we get the closing bracket."
  (let* ((thick-stil ((make-slim-dotted-bar-line val) grob extent))
         (brackettips-up (ly:font-get-glyph (ly:grob-default-font grob)
                                            "brackettips.up"))
         (brackettips-down (ly:font-get-glyph (ly:grob-default-font grob)
                                              "brackettips.down"))
         ;; the x-extent of the brackettips must not be taken into account
         ;; for bar line constructs like "[|:", so we set new bounds:
         (tip-up-stil (ly:make-stencil (ly:stencil-expr brackettips-up)
                                       (cons 0 0)
                                       (ly:stencil-extent brackettips-up Y)))
         (tip-down-stil (ly:make-stencil (ly:stencil-expr brackettips-down)
                                         (cons 0 0)
                                         (ly:stencil-extent brackettips-down Y)))
         (stencil (ly:stencil-add
                   thick-stil
                   (ly:stencil-translate-axis tip-up-stil
                                              (+ (interval-end extent) 0.2)
                                              Y)
                   (ly:stencil-translate-axis tip-down-stil
                                              (- (interval-start extent) 0.2)
                                              Y))))
    (if (eq? dir LEFT)
        stencil
        (ly:stencil-scale stencil -1 1))))
       
#(add-bar-glyph-print-procedure "s" (make-slim-dotted-bar-line 0.5))
#(add-bar-glyph-print-procedure "l" (make-bracket-dashed-bar-line 0.5 LEFT))
#(add-bar-glyph-print-procedure "r" (make-bracket-dashed-bar-line 0.5 RIGHT))

#(define-bar-line "s" "s" #f "s")
#(define-bar-line "l" "s" "l" "s")
#(define-bar-line "r" "r" #f "s")

\new Staff
{
  s1 \bar "l" s1 \bar "l" \break s1 \break
  s1 \bar "r" s1 \bar "r" \break s1
}

Das meiste ist einfach aus bar-line.scm kopiert ;)
Falls Du die Stärke der Punkte noch anpassen willst so verändere den rot markierten Wert in:
Zitat
#(add-bar-glyph-print-procedure "s" (make-slim-dotted-bar-line 0.5))
#(add-bar-glyph-print-procedure "l" (make-bracket-dashed-bar-line 0.5 LEFT))
#(add-bar-glyph-print-procedure "r" (make-bracket-dashed-bar-line 0.5 RIGHT))

png im Anhang

HTH,
  Harm
Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: Manuela am Dienstag, 27. Dezember 2016, 21:22
Danke Harm  :)

Ich traue mich jetzt kaum mehr zu fragen: wie mache ich die Öhrchen ebenfalls gepunktet, und wie verringere ich den Abstand zwischen den Punkten, sodass die Punkte dichter sitzen?
Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: harm6 am Dienstag, 27. Dezember 2016, 22:51
make-slim-dotted-bar-line sowie make-dotted-bar-line (das Original) sind so gemacht, daß jeweils ein Punkt pro staff-space erscheint (zumindest für den default-staff-space.
Ich schau morgen mal danach.
Aber wie ein "gepunktetes" Öhrchen auch nur aussehen könnte weiß ich nicht ...

Gruß,
  Harm
Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: Manuela am Mittwoch, 28. Dezember 2016, 06:27

Aber wie ein "gepunktetes" Öhrchen auch nur aussehen könnte weiß ich nicht ...


Naja, die Striche halt nicht durchgezogen sondern gepunktet ...  :)
Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: harm6 am Mittwoch, 28. Dezember 2016, 11:39
Hm, das "Öhrchen" ist ein glyph aus der feta-font:
Als reines markup:

\markup \fontsize #15 \musicglyph #"brackettips.up"

Wie da was gepunktet erscheinen soll erschließt sich mir nicht.
Hast Du ein Bild?

Gruß,
  Harm
Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: Manuela am Mittwoch, 28. Dezember 2016, 12:14
\markup \fontsize #15 \musicglyph #"brackettips.up"

Wie da was gepunktet erscheinen soll erschließt sich mir nicht.


Dann ist das wohl nicht so möglich, wie ich es mir vorgestellt habe.

Ein Screenshot der Vorlage:

Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: trulli am Mittwoch, 28. Dezember 2016, 14:07
Hallo,
jetzt verstehe ich auch, was du willst.  ;)

Lösungen sind möglich über verbundene Arpeggios:
http://lsr.di.unimi.it/LSR/Item?id=466
http://lsr.di.unimi.it/LSR/Item?id=957

Oder du zeichnest mit postscript eine Klammer ein:
\version "2.18.0"

global = {
  \key bes \major
  \override Staff.TimeSignature.stencil = ##f
  \time 3/4
}


right = \relative c'' {
  \global
   \once \override NoteSpacing.X-extent = #'(0 . 20)
   c'8 b,\rest
   
   c'_\markup {
     \postscript #"0.3 setlinewidth
1 setlinecap [0 0.4]
3 setdash

-1 7 moveto
0.6 8.5 lineto

-1 7 moveto
-1 -9 lineto

-1 -9 moveto
0.6 -10.5 lineto
stroke" }
   
   a f <fis-3>
 
}

left = \relative c {
  \global
  < f c' es>4 d\rest   d\rest
}

\score {
  \new PianoStaff
   <<
    \new Staff = "right"  \right
    \new Staff = "left" { \clef bass \left }
  >>
 
}

Dann kannst du auch deine Öhrchen selbst bestimmen. :)

LG
Titel: Re: Gepunktete Taktstriche mit Öhrchen
Beitrag von: Manuela am Donnerstag, 29. Dezember 2016, 21:14
Danke, das schaut perfekt aus!  :) :) :)