Jump to content

Featured Replies

Posted

Here's some few examples of use of the recently updated tonality-system.

(complete opmo score attached to this post.)

 


;; Utility function useful for using
;; bass note of chords/scales as root
;; in tonality-series.

(defun get-lowest-chord-tone (chords)
  (do-verbose
      ("get-lowest-chord-tone")
    (integer-to-pitch (mapcar 'find-min (pitch-to-integer chords)))
    ))

#|
;;; USAGE
(setf chords '(d4f4a4 ab3d4eb4g4 f4eb3c5))
(get-lowest-chord-tone chords)
|#


It is better now to see the tonality as kind of PCS (pitch Class Set).
If you would express them in pitch, it is easier to work on C base.
Something interesting if the fact tonality can now be sorted or not.
It will be reflected in the output of tonality-map.

 

 

;; Some tests
(tonality-map '(d4e4f4g4a4b4) '(c4 d4 e4 f4 g4 a4 b4))
(tonality-map '(d4e4f4g4a4b4) '(c3 e4g4))
(tonality-map '(d4e4f4g4a4b4 :root d4) '(c3 e4g4))
(tonality-map '((0 2 3 5 7 9 10) :root d4) '(c3 e4g4))
(tonality-map '((0 2 3 5 7 9 10) :root d4 :closest 'down) '(c3 e4g4))


More extended test with use of bass note as root:

(setf row '(c4 e4 f4 b4 a4 bb4 cs4 gs4 fs4 g4 eb4 d4))
(setf modes1 (harmonic-progression
             '(0 1 2 3 4 5 6 7 8 9 10 11)
             row
             :step 1
             :size 8
             ))

(setf mtv '((s c4 d4 e4 f4 g4 a4 b4 c5)))

(setf test1 (tonality-map
             (mclist modes1)
             (gen-repeat 12 mtv)))

(setf path1 (tonality-series
             modes1
             :root (get-lowest-chord-tone modes1)
             ;:closest '(down)
             ))

(setf test2 (tonality-map
             path1
             (gen-repeat 12 mtv)))

(setf mtv2 '((s c4 cs4 d4 ds4 e4 f4 fs4 g4)))

(setf test3 (tonality-map
             (mclist modes1)
             (gen-repeat 12 mtv2)))

(setf test4 (tonality-map
             path1
             (gen-repeat 12 mtv2)))

(setf path2 (tonality-series
             modes1
             :root (get-lowest-chord-tone modes1)
             ;:closest '(down)
             :map '(step)
             ))


(setf test5 (tonality-map
             path2
             (gen-repeat 12 mtv)))

(setf test6 (tonality-map
             path2
             (gen-repeat 12 mtv2)))

(setf path3 (tonality-series
             modes1
             :root (get-lowest-chord-tone modes1)
             ;:closest '(down)
             :map '(step)
             :sort t
             ))

(setf test7 (tonality-map
             path3
             (gen-repeat 12 mtv2)))

(setf test8 (tonality-map
             path3
             (gen-repeat 12 mtv)))

SB.

 

NewTonalitySystemExamples.opmo

Create an account or sign in to comment


Copyright © 2014-2025 Opusmodus™ Ltd. All rights reserved.
Product features, specifications, system requirements and availability are subject to change without notice.
Opusmodus, the Opusmodus logo, and other Opusmodus trademarks are either registered trademarks or trademarks of Opusmodus Ltd.
All other trademarks contained herein are the property of their respective owners.

Powered by Invision Community

Important Information

Terms of Use Privacy Policy