Allgemein > Fragen zu Funktionen
Gepunktete Taktstriche mit Öhrchen
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:
--- Code: ---\bar "[|:"
--- Ende Code ---
allerdings gepunktet, ohne Wiederholungspunkte und mit feinerer Punktierung als die Standard-gepunkteten Taktstriche, die ich so erzeuge:
--- Code: ---\bar ";"
--- Ende Code ---
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:
--- Code: ---\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 ";]"
}
--- Ende Code ---
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.
--- Ende Zitat ---
Danke Harm für die Hinweise.
Der Taktstrich soll nur aus einer (fein) gepunkteten Linie bestehen, an der die Öhrchen sitzen.
harm6:
--- Code: ---#(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
}
--- Ende Code ---
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))
--- Ende Zitat ---
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?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln