SORTING ALGORITHMS

 

DIe Fragestellung dieser Versuchsanordnung war: wie klingen Sortieralgorithmen wenn der Prozess als

Tonhöhen gemappt wird? Was für Strukturen erzeugt der Sortiervorgang? Bubble/insertion/selection-sorts 

werden ergänzt durch zwei eigene Sortieralgorithmen (min-max + divde - basierend auf musikalischer 

Perspektive). Vier Beispiele dazu mit der in OPUSMODUS implementierten  <gen-sort>-Funktion.



 



















SCORE EXAMPLES  

<gen-sort>  auf verschiedene Skalen gemappt


;;; mapping to MAJOR

(setf sort-seq (integer-to-pitch (flatten (gen-sort (rnd-order (gen-integer 24)) :type 'selection))))

(def-score example-score
           (:key-signature 'atonal
                           :time-signature '(4 4)
                           :tempo 90
                           :layout (treble-layout 'seq))
  
  (seq :omn (make-omn :pitch (setf n (tonality-map '(major :map step :root 'c4) sort-seq))
                      :length (gen-repeat (length (flatten n)) '(t)))))


;;; mapping to MESSIAEN-mode

(setf sort-seq (integer-to-pitch (flatten (gen-sort (rnd-order (gen-integer 24)) :type 'insertion))))

(def-score example-score
           (:key-signature 'atonal
                           :time-signature '(4 4)
                           :tempo 90
                           :layout (treble-layout 'seq))
  
  (seq :omn (make-omn :pitch (setf n (tonality-map '(messiaen-mode5 :map step :root 'c4) sort-seq))
                      :length (gen-repeat (length (flatten n)) '(t)))))


;;; mapping to a XENAKIS-SIEVE (nonsense-sieve)

(setf sieve (gen-sieve '((c4 g7) (c1 g7)) '((2 1 12) (3 5)) :type :pitch))
(setf sort-seq (flatten (gen-sort (rnd-order (gen-integer (length sieve))) :type 'insertion :sort '?)))

(def-score example-score
           (:key-signature 'atonal
                           :time-signature '(4 4)
                           :tempo 90
                           :layout (treble-layout 'seq))
  
  (seq :omn (make-omn :pitch (setf n (loop 
                                       for i in sort-seq
                                       collect (nth i sieve)))
                      :length (gen-repeat (length (flatten n)) '(t)))))