lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Aligning custom-dynamic-scripts using dynamic-string?


From: harm6
Subject: Re: Aligning custom-dynamic-scripts using dynamic-string?
Date: Sat, 9 Jul 2011 16:26:13 -0700 (PDT)

Oops, forgot the "?" in 

#(define-markup-command (dynamicStringRight layout props dyn)(string?)     
       ...

Now it compiles as expected !

Cheers,
  Harm


harm6 wrote:
> 
> 
> 
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> Code:
> 
> \version "2.14.1"
> 
> #(define-public (char-punctuation? ch)
>  (char-set-contains? char-set:punctuation ch))
> 
> #(define-public char-set:dynamics
>  (char-set #\f #\m #\p #\r #\s #\z)) 
> 
> #(define-markup-command (dynamic-string layout props str) (string?)
>   (let ((composite-chars (char-set-union
>                           char-set:dynamics
>                           char-set:whitespace
>                           char-set:punctuation))
>         (split (lambda (s) (string-index s #\_ )))
>         (str-list '())
>         (dyn-markup (lambda (s)       
>                       (make-whiteout-markup   
>                         (make-dynamic-markup s))))
>         (text-markup (lambda (s)
>                        (make-whiteout-markup
>                          (make-normal-text-markup
>                            (make-italic-markup s))))))
>     (do ((current-str (string-append str "_")))
>         ((not (split current-str)))
>       (begin
>         (set! str-list
>               (append str-list (list
>                                 (string-take current-str (split
> current-str)))))
>         (set! current-str
>               (string-drop current-str (+ (split current-str) 1)))))
>     (interpret-markup layout props
>                       (make-line-markup 
>                        (map (lambda (word)
>                               (if (string-every composite-chars word)
>                                   (if (string-every char-set:dynamics
> word)
>                                       (dyn-markup word)
>                                       (let ((word-lst (string->list
> word)))
>                                         (make-concat-markup
>                                          (map (lambda (ch)
>                                                 (let ((print-ch (string
> ch)))
>                                                   (if (char-punctuation?
> ch)
>                                                       (text-markup
> print-ch)
>                                                       (dyn-markup
> print-ch))))
>                                               word-lst))))
>                                   (text-markup word)))
>                             str-list)))))
>                             
> #(define-markup-command (dynamicStringRight layout props dyn)(string?)    
> ;;<-- !!!
> (let* (
>          (composite-chars (char-set-union
>                             char-set:dynamics
>                             char-set:whitespace
>                             char-set:punctuation))
>                             
>          (markUp (markup #:dynamic-string dyn))
>          (textStencil (interpret-markup layout props markUp))
>          (textExt (ly:stencil-extent textStencil X))
>          (textLength (interval-length textExt))
>          
>          (str-list (string-split dyn #\_))
>          (lastPos (car (last-pair str-list)))
>          
>          (mrkp (if (string-every char-set:dynamics lastPos)
>               (markup #:dynamic-string lastPos)
>               (markup #:normal-text #:italic lastPos)))
>               
>          (text-Stencil (interpret-markup layout props mrkp))
>          (text-Ext (ly:stencil-extent text-Stencil X))
>          (text-Length (interval-length text-Ext))
> 
>          (alignX (* -1 (- textLength (/ text-Length 2))))
>      )
>    (ly:stencil-translate-axis textStencil alignX X )
> ))
> 
> #(define (makeNewDynamicScriptLeft text)
>    (make-music 'AbsoluteDynamicEvent
>        'tweaks
>            (list (cons 'X-offset -1.5))
>        'text 
>         (markup #:dynamic-string text)))
> 
> mpquasimf = #(makeNewDynamicScriptLeft "mp,_quasi_mf_ma più dolce,
> attacca_ffff")
> 
> #(define (makeNewDynamicScriptRight dyn)
>         (make-music 'AbsoluteDynamicEvent
>        'tweaks
>            (list (cons 'X-offset 0))
>        'text 
>         (markup #:dynamicStringRight dyn)))
>  
> attFFFF = #(makeNewDynamicScriptRight "mp,_quasi_mf_ma più dolce,
> attacca_ffff")
> 
> %-------------------------- Test
> -----------------------------------------------
> 
> \relative c' {
>               a'1 bes-\markup { \dynamicStringRight #"mp,_quasi_mf_ma più
> dolce, attacca_ffff" }
>         \break
>               a bes\mpquasimf
>         \break
>               a bes\attFFFF
> }
> 




-- 
View this message in context: 
http://old.nabble.com/Aligning-custom-dynamic-scripts-using-dynamic-string--tp31983828p32029701.html
Sent from the Gnu - Lilypond - User mailing list archive at Nabble.com.




reply via email to

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