Update of /project/fomus/cvsroot/fomus In directory common-lisp.net:/tmp/cvs-serv8208
Modified Files: CHANGELOG TODO data.lisp split.lisp voices.lisp Log Message: Bug fixes Date: Fri Jul 29 20:55:43 2005 Author: dpsenicka
Index: fomus/CHANGELOG diff -u fomus/CHANGELOG:1.1 fomus/CHANGELOG:1.2 --- fomus/CHANGELOG:1.1 Fri Jul 29 10:58:20 2005 +++ fomus/CHANGELOG Fri Jul 29 20:55:43 2005 @@ -2,3 +2,4 @@
Testing/bug fixes Support for tremolos + Changed INSTR-VOICELIM slot in INSTR class to INSTR-SIMULTLIM
Index: fomus/TODO diff -u fomus/TODO:1.8 fomus/TODO:1.9 --- fomus/TODO:1.8 Fri Jul 29 10:58:20 2005 +++ fomus/TODO Fri Jul 29 20:55:43 2005 @@ -4,7 +4,7 @@
Testing and bug fixes DOC: dynamic marks can take order arguments (backend might not support it) -DOC: update tremolos +DOC: :beat-division and tuplets Adjust scores and penalties for decent results Breath marks (resolve before/after) Note heads
Index: fomus/data.lisp diff -u fomus/data.lisp:1.7 fomus/data.lisp:1.8 --- fomus/data.lisp:1.7 Fri Jul 29 10:58:20 2005 +++ fomus/data.lisp Fri Jul 29 20:55:43 2005 @@ -129,17 +129,17 @@ ;; 8up/down leglines = (cons into-ottava outof-ottava), or I think it can also be just a number ;;(declaim (inline make-instr)) (defstruct (instr (:constructor make-instr-aux) (:copier nil) (:predicate instrp)) - sym clefs (staves 1) minp maxp (voicelim 1) tpose (cleflegls 2) + sym clefs (staves 1) minp maxp (simultlim 1) tpose (cleflegls 2) 8uplegls 8dnlegls percs) -(defparameter +instr-keys+ '(:sym :clefs :staves :minp :maxp :voicelim :tpose :cleflegls :8uplegls :8dnlegls :percs)) +(defparameter +instr-keys+ '(:sym :clefs :staves :minp :maxp :simultlim :tpose :cleflegls :8uplegls :8dnlegls :percs))
(defun make-instr (sym &rest args) (apply #'make-instr-aux :sym sym args))
;;(declaim (inline copy-instr)) (defun copy-instr (instr &key (sym (instr-sym instr)) (clefs (instr-clefs instr)) (staves (instr-staves instr)) (minp (instr-minp instr)) (maxp (instr-maxp instr)) - (voicelim (instr-voicelim instr)) (tpose (instr-tpose instr)) (cleflegls (instr-cleflegls instr)) (8uplegls (instr-8uplegls instr)) + (simultlim (instr-simultlim instr)) (tpose (instr-tpose instr)) (cleflegls (instr-cleflegls instr)) (8uplegls (instr-8uplegls instr)) (8dnlegls (instr-8dnlegls instr)) (percs (instr-percs instr))) - (make-instr-aux :sym sym :clefs clefs :staves staves :minp minp :maxp maxp :voicelim voicelim :tpose tpose :cleflegls cleflegls + (make-instr-aux :sym sym :clefs clefs :staves staves :minp minp :maxp maxp :simultlim simultlim :tpose tpose :cleflegls cleflegls :8uplegls 8uplegls :8dnlegls 8dnlegls :percs percs))
(defparameter +instr-type+ @@ -150,7 +150,7 @@ (instr-staves (check* (integer 1) "Found ~S, expected (INTEGER 1) in STAVES slot" t)) (instr-minp (check* (or null integer) "Found ~S, expected INTEGER in MINP slot" t)) (instr-maxp (check* (or null integer) "Found ~S, expected INTEGER in MAXP slot" t)) - (instr-voicelim (check* (integer 1) "Found ~S, expected (INTEGER 1) in VOICELIM slot" t)) + (instr-simultlim (check* (integer 1) "Found ~S, expected (INTEGER 1) in SIMULTLIM slot" t)) (instr-tpose (check* (or null integer) "Found ~S, expected INTEGER in TPOSE slot" t)) (instr-cleflegls (check* (or* (integer 1) (cons-of* (integer 1) @@ -168,7 +168,7 @@
(defparameter *instruments* nil) (eval-when (:load-toplevel :execute) - (defparameter +default-instr+ (make-instr :default :clefs '(:treble :bass) :voicelim 5)) + (defparameter +default-instr+ (make-instr :default :clefs '(:treble :bass) :simultlim 5)) (defparameter +instruments+ (list (make-instr :piccolo :clefs :treble :tpose 12) (make-instr :flute :clefs :treble) @@ -190,10 +190,10 @@ (make-instr :viola :clefs '(:treble :alto) :8uplegls '(5 2)) (make-instr :cello :clefs '(:bass :tenor :treble)) (make-instr :contrabass :clefs '(:bass :tenor) :tpose -12) - (make-instr :harp :clefs '(:treble :bass) :staves 2 :voicelim 5 :8uplegls '(5 2) :8dnlegls '(5 2)) - (make-instr :piano :clefs '(:treble :bass) :staves 2 :voicelim 5 :8uplegls '(5 2) :8dnlegls '(5 2)) - (make-instr :xylophone :clefs '(:treble) :voicelim 2 :tpose 12 :8uplegls '(5 2)) - (make-instr :marimba :clefs '(:treble :bass) :voicelim 2 :8uplegls '(5 2)) + (make-instr :harp :clefs '(:treble :bass) :staves 2 :simultlim 5 :8uplegls '(5 2) :8dnlegls '(5 2)) + (make-instr :piano :clefs '(:treble :bass) :staves 2 :simultlim 5 :8uplegls '(5 2) :8dnlegls '(5 2)) + (make-instr :xylophone :clefs '(:treble) :simultlim 2 :tpose 12 :8uplegls '(5 2)) + (make-instr :marimba :clefs '(:treble :bass) :simultlim 2 :8uplegls '(5 2)) (make-instr :percussion :clefs :percussion) (make-instr :timpani :clefs :bass))))
@@ -327,7 +327,7 @@ (:default-beat (or null (rational (0)))) (:beat-division (or* (integer 1) (and (list* (integer 1) (integer 1)) (length* = 2))) "(INTEGER 1) or ((INTEGER 1) (INTEGER 1))") (:min-tuplet-dur (real (0))) (:max-tuplet-dur (real (0))) (:min-simple-tuplet-dur (real (0))) - (:max-tuplet (or* (integer 2) (list-of* (integer 2))) "(INTEGER 2) or list of (INTEGER 2)") + (:max-tuplet (or* null (integer 2) (list-of* (integer 2))) "(INTEGER 2) or list of (INTEGER 2)") (:tuplet-dotted-rests boolean) (:double-dotted-notes boolean) (:dotted-note-level (find* t :all :top :sig) "T, :ALL, :TOP or :SIG") (:shortlongshort-notes-level (find* t :all :top :sig) "T, :ALL, :TOP or :SIG")
Index: fomus/split.lisp diff -u fomus/split.lisp:1.6 fomus/split.lisp:1.7 --- fomus/split.lisp:1.6 Fri Jul 29 10:58:20 2005 +++ fomus/split.lisp Fri Jul 29 20:55:43 2005 @@ -330,7 +330,7 @@ (list (nconc (list (loop for i from 1/2 below num collect (/ i num)) ; regular off beat syncopation (snd (/ 1/2 num) t nil)) (make-list (- num 1/2) :initial-element (snd (/ num) nil nil)))))))) - (when (and tups (or (initdivp rule) (rule-alt rule)) (or (initdivp rule) (rule-art rule))) + (when (and tups mt (or (initdivp rule) (rule-alt rule)) (or (initdivp rule) (rule-art rule))) (loop with nu = (if (rule-comp rule) (* num 3/2) num) for j in (primes2 (first mt)) ; only primes--number isn't actual tuplet, just division @@ -366,7 +366,7 @@ (list (list 1/8 (un 1/8 :l t t) (und 7/8 nil t)))))) (when (and (al *shortlongshort-notes-level*) (rule-alt rule) (rule-art rule) ex) (list (list '(1/4 3/4) (un 1/4 :l t t) (und 1/2 t t) (un 1/4 :r t t)))) ; longer note in middle - (when (and tups (or (initdivp rule) (rule-alt rule)) (or (initdivp rule) (rule-art rule))) + (when (and tups mt (or (initdivp rule) (rule-alt rule)) (or (initdivp rule) (rule-art rule))) (let ((l (length (force-list (rule-tup rule))))) (when (< l mn) (loop
Index: fomus/voices.lisp diff -u fomus/voices.lisp:1.3 fomus/voices.lisp:1.4 --- fomus/voices.lisp:1.3 Tue Jul 26 01:15:53 2005 +++ fomus/voices.lisp Fri Jul 29 20:55:43 2005 @@ -104,7 +104,7 @@ (c (cons w (let ((o (- oo (* *voice-full-beat-dist* *max-voice-beat-dist-mul*)))) (remove-if (lambda (e) (<= (event-endoff e) o)) (voicenode-evc no)))))) - (when (let ((i (instr-voicelim instr))) + (when (let ((i (instr-simultlim instr))) (or (null i) (<= (count-if (lambda (x) (and (> (event-endoff x) oo) (= (event-voice x) e))) c) i))) (make-voicenode :sc s :evc c