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 on other sites

What is the output you are looking for.

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.

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 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 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

Join the conversation

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

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

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

×
×
• Browser

• Video Gallery

• Lessons