On Mon, Mar 30, 2015 at 1:44 PM, Nathan Ho <when.possi...@gmail.com> wrote:
> Hi list, > > What is the most up-to-date way to define my own event classes? > > I've looked at frameEngraver as a model but none of the old versions > seem to be working. The most up-to-date one I could find > (https://lists.gnu.org/archive/html/lilypond-user/2013-07/msg00373.html) > gives me numerous "Event class should be a list" errors and the frames > don't show up in the output, while this one > (https://lists.gnu.org/archive/html/lilypond-user/2013-07/msg00554.html) > spits out a few errors and segfaults. I'm using 2.19.17. > Not hugely surprised to see that didn't get a quick answer :) With some trial and error and fumbling around I came up with the following code. Unlike the frame engraver code, this returns no errors or warnings, but the engraver doesn't seem to notice the BangEvent at all. If I change the listener to listen to music-event, then bang-trigger calls four times (once per note) seemingly ignoring the \bang. What's going on here? \version "2.19.17" #(define-event-class 'bang-event 'music-event) #(define bang-types '( (BangEvent . ((description . "BANG!") (types . (bang-event music-event)) )) )) #(set! bang-types (map (lambda (x) (set-object-property! (car x) 'music-description (cdr (assq 'description (cdr x)))) (let ((lst (cdr x))) (set! lst (assoc-set! lst 'name (car x))) (set! lst (assq-remove! lst 'description)) (hashq-set! music-name-to-property-table (car x) lst) (cons (car x) lst))) bang-types)) #(set! music-descriptions (append bang-types music-descriptions)) #(set! music-descriptions (sort music-descriptions alist<?)) #(define (bang-trigger engraver event) ; use ly:warning as a quick hack to get it to show up in the output log (ly:warning "helloooo")) #(define Bang_engraver (make-engraver (listeners (bang-event . bang-trigger)))) bang = #(make-music 'BangEvent) \new Staff \with { \consists #Bang_engraver } { c1 c1 \bang c1 c1 } Regards, Nathan
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user