[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Scheme question
From: |
Muzhic |
Subject: |
Re: Scheme question |
Date: |
Wed, 26 Dec 2018 17:44:33 +0100 |
Thanks a lot, Harm, and a happy musical year to everybody!
Envoyé de mon iPhone
> Le 26 déc. 2018 à 00:13, Thomas Morley <address@hidden> a écrit :
>
>> Am Di., 25. Dez. 2018 um 21:19 Uhr schrieb Jacques Menu <address@hidden>:
>>
>> Hello folks,
>>
>> I don’t succeed in using ‘#:concat’ to compute the second argument to
>> ‘#(:note’ in the following Scheme code, where HERE occurs.
>>
>> What should I use instead? The aim is to use half the value of ‘den’ instead
>> of 4 in the previous line.
>>
>> Thanks for your help!
>>
>> JM
>>
>> --
>>
>>
>> #(define-public (format-time-sig-dotted-note-horizontally grob)
>> (let* ((frac (ly:grob-property grob 'fraction))
>> (num (if (pair? frac) (car frac) 4))
>> (den (if (pair? frac) (cdr frac) 4))
>> (m (markup #:override '(baseline-skip . 0.5)
>> #:line (#:number (number->string (/ num 3))
>> #'"/"
>> #:override '(style . default)
>> #:raise 0.6 (#:note (number->string den) UP)
>>
>> #:raise 0.6 (#:note #'"4." UP)
>> #:raise 0.6 (#:note (#:concat #'"4" #'".")
>> UP) ;; HERE
>> )
>> )
>> )
>> )
>> (grob-interpret-markup grob m)))
>>
>> Starting lilypond 2.19.82 [NotesInTimeSignatureExample.ly]...
>> Processing
>> `/Users/menu/Documents/LaTeX/PartitionsLilypond/NotesInTimeSignatureExample.ly'
>> Parsing...
>> Interpreting music...[8]
>> Preprocessing graphical
>> objects.../Applications/LilyPond.app/Contents/Resources/share/lilypond/current/scm/markup-macros.scm:368:18:
>> In procedure car in expression (car expr):
>> /Applications/LilyPond.app/Contents/Resources/share/lilypond/current/scm/markup-macros.scm:368:18:
>> Wrong type (expecting pair): "4"
>> Exited with return code 1.
>
> Hi,
>
> in scheme-syntax don't prepend strings with a #-sign:
> $(markup (#:note "4." UP))
>
> concat-markup expects a markup-list, thus place parens correctly:
> $(markup (#:concat ("4" ".")))
>
> Though, note-markup expects a string (in 2.19.82), thus below does not
> work, but the error-message is helpful:
> $(markup (#:note (#:concat ("4" ".")) UP))
> ->
> fatal error: make-note-markup: Invalid argument in position 1.
> Expect: string, found: (#<procedure concat-markup (layout props args)>
> ((#<procedure simple-markup (layout props str)> "4") (#<procedure
> simple-markup (layout props str)> "."))).
>
> You need to create a simple string, here some methods:
> $(markup (#:note (string-concatenate '("4" ".")) UP))
> $(markup (#:note (string-append "4" ".") UP))
> $(markup (#:note (format #f "~a~a" "4" ".") UP))
> $(markup (#:note (format #f "~a." "4") UP))
> $(markup (#:note (format #f "~a." 4) UP))
>
>
> HTH,
> Harm