lilypond-user
[Top][All Lists]
Advanced

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

Re: missing glissando features (bugs?)


From: Marc Hohl
Subject: Re: missing glissando features (bugs?)
Date: Fri, 15 May 2009 09:47:56 +0200
User-agent: Thunderbird 2.0.0.21 (X11/20090318)

Neil Puttock schrieb:
2009/5/14 Marc Hohl <address@hidden>:
Neil Puttock schrieb:

This will apply an extra-dy of 1 for glissandos which aren't on the
same staff-position.


No, it doesn't; at least in my test files. I have attached an example where
the
default and the corrected behaviour are compared, please have a look at it.

They're not the same, but the difference is subtle because there's
only a small change in slope between the default setting (0.75) and
the override (1).
Ok, I changed the values to 0.75 resp. -0.75.
Try adding the following to your TabStaff score after the \clef
command; it will show the difference more clearly:

\override Glissando #'extra-dy = #0
I still don't get it - when I use extra-dy = 0, I get glissando lines parallel to the staff lines, so a value of zero can't be right. I have attached the pdf output, the upmost tab lie is the standard behaviour, the middle line is extra-dy = 0, and the lowest line is the one with my
calculated value for extra-dy.

As I can see, a value of 0 is definitely wrong here, so it seems that a normal score and a tab score
handle extra-dy differently.

Marc
Regards,
Neil


Attachment: glissandotest.pdf
Description: Adobe PDF document

\version "2.12.2"

\paper {
   indent = 0
   ragged-right = ##f
}


#(define (glissando::calc-extra-dy grob)
   (let* ((original (ly:grob-original grob))
          (left-bound (ly:spanner-bound original LEFT))
          (right-bound (ly:spanner-bound original RIGHT))
          (left-pitch (ly:event-property (event-cause left-bound) 'pitch))
          (right-pitch (ly:event-property (event-cause right-bound) 'pitch)))

     (if (and (= (ly:pitch-octave left-pitch) (ly:pitch-octave right-pitch))
              (= (ly:pitch-notename left-pitch) (ly:pitch-notename 
right-pitch)))
         (- (ly:pitch-alteration right-pitch) (ly:pitch-alteration left-pitch))
         0 )))

#(define (glissando::calc-tab-extra-dy grob)
   (let* ((original (ly:grob-original grob))
          (left-bound (ly:spanner-bound original LEFT))
          (right-bound (ly:spanner-bound original RIGHT))
          (left-pitch (ly:event-property (event-cause left-bound) 'pitch))
          (right-pitch (ly:event-property (event-cause right-bound) 'pitch))
          (left-staff-position (ly:grob-property left-bound 'staff-position))
          (right-staff-position (ly:grob-property right-bound 'staff-position)))

     (if (and (= left-staff-position right-staff-position)
              (< (ly:pitch-semitones right-pitch) (ly:pitch-semitones 
left-pitch)))
         -0.75
          0.75  )))

noten = \relative c {
   c4 \glissando cis
   c4 \glissando cis
   c4 \glissando ces
   c4 \glissando ces
   c4 \glissando d \glissando e \glissando f
}

tabs = \relative c {
   \set TabStaff.minimumFret = #2
   c4 \glissando cis \glissando c2
   c4 \glissando ces \glissando c2
   c4 \glissando c \glissando c2
   c4 \glissando d \glissando c2
   c4 \glissando d \glissando c2
   c'4 \glissando d \glissando e, \glissando f 
   \bar "|."
}

\score {
    \new Staff { \clef "G_8"
                 \noten \break
                 \override Glissando #'extra-dy = #glissando::calc-extra-dy
                 \noten }
}

\score { <<
    \new TabStaff { \clef "tab" \tabs }
    \new TabStaff { \clef "tab" 
                    \override Glissando #'extra-dy = #0
                    \tabs }
    \new TabStaff { \clef "tab"
                    \override Glissando #'extra-dy = 
#glissando::calc-tab-extra-dy
                    \tabs }
    >>
}


reply via email to

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