OpenMusic-Library zur regelbasierten Harmonie und Stimmführung.
Lorenz Lehmann
11.12.23 c11544f81f50d95afab73c11299a1d98bd1c8283
feat(sources): add feature avoid-empty-voices

new keyword for gen-harmonies
optional placeholder "-1" for intruments without defined range
1 files modified
4 ■■■■ changed files
sources/gen-harmonies.lisp 4 ●●●● patch | view | raw | blame | history
sources/gen-harmonies.lisp
@@ -9,7 +9,7 @@
(in-package :omlead)
(om::defmethod! gen-harmonies ((pitch-set-list list) (instr1 list) (instr2 list) (instr3 list) (instr4 list) &key (fundamental 6000) (skala (list 100)) (permutations nil) (register-list '(0)))
(om::defmethod! gen-harmonies ((pitch-set-list list) (instr1 list) (instr2 list) (instr3 list) (instr4 list) &key (avoid-empty-voices nil) (fundamental 6000) (skala (list 100)) (permutations nil) (register-list '(0)))
:icon 030719972
:initvals '('((0)) '(6000 7200) nil nil nil)    
@@ -158,7 +158,6 @@
                                                          collect
                                                          (loop for reg in (variations_oml register-list (length a))
                                                                collect (mapcar #'(lambda (r p) (+ r p)) reg a))) 1) :test 'equal))
       (instr-list2  (remove nil (list instr1 instr2 instr3 instr4)))
       (instr-list2  (list instr1 instr2 instr3 instr4))
       (harmon-database (remove -1 (loop for a in harmon-database
                              collect (loop for p in a
@@ -169,6 +168,7 @@
       (harmon-database (remove nil (loop for a in harmon-database
                                          collect (if (> (count nil a) 0) nil a))))
       (harmon-database (if avoid-empty-voices (mapcar (lambda (x) (remove -1 x)) harmon-database) harmon-database)))
harmon-database))