• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Gepunktete Taktstriche mit Öhrchen

Begonnen von Manuela, Montag, 26. Dezember 2016, 11:51

Vorheriges Thema - Nächstes Thema

Manuela

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)

harm6

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

Manuela

Zitat von: harm6 am Dienstag, 27. Dezember 2016, 13:56

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.

harm6


#(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

Manuela

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?

harm6

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

Manuela

Zitat von: harm6 am Dienstag, 27. Dezember 2016, 22:51

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


Naja, die Striche halt nicht durchgezogen sondern gepunktet ...  :)

harm6

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

Manuela

Zitat von: harm6 am Mittwoch, 28. Dezember 2016, 11:39
\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:


trulli

#9
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

Manuela