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.

Harmonizing a major scale using 4-part-drop-2 inversion x

Featured Replies

Is there a more elegant way to do this?

 

;; create major scale
(defun majorScale (root) (make-scale root 16 :alt '(2 2 1 2 2 2 1)))
;; usage:
(majorScale 'c4)

;; 4 part root position harmony of every degree of a major scale
(defun harmonizeMajorScale (root) (harmonic-progression '(0 1 2 3 4 5 6 7) (majorScale root) :size 4))
;; usage:
(harmonizeMajorScale 'c4)

;; 4 part drop 2 of every degree of a major scale, with every chord in a specific inversion
(defun 4PartDrop2 (chords inversion)
 (loop for chord in chords
   collect  
     (chordize 
       (pitch-transpose-n '(0 0 -12 0) 
         (pitch-melodize
           (list 
             (chord-inversion inversion chord)
           )
         ) 
       )
     )
  )
)
;; usage:
(4PartDrop2 (harmonizeMajorScale 'c4) 3)

Any advice very much appreciated.

 

Kind regards,

 

Wim Dijkgraaf

(mapcar (lambda(x)   ;; mapcar will apply the inversion to each chord
          (chord-inversion 3 x)) 
        (harmonic-progression  ;; harmonic progression definition
         (integer-transpose -1 '(1 2 3 4 5 6 7)) ;;degree for the chords
         '(c4 major)   ;; scale used
         :size 4     ;; chords size
         ))

SB.

  • Author

Thanks Stephane for your reply. Interesting solution!

 

If I'm not mistaken, your solution doesn't include the Drop 2 (transpose second voice from the top an octave down). Any idea how to incorporate that into this approach?

 

Kind regards,

 

Wim Dijkgraaf

Hi Wim,

 

a possible solution:

 

(setf chords (mclist 
              (mapcar 
               (lambda(x)   ;; mapcar will apply the inversion to each chord
                 (chord-inversion 3 x)) 
               (harmonic-progression  ;; harmonic progression definition
                (integer-transpose -1 '(1 2 3 4 5 6 7)) ;;degree for the chords
                '(c4 major)   ;; scale used
                :size 4     ;; chords size
                ))))



(setf drop2 (chordize-list
             (pitch-transpose-n 
              '(0 0 -12 0)
              (pitch-melodize chords))))

SB.

  • 2 years later...

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.