lilypond-user
[Top][All Lists]
Advanced

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

Re: vertical shift of trill


From: Thomas Morley
Subject: Re: vertical shift of trill
Date: Sat, 6 Aug 2022 20:24:45 +0200

Am Sa., 6. Aug. 2022 um 17:15 Uhr schrieb Jean Abou Samra <jean@abou-samra.fr>:
>
> Le 06/08/2022 à 16:45, Werner LEMBERG a écrit :
> >> That said, there's a much simpler way.  [...]
> > Your solution is ingenious.  However, how on earth are we mere mortals
> > able to find that?
>
>
> Read the source, Luke :-)

roflmao

>
> Seriously, there is no way around that in this case -- as in many cases
> when it comes to Scheme coding, because the task is essentially to meddle
> with LilyPond internals.
>
> Obviously, I don't claim that this is something every user is supposed to
> be able to do.

Some remarks:
(1) `meta'
>     \override TrillSpanner.meta.object-callbacks.side-support-elements = ...

I'd never thought overriding `meta' is possible at all.
Afaict, there is no example anywhere.
Overriding other meta-subproperties like `class'may result in
surprises, not tested, though.

(2) `object-callbacks'
Some years ago I tried to manipulate `object-callbacks' for a certain
use case. I don't remember exactly, apart from: It was a fiasko.
I never tried this again...

Furthermore:
$ git grep object-callbacks
lily/grob.cc:      SCM object_cbs = scm_assq (ly_symbol2scm
("object-callbacks"), meta);
lily/note-column.cc:  via object-callbacks. --JeanAS
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((normal-stems . ,ly:beam::calc-normal-stems)))
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((footnotes-before-line-breaking .
,ly:system::footnotes-before-line-breaking)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)
scm/define-grobs.scm:                 (object-callbacks . ((Y-common .
,ly:axis-group-interface::calc-y-common)
scm/define-grobs.scm:                 (object-callbacks . (
scm/define-grobs.scm:                 (object-callbacks .
((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common)

Above seems like object-callbacks is close to always related to
unpure/pure thingies.
As a user one would have to be very bold to use it for something
different relying on the few exceptions.
And cc-code is locked from the user.

(3) same for `side-support-elements':
$ git grep side-support-elements
Documentation/misc/CHANGES-1.3:of checking side-support-elements. This
fixes a problem with stacked
lily/bar-number-engraver.cc:      set_object (text_, "side-support-elements",
lily/dot-column.cc:  extract_grob_set (me, "side-support-elements", support);
lily/jump-engraver.cc:          set_object (text, "side-support-elements",
lily/mark-engraver.cc:      set_object (text_, "side-support-elements",
lily/metronome-engraver.cc:      set_object (text_, "side-support-elements",
lily/side-position-interface.cc:
Pointer_group_interface::add_unordered_grob (me, ly_symbol2scm
("side-support-elements"), e);
lily/side-position-interface.cc:  extract_grob_set (me,
"side-support-elements", proto_support);
lily/side-position-interface.cc:  extract_grob_set (me,
"side-support-elements", elts);
lily/side-position-interface.cc:  // TODO: if there is a grob that
never has side-support-elements
lily/side-position-interface.cc:  Grob_array *ga = unsmob<Grob_array>
(get_object (me, "side-support-elements"));
lily/side-position-interface.cc:side-support-elements
lily/span-arpeggio-engraver.cc:          extract_grob_set
(arpeggios_[j], "side-support-elements", sses);
lily/span-arpeggio-engraver.cc:
Pointer_group_interface::add_grob (span_arpeggio_, ly_symbol2scm
("side-support-elements"),
scm/define-grob-properties.scm:     (side-support-elements
,ly:grob-array? "The side support, an array of
scm/output-lib.scm:       (ly:grob-array->list (ly:grob-object g
'side-support-elements))))

I.e. apart from doc-strings for IR, no code-example, which would be
the most important, imho.
Thus I think it was close to impossible to find.
Reminds me as David K posted about <> being valid syntax.



That said, I recently used `side-support-elements' for a custom
coding, setting and reading it.
https://lilypondforum.de/index.php/topic,1082.msg5858.html#msg5858
I learned how to do it by observing the behaviour of 'scripts and
their `side-support-elements' in ScriptRow.
I.e. not by reading the source-code, but by playing around with it.
This is tedious, time-consuming and not always successful.

Nevertheless, many, many thanks for your coding-example.
I may even be able to simplify the linked code.

Best,
  Harm



reply via email to

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