Skip 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.

How to work with scales and relative pitches?

Featured Replies

Hi,

In Symbolic Composer (SCOM), there is a mechanism to keep the tonality (scale) and symbols separately and combine them to form actual pitches. Is something like that possible in Opusmodus?

Regards,

Rangarajan

  • Author

Thanks. Will take a look.

 

Regards,

Rangarajan

  • Author

Hi Stephane,

I looked at tonality-map as you suggested. It is a powerful function, but it is not clear that it matches my requirement. I need to generate a set of pitches within a given scale. And if I change the scale, the pitches must change too. This was straightforward in SCOM. 

Are there any examples where something like this is done in opusmodus (sorry, I can't follow French)? Another related question: how do I access the different built in scales? A search for "tonality" gives a result that has the names of all tonalities, but I do not know how to use them.

Thanks for your help.

Regards,

Rangarajan

 

Hi Rangarajan,

you can apply a tonality to some pitches like this:

(setf my-pitches '(c4 d4 e4 f4 a4 g4 e5 d5 c5 b5 g5))
(setf my-pitches-mapped (tonality-map '(acoustic-scale) my-pitches))

;; apply more than one tonality on several lists of pitches
(setf my-pitches2 (gen-repeat 8 '((c4 d4 f4 e4 a4 d5 c5 g5) (f5 e5 c5 a4 g4 d4 e4 c4))))

;; create a serie of tonality changes
(setf my-scales-path (tonality-series '(acoustic-scale
                                        lydian
                                        dorian
                                        messiaen-mode3
                                       )
                                      :root '(d4 f4 e4 a4)))

(setf my-pitch-mapped2 (tonality-map my-scales-path my-pitches2))

;; it works also directly with OMN
(setf some-omn-stuff (make-omn
                      :pitch (integer-to-pitch (rnd-number 8 0 16))
                      :length (gen-tuplet 1 1 '? '? 'w '(3 7 5 6 4 11))
                      :velocity '((pp) (f) (mf) (mp))
                      :articulation '((stacc) (nil) (marc) (nil))
                      ))

(setf omn-stuff-remapped (tonality-map my-scales-path some-omn-stuff))

;; it is just a very small example
;; but the tonality-map and tonality-series functions
;; have lot of more possibility, really. It is a whole universe of possibility.
;; You can have a look to the docs of both of this functions.

 

Cheers

Stéphane

  • Author

Hi Stephane,

Thanks very much for the detailed example. I am looking for functionality as follows:

(tonality-map '(major :root c4) '(0 1 2 3))
=> (c4 d4 e4 f4)

(tonality-map '(natural-minor :root c4) '(0 1 2 3))
=> (c4 d4 eb4 f4)

 

At present TONALITY-MAP works only with absolute pitches (as I understand). I think it would be useful to apply it on integer sequence as I have outlined. Is there a way to do the above at present?

Regards,

Rangarajan

Here it is:

(setf pitch (integer-to-pitch '(0 1 2 3)))

(tonality-map '(major :root c4 :shift t) pitch)
=> (c4 d4 e4 f4)

(tonality-map '(natural-minor :root c4 :shift t) pitch)
=> (c4 d4 eb4 f4)

 

  • Author

Great! This is exactly what I want. 

Regards,

Rangarajan

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

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.