lilypond-user
[Top][All Lists]
Advanced

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

Re: tablature.ly


From: Carl D. Sorensen
Subject: Re: tablature.ly
Date: Mon, 27 Apr 2009 05:45:20 -0600



On 4/27/09 3:38 AM, "Marc Hohl" <address@hidden> wrote:

> Neil Puttock schrieb:
>> 2009/4/25 Marc Hohl <address@hidden>:
>>  

>>>           (font-size (- (* num-strings 1.5) 7))
>>>           (base-skip (cond ((= 4 num-strings) 1.55)
>>>                            ((= 5 num-strings) 1.84)
>>>                            ((= 6 num-strings)  2.00)
>>>                            ((= 7 num-strings) 2.08)))
>>>    
>> 
>> Can you rework these so they're not hard-coded?
>>  
> That's a bigger problem: first, I used a definition as shown in the LSR
> and played a bit with the
> values for base-skip, font-size and raise. Here is my first attempt:
> 
> tabClefIV = \markup {
>   \raise #0.7 {
>     \override #'(font-family . sans)
>     \bold\fontsize #-1.0
>     \override #'(baseline-skip . 1.44)
>     \column { "T" "A" "B" }
>   }
> }
> 
> I found out that the base-line for 4 ... 7 strings follows a quadratic
> equation:
> base-skip = ( 0.2 * num-strings + 0.4 )**2
> but inserting this into the definition of customTabClef didn't work, and
> neither
> Carl nor I could nail down the problem, so finally, I hard-coded the values.
> 
> If you can help me with that, it would be great.


Marc, did you get the email from Robin Bannister?  He found the problem we
were having with customTabClef.  I had you put the baseline-skip override as
a cons to  the property list, instead of using it as an :override function,
and the :fontsize reset the baseline-skip.  That's why things weren't
working right.  I think the code below works with your original quadratic:

#(define-markup-command (customTabClef layout props) ()
   (define (square x) (* x x))
   (let* ((num-strings (length (chain-assoc-get 'stringTunings props '())))
          (raise-value (- (* num-strings 0.4) 0.9))
          (base-skip (square (+ (* num-strings 0.2) 0.4)))
          (font-size (- (* num-strings 1.5) 7)))
    (interpret-markup layout props
     (markup #:raise raise-value #:bold
             #:override #'(font-family . sans)
             #:fontsize font-size
             #:override #(cons 'baseline-skip base-skip)
             #:column ("T" "A" "B")))))


>> Imagine a user doesn't like the default staff-space setting for
>> TabStaff (1.5).  If they change it, none of these empirical values
>> will work properly.
>> 

Here Neil points out the thing he's most concerned about.  It's not a
concern about the magic numbers per se, it's that they don't change with
staff-spacing.  In my earlier email (let me know if you didn't get it), I
asked for his help with that problem.

>> On a general note, I'd prefer to keep the string tunings separate from
>> setting the clef.  To set the traditional tab clef, we have the
>> command \clef tab, so it would be nice to be able to set the modern
>> style using e.g. \clef moderntab without having to use a new function.
>>  

> Yes, that would be better, but I didn't manage to get the information about
> the number of strings internally, so I used the tuning as an argument.
> Then, to avoid setting it twice, I wrote the wrappers.
> On the other hand, I would have to set the tuning before setting \clef
> moderntab,
> but this could be easily mentioned in the docs.
> 
> As said above, any help for the base-skip problem and finding a way to
> get the number of strings
> without explicitly using the tuning as an argument are appreciated.
> 
> Thank you!
> 
> Marc


Thank you, too, Marc!

Carl





reply via email to

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