Skip to content
View in the app

A better way to browse. Learn more.

Opusmodus Community

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.

Tonality Mapping Question

Featured Replies

Greetings friends,

 

I have a little project I am working on - to map a two-octave scale 12-tone scale.  I want to be able to re-write pitches into this scale and to use the results in both harmonic and melodic contexts.

 

However, I am finding some puzzlement!

 

Here is a code fragment of what I am working on:

 

(create-tonality 12-tone-2 '(0 1 3 4 7 8 10 11 14 17 18 21))
(tonality-map '(12-tone-2 :root c4 :shift t)
              '(c3 d3 e3 f3))

 

My thought is that it SHOULD result in:

 

0 1 3 4 -  c cs ds e - as the result.   Specifically: c4 cs4 ds4 e4 (or the enharmonic equivalent).

 

But, the result is: c eb (ds) g gs   !!   Specifically: c3 ebb g3 gs3.

 

Perhaps someone can help by pointing out my mistake?

 

With thanks,

 

Robert

The output here is correct:

(create-tonality 12-tone-2 '(0 1 3 4 7 8 10 11 14 17 18 21))
(tonality-map '(12-tone-2 :root c4 :shift t)
              '(c3 d3 e3 f3))
=> (c3 eb3 g3 gs3)

 

I think the function you are looking for is:

(integer-to-pitch '(0 1 3 4 7 8 10 11 14 17 18 21))
=> (c4 cs4 eb4 e4 g4 gs4 bb4 b4 d5 f5 fs5 a5)

(harmonic-path '(c4 cs4 eb4 e4 g4 gs4 bb4 b4 d5 f5 fs5 a5)
               '(c3 d3 e3 f3))
=> (c3 cs3 eb3 e3)

 

  • Author

Brilliant!  Thank you!

  • Author

Finally, part of a solution.  This tonality mapping copies the target 2-octave 12-tone collection.

The important flag seems to be :fixed t, in this application.

 

(setf nums '(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21))
(setf orig (integer-to-pitch nums))
(setf map '(0 1 3 4 7 8 10 11 17 18 21))
(setf mapping (integer-to-pitch map))
(create-tonality 12T2 '(0 1 3 4 7 8 10 11 17 18 21))
(remove-duplicates (tonality-map '(12T2 :root c3 :fixed t) (integer-to-pitch nums)))

Create an account or sign in to comment


© 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

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.