On Sat, Jan 26, 2013 at 10:04 PM, Adam Spiers <lilypond-u...@adamspiers.org> wrote: > On Tue, Jan 15, 2013 at 3:05 PM, Adam Spiers > <lilypond-u...@adamspiers.org> wrote: >> On Tue, Jan 15, 2013 at 9:41 AM, David Kastrup <d...@gnu.org> wrote: >>> You could use an engraver in ChordNames for wiping out the (event) cause >>> of the last involved grob. Then the point-and-click location would no >>> longer be available... >> >> That makes sense. Do you mean an existing engraver though, or a new >> one? The only existing one which looks promising is >> Output_property_engraver (which I had never heard of before). Does >> that mean I do this via \applyOutput? > > I got this to work for a single note via: > > #(define (delete-grob-cause grob origctx curctx) > (let* ((cause (ly:grob-property grob 'cause)) > (music-origin (if (ly:stream-event? cause) > (ly:event-property cause 'origin)))) > (ly:debug "removing grob origin '~a'" music-origin))) > (ly:grob-set-property! grob 'cause #f)) > > and then: > > \applyOutput #'ChordNames #delete-grob-cause > > However, this only worked for the single note following the command. > I searched hard for a way to apply it to all notes, but this was the > best advice I could find: > > http://thread.gmane.org/gmane.comp.gnu.lilypond.general/18699/focus=18700 > > and both options presented were behind my expertise.
I eventually found a solution to this: (music-map (lambda (x) (let ((type (ly:music-property x 'name))) (if (eq? type 'NoteEvent) #{ \applyOutput #'Score #delete-grob-cause $x #} #{ $x #})) ) music)) This is possibly worth an LSR entry, although in the end, Jan helped me come up with a fundamentally superior approach to the whole problem, documented here: https://github.com/aspiers/ly2video/issues/16 > I think it would be worth either extending \pointAndClickTypes to > support filtering by context, or adding a new command such as > \pointAndClickContexts. If there is agreement with this idea I am > happy to submit an issue and drum up a patch, but I'd appreciate > guidance on the best interface syntax. For instance, I'm not sure > whether it's better to treat the argument as a list of contexts to > include: > > \pointAndClickExcludedContexts #'(Voice DrumVoice) > > or contexts to exclude: > > \pointAndClickContexts #'(ChordNames) > > or should both inclusion and exclusion be supported, either via > separate commands or a single command, e.g. > > \pointAndClickContexts #'(Voice DrumVoice -ChordNames) > > And how would any of these commands interact with the existing > \pointAndClickTypes command? Presumably they'd have to be treated as > an additional level of filtering. I still think this line of development is still worthwhile, but I'm unlikely to have time to drive it. _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user