#(define (ly:add-stream-listener glob listener . types ) (apply ly:add-listener (cons* listener (ly:context-events-below glob) types)) glob) #(define foo '()) %{ % init displaylily. initDisplay = #(def-music-function (parser location music) (ly:music?) (display-lily-init parser) ; (display-lily-music music) music) { \initDisplay c4 } %} #(use-modules (srfi srfi-1)) #(define (cwrite e) (cond ((eqv? '() e) (display "()")) ((and (list? e) (not (and (pair? (cdr e)) (eqv? 'unquote (cadr e))))) ; extra clause to make (a unquote foo) -> (a . ,foo) (if (pair? e) (cond ((eqv? (car e) 'quote) (display "'") (cwrite (cadr e))) ((eqv? (car e) 'quasiquote) (display "`") (cwrite (cadr e))) ((eqv? (car e) 'unquote) (display ",") (cwrite (cadr e))) (#t (display "(") (pair-for-each (lambda (el) (cwrite (car el)) (if (not (eqv? (cdr el) '())) (display " "))) e) (display ")"))))) ((pair? e) (display "(") (cwrite (car e)) (display " . ") (cwrite (cdr e)) (display ")")) (#t (write e)))) %brief version #(define (print-brief ls) (for-each (lambda (x) (let ((ev (Stream_event::dump x))) (write ev)) (display "\n")) (reverse ls))) %verbose version #(define (print-verbose ls) (for-each (lambda (x) (display "`") (cwrite (cadadr x)) (display "\n")) (reverse (cadr (ly:simplify-scheme ls))))) %} #(define (print-fun x) (print-brief foo)) #(define (print-fun x) (print-verbose foo)) %#(define (print-fun x) (write foo)) %#(define (print-fun x) (write x)) #(define (translator-proc mus od key) (let ((glob (ly:make-translator-context od key))) (ly:add-stream-listener glob (ly:make-listener (lambda (x) (set! foo (cons x foo)))) 'StreamEvent) (ly:add-stream-listener glob (ly:make-listener print-fun) 'Finish) (ly:interpret-music-expression! mus glob))) %{ #(define (translator-proc mus od key) (let ((glob (ly:make-translator-context od key))) (ly:add-stream-listener glob (ly:make-listener (lambda (x) (write x) (display "one\n"))) 'StreamEvent) (ly:add-stream-listener glob (ly:make-listener (lambda (x) (write x) (display "two\n"))) 'Finish) (ly:interpret-music-expression! mus glob))) %} #(define (tmp-display-lily-music m) (let ((chord (make-music 'EventChord 'elements (list m)))) (event->string chord #t))) %{ (parameterize ((*indent* 0) (*previous-duration* (ly:make-duration 2)) (*force-duration* #t)) %} %\include "mozart.ly" %\include "mozart-mini.ly" %\include "silly-example.ly" \include "context-example.ly"