Wim Dijkgraaf Posted December 8, 2016 Share Posted December 8, 2016 I would like to be able to convert a major or minor triad in any inversion and any octave position of it's notes to the intervals of its root position. Can't use pitch classes for this since major and minor triads are concidered the same pitch class. Can't find the right approach. For example: '(e3 g4 c5) -> '(4 3) '(eb3 g4 c5) -> '(3 4) '(g1 e7 c8) -> '(4 3) (g1 eb7 c9) -> '(3 4) The Tonnetz functions are almost working but this is the missing link to get it working. Many thanks in advance. Wim Dijkgraaf Quote Link to comment Share on other sites More sharing options...
AM Posted December 8, 2016 Share Posted December 8, 2016 should work... (defun get-root-intervals (pitches) (integer-to-interval (sort-asc (pitch-to-integer (ambitus-octaves 'c4 1 pitches))))) (get-root-intervals '(g1 c9 e6)) (get-root-intervals '(f3 d4 a4)) interested to see your work :-) greetings andré Quote Link to comment Share on other sites More sharing options...
Wim Dijkgraaf Posted December 9, 2016 Author Share Posted December 9, 2016 Hi AM, I'll share the code this weekend. Is written in a horrible way ... I'm really a beginner with Lisp and getting the concept to work is currently more important then writing the best Lisp code possible :-) But hope that sharing will decrease the learning curve a bit. Big hug opmo and lviklund 2 Quote Link to comment Share on other sites More sharing options...
Wim Dijkgraaf Posted December 10, 2016 Author Share Posted December 10, 2016 Have published the initial Tonnetz implementation (really bad code, has to be refactored and has some bugs): https://github.com/willemdijkgraaf/ClTonnetz Big hug lviklund 1 Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted December 10, 2016 Share Posted December 10, 2016 Wonderful ! 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.