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

What is the output you are looking for.

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

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.

Sign in to follow this  

  • Similar Topics

    • By JulioHerrlein
      This caused a hanging (not responding) crash. I don´t know why...
       
      THIS CRASHES
      (setf padrao '(7 -1 -5 4 -3 2 12 -16)) (setf pitches (gen-sieve '(c4 e6) padrao :type :pitch))  
      THIS DON´T CRASH
      (setf padrao '(7 -1 -5 4 -3 2 12 -15)) (setf pitches (gen-sieve '(c4 e6) padrao :type :pitch))  
    • By JulioHerrlein
      In my Dissertation, I worked a way to convert every chord and set in a modulo 12 rhythm,
      so the entire catalog of FORTE are converted to rhythms, following the steps of Babitt:
       

       
      As a hardcore serialist, Babbitt was interested in converting 12-tone rows to rhythms, in a kind of 12-tone rhythm theory.
      Below, Wuorinen show one example of a typical Babbitt idea:
       

       
      For the sake of explaining my idea of function, it's important to have in mind that for Babbitt, the order of the
       row is very important and lead to different results in the pitch to rhythm conversion. Take a look in the example
       below:
       

       
      In the preceeding figure, the order of the C major triad generate different rhythms. In the example (0 4 7) have a
      different result from (4 0 7) or (7 0 4).
       
      In the system I developed in my Dissertation, the order does NOT matter, since (0 4 7), (7 0 4) or (4 0 7) will result
       in exactly the same rhythm, as you can see below:

       
      In my system, the transposition equals rotation (as well as in Babbitt)

       
      And every chord symbol can be transformed in a rhythm:
       

      Even voicings can be converted in longer Rhythms (the more spread the voicing, the longer the rhythm):
       

       
       
      So I did every FORTE SET in the catalog, in this way:
      Below, you can see the example of the rhythm of the major triad (Forte number 3-11b).
      In the 1st bar there is the prime form (0 4 7).
      In each subsequent bar there is a rotation of the first set by 16th note increments.
       
      HERE IS THE POINT, for the sake of the new function !
       
      The note C (that I call Rhythmic Fundamental, the "root" of the rhythm) is being displaced, as
       you can see in the circled notes.
       
      THE SET WRAP AROUND ITSELF, always forming 12 time-points (always twelve 16th notes),
      in a different way from Babbit, where the order of the sets generates longer rhythms.
      THIS WAY IS MORE INTERESTING For Popular and Minimalist Repetition Music, as
       well as 12 tone music.
       
      In the bottom staff, there are the complementary rhythm of the 3-11b set, i.e., the 9-11a
       set. In the catalog, every set is presented alongside its complementary set and every set is
      presented in 3/4 (16th notes) and in 12-8 (with the 8th note as the base value for the increments
       and rotations).

       
      So the function needed would be the one that mirror exacty this kind of conversion, not the tradicional time-point-system conversion,
      so I could use my catolog inside Opusmodus, connecting the diferent sets, like this:
       

       
      Or even using portions of the Rhythmic Sets, by truncating some of them, like this:
       

       
      In the preceeding example, only parts of the 2 sets are used (9 time points out of 12 in the 
      first and 8 time points out of 12 in the second).
       
      So, I hope someone could help me to find a way of implementing this.
      Maybe Janusz or Stephane could find interesting to develop this kind of idea inside
       the software.
       
      All the best !
      Julio Herrlein
    • By JulioHerrlein
      Dear All, 
       
      One interesting thing that could be implemented as a function could be a form of generating Negative Harmony.
      In the video below, there are some explanation of what it is and the origin in the Levy book.
      It was a trendy topic due to the Jacob Collier interview. And there are a lot of fun videos making versions of pop tunes using negative harmony.
       
      The way I understand it, it is simply a kind of mapping notes in relation to an axis, like in the figure below.
       

       
      So we need a function that could map a note in any register to another note in the closest register to the first on.
      So, any  C note will be mapped to G, all Db to F#, all D to F, all, Eb to E, all B to Ab, all Bb to A.
       
      It´s also possible to generate other mappings as well.
       
      I think that replace map or substitute map can do the job, but I´m not sure (I will try), but I find interesting to post it here to explore the idea.
       
      All the best,
       
      Julio
       
      It´s kind of funny to sse in this por versions how every is upside down and how you can generate an entirely new song from exactly the same material.
       
       
       
      POP TUNES with negative harmony:
       
       
       
       
       
×
×
  • Create New...