[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Upline articulation
From: |
Thomas Morley |
Subject: |
Re: Upline articulation |
Date: |
Sun, 1 Apr 2018 20:54:39 +0200 |
2018-04-01 18:11 GMT+02:00 Malte Meyn <address@hidden>:
>
>
> Am 01.04.2018 um 17:00 schrieb Andrew Bernard:
>>
>> I cannot recall where I obtained this code from. But I want to have the
>> line thicker. I don't know how to modify this. Grepping the lilypond
>> installation I am unable to find the function make-draw-line-markup. Where
>> does that come from? Can I use another function that takes a thickness as an
>> additional parameter?
>
>
> The function make-draw-line-markup is the markup command draw-line
If I understand correctly, that's not entirely correct.
In general, a markup-command is done by the macro `define-markup-command'.
We get two procedures from it, in this case: `draw-line-markup' and
`make-draw-line-markup'.
See:
#(format #t "\ndraw-line-markup:\n~y"
draw-line-markup)
#(format #t "\nmake-draw-line-markup:\n~y"
make-draw-line-markup)
As you can see from the displayed results `draw-line-markup' needs
three arguments. Two of them are the default `layout' and `props'
`make-draw-line-markup' only one. The default ones are already done.
That's the reason why we can do
$(make-draw-line-markup '(0 . 1)) without anything else.
Using `draw-line-markup' would need to have those defaults arguments supplied.
In ly-syntax this automatically happens while doing
\markup \draw-line ...
But it's possible to use 'draw-line-markup' directly:
{
\override Beam.stencil =
#(draw-line-markup
$defaultpaper
(list (ly:output-def-lookup $defaultpaper 'text-font-defaults))
'(1 . 1))
c'8[]
}
A little strange and inconvenient, but possible...
So I think it's important to know that while using
`make-draw-line-markup' we use a procedure.
Whereas $(markup #:draw-line '(0 . 1)) will be transformed.
Makes a difference for some involved scheme-coding...
That said, for the most use-cases below is fine and doable:
> that can
> be used as
> #(make-draw-line-markup '(0 . 1))
> or
> \markup \draw-line #'(0 . 1)
> or
> #(markup #:draw-line '(0 . 1)
> Same for all other markup commands.
>
> So you can just replace the line
> (make-draw-line-markup '(0 . 1)))
> in your original code by
> (make-override-markup '(thickness . 3)
> (make-draw-line-markup '(0 . 1)))))
> or by
> (markup #:override '(thickness . 3)
> #:draw-line '(0 . 1))))
> or by
> #{ \markup \override #'(thickness . 3)
> \draw-line #'(0 . 1) #}))
Cheers,
Harm
P.S. I hope I made myself clear, not that easy for me to explain
complex stuff as a non-native speaker.