Jump to content
Sign in to follow this  
Deb76

Looking for a Function to reorder a series of progressing ascending pitches?

Recommended Posts

Hello, 

Somewhat stupid question but I do not find a function that would allow me to reorder a sequence of pitches.
Let me explain, on a forum where Messiaen's limited transposition modes are discussed, I wanted to show that with Opumodus we could very easily analyze the modes and recreate them. I have no problem with those who are in total symmetry and divisible by two, but if I take the mode 3: (c4 d4 eb4 e4 gb4 g4 ab4 bb4 b4), using the function pitch-transpose-start I get in the end the mode but according to the postponement of the intervallic structure on c4 d4 ab4 is => ((c4 e4 gs4) (d4 fs4 bb4) (eb4 g4 b4)). I tried to reorder with the function pcs-normal-order the mode is reordered but with however the c4 in last position: (d4 eb4 e4 fs4 g4 gs4 bb4 b4 c4). Now, I suppose there is a function that makes it possible to obtain the right disposition. What is it ?

(setf modmessiaen3 '(c4 d4 eb4 e4 gb4 g4 ab4 bb4 b4))
(setf SIMessiaenMod3 (pitch-to-interval modmessiaen3)) ; =>  (2 1 1 2 1 1 2 1)
(setf mod3divide (gen-divide 3 modmessiaen3))
(setf firstmodmessiaen3 (filter-first 3 modmessiaen3))
(setf report3 '(c4 e4 ab4))
(setf rep3 (gen-repeat 3 (list report3)))
(setf pch3 (modus (flatten (pitch-transpose-start firstmodmessiaen3 rep3))))
(setf MessiaenMod3 (pcs-normal-order pch3 :pitch))
(setf SIMessiaenMod3a (pitch-to-interval MessiaenMod3)) ; => (1 1 2 1 1 2 1 -11)
(setf mod3chordsM (melodize '((c4eb4gb4) (d4gb4bb4) (eb4gb4bb4) (e4g4b4) (gb4bb4db5) (g4b4d5) (ab4b4d5) (bb4gb5) (b4d5gb5))))
(setf analysechords3 (pcs-analysis (integer-to-pitch (modus mod3chordsM))))

 

In particular, this distorts the analysis of the interstellar structure of mode 3:
of (2 1 1 2 1 1 2 1) I get (1 1 2 1 1 2 1 -11)
Besides, there is probably a more efficient script than the one I tried?

Best.

Didier

 

PS : In fact, I realize that the function pcs-normal-order is not adapted at all according to the modes.

Share this post


Link to post
Share on other sites

I would like to get the mode in the right order: '(c4 d4 eb4 e4 gb4 g4 ab4 bb4 b4)) and not '(d4 eb4 e4 gb4 g4 ab4 bb4 b4 c4))

Hence this question: is there a function to get an ascending order in a list rather than using pcs-normal-order?

 

(setf modmessiaen3 '(c4 d4 eb4 e4 gb4 g4 ab4 bb4 b4))

(setf pch3 ( ? (flatten (pitch-transpose-start firstmodmessiaen3 rep3))))

=> ((c4 e4 gs4) (d4 fs4 bb4) (eb4 g4 b4)) =>  (c4 e4 gs4 d4 fs4 bb4 eb4 g4 b4) ? 

 

If I go look for mode 3 in the library OPMO I have this:

 

(setf Messiaen3 (pitch-transpose 0 (expand-chord-name (library 'modes 'messiaen 'messiaen-mode3) :type :pitch)))

=> (c4 d4 eb4 e4 fs4 g4 gs4 bb4 b4)

(expand-chord-name (library 'modes 'messiaen 'messiaen-mode3) :type :interval)

=> (2 1 1 2 1 1 2 1)

 

In the result with pitch-transpose-start : (c4 e4 gs4 d4 fs4 bb4 eb4 g4 b4) and => (4 4 -6 4 4 -7 4 4) => The music notes are correct but permuted.

and with pcs-normal-order : (d4 eb4 e4 fs4 g4 gs4 bb4 b4 c4) => (1 1 2 1 1 2 1 -11) => The music notes are correct but permuted.

I get the intervallic structure is shifted.

 

Thanks in advance Janusz.  

Share this post


Link to post
Share on other sites

Why you use the PITCH-TRANSPOSE-START function and what is the goal. What about PCS-PRIME-FORM.

Should this be generated or given by hand:

(setf mod3chordsM
      (melodize
       '((c4eb4gb4) (d4gb4bb4) (eb4gb4bb4) (e4g4b4) (gb4bb4db5)
         (g4b4d5) (ab4b4d5) (bb4gb5) (b4d5gb5))))

I can't find the thought in your progression.

Share this post


Link to post
Share on other sites

Simpler:

(setf mod3chordsM (melodize '((c4eb4gb4) (d4gb4bb4) (eb4gb4bb4) (e4g4b4)
                              (gb4bb4db5) (g4b4d5) (ab4b4d5) (bb4gb5) (b4d5gb5))))
(setf analysechords3 (pcs-analysis mod3chordsM))

In general your code could be much simpler.

Share this post


Link to post
Share on other sites

I wish to analyse process of Messiaen's modes of limited transpositions. I choose one of the modes, say the 3, from OPMO's "modes" library, which gives me the mode :  (c4 d4 eb4 e4 f4 g4 gs4 bb4 b4) - and its intervallic structure: (2 1 1 2 1 1 2 1). And I want to replicate the process. it's a starting point. There are 9 notes, I divide them by 3 and I get three trichords ((c4 d4 eb4) (e4 gb4 g4) (ab4 bb4 b4)) and the same 3  (1 2 1). if I select the first trichorde (c4 d4 eb4) and I report it on each of the first notes of the three trichordes c4 - e4 - ab4 from the function Pitch-Transpose-Start I get as result mode 3 but disordered :

(setf mod3divide (gen-divide 3 modmessiaen3)) ; => ((c4 d4 eb4) (e4 gb4 g4) (ab4 bb4 b4))
(setf firstmodmessiaen3 (filter-first 3 modmessiaen3)) ; => (c4 d4 eb4)
(setf report3 '(c4 e4 ab4))
(setf rep3 (gen-repeat 3 (list report3))) ; => ((c4 e4 ab4) (c4 e4 ab4) (c4 e4 ab4))
(setf pch3 (flatten (pitch-transpose-start firstmodmessiaen3 rep3))) ; => ((c4 e4 gs4) (d4 fs4 bb4) (eb4 g4 b4)) => (c4 e4 gs4 d4 fs4 bb4 eb4 g4 b4)

This result I wanted to reorder in an upward progression and as I did not find the function, I tested pcs-prime-form but which is not adapted. 

But I found the function that I wanted with sort-asc and I reconstruct the mode 3 and its intervallic structure :

(setf Messiaen3order (sort-asc pch3)) ; => (c4 d4 eb4 e4 fs4 g4 gs4 bb4 b4)
(setf SIMessiaenMod3a (pitch-to-interval Messiaen3order)) ; => (2 1 1 2 1 1 2 1)

Of course, I can combine the two functions together : 

(setf process3Messiaen (sort-asc (flatten (pitch-transpose-start firstmodmessiaen3 rep3)))) ; => (c4 d4 eb4 e4 fs4 g4 gs4 bb4 b4)

 

 

But thank you Janusz for your questions. concerning the Pitch-transpose-Start function you had indicated to me when I wanted to recreate the multiplication chords of Pierre Boulez.

Best wishes. 

Didier

Messiaenmod3.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×