lilypond-user
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]