Am 06.03.2015 14:35, schrieb David Nalesnik:


On Fri, Mar 6, 2015 at 7:24 AM, David Nalesnik <[email protected] <mailto:[email protected]>> wrote:



     \version "2.19.16"

    #(set! default-script-alist
           (append default-script-alist
             (list
              `("weakbeat"
                 . (
                     (script-stencil . (feta . ("weakbeat" . "weakbeat")))
                     ; any other properties
                     (toward-stem-shift-in-column . 0.0)
                     (padding . 0.20)
                     (avoid-slur . around)
                     (direction . ,UP))))))

    weakbeat = #(make-articulation "weakbeat")

    { c\weakbeat }

    \layout {
      \context {
        \Score
        scriptDefinitions = #default-script-alist
      }
    }

    %%%


Here's my conclusion:

When using append, we are setting default-script-alist to a list which doesn't necessarily share structure with the original default-script-alist. scriptDefinitions is bound to the original default-script-alist unless you reassign it to the concatenated list. append! destructively modifies the list that scriptDefinitions is bound to, so there is no need for the set in the context block.

There is not even the need for the set! in the original definition. That is:

#(append! default-script-alist
   (list
    `("weakbeat"
       . ((script-stencil . (feta . ("weakbeat" . "weakbeat")))
          ; any other properties
          (toward-stem-shift-in-column . 0.0)
...

works already.
Hm, I took this idiom from assoc-set! where the manual says it is not guaranteed that the original alist is actually modified, so it suggest

#(set! an-alist
  (assoc-set! an-alist
   ...

In any case, it works now, and when including the file that loads the new font there are some new articulations defined automatically :-)

So this is possible:

\include "arnold.ily"
{
  c ^\weakbeat
}


Best
Urs

--David



--
Urs Liska
[email protected]

_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to