Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet 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)
-
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
-
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.
-
#(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:
#(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
-
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?
-
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
-
Aber wie ein "gepunktetes" Öhrchen auch nur aussehen könnte weiß ich nicht ...
Naja, die Striche halt nicht durchgezogen sondern gepunktet ... :)
-
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
-
\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:
-
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
-
Danke, das schaut perfekt aus! :) :) :)