Jump to content

Auto Harmonizer Function


Recommended Posts

Beginners question:

Starting from a single melodic omn sequence, would it be possible to have function in Opusmodus which calculates a chord progression, which would qualify to harmonize the input.

 

I am aware that this is a underdetermined problem, so the function would require some further inputs constraining the solutions, like harmonic rhythm, size of chords, tonality, mode,  interval ( i.e. tertiary, quartal). Even if the solution space is vast, a random solution, which may be fixed with seed would be great.

 

I know about gen-chord… but harmonization spanning multiple melody notes seems more complex.

 

Any thoughts?

Link to comment
Share on other sites

Maybe this could be better addressed with AI. Actually, tonality is a very complex endeavour, a very idiomatic system.

 

A melody can assume multiple functions. I like to think it as a system of scales with 9 different degrees or modal stations. Transposing this stations through the 12 keys is enough to get all the progressions of the common practice and jazz,  a sort of George Russell stuff.

 

Some time ago I build an Opusmodus library with chords, but after I realised that would be easier to just midi input the chords I like and process the voicings with the drop-voicing function I helped Janusz to create.

 

Each composition have some unique and handmade stuff. For me, that part is the choice of pitches and underlying harmony. I have my sensibility based in years of hearing and playing.

 

Probably the AI will bring some ease to the process, but as humans, we need time to grasp and really internalize the material. The same occur with Opusmodus output, that sometimes brings more material than we can deal with, in the process of building a piece. Part of the problem is also dealing with form and the cognitive aspect of the information flow.

 

Best,

Julio

Link to comment
Share on other sites

I'm in travel actually and very busy but i wrote two short example for you to explore, not exactly what you ask for but I hope interesting to study for you and hopefully inspiring for further exploration.

Happy study 🙂

 

;;; EXAMPLE 1
;;; ===================
(progn ; basic version
(setf melo.pch (vector-to-pitch '(c4 e5) (gen-noise 64)))
(setf melo.len (flatten (rnd-sample 64 '(h. h q (e e)(s s s s) -q))))

(setf melo (make-omn
            :pitch melo.pch
            :length melo.len
            ))
            
(setf chords-types '((-4 -6 -9 -16)(-7 -9 -12 -15)(-2 -8 -12 -17)))
(setf base-acc (gen-chord3 melo.pch chords-types :cycle nil :relative t))

(setf acc (chord-interval-replace
           '(1 2 3 4)
           '(-11 -10 -9 -8)
           (ambitus
            '(c3 g5)
            (length-legato
             (length-weight
              (make-omn
               :pitch base-acc
               :length melo.len
               ))))))

(ps 'gm
    :vn* (list melo)
    :pg (list acc)
    :time-signature '(4 4)
    )
)

;;; EXAMPLE 2
;;; =========================
(progn ; modal version
(setf melo.pch (vector-to-pitch '(c4 e5) (gen-noise 64)))
(setf melo.len (flatten (rnd-sample 64 '(h. h q (e e)(s s s s) -q))))

(setf melo (make-omn
            :pitch melo.pch
            :length melo.len
            ))

(setf chords-types '((-4 -6 -9 -16)(-7 -9 -12 -15)(-2 -8 -12 -17)))
(setf base-acc (gen-chord3 melo.pch chords-types :cycle nil :relative t))

(setf acc (chord-interval-replace
           '(1 2 3 4)
           '(-11 -10 -9 -8)
           (ambitus
            '(c3 g5)
            (length-legato
             (length-weight
              (make-omn
               :pitch base-acc
               :length melo.len
               ))))))

(setf path (tonality-series '(lydian) :root '(d4 bb4 fs3 c4 a3) :map '(octave)))
(setf melo.map (tonality-map path (omn-to-time-signature melo '(4 4))))
(setf acc.map (tonality-map path (omn-to-time-signature acc '(4 4))))

(ps 'gm
    :vn* (list melo.map)
    :pg (list acc.map)
    )
)

SB.

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Terms of Use Privacy Policy