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

Reply via email to