Hi,
In order to make a new guitar barré function, I'm trying to merge the
attached markup-command with an event-function (without success - problem
is on line #90):
%%%%%%%%%%%%%%%%%
\version "2.18.2"
Prefix = \markup {
%% uncomment/comment these lines for C, C slashed, B or B slashed prefix :
\roman C
%\combine \roman C \translate #'(0.65 . -0.25) \override #'(thickness .
1.2) \draw-line #'(0 . 1.8)
%\roman B
%\combine \roman B \translate #'(0.65 . -0.25) \override #'(thickness .
1.2) \draw-line #'(0 . 1.8)
%%%%%%%%%%%%
\hspace #0.2
}
#(define-markup-command (prefix layout props string-qty) (integer?)
(interpret-markup layout props
(case string-qty
((2) #{
\markup {
\override #'(font-family . typewriter)
\concat {
\raise #.15
\fontsize #-6
{
\raise #.5 "1"
\hspace #-.2
\raise #.2 "/"
\hspace #-.2
"3"
}
\Prefix
}
}
#})
((3) #{
\markup {
\override #'(font-family . typewriter)
\concat {
\raise #.15
\fontsize #-6
{
\raise #.5 "1"
\hspace #-.2
\raise #.2 "/"
\hspace #-.2
"2"
}
\Prefix
}
}
#})
((4) #{
\markup {
\override #'(font-family . typewriter)
\concat {
\raise #.15
\fontsize #-6
{
\raise #.5 "2"
\hspace #-.2
\raise #.2 "/"
\hspace #-.2
"3"
}
\Prefix
}
}
#})
((5) #{
\markup {
\override #'(font-family . typewriter)
\concat {
\raise #.15
\fontsize #-6
{
\raise #.5 "5"
\hspace #-.2
\raise #.2 "/"
\hspace #-.2
"6"
}
\Prefix
}
}
#})
(else
#{ \markup\Prefix #}))))
startBarre =
#(define-event-function (parser location arg-string-qty fret-nbr) (integer?
markup?)
;; here's the problem ??
(define string-qty arg-string-qty)
;; hereunder should be fine:
(let* ((mrkp (markup #:upright #:concat (prefix fret-nbr))))
(let* ((mrkp (markup #:upright #:concat (#:lower 0.08 prefix #:lower
0.05 fret-nbr #:hspace 0.3))))
(define (width grob text-string)
(let* ((layout (ly:grob-layout grob))
(props (ly:grob-alist-chain
grob
(ly:output-def-lookup layout 'text-font-defaults))))
(interval-length
(ly:stencil-extent
(interpret-markup layout props (markup text-string))
X))))
#{
\tweak TextSpanner.after-line-breaking
#(lambda (grob)
(let* ((mrkp-width (width grob mrkp))
(line-thickness (ly:staff-symbol-line-thickness grob)))
(ly:grob-set-nested-property!
grob
'(bound-details left padding)
(+ (/ mrkp-width -4) (* line-thickness 2)))))
\tweak TextSpanner.font-size -2
\tweak TextSpanner.style #'line
\tweak TextSpanner.bound-details.left.text #mrkp
\tweak TextSpanner.bound-details.left.padding 0.25
\tweak TextSpanner.bound-details.left.attach-dir -1
\tweak TextSpanner.bound-details.left-broken.text ##f
\tweak TextSpanner.bound-details.left-broken.attach-dir -1
%% adjust the numeric values to fit your needs:
\tweak TextSpanner.bound-details.left-broken.padding 1.5
\tweak TextSpanner.bound-details.right-broken.padding 0
\tweak TextSpanner.bound-details.right.padding 0.25
\tweak TextSpanner.bound-details.right.attach-dir 2
\tweak TextSpanner.bound-details.right-broken.text ##f
\tweak TextSpanner.bound-details.right.text
\markup \draw-line #'(0 . -1)
\startTextSpan
#})))
stopBarre = \stopTextSpan
%% Syntax: note \startBarre #'string quantity' "text" notes \stopBarre
(text = any fret number)
%% Example:
{
\clef "G_8"
\key d\minor
<<
{ \voiceOne a'16[ \startBarre #3 "III" bes d' bes f'8] \stopBarre }
\\
{ \voiceTwo d2 }
>>
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Thanks in advance for any help!
Cheers,
Pierre
\version "2.18.2"
startBarre =
#(define-event-function (parser location fret-nbr) (markup?)
(let* ((mrkp (markup #:upright #:concat (#:lower 0.08 fret-nbr #:hspace 0.3))))
(define (width grob text-string)
(let* ((layout (ly:grob-layout grob))
(props (ly:grob-alist-chain
grob
(ly:output-def-lookup layout 'text-font-defaults))))
(interval-length
(ly:stencil-extent
(interpret-markup layout props (markup text-string))
X))))
#{
\tweak TextSpanner.after-line-breaking
#(lambda (grob)
(let* ((mrkp-width (width grob mrkp))
(line-thickness (ly:staff-symbol-line-thickness grob)))
(ly:grob-set-nested-property!
grob
'(bound-details left padding)
(+ (/ mrkp-width -4) (* line-thickness 2)))))
\tweak TextSpanner.font-size -2
\tweak TextSpanner.style #'line
\tweak TextSpanner.bound-details.left.text #mrkp
\tweak TextSpanner.bound-details.left.padding 0.25
\tweak TextSpanner.bound-details.left.attach-dir -1
\tweak TextSpanner.bound-details.left-broken.text ##f
\tweak TextSpanner.bound-details.left-broken.attach-dir -1
%% adjust the numeric values to fit your needs:
\tweak TextSpanner.bound-details.left-broken.padding 1.5
\tweak TextSpanner.bound-details.right-broken.padding 0
\tweak TextSpanner.bound-details.right.padding 0.25
\tweak TextSpanner.bound-details.right.attach-dir 2
\tweak TextSpanner.bound-details.right-broken.text ##f
\tweak TextSpanner.bound-details.right.text
\markup
\with-dimensions #'(0 . 0) #'(-.3 . 0)
\draw-line #'(0 . -1)
\startTextSpan
#}))
stopBarre = \stopTextSpan
%% Syntax: note \startBarre "text" notes \stopBarre (text = any fret number)
%% Example:
{
\clef "G_8"
\key d\minor
<<
{
\stemUp
a'16[ \startBarre "III" bes d' bes f'8] \stopBarre
}
\\
{
\stemDown d2
}
>>
}
\version "2.18.2"
Prefix = \markup {
%% uncomment/comment these lines for C, C slashed, B or B slashed prefix :
\roman C
%\combine \roman C \translate #'(0.65 . -0.25) \override #'(thickness . 1.2) \draw-line #'(0 . 1.8)
%\roman B
%\combine \roman B \translate #'(0.65 . -0.25) \override #'(thickness . 1.2) \draw-line #'(0 . 1.8)
%%%%%%%%%%%%
\hspace #0.2
}
#(define-markup-command (prefix layout props string-qty) (integer?)
(interpret-markup layout props
(case string-qty
((2) #{
\markup {
\override #'(font-family . typewriter)
\concat {
\raise #.15
\fontsize #-6
{
\raise #.5 "1"
\hspace #-.2
\raise #.2 "/"
\hspace #-.2
"3"
}
\Prefix
}
}
#})
((3) #{
\markup {
\override #'(font-family . typewriter)
\concat {
\raise #.15
\fontsize #-6
{
\raise #.5 "1"
\hspace #-.2
\raise #.2 "/"
\hspace #-.2
"2"
}
\Prefix
}
}
#})
((4) #{
\markup {
\override #'(font-family . typewriter)
\concat {
\raise #.15
\fontsize #-6
{
\raise #.5 "2"
\hspace #-.2
\raise #.2 "/"
\hspace #-.2
"3"
}
\Prefix
}
}
#})
((5) #{
\markup {
\override #'(font-family . typewriter)
\concat {
\raise #.15
\fontsize #-6
{
\raise #.5 "5"
\hspace #-.2
\raise #.2 "/"
\hspace #-.2
"6"
}
\Prefix
}
}
#})
(else
#{ \markup\Prefix #}))))
%% example:
\markup \prefix #3
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user