[CM] on several voice

Bill Schottstaedt bil@ccrma.Stanford.EDU
Tue, 6 Mar 2007 04:52:05 -0800


The lowered eighth rest + little staff is the problem?  Here's one
possibility:

(defun eighth-rest-in-little-staff ()
  (eighth-rest
   invisible
   (make-sundry
    :mark #'(lambda (mark note score &optional justifying)
              (when (not justifying)
                (let* ((x0 (box-x0 note))
                       (y0 (- (box-y0 note) 1.0)))
                  (setf (line-width score) *staff-line-width*)
                  (moveto score x0 y0) ; draw little staff lines
                  (rlineto score 0.5 0)
                  (moveto score x0 (- y0 .25))
                  (rlineto score 0.5 0)
                  (moveto score x0 (- y0 .5))
                  (rlineto score 0.5 0)
                  (draw score)
                  (show score eighth-rest  ; draw an eighth rest
                        :matrix (translate-matrix score eighth-rest (+ x0 .1) (- y0 .25)))))))))

(cmn (setf s1 (staff (meter 4 4) begin-repeat-bar
                     g5 (note-head :x) stem-up
                     g5 (note-head :x) stem-up
                     g5 (note-head :x) stem-up
                     g5 (note-head :x) stem-up end-repeat-bar))
     (staff (tied-to s1) (d4 e.) (b4 s)
            (eighth-rest invisible)
            (d4 e stem-down)(d4 e.) (d4 s) (f4 q))
     (staff (tied-to s1)
            (eighth-rest-in-little-staff) (b3 e (note-head :circled-x) stem-down)
            (eighth-rest-in-little-staff) (b3 e (note-head :circled-x) stem-down)
            (eighth-rest-in-little-staff) (b3 e (note-head :circled-x) stem-down)
            (eighth-rest-in-little-staff) (b3 e (note-head :circled-x) stem-down)))