[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Scheme problem?
From: |
takumi ikeda |
Subject: |
Re: Scheme problem? |
Date: |
Mon, 16 Feb 2015 21:56:24 +0900 |
I wrote this finally. Thank you for suggestion.
T
\version "2.18.2"
tremps = #"
1.5 setlinewidth
0.08 0.08 scale
-10 7 moveto
-5 3 5 3 10 7 curveto
-10 -7 lineto
-5 -3 5 -3 10 -7 curveto
stroke
"
#(define (z-trem grob)
(let* (
(gstem (ly:grob-parent grob X))
(gnotehead (ly:grob-property gstem 'cause))
(dur (ly:grob-property gnotehead 'duration-log))
(dir (ly:grob-property grob 'direction))
;;offset value
(ofs (if (= 1 dir) -1 1))
(ofs (if (= 0 dur) 0 ofs))
)
(display ofs)
(newline)
(grob-interpret-markup grob
(markup (
#:translate (cons 0 ofs)
#:postscript tremps
))
)
))
\score {
\transpose c c' {
\override Flag #'stencil = #modern-straight-flag
\override Stem #'length = #10
\override StemTremolo #'stencil = #z-trem
c1:64 c8: c4: c16: c4: c8: c16: c8:
\transpose c c' {
c1:64 c8: c4: c16: c4: c8: c16: c8:
\transpose c c' {
c1:64 c8: c4: c16: c4: c8: c16: c8:
}
}
}
}
2015-02-13 6:58 GMT+09:00 Simon Albrecht <address@hidden>:
> Am 12.02.2015 um 17:00 schrieb takumi ikeda:
>>
>> Hi Kevin,
>> Thank you for your reply. But the part of "(if (= UP dir) -0.5 0.5)"
>> seems to not working...
>>
>> BTW, How can I learn the syntax like "(ly:duration-log
>> (ly:music-property music 'duration))"? I found the documentation
>> lilypond.org/doc/v2.19/Documentation/internals/scheme-functions but it
>> says only "Function: ly:duration-log dur". Is "dur" an data type?
>> Where is the reference of "dur"?
>
> "dur" serves as a placeholder for an argument. You should find it again in
> the explanatory text on the function, which is sometimes very short. In
> fact, the argument referenced here as "dur" is of type ly:duration? - that's
> the data type. Durations may be created through the scheme function
> ly:make-duration.
>
> HTH, Simon
>
>>
>> 2015-02-12 22:13 GMT+09:00 Kevin Barry <address@hidden>:
>>>
>>> Hi Takumi,
>>>
>>> Is this what you want?
>>>
>>> \version "2.18.2"
>>>
>>> tremps = #"
>>> 2 setlinewidth
>>> 0.07 0.07 scale
>>> -10 7 moveto
>>> -5 3 5 3 10 7 curveto
>>> -10 -7 lineto
>>> -5 -3 5 -3 10 -7 curveto
>>> stroke
>>> "
>>>
>>> z-trem =
>>> #(define-music-function (parser location music) (ly:music?)
>>> #{
>>> \override StemTremolo.stencil =
>>> #(lambda (grob)
>>> (let* (
>>> (dur-log (ly:duration-log (ly:music-property music
>>> 'duration)))
>>> (dir (ly:grob-property grob 'direction))
>>> )
>>> (grob-interpret-markup grob
>>> (markup
>>> (
>>> #:translate (cons 0 (if (= 0 dur-log)
>>> 0
>>> (if (= UP dir) -0.5 0.5)))
>>> #:postscript tremps
>>> )
>>> )
>>> )
>>> )
>>> )
>>> $music
>>> #}
>>> )
>>>
>>>
>>> \new Staff {
>>> \z-trem
>>> c'1:32 c''8: f'16: g': c''8: c'4: c''16:
>>> }
>>>
>>> On Thu, Feb 12, 2015 at 12:44 PM, takumi ikeda <address@hidden> wrote:
>>>>
>>>> Hello all,
>>>>
>>>> I am trying the following code but I got "Wrong type: ()" error.
>>>> I would like to avoid translating tremolos when the note is whole note.
>>>> Writing Scheme is quite difficult for me. Any help would be appreciated.
>>>>
>>>> Takumi
>>>>
>>>> \version "2.18.2"
>>>>
>>>> tremps = #"
>>>> 2 setlinewidth
>>>> 0.07 0.07 scale
>>>> -10 7 moveto
>>>> -5 3 5 3 10 7 curveto
>>>> -10 -7 lineto
>>>> -5 -3 5 -3 10 -7 curveto
>>>> stroke
>>>> "
>>>>
>>>> z-trem =
>>>> #(define-music-function (parser location music) (ly:music?)
>>>> #{
>>>> \override StemTremolo.stencil =
>>>> #(lambda (grob)
>>>> (let* (
>>>> (dur-log (ly:grob-property grob 'duration-log))
>>>> (dir (ly:grob-property grob 'direction))
>>>> )
>>>> (grob-interpret-markup grob
>>>> (markup
>>>> (
>>>> #:translate (cons 0 (if (= 0 dur-log) 0
>>>> (if (= UP dir) -0.5 0.5)))
>>>> #:postscript tremps
>>>> )
>>>> )
>>>> )
>>>> )
>>>> )
>>>> $music
>>>> #}
>>>> )
>>>>
>>>>
>>>> \new Staff {
>>>> \z-trem
>>>> c'1:32 c''8: f'16: g': c''8: c'4: c''16:
>>>> }
>>>>
>>>> _______________________________________________
>>>> lilypond-user mailing list
>>>> address@hidden
>>>> https://lists.gnu.org/mailman/listinfo/lilypond-user
>>>
>>>
>> _______________________________________________
>> lilypond-user mailing list
>> address@hidden
>> https://lists.gnu.org/mailman/listinfo/lilypond-user
>
>