Op 20 okt. 2017, om 18:32 heeft David Kastrup < address@hidden> het volgende geschreven:
Maurits Lamers <address@hidden> writes:Hi all,
I am trying to extend the default event-listener.ly to also include information about in which voice a specific note is being played. When the voice is defined using
\new Voice = voicename
I can retrieve the retrieve that name through (ly:context-id (ly:translator-context engraver)). When the voice is defined in an anonymous way context-id is an empty string. I have been trying to set the context-id when none is set using a counter, but that fails because of an "missing typecheck for property 'context-id'" error. I tried to use both a normal list as well as an asoc list to keep track of the different Voice contexts in order to tell them apart but I haven't been able to get that to work.
I know that when lyrics are added, it is possible to refer to those anonymous voices by using "1" etc.
That's nonsense. Voices in a << ... \\ ... \\ >> construct are notanonymous but named "1", "2", "3" by default, and you can refer tothose. But this has nothing whatsoever to do with lyrics.
But those values are not retrievable through (ly:context-id context), are they?
I would like to be able to mark a voice in Scheme in such a way that I can print to which voice a certain note belongs. Could anyone give a clue on how to achieve that?
Contexts are objects with identity. You can just create something like(define context-id (make-object-property))And then you can set! and fetch (context-id ctx).
That works perfect indeed. Thanks a lot!
cheers
Maurits
|