Jump to content

Tonality mapping and chromatic leading tones


Wim Dijkgraaf

Recommended Posts

I'm experimenting with tonality mapping in both an atonal as in a tonal context.

 

In a tonal context, it is common practice to have so called "chord tones" and "neighbor tones".  Neighbor tones can be diatonic or chromatic. My question is how to use tonality mapping while preserving the chromatic neighbor tones and using a clean target tonality (so without cheating by including the chromatic notes in the target tonality).

 

E.g.

Source material (think a C major triad with chromatic lower neighbors) c4 ds4 e4 fs4 g4 b4 c5.

 

I would like to be able to map this on a minor tonality with root D without cheating by including the chromatic notes in the target tonality.

 

Outcome should be: d4 e4 f4 gs4 a4 cs5 d5.

 

How can I do this?

 

Many thanks in advance

Link to comment
Share on other sites

Some examples:

Source material (think a C major triad with chromatic lower neighbors) c4 ds4 e4 fs4 g4 b4 c5.

 

tonality set to D dorian or aeolian: Outcome should be: d4 e4 f4 gs4 a4 cs5 d5

tonality set to D locrian:  Outcome should be: d4 e4 f4 g4 gs4 cs5 d5.

tonality set to D augmented/whole tone:  Outcome should be: d4 f4 fs4 a4 as4 cs5 d5

 

I think the requirement I have is something like this:

  • When setting the source material, the tonality of the source material is also specified. OM interprets all pitches that are not part of the source tonality as chromatics. When the source material is mapped on another tonality, those chromatics are not changed but will be transposed according to the diatonic pitch 'it is related to'.

For chromatic leading tones, the "pitch it is related to" will be the next pitch that is part of the source tonality.

For chromatic upper neighbors, the "pitch it is related to"will be the previous pitch that is part of the source tonality.

 

I'm sorry if this requirement isn't described very clearly. If needed, can do a new attempt :-)

 

Kind regards,

 

Wim Dijkgraaf

 

Link to comment
Share on other sites

Please fill the output:

input: (c4 g4 eb4 bb4 gs4 cs4 a4 d4 fs4 f4 e4 b4)
 
tonality set to D dorian or aeolian: Outcome should be: ?
tonality set to D locrian:  Outcome should be: ?
tonality set to D augmented/whole tone:  Outcome should be: ?

 

Link to comment
Share on other sites

i am probably wrong, but may be it could be easier to use another approach than tonality-map for achieve this.

 

A pattern matching on pitch class could be a solution, search for triadic unit and add lower or upper chromatic notes:

(setf source1 '(c4 d4 e4 f4 g4 a4 b4))
(pattern-map '(((3)(2 3))
               ((4)(3 4))
               ((7)(6 7))
               )
             source1
             :pcs t
             )

 

naturally, if the input source is not based on C, we need to find a way first to transpose it to C , do the pattern matching with chromatics and transpose another time the output of pattern-match to the original base of the input.

 

It is just an idea, may be not help you....

 

SB.

Link to comment
Share on other sites

a bit more advance on this way:

 

;;;; Adding neighbour tone to triads

(setf source '(c4 d4 e4 f4 g4 a4 b4))

(pattern-map '(((3)(2 3))
               ((4)(3 4))
               ((7)(6 7))
               )
             source
             :pcs t
             )


;; a possible approach
(setf base-trsp (car (sort-asc (pitch-to-integer source))))
(setf base-mtrsp (* -1 base-trsp))

(pattern-map '(((3)(2 3))
               ((4)(3 4))
               ((7)(6 7))
               )
             (pitch-transpose base-mtrsp source)
             :pcs t
             )

;; trying to do some function with that idea
(defun add-neighbour-pitch (map source &key (filter-repeat 1))
       (let* ((base-trsp (car (sort-asc (pitch-to-integer source))))
             (re-base (* -1 base-trsp))
             )
         (filter-repeat
          filter-repeat
          (pitch-transpose
           base-trsp
           (pattern-map 
            map
            (pitch-transpose re-base source)
            :pcs t
            )))))

(setf map '(((3)(2 3))
            ((4)(3 4))
            ((7)(6 7))
            ))

; the problem here is we can use it only on 1 octave (because pcs use)
(add-neighbour-pitch map '(d4 e4 f4 g4 a4 b4 c5 d5 e5 f5 g5 a5))

; may be a better approach could be not using the pcs

(defun add-neighbour-pitch2 (map source &key (filter-repeat 1))
       (let* ((base-trsp (car (sort-asc (pitch-to-integer source))))
             (re-base (* -1 base-trsp))
             )
         (filter-repeat
          filter-repeat
          (pitch-transpose
           base-trsp
           (integer-to-pitch
            (pattern-map 
             map
             (pitch-to-integer 
              (pitch-transpose re-base source))
             ))))))

(setf map '(((3)(2 3))
            ((15)(14 15))
            ((4)(3 4))
            ((16)(15 16))
            ((7)(6 7))
            ((19)(18 19))
            ))

(add-neighbour-pitch2 map '(d4 e4 f4 g4 a4 b4 c5 d5 e5 f5 g5 a5))

SB.

Link to comment
Share on other sites

  • 4 weeks later...

Thanks both of you for the interesting approaches. Unfortunately I'm too busy at the moment finalising a project for a client but will have a closer look at this soon. I'm also heavily studying Lisp hand hope to be able to come-up with a couple of functions that does the job AND looks sufficiently elegant to reflect the musical idea.

 

Will be continued soon I hope :-)

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