Maurizio Monge <[EMAIL PROTECTED]> writes: > Thanx, i am now triying to write a macro to realize barre > comfortably. I also found the following code in an older > port, but i doesn't compile (2.5.20). What's wrong? > I really would like to end up with a function like: > \barre #"IV" { c d e } > or at least > \barre #"IV" c \startTextSpan d e \stopTextSpan > Any suggestion? > Thanks
The second one is the easier. The first thing to do, is to write in plain LilyPond what you want. For instance: { \once \override Voice . TextSpanner #'edge-text = #(cons "C IV" "") \once \override Voice . TextSpanner #'direction = #1 \once \override Voice . TextSpanner #'edge-height = #'(0 . 0.5) \once \override Voice . TextSpanner #'padding = #1 \once \override Voice . TextSpanner #'enclose-bounds = #1 } This gives you a pattern, and the little thing that will change from call to call is the: #(cons "C IV" "") property. You will define a music function that will generate the pattern, and compute appropriately the edge-text property: barre = #(def-music-function (parser location str) (string?) #{ \once \override Voice . TextSpanner #'edge-text = #$(cons (format "C ~a" str) "") \once \override Voice . TextSpanner #'direction = #1 \once \override Voice . TextSpanner #'edge-height = #'(0 . 0.5) \once \override Voice . TextSpanner #'padding = #1 \once \override Voice . TextSpanner #'enclose-bounds = #1 #}) { c'' \barre #"IV" a' \startTextSpan b' \stopTextSpan c'' } Note the `$'. We also could have written: \once \override Voice . TextSpanner #'edge-text = #(cons (format "C ~a" $str) "") or : \once \override Voice . TextSpanner #'edge-text = #(cons $(format "C ~a" str) "") See: 10.1.5 Using LilyPond syntax inside Scheme <http://lilypond.org/doc/v2.5/Documentation/user/out-www/lilypond/Using-LilyPond-syntax-inside-Scheme.html> nicolas _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user