[CM] cmn, space, automatic-beams

Bill Schottstaedt bil@ccrma.Stanford.EDU
Sun, 21 Jan 2007 03:12:13 -0800


> 1. how one can give more space to an object; 
> writing a vocal part, sometimes the syllable is too long for the space 
> owned by the note [cut the syllable is not the best solution :-] 

The file lyrics.lisp has code to do this via the spacing hook.  You can 
touch up individual notes with the "walls" method:

  (f4 h (walls '(0.0 2.0)))

which forces that note to have a lot of trailing space.


> 2. I wish to get the vocal parts without automatic beaming 
> (but (automatic-beams nil) works only if I write it in the 
> outer section (cmn (automatic-beams nil) ...) 

Here's one way: 

(defvar always-no-beam
    (make-self-acting  
     :action #'(lambda (staff &rest rest) 
		 (declare (ignore rest))
		 (loop for obj in (staff-data staff) do 
		   (if (or (note-p obj) (chord-p obj)) 
		       (progn
			 (push :no-beam (store-data obj))
			 (setf (beamed obj) #'(lambda (&rest rest)
						(declare (ignore rest))
						0))))))
     :argument nil))

Then on the vocal staves add always-no-beam at the start:

  (staff always-no-beam brace bar bass (key f-major) (meter 3 4) ...)