Wim Dijkgraaf Posted October 21, 2016 Share Posted October 21, 2016 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 Quote Link to comment Share on other sites More sharing options...
opmo Posted October 21, 2016 Share Posted October 21, 2016 Please send me few more examples of the input and the output you are looking for with given tonality map. Example: (tonality-map '(minor :root d4) '(c4 ds4 e4 fs4 g4 b4 c5)) You could tweak the tonality with :add, :remove and :closest options. hujairi 1 Quote Link to comment Share on other sites More sharing options...
Wim Dijkgraaf Posted October 26, 2016 Author Share Posted October 26, 2016 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 Stephane Boussuge 1 Quote Link to comment Share on other sites More sharing options...
opmo Posted October 26, 2016 Share Posted October 26, 2016 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: ? Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted October 27, 2016 Share Posted October 27, 2016 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. Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted October 27, 2016 Share Posted October 27, 2016 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. lviklund 1 Quote Link to comment Share on other sites More sharing options...
Wim Dijkgraaf Posted November 18, 2016 Author Share Posted November 18, 2016 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 :-) Stephane Boussuge and opmo 2 Quote Link to comment Share on other sites More sharing options...
opmo Posted November 21, 2016 Share Posted November 21, 2016 Happy hacking. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.