[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Define Music Function
From: |
David Kastrup |
Subject: |
Re: Define Music Function |
Date: |
Tue, 30 Aug 2011 17:33:08 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
address@hidden writes:
> Hello Everyone,
>
> I have been experimenting with music functions in Lilypond and defining
> new grobs/glyphs etc. I am wondering if someone can help me with this
> problem I am having. What I would like to create is a rest that looks like
> a big number that takes up the whole staff and then a fraction with a
> diagonal line separating the numerator and denominator directly next to
> it. So imagine a big "3 1/2" on the staff. Here is what I have for just
> creating the single big number:
>
> numberRest = #(define-music-function (parser location string)
> (string-or-symbol?)
> #{
> \once \override Staff.Rest #'font-size = #6
> \once \override Staff.Rest #'Y-offset = #-2
> \once \override Staff.Rest #'stencil = #ly:text-interface::print
> \once \override Staff.Rest #'text = #(markup #:musicglyph $string)
> \once \override Dots #'transparent = ##t
> #}
> )
>
> I can use that by doing the following code
>
> \numberRest #"three" r2.
>
> That works, and I am trying to adapt it for multiple variables and not
> having much luck, any suggestions?
>
> fractionRest = #(define-music-function (parser location num denom)
> (string-or-symbol? string-or-symbol?)
> #{
> \once \override Staff.Rest #'font-size = #3
> \once \override Staff.Rest #'stencil = #ly:text-interface::print
> \once \override Staff.Rest #'text = #(markup #:musicglyph $num)
> \once \override Dots #'transparent = ##t
> \once \override Staff.Rest #'font-size = #3
> \once \override Staff.Rest #'stencil = #ly:text-interface::print
> \once \override Staff.Rest #'text = #(markup #:musicglyph $denom)
> \once \override Dots #'transparent = ##t
> #}
> )
Uh, the latter \once \override override the former ones. Try to make a
single #'text markup that includes both $num and $denom in an
appropriate construct.
If you don't like fiddling with the markup macro, you can instead use a
construct like
numberRest = #(define-music-function (parser location string)
(string-or-symbol?)
#{
\once \override Staff.Rest #'font-size = #6
\once \override Staff.Rest #'Y-offset = #-2
\once \override Staff.Rest #'stencil = #ly:text-interface::print
\once \override Staff.Rest #'text = \markup {\musicglyph #$string }
\once \override Dots #'transparent = ##t
#}
)
--
David Kastrup