Jump to content
View in the app

A better way to browse. Learn more.

Opusmodus

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

New Tonality system: Few examples.

Featured Replies

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-2026 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

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.