From a53ccfa7cc59f72f88c55df3a9b1e5583dd2f8b6 Mon Sep 17 00:00:00 2001
From: Lorenz Lehmann <lorenz.lehmann@students.muho-mannheim.de>
Date: Sat, 30 Dec 2023 09:05:59 +0100
Subject: [PATCH] chore(sources): seperate utilities from defmethods

---
 sources/harmon-progress.lisp |   75 +++++++-------
 sources/gen-harmonies.lisp   |  179 +++++++++++++++++------------------
 2 files changed, 125 insertions(+), 129 deletions(-)

diff --git a/sources/gen-harmonies.lisp b/sources/gen-harmonies.lisp
index d1ba81a..8b1a64e 100644
--- a/sources/gen-harmonies.lisp
+++ b/sources/gen-harmonies.lisp
@@ -18,100 +18,7 @@
 :numouts 1
 
 :doc "creates a list of chords, that contains all possible transpositions & permutations of the given pitch-sets"
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defun circular_oml (items) 
-(setf (cdr (last items)) items)
-items)
- 
-
-(defun flat_oml (liste)
-  (cond 
-         ((null (cdr liste))
-          (if (atom (car liste)) 
-              liste
-            (flat_oml (car liste))))
-
-
-         ((and (listp (car liste)) (not (listp (cadr liste))))
-          (append (car liste)
-                  (flat_oml (cdr liste))))
-
-
-         ((and (not (listp (car liste))) (not (listp (cadr liste))))
-          (append (list (car liste)) 
-                  (flat_oml (cdr liste))))
-
-         ((and (listp (car liste)) (listp (cadr liste)))
-               (append (car liste)
-                       (flat_oml (cdr liste))))
-
-         ((and (not (listp (car liste))) (listp (cadr liste)))
-               (append (list (car liste))
-                       (flat_oml (cdr liste))))))
-
-(defun get-pos_oml (positions seq)
-  (let ((positions (if (atom positions) (list positions) positions)))
-    (mapcar #'(lambda (it) (nth it seq)) seq)))
-    
-
-(defun permutations_oml (bag)
-
-(if (null bag)
-'(())
-
-(mapcan #'(lambda (e)
-            (mapcar #' (lambda (p) (cons e p))
-                    (permutations_oml (remove e bag :count 1 :test #'eq))))
-        bag)))
-
-
-(defun mat-trans_oml (list)
-(loop for y in (let (count-list)
-                 (dotimes (i (length (car list))) 
-                   (setq count-list (cons i count-list))) (nreverse count-list))
-collect (loop for x in list collect (nth y x)) 
-
-))
-
-
-
-(defun modulo_oml (pos liste)
-(append
-(nthcdr pos liste)
-(butlast liste (- (length liste) pos))))
-
-
-(defun register-permut_oml (register-list)
-(remove-duplicates
-                           (om::flat 
-                            (loop for r in register-list
-                                  collect 
-                                  (mapcar #'(lambda (l) (permutations_oml 
-                                                         (append (make-list l :initial-element r) 
-                                                                 (make-list (- (length register-list) l) :initial-element 0)))) 
-                                          (loop for x from 1 to (length register-list)
-                                                collect x))) 2) :test 'equal))
-
-
-(defun find-pos_oml (item seq)
-  (remove nil (loop for s in seq
-        for x
-        collect (if (equal item s) x))))
-
-
-(defun sum_oml (liste)
-  (if (null (cdr liste))
-      (car liste)
-    (+ (car liste)
-       (sum_oml (cdr liste)))))
-
-(defun variations_oml (liste pcl)
-  (let* ((liste (remove-duplicates liste))
-         (liste (make-list pcl :initial-element liste)))
-    (apply #'alexandria:map-product #'list liste)))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (let* (
 
        (instr-list (sort (flat_oml (remove nil (list instr1 instr2 instr3 instr4))) '<))
@@ -171,7 +78,93 @@
        (harmon-database (if avoid-empty-voices (mapcar (lambda (x) (remove -1 x)) harmon-database) harmon-database)))
 harmon-database))
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
+(defun circular_oml (items) 
+(setf (cdr (last items)) items)
+items)
+ 
+
+(defun flat_oml (liste)
+  (cond 
+         ((null (cdr liste))
+          (if (atom (car liste)) 
+              liste
+            (flat_oml (car liste))))
+
+
+         ((and (listp (car liste)) (not (listp (cadr liste))))
+          (append (car liste)
+                  (flat_oml (cdr liste))))
+
+
+         ((and (not (listp (car liste))) (not (listp (cadr liste))))
+          (append (list (car liste)) 
+                  (flat_oml (cdr liste))))
+
+         ((and (listp (car liste)) (listp (cadr liste)))
+               (append (car liste)
+                       (flat_oml (cdr liste))))
+
+         ((and (not (listp (car liste))) (listp (cadr liste)))
+               (append (list (car liste))
+                       (flat_oml (cdr liste))))))
+
+(defun get-pos_oml (positions seq)
+  (let ((positions (if (atom positions) (list positions) positions)))
+    (mapcar #'(lambda (it) (nth it seq)) seq)))
+    
+
+(defun permutations_oml (bag)
+
+(if (null bag)
+'(())
+
+(mapcan #'(lambda (e)
+            (mapcar #' (lambda (p) (cons e p))
+                    (permutations_oml (remove e bag :count 1 :test #'eq))))
+        bag)))
+
+
+
+
+(defun modulo_oml (pos liste)
+(append
+(nthcdr pos liste)
+(butlast liste (- (length liste) pos))))
+
+
+(defun register-permut_oml (register-list)
+(remove-duplicates
+                           (om::flat 
+                            (loop for r in register-list
+                                  collect 
+                                  (mapcar #'(lambda (l) (permutations_oml 
+                                                         (append (make-list l :initial-element r) 
+                                                                 (make-list (- (length register-list) l) :initial-element 0)))) 
+                                          (loop for x from 1 to (length register-list)
+                                                collect x))) 2) :test 'equal))
+
+
+(defun find-pos_oml (item seq)
+  (remove nil (loop for s in seq
+        for x
+        collect (if (equal item s) x))))
+
+
+(defun sum_oml (liste)
+  (if (null (cdr liste))
+      (car liste)
+    (+ (car liste)
+       (sum_oml (cdr liste)))))
+
+(defun variations_oml (liste pcl)
+  (let* ((liste (remove-duplicates liste))
+         (liste (make-list pcl :initial-element liste)))
+    (apply #'alexandria:map-product #'list liste)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;end;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
diff --git a/sources/harmon-progress.lisp b/sources/harmon-progress.lisp
index 4c6b48f..9609f14 100644
--- a/sources/harmon-progress.lisp
+++ b/sources/harmon-progress.lisp
@@ -6,6 +6,9 @@
 ;Supervision: Marlon Schumacher
 ;======================================
 
+
+
+
 (in-package :omlead)
 
 (om::defmethod! harmon-progress (harmon-database first-chord chordnumber &key avoid-repetitions voice-tie1 voice-tie2 voice-tie3 voice-tie4 voice-interval1 voice-interval2 voice-interval3 voice-interval4 voice-counter1  counter-interval1 voice-counter2 counter-interval2 voice-counter3 counter-interval3 voice-counter4 counter-interval4 voice-counter5 counter-interval5 voice-counter6 counter-interval6 base-list)
@@ -14,42 +17,7 @@
 
 :numouts 1
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defun mat-trans_oml (list)
-(loop for y in (let (count-list)
-                 (dotimes (i (length (car list))) 
-                   (setq count-list (cons i count-list))) (nreverse count-list))
-collect (loop for x in list collect (nth y x)) 
-
-))
-
-
-(defun posn-match_oml (list positions)
-  (cond ((null positions) '())
-        ((atom positions) (nth positions list))
-        (t (append (list (posn-match_oml list (car positions)))
-                   (if (posn-match_oml list (cdr positions))
-                       (posn-match_oml list (cdr positions))
-                     '())))))
-
-
-(defun subs-posn_oml (list position item)
-  (loop for a from 0 
-        for b in list 
-        collect (if (= a position) item b)))
-
-
-(defun oml- (list atom)
-(mapcar (lambda (it) (- it atom)) list))
-
-
-(defun find-dups_oml (liste)
-(car 
-(remove nil
-(mapcar #'(lambda (l c) (eq l c)) liste  (cdr liste)))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 (let* ((harmon-database harmon-database)
@@ -613,7 +581,42 @@
                   (nreverse (push second external-list))
                   (values second))))))
                
-              
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun mat-trans_oml (list)
+(loop for y in (let (count-list)
+                 (dotimes (i (length (car list))) 
+                   (setq count-list (cons i count-list))) (nreverse count-list))
+collect (loop for x in list collect (nth y x)) 
+
+))
+
+
+(defun posn-match_oml (list positions)
+  (cond ((null positions) '())
+        ((atom positions) (nth positions list))
+        (t (append (list (posn-match_oml list (car positions)))
+                   (if (posn-match_oml list (cdr positions))
+                       (posn-match_oml list (cdr positions))
+                     '())))))
+
+
+(defun subs-posn_oml (list position item)
+  (loop for a from 0 
+        for b in list 
+        collect (if (= a position) item b)))
+
+
+(defun oml- (list atom)
+(mapcar (lambda (it) (- it atom)) list))
+
+
+(defun find-dups_oml (liste)
+(car 
+(remove nil
+(mapcar #'(lambda (l c) (eq l c)) liste  (cdr liste)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;;;;;;;;;;;;;;end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 

--
Gitblit v1.9.1